我正在研究体育俱乐部数据库设计,我遇到了循环问题。首先,我想向您展示我的图表(对不起,我在这个地方没有专业的设计)。
我知道应该避免做这样的循环,但是如果每个都有原因吗?例如 - 我有四张桌子 - 球员,球队,比赛和参赛者。每场比赛总共有两支球队 - 我的球队和对手。所以我需要将外键team_id添加到游戏桌中。接下来我有玩家,每个玩家目前正在特定团队中玩,这两个表之间存在[多 - 一]关系。而且我想在'this'游戏 - 参与者表中保留关于'this'玩家的统计数据。更多 - 我需要在转移表中保留关于我的一些玩家的信息,所以还有另一个循环。但我可以保留这种设计吗?
答案 0 :(得分:1)
您应该考虑更改表格设计。
在比赛表中:
您应该删除part_Id,因为您描述了参与者表中的参与者。
team_id和opp_id都应该是您队伍表的外键
在参与者表格中
在你的玩家表中
您应该创建一个新表来描述团队成员,其中team_id和player_id是主要组合键。
在您的转移表中,您应该有转移ID,玩家ID,第1组和第2组。此表的新增内容表示需要更新新的团队成员表。
答案 1 :(得分:1)
“真实世界”实体之间存在循环引用 因此,应该理解规则,就像我们需要避免循环引用上的RDBMS托管完整性支持一样。
应删除哪些FK / PK引用(其他信息应与实体一起存储)是另一个问题,答案取决于您的需求。
通常在RDBMS中修复“动态事件”(如转换器或游戏)“保存”所有信息,不需要使用任何fk。 AKA交易处理。