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