我正在为Mac OS应用程序将MySQL数据库移植到Core Data。我的数据库中有两个多对多的表。除了包含外键之外,还有一些数据列。是否可以在Core Data中为多对多关系添加属性?它看起来不像我。我的后备是复制Core Data中的链接表。这样做有什么问题吗?
一个例子: 一张唱片上有一位或多位艺人表演。 艺术家在零个或多个记录上执行。 链接表行包含记录的外键,艺术家的外键,播放器执行的乐器,以及添加跟踪艺术家所执行的附加信息的注释列。
答案 0 :(得分:1)
你是对的:关系本身不能有属性。并且您在将链接表建模为中间实体方面处于正确的轨道上。在CoreData Programming Guide部分中提到了这种方法"基于其语义建立关系"。在他们的情况下,他们使用具有Person
属性的中间Person
实体来模拟从FriendsInfo
到ranking
的(自反)多人关系。
在您的示例中,您可能拥有Record
实体,Artist
实体和中间Appearance
实体。 Appearance
实体将具有工具和注释的属性,以及与Record
和Artist
(每个具有多对数反转)的(一对)关系。
稍微缺点是您必须创建Appearance
对象才能链接Record
对象和Artist
对象,而不是仅将它们添加到相关关系中。您还必须注意Record
/ Artist
组合的唯一性,如果这对您很重要:默认情况下,同一Appearances
可能会有Record
Artist
1}}和{{1}}。