具有重复组的调查数据库设计

时间:2013-12-24 17:32:32

标签: database-design conditional conditional-statements survey repeat

我有一个简单的调查数据库,其中提出了一系列线性问题。数据库设置如下。

Survey Table
id: PK
(other details)

Question Table
id: PK
survey_id: FK
(other details)

Response Table
id: PK
question_id: FK
(other details)

我被要求修改调查以允许N个重复的问题组。例如。

  1. 你叫什么名字?你的地址是什么?
  2. 你参加运动吗?
  3. 你参加什么运动?
  4. 你玩什么位置?
  5. 你还参加另一项运动吗? 如果是,请转到3,否则请转到6
  6. (附加问题)
  7. 设计具有重复组的调查数据库的最佳方法是什么?

    我考虑过使用问题规则表来指导问题。例如。

    Question Rule Table
    id: PK
    question_id: FK
    response_validation_rule (possibly a regex pattern)
    next_question_id
    

    这是实施重复群组问题的最佳方式吗?我也猜测也很难规范化数据。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

问题表中的自我多对多关系可能会有所帮助。
多对多关系将问题与其他问题联系起来。

达到​​获取相关问题的标准:

  

如果是,请转到3

可以通过将答案表中的FK添加到多对多表来完成。

像这样的东西: enter image description here 我建议不要在Related-Question表中使用代理标识符列。

  • 复合PK将为{main question id, related question id,answer id}
  • 检查约束将为{main question id <> related question id}