我的数据库中的关系循环

时间:2014-01-14 16:26:34

标签: database database-design

我正在研究体育俱乐部数据库设计,我遇到了循环问题。首先,我想向您展示我的图表(对不起,我在这个地方没有专业的设计)。 enter image description here

我知道应该避免做这样的循环,但是如果每个都有原因吗?例如 - 我有四张桌子 - 球员,球队,比赛和参赛者。每场比赛总共有两支球队 - 我的球队和对手。所以我需要将外键team_id添加到游戏桌中。接下来我有玩家,每个玩家目前正在特定团队中玩,这两个表之间存在[多 - 一]关系。而且我想在'this'游戏 - 参与者表中保留关于'this'玩家的统计数据。更多 - 我需要在转移表中保留关于我的一些玩家的信息,所以还有另一个循环。但我可以保留这种设计吗?

2 个答案:

答案 0 :(得分:1)

您应该考虑更改表格设计。

在比赛表中:

  • 您应该删除part_Id,因为您描述了参与者表中的参与者。

  • team_id和opp_id都应该是您队伍表的外键

在参与者表格中

  • 你应该删除part_id主键,添加team_id并使用team_id,player_id和game_id作为主键,因为一个玩家无法在两个团队中玩游戏

在你的玩家表中

  • 你应该删除team_Id并使用此表来描述玩家

您应该创建一个新表来描述团队成员,其中team_id和player_id是主要组合键。

在您的转移表中,您应该有转移ID,玩家ID,第1组和第2组。此表的新增内容表示需要更新新的团队成员表。

答案 1 :(得分:1)

“真实世界”实体之间存在循环引用 因此,应该理解规则,就像我们需要避免循环引用上的RDBMS托管完整性支持一样。

应删除哪些FK / PK引用(其他信息应与实体一起存储)是另一个问题,答案取决于您的需求。

通常在RDBMS中修复“动态事件”(如转换器或游戏)“保存”所有信息,不需要使用任何fk。 AKA交易处理。