假设我有两个桌球队和球员,我们假设很多球员都可以成为很多球队的成员(在不同的运动中)。因此我有第一张桌子 PKs团队名称和运动队。第二桌"球员"有PK player_id。由于 -to - 关系,我还有第三个包含所有键的表(team_name,sport和player_id)。
这种情况下的问题是列团队名称在第一个表中不是唯一的。当然,我可以将另一列作为id,并将其作为PK。但我不确定这是否是最好的方法以及如何在现实世界中解决这个问题。所以问题是: 1.如果我有一个这样的复合键,哪一列没有唯一值 2.你如何恰当地正常化? 3.如果方便或者我总是要拿整个密钥,我可以只使用第三个表中的一个复合键吗?
create table sports(
sport varchar(30),
capt_id int references captain(capt_id),
primary key(sport)
);
Create table teams(
team varchar(30),
sport varchar(30) references sports(sport),
primary key(team,sport)
);
create table teamplayer(
player_id int references player(player_id),
sport varchar(30) references sports(sport),
team varchar(30) references teams(team),
unique (team, sport),
primary key(player_id, team, sport)
);