Chcę wprowadzić na swojej stronie możliwość dawania + lub - zamieszczonym komentarzom (jak na wykopie). Oczywiście dany użytkownik może głosować tylko raz na dany komentarz.
Mam 2 koncepcje jak powinna wyglądać tabela z głosami i nie wiem która będzie lepsza.
- tabela `comment_ratings` będzie zawierać 3 pola:
- `comment_id` - mówi samo za siebie
- `rating` - suma oddanych + i -
- `used_ids` - id użytkowników którzy oddali głosy na dany komentarz w postaci ",21,32,87,3,..."
w tej tabeli jest tylko jeden rekord dla każdego komentarza - tabela `comment_ratings` będzie zawierać 2 pola:
- `comment_id` - j.w.
- `user_id` - id użytkownika który oddał głos na dany komentarz
w tej tabeli ilość rekordów była by znacznie większa bo każdy głos to osobny rekord
Przy każdym załadowaniu podstrony z komentarzami trzeba sprawdzić czy na poszczególne komentarze użytkownik który jest zalogowany oddał głos
- w tym przypadku trzeba dla każdego obecnego na podstronie komentarz wykonać:
- // $user_id - zmienna zawierająca id zalogowanego użytkownika
- //$comment_id - id komentarza
- SELECT COUNT(*) FROM `comment_ratings` WHERE `comment_id`=$comment_id AND `user_ids` LIKE ",%$user_id%,"
- tutaj sprawa jest prostsza:
- SELECT COUNT(*) FROM `comment_ratings` WHERE `comment_id`=$comment_id AND `user_id`=$user_id
które rozwiązanie jest optymalniejsze i nie będzie zarzynać bazy
