最好的做法是像对待关系数据库一样对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)
这是不是很麻烦?拥有一个工人并且具有工作地址属性和业务属性会更好吗?建筑物应该只有地址,城市,州,邮政编码而不是与位置的关系吗?
答案 0 :(得分:1)
这里的一个指导原则应该是错误意味着没有内存使用。这通常是非常理想的(事实上,这是您首先使用Core Data的主要原因之一)。具有位置关系的建筑物意味着我们不必仅仅为了加载建筑物而加载位置信息;相反,我们是错误的,只有在实际需要时才获取位置信息。
但相反的考虑也适用。你应该抵制过度规范你的模型的诱惑。这不是SQL数据库。关系意味着我们无法在没有单独加载阶段的情况下获取数据。这需要开销和时间。因此,如果您在访问对象时想要访问单个事实,那么它们应该在对象中,以便它们加载它们。
在你的情况下,我会说你过于正常化了。除非你打算用坐标做一些非常有趣的事情,例如,我不明白为什么坐标不应该是一个位置的一部分。除非你打算把某个地方作为单独的物品,否则我不明白为什么建筑物不只是一个地址。