在每种类型架构的表中,假设我有一个具有两个子类型student和teacher的Person类型。学生不能当老师,老师不能当学生。每种类型的专有子类型的数据库表
下面是我知道如何到目前为止设置这些的最佳途径:
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
注意,对于子类型的主键也是一个外键几何。我怎样才能确保没有既是点又是线的几何?是否存在某种相互排斥的约束?
如果唯一的解决方案是使用特定于供应商的触发器之类的东西,我最好是这样做,还是在稍后或客户端的其他地方执行此操作?
谢谢!
所以,你不考虑的想法,一个人不能同时是老师和学生是一个数据完整性的问题,而是一个逻辑问题?拥有这个枚举不是多余的吗?这些不是修辞问题,我真的不知道什么是最好的 – Eric
也许我太抽象了,如果这是高中或明显不是什么,但任何高等教育机构,这当然是可能的。如果它们完全分离,为什么它们从'Person'继承,而不是仅仅创建2个表格,'Teacher'和'Student'? –
我实际上是在一个非常不同的数据库上工作。在我的数据库中,子类型绝大多数是独占的。在这种情况下,我将编辑该帖子以阐明 – Eric