Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
Database 数据库中的关系循环_Database_Database Design - Fatal编程技术网

Database 数据库中的关系循环

Database 数据库中的关系循环,database,database-design,Database,Database Design,我正在从事体育俱乐部数据库的设计,我在那里遇到了一个循环问题。首先,我想给你看我的图表(很抱歉,这里没有专业的设计人员)。 我知道应该避免做这样的循环,但是如果每个循环都有原因的话?例如,我有四张桌子——球员、团队、游戏和参与者。每场比赛总是有两队——我的队和对手。所以我需要将外键团队id添加到游戏表中。接下来是球员,每个球员目前都在特定的球队中打球,这两张桌子之间存在[多-一]关系。我想在“这个”游戏参与者表中保留关于“这个”玩家的统计信息。还有,我需要在转会表中保留一些球员的信息,这样就有

我正在从事体育俱乐部数据库的设计,我在那里遇到了一个循环问题。首先,我想给你看我的图表(很抱歉,这里没有专业的设计人员)。


我知道应该避免做这样的循环,但是如果每个循环都有原因的话?例如,我有四张桌子——球员、团队、游戏和参与者。每场比赛总是有两队——我的队和对手。所以我需要将外键团队id添加到游戏表中。接下来是球员,每个球员目前都在特定的球队中打球,这两张桌子之间存在[多-一]关系。我想在“这个”游戏参与者表中保留关于“这个”玩家的统计信息。还有,我需要在转会表中保留一些球员的信息,这样就有了另一个循环。但是我能保持这个设计吗?

< P>你应该考虑改变你的表格设计。 在游戏表中:

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

  • team_id和opp_id都应该是teams表的外键

在参与者表中

  • 您应该删除part_id主键,添加team_id,并使用team_id、player_id和game_id作为主键,因为一名玩家不能在两支球队中同时比赛
在你的牌桌上

  • 您应该删除球队Id,并使用此表描述球员
您应该创建一个新表,该表描述团队id和玩家id为组合主键的团队成员


在你的转会表中,你应该有一个转会id,球员id,球队1和球队2。此表的新增内容应表明需要更新新的团队成员表

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

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

通常修复RDBMS中的“动态事件”(如Transfers或games)“保存”所有信息,不需要使用任何fk。AKA事务处理