有两个表:无法创建外键
- 表
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
但我得到这个消息:
在表中的列“课程”不匹配现有的主键或 唯一约束。
我该怎么办?
有两个表:无法创建外键
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
但我得到这个消息:
在表中的列“课程”不匹配现有的主键或 唯一约束。
我该怎么办?
FK的“结构”必须与PK-两个字段相同。只有CourseID作为FK,您无法区分记录。
例子: 设C1,C2是病程记录,D1类记录:
c1: {1, 1}
c2: {1, 2}
现在假设D1纪录是某事像{1,1} - >你的意思是C1或C2?
您应该只制作CourseID PK或制作复杂的FK(CourseID,DepartmentID)或在课程表中创建代理PK。就个人而言,我会去第一或第三个解决方案
DepartmentID不应该是表课程的主键的一部分。 或者如果你需要它,那么在Class表中重新构造FK,这样它就会引用这两者(所以表格课程的真正主键)。
如果你有一个复合主键由'Course'表中的两列'(CourseID,DepartmentID)'组成 - 任何引用该表的**都必须同时包含它们FK中的两个列。 –
课程中需要一个复合主键? Course.CourseID不是唯一的吗? – brian