Core data 核心数据:始终具有反向关系。为什么?

Core data 核心数据:始终具有反向关系。为什么?,core-data,relationship,Core Data,Relationship,我知道苹果和共识都认为,在核心数据中,每一种关系都应该有一个相反的结果。这不是一个问是否确实如此的问题。我相信苹果和专家们。我只想理解其中的道理。不幸的是,往往没有给出理由 有时,建立反向关系是不切实际的。有时候,我想放弃它们。但我想知道权衡是什么(而不是不祥的“不要那样做,这很危险”) 因此,我问为什么不放弃核心数据中的反向关系?通常的答案是“需要它们来帮助维护数据完整性”。这里有一个具体的例子 假设您有一个部门实体和一个员工实体部门与员工之间存在对多关系,但没有对应的反向关系。有点做作,因为

我知道苹果和共识都认为,在核心数据中,每一种关系都应该有一个相反的结果。这不是一个问是否确实如此的问题。我相信苹果和专家们。我只想理解其中的道理。不幸的是,往往没有给出理由

有时,建立反向关系是不切实际的。有时候,我想放弃它们。但我想知道权衡是什么(而不是不祥的“不要那样做,这很危险”)


因此,我问为什么不放弃核心数据中的反向关系?

通常的答案是“需要它们来帮助维护数据完整性”。这里有一个具体的例子

假设您有一个
部门
实体和一个
员工
实体<代码>部门与员工之间存在对多关系,但没有对应的反向关系。有点做作,因为可能有很好的理由想轻松查找员工的部门,但我想要一个简单的例子

现在,假设我有一个名为“Department X”的特定部门实例,它用于该公司的所有间谍。X部门有7名员工。但是,灾难!004探员被一家敌对公司杀害。因此,您的应用程序将删除代理004的
员工
实例

现在,Department X的
Department
实例有多少员工

如果你对你所做的事情不小心,它仍然有七名员工。但其中一个没有任何数据。为什么?因为没有人告诉
部门
实例它的一名员工已经离开了,所以它认为没有任何变化。六名普通员工,我猜,一名不死僵尸员工

为了保持整洁,您还需要获取Department X的
Department
实例,并从其员工列表中删除代理004的条目

如果
员工
部门
之间存在反向关系,并且您使用了合理的删除规则,那么这将自动发生。当您删除代理004的实例时,X部门的员工列表将立即只显示六名员工


如果没有相反的关系,要做到这一点并非不可能,但如果你有一个相反的关系,核心数据将关注某些有助于保持对象图完整性的细节。

通常的答案是“需要它们来帮助保持数据完整性”。这里有一个具体的例子

假设您有一个
部门
实体和一个
员工
实体<代码>部门与员工之间存在对多关系,但没有对应的反向关系。有点做作,因为可能有很好的理由想轻松查找员工的部门,但我想要一个简单的例子

现在,假设我有一个名为“Department X”的特定部门实例,它用于该公司的所有间谍。X部门有7名员工。但是,灾难!004探员被一家敌对公司杀害。因此,您的应用程序将删除代理004的
员工
实例

现在,Department X的
Department
实例有多少员工

如果你对你所做的事情不小心,它仍然有七名员工。但其中一个没有任何数据。为什么?因为没有人告诉
部门
实例它的一名员工已经离开了,所以它认为没有任何变化。六名普通员工,我猜,一名不死僵尸员工

为了保持整洁,您还需要获取Department X的
Department
实例,并从其员工列表中删除代理004的条目

如果
员工
部门
之间存在反向关系,并且您使用了合理的删除规则,那么这将自动发生。当您删除代理004的实例时,X部门的员工列表将立即只显示六名员工


如果没有反向关系,就不可能做到这一点,但如果您确实有反向关系,核心数据将关注某些有助于保持对象图完整性的细节。

非常感谢您的回答,Tom!因此,基本上可以归结为“如果没有反向关系,就必须像不使用核心数据一样维护引用完整性”?我想在特殊情况下我可以接受。我完全同意你的看法+汤姆,非常感谢你的回答!因此,基本上可以归结为“如果没有反向关系,就必须像不使用核心数据一样维护引用完整性”?我想在特殊情况下我可以接受。我完全同意你的看法+1.