Поддержание сложных однонаправленных отношений в базовых данных - PullRequest
1 голос
/ 12 марта 2019

Я перенесу модель данных, имеющуюся в Realm, в Core Data (чтобы я мог синхронизироваться с ансамблями). Модель представляет собой граф, и в Realm я сам управляю целостностью графа с помощью правил об удалениях и т. Д. В транзакциях.

Я сделал примерный график, который призван описать суть моей проблемы.

Все объекты на моем графике - это Вещи. Вещи имеют упорядоченные отношения со многими. Тем не менее, subThings имеют несколько способов, которыми они ссылаются. Например, один тип DerivedFromThing имеет два отношения «многие ко многим» (их обратные значения будут находиться в подразделах другой вещи).

Simple Graph example

Итак, мой график имеет полный набор обратных связей, но не в моде, который, по-видимому, можно моделировать в Базовых данных.

Поскольку у меня уже есть код для управления целостностью, я рад сам позаботиться обо всех отношениях. Тем не менее, я получаю предупреждения в своей сборке, поэтому я хотел еще раз проверить, правильно ли я подхожу.

Есть ли способ смоделировать мои многие-многие отношения в Core Data? Если нет, есть ли проблемы, с которыми я столкнусь, игнорируя мои предупреждения.

Спасибо.

1 Ответ

0 голосов
/ 12 марта 2019

Я бы порекомендовал избегать однонаправленных отношений в CoreData: по моему опыту, когда вы ничего не говорите об обратном, CD неявно трактует его как «to-one», что, вероятно, не то, что вы хотите.

Хотя CD может обрабатывать множество отношений, в вашем случае, я думаю, вам может потребоваться реализовать ваши отношения, напрямую моделируя промежуточную сущность (или, возможно, две или более). Например, у вас может быть сущность с именем Association, с

  • атрибут associationType («родительский», «супер» или любой другой)
  • отношение один к одному associatedTo с сущностью Thing (с обратным ко многим)
  • отношение один к одному associatedFrom к сущности DerivedFromThing (также с обратным ко многим)

Сложно советовать дальше, так как я подозреваю, что ваша истинная модель более сложна, чем ваш пример, но вышеупомянутый подход должен обеспечить хорошую степень гибкости. См. «Моделирование отношений на основе их семантики» в Руководство по программированию основных данных для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...