1

尝试建立实体关系但难以确定我需要的关系:

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

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

这是否意味着 Fred 的 super_friend 需要对多?

编辑:

实体 Person Bill 的 sub_friend 指向 Fred 和 Ted。

实体 Person Alice 的 sub_friend 指向 Fred。

那么 Fred 的 super_friend 与实体 Bill 和实体 Alice 有什么关系呢?如果我拉出实体 Fred,它会只指向 Bill 或 Alice 吗?

我认为这只是回答了我的问题。我需要 Entity Fred 指向 Bill 和 Alice,对很多人来说。我希望每个实体都是唯一的。

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

编辑2:

由于困惑,让我扩展我的需求:我需要对实体进行分类。

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

仅具有朋友关系的解决方案不允许我将朋友分开。假设 Fred 认识 John 和 Stacy。当我查询 Fred 时,我不知道 John 是否在上面(super_friend 并且不会关心)或者 John 是否是 sub_friend(需要在表视图中显示以供选择)。

4

4 回答 4

2

看看这张图:

在此处输入图像描述

如您所见,Bill 有许多 sub_friend,而 Fred 是许多实体的 sub_friend。
所以这是一对多的关系。

编辑

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

于 2012-12-17T17:11:10.777 回答
2

正如我已经说过的,我不理解你的整个子/超级朋友的概念,设计当然取决于你。但是从常识的角度来看,如果比尔和弗雷德是朋友,那么弗雷德也是比尔的朋友,这难道不是合乎逻辑的吗?它们都是 Person 实体。所以在核心数据方面,我会有一个指向 Person 实体的朋友关系,并且是一对多的逆关系?

看看这个核心数据实体:在此处输入图像描述

在关系的检查器中,您会看到一对多的反比关系:

在此处输入图像描述

于 2012-12-17T17:57:10.707 回答
0

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

就属性而言,sub_friends 会变成 NSSet,而 super_friend 会变成 Person *。

于 2012-12-17T17:28:30.813 回答
0

确实,您的评论刚刚回答了您自己的问题 =) 您刚刚说 Fred 有 2 个超级朋友。显然是多方面的关系。

进一步扩展:我在我的大脑中更改了您的关系名称,因为据我所知,sub_friend 仅表示直接朋友,而 super_friend 表示朋友的朋友。

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

于 2012-12-17T17:51:44.257 回答