MySQL Таблица структуры большого пальца UP & DOWN для системы комментариев? - PullRequest
4 голосов
/ 02 апреля 2010

Я уже создал таблицу для комментариев, но я хочу добавить функцию большого пальца вверх и вниз для комментариев, таких как Digg и Youtube, я использую php & mysql, и мне интересно, какова лучшая схема таблиц для реализации, поэтому комментарии с много лайков будет на вершине.

Это моя текущая таблица комментариев: комментарии (идентификатор, пользователь, статья, комментарий, штамп)

Примечание. Голосовать могут только зарегистрированные пользователи, поэтому в комментариях должен быть ограничен 1 голос для каждого пользователя.

Спасибо

Ответы [ 3 ]

6 голосов
/ 02 апреля 2010

Держите votes таблицу. Например. голосов (comment_id, user_id, значение, штамп) - значение -1 или + 1.

Это позволяет подотчетность, и вы можете сделать индекс UNIQUE для (comment_id, user_id), чтобы предотвратить повторное голосование. Вы также можете легко удалить пользователя и все его голоса, если он / она рассылает спам.

Для сортировки комментариев по баллам можно выполнить СОЕДИНЕНИЕ между таблицами комментариев и голосования и использовать SUM / GROUP BY, чтобы получить общий балл. Однако это может быть медленным. Для скорости вы можете также рассмотреть возможность сохранения поля оценки в таблице комментариев. Каждый раз, когда в таблицу голосов добавляется новая строка, вы добавляете / вычитаете 1 из оценки комментария.

Поскольку вы сохраняете каждый голос в таблице, легко пересчитать счет по требованию. Переполнение стека делает то же самое с репутацией - общий рейтинг репутации для пользователя кешируется и пересчитывается очень часто.

0 голосов
/ 02 апреля 2010

Поскольку пользователь должен быть зарегистрирован, чтобы пролистать вверх / вниз, я бы сохранил идентификатор пользователя и идентификатор сообщения, чтобы проверить увеличение / уменьшение.

2 таблицы будут соответствовать этой задаче. Дайте мне знать, если вам нужен дизайн.

0 голосов
/ 02 апреля 2010

Вы можете добавлять поле оценки и увеличивать или уменьшать его с каждым большим пальцем:

UPDATE comments SET score=score+1 Where id=123

Тогда при выборе упорядочить по баллам DESC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...