核心数据和自反实体关系(一对一或多对多)
试图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是指一个朋友的朋友。
许多关系自然适合,因为如果你只有一个朋友的朋友,没有任何意义。