Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 网球比赛中的关系困惑_Sql_Foreign Keys_Relational Database_Relationship - Fatal编程技术网

Sql 网球比赛中的关系困惑

Sql 网球比赛中的关系困惑,sql,foreign-keys,relational-database,relationship,Sql,Foreign Keys,Relational Database,Relationship,我正在制作一个简单的网球数据库,其特点是: 锦标赛(男子/女子单打、男子/女子双打、混合双打) 球员 结果 我的结果表看起来像 结果 约会 玩家ID(成为参与者1) Player1Score Player2ID(成为参与者2) Player2Score 然后我意识到一名球员可以参加不止一场比赛,所以我需要另一张桌子、一名参与者(或者可以称为团队或情侣) 参与者 PlayerID 锦标赛 三个ID都是复合的 现在乔(身份证号码:1)和汤姆(身份证号码:2)可以成为双打搭档,但乔仍然可以

我正在制作一个简单的网球数据库,其特点是:

  • 锦标赛(男子/女子单打、男子/女子双打、混合双打)
  • 球员
  • 结果
我的结果表看起来像

  • 结果
  • 约会
  • 玩家ID(成为参与者1)
  • Player1Score
  • Player2ID(成为参与者2)
  • Player2Score
然后我意识到一名球员可以参加不止一场比赛,所以我需要另一张桌子、一名参与者(或者可以称为团队或情侣)

  • 参与者
  • PlayerID
  • 锦标赛
三个ID都是复合的

现在乔(身份证号码:1)和汤姆(身份证号码:2)可以成为双打搭档,但乔仍然可以参加单打

参与者ID——玩家ID——锦标赛ID

1---------1------1

1---------2------1

2---------1------2

现在我遇到的问题是,必须为参与者表启用自动递增/标识,这意味着必须完成更多的编码工作(在创建和验证等时)

我遇到的第二个问题是,所有单打球员的数据都会重复,因为它们会存储在球员表和参与者表中

我可以有另一个结果表,即DoubleResults,但我觉得这没有必要


这是唯一可以做到的方法,还是我的头脑一片空白?

一场比赛会有很多场比赛。因此,比赛和比赛之间需要一对多的关系

比赛将有一种类型(单打、双打等)。因此,您的匹配表必须包含类型id


你需要在球队和比赛之间建立多对多的关系。一支球队可以有一名或两名球员,这取决于比赛类型。在这一点上,它归结为您要存储多少细节。将获胜队id存储在此表中可能足够好。

为什么要重复单打球员数据?应该是多次使用的PlayerID。因为实际上结果表应该只链接到PlayerID或ParticipantID。我猜a-如果TournamentType='Singles'使用PlayerID,否则使用ParticipantID-可以使用逻辑,但它看起来不太好?