核心数据关系是否具有属性

时间:2017-01-06 06:07:35

标签: mysql macos core-data swift3

我正在为Mac OS应用程序将MySQL数据库移植到Core Data。我的数据库中有两个多对多的表。除了包含外键之外,还有一些数据列。是否可以在Core Data中为多对多关系添加属性?它看起来不像我。我的后备是复制Core Data中的链接表。这样做有什么问题吗?

一个例子: 一张唱片上有一位或多位艺人表演。 艺术家在零个或多个记录上执行。 链接表行包含记录的外键,艺术家的外键,播放器执行的乐器,以及添加跟踪艺术家所执行的附加信息的注释列。

1 个答案:

答案 0 :(得分:1)

你是对的:关系本身不能有属性。并且您在将链接表建模为中间实体方面处于正确的轨道上。在CoreData Programming Guide部分中提到了这种方法"基于其语义建立关系"。在他们的情况下,他们使用具有Person属性的中间Person实体来模拟从FriendsInforanking的(自反)多人关系。

在您的示例中,您可能拥有Record实体,Artist实体和中间Appearance实体。 Appearance实体将具有工具和注释的属性,以及与RecordArtist(每个具有多对数反转)的(一对)关系。

稍微缺点是您必须创建Appearance对象才能链接Record对象和Artist对象,而不是仅将它们添加到相关关系中。您还必须注意Record / Artist组合的唯一性,如果这对您很重要:默认情况下,同一Appearances可能会有Record Artist 1}}和{{1}}。