该图是递归的,有三条“路线”,从一个实体集“Person”变为一个关系类型“Parent's”(所以有三条线路进入关系类型)。
我们给出的问题是采用这种三元关系并将其分解为二元关系,假设为三元。
我正在考虑将'person'作为一个实体集,让孩子成为另一个实体的关系类型,为每个父母设置一个属性。
有人可以稍微帮助我吗?
答案 0 :(得分:1)
因此,如果我理解正确,每个Person都有三个对Parent表的外键引用,并且你想要将其标准化。
我的方法是将这种关系抽象为交叉引用实体PersonParent。 PersonParent将有三个字段:Person的ID,Parent的ID,以及此Parent对Person的“父类型”(对于旧模式中的三个引用中的每一个,该字段中隐含了最后一位信息)。对于很多人来说,Parent可以是这样,但是一个Person只能在0和有限N(可能是3)个Parent之间,通过将PersonID和ParentType的组合指定为唯一,并指定有效ParentType的最大数量。 ParentType可以是对包含这些类型的实体的引用,也可以将有效值构建为检查约束(我强烈推荐前者)。