关系上的核心数据属性?

时间:2016-01-30 02:22:16

标签: ios core-data ios9

我刚刚开始使用Core Data。

我有一个Headache实体和一个Medication实体。头痛与药物之间存在多种关系。

当您添加头痛时,您可以选择多种药物。我希望能够指定这些药物的数量。我更熟悉MySQL,您可以在其中创建数据透视表,并在数据透视表中包含数量以及headache_id和drug_id,以便每个实例都有一个数量。

有没有办法在Core Data中创建这种关系?

This is my Xcode data model

1 个答案:

答案 0 :(得分:4)

A many-to-many relationship可以在核心数据中建模。 Core Data会在(SQLLite)持久性存储中自动为您创建一个中间连接表。

您可以做的是向该中间连接表添加任何属性,因为它不是对象图数据模型的一部分。

要表示数量,您可以将Dose实体添加到对象图中,以模拟头痛,数量和药物之间的多对多关系。这将代表您正在考虑的支点,剂量的运行方式与核心数据可能创建的中间联接表相同。

enter image description here 缺点是Headache实体中的药物关系不再存在,或Medication实体中的头痛关系不再存在。

如果你真的想保持这种双实体的多对多关系,你可以为药物添加剂量属性,但这会改变你的提取的性质。即,你必须取出所有剂量的特定药物,以找出用这种药物治疗的头痛。

您应该考虑您正在执行的具体提取,以及您计划如何遍历对象图,然后将这些要求纳入模型设计中。