我试图在这两张table之间建立一个多对多的关系。
CREATE TABLE series (
title VARCHAR(30),
language VARCHAR(30),
year INT,
PRIMARY KEY (title)
);
CREATE TABLE actors (
name VARCHAR(30),
age INT,
country VARCHAR(30),
serie VARCHAR(30),
PRIMARY KEY (name , age , country , serie),
FOREIGN KEY (serie)
REFERENCES series (title)
);
我试图创建一个单独的表来形成多对多关系。这看起来对吗?
CREATE TABLE series_actors_combined (
title VARCHAR(30),
name VARCHAR(30),
age INT,
country VARCHAR(30),
serie VARCHAR(30),
FOREIGN KEY (title)
REFERENCES series (title),
FOREIGN KEY (name)
REFERENCES actors (name),
FOREIGN KEY (age)
REFERENCES actors (age),
FOREIGN KEY (country)
REFERENCES actors (country),
FOREIGN KEY (serie)
REFERENCES actors (serie)
);
1条答案
按热度按时间qlzsbp2j1#
你的table看起来不对劲。
首先,在actors表中有一个外键引用该系列,这基本上违背了bridge表的目的。
另外,从桥接表到参与者的外键的格式也不好:每列有一个键,而应该有一个唯一的多列键来引用参与者。我建议使用自动递增的主键,而不是使用这些列的组合。这为您的设计提供了更大的灵活性(在现实生活中,两个不同的系列可能具有相同的标题),并使在桥接表中创建外键变得更容易。
考虑: