Ios 核心数据关系复杂

Ios 核心数据关系复杂,ios,core-data,ios7,Ios,Core Data,Ios7,我拥有以下实体: 团体 扇区 资料 注: 每个组可以有一个或多个扇区 每个组可以有一个或多个数据。一个组中的每个扇区都可以拥有其组拥有的所有或任何数据(默认情况下,每个扇区都将拥有其组中的所有数据;然后每个扇区都可以取消标记其不需要的任何数据) 每个部门都可以与其组中的一个或多个部门无关联 我应该如何设计关系?您不需要主键, 核心数据不是关系数据库 要在2个实体之间建立关系,请在*.xcdatamodel的图形模式下 用ctrl键单击一个实体[指针将变成+],然后将生成的行拖动到另一个实

我拥有以下实体:

  • 团体
  • 扇区
  • 资料
注:

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

我应该如何设计关系?

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

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


用ctrl键单击一个实体[指针将变成+],然后将生成的行拖动到另一个实体,使其成为一对一或一对多

您不需要主键,我认为您在这里处理的关系也不太复杂。可能需要使用“GroupSector”和“SectorData”,但您也可以使用类似这样的简单方法

  • 集团拥有多个部门;“一个或多个”是指这种类型的关系
  • 这个组有很多数据
  • 数据有一个组
  • 部门有许多(或可以属于许多)组。你的措辞“每个部门可以是一个集团的一部分,也可以是另一个集团的一部分”令人困惑,但似乎暗示着与集团的“对多”关系
一个组中的每个扇区都可以拥有其组拥有的所有或任何数据(默认情况下,每个扇区都将拥有其组中的所有数据;然后每个扇区都可以取消标记其不需要的任何数据)

使用此模型,部门可以从其所属的组中检索相关数据。该组织拥有的任何数据,都可以轻松访问。也就是说,一个部门可能不需要所有的组数据,这就是“UntagedData”属性的作用。该属性可以保存对该扇区应取消标记的任何数据的引用。拥有该行业的团队可能甚至没有这些数据,但如果有,它将是“未标记的”。我不完全确定这是否是您想要的,所以如果必要,请澄清

每个部门都可以与其组中的一个或多个部门无关联

使用此模型,您应该能够轻松确定哪些部门属于特定组。你也可以让部门与自身建立另一种“多对多”的关系,就像这样:

更新

根据您的评论:

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

那要看情况。它可以是一个简单的NSString,包含一组逗号分隔的数据属性,如name(例如@“数据名1,数据名2,…”,假设数据具有不变的name属性)。也就是说,如果您在数据中引用的属性可能会更改,那么这不是一条好的路径,您需要尝试不同的数据模型

解决方案可能是去掉“untageddata”属性,使用另一个名为SectorData的实体。该实体将与行业建立“一对一”关系,与数据建立“多对多”关系。它还应该与扇区中的新sectorData关系和数据中的sectorData具有反向关系。也许有一种方法可以浓缩所有这些,但请按原样试一试,让我知道你的表现如何。祝你好运


我不确定有没有这么高声誉的人会说RTFM。。。我是个新手,刚学会使用核心数据。我已经知道如何创建实体和添加关系。。。这是基本的,我已经创建了一个应用程序使用这个。。。然而,如果你仔细阅读我的问题,我更关心的是部门和数据之间关系的复杂性。。。因为我更多的是一个SQL db用户,所以我展示的场景对我来说很复杂。。。很好,你知道一切,我只是希望我能很快找到答案。。。谢谢你,好的,现在更清楚了,给你的db图截图,重新表述你的问题,这样我们可以更好地帮助你谢谢你,凯尔。这正是我需要开始的。我将从这里开始,非常感谢!没问题。我很高兴能帮你指明正确的方向。如果我的解决方案回答了你的问题,别忘了接受它;)对不起,Kyle,但是“untagedata”的属性类型应该是什么?下面由Kyle W.回答。多亏了凯尔。