我不确定我在这里使用的术语是否正确,但假设我的模型中有四个实体:Person
、Place
、标签
和照片
。其他三个实体中的任何一个都可以有与其相关的 Photo
。有时,人
会拍摄照片并将其附加到标签
、地点
,甚至是另一个人
。在 CoreData 中处理多态关联的最佳方法是什么?
最佳答案
对于像这样简单的事情,我不建议使用实体继承。对于此设计,您有三种关系,Person
、Place
和 Tag
都与 Photo 有关系。
Photo`具有三个反向关系。它不需要比这更复杂。
实体继承是一个非常微妙的工具,很容易给你带来很多问题。任何从另一个继承的实体都将被展平到一个表中。如果按照@morningstar 的建议,您创建了一个 Noun
实体并让 Person
、Place
和 Tag
继承自它,您在 SQLite 文件中将有 ONE 表,其索引指向自身和其他脏东西。
什么时候使用实体继承?
这是一个很难用简单的规则来回答的问题。但是,我会说基准是确保生成的表格至少有 70% 的填充率。例如,如果您有一个包含 6 个属性的摘要和两个包含 2 个属性的子项,那么填充率可能约为 80%,可能没问题。
一般来说,我不使用实体继承,因为它没有什么好处,而且对性能有很大的风险。旧规则有效,除非您知道您需要使用它,否则不要使用它。
关于iphone - 核心数据 : Dealing with polymorphic associations?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7892661/