ฉันมีตารางตัวอย่างสามตารางต่อไปนี้ (การสาธิตแบบง่ายเพื่อวัตถุประสงค์ในการตั้งคำถาม):
CREATE TABLE Teams
(
Id int IDENTITY(1,1) NOT NULL,
Name varchar(50) NOT NULL,
PRIMARY KEY (Id)
)
CREATE TABLE TeamGroups
(
Id int NOT NULL,
TeamId int NOT NULL,
PRIMARY KEY (Id,TeamId)
)
CREATE TABLE RoomBookings
(
Id int NOT NULL,
TeamGroupId int NOT NULL,
RoomId int NOT NULL,
PRIMARY KEY (Id)
)
และฉันได้ตั้งค่าคีย์ต่างประเทศต่อไปนี้แล้ว:
ALTER TABLE TeamGroups WITH CHECK
ADD CONSTRAINT [FK_TeamGroups_Teams]
FOREIGN KEY (TeamId) REFERENCES Teams(Id)
แนวคิดก็คือ แต่ละ Team
สามารถมีค่าเป็นศูนย์หรือมากกว่า TeamGroups
และแต่ละ TeamGroup
สามารถมีศูนย์หรือมากกว่า RoomBookings
เพื่อสะท้อนถึงสิ่งนั้น ฉันต้องการเพิ่มคีย์ต่างประเทศจากตาราง RoomBookings
ลงในตาราง TeamGroups
ฉันลองใช้ความสัมพันธ์ GUI ใน Management Studio เพื่อสร้างคีย์ต่างประเทศ (ตารางคีย์หลัก: TeamGroups.ID
, ตารางคีย์ต่างประเทศ: RoomBookings.TeamGroupId
) แต่ฉันได้รับข้อผิดพลาด:
คอลัมน์ในตาราง 'TeamGroups' ไม่ตรงกับคีย์หลักที่มีอยู่หรือข้อจำกัด UNIQUE
ฉันคิดว่าเป็นเพราะตาราง TeamGroups
มีคีย์หลักสองคอลัมน์ใช่ไหม
ฉันไม่ต้องการสร้างข้อจำกัดคีย์ต่างประเทศจากตาราง TeamGroups
(เช่น คีย์มีอยู่ในตาราง TeamGroups
) เนื่องจากในที่สุดตารางจะถูกนำมาใช้โดยตารางอื่น (เช่น EquipmentBookings
, GroupManagers
ฯลฯ )
ความช่วยเหลือใด ๆ ?
TeamGroups
ไปยังTeam
ตามคอลัมน์Team.Id
.... นั่นน่าจะใช้ได้ดี - person marc_s   schedule 19.11.2015TeamGroups
กับTeam
TeamGroups
ถึงRoomBookings
ที่ล้มเหลว - person Sk93   schedule 19.11.2015RoomBookings
ถึงTeamGroups
- person Sk93   schedule 19.11.2015