我正在将 MySQL 数据库移植到 Mac OS 应用程序的 Core Data。我的数据库中有两个多对多表。除了包含外键之外,还有一些数据列。是否可以向 Core Data 中的多对多关系添加属性?在我看来不像。我的后备方案是在 Core Data 中复制链接表。这样做有什么问题吗?
一个例子: 一张唱片有一位或多位艺术家在上面表演。 一位艺术家在零个或多个记录上表演。 链接表行包含记录的外键、艺术家的外键、演奏者演奏的乐器,以及添加附加信息的注释列,例如艺术家演奏的轨道。
最佳答案
你是对的:关系本身不能有属性。您在将链接表建模为中间实体方面走在正确的轨道上。 CoreData Programming Guide 中提到了这种方法关于“基于语义建模关系”的部分。在他们的案例中,他们使用具有 ranking 的中间
属性。FriendsInfo
实体对从 Person
到 Person
的(自反)多对多关系建模
在您的示例中,您可能有一个 Record
实体、一个 Artist
实体和一个中间 Appearance
实体。 Appearance
实体将具有 Instruments 和 Notes 的属性,以及与 Record
和 Artist
的(一对一)关系(每个都有一对多逆)。
轻微的缺点是您必须创建 Appearance
对象才能链接 Record
对象和 Artist
对象,而不是只需将它们添加到相关关系中即可。您还必须注意 Record
/Artist
组合的唯一性,如果这对您很重要:默认情况下可能有很多 Appearances
对于相同的 Record
和 Artist
。
关于mysql - 核心数据关系可以有属性吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41499924/