Es gibt mindestens ein Szenario, in dem ein guter Fall für eine Kerndatenbeziehung ohne Umkehrung gemacht werden kann: Wenn bereits eine andere Kerndatenbeziehung zwischen den beiden Objekten besteht, wird das Objektdiagramm beibehalten.
Beispielsweise enthält ein Buch viele Seiten, während sich eine Seite in einem Buch befindet. Dies ist eine wechselseitige Viele-zu-Eins-Beziehung. Durch das Löschen einer Seite wird nur die Beziehung ungültig, während durch das Löschen eines Buches auch die Seite gelöscht wird.
Möglicherweise möchten Sie jedoch auch die aktuell gelesene Seite für jedes Buch verfolgen. Dies könnte mit einer „current“ erfolgen Eigenschaft auf Seite , aber dann müssen Sie eine andere Logik , um sicherzustellen , dass nur eine Seite im Buch wie die aktuelle Seite jederzeit markiert. Wenn Sie stattdessen eine currentPage- Beziehung von Book zu einer einzelnen Seite herstellen, wird sichergestellt, dass immer nur eine aktuelle Seite markiert ist. Außerdem kann mit einfach book.currentPage problemlos auf diese Seite mit einem Verweis auf das Buch zugegriffen werden.
Wie wäre die wechselseitige Beziehung in diesem Fall? Etwas weitgehend Unsinniges. "myBook" oder ähnliches könnte wieder in die andere Richtung hinzugefügt werden, enthält jedoch nur die Informationen, die bereits in der "Buch" -Beziehung für die Seite enthalten sind, und schafft so eigene Risiken. Möglicherweise wird in Zukunft die Art und Weise, wie Sie eine dieser Beziehungen verwenden, geändert, was zu Änderungen in Ihrer Kerndatenkonfiguration führt. Wenn page.myBook an einigen Stellen verwendet wurde, an denen page.book im Code hätte verwendet werden sollen, können Probleme auftreten. Eine andere Möglichkeit, dies proaktiv zu vermeiden, besteht darin, myBook nicht in der NSManagedObject-Unterklasse verfügbar zu machen, die für den Zugriff auf die Seite verwendet wird. Es kann jedoch argumentiert werden, dass es einfacher ist, das Inverse überhaupt nicht zu modellieren.
In dem beschriebenen Beispiel sollte die Löschregel für die currentPage-Beziehung auf "No Action" oder "Cascade" gesetzt werden, da keine wechselseitige Beziehung zu "Nullify" besteht. (Cascade impliziert, dass Sie beim Lesen jede Seite aus dem Buch herausreißen. Dies kann jedoch der Fall sein, wenn Sie besonders kalt sind und Kraftstoff benötigen.)
Wenn gezeigt werden kann, dass die Integrität von Objektgraphen nicht gefährdet ist, wie in diesem Beispiel, und die Komplexität und Wartbarkeit des Codes verbessert wird, kann argumentiert werden, dass eine Beziehung ohne Inverse die richtige Entscheidung sein kann.