24

民意调查的最佳数据库架构是什么?一对多的关系对此有好处吗?我正在考虑有两张桌子:

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

你怎么认为?我想对了吗?

4

4 回答 4

13

架构看起来不错,是的,您还需要跟踪用户投票

于 2010-02-15T08:42:21.530 回答
5

注意: poll_answers 表的“投票”列不是必需的。投票可以通过查询 Poll_voting_history 表来确定。

于 2010-05-29T08:54:51.827 回答
2

我认为 poll_voting_history 中的 question_id 也不是必需的,因为每个答案都指向一个问题,所以根据 answer_id 你可以得到它所属的 question_id。

于 2012-12-02T21:34:37.257 回答
1

我还想添加 poll_questions 和 poll_answers 的状态,以防我们需要在给定的日期和时间激活或禁用当前的民意调查问题。

于 2019-08-08T04:17:12.710 回答