Salesforce の設計相談を受ける中で、
主従関係を検討している理由をお聞きすると、多くの場合は次の一言に集約されます。
「親オブジェクト側で集計したい」
主従関係を設定すると使える「積み上げ集計」は非常に便利な機能ですが、
第一回で解説した通り、実際の現場では
- すでにレコードが存在している
- 権限・共有設計の都合で主従関係が使えない
といった理由から、主従関係を選べないケースも少なくありません。
本記事では、
主従関係が使えない場合に、積み上げ集計をどう代替するか
という現実的な対応パターンを解説します。
なぜ主従関係が使えないケースが多いのか
主従関係が使えない主な理由は、次の3つです。
- カスタムオブジェクトにすでにレコードが存在する
- 子レコード単位で所有者・共有設定を分ける必要がある
- 将来的に親子関係が変わる可能性がある
特に多いのが、
とりあえず参照関係で作成
→ データ投入
→ 集計が必要になった
という流れです。
この段階で主従関係に変更しようとしても、
Salesforceの仕様上、簡単には対応できません。
積み上げ集計でできることのおさらい
主従関係で利用できる「積み上げ集計」では、主に以下の集計が可能です。
- 子レコードの件数
- 数値項目の合計
- 最大値・最小値
設計時に「これが使えないと困る」と感じる方も多いですが、
実務上は必ずしもリアルタイム集計が必要とは限らないケースも多くあります。

代替パターン①:フローによる集計(最も現実的)
主従関係が使えない場合、
最も一般的で現実的なのが フローによる集計 です。
レコードの
- 作成
- 更新
- 削除
をトリガーに、レコードトリガーフローを使って親オブジェクト側の集計項目を更新します。
メリット
- 参照関係でも実装可能
- 条件付き集計など柔軟な制御ができる
- 標準機能のみで完結する
注意点
- データ量が多い場合のパフォーマンス
- 再計算タイミングの設計
- フローが複雑化しやすい
積み上げ集計を「完全再現」するのではなく、
業務上必要な条件に絞って集計することがポイントです。
代替パターン②:レポート・ダッシュボードで割り切る
もう一つの選択肢が、
オブジェクト項目として集計値を持たないという判断です。
- 入力チェックに使わない
- 参照・分析が目的
といった場合は、
レポートやダッシュボードで十分なケースも多くあります。
「本当に項目として持つ必要があるのか?」
を一度立ち止まって考えることも、設計上とても重要です。
代替パターン③:日次更新・バッチ的な再計算という考え方
すべての集計をリアルタイムで更新する必要はありません。
即時性を求めない場合、次のような方法が現実解になります。
スケジュールトリガーフロー
- スケジュールトリガーフローを使い
- 1日1回、夜間などにまとめて再計算
日次集計や月次集計など、
経営指標・管理用データに向いています。
まとめ
主従関係が使えない場合でも、
積み上げ集計を代替する方法は複数存在します。
- フローによる集計
- レポート・ダッシュボードでの割り切り
- スケジュールトリガーフローやバッチによる定期更新
積み上げ集計は便利な機能ですが、
集計を実現するための唯一の手段ではありません。
制約のある中で、
業務にとって最も現実的な方法を選ぶことが、
Salesforce設計における重要なポイントです。


