0

在每个类型架构的表中,假设我有一个 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 的外键。如何确保不存在既是点又是线的几何?是否存在某种互斥约束?

如果唯一的解决方案是使用诸如特定于供应商的触发器之类的东西,我最好这样做还是在其他地方(例如稍后的通信或客户端)执行此操作?

谢谢你!

4

1 回答 1

0

StackOverflow 和 Database Administrators 上有一些类似的问题,可以作为一个很好的参考点。请参阅此相关问题:

如何为引用 SQL 中其他几个实体之一的实体建模?

于 2013-03-28T20:39:59.397 回答