嘿,我在一段时间里摸不着头脑,这已经困扰了我很长一段时间了。
基本上我有一个很长的在线问卷,我不太清楚我应该如何设计mySQL数据库来存储答案。
所以这是我的问题:
我想到的是创建一个表,每列都是问题。如果有一个不考虑调查对象的父母/子女问题,则只会留下blank
。对于可以有多个答案的问题,我会创建n
列(其中n
代表可能答案的数量)。
由于
答案 0 :(得分:2)
对于我来说,每个专栏都是个坏主意,因为改变/添加问题很难。应该很少更改数据库结构。
表:答案
对于答案,我会说一个包含所有答案的表格,其中包含以下列:
如果该人对同一个问题回答了多个答案,我会为2个答案分别设置2行。如您所见,每个答案(单个人)都有一行。因此,如果我们总共有10个问题,并且每个问题有2个人回答一次,那么我们将在表格中有20行。
如果一个人没有回答其中一个问题,那么这个问题+人就没有一行。
表:question_order
在我看来,你有另一个要求,那就是控制问题的流程 - 之后会出现哪些问题。我们需要将此流程保存在另一个表中,其中包含以下列:
在此表中,您可以保持问题之间的所有联系。如果问题1始终导致问题2,则放置[1, NULL, 2]
- 在这种情况下,NULL表示所有可能的答案。如果问题2仅在您回答“是”时导致问题3,则放置[2, "yes", 3]
。如果问题2仅在您回答“否”时导致问题4,则将[2, "no", 4]
等等。
表:问题
您可能会发现另一个有用的潜在表格是一个问题表格,它提供了有关问题可以接受的更多信息。例如,如果您想知道哪些问题支持多个答案,请使用以下列:
在此表中,每个问题通常会有一行。