Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Projektowanie systemu komentowania treści
Forum PHP.pl > Forum > PHP
em1X
Jestem w trakcie pisania niemałego projektu, w związku z czym naszły mnie pewne myśli, których z powodu nawału dzisiejszego dnia nie jestem już w stanie ogarnąć bez czyjejś pomocy wstydnis.gif

System będzie zawierał profil użytkownika, również zdjęcia. W całym serwisie też będą rzeczy, które będą wymagały oceny przez użytkowników (skala 1-5). Jednym słowem masa rzeczy do oceny. Tudzież moje pytanie:

Wariant 1 :czy do każdego typu takich rzeczy jak film, zdjęcie czy profil dodawać osobną tabelę: MovieVote, PhotoVote, ProfileVote.
Wariant 2 :czy stworzyć jedną tabelę typu Votes (votable_id, record_id, ocena, ilosc_ocen) oraz drugą VotableType (votable_id, typ) ?

Na tą chwilę wariant drugi wydaje mi się bardziej sensowny, bo przynajmniej nie będę zagracał bazy ilością tabel. A może macie jakieś inne pomysły, które mogłyby przyjść z pomocą? withstupidsmiley.gif
mokry
Może po prostu utworzyć jedną tabele Votes i w niej ew. dodawać kolumny PhotoId, MovieId, ProfileId. Domyślnie '0' dla wszystkich a potem wybierać SQL'em "... WHERE MovieId/PhotoId/... = 'IdZadanegoParametru'?
em1X
To by mogło zadziałać, jak się człowiek wyśpi od razu lepiej mózg pracuje.. szkoda, że tak mało osób się udziela w temacie ;p
Athlan
Luuudzie, chopa pomyśleć troche tongue.gif

tabela VOTES:
- vote_material - ID profilu/newsa/arta/whatever
- vote_value - wartość głosu
- vote_type - typ głosu

2 warianty:
- vote_type to ENUM stringów, np "profile", "movie", "news"
- vote_type to SMALLINT, gdzie 1 - profil, 2 - news

Różnica? ENUM będzie działało troszkę wolniej bo stringi, natomiast SMALLINT będzie bardzo szybkie.

Klucze sam sobie odpowiednio dobierz.
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.