Схема таблиц, как организовать рейтинг с плюсами/минусами?

Необходимо сделать рейтинг постов/комментов, как на Хабре.

Имею в виду плюсы и минусы и то, что нельзя головать больше одного раза.


Как организовать схему таблиц в MySQL? Сейчас рейтинг хранится в поле rating у самой записи, но так посетитель может голосовать больше одного раза.
  • Вопрос задан
  • 3151 просмотр
Решения вопроса 1
Doktor_Gradus
@Doktor_Gradus
Промежуточная таблица posts_users_rel со структурой: id int, post_id int, user_id int

При голосовании посетителя в таблицу добавляется запись, содержащая id поста, за который посетитель голосует и id посетителя.

Проверка будет очень простой.

В эту же таблицу можно и оценку посетителя вставить, минусанул (-1) или плюсанул (+1) он, тогда и суммарный рейтинг поста будет просто подсчитываться суммой оценок в этом поле.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@the_ghost
у меня сделано так
таблица статей содержит поле avg_rate — в него мы пишем среднее значение голосов
таблица рейтинга — id статьи, qty — количество голосов, sum — сумма голосов

при голосовании за статью, мы:
1. добавляем 1 к полю qty в таблице рейтинга
2. добавляем оценку к полю суммы sum
3. выситываем среднее и пишем его в таблицу статей

Зачем писать? А чтобы потом было немного проще работать со статьями.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы