首页 > 解决方案 > 规范化具有互连 m2m 关系的数据库

问题描述

我有一个问卷调查的商业模式。每份问卷都有多个问题和受访者。所以我的模型看起来像这样:

table questionnaire - id
table respondent - id, name
table question - id, text
table questionnaire_respondent - id, questionnaire_id, respondent_id
table questionnaire_question -  id, questionnaire_id, question_id
table respondent_answer -  id, questionnaire_respondent_id, questionnaire_question_id, answer_text

模型的问题在于,respondent_answer我在该问卷中有一种数据重复,可以从两者中找出questionnaire_question_idquestionnaire_respondent_id(意思是数据重复)。第二个潜在问题是我们可以插入问题的问卷与受访者问卷不对应的行。我知道我可以使用插入/更新触发器来保护自己。然而,我正在寻找一种在架构层面上确保这一点的方法。因为当前的架构似乎不符合 5 种规范化形式(不确定 5 种中的哪一种)。如果我未能清楚地说明问题,请告诉我,我将尝试提供一个示例。

问题是如何规范当前的数据库架构?

标签: database-designdatabase-normalization

解决方案


有了这个模型,这两个问题都在架构上得到了解决!

table questionnare_name - id, name
table question_text - id, text
table respondent - id, name
table question - id, questionnare_name (FK), question_text (FK)
table answer - id, respondent (FK), question (FK), text

推荐阅读