参照関係と主従関係の違いについて

参照関係と主従関係の違いとは?

Salesforceでオブジェクトを作っていると、「このオブジェクト、他のデータと繋げたいな…」と思う場面、ありますよね。
そんなときに使うのが 参照関係主従関係 です。

最初はちょっとややこしく感じるかもしれませんが、この2つの違いを知っておくとSalesforceのデータ設計がグッと楽になります。

参照関係:ゆるやかなつながり

参照関係(Lookup Relationship)は、オブジェクト同士を関連づけるけど、親が削除されても子は残るという、わりと自由な関係です。

たとえば、「注文」オブジェクトが「顧客」オブジェクトを参照しているとします。
顧客データを削除しても、注文データ自体は消えません。
もちろん、顧客が不明になるのであとで見直しは必要ですが、「注文」自体は生きているのです。

この関係は、データ同士の繋がりは必要だけど、依存関係はそこまで強くしたくないときに便利です。

主従関係:親子で運命共同体

一方で、主従関係(Master-Detail Relationship)は、親オブジェクトが消えると、子も一緒に削除されるという強い依存関係を持っています。

イメージとしては、「納品書(親)」と「納品明細(子)」のようなもの。
納品書を削除したら、その明細も意味をなさないので、一緒に消えるというわけです。

また、主従関係では親の所有者(オーナー)情報や共有設定が子にも引き継がれるなど、細かいルールが決まっています。
完全に親に従う子オブジェクト、という感じですね。

どちらを選べばいいの?

私は普段、「この2つ、どっちにしよう?」と迷ったときは、こんなふうに考えています。

  • 親が消えても子を残したい → 参照関係
  • 親と子はセットで管理したい → 主従関係

たとえば、プロジェクトとタスクを関連付けるなら、主従関係にしておいた方が「プロジェクトが終わったら関連タスクも削除」でスッキリ管理できることが多いですね。

まとめ

Salesforceの設計を始めるとき、データの「繋がり方」をどうするかはすごく重要です。

参照関係と主従関係は、どちらも便利な機能ですが、役割がはっきり違います。
どれくらい強い結びつきが必要なのかを考えて選ぶと、あとからのトラブルも防げますよ。

この記事が、あなたのSalesforce設計のヒントになれば嬉しいです。

コメント

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