0

我有以下实体:

  • 团体
  • 部门
  • 数据

笔记:

  • 每个组可以有一个或多个扇区
  • 每个组可以有一个或多个数据。组中的每个扇区可以拥有其组拥有的所有数据或任何数据(默认情况下,每个扇区将拥有其组中的所有数据;然后每个扇区能够取消标记它不需要的任何数据)
  • 每个扇区可以与其组内的任何一个、一个或多个扇区相关联

我应该如何设计关系?

4

2 回答 2

1

您不需要主键,我认为您在这里处理的不是非常复杂的关系。可能需要“GroupSector”和“SectorData”,但您也可以使用像这样简单的东西。

在此处输入图像描述

  • 集团有很多部门;这种类型的关系暗示了“一个或多个”。
  • 组有很多数据。
  • 数据有一个组。
  • 扇区有许多(或可以属于许多)组。您对“每个部门只能是一个组的一部分,也可以是另一个组的一部分”的措辞令人困惑,但似乎暗示了与组的“对多”关系。

组中的每个扇区可以拥有其组拥有的所有数据或任何数据(默认情况下,每个扇区将拥有其组中的所有数据;然后每个扇区能够取消标记它不需要的任何数据)

使用此模型,Sector 可以从其所属的 Group 中检索相关数据。Group 拥有的任何数据,Sector 都可以轻松获取。也就是说,一个部门可能不想要所有的组数据,这就是“untaggedData”属性的用途。该属性可以包含对该部门应未标记的任何数据的引用。具有该扇区的组甚至可能没有该数据,但如果有,它将是“未标记的”。我不完全确定这是否是您想要的,因此如有必要,请澄清。

每个扇区可以与其组内的无、一个或多个扇区相关联。

使用此模型,您应该能够轻松确定哪些扇区属于特定组。您还可以为 Sector 提供另一个与其自身的“对多”关系,如下所示:

在此处输入图像描述

更新

根据您的评论:

但是“untaggedData”的属性类型应该是什么

那要看。它可以是一个简单的 NSString,其中包含一组逗号分隔的 Data 属性,例如 name(例如 @"data name 1 , data name 2, ..." 假设 Data 具有不变的 name 属性)。也就是说,如果您在 Data 中引用的属性可能会发生变化,那么这不是一个好的路径,您需要尝试不同的数据模型。

解决方案可能是摆脱“untaggedData”属性并使用另一个名为 SectorData 的实体。该实体将与 Sector 具有“对一”关系,与 Data 具有“对多”关系。它还应该与 Sector 中的新扇区数据关系和 Data 中的扇区数据具有反比关系。可能有一种方法可以浓缩所有这些,但请按原样尝试,让我知道你的表现如何。祝你好运!

在此处输入图像描述

于 2013-09-06T04:31:14.943 回答
1

你不需要主键,核心数据不是关系数据库

在 *.xcdatamodel 的图形模式下在 2 个实体之间建立关系

用ctrl点击一个实体【指针会变成+】,然后将生成的线拖到另一个实体上,使其一对一或一对多

于 2013-09-06T03:17:47.067 回答