它允许重复。唯一不允许的可能性是复合键(studentID,classID)的重复项,如“C.Champagne”所说。所以我们可以有像(1,2)(1,3)(2,3)这样的组合,但不能再有(1,2)或(1,3)。
我的问题的第二个答案是我未能通过使用前 2 个表的主键为第三个表(“学校”)添加复合键。
例如:第三张表“学校”有字段 schoolID(PK)、classID(FK)、studentID(FK)。但是我面临的问题是我无法为带有字段(classID,studentID,schoolID)的表“学校”添加复合键。我犯的错误是,我尝试通过引用第一个两个表来将外键添加到 School 表中,并且它不起作用。我最初给出的是这样的:
ALTER TABLE school ADD FOREIGN KEY (studentID) REFERENCES student(studentID);
ALTER TABLE school ADD FOREIGN KEY (classID) REFERENCES class(classID);
我犯的错误是我试图从班级和学生表中添加外键。
但最后通过在学校表中添加外键来实现以下工作:
ALTER TABLE school ADD FOREIGN KEY (studentID,classID) REFERENCES class(studentID,classID);
在这里作为类表提供参考已经绰绰有余,因为类表已经包含学生ID,类ID。
所以这就是它最终的工作方式。