tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:主従関係と参照関係の違いについて

主従関係と参照関係の違いについてです。別のオブジェクトと関連付けを行うときは主従関係もしくは参照関係の項目を用意して対応します。
f:id:tyoshikawa1106:20170108131322p:plain


似たような項目なのでとりあえず主従関係にしとこうとか、なんとなく参照関係にしようといった選択を行うケースがあると思います。基本的に親レコードが存在しているときにのみ作成されるレコードの場合は主従関係という考え方で大丈夫だと思います。


主従関係と参照関係の違いですが、主従関係を選択する大きなメリットがあります。

  • 積み上げ集計項目が作れる
  • 所有者を主オブジェクト側で一元管理できる
  • 主オブジェクト側のレコードを削除すると従レコードもまとめて削除できる


他にもあるかもしれませんが主従関係は上記3つの便利な特徴を備えています。積み上げ集計項目はよく使われる便利な機能で特定の条件で従レコードの件数や合計値などの情報を取得できます。これにより関連レコードが何件といった条件のデータをビューやレポートなどでまとめることも可能です。


所有者を主オブジェクト側で一元管理できることは地味な部分ですが便利な機能です。所有者の移行などが必要になったとき主オブジェクト側を修正して従オブジェクト側を修正して・・とひとつひとつやらなくては行けませんが、主従関係にすれば一箇所の所有者を変更すれば対応が完了します。主と従で所有者を変更しなくてはいけないときには参照関係にする必要がでてきます。


主オブジェクト側のレコードを削除すると従レコードもまとめて削除できる機能は本当に便利です。Salesforceに登録したデータは永久にそのままというわけではなく必要のなくなったデータは削除されると思います。このとき参照関係にしておくと親レコードが削除されても関連する子レコードはそのままになってしまいます。意味のあるデータならそれでも良いのですが大抵の場合役に立たないデータとして残ることになると思います。主従関係ならこの問題を簡単に解決できるのでオススメです。


一度作成した主従関係と参照関係の項目ですが、後からデータ型を変更することも可能です。ですがその場合は所有者項目やレポートタイプに変更が入るので、既存のビューやレポートに影響が出てしまいます。
f:id:tyoshikawa1106:20170108133142p:plain


後から変更することは可能ですが、出来る限り最初に検討してどちらを利用するのか選択した方が良さそうです。

関連記事