0

在此处输入图像描述

我担心我有一个涉及VersionsVersionQuestions表的数据完整性问题。例如,如果DefMasterIDVersions表中更改,它将指向不同的主定义,但其中的子记录Questions仍将指向MasterQuestionsPool属于原始调查主定义的记录。理想情况下,约束会阻止这种情况,但我认为他们不会。

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

上述架构基于以下要求:

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

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

  3. 每个调查大师都有一个问题池,在其版本之间共享。单个版本通常不会使用所有问题。这提供了比较所有版本的调查主数据的答案的能力。

4

1 回答 1

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)。

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

于 2012-10-24T19:18:59.880 回答