0

将 CoreData 对象与关系数据库完全一样建模是最佳实践吗?我知道 CoreData 不是关系数据库。

那么我会有以下对象(我知道我不应该在关系中有 id 字段):

Business 
Building (Business has many locations; relationship)
Location (building has a location relationship)
Coord (Locations has a lat/long coord)
Worker (work has relationship to business and to location)

这很崩溃吗?只拥有一个工人并且具有工作地址属性和业务属性会更好吗?建筑物是否应该只有地址、城市、州、邮政编码字段而不是与位置的关系?

4

1 回答 1

1

这里的一个指导原则应该是故障意味着没有内存使用。这通常是非常可取的(事实上,这是您首先使用 Core Data 的主要原因之一)。具有位置关系的建筑物意味着我们不必仅仅为了加载建筑物而加载位置信息;相反,我们会出错,仅在实际需要时才获取位置信息。

但相反的考虑也适用。你应该抵制过度标准化你的模型的诱惑。这不是 SQL 数据库。关系意味着我们无法在没有单独的加载阶段的情况下获取数据。这需要开销和时间。因此,如果您有在访问对象时想要访问的单个事实,它们应该对象中,以便与它们一起加载。

在你的情况下,我会说你过度规范化了。除非你打算用坐标做一些非常有趣的事情,例如,我不明白为什么坐标不应该是位置的一部分。除非您打算将某些位置作为单独的对象进行操作,否则我不明白为什么建筑物不仅有地址。

于 2012-12-18T19:44:31.820 回答