参照関係と主従関係の違いとは?
Salesforceでオブジェクトを作っていると、「このオブジェクト、他のデータと繋げたいな…」と思う場面、ありますよね。
そんなときに使うのが 参照関係 と 主従関係 です。
最初はちょっとややこしく感じるかもしれませんが、この2つの違いを知っておくとSalesforceのデータ設計がグッと楽になります。
参照関係:ゆるやかなつながり
参照関係(Lookup Relationship)は、オブジェクト同士を関連づけるけど、親が削除されても子は残るという、わりと自由な関係です。
たとえば、「注文」オブジェクトが「顧客」オブジェクトを参照しているとします。
顧客データを削除しても、注文データ自体は消えません。
もちろん、顧客が不明になるのであとで見直しは必要ですが、「注文」自体は生きているのです。
この関係は、データ同士の繋がりは必要だけど、依存関係はそこまで強くしたくないときに便利です。
主従関係:親子で運命共同体
一方で、主従関係(Master-Detail Relationship)は、親オブジェクトが消えると、子も一緒に削除されるという強い依存関係を持っています。
イメージとしては、「納品書(親)」と「納品明細(子)」のようなもの。
納品書を削除したら、その明細も意味をなさないので、一緒に消えるというわけです。
また、主従関係では親の所有者(オーナー)情報や共有設定が子にも引き継がれるなど、細かいルールが決まっています。
完全に親に従う子オブジェクト、という感じですね。
どちらを選べばいいの?
私は普段、「この2つ、どっちにしよう?」と迷ったときは、こんなふうに考えています。
- 親が消えても子を残したい → 参照関係
- 親と子はセットで管理したい → 主従関係
たとえば、プロジェクトとタスクを関連付けるなら、主従関係にしておいた方が「プロジェクトが終わったら関連タスクも削除」でスッキリ管理できることが多いですね。
まとめ
Salesforceの設計を始めるとき、データの「繋がり方」をどうするかはすごく重要です。
参照関係と主従関係は、どちらも便利な機能ですが、役割がはっきり違います。
どれくらい強い結びつきが必要なのかを考えて選ぶと、あとからのトラブルも防げますよ。
この記事が、あなたのSalesforce設計のヒントになれば嬉しいです。
コメント