CoreData:如何建模循环多对多关系

Posted

技术标签:

【中文标题】CoreData:如何建模循环多对多关系【英文标题】:CoreData: How to model circular many-to-many relationships 【发布时间】:2011-10-25 04:30:48 【问题描述】:

一直在尝试了解如何在 Xcode 4.2 中为循环核心数据多对多关系建模。在 SQL 中,我将使用映射表并自定义我的 SQL 表达式以提供正确的数据,但在核心数据中,我似乎无法理解如何让他正常工作。 我有 3 个相互关联的实体:

部门 角色 人

我的链接是:

部门可以有多个角色 部门可以有多个人员 一个角色可以出现在多个部门 一个角色可以有很多人分配给它 一个人可以属于多个部门 一个人可以担任多个角色

使用 Core 数据进行建模的最佳方法是什么?哪些实体以及它们之间的哪些关系最合适?您会使用这 3 个之间的映射表,还是只分配正确的关系?

任何帮助将不胜感激,因为我似乎无法弄清楚这一点......

编辑: 非常感谢您的快速反馈。 不幸的是,我无法上传我的数据模型,因为我是这个网站的新手,并且不允许发布任何图片。

要读取数据,我目前只使用这样的谓词:

predicate = [NSPredicate predicateWithFormat:@"personPartOfRoles == %@", myRole];

我似乎无法弄清楚如何维护此对象图以从角色中添加或删除人员。我假设我需要将整个图形加载到内存中,并以某种方式只找到要映射的正确实体。

【问题讨论】:

【参考方案1】:

只需在您的实体中分配正确的关系。

如果您打算使用 Core Data,请务必忽略您存储在 SQLite 中的事实。存储只是您可以忘记的幕后实现细节(因为 coredata 能够存储在 XML 或内存中)。

【讨论】:

感谢您非常快速的 cmets。我更新了我上面的帖子。当我有一个多对多的关系时,我仍然不确定如何为这些关系建模。 Apple 的核心数据指南中有一个部分专门讨论了多对多关系,并且实际上讨论了像实体这样的连接表可能适用的情况。如果你还没有读过,我强烈推荐它。【参考方案2】:

部门>角色(部门的角色) 部门 > 人(部门对人) 角色 > 人(角色对人)

让每个关系都有一个逆向。

请记住,Core Data 是一个可以保存到数据库的对象图。将其视为对象图。

【讨论】:

以上是关于CoreData:如何建模循环多对多关系的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中将 NSManagedObject 添加到 CoreData 多对多关系时防止循环

CoreData 多对多关系

核心数据:与状态的多对多关系

CoreData 多对多关系插入和删除操作

如何建模多对多关系?

实体框架中的多对多关系导致无限循环