在每个类型架构的表中,假设我有一个 Person 类型,它有两个子类型 student 和 teacher。学生不能成为老师,老师也不能成为学生。
以下是迄今为止我知道如何设置这些的最佳方法:
Geometry
ID int, PK
Name string
Point
ID int, PK, FK
X float
Y float
Line
ID int, PK, FK
StartPoint int, FK
EndPoint int, FK
请注意,对于子类型,主键也是 Geometry 的外键。如何确保不存在既是点又是线的几何?是否存在某种互斥约束?
如果唯一的解决方案是使用诸如特定于供应商的触发器之类的东西,我最好这样做还是在其他地方(例如稍后的通信或客户端)执行此操作?
谢谢你!