sql - 有没有办法建立三元关系,其中三个实体之一一次只与另外两个实体中的一个相关联?
问题描述
所以我目前的问题主要与建模相关,因为我还没有尝试在 SQL 中应用它。
我目前拥有的是 3 个实体 - 导演、演员和电影 - 都与关系相关 - DIRECT (1:1:N) partial:partial:total。
这个想法是每部电影只能有一位导演,但演员也可以是导演,所以困境是找到一种方法让电影由演员或导演导演,但不允许他们同时由两者导演时间,但是它目前的建模方式我无法阻止这种情况的发生。
将其转换为适当的数据库时是否可以使用一些 SQL 命令,或者我是否必须采用另一种建模方法?
解决方案
创建一个新表(艺术家),在一个地方代表所有演员和导演。这样,导演只需要在电影表中的一列:
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);
推荐阅读
- amazon-dynamodb - 如何使用 Lambda 函数和 Python 将使用的第三方实时 API 数据推送到 SQS?
- excel-formula - 什么时候不需要“--”?
- java - Java 类导入问题。导入 java.awt.geom.Rectangle2D.Float 不起作用
- ios - Travis-ci 卡在 pod 安装中
- oracle - 我可以在oracle中逐月更改范围间隔分区吗
- python - 计算组内的余弦相似度
- video - ffmpeg 视频未从 .mp4 转换为 .ts 格式
- java - 使用 LibGdx 在 Java 中为 Sprite 表设置动画
- amazon-web-services - AWS EC2 多网卡路由
- batch-file - 使用批处理文件在“文件”上下文菜单中执行选项