该图是递归的,具有三个“路线”,从一个实体集“Person”到关系类型“Parent's”(因此关系类型有三行)。
我们得到的问题是把这个三元关系分解成二元关系,假设是三个。
我正在考虑将“人”作为一个实体集,并让孩子成为另一个实体集父母的关系类型,每个父母都有一个属性。
有人可以帮助我吗?
该图是递归的,具有三个“路线”,从一个实体集“Person”到关系类型“Parent's”(因此关系类型有三行)。
我们得到的问题是把这个三元关系分解成二元关系,假设是三个。
我正在考虑将“人”作为一个实体集,并让孩子成为另一个实体集父母的关系类型,每个父母都有一个属性。
有人可以帮助我吗?
因此,如果我理解正确,每个 Person 都有对 Parent 表的三个外键引用,并且您希望对其进行规范化。
我的方法是将这种关系抽象为一个交叉引用实体 PersonParent。PersonParent 将具有三个字段:Person 的 ID、Parent 的 ID 和此 Parent 对 Person 的父“类型”(这最后一点信息隐含在旧模式中三个引用中的每一个的字段中)。一个 Parent 可以对很多人来说是这样,但是一个 Person 只能有 0 到一个有限的 N(可能是 3 个)Parent,方法是指定 PersonID 和 ParentType 的组合为唯一,并指定有效 ParentType 的最大数量。ParentType 可以是对包含这些类型的实体的引用,或者可以将有效值内置为检查约束(我强烈推荐前者)。