我以前处理过的唯一数据库是MySQL,所以CoreData的数据库设计有点让我感到困惑。
简单地说,这个设计是由许多人和企业之间的关系组成的.很多人可以拥有一家公司。一个人可以拥有许多企业。
在这个简化的设计中,有三个表:
PERSON BUSINESS OWNED BUSINESS
------ -------- --------------
id id personID
name name businessID
email website acquisitionDateOwnedBusiness表是一个让我困惑的表。在MySQL中,此表用于支持多到多关系。我知道CoreData不需要这个,但是我在OwnedBusiness中有一个额外的字段:acquisitionDate。
额外的字段、acquisitionDate是否保证使用额外的实体/表?如果没有,那块地会往哪里去呢?
发布于 2015-05-05 14:50:18
因此,首先,CoreData不是一个关系db,只是为了清除这个问题。
其次,我认为您应该快速查看CoreData文档,因为您熟悉MySql,因此阅读起来很容易,我认为您会对CoreData提供的额外特性感到惊讶。
关于many-to-many关系,CoreData支持这种关系,而不需要额外的表。而且这种关系不是基于id的,而是直接基于对象的。
因此,在您的情况下,您不必使用person id & business id来创建关系,您可以在xcdatamodel的Relationship部分中创建关系,您可以在那里设置关系类(或目的地),这与这种关系(有用的东西)相反,当然还可以设置关系的类型(对--很多)。
因此,要回答您的问题,可以根据业务逻辑将其添加到那里。作为一个简短的建议,请不要像在一个普通的MySql实例上那样试图使数据库正常化,你会因为标准化而失去很多性能,这件事经常被devs忽略。
https://stackoverflow.com/questions/30055951
复制相似问题