web-dev-qa-db-ja.com

1対多のコアデータ削除ルールについて

コアデータリレーションシップの削除ルールについて少しあいまいです。だから、もし誰かが彼らについてのいくつかの質問に答えてくれるなら。

エンティティAとBがあります。AはBと対多関係にあり、BはAと1対1関係にあります。

A <--- >> B

ここで、Aで削除ルールをカスケードに設定すると、それに関連するすべてのBが削除されることを理解しています。しかし、Nullifyに設定した場合、BsはNILに設定されますか、または外部キーはNilに設定されますか?

そして、私はBからAへの関係についてどこでも見ましたが、それをNullifyに設定する必要がありますか?それは単にAの「Bオブジェクト」を無効にしますか?または、Aに関連付けられているすべてのBを無効にしますか?カスケードはどうですか? Aに関連付けられているすべてのBを削除しますか、それとも特定のBのみを削除しますか?

または、BからAへのリレーションで「アクションなし」を使用して、Bを削除してもAに変更が発生しないようにしますが、Bへの参照は存在しませんか?

私はこれらと混同されているので、私の質問を許します。

ありがとう。

46
Shamy

削除ルールを「nullify」に設定し、Aオブジェクトを削除すると、B内のそのオブジェクトへの参照が削除されます。逆も同様に機能します。カスケードしてBを削除すると、Bが指しているAが削除されます。その後、Aから残りのBへの削除規則に従います(カスケードまたは無効化のいずれか)。

設定するルールは、実際にはデータモデルによって異なります。 Aが顧客で、Bが注文である場合、A-> Bルールを拒否(顧客が注文を持っている場合にAが削除されないようにする)またはカスケード(顧客が削除されたときに注文を削除する)に設定できます。 B-> Aルールはおそらく「無効にする」でしょう。注文が削除された場合、顧客から注文への参照を削除するだけです。

関係削除ルールについては、 Apple Core Data Programming Guide で説明されています

63
Paulw11