👨👩👦
【Salesforce】主従関係と参照関係:どっちを選ぶ?
主従関係と参照関係を、それぞれどのような状況でどちらを選ぶべきかについて解説します。
それぞれの関係の詳細については、ネット上に記事がたくさん上がっているのでこちらでは割愛します。
主従関係(Master-Detail Relationship)
特徴
- 親子関係: 明確な親子関係が存在し、子オブジェクトは親オブジェクトに強く依存します。
- 削除時の連鎖: 親オブジェクトが削除されると、それに関連する子オブジェクトも自動的に削除されます。
- セキュリティと共有: 子オブジェクトのアクセス権は親オブジェクトに従います。親オブジェクトにアクセスできるユーザーは、子オブジェクトにもアクセスできます。
- ロールアップ集計: 親オブジェクトで子オブジェクトの集計データを計算するロールアップサマリーフィールドを作成できます。
選ぶべき状況
- データの完全な依存関係が必要な場合: 例えば、請求書とその明細の関係など。明細が請求書に完全に依存している。
- データの一貫性が重要な場合: データが削除されたときに関連するデータも削除される必要がある場合。
- 集計が必要な場合: 親オブジェクトに対して子オブジェクトのデータを集計する必要がある場合。
- セキュリティの一貫性が必要な場合: 子オブジェクトのアクセス権が親オブジェクトに従う必要がある場合。
参照関係(Lookup Relationship)
特徴
- 柔軟な関係: 親子関係が緩やかで、子オブジェクトは親オブジェクトに強く依存しません。
- 削除時の非連鎖: 親オブジェクトが削除されても、子オブジェクトは削除されません。
- 独立したセキュリティと共有: 子オブジェクトのアクセス権は独立して設定できます。
- 柔軟な構造変更: オブジェクト構造が頻繁に変更される場合でも柔軟に対応できます。
選ぶべき状況
- データの完全な依存関係が必要ない場合: 例えば、取引先と取引先責任者、商品と商談の関係など。
- 削除時にデータを保持する必要がある場合: 親オブジェクトが削除されても、関連するデータを保持する必要がある場合。
- 柔軟なセキュリティ設定が必要な場合: 子オブジェクトのアクセス権を独立して設定する必要がある場合。
- オブジェクト構造が頻繁に変更される場合: 例えば、新しいフィールドや関係が頻繁に追加される場合。
まとめ
主従関係と参照関係の選択は、アプリケーションの特定のニーズに基づいて決定する必要があります。データの一貫性や依存関係、セキュリティの管理方法、集計の必要性などを考慮して、最適な関係を選びましょう。どちらの関係を選ぶにしても、Salesforceの強力なデータ管理機能を最大限に活用するための第一歩となります。
株式会社siracusa のテックブログです。 社内における自動化の仕組みや、BizOpsにまつわる技術的な知見を投稿します。 siracusa.jp/
Discussion