tca*_*vin 6 database-design sql-server
给定一个设备实体,它有一个位置,通常称为行踪。这可以参考:
用户实体(将在下周使用并负责设备的员工)。
供应商实体(如果设备正在维修)。
一个 StorageLocation 实体(如果设备已放好)。
一件设备一次只能在一个地方,即使那个地方不是物理位置。
这个会比较好吗:
拥有具有三列(UserId、VendorId、StorageLocationId)的设备,以便其中一列必须不为空,而另外两列必须为空(由约束强制执行)?
或者让 Equipment 的 WhereaboutsId 引用某种类型的超类型表,然后作为子类型表链接到 User、Vendor 和 StorageLocation,即使它们不共享其他公共属性?
或者是其他东西?
我的设计方法是考虑假设:
我认为在为所提出的设计回答上述问题的过程之后,很明显,使用超类型/子类型结构绝对是可行的方法(我敢说这是针对这种情况的最佳实践)。
当然,有些事情需要关注——例如,确保对于给定的超类型,匹配的记录必须恰好存在于 1 个子类型表中。使用编写良好的存储过程在类型之间进行“传输”(我认为您需要这样做),这应该很容易实现。
归档时间: |
|
查看次数: |
268 次 |
最近记录: |