Pytanie odnośnie projektu tabeli

0

Witam, chcę dopisać do mojej strony internetowej (coś ala fotoblog+demotywatory) możliwość oceny poszczególnych zdjęć i zastanawiam się jak skonstruować bazę (tabelę pod to).

Na stronie jest zarejestrowanych ok 30'000 użytkowników, a ok 2'500 z nich aktywnie korzysta z portalu. Rozważam dwie opcje:

  1. prosta tabela typu id_zdjecia, id_uzytkownika, ocena

  2. tabela np. 'oceny_zdjec' i tam: id_uzytkownika, oceny_wystawione_przez_usera jako TEXT i tam np (foto_id:ocena,foto_id:ocena ... itd)

którą z opcji (albo może jakąś inną) polecacie? Pozdrawiam.

0

Zapomniałem dodać, że w tabeli zdjęcia będzie kolumna "oceny" i tam będą poszczególne ilości ocen np 5:xxx_glosow,4:xxx_glosow,3:xxx_glosow,2:xxx_glosow,1:xxx_glosow oraz ew. tabela "srednia ocen".

0

Pierwsze. A sumy policzysz sobie odpowiednia funkcją SQL.
Drugie podejście nie jest normalne.

0

drugie to jest najgorsze co możesz zrobić. Pierwsze plus dwa indeksy, pierwszy na id_zdjecia i id_uzytkownika a drugi tylko na id_uzytkownika

0

Ok, czyli w sumie tak jak myślałem (dzięki Panowie za odpowiedzi), ale drugą opcję rozważałem, ponieważ następująca sytuacja nie dawała mi spokoju:

niech każdy z tych 2500 userów oceni 1000 zdjęć to już mamy tabelke na 2'500'000 wierszy... i dalej: zalogowany user przegląda jakiekolwiek zdjęcie, więc skrypt musi wykonac np.:

SELECT `id` FROM `oceny` WHERE `user_id`=USER AND `foto_id`=FOTO

więc skrypt przeszuka te wszystkie 2'500'000 wierszy... w przypadku, gdy zastosujemy pomysł nr "2" do przeszukania będzie tylko ilość kolumn równa ilości zarejestrowanych użytkowników, ew. użytkowników, którzy kiedykolwiek głosowali, a resztą zajmie się np strpos albo inna funkcja, czy nie jest to bardziej powiedzmy "oszczędne"? Pozdrawiam.

0

na pewno nie będzie zajmowało mniej - po pierwsze musisz wszystkie inty (foto_id i ocena) zamienić na string - na pewno zajmie to więcej miejsca. Po drugie do każdego ocenianego zdjęcia dochodzą Ci dodatkowe dwa znaki - : i ,. Co więcej wyszukiwanie konkretnego id i oceny w takim ciągu to tragedia.

0

"Skrypt przeszuka te wszystkie 2'500'000 wierszy" - po pierwsze nie skrypt, a baza danych, po drugie po założeniu prawidłowych indeksów wyszukiwanie odbywa się inaczej, niż Ci się wydaje - 22 skoki po indeksie i już.

0

OK Panowie, dziękuję Wam za informacje, skorzystam z metody nr 1. Pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1