我试图映射这里描述的这种关系:
"团队玩游戏。一支球队一个赛季最多可以打40场比赛。每场比赛由2支球队进行。您必须跟踪游戏中每个团队的得分。团队可能永远不会玩游戏,但如果安排了游戏,则必须有2支队伍参与其中。"
这里的实体是团队和游戏。两者都有与实体相关联的ID,即teamID和gameID。常识告诉我游戏应该是一个弱小的实体,因为没有团队就没有游戏。但是,如果游戏有自己独特的ID,那么这是否意味着它不是一个弱实体?
另外,我如何为实体游戏创建关系表?如果游戏中只有2支球队参赛,那么游戏中的外键会是什么?我会在表中只有teamOneID *和teamTwoID *吗?
答案 0 :(得分:0)
弱实体集不是依赖于另一个存在的实体集来确定的。弱实体集是无法通过其自身属性标识的实体集,并且依赖于与其标识的常规实体集的关系。如果Game
具有自己的代理标识符,则它是常规实体集。
依赖于存在关系的概念称为完全参与。有关详细信息,请参阅我对is optionality (mandatory, optional) and participation (total, partial) are same?的回答。
至于命名外键列,我看到许多设计使用homeTeamID
和awayTeamID
,但如果两个团队都在远离他们的主场,那么角色的分配是任意的。对称关系可能会给数据库设计带来困难。如果没有破坏对称性的规则,您的查询必须检查任何给定teamID的两个字段,这会使查询复杂化并且效率低下。我之前使用过的一种方法是将较低的值存储在teamOneID
中,将较高的值存储在teamTwoID
中。