【发布时间】:2013-12-01 17:54:52
【问题描述】:
我正在制作一个简单的网球数据库,其中包含:
- 锦标赛(男子/女子单打、男子/女子双打、混合双打)
- 玩家
- 结果
我的结果表看起来像
- 结果ID
- 播放日期
- Player1ID(成为 ParticipantID1)
- Player1Score
- Player2ID(成为 ParticipantID2)
- Player2Score
然后我意识到一个玩家可以参加多个锦标赛,所以我需要另一张桌子,参与者(或者可以称为团队,或情侣)。
- 参与者ID
- 玩家ID
- 锦标赛ID
所有三个 ID 都是复合的。
现在乔(ID:1)和汤姆(ID:2)可以成为双打搭档,但乔仍然可以打单打
参赛者 ID -- PlayerID -- TournamentID
1 ----------------- 1 ------------ 1
1 ----- 2 ------------ 1
2 ----------------- 1 ------------ 2
现在我遇到的问题是,必须为参与者表打开自动增量/识别,这意味着必须完成更多的编码工作(在创建和验证等时)。
我遇到的第二个问题是所有单打球员数据都会重复,因为它们会存储在 Player 表和 Participant 表中。
我可以有另一个结果表,即 DoubleResults,但我觉得这没有必要。
这是唯一可以做到的方法还是我的大脑一片空白?
【问题讨论】:
-
单打选手数据为什么会重复?应该只是被多次使用的 PlayerID。
-
因为结果表实际上应该只链接到 PlayerID 或 ParticipantID。我猜可以使用 -If TournamentType = 'Singles' Use PlayerID Else Use ParticipantID- 逻辑,但看起来不太好?
标签: sql foreign-keys relational-database relationship