问候堆垛机,架构设计时,用户可以自定义字段
我试图想出一个应用程序,允许用户创建调查,并提交给公众最好的数据库模式。大多数调查(但不是全部)都会包含一系列“标准”人口统计字段,例如名字,姓氏等。当然,用户可以创建无限数量的“自定义”问题。
我想到的第一件事情是这样的:
Survey
ID
SurveyName
SurveyQuestions
SurveyID
Question
Responses
SurveyID
SubmitTime
ResponseAnswers
SurveyID
Question
Answer
但是,这是怎么回事我想查询出来的数据,每次吸。它似乎危险地接近Inner Platform Effect
的改进将包括尽可能多的领域,我可以事先在响应表认为:
Responses
SurveyID
SubmitTime
FirstName
LastName
Birthdate
[...]
然后从这些公共列至少查询的数据直截了当,并且我可以查询,例如,曾经回答任何调查问卷的人的平均年龄。
但似乎这样会使代码复杂一点。现在要查看调查中询问哪些问题,我必须检查哪些常见响应字段已启用(我猜测,使用Survey中的一个位域)以及SurveyQuestions表中的内容。而且我不得不担心特殊情况,例如有人试图在“答复”表中创建一个重复“常见”问题的“自定义”问题。
这是我能做的最好的吗?我错过了什么吗?
我可以建议将您的问题的标题更改为“什么是调查系统的最佳数据库模式?” – 2009-01-09 20:29:28