Dataverseのリレーションシップの設定には、関連付け操作(カスケード)という設定があります。
これは親テーブルのレコードを削除や共有などの操作を、リレーション先の子テーブルのレコードにどのように引き継ぐのかを設定する項目です。
まとめ
まとめてみましたが、名前から実際の操作がイメージできないので何を指しているのかよくわからなかったです。キラキラネームみたいですね。
以降の章で設定項目と実際の動作を説明します。
それぞれの動作に設定できる項目の違い
親子・参照・カスタムの違いを説明する前に、設定できる操作の種類には何があるか、それぞれの操作に設定できる項目には何があるかを説明します。
設定できる操作の種類
設定できる操作は、削除、割り当て、共有、共有の解除、親の関連付けの再設定の5つです。
親レコードに対してPower Appsなどから操作した際に、その操作ごとに後述する設定項目で子レコードに対するに動作を制御できます。
削除に設定できる項目
削除に設定できるのは、すべてにカスケード、リンクの削除、制限の3つです。
- すべてにカスケード:親レコードを削除すると子レコードも削除される
- リンクの削除:親レコードが削除されても、子レコードは削除されない
- 制限:子レコードが存在する場合、親レコードを削除できない
その他の操作に設定できる項目
その他の操作に設定できるのは、すべてにカスケード、アクティブにカスケード、ユーザー所有にカスケード、カスケードなしの4つです。
ここで「伝播」とは、「親レコードの操作が、子レコードに対しても行われる」ことを指します。
- すべてにカスケード:全ての操作が伝播する
- アクティブにカスケード:子レコードがアクティブな場合にのみ伝播し、非アクティブな場合には伝播しない
- ユーザー所有にカスケード:子レコードの所有者が親レコードと同じ場合にのみ伝播し、異なる場合には伝播しない
- カスケードなし:全て伝播しない
カスケード設定の使い分けシナリオ
設定できる操作のうち削除は最も重要な操作なので、初めのうちは親子・参照(リンクの削除・制限)のみ違いを理解していればいいと思います。
親子(上位下位)
注文(親)テーブルと注文詳細(子)テーブルのように、一つの注文に対して複数の注文詳細がある場合に使用します。親テーブルの情報を子テーブルでテーブルで補完しているような場合ですね。
親レコードである注文を削除すると、子レコードに設定している注文詳細も一緒に削除されます。
注文詳細は注文に依存しており、注文が削除されたらそれに関連する詳細も不要になるため、親子を設定するのが適しています。
参照(リンクの削除)
注文テーブル(親)と商品テーブル(子)テーブルのように、子テーブル側がマスターのような役割の場合などに使用します。それぞれのテーブルが独立している場合ですね。
N:Nのリレーションを組んでいると参照(リンクの削除)を選択することが多いと思います。
参照(制限)
顧客テーブル(親)と注文テーブル(子)テーブルのように、親レコードを削除できないようにすることでデータの整合性を保ちたい場合に使用します。
または人とその人に紐づくタスクのように、トラッキングが必要な子テーブルに対して参照(制限)を使用します。
コメント