Sql 比赛、球员和比赛关系
我在多个赛季的多场比赛中有多个球员(表:球员、锦标赛、赛季)。因此,两名球员之间的比赛必须参考特定的锦标赛和特定的赛季Sql 比赛、球员和比赛关系,sql,database-design,Sql,Database Design,我在多个赛季的多场比赛中有多个球员(表:球员、锦标赛、赛季)。因此,两名球员之间的比赛必须参考特定的锦标赛和特定的赛季 table match id season_id tournament_id player_home player_away 比如说,为了明显的好处,让球员参加比赛可能是很自然的。我能在赛季和锦标赛之间做一个一对多的表格(称为表格比赛),然后为比赛和球员做一个多对多的表格吗 table competition id sea
table match
id
season_id
tournament_id
player_home
player_away
比如说,为了明显的好处,让球员参加比赛可能是很自然的。我能在赛季和锦标赛之间做一个一对多的表格(称为表格比赛),然后为比赛和球员做一个多对多的表格吗
table competition
id
season_id
tournament_id
table competition_player
id
competition_id
player_id
table match
id
competition_id
player_home
player_away
还是有更简单/更好的方法来实现这一点
谢谢你的建议。SqlFiddle
非常基本,但你仍然可以看到这种关系
结构
表格
--------------------------
|Id | Name | OtherInfo |
--------------------------
| 1 | John | Player Info |
--------------------------
| 2 | Tom | Player Info |
--------------------------
-----------------------------------
|Id | SeasonName | SeasonInfo |
-----------------------------------
|01 | MyFirstSeason | Season Info |
-----------------------------------
---------------------------------------
| Id | FirstPlayerId | SecondPlayerId |
---------------------------------------
| A | 1 | 2 |
---------------------------------------
-----------------------------------------------
| Id | TournamentId | EncounterId | MatchInfo |
-----------------------------------------------
|0001| 001 | A | Some Info |
-----------------------------------------------
- 玩家
-------------------------- |Id | Name | OtherInfo | -------------------------- | 1 | John | Player Info | -------------------------- | 2 | Tom | Player Info | --------------------------
----------------------------------- |Id | SeasonName | SeasonInfo | ----------------------------------- |01 | MyFirstSeason | Season Info | -----------------------------------
--------------------------------------- | Id | FirstPlayerId | SecondPlayerId | --------------------------------------- | A | 1 | 2 | ---------------------------------------
----------------------------------------------- | Id | TournamentId | EncounterId | MatchInfo | ----------------------------------------------- |0001| 001 | A | Some Info | -----------------------------------------------
- 季节
-------------------------- |Id | Name | OtherInfo | -------------------------- | 1 | John | Player Info | -------------------------- | 2 | Tom | Player Info | --------------------------
----------------------------------- |Id | SeasonName | SeasonInfo | ----------------------------------- |01 | MyFirstSeason | Season Info | -----------------------------------
--------------------------------------- | Id | FirstPlayerId | SecondPlayerId | --------------------------------------- | A | 1 | 2 | ---------------------------------------
----------------------------------------------- | Id | TournamentId | EncounterId | MatchInfo | ----------------------------------------------- |0001| 001 | A | Some Info | -----------------------------------------------
- Tournements
------------------------------------ | Id | SeasonId | TournamentName | ------------------------------------ |001 | 01 | MyFirstTournament| ------------------------------------
- 遭遇战
-------------------------- |Id | Name | OtherInfo | -------------------------- | 1 | John | Player Info | -------------------------- | 2 | Tom | Player Info | --------------------------
----------------------------------- |Id | SeasonName | SeasonInfo | ----------------------------------- |01 | MyFirstSeason | Season Info | -----------------------------------
--------------------------------------- | Id | FirstPlayerId | SecondPlayerId | --------------------------------------- | A | 1 | 2 | ---------------------------------------
----------------------------------------------- | Id | TournamentId | EncounterId | MatchInfo | ----------------------------------------------- |0001| 001 | A | Some Info | -----------------------------------------------
- 匹配
-------------------------- |Id | Name | OtherInfo | -------------------------- | 1 | John | Player Info | -------------------------- | 2 | Tom | Player Info | --------------------------
----------------------------------- |Id | SeasonName | SeasonInfo | ----------------------------------- |01 | MyFirstSeason | Season Info | -----------------------------------
--------------------------------------- | Id | FirstPlayerId | SecondPlayerId | --------------------------------------- | A | 1 | 2 | ---------------------------------------
----------------------------------------------- | Id | TournamentId | EncounterId | MatchInfo | ----------------------------------------------- |0001| 001 | A | Some Info | -----------------------------------------------
连接是关系数据库的核心。您想对系统做什么?您是在构建OLAP系统(例如:分析球员表现)还是OLTP系统(例如:在线比赛构建和评分服务)?OLTP。比赛结果会被放入每项比赛的排名表中。@freddieoff我用小提琴更新了我的答案。只是为了显示关系。我并不在乎是否显示链接表的名称或Id。我只是想测试我的查询。希望你喜欢:)@PhaDaPhunk谢谢你抽出时间。也许是一个正常化的问题,相同的锦标赛名称在多个赛季重复出现。而且,如果没有比赛和球员之间的多对多关系,很难看出谁属于谁。