Sql-Server

在一個表中的多個欄位上使用外鍵

  • December 30, 2015

可能是簡單的問題。

對於兩張桌子。一對多關係是從 A -> B、TeamID -> Fk_Team 創建的,但是有多個欄位需要引用這個關係是如何工作的。

所以

A                          B
TeamID                     EventID
teamName                   datetime
teamocation                homeTeam
etc                        awayTeam
                          Weather
                          Fk_team 

那麼如何定義 homeTeam 和 awayTeam 都使用 Fk_Team 關係並且 homeTeam 和 awayTeam 條目必須存在於 TeamID.teamName 欄位中?

您不能將其作為單個約束來實現;您需要創建兩個:

ALTER TABLE dbo.B ADD CONSTRAINT FK_HomeTeam 
 FOREIGN KEY (homeTeam) REFERENCES dbo.A(teamName);

ALTER TABLE dbo.B ADD CONSTRAINT FK_AwayTeam 
 FOREIGN KEY (awayTeam) REFERENCES dbo.A(teamName);

TeamID正如我在評論中提到的那樣,將兩列儲存在其中會更有效率dbo.B- 這樣你INT在每一行中重複兩個 s,而不是像“Billy Bob’s Bait and Tackle Mudhens”或“South Cincinnati”這樣的笨重字元串反叛搖滾樂隊。”

它還使更改團隊名稱變得更加容易(除非重點是在比賽開始時記錄他們的歷史名稱,但即便如此,我也會隨著時間的推移將名稱儲存在某種歷史表格中,而不是每場比賽) .

引用自:https://dba.stackexchange.com/questions/17015