Esiste almeno uno scenario in cui è possibile fare un buon caso per una relazione di dati di base senza un inverso: quando esiste già un'altra relazione di dati di base tra i due oggetti, che gestirà il mantenimento del grafico degli oggetti.
Ad esempio, un libro contiene molte pagine, mentre una pagina è in un libro. Questa è una relazione bidirezionale bidirezionale. L'eliminazione di una pagina annulla solo la relazione, mentre l'eliminazione di un libro eliminerà anche la pagina.
Tuttavia, potresti anche voler tenere traccia della pagina corrente da leggere per ogni libro. Questo potrebbe essere fatto con una proprietà "currentPage" nella pagina , ma è quindi necessaria altra logica per garantire che solo una pagina del libro sia contrassegnata come pagina corrente in qualsiasi momento. Invece, stabilire una relazione currentPage da Book a una singola pagina assicurerà che ci sia sempre solo una pagina corrente contrassegnata, e inoltre a questa pagina sarà possibile accedere facilmente con un riferimento al libro con semplicemente book.currentPage.
Quale sarebbe la relazione reciproca in questo caso? Qualcosa in gran parte senza senso. "myBook" o simile potrebbe essere aggiunto nuovamente nell'altra direzione, ma contiene solo le informazioni già contenute nella relazione "libro" per la pagina e quindi crea i propri rischi. Forse in futuro, il modo in cui stai usando una di queste relazioni è cambiato, con conseguenti cambiamenti nella configurazione dei tuoi dati principali. Se page.myBook è stato utilizzato in alcuni punti in cui page.book avrebbe dovuto essere utilizzato nel codice, potrebbero esserci problemi. Un altro modo per evitarlo in modo proattivo sarebbe anche quello di non esporre myBook nella sottoclasse NSManagedObject utilizzata per accedere alla pagina. Tuttavia, si può sostenere che è più semplice non modellare l'inverso in primo luogo.
Nell'esempio delineato, la regola di eliminazione per la relazione currentPage deve essere impostata su "Nessuna azione" o "Cascata", poiché non esiste alcuna relazione reciproca con "Annulla". (Cascade implica che stai strappando ogni pagina dal libro mentre lo leggi, ma ciò potrebbe essere vero se hai particolarmente freddo e hai bisogno di carburante.)
Quando si può dimostrare che l'integrità del grafico a oggetti non è a rischio, come in questo esempio, e la complessità e la manutenibilità del codice sono migliorate, si può sostenere che una relazione senza un inverso può essere la decisione corretta.