CoreData 关系与属性
Posted
技术标签:
【中文标题】CoreData 关系与属性【英文标题】:CoreData relationships vs. attributes 【发布时间】:2014-07-22 00:46:09 【问题描述】:在我使用 CoreData 的应用程序中,我会创建两个相互关联的实体;假设List
和Item
每个List
将有很多Item
s。现在我想知道哪个更好,在Item
实体中使用关系、一对多或父属性。例如,如果我将使用关系,我会将每个 Item
与其父 List
相关联。另一方面,如果我使用属性,我会将List
的 ID 保存在属性中。
使用关系或属性哪种方法更好,每种方法的优缺点是什么?
【问题讨论】:
【参考方案1】:你应该使用关系。这会产生可扩展、可用且性能良好的代码。
父实体的概念实际上是完全不同的。它适用于共享相同基本属性并且可能仅与其他属性略有不同的实体。例如,Animal
可以是父实体,Bird
、Mammal
可以是子实体。他们会有共同的领域,但也可能有一些不同的领域。
父实体的最大缺点是所有子实体都将存储在同一个 SQLite 表中,这最终会影响性能。
【讨论】:
即使使用关系,子实体也不会默认存储在同一个 SQLite 表中吗?我的意思是,如果我将创建多个子实体,它们将分别位于不同的表中(即每个实体的表包含其所有数据),并且每个都通过关系连接到其父实体。在这种情况下,我是使用关系还是存储 ID 的属性都没有关系。如果我错了,请纠正我。 是的,错了。您将父实体和子实体与由关系链接的普通实体混淆了。 (这些可以形成分层的、“类似父子”的结构。)也许你还混淆了数据库(本质上是一个文件)和表(这个文件中的结构元素)。以上是关于CoreData 关系与属性的主要内容,如果未能解决你的问题,请参考以下文章