TPH - 当FK在派生类上时如何满足FK约束?

时间:2016-08-17 23:00:49

标签: sql entity-framework database-design ef-code-first

假设我有抽象类Person的TPH。然后我从这个类派生了GirlBoyGirlFavoriteMakeup没有关联Boy。插入Makeup记录时,如何满足Boy上的FK约束?或者TPH是否与仅限于派生类型的FK不兼容?

TPH:每层的表格
FK:外键

1 个答案:

答案 0 :(得分:1)

这里有两个不同的方面。我们来看看它们。

首先,如果外键在Relational DBMS中可以具有或不具有空值。通常,这是允许的:您可以同时具有外键约束和非空约束或外键约束,同时属性可以是可空的。这是因为这两个约束通常被认为是独立的。例如,NULL值可能意味着特定对象的值是未知的。

第二个方面与建模有关:通常,在您的示例情况下,当您可以使用“每个层次结构表”方法时,这不被认为是一个很好的建模实践:您应该使用“每种类型的表”(或TPT使用Microsoft文档的术语)方法,因为所有的Girl实体都与其他实体Makeup有关联,而实体Boy没有这种关联,而这个事实是其中的一部分。实体的意义,而不是某些实体的特殊情况(如未知值)。