【问题标题】:Can a Core Data Relationship Have Attributes核心数据关系可以有属性吗
【发布时间】:2017-01-06 06:07:35
【问题描述】:

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

一个例子: 一张唱片有一个或多个艺术家在上面表演。 艺术家在零个或多个唱片上表演。 链接表行包含记录的外键、艺术家的外键、演奏者使用的乐器,以及添加附加信息的注释列,例如艺术家在哪个轨道上演奏。

【问题讨论】:

    标签: mysql macos core-data swift3


    【解决方案1】:

    你是对的:关系本身不能有属性。在将链接表建模为中间实体方面,您走在了正确的轨道上。在“基于语义建模关系”的CoreData Programming Guide 部分中提到了这种方法。在他们的案例中,他们使用具有ranking 属性的中间FriendsInfo 实体对从PersonPerson 的(自反)多对多关系进行建模。

    在您的示例中,您可能有一个Record 实体、一个Artist 实体和一个中间Appearance 实体。 Appearance 实体将具有 Instruments 和 Notes 的属性,以及与 RecordArtist 的(一对一)关系(每个都有一对多的逆)。

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

    【讨论】:

      猜你喜欢
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 2013-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      • 2012-05-26
      相关资源
      最近更新 更多