2016-01-30 8 views
1

Я только начинаю с Core Data.Атрибут Core Data для отношений?

У меня есть объект Headache и объект Medication. Существует много разных взаимоотношений между головными болями и лекарствами.

Когда вы добавляете головную боль, вы можете выбрать несколько лекарств. Я хочу иметь возможность указать количество этих лекарств. Я больше знаком с MySQL, где вы создадите сводную таблицу и включаете количество в сводную таблицу вместе с headache_id и medication_id, чтобы каждый экземпляр мог иметь количество.

Есть ли способ создать такие отношения в данных Core?

This is my Xcode data model.

ответ

3

A many-to-many relationship может быть смоделирован в базовых данных. Core Data автоматически создает промежуточную таблицу соединений в хранилище (SQLLite).

То, что вы не можете сделать, это добавить какие-либо атрибуты в эту промежуточную таблицу соединений, поскольку она не является частью модели данных графа объектов.

Чтобы представить количество, вы можете добавить объект-объект к графику объекта, чтобы смоделировать взаимосвязь между несколькими головками, количеством и лекарствами. Это будет точкой поворота, о которой вы думаете, и доза будет работать так же, как и промежуточная таблица соединений, которую создала бы Core Data.

enter image description here Недостатком является то, что больше нет отношения лекарства в Headache лица, или головные боли отношения в Medication сущности.

Если вы действительно хотите поддерживать отношения двух-сущностей «многие-ко-многим», вы можете добавить атрибут дозы к лекарству, но это изменит характер ваших выборок. I.e., вам нужно будет принести все дозы конкретного лекарства, чтобы выяснить, какие головные боли лечились этим лекарством.

Вы должны учитывать конкретные выборки, которые вы выполняете, и как вы планируете пересекать граф объектов, а затем учитывать эти требования в дизайне модели.

Смежные вопросы