如何在两个表之间创建关系,其中一个表已经与另一个表建立了关系?

时间:2016-03-04 01:01:17

标签: sql-server database

我正在尝试在两个名为Courses and Students的表之间创建与SQL Server Management工作室的多对多关系。此关系使用名为Enrollment的联结表。我首先在学生和注册之间创建1:M关系,以便Enrollment表中的studentId列指向Student表中的studentId列。这工作得很好。当我在课程和入学之间建立我的1:M关系时,我的问题就出现了。 Enrollment表中的courseId列需要指向Courses表中的courseId列。关系对话框出现,主键表下的列(注册自动填充了courseId和studentId .Courses表没有studentId列,所以我从主键表下的列中删除了它。这是我收到错误消息'表中的列注册与现有主键或UNIQUE值不匹配。此方法适用于创建学生和注册之间的1:M。为什么我突然收到此错误?

enter image description here enter image description here

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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