何时不使用核心数据关系

Posted

技术标签:

【中文标题】何时不使用核心数据关系【英文标题】:When not to use a Core Data relationship 【发布时间】:2015-11-17 13:08:16 【问题描述】:

我正在重新设计原型,但遇到了障碍。使用关系让生活变得轻松 - 但在这种情况下我应该使用它吗?

我倾向于不使用它。这是我的问题的简化版本。

访问(许多)(一个)客户

每次访问只能有一个客户,一个客户可以有很多次访问。

(另一个例子是客户>发票关系)

假设我的客户更改了地址,当我查看我的访问实体和关联客户时 - 我将始终拥有最新的详细信息。

如果我没有关系,而只是访问对象中的 clientName 之类的变量 - 那么您将不得不手动检查并更新每个对象。

问题:

如果我使用对象之间的关系

问题是删除 - 如果我想将我的访问对象与有效的客户端对象一起保留,那么我不能允许客户端删除。但是您当然应该能够删除客户端 - 所以我将在应用程序中包含该功能。但如果我确实删除了客户 - 我的有效客户信息与访问相关联。

因此,即使最初建立关系似乎是最好的选择 - 您确实应该在访问对象中拥有相关信息...从而避免关系?

感谢您的建议。

【问题讨论】:

这实际上是一项业务决策,而不是技术决策。如果您知道删除客户端应如何影响其他数据的规则是什么,那么关系就没有理由阻止它被实施。 【参考方案1】:

您可以使用布尔标志 archived。因此,您可以将archived 设置为YES,而不是删除Client 实体。

【讨论】:

以上是关于何时不使用核心数据关系的主要内容,如果未能解决你的问题,请参考以下文章

核心数据轻量级迁移 - 何时版本?

获取对象是不是也获取核心数据中的关系对象

如何控制 iCloud 何时同步我的核心数据?

最佳核心数据保存策略(何时将数据保存到磁盘)

核心数据:何时何地首先加载实体?

确定核心数据模型何时有新版本