如何使用核心数据创建递归的一对多关系?

时间:2015-02-14 14:38:40

标签: ios iphone macos cocoa core-data

我之前使用过核心数据,但是我必须构建的这个数据库有一个特殊性,需要一种特殊的关系才能融化我的大脑。

我有2个实体,我们称之为Cage and Animal。

  • Cage有一个属性name
  • 动物有nameimage属性,必须跟踪其子女。

可能的结构可能类似于

cage ---------- animal 1
         |
         |_____ animal 2
         |
         |_____ animal 3 ____ animal 4
                          |
                          |__ animal 5
                                  |
                                  |_____ animal 6

查看此结构后,您会看到Animal 1Animal 2Animal 3Cage作为父级或是"孩子"凯旋的对象,如果你愿意的话。另一方面,Animal 3有2个子对象(4和5),Animal 5有一个子对象。

我需要CageAnimal成为不同的实体。

因此,您会看到Animal个对象可以将其他动物作为子项。动物可以有一个父母但有多个孩子。 Cage对象只能有子项。

我试图添加一个children关系,其目标等于Animal,倒数等于children(toMany),但这就是融化我的大脑,因为如果我这样做,这将是父母一次和孩子在别人,更不用说孩子的名字会使编码难以包裹...

如何构建实体之间的关系以使其工作?

2 个答案:

答案 0 :(得分:4)

首先创建您的实体和属性。然后创建你的关系。动物的关系"动物"和#34;孩子"对许多人说“呐喊”。离开"笼子"和父母"设置为"到一个"关系。最后,为每个关系设置目标和反向。

关系"动物"和"笼子"应该是逆的。 关系"父母"和#34;孩子"应该设置为反向。

完成后应该是这样的:

enter image description here

答案 1 :(得分:1)

动物生活在笼子里,两只动物可以有关系。

I came up with following ERD