【Salesforce】Salesforceで多対多の関連を実現する「中間オブジェクト」とは?

はじめに
Salesforceでデータモデルを構築する際、「多対多(N対N)」の関係性、
たとえば「社員とプロジェクト」「顧客と契約プラン」など、どちらも複数の相手と関連するような関係をどう表現すればよいか悩んだことはありませんか?
こうした関係を扱う際には、中間オブジェクト(ジャンクションオブジェクト)を活用するのが一般的な手法です。
本記事では、そんな場面で活躍する「中間オブジェクト(ジャンクションオブジェクト)」の仕組みと活用方法について、具体例を交えてわかりやすく解説します。これを理解することで、より柔軟で実用的なデータ構造の設計が可能になります。
中間オブジェクトとは?

Salesforceでは、2つのオブジェクト間に多対多(N対N)の関係を直接持たせることはできません。
そのため、代わりに中間オブジェクト(ジャンクションオブジェクト)を介して、擬似的に多対多の関係性を実現します。
中間オブジェクトとは、2つのオブジェクトの間に配置されるカスタムオブジェクトのことで、各オブジェクトに対して「主従関係」で紐付けられるという特徴があります。
なぜ中間オブジェクトが必要なのか
Salesforceの標準的なリレーションシップ(参照関係や主従関係)では、基本的に1対多(1:N)の構造しか作れません。そうすると以下のようなケースで課題となります。
例:書籍と著者の関係
・1冊の書籍に複数の著者がいる場合がある(多)
・1人の著者が複数の書籍を執筆している場合もある(多)
このようなN対Nの関係では、どちらか一方を親、もう一方を子とする設計では不十分です。
次の見出しで、更に詳しく仕組みを解説していきます。
中間オブジェクトの仕組みを具体例で解説

前の見出しで出てきた、”Salesforceの標準的なリレーションシップ(参照関係や主従関係)では、基本的に1対多(1:N)の構造になる” という特徴が原因で発生する課題に対して、この問題を解決する方法として、「書籍」と「著者」の間に「執筆」という中間オブジェクトを作成します。
早速詳細を見ていきましょう。
ステップ1:中間オブジェクトの作成
カスタムオブジェクト「執筆」を新たに作成します。
ステップ2:主従関係の設定
・「書籍」⇨「執筆」:主従関係(書籍が親)
- 「書籍」オブジェクトと「執筆」オブジェクトの間に主従関係を作成します。「執筆」が従となります。
・「著者」⇨「執筆」:主従関係(著者が親)
- 「著者」オブジェクトと「執筆」オブジェクトの間に主従関係を作成します。「執筆」が従となります。
結果として以下が実現
・1冊の書籍は、複数の「執筆」レコードを持つことができます。
(例:書籍A – 執筆レコード1、書籍A – 執筆レコード2)
・1人の著者は、複数の「執筆」レコードを持つことができます。
(例:著者X – 執筆レコード1、著者X – 執筆レコード3)
・各「執筆」レコードは、特定の1冊の書籍と特定の1人の著者に紐づきます。
(例:執筆レコード1は書籍Aと著者Xを関連付ける)
このように、「執筆」オブジェクトが「書籍」と「著者」の間に挟まることで、結果的に書籍と著者の間でN対Nの関連付けが実現できます。
中間オブジェクトのメリット
中間オブジェクトを導入することで、以下のような多くのメリットが得られます。
1. 複雑なビジネスロジックの実現
業務上で必要な多対多の関係性を忠実に表現できます。
2. 関連性に関する追加情報の格納
中間オブジェクトに「執筆開始日」や「役割(監修・共著など)」といった情報を格納可能。
3. レポート作成の柔軟性
中間オブジェクトを軸に、詳細なレポートや分析を実施可能になります。
Salesforceでの多対多設計を成功させるポイント
- 命名ルールを明確にする
→ 「執筆」「割当」「担当」など関係を直感的に表す名前を使う - 親子の設計方針を統一する
→ 更新頻度・主な参照元を基に親を決定する - 中間オブジェクトに必要項目を設ける
→ 役割、ステータス、日付など業務に応じて項目を追加
まとめ
SalesforceでN対Nのレコード関連付けを行いたい場合、中間オブジェクトは非常に有効な手段です。
2つのオブジェクト間にカスタムオブジェクトを挟み、それぞれと主従関係で結ぶことで、柔軟かつ正確なデータモデルを構築できます。
この手法を活用することで、複雑なビジネス関係も正確に表現できるだけでなく、関連情報の一元管理や分析にも対応しやすくなります。
要件に応じて適切に中間オブジェクトを設計することが、Salesforce活用のカギとなります。適切な設計と運用で、CRMデータの整合性と活用の幅を広げましょう。
関連記事


