Dataverseリレーションシップ

【Dataverse】リレーションシップのカスケード(親子・参照・カスタム)の違い

Dataverse

Dataverseのリレーションシップの設定には、関連付け操作(カスケード)という設定があります。

これは親テーブルのレコードを削除や共有などの操作を、リレーション先の子テーブルのレコードにどのように引き継ぐのかを設定する項目です。

まとめ

まとめてみましたが、名前から実際の操作がイメージできないので何を指しているのかよくわからなかったです。キラキラネームみたいですね。

以降の章で設定項目と実際の動作を説明します。

それぞれの動作に設定できる項目の違い

親子・参照・カスタムの違いを説明する前に、設定できる操作の種類には何があるか、それぞれの操作に設定できる項目には何があるかを説明します。

設定できる操作の種類

設定できる操作は、削除、割り当て、共有、共有の解除、親の関連付けの再設定の5つです。

親レコードに対してPower Appsなどから操作した際に、その操作ごとに後述する設定項目で子レコードに対するに動作を制御できます。

削除に設定できる項目

削除に設定できるのは、すべてにカスケード、リンクの削除、制限の3つです。

  • すべてにカスケード:親レコードを削除すると子レコードも削除される
  • リンクの削除:親レコードが削除されても、子レコードは削除されない
  • 制限:子レコードが存在する場合、親レコードを削除できない

その他の操作に設定できる項目

その他の操作に設定できるのは、すべてにカスケード、アクティブにカスケード、ユーザー所有にカスケード、カスケードなしの4つです。

ここで「伝播」とは、「親レコードの操作が、子レコードに対しても行われる」ことを指します。

  • すべてにカスケード:全ての操作が伝播する
  • アクティブにカスケード:子レコードがアクティブな場合にのみ伝播し、非アクティブな場合には伝播しない
  • ユーザー所有にカスケード:子レコードの所有者が親レコードと同じ場合にのみ伝播し、異なる場合には伝播しない
  • カスケードなし:全て伝播しない

カスケード設定の使い分けシナリオ

設定できる操作のうち削除は最も重要な操作なので、初めのうちは親子・参照(リンクの削除・制限)のみ違いを理解していればいいと思います。

親子(上位下位)

注文(親)テーブルと注文詳細(子)テーブルのように、一つの注文に対して複数の注文詳細がある場合に使用します。親テーブルの情報を子テーブルでテーブルで補完しているような場合ですね。

親レコードである注文を削除すると、子レコードに設定している注文詳細も一緒に削除されます。

注文詳細は注文に依存しており、注文が削除されたらそれに関連する詳細も不要になるため、親子を設定するのが適しています。

参照(リンクの削除)

注文テーブル(親)と商品テーブル(子)テーブルのように、子テーブル側がマスターのような役割の場合などに使用します。それぞれのテーブルが独立している場合ですね。

N:Nのリレーションを組んでいると参照(リンクの削除)を選択することが多いと思います。

参照(制限)

顧客テーブル(親)と注文テーブル(子)テーブルのように、親レコードを削除できないようにすることでデータの整合性を保ちたい場合に使用します。

または人とその人に紐づくタスクのように、トラッキングが必要な子テーブルに対して参照(制限)を使用します。

コメント

タイトルとURLをコピーしました