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

试图build立一个实体关系,但很难找出我需要的关系:

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

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

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

编辑:

实体人比尔的小伙子指向弗雷德和特德。

实体人员Alice的sub_friend指向Fred。

那么Fred的super_friend与Entity Bill和Entity Alice有什么关系呢? 如果我拉起实体弗雷德,它只会指向比尔或爱丽丝?

我想这只是回答了我的问题。 我会需要实体弗雷德指向比尔和爱丽丝,所以一对多。 我希望每个实体都是唯一的。

如果我不在乎Fred的超级朋友是谁? 我只能通过sub_friends横向“下”,从来没有通过super_friend / s“备份”。

编辑2:

由于困难,让我扩大我的需要:我需要分类横向的实体。

所以说我是比尔,我需要看看比尔的所有朋友(弗雷德和泰德)。 我select弗雷德。 然后,我需要find弗雷德的所有朋友,然后select一个,等等。我需要能够这样做n次。

只有朋友关系的解决scheme不会让我把朋友分开。 弗雷德知道约翰和斯泰西。 当我查询Fred时,我不知道John是否在上面(super_friend并且不会在意)或者John是否是sub_friend(需要在表格视图中进行select)。

只要看看这个图表:

在这里输入图像说明

就像你看到比尔有许多副友,而弗雷德是许多实体的副友。
所以这是一个多对多的关系。

编辑

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

正如我已经说过,我不明白你的整个子/超级朋友的概念,devise当然取决于你。 但是从常识的angular度来看,如果比尔和弗雷德是朋友,弗雷德和比尔是朋友,那么这是否合乎逻辑呢? 他们都是个人实体。 所以在核心数据方面,我会有一个指向Person实体的朋友关系,并且是一个反多对多的关系?

看看这个核心数据实体: 在这里输入图像说明

在关系的检查员中,你会看到一个倒数多的关系:

在这里输入图像说明

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

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

事实上,你的评论只是回答了你自己的问题=)你刚才说弗雷德有两个super_friends。 显然有很多关系。

扩大一点:我改变了你的关系名称,因为据我所知,sub_friend只是一个直接的朋友,super_friend是指一个朋友的朋友。

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