相关疑难解决方法(0)

超类型子类型数据库设计

我有一个关于关系数据库中超级子类型设计的问题.如果我有一个带有两个子类型表的超类型,我会将超类型的PK与两个子类型表的PK相关联作为FK.假设我有这样的事情:

类型

TypeID PK

ID PK TypeID FK

SubtypeA

ID PK,FK

SubtypeB

ID PK,FK

在数据库方面,我如何确保给定类型的超类型ID只被放入适当的子类型表中?例如,我不希望将带有类型A的超类型ID放入SubtypeB表中.有没有办法轻松防止这种情况发生在数据库端?我知道这可以在代码中处理,但如果代码有错误怎么办?或者,如果有人手动将错误的ID输入其中一个子类型表,该怎么办?我想我正在寻找一些让数据库方面无法实现这一目标的方法.

有任何想法吗?也许Supertype表上的PK应该是ID和TypeID组合,ID列上有唯一约束,以防止两种类型的记录都在SuperType表中...然后子类型表将具有组合ID和TypeID PK对TypeID的约束只能是适当的子类型表的类型?

database database-design

4
推荐指数
2
解决办法
7618
查看次数

标签 统计

database ×1

database-design ×1