将问题数据存储到数据库的最佳方法是什么?

时间:2010-01-15 07:57:37

标签: sql database wizard

有一个向导可以包含150多个问题或者只有10个问题。每个问题可能与之前提出的问题不同。例如,一个问题可能需要您回答“是/否”答案,但下一个问题可能包含带有四个选项的多选列表。还应该有机会填写对话框中提出的问题的完全公开答案。该向导由多个部分组成。

还应评估此向导的结果。例如: “上班时你有没有忘记穿鞋?” “是/否”如果用户回答是,我们应该对此进行评估并告诉他应该将鞋子放在门口,这样他就不会再忘记了。 (实施例)

此向导的结果必须保存到数据库中,但在一个表中执行此操作并将所有数据添加到此表对我来说非常不方便。 这里有没有人有一个干净的解决方案,例如,如果我们必须重建这样的向导,我们可以使用相同的数据库吗?

3 个答案:

答案 0 :(得分:5)

你绝对不应该把它全部放在一张大桌子上。我的设计看起来像这样:

向导

Id,Name,Preface,AnyOtherInfoYouMightWantToStore

问题

Id,WizardId,Question,SortNumber

替代

Id,QuestionId,TypeId(广播,复选框,自由文本,多行自由文本...),名称,排序编号

回复

我,UserId(我想你有一些用户帐户解决方案),QuestionId,AlternativeId

大致相同。因此,向导可以包含许多问题,并且一个问题可以包含许多替代方案(是+ +替代表中没有单选按钮将是一个记录,但您也可以执行更复杂的操作,例如少数几个复选框,并在底部,“其他”文本字段)

答案 1 :(得分:5)

Barry Williams维护着一个免费的数据模型库,其中包括四种不同问卷的模型。这些范围从the simplethe complex

他的复杂模型看起来像是你开始的地方。但是你可能想要扩展它以包含Yes / No问题类型(而不是将它们视为多选的特殊情况),你还需要添加一个实体来存储后续文本。

听起来您还需要某种形式的页面流或其他控制结构来管理评估和响应过程。意见不同,这些控制信息是否属于数据库;在某种程度上,这是一个品味的问题,虽然你将用来编写向导的语言将有影响。

答案 2 :(得分:2)

我建议您阅读Wikipedia或其他网站上有关数据库规范化的内容 - 这方面有很多资源。

简而言之,您将有一份问卷调查表(问卷调查表)和一份问题表(问题)和一份受访者表(答辩人)和答案表(答案)。

然后,您可以通过链接两个表来创建构成问题的问卷。受访者将链接到答案表中的记录,该记录将链接到问题表中的记录。