2016-03-04 84 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表中,因爲學生將被納入特定學期的課程中。

相關問題