我在此架构设计中是否具有参照完整性?

时间:2012-10-24 18:56:36

标签: sql foreign-keys relational-database relationship

enter image description here

我担心我遇到涉及VersionsVersionQuestions表的数据完整性问题。例如,如果在DefMasterID表中更改Versions,它将指向不同的主定义,但Questions中的子记录仍将指向{{1}中的记录属于原始调查大师的。理想情况下,约束会阻止这种情况,但我认为它们不会。

我对此设计有诚信吗?如果没有,确保完整性的适当途径是什么?

以上架构基于以下要求:

  1. 需要有多个调查主要定义代表显着不同的调查。

  2. 主调查定义需要一个或多个版本,这些版本代表的差异很小。

  3. 每个调查大师都有一个问题池,在其版本之间共享。个人版本通常不会使用所有问题。这样就可以比较调查主数据的所有版本的答案。

1 个答案:

答案 0 :(得分:0)

我认为你是正确的。

一种方法是向MasterQuestionsPool添加一个标识符(称之为MasterQuestionInstanceLabel),该标识符在给定池中是唯一的(尽管不一定是跨池)。换句话说,问题1与主1的配对可以标记为问题“A”(对于主1),但是主2可以具有不同的问题“A”。然后,在MasterVersionQuestions表中,您使用该标签,而不是实际的问题ID。

我认为这与现实相比更合适。这个想法是你为给定的主人定义一个问题池 - 问题A,B,C,D,E,F(它们是实际ID 1,5,102,15和754的标签),然后假设版本1使用A,B和E,而版本2使用A,B,C和F(而不是引用版本表中的实际ID)。

这样版本表并没有说“这个版本中有哪些问题”,它说的是“我的主人的池实例中的哪一个在这个版本中”。