核心数据属性关系?

我刚刚开始使用Core Data。

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

当你头痛时,你可以select多种药物。 我希望能够指定这些药物的数量。 我更熟悉MySQL,在那里你将创build一个数据透视表,并将数量和headache_id以及medication_id一起包括在数据透视表中,这样每个实例都可以有一个数量。

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

这是我的Xcode数据模型 。

核心数据可以模拟多对多的关系 。 核心数据自动在(SQLLite)持久性存储中为您创build一个中间连接表。

你不能做的是将任何属性添加到该中间连接表中,因为它不是对象图数据模型的一部分。

为了表示数量,您可以在对象图中添加一个Dose实体来模拟头痛,数量和药物之间的多重关系。 这将代表您正在考虑的关键点,剂量将以与Core Data创build的中间连接表相同的方式运行。

在这里输入图像说明 缺点是Headache实体中不再存在药物关系,或Medication实体中存在头痛关系。

如果你真的想要保持这种双实体多对多的关系,你可以给药物添加剂量属性,但是它会改变提取的性质。 也就是说,您将不得不提取所有剂量的特定药物,以了解该药物治疗哪些头痛。

您应该考虑您要执行的具体提取操作,以及您如何计划遍历对象图,然后将这些要求分解到模型的devise中。