为了账号安全,请及时绑定邮箱和手机立即绑定

调查数据库设计

调查数据库设计

红糖糍粑 2019-08-15 14:07:55
调查数据库设计我需要创建一个调查,其中答案存储在数据库中。我只是想知道在数据库中实现这个的最佳方法是什么,特别是所需的表。调查包含不同类型的问题。例如:注释的文本字段,多项选择题以及可能包含多个答案的问题(即检查所有适用的答案)。我想出了两个可能的解决方案:创建一个包含每个调查提交答案的巨型表格。每列将对应于调查的答案。即SurveyID,Answer1,Answer2,Answer3我不认为这是最好的方法,因为在这项调查中有很多问题,如果调查要改变,似乎不是很灵活。我想到的另一件事是创建一个问题表和答案表。问题表将包含调查的所有问题。答案表将包含调查中的各个答案,每行都与一个问题相关联。一个简单的例子:tblSurvey:SurveyIDtblQuestion:QuestionID,SurveyID,QuestionType,QuestiontblAnswer:AnswerID,UserID,QuestionID,AnswertblUser:UserID,UserName我的问题是,可能有大量的答案会使答案表变得非常庞大。在性能方面,我不确定它是如此之大。我很感激任何想法和建议。
查看完整描述

3 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

我认为您的模型#2很好,但是您可以查看存储问题和预先制定的答案(提供的答案)的更复杂的模型,并允许它们在不同的调查中重复使用。

- 一项调查可能有很多问题; 在许多调查中可以(重新)使用一个问题。 
- 可以为许多问题提供一个(预先制作的)答案。一个问题可以提供许多答案。一个问题可以在不同的调查中提供不同的答案。可以在不同的调查中为不同的问题提供答案。有一个默认的“其他”答案,如果一个人选择其他人,她的答案会记录在Answer.OtherText中。 
- 一个人可以参加许多调查,一个人只能在调查中回答一次具体问题。 

查看完整回答
反对 回复 2019-08-15
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

绝对是选项#2,我想你可能在当前架构中有疏忽,你可能想要另一个表:


+-----------+

| tblSurvey |

|-----------|

| SurveyId  |

+-----------+


+--------------+

| tblQuestion  |

|--------------|

| QuestionID   |

| SurveyID     |

| QuestionType |

| Question     |

+--------------+


+--------------+

| tblAnswer    |

|--------------|

| AnswerID     |

| QuestionID   |

| Answer       |

+--------------+


+------------------+

| tblUsersAnswer   |

|------------------|

| UserAnswerID     |

| AnswerID         |

| UserID           |

| Response         |

+------------------+


+-----------+

| tblUser   |

|-----------|

| UserID    |

| UserName  |

+-----------+

每个问题可能都有一组用户可以选择的答案,然后将在另一个表中跟踪实际的答案。

数据库旨在存储大量数据,并且大多数都可以很好地扩展。没有必要仅仅为了节省空间而使用较小的正常形式


查看完整回答
反对 回复 2019-08-15
  • 3 回答
  • 0 关注
  • 462 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信