多対多オブジェクトリレーションの作成
主従関係を使用して、2 つのオブジェクト間で「多対多」リレーションモデルを形成することができます。多対多リレーションでは、1 つのオブジェクトの各レコードを他のオブジェクトの複数のレコードにリンクでき、またその逆のリンクも可能です。たとえば、Bug という名前のカスタムオブジェクトを作成し、1 つのバグを複数のケースに、また 1 つのケースを複数のバグに関連付けることが考えられます。多対多リレーションをモデル化するとき、「連結オブジェクト」を使用して相互に関連付ける 2 つのオブジェクトを接続します。
必要なエディション
| 使用可能なインターフェース: Salesforce Classic および Lightning Experience の両方 |
使用可能なエディション: Contact Manager Edition、Group Edition、Professional Edition、Enterprise Edition、Performance Edition、Unlimited Edition、Developer Edition、および Database.com Edition レポートは、Database.com Edition では使用できません。 |
| 必要なユーザー権限 | |
|---|---|
| 多対多リレーションを作成する | 「アプリケーションのカスタマイズ」 |
2 つの主従関係を持つカスタムオブジェクト。カスタム連結オブジェクトを使用して、2 つのオブジェクト間の「多対多」リレーションをモデル化できます。
たとえば、「Bug (バグ)」という名前のカスタムオブジェクトを作成し、1 つのバグを複数のケースに、また 1 つのケースを複数のバグに関連付けることが考えられます。
多対多リレーションを作成する手順は、次のとおりです。
- 連結オブジェクトを作成する。
- 2 つの主従関係を作成する。
- 2 つの主オブジェクトのページレイアウトで、関連リストをカスタマイズする。
- レポートをカスタマイズして、多対多リレーションの効果を最大化する。
- 連結オブジェクトになるカスタムオブジェクトを作成します。
- カスタムオブジェクトウィザードでは、連結オブジェクトを作成する場合に次のヒントを考慮してください。
- 「BugCaseAssociation」 (バグ/ケース関係) など、目的を示す表示ラベルでオブジェクトに名前を付けます。
- [レコード名] 項目は、自動採番データ型の使用をお勧めします。
- [保存] 時にカスタムタブウィザードを起動しないでしてください。連結オブジェクトには、タブは必要ありません。
- 相互に関連付ける 2 つのオブジェクトが存在することを確認します。たとえば、標準オブジェクトのケースを「Bug」カスタムオブジェクトに関連付ける場合、「Bug」オブジェクトが存在することを確認します。
- 連結オブジェクトで、第 1 の主従関係項目を作成します。カスタム項目ウィザードで、次の処理を行います。
- データ型として、[主従関係] を選択します。
- 連結オブジェクトに関連付けるオブジェクトを 1 つ選択します。たとえば、[ケース] を選択します。
連結オブジェクト上で作成する最初の主従関係が、「プライマリ」リレーションになります。この関係は、連結オブジェクトのレコードの次の点に影響します。
- デザイン: 連結オブジェクトの詳細ページと編集ページでは、プライマリ主オブジェクトの色とアイコンを使用します。
- レコード所有権: 連結オブジェクトのレコードは、プライマリ主オブジェクトのレコードの [所有者] 項目の値を継承します。主従関係の従オブジェクトには、参照可能な [所有者] 項目がないため、後で連結オブジェクトの両方の主従関係を削除した場合、この継承された値が唯一の関連になります。
- ディビジョン: 組織でディビジョンを使用してデータを分類している場合、連結オブジェクトのレコードは、プライマリ主オブジェクトのレコードからディビジョンを継承します。レコード所有権と同様、後で連結オブジェクトの両方の主従関係を削除した場合、この継承されたディビジョンが唯一の関連になります。
- [共有設定] オプションを選択します。主従関係項目の場合、子レコードの作成、編集または削除を行うために必要な親レコードの共有アクセス権は、[共有設定] 選択肢によって決まります。
- 主オブジェクトのページレイアウトに表示される [関連リストの表示ラベル] では、デフォルト値をそのまま使用しないでください。多対多リレーションの他方の主オブジェクトの名前を使うように変更してください。たとえば、この値を「Bugs」に変更すると、ユーザーにはこのケース詳細ページに [Bugs (バグ)] 関連リストが表示されます。
- 連結オブジェクトで、第 2 の主従関係を作成します。カスタム項目ウィザードで、次の処理を行います。
- データ型として、[主従関係] を選択します。
- 連結オブジェクトに関連付けるもう一つの主オブジェクトを選択します。たとえば、[Bug (バグ)] を選択します。
連結オブジェクトで作成する第 2 の主従関係は、「セカンダリ」の関係になります。プライマリの主従関係を削除するか参照関係に変換すると、セカンダリの主オブジェクトが「プライマリ」になります。
- [共有設定] オプションを選択します。主従関係項目の場合、子レコードの作成、編集または削除を行うために必要な親レコードの共有アクセス権は、[共有設定] 選択肢によって決まります。
- 主オブジェクトのページレイアウトに表示される [関連リストの表示ラベル] では、デフォルト値をそのまま使用しないでください。多対多リレーションの他方の主オブジェクトの名前を使うように変更してください。たとえば、これを [ケース] に変更すると、ユーザーには Bug 詳細ページに [ケース] 関連リストが表示されます。
Salesforce の多対多リレーションでは、両方の主オブジェクトのレコード詳細ページに連結オブジェクトの関連リストを表示します。連結オブジェクトの存在をユーザーにわからないようにするため、主オブジェクトのそれぞれのページレイアウトで他方の主オブジェクトの名前を表示するように連結オブジェクト関連リストの名前を変更することができます。たとえば、[BugCaseAssociations (バグ/ケース関係)] 関連リストを、Bugs ページレイアウトでは「ケース」に、ケースページレイアウトでは「Bugs」に変更します。これらの関連リストをさらにカスタマイズし、他方の主オブジェクトの項目を表示することができます。
それぞれの主オブジェクトのページレイアウトで連結オブジェクト関連リストに表示される項目をカスタマイズする手順は、次のとおりです。
- 連結オブジェクトの主オブジェクトのページレイアウトを編集します。たとえば、ケースレコードの [BugCaseAssociations (バグ/ケース関係)] 関連リストを変更するには、ケースのページレイアウトを編集します。
- 変更する関連リストのプロパティを編集します。たとえば、ケースでは、[BugCaseAssociations (バグ/ケース関係)] 関連リストの名前が「Bugs」に変更されたため、[Bugs (バグ)] 関連リストを選択します。
- 関連リストで表示する項目を追加します。連結オブジェクトの項目に加えて、他方の主オブジェクトの項目も追加することができます。
ウィンドウでは、各項目にプレフィックスとしてオブジェクト名が付きます。関連リスト内では、連結オブジェクトの項目のみにオブジェクト名のプレフィックスが付きます。他方の主オブジェクトの項目にはプレフィックスは付きません。
多対多リレーションには、主オブジェクトと連結オブジェクトを結合した 2 つの標準レポートタイプが用意されています。レポートタイプは次のとおりです。
- プライマリ主オブジェクトのレポートカテゴリにある「連結オブジェクトとセカンダリオブジェクトが関連するプライマリオブジェクト」。
- セカンダリ主オブジェクトのレポートカテゴリにある「連結オブジェクトとプライマリオブジェクトが関連するセカンダリオブジェクト」。
レポートタイプの主オブジェクトの順序は重要です。先に表示される主オブジェクトによって、レポートに表示されるレコードの範囲が決まります。
これらの標準レポートタイプを使用して、カスタムレポートを作成できます。また、カスタムレポートタイプを作成して、レポートでどの関連オブジェクトを結合するかをカスタマイズできます。

