【发布时间】:2012-12-14 19:33:02
【问题描述】:
需要设置一个与自身有一对多关系(自反)的Entity Person。
所以每个人可以有n个子人,基本上是这样的:
Person 是否有两个关系,person 和 sub_person?逆规则如何运作?
【问题讨论】:
标签: objective-c ios core-data
需要设置一个与自身有一对多关系(自反)的Entity Person。
所以每个人可以有n个子人,基本上是这样的:
Person 是否有两个关系,person 和 sub_person?逆规则如何运作?
【问题讨论】:
标签: objective-c ios core-data
如果我正确理解您的要求,您只需定义一个实体Person,以及两个关系:
sub_persons 作为从 Person 到 Person 的一对多关系,super_person 作为从 Person 到 Person 的一对一关系,并将它们定义为彼此的反向关系。
【讨论】:
实体当然可以与自身相关,就像双向链表中的节点与其他节点具有下一个和上一个关系。请记住,实体就像一个类——它是一种对象,而不是一个特定的对象。因此,例如,您的 Person 实体可能与 Person 有 friends 关系——给定的人可能有很多朋友,他们都是 Person 的实例。
【讨论】:
Core Data 中绝对有可能以这种方式拥有一个与自身相关的对象。在数据模型的 Table, Graph 编辑器中,按住 control 键并从 Person 画出一条线,然后又回到它自己。这会给你一条线,每端都有一个箭头,都指向 Person。然后重命名关系(parentPerson、subPersons)并在属性检查器中使 subPersons 成为一对多关系。最终结果应如下所示:
这种数据管理风格遵循称为Composite Pattern 的设计模式。
【讨论】: