Salesforce でオブジェクト設計を進めていくと、
「1対多の関係では表現できない」場面に必ず直面します。
例えば、
- 1つの商談に複数の製品が紐づく
- 1つのプロジェクトに複数のメンバーが関わる
- 1人の担当者が複数の案件に関与する
といったケースです。
このような関係は、Salesforceでは中間オブジェクトを使って多対多リレーションとして表現します。
本記事では、中間オブジェクト設計の基本と、実務で押さえておきたいポイントを解説します。
多対多リレーションの基本構造
Salesforceでは、直接的な多対多リレーションは持てません。
そのため、2つのオブジェクトの間に中間オブジェクトを挟むことで実現します。
構造としては以下のようになります。
オブジェクトA
↕
中間オブジェクト
↕
オブジェクトB
中間オブジェクトに対して、それぞれのオブジェクトへのリレーション(主従または参照)を設定することで、結果的に「AとBが多対多でつながる」形になります。
中間オブジェクトは「関係」ではなく「データ」
ここで重要なのは、
中間オブジェクトは単なる紐づけではないという点です。
例えば「商談 × 製品」の関係であれば、中間オブジェクトには
といった業務上の意味を持つデータを持たせることができます。
同様に「プロジェクト × メンバー」であれば
などを持たせることで、単なる関連付け以上の価値を持ちます。
主従関係と参照関係の組み合わせ方
中間オブジェクトでは、両側のリレーションをどう設計するかが重要です。
パターン①:両方を主従関係にする
- 中間オブジェクトが完全に従属する場合
- 親オブジェクト単位で一元管理したい場合
パターン②:片側のみ主従関係にする
- どちらか一方を「主」として扱いたい場合
- 集計を行いたい親が明確な場合
パターン③:両方参照関係にする
よくある設計ミス
① 中間オブジェクトを「ただの紐づけ」と考えてしまう
中間オブジェクトを最小構成で作ってしまうと、後から項目追加や再設計が必要になるケースが多くなります。
② 主従関係の方向を誤る
どちらを主とするかを誤ると、
権限設計や集計設計に大きな影響が出ます。
「業務上どちらが主か」を明確にすることが重要です。
構築内容(例)
想定シナリオ
- オブジェクトA:プロジェクト
- オブジェクトB:メンバー
- 中間:プロジェクトメンバー
構築手順
① 中間オブジェクトを作成
② プロジェクトへのリレーション作成
③ メンバーへのリレーション作成
④ オブジェクトに項目追加
- 役割(選択リスト)
- 参画開始日(日付)
- 工数(数値)
ポイント
- 集計したい側を主従にする
- 中間オブジェクトの項目設計を先に考える
この例では、「プロジェクト」オブジェクトに工数などを積み上げ集計することが可能ですが、「メンバー」オブジェクト側では積み上げ集計は使えません。
まとめ
多対多リレーションは、
Salesforce設計において避けて通れないテーマの一つです。
中間オブジェクトを使うことで、複雑な関係も柔軟に表現できる一方で、設計次第で使いやすさが大きく変わります。
重要なのは、
- 中間オブジェクトを「業務データ」として設計すること
- 主従関係と参照関係の役割を明確にすること
- 将来の拡張を見据えること
です。
本連載で解説してきた内容を踏まえ、リレーション設計を行うことで、より運用しやすいSalesforce環境を構築することができます。