Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] struktura bazy
Forum PHP.pl > Forum > Bazy danych
bliitz
Witam

Mam problem z zaprojektowanie struktury bazy w taki sposób aby można było głosować na dodany materiał. Głosować mogą tylko zalogowaniu użytkownicy. Nie mam pomysłu jak zaprojektować tabele żeby nie było redundacji danych w tej chwili ma ona taką postać i działa wszystko dobrze oprócz głosowania, czy mogłby ktoś podsunąć pomysł z tabelą do głosowania.



obecnie tabela marks ma przechowywać głosy ale chyba jednak nie pasuje do tego

ps.

to może ktoś ma jakiś link do stronki gdzie jest przedstawiony podobny problem, jak powinna wyglądać tabela takiego systemu co przechowuje oceny?questionmark.gif?
Sedziwoj
Czy ja dobrze rozumiem user może głosować na record, tak?
No to masz tabelę

user_id
record_id
ocena

UNIQUE( user_id, record_id )

Jeśli to ma być szybkie, to dodajesz statystyczną tabelę, z głosami na poszczególne pozycje i co jakiś czas aktualizujesz, bo wyliczanie średniej za każdym razem zabije serwer.

(chyba że ja nie rozumiem problemu)
bliitz
tak user może głosować na record, ale jak powinna wyglądać ta tabela oceny, bo to musi być tabela czy ustawić to jako pole w tabeli records, ale wtedy gdzie zapisywać ilość głosów oddanych i jak zablokować możliwość ponownego głosowania przez tego samego użytkownika?
Sedziwoj
Przecież podałem jak ma wyglądać taka tabela?
Masz w niej id record, user i ocenę jaką wystawiła ta osoba na ten record. Ile głosów na dany record to
  1. SELECT count(*) FROM vote WHERE record_id = 1 GROUP BY record_id

tu na record o id = 1.
Masz też informację kto głosował na co. Cały problem to wydajność, ale na to są już różne rozwiązania.
bliitz
ok, a ta tabela statystyczna o której wspomniałeś wyżej i "wyliczanie co jakiś czas" czyli trzeba użyć crona do tego? czy jakiś inny sposób żeby sumowanie odbywało się co jakiś czas?
Sedziwoj
Można Crona, można trigger ale to przy małym obciążeniu, można też to i to, czyli triggery które robią z grubsza, wiedzą ile było głosów i jak jest średnia więc mogą aktualizować na tych informacjach, z małą dokładnością, ale wynik miej więcej będzie od razu widoczny, a Cron potem zlicz dokładniej.
(bo mi nic nie wiadomo o tym aby odpalały się jakieś rzeczy automatycznie co jakiś czas na bazie)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.