Administrator 練習問題 Q87
Ursa Major Solarの管理者は、作業項目とプロジェクトのカスタムオブジェクトの関係を主従関係からルックアップに変更するように依頼されました。管理者がこの要件を満たすのを妨げる可能性があるシナリオはどれですか?
左の○で回答を選択。本文を押すと横線で除外でき、もう一度押すと戻せます。
1つ選択してください(0/1)
正答:D. 親オブジェクトに、子オブジェクトを参照するロールアップサマリーフィールドが存在します。
解説
前提知識
主従関係とは
主従関係は、親レコードと子レコードを強く結び付ける関係です。親レコードが削除されると子レコードも一緒に削除される、子レコードの所有者は親と同じになる、共有設定は親に従う、といった強い依存関係を持ちます。この関係の重要な特徴として、親側のオブジェクトには、子レコードの値を集計する「ロールアップサマリーフィールド」を作成できます。
ルックアップ関係(Lookup)とは
ルックアップ関係は、2つのオブジェクトを参照で結び付ける関係です。参照元レコードの所有者や共有設定は参照先から独立します。参照先レコードを削除したときの動作は、ルックアップ項目の設定により、参照値をクリアするか、参照先の削除を禁止するかなどが異なります。ロールアップサマリーフィールドは主従関係を前提とするため、標準のルックアップ関係では使用できません。
💡 主従関係とルックアップ関係の基本的な違いは、独立記事 主従関係とは何か:親が消えたら子も消える関係 でも解説しています。
なぜ変換に制約があるのか
ロールアップサマリーフィールドは「主従関係が存在すること」を前提として動作する機能です。そのため、あるカスタムオブジェクトの関係を主従関係からルックアップへ変更しようとするとき、その親側のオブジェクトに、変換対象の子オブジェクトを参照するロールアップサマリーフィールドが残っていると、関係の変換自体がブロックされます。
設問の状況を分解する
- 作業項目とプロジェクトのカスタムオブジェクトの関係を、主従関係からルックアップに変更したい
- 「この変更を妨げる可能性があるシナリオ」を問われている
- 選択肢の中から、実際にSalesforceの制約として存在するものを選ぶ
選択肢の検討
A. ルックアップをサポートするにはジャンクションオブジェクトが必要です。 → ✕
ルックアップ関係を持たせるためにジャンクションオブジェクト(多対多関係を実現するための中間オブジェクト)が必須という制約はありません。ジャンクションオブジェクトは多対多を表現したいときに使う設計パターンであり、単純な1対多のマスター・詳細をルックアップに変える場面とは関係ありません。
B. すべてのレコードのルックアップフィールドに値が含まれています。 → ✕
むしろ「すべてのレコードに値が入っている」状態は、関係の変換を妨げる要因にはなりません。問題になるのはロールアップサマリーフィールドの存在であり、既存レコードの値が埋まっていること自体は変換のブロッカーではありません。
C. レコードの保存にはルックアップフィールドが必要です。 → ✕
主従関係では、子側の関係フィールドは常に必須(入力必須)です。ルックアップに変換した後は、必須にするかどうかを管理者が選べるようになりますが、これは変換を妨げる要因ではなく、変換後の挙動の違いにすぎません。
D. 親オブジェクトに、子オブジェクトを参照するロールアップサマリーフィールドが存在します。 → ⭕ 正解
Salesforce公式ヘルプは、「主従関係をルックアップに変更する前に、子オブジェクトを参照する親側のロールアップサマリーフィールドをすべて削除する必要がある」と明記しています。ロールアップサマリーは主従関係でしか機能しないため、関係を緩めるルックアップへの変換とは共存できず、事前にフィールドを削除しない限り変換がブロックされます。
管理者としての対処手順
- 親オブジェクト(プロジェクト)側に、子オブジェクト(作業項目)を参照するロールアップサマリーフィールドがないか確認する
- 存在する場合は、集計値への影響を関係者と確認したうえでロールアップサマリーフィールドを削除する
- 関係項目の詳細画面で項目種別を主従関係からルックアップ関係へ変更する
- 変換後、子オブジェクトの組織の共有設定が[公開/参照・更新可能]へ変わるため、必要な共有モデルへ再設定する
- 親削除時の動作、項目の必須性、既存のレポートや自動化への影響を確認する
あわせて覚えておきたいポイント
- ロールアップサマリーフィールドは「主従関係専用」の機能であり、ルックアップ関係には(標準機能としては)存在しない
- ルックアップ関係から主従関係への変更は可能だが、逆方向(主従関係→ルックアップ)は制約が多く、既存の依存機能(ロールアップサマリーなど)の整理が必要
- 関係の種類を変更する前は、常に「その関係に依存している機能(ロールアップサマリー、共有設定、削除の連動など)」を洗い出すことが重要
出典(Salesforce公式)
- Considerations for Object Relationships — 親側にロールアップサマリーフィールドが存在しない場合に限り主従関係をルックアップ関係へ変換できること、変換後に子オブジェクトの組織の共有設定が[公開/参照・更新可能]へ変わることを裏付けます。
- Effects of Converting a Salesforce Master-Detail Relationship to a Lookup Relationship — 変換前に親側のロールアップサマリーフィールドを削除する必要があること、および削除・共有・レポート・自動化への影響を裏付けます。
- Roll-Up Summary Field — ロールアップサマリーフィールドが主従関係を前提とし、作成後は対象の主従関係をルックアップ関係へ変換できないことを裏付けます。
- Unable to Create a Master-Detail Relationship — 全レコードのルックアップ項目に値が必要なのは、ルックアップから主従関係へ変換する場合の条件であることを裏付けます。