2016-03-04 75 views
0

我正在尝试与两个称为课程和学生的表之间的SQL Server Management Studio创建多对多关系。这种关系使用名为“注册”的联结表。我首先在Students和Enrollment之间创建1:M关系,以便Enrollment表中的studentId列指向Student表中的studentId列。这工作得很好。我在创建课程与注册之间的1:M关系时出现了问题。注册表中的courseId列需要指向Courses表中的courseId列。关系对话框出现,主键表(注册表)下的列会自动填充courseId和studentId。Courses表没有studentId列,所以我将它从主键表下的列中删除。我收到错误信息'表中Enrollment中的列与现有的主键或UNIQUE值不匹配,这种方法在创建学生和注册表之间的1:M方面效果很好,为什么我突然间得到这个错误?如何在两个表之间创建一个与另一个表已有关系的关系?

enter image description here enter image description here

+0

[SQL Server 2008:表中的列与现有主键或唯一约束不匹配]的可能重复(http://stackoverflow.com/questions/4667818/sql-server-2008-the-columns-in -table-DO-未匹配的存在-主键或 - 未) –

回答

0

的原因是你的课程表中有2场的主键。 解决方法是在注册表中添加一个名为semesterId的新字段,并在创建外键时使用semesterIdcourseId

0

您的课程主键包含SemesterID,它不在注册表中。我建议SemesterID应该在Enrollments表中,而不是在Courses表中,因为学生将被纳入特定学期的课程中。

相关问题