Система голосования, вдохновленная Buzzfeed - PullRequest
0 голосов
/ 02 апреля 2011

Buzzfeed позволяет оценивать что-то как:

* LOL 
* Win 
* OMG 
* WTF 
* Cute 
* Fail
* Geeky 
* Trashy
* Old
* Ew 

Допустим, у вас есть таблица с именем Post и вы создали для этого таблицу с именем Post_Ratings (post_id, rate_id) и таблицу с именем Rating.

Как лучше всего реализовать эту таблицу? Перечисление или столбец для каждого рейтинга?

Также, чтобы записать, какой пост пользователь уже проголосовал в таблице с именем user_rating, содержащей user_id, post_id, верно?

1 Ответ

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

Если бы у вас была таблица оценок, это были бы rating_id (int) и rating_text (строка).Ваша таблица Post_Ratings нуждается в другом столбце.Есть как минимум три ключевых столбца (если вы не используете суррогатный ключ).Это были бы post_id, rating_id и что-то, чтобы различать несколько оценок разных пользователей.Если у вас есть пользовательская таблица, вы можете использовать user_id.Таким образом, если пользователь хочет изменить свой голос, он может, но вы не получаете пользователей, голосующих несколько раз в разных категориях.Последний по выигрышу для каждого пользователя.

Кроме того, я бы не использовал enum или столбцы, так как оба могут в какой-то момент привести к неприятностям.Лучше всего сделать так, чтобы один голос занимал одну строку (с указанием трех столбцов).Таким образом, вы можете легко подсчитать количество голосов для каждого поста, используя каждый рейтинг, и вы даже можете легко подсчитать количество постов, оцененных с каждым рейтингом_идентификации.Если вы добавите четвертый столбец в Post_Rating, чтобы он содержал дату и время, когда было зафиксировано голосование, это дает вам еще большую гибкость при составлении отчетов и связанных данных.

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