繁体   English   中英

如何为带有传递依赖关系的关联建模?

[英]How to model an association with a transitive dependency?

我迷失了与传递依赖关系的建模模型。 这是相应的ERM:

ERM

一场比赛有1个主队和1个客队(为简单起见,请坚持选择主队)。 因此,我将在比赛中包含team_id属性。

现在,我如何确保比赛中维持的球队参加比赛的联赛? 我愿意介绍联接表,但看不到如何保留有关传递依赖项的信息“团队-> 参加比赛->比赛-> 加入 ->联赛-> 与参与 ->团队”

我假设两支球队都必须参加比赛。 该解决方案涉及重叠约束和重叠外键引用。

您显示团队与联盟之间的关系。 比赛将参考此表。

create table team_leagues (
  team_id ...,
  league_id ...,
  other_columns ...,
  primary key (team_id, league_id),
  foreign key (team_id) references teams (team_id),
  foreign key (league_id) references leagues (league_id)
);

联赛和比赛之间存在1:n的关系。 这里有重叠的约束。

create table matches (
  home_team_id ..., 
  guest_team_id ...,
  match_start_time ...,
  league_id ...,
  primary key (home_team_id, match_start_time),
  unique (guest_team_id, match_start_time),
  foreign key (home_team_id, league_id) 
    references team_leagues (team_id, league_id),
  foreign key (guest_team_id, league_id)
    references team_leagues (team_id, league_id)
);

matches.league_id是否还需要对联赛的外键引用取决于应用程序。 不过,我认为参考team_leagues就足够了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM