CREATE TABLE TBLTeams
(
teamnm varchar(30) NOT NULL,
teamid varchar(10),
rondenm varchar(10)
primary key(teamnm)
)
CREATE TABLE TBLWedstrijd
(
thuisteamnm varchar(30) NOT NULL,
uitteamnm varchar(30) NOT NULL,
wedstrijdid varchar(10)
primary key(wedstrijdid)
)
alter table TBLWedstrijd add foreign key (thuisteamnm) references TBLTeams(teamnm)
alter table TBLWedstrijd add foreign key (uitteamnm) references TBLTeams(teamnm)
CREATE TABLE TBLUitslag
(
thuisteamnm varchar(30) NOT NULL,
uitteamnm varchar(30) NOT NULL,
wedstrijdid varchar(10) NOT NULL,
uitteampunt int,
thuisteampunt int
primary key(thuisteamnm)
)
alter table TBLUitslag add foreign key (wedstrijdid) references TBLWedstrijd(wedstrijdid)
如果我在TBLTeams中更新teamnm,我如何更新TBLWedstrijd uitteamnm中的参考。我知道它是一个子查询,但我真的不知道如何。
答案 0 :(得分:0)
你有点不对劲。如果您要更改团队名称,则不应将其用作密钥(因为这会破坏所有引用)。
您希望从TBLWedstrijd引用其ID,而不是使用其名称。
所以你的陈述将成为:
CREATE TABLE TBLWedstrijd
(
wedstrijdid varchar(10),
thuisteamid varchar(10) NOT NULL,
uitteamid varchar(10) NOT NULL,
primary key(wedstrijdid)
)
alter table TBLWedstrijd add foreign key (thuisteamid) references TBLTeams(teamid)
alter table TBLWedstrijd add foreign key (uitteamid) references TBLTeams(teamid)
同样适用于你的桌子TBLUitslag,你应该只引用TBLWedstrijd,因为那个已经掌握了有关哪些球队正在比赛的信息。更不用说,无论如何,得分几乎都是游戏的一部分,所以将它们分成2个表并没有多大意义。这就变成了:
CREATE TABLE TBLWedstrijd
(
wedstrijdid varchar(10),
thuisteamid varchar(10) NOT NULL,
uitteamid varchar(10) NOT NULL,
uitteampunt int,
thuisteampunt int
primary key(wedstrijdid)
)
这称为"表格规范化"如果你想谷歌一些东西了解更多信息。