代码之家  ›  专栏  ›  技术社区  ›  Younes

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

  •  3
  • Younes  · 技术社区  · 15 年前

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

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

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

    3 回复  |  直到 14 年前
        1
  •  5
  •   David Hedlund    15 年前

    你绝对不应该把它放在一张大桌子上。我的设计是这样的:

    巫师

    ID、名称、前言、任何其他您可能想要存储的信息

    问题

    ID,向导ID,问题,排序编号

    替代方案

    ID,questionID,typeID(收音机,复选框,自由文本,多行自由文本…),名称,序号

    答复

    i d,userid(我想你会 一些 用户帐户解决方案),questionid,alternativeid

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

        2
  •  5
  •   APC    14 年前

    巴里·威廉姆斯拥有一个免费的数据模型库,其中包括四种不同问卷的模型。这些范围从 the simple the complex .

    他的复杂模型看起来像是你的起点。但您可能希望将其扩展为包含“是/否”问题类型(而不是将其视为多选的特殊情况),还需要添加用于存储后续文本的实体。

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

        3
  •  2
  •   Bernhard Hofmann    15 年前

    我建议您阅读关于数据库规范化的 Wikipedia 或者另一个网站-这里有很多资源。

    简而言之,你会有一张问卷(问卷)和一张问题(问题)表,一张被访者(被调查者)和一张答案(答案)表。

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