Существует, по крайней мере, один сценарий, в котором можно найти хороший пример для отношения основных данных без обратного: когда уже есть другое отношение основных данных между двумя объектами, которое будет обрабатывать ведение графа объектов.
Например, книга содержит много страниц, в то время как страница находится в одной книге. Это двусторонние отношения многие-к-одному. Удаление страницы просто сводит на нет отношения, тогда как удаление книги также удаляет страницу.
Однако вы можете также отслеживать текущую страницу, читаемую для каждой книги. Это можно сделать с помощью свойства «currentPage» на Page , но тогда вам понадобится другая логика, чтобы гарантировать, что только одна страница в книге будет помечена как текущая в любое время. Вместо этого создание отношения currentPage из Book на одной странице гарантирует, что всегда будет отмечена только одна текущая страница, и, кроме того, к этой странице можно легко получить доступ со ссылкой на книгу с просто book. CurrentPage.
Какими будут взаимные отношения в этом случае? Что-то в значительной степени бессмысленное. «myBook» или подобное может быть добавлено обратно в другом направлении, но оно содержит только информацию, уже содержащуюся в отношении «book» для страницы, и, таким образом, создает свои собственные риски. Возможно, в будущем способ использования одного из этих отношений изменится, что приведет к изменениям в конфигурации ваших основных данных. Если page.myBook использовался в некоторых местах, где page.book должен был использоваться в коде, могут возникнуть проблемы. Другим способом предотвращения этого также было бы не показывать myBook в подклассе NSManagedObject, который используется для доступа к странице. Однако можно утверждать, что проще не моделировать обратное в первую очередь.
В приведенном примере правило удаления для отношения currentPage должно быть установлено на «No Action» или «Cascade», так как нет обратной связи для «Nullify». (Каскад подразумевает, что вы вырываете каждую страницу из книги, когда читаете ее, но это может быть правдой, если вам особенно холодно и вам нужно топливо.)
Когда можно продемонстрировать, что целостность графов объектов не подвергается риску, как в этом примере, а сложность и удобство сопровождения кода улучшены, можно утверждать, что правильное решение может быть без обратного.