如何为简单调查的结果建模?

时间:2014-06-05 02:47:22

标签: mysql database-design

让我说我有:

enter image description here

enter image description here

对于每个问题,都会有很多答案(这是OneToMany吗?),答案将通过单一选择(多选)来选择。例如,我想知道为给定问题选择了多少次答案。用户只能回答一次这些问题。

我找到了一些解决方案(比如这个What mysql database tables and relationships would support a Q&A survey with conditional questions?),但它们看起来过于复杂。这是一个非常简单的调查。没有子问题,没有不同类型的答案,没有多重选择。

我正在考虑使用的是一个名为question_answer_user的中间表,但是我不确定这个和其他表之间的关系(它是一个复合主键吗?)。我需要它们,所以我可以在ORM上对它们进行建模。

对不起,如果这看起来过于简单,但我的大脑现在完全被炒了

2 个答案:

答案 0 :(得分:1)

通过一对多关系,您可以将问题的主键(id)作为外键放入答案表中来连接问题和答案。

通过这种方式,您可以通过查询具有特定问题ID的所有答案来访问给定问题的所有答案。

至于合并用户:您说用户可以回答一次问题。用户可以回答许多问题,并且许多用户可以回答问题。在这种情况下,您应该在两者之间有一个具有问题ID和用户ID的链接表。通过此关联,您可以通过遍历其他关系来查看特定用户在每个问题上的答案。

答案 1 :(得分:0)

如果您正在编写一份问卷,其中包含一系列问题(例如,'您对SQL有多少年的经验?')和一组固定的答案(1-2, 3-4,5-6,7-8)然后以下将是一个很好的桌子设计。

questions
id - longint (primary key)
text - varchar (255)

options
id - longint (primary key)
question - longint (foreign key to 'questions')
displayorder - int 
text - varchar (255)  (the text of the option)

answers
user - longint (foreign key to users' table)
question - longint (foreign key to questions table)
option - longint (foreign key to options table)

答案表每个用户每个问题都有一条记录,记录用户对给定问题的答案(例如,用户#3使用选项#4回答问题#1)。