Схема базы данных опроса - PullRequest
22 голосов
/ 15 февраля 2010

Какова лучшая схема базы данных для опросов? Хорошо ли для этого отношения один ко многим? Я думаю о двух столах:

poll_questions
    int id
    varchar body
    datetime created_at
    datetime updated_at

poll_answers
    int id
    varchar body
    int votes default 0
    int question_id (foreign key to poll_questions.id)
    datetime created_at
    datetime updated_at

Тогда будет также третья таблица для отслеживания, кто голосовал за ответ, чтобы пользователи могли голосовать только один раз:

poll_voting_history
    int id
    int question_id (foreign key to poll_questions.id)
    int answer_id (foreign key to poll_answers.id)
    int user_id (foreign key to the id in the users table)
    datetime created_at
    datetime updated_at

Что ты думаешь? Я правильно об этом думаю?

Ответы [ 3 ]

12 голосов
/ 15 февраля 2010

Схема выглядит хорошо, и да, вам нужно отслеживать также и пользовательские голоса .

5 голосов
/ 29 мая 2010

Примечание. Столбец «poll» таблицы poll_answers не обязателен. Голоса могут быть определены путем запроса таблицы Poll_voting_history.

2 голосов
/ 03 декабря 2012

Я думаю, что question_id в poll_voting_history также не является необходимым, так как каждый ответ указывает на вопрос, поэтому на основе answer_id вы можете получить значение question_id, которому оно принадлежит.

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