postgresql - PostgreSQL 中一对多两边不为空
问题描述
一对多关系是如何实现的?通常建议执行以下操作:
CREATE TABLE instructor (
instructor_id integer primary key,
...
);
CREATE TABLE course (
course_id integer primary key,
instructor_id integer not null references instructor(instructor_id),
...
);
虽然这保证了该课程将有一名讲师,但并不能保证该讲师将拥有一门课程。我在此页面中看到了带有业务规则的图纸,据说这是可能的: http ://www2.cs.uregina.ca/~bernatja/crowsfoot.html
我正在尝试在该页面上实现 b9,其中教师必须有 1 门或更多门课程,并且该课程必须由一名教师教授。我尝试向讲师表添加非空外键以及延迟外键来解决插入问题,但课程表中的讲师 ID 不是唯一索引,因此不起作用。我如何保证我的导师有课程?
解决方案
我想说这是不可能的,因为您有时需要插入新的讲师或课程。如果是新讲师,则没有课程可以事先参考它,因此您将拥有一个没有课程的讲师 - 反之亦然。
最好的问候, Bjarni
推荐阅读
- keras - keras 和 tensorflow 的导入似乎破坏了 pycharm
- reactjs - React - 使用 Jest 进行前端组件测试
- javascript - How do i convert this code from v3# to v4#?
- c# - 使用带有 RSA 不对称参数的 X509Certificate 进行签名时,如何强制 CmsSigner 使用 RSASSA-PSS (RsaPss)
- grid - 为什么我的基础电子邮件宽度扩大到 100%?
- asp.net - Is there a way to, when pressing Enter key, save the data directly on database using slickgrid?
- android - Firebase RealTime-Database for Users
- go - Doesn't see public functions of a struct Golang
- r - 从矩阵中动态获取值
- javascript - POS UI 组件插件