核心数据和自反实体关系(一对一或多对)

时间:2012-12-17 17:01:51

标签: objective-c ios core-data

尝试设置实体关系,但很难找到我需要的关系:

我有一个实体,人。人有两个关系,超级朋友和次朋友。每个实体可以有很多朋友(一个人实体),所以sub_friend就是多对多关系。我不确定超级朋友是什么;一对一或多对多的关系。

示例:Bill是Fred和Ted的朋友。爱丽丝也是弗雷德的朋友。

这是否意味着弗雷德的超级朋友需要多对多?

编辑:

实体人员比尔的副朋友指向弗雷德和泰德。

实体人爱丽丝的子友指向弗雷德。

那么弗雷德的超级朋友与实体比尔和实体爱丽丝有什么关系呢?如果我拉起实体弗雷德,它只会指向比尔或爱丽丝吗?

我认为这只是回答了我的问题。我需要实体弗雷德指向比尔和爱丽丝这么多。我希望每个实体都是独一无二的。

如果我不关心弗雷德的超级朋友是谁,该怎么办?我只会通过sub_friends横向“向下”,而不是通过super_friend / s“备份”。

编辑2:

由于困惑,让我扩大了我的需求:我需要横向整理实体。

所以说我是比尔,我需要看看比尔的所有朋友(弗雷德和特德)。我选择弗雷德。然后我需要找到Fred的所有sub_friends并选择一个,等等。我需要能够做n次。

只有朋友关系的解决方案不允许我将朋友分开。说弗雷德知道约翰和史黛西。当我查询Fred时,我不知道John是否在上面(super_friend并且不关心)或者John是否为sub_friend(需要在表视图中显示以供选择)。

4 个答案:

答案 0 :(得分:2)

请看这个图表:

enter image description here

就像你看到比尔有很多次级朋友一样,弗雷德是很多实体的副手 所以这是一种多对多的关系。

编辑

我认为这很明显,但是sub_friend是super_friend的反向关系,因为如果Bill将Fred作为sub_friend,那么fred将Bill作为super_friend。

答案 1 :(得分:2)

正如我已经说过的,我不了解你的整个亚/超级朋友的概念,设计当然取决于你。但从常识的角度来看,如果比尔是弗雷德的朋友,弗雷德也是比尔的朋友,那么这是不合逻辑的。他们都是人物实体。所以在核心数据术语中,我会有一个指向Person实体的朋友关系,并且是一个反向关系?

查看此核心数据实体:enter image description here

在关系的检查器中,您会看到反向关系:

enter image description here

答案 2 :(得分:0)

假设sub_friend和super_friend是彼此的反转,则sub_friend是1:n关系,super_friend是1:1。如果你用1代替n,因为你正在看一个实体,那么你得到1:1,一个实体只能引用一个超级。

在属性方面,sub_friends会变成NSSet,而super_friend则是Person *。

答案 3 :(得分:0)

确实,你的评论只回答了你自己的问题=)你刚才说弗雷德有2个超级朋友。显然有很多关系。

进一步扩展:我在大脑中改变了你的关系名称,因为据我所知,sub_friend只是意味着一个直接的朋友,而super_friend意味着朋友的朋友。

许多关系自然适合,因为如果你只有一个朋友的朋友就没有任何意义。