每种类型的数据库表具有独有的子类型

时间:2013-03-28 20:31:22

标签: sql constraints data-integrity table-per-type

在每个类型架构的表中,假设我有一个类型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的外键。如何确保没有Point和Line的Geometry?是否存在某种相互排斥的约束?

如果唯一的解决方案是使用类似供应商的触发器,我最好这样做或者在其他地方强制执行此操作,例如稍后的通信或客户端?

谢谢你!

1 个答案:

答案 0 :(得分:0)

在StackOverflow和数据库管理员上有一些类似的问题可以作为一个很好的参考点。请参阅此相关问题:

How do I model one entity that references one of several other entities in SQL?