オブジェクトの親子関係:主従関係と参照関係

Salesforceではオブジェクト同士の関係性を「主従関係」「参照関係」で定義します。それぞれの違いを正しく理解することで、データの構造や操作性が大きく変わります。本記事では、両者の特徴と使い分けを解説します。


目次

🔗 オブジェクト関係:主従関係と参照関係の違いとは?

Salesforceでは、複数のオブジェクト間に関係性(リレーション)を持たせることができます。たとえば、「取引先」と「取引先責任者」、「見積」と「見積明細」など、一方のデータが他方に関連して存在することは、現実の業務でもよくあることです。

この関係性をSalesforce上で実現するのが「リレーションシップ項目」であり、代表的な2つが「主従関係(Master-Detail Relationship)」と「参照関係(Lookup Relationship)」です。

では、それぞれの違いを詳しく見ていきましょう。

🔷 主従関係(Master-Detail Relationship)

🎯 特徴まとめ:

  1. 従(Detail)オブジェクトは親(Master)に従属
    • 従のレコードは、必ず親を持たなければなりません(親が未設定のまま保存できない)。
  2. 親が削除されると従も削除される
    • 「親を削除したら、子も一緒に消えてしまう」という、強い依存関係。
  3. 親レコードにロールアップ集計が可能
    • 親から、子の合計や最大値などを集計できます。
  4. 所有者とアクセス権は親に依存
    • 従レコードの所有者は自動的に親の所有者になり、アクセス権限も親に従います。

🔍 こんなときに使うべき:

  • 子レコードが親なしには存在できないようなデータ構造のとき。
  • 子の情報を集計して親に表示したい(売上合計、数など)。
  • 子の操作や権限も親とまとめて管理したい。

🧭 例:

「イベント(親)に登録された参加者情報(子)」
→ イベントがなくなれば、参加者情報も意味をなさない=削除。

「出版企画(親)と、その中の取材スケジュール(子)」
→ 企画がキャンセルされたら、取材も当然キャンセル。

🔷 参照関係(Lookup Relationship)

🎯 特徴まとめ:

  1. 緩やかな関連関係
    • 子(または参照側)のレコードは、親を指定しなくても保存可能。
  2. 親の削除時に子がどうなるかは設定で選べる
    • 削除時に子の参照項目を「空欄にする」か、「削除を制限する」かを設定可能。
  3. ロールアップ集計は不可(標準機能では)
    • 子の情報を集計したい場合は、Apexトリガやフローなどの工夫が必要。
  4. 所有者・権限は独立
    • 親と子で別々に設定できます。

🔍 こんなときに使うべき:

  • 子レコードが独立して存在することが許されるケース。
  • 削除しても問題ない or 影響を個別に管理したい。
  • 柔軟なアクセス制御をしたい。

🧭 例:

「お問い合わせ(子)と担当営業(親)」
→ 営業担当がいなくなっても、お問い合わせ情報は保持されるべき。

「レビュー(子)と商品(親)」
→ 商品が削除されても、過去のレビューは記録として残したい。

⚠️ よくある誤解

誤解真実
主従関係の方が「上位の関係」なので強い強い=制約が多いという意味。便利だけど柔軟性には欠ける面もある
主従関係の方が必ず推奨されるデータの性質に応じて選ぶのが正解。業務要件に合わせて!
参照関係でも集計できるでしょ?標準機能ではできません。カスタムロジックが必要です

💡 どちらを選ぶべきかの判断基準

判断項目主従関係が向いている参照関係が向いている
子レコードの必須性常に親が必要必要に応じて親がいればOK
子レコードの独立性親と運命共同体単体でも存在価値がある
権限や所有者の管理親と一体で管理したい個別に管理したい
データ削除の挙動親と一緒に削除残すことも可能
集計の必要性必要(ロールアップ可)不要 or 別手段で対応

🌟 ノックスの格言

「関係性を定義するということは、レコードの“運命”を定めることなのです」
銀河歴8221年 ネクタリス・オーヴァ大学 情報魔法学部 データ関係学序論より)

(英訳:”To define a relationship is to define the destiny of records.”)
(原語訳:”Ralviun ka’theras il’vari — om’therin dol thalos nemar.”)

💡 まおの学びメモ

主従関係って、めっちゃ親子!子は親がいないと生きていけない。
親を削除したら、子も自動で削除されちゃう……こわい……
子レコードは親の影響を強く受ける。権限とか所有者とかも。
ロールアップ集計ができるのは主従関係だけ!これ地味に便利かも。
✅ 覚え方:「運命共同体」=主従関係!

💡 さやかの学びメモ

参照関係はフリーな関係!親(上司)がいなくても子は生きていける。うん、私っぽい。
削除されても子は生き残る(設定次第だけど)!
所有者も別々でOK、自由度高し!
でも、ロールアップ集計は使えないからちょっと注意。
✅ 覚え方:「ソロ活動OK」=参照関係!
❌ 関係性のたとえ話、リアルでやりすぎると痛い目見る!


では、また次回の 異星人Salesforce講座 でお会いしましょう!👽✨

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次