【发布时间】:2014-11-15 20:31:54
【问题描述】:
我在我的应用程序中使用 Core Data,并且我有许多“类别”的数据。有些更小,有些更大,我想将一些类别划分为不同的实体。
所以我想问,即使不是强制性的,使用多个实体是否有任何优点或缺点,我是否也应该为较小的“类别”数据创建一个实体?谢谢!
【问题讨论】:
标签: ios objective-c core-data swift entity
我在我的应用程序中使用 Core Data,并且我有许多“类别”的数据。有些更小,有些更大,我想将一些类别划分为不同的实体。
所以我想问,即使不是强制性的,使用多个实体是否有任何优点或缺点,我是否也应该为较小的“类别”数据创建一个实体?谢谢!
【问题讨论】:
标签: ios objective-c core-data swift entity
这是我使用的规则:
如果将数据合并到带有属性的实体本身不会导致过度重复数据,我会更喜欢添加属性而不是新实体。
这是您必须考虑的微妙权衡
如果您根据上述指导仔细考虑这些因素,我相信您可以就何时创建新实体而不是使用属性做出正确的决定。
例如,如果您有一个像Story 这样的实体,它具有像title、text、date 等属性,并且想要添加一个类别,在大多数情况下创建一个类别是有意义的与Category 实体的一对一甚至多对多关系,而不是使用字符串属性。大概会有数百个故事和几十个类别,拥有多个类别的灵活性是绝对优势。
另一方面,如果您有一个实体Story,它始终是不超过三种类型之一,即“报告”、“分析”或“意见”,您最好使用enum属性的类型,而不是与新实体的关系。
【讨论】:
我不太确定您所说的类别是什么意思,但显然实体越大,当您将实体加载到 NSManagedObjectContext 时,您的应用程序占用的内存就越多。但是,当您无论如何都要加载它们时,将实体分成两部分并没有真正意义。
就性能而言,Core Data 文档提到即使 10,000 个对象也是一个非常小的数据库。请注意 BLOB,不要将不需要的数据加载到内存中,并在可以使用 NSManagedObjectContext 的重置方法时释放数据。
【讨论】: