Sql-Server
在一個表中的多個欄位上使用外鍵
可能是簡單的問題。
對於兩張桌子。一對多關係是從 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”這樣的笨重字元串反叛搖滾樂隊。”它還使更改團隊名稱變得更加容易(除非重點是在比賽開始時記錄他們的歷史名稱,但即便如此,我也會隨著時間的推移將名稱儲存在某種歷史表格中,而不是每場比賽) .