我有以下表格
ModuleClass ( <ModuleID>, <Section>, <Number>, StartDate, EndDate)
ClassEnrollment ( <ModuleID>, <Section>, <Term Code>, <User Name>, Role)
现在,ModuleClass实体可以有多个注册,因此存在1到M的关系。但是,当尝试使用ModuleID和Section在ModuleClass和ClassEnrollment之间定义FK时,我得到了
表ClassEnrollment中的列 与现有主键不匹配或 UNIQUE约束
但是,ModuleID和Section都参与了PK约束。
(我使用Visual Database Tools创建表并指定关系)。
表达这种关系的更好方法是什么?
答案 0 :(得分:2)
它看起来就像ModuleClass的主键是一个由三列组成的复合键,(ModuleID,Section,Number)。要设置对该表的外键引用,您必须定位所有这三列。
要定位所有这三列,您需要在表ClassEnrollment中包含“Number”列。然后你可以设置
FOREIGN KEY (ModuleID, Section, Number)
REFERENCES ModuleClass (ModuleID, Section, Number)
答案 1 :(得分:0)
您确定没有向后指定FK关系吗?使用GUI可视化工具很容易犯这个错误。您必须确保ClassEnrollment中的每一行都引用ModuleClass中的一行。
如果您反向指定关系,则会得到您报告的错误。