3

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

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

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

4

3 回答 3

5

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

向导

ID、名称、前言、AnyOtherInfoYouMightWantToStore

问题

Id, WizardId, Question, SortNumber

选择

Id, QuestionId, TypeId (radio, checkbox, free-text, multiline freetext...), Name, SortNumber

回复

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

大致就是这样。这样一个向导可以包含许多问题,一个问题可以包含许多备选方案(是 + 否单选按钮将是备选表中的每个记录,但您也可以做更复杂的事情,例如几个复选框,并且在底部,一个“其他”文本字段)

于 2010-01-15T08:06:55.267 回答
5

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

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

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

于 2010-01-15T08:07:55.593 回答
2

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

简而言之,您将有一个问卷表(问卷)和一个问题表(问题)和一个受访者表(受访者)和一个答案表(答案)。

然后,您将通过链接这两个表来创建构成问题的调查表。受访者将链接到答案表中的记录,而答案表将链接到问题表中的记录。

于 2010-01-15T08:27:16.843 回答