我担心我遇到涉及Versions
和VersionQuestions
表的数据完整性问题。例如,如果在DefMasterID
表中更改Versions
,它将指向不同的主定义,但Questions
中的子记录仍将指向{{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)。
这样版本表并没有说“这个版本中有哪些问题”,它说的是“我的主人的池实例中的哪一个在这个版本中”。