[英]How to model an association with a transitive dependency?
我迷失了与传递依赖关系的建模模型。 这是相应的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.