1

有两个表:无法创建外键

  • Course与列ClassID (PK, int, not null)CourseID (int, not null)CourseID (PK, int, not null)DepartmentID (PK, FK, int, not null),和
  • Class

我尽量让Class.CourseID FK到Course.CourseID但我得到这个消息:

在表中的列“课程”不匹配现有的主键或 唯一约束。

我该怎么办?

+0

如果你有一个复合主键由'Course'表中的两列'(CourseID,DepartmentID)'组成 - 任何引用该表的**都必须同时包含它们FK中的两个列。 –

+0

课程中需要一个复合主键? Course.CourseID不是唯一的吗? – brian

回答

0

FK的“结构”必须与PK-两个字段相同。只有CourseID作为FK,您无法区分记录。

例子: 设C1,C2是病程记录,D1类记录:

c1: {1, 1} 
c2: {1, 2} 

现在假设D1纪录是某事像{1,1} - >你的意思是C1或C2?

您应该只制作CourseID PK或制作复杂的FK(CourseID,DepartmentID)或在课程表中创建代理PK。就个人而言,我会去第一或第三个解决方案

1

DepartmentID不应该是表课程的主键的一部分。 或者如果你需要它,那么在Class表中重新构造FK,这样它就会引用这两者(所以表格课程的真正主键)。