簡単な質問でしょう。
2つのテーブル用。 A-> B、TeamID-> Fk_Teamから1対多の関係が作成されますが、この1つの関係を参照する必要があるフィールドが複数あり、どのように機能するかを示します。
そう
A B
TeamID EventID
teamName datetime
teamocation homeTeam
etc awayTeam
Weather
Fk_team
では、homeTeamとawayTeamの両方がFk_Team関係を利用し、homeTeam&awayTeamエントリがTeamID.teamNameフィールドに存在している必要があることをどのように定義しますか?
これを単一の制約として実装することはできません。 2つ作成する必要があります。
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
の2つの列に格納する方がはるかに効率的です。この方法では、すべての行で2つのINT
sを繰り返す代わりに、 「ビリーボブのベイトアンドタックルマデンズ」や「サウスシンシナティリベルロッカーズ」などのかさばるストリングス。
また、チームの名前を変更するのがはるかに簡単になります(重要なのは、ゲームがプレイされたときに歴史的な名前を記録することではありませんが、それでも、すべてのゲームではなく、ある種の履歴テーブルに名前を保存します)。 。