2011-09-11 136 views
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,這樣它就會引用這兩者(所以表格課程的真正主鍵)。