关系的核心数据属性?

Core Data attribute on relationship?

我刚刚开始使用 Core Data。

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

添加头痛时,可选择多种药物。我希望能够指定这些药物的数量。我更熟悉 MySQL,您可以在其中创建一个枢轴 table 并将数量包含在枢轴 table 以及 headache_id 和 medication_id 中,所以每个实例都可以有一个数量。

有没有什么方法可以在 Core Data 中创建这种关系?

This is my Xcode data model.

A many-to-many relationship 可以在 Core Data 中建模。 Core Data 在 (SQLLite) 持久存储中自动为您创建一个中间连接 table。

您不能向该中间联接添加任何属性 table,因为它不是对象图数据模型的一部分。

为了表示数量,您可以将 Dose 实体添加到对象图中,以模拟头痛、数量和药物之间的多对多关系。这将代表您正在考虑的枢轴,剂量将以与核心数据创建的中间连接 table 相同的方式发挥作用。

缺点是 Headache 实体中不再有药物关系,或 Medication 实体中不再有头痛关系。

如果您真的想维持这种双实体多对多关系,您可以向药物添加剂量属性,但这会改变您的提取的性质。即,您必须获取特定药物的所有剂量才能找出该药物治疗了哪些头痛。

您应该考虑要执行的特定提取,以及您计划如何遍历对象图,然后将这些要求考虑到模型的设计中。