我有以下实体:
注意:
我该如何设计这种关系?
答案 0 :(得分:1)
你不需要主键, 核心数据不是关系数据库
在* .xcdatamodel
上的图形模式下建立2个实体之间的关系点击带有ctrl的实体[指针将变为+],然后将生成的线拖到另一个实体,将其设置为一对一或一对多
答案 1 :(得分:1)
您不需要主键,我认为您不会在这里处理非常复杂的关系。可能需要“GroupSector”和“SectorData”,但你也可以使用这样简单的东西。
集团内的每个部门都可以拥有其集团拥有的全部或任何数据(默认情况下,每个部门将拥有其集团中的所有数据;然后每个部门都能够取消标记其不需要的任何数据)
使用此模型,Sector可以从其所属的组中检索相关数据。 Group拥有的任何数据,Sector都可以轻松获得。也就是说,扇区可能不需要所有的Group数据,这就是“untaggedData”属性的用途。该属性可以包含对该扇区应该取消标记的任何数据的引用。拥有该部门的集团甚至可能没有这些数据,但如果确实如此,那么它将是“未标记的”。我不完全确定这是否是你想要的,所以必要时要澄清。
每个部门都可以与其集团内的一个或多个部门相关联。
使用此模型,您应该能够轻松确定哪些扇区属于特定组。你也可以给Sector一个与他们自己的“很多”关系,看起来像这样:
<强>更新强>
根据你的评论:
但是“untaggedData”
的属性类型应该是什么
这取决于。它可以是一个简单的NSString,其中包含逗号分隔的数据属性集合,例如名称(例如,@“数据名称1,数据名称2,...”,假设数据具有不更改的名称属性)。也就是说,如果您在Data中引用的属性可能会发生变化,那么这不是一条很好的路径,您可能需要尝试不同的数据模型。
解决方案可能是删除“untaggedData”属性并使用另一个名为SectorData的实体。该实体与Sector有“一对一”的关系,与Data有“to many”关系。它还应与Sector中的新sectorData关系和Data中的sectorData具有反比关系。可能有一种方法可以压缩所有这些,但请按原样尝试,让我知道你的情况。祝你好运!