Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Baza głosów publicznego systemu moderacji (czyli plusy i minusy)
paw-e-l
post
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 23
Dołączył: 27.06.2009
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


Witam
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.

  1. 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

  2. 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
  1. w tym przypadku trzeba dla każdego obecnego na podstronie komentarz wykonać:
    1. // $user_id - zmienna zawierająca id zalogowanego użytkownika
    2. //$comment_id - id komentarza
    3. SELECT COUNT(*) FROM `comment_ratings` WHERE `comment_id`=$comment_id AND `user_ids` LIKE ",%$user_id%,"
  2. tutaj sprawa jest prostsza:
    1. 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 (IMG:style_emoticons/default/biggrin.gif) ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Cezar708
post
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


drugie, tylko nie zapomnij o indeksie na kolumnę user_id, oraz o rodzaju głosu który został oddany (+ lub -)

pozdrawiam
Go to the top of the page
+Quote Post
paw-e-l
post
Post #3





Grupa: Zarejestrowani
Postów: 115
Pomógł: 23
Dołączył: 27.06.2009
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


dziękuję za błyskawiczną odpowiedź (IMG:style_emoticons/default/smile.gif)

ach tak rodzaj oddanego głosu... nie wspomniałem że w drugim rozwiązaniu suma + i - będzie przechowywana w tabeli `comments` aby nie podliczać głosów za każdym razem przy wyświetlaniu (IMG:style_emoticons/default/winksmiley.jpg) wtedy nie muszę w tabeli `comment_ratings` przechowywać rodzaju oddanego głosu.

btw. tak z ciekawości, dlaczego indeks na `user_id` a nie `comment_id`?

pozdrawiam

Ten post edytował paw-e-l 6.09.2009, 12:27:19
Go to the top of the page
+Quote Post
Cezar708
post
Post #4





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat(paw-e-l @ 6.09.2009, 11:21:22 ) *
nie wspomniałem że w drugim rozwiązaniu suma + i - będzie przechowywana w tabeli `comments` aby nie podliczać głosów za każdym razem przy wyświetlaniu (IMG:style_emoticons/default/winksmiley.jpg) wtedy nie muszę w tabeli `comment_ratings` przechowywać rodzaju oddanego głosu.


liczba głosów w comments jeszcze może być, ale w taki sposób nie będziesz wiedział kto jaki głos oddał, oczywiście jeśli nie jest Ci to potrzebne, to Twój sposób starczy, ale z doświadczenia wiem, że czasem taka informacja może być bardzo przydatna, więc na Twoim miejscu przy tam małym narzucie (w sumie to tylko jedna kolumna typu bool), dodałbym ją do tabeli comment_ratings

Pozdrawiam
Go to the top of the page
+Quote Post
paw-e-l
post
Post #5





Grupa: Zarejestrowani
Postów: 115
Pomógł: 23
Dołączył: 27.06.2009
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


w sumie racja. można by dzięki temu dodatkowo prowadzić statystyki per user ile w sumie oddał + / - (IMG:style_emoticons/default/winksmiley.jpg)

mógłbyś jeszcze zerknąć do mojego poprzedniego posta? edytowałem go i jest tam jeszcze 1 pytanie.
Go to the top of the page
+Quote Post
Cezar708
post
Post #6





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat(paw-e-l @ 6.09.2009, 11:21:22 ) *
btw. tak z ciekawości, dlaczego indeks na `user_id` a nie `comment_id`?



fakt, na comment_id tez jest indeks potrzebny, czyli dwa indeksy musisz mieć aby nie zarżnąć bazy.

pozdro
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 12:58