say*_*yth 2 sql-server-2008 foreign-key database-design sql-server
可能是简单的问题。
对于两张桌子。一对多关系是从 A -> B、TeamID -> Fk_Team 创建的,但是有多个字段需要引用这个关系如何工作。
所以
A B
TeamID EventID
teamName datetime
teamocation homeTeam
etc awayTeam
Weather
Fk_team
Run Code Online (Sandbox Code Playgroud)
那么我如何定义 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);
Run Code Online (Sandbox Code Playgroud)
正如我在评论中提到的那样,存储TeamID在两列中会更有效率dbo.B- 这样你INT在每行中重复两个s,而不是像“Billy Bob's Bait and Tackle Mudhens”或“South Cincinnati”这样庞大的字符串叛逆者。”
它还使更改团队名称变得更加容易(除非重点是在游戏进行时记录他们的历史名称,但即使如此,我也会将名称随时间存储在某种历史表中,而不是在每场比赛中) .
| 归档时间: |
|
| 查看次数: |
16608 次 |
| 最近记录: |