CoreData:处理多态关联?

joh*_*ohn 0 iphone database-design core-data objective-c ios

我不知道如果我在这里使用正确的说法,但让我们说我有四个实体在我的模型:Person,Place,Tag,和Photo.其他三个实体中的任何一个都可以Photo与之相关.有时一个人Person会拍摄照片,并将其附加到一个Tag,或一个Place,甚至另一个Person.在CoreData中处理多态关联的最佳方法是什么?

Mar*_*rra 7

我不推荐像这样简单的实体继承.对于这个设计,你有三个关系,每一个Person,PlaceTag有一个关系Photo.Photo`有三个逆关系.它不需要比这更复杂.

实体继承是一个非常精细的工具,很容易导致很多问题.从另一个继承的任何实体将被展平为一个表.如果像@morningstar建议您创建一个Noun实体,并Person,PlaceTag从它继承,你将有ONE与指标指向其自身和其他污秽SQLite的文件表.

何时使用实体继承?

用一个简单的规则回答这是一个相当难的问题.但是,我会说基线是确保结果表至少有70%的填充.例如,如果您有一个具有6个属性的抽象和两个具有2个属性的子项,那么这可能是大约80%的填充率并且可能正常.

一般来说,我不使用实体继承,因为它几乎没有任何好处并且对性能有很大的风险.旧规则有效,除非您知道需要使用它,否则不要使用它.