Sql 我在这个模式设计中是否具有引用完整性?
我担心我有一个涉及Sql 我在这个模式设计中是否具有引用完整性?,sql,foreign-keys,relational-database,relationship,Sql,Foreign Keys,Relational Database,Relationship,我担心我有一个涉及版本和版本问题表的数据完整性问题。例如,如果在Versions表中更改了DefMasterID,它将指向不同的主定义,但Questions中的子记录仍将指向MasterQuestionsPool中属于原始调查主记录的记录。理想情况下,约束可以防止这种情况发生,但我认为它们不会 我对这个设计有完整性吗?如果没有,采取什么适当的途径来确保完整性 上述模式基于以下要求: 需要有多个代表显著不同调查的调查主定义 主测量定义需要一个或多个版本,表示微小差异 每个调查大师都有一个问题库,在
版本
和版本问题
表的数据完整性问题。例如,如果在Versions
表中更改了DefMasterID
,它将指向不同的主定义,但Questions
中的子记录仍将指向MasterQuestionsPool
中属于原始调查主记录的记录。理想情况下,约束可以防止这种情况发生,但我认为它们不会
我对这个设计有完整性吗?如果没有,采取什么适当的途径来确保完整性
上述模式基于以下要求:
我认为你的担心是对的 一种方法是将标识符(称之为MasterQuestionInstanceLabel)添加到MasterQuestionsPool中,该标识符在给定池中是唯一的(但不一定跨池)。换言之,问题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) 这样,版本表就不会说“此版本中有哪些问题”,而是说“此版本中有哪些我的主池实例”