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