2016-01-30 128 views
1

我刚刚开始使用Core Data。关系中的核心数据属性?

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

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

有什么方法可以在核心数据中创建这种关系?

This is my Xcode data model

回答

3

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

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

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

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

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

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