所以我当前的问题主要是与建模有关的,因为我还没有尝试在SQL中应用它。
我目前拥有3个实体-导演,演员和电影-全部与一种关系相关-直接(1:1:N)部分:部分:总计。
这个想法是,每部电影只能有1位导演,但是演员也可以是导演,因此,两难选择是一种让演员或导演执导电影的方式,但不允许他们俩导演同时,无论如何,我无法阻止这种情况的发生。
将其转换为适当的数据库时,是否可以使用一些SQL命令?还是必须采用另一种建模方法?
答案 0 :(得分:1)
创建一个新表(艺术家),该表代表一个地方的所有演员和导演。这样一来,导演在电影表中只需要一列:
CREATE TABLE artist (artistid INT NOT NULL PRIMARY KEY);
ALTER TABLE actor ADD FOREIGN KEY (actorid) REFERENCES artist (artistid);
ALTER TABLE director ADD FOREIGN KEY (directorid) REFERENCES artist (artistid);
ALTER TABLE film ADD directorid INT NOT NULL REFERENCES artist (artistid);
答案 1 :(得分:0)
您可以使用外键约束和检查约束。这是表格的缩小版本以及如何设置:
create table directedBy (
filmId int not null references films(filmId),
actorId int references actors(actorId),
directorId int references directors(directorId),
check (actorId is null or directorId is null)
);