【Salesforce】子リレーション名とは?カスタムオブジェクトの作成

Salesforce

カスタムオブジェクトを作成する時に命名する子リレーション名、なんとなく曖昧なまま名前を付けがちですが、ここでつけた名前がどのように使われるのか、どんな名前を付けるのが適切なのか改めてまとめてみました。

子リレーション名とは

Salesforceはオブジェクト間で参照関係を持たせることができますが、子リレーション名は親オブジェクトから子オブジェクトを参照する時の名前です。

例えば、取引先オブジェクト(親)と売上オブジェクト(子)の参照関係として、売上オブジェクトに下記項目を作成したとします。

この場合、親オブジェクトと子オブジェクトがお互いを参照する時に使用する名前は下記になります。

名前の後ろに__rを付けているのは、ザックリ言うとオブジェクト間の参照を行う場合の書き方のルールです。SOQLで例を書くと下記のような感じになります。

● 子オブジェクトから親オブジェクトの参照例

SELECT Id, Account__r.Name FROM Sales

● 親オブジェクトから子オブジェクトの参照例

SELECT Id, (SELECT Name FROM aaaa__r) FROM Account

子リレーション名を命名する際の考慮

子リレーション名を付ける際に考慮するべき点は、 親オブジェクトから参照した時の分かりやすさです。

上記SOQLを例にすると、aaaa__r がどこのオブジェクトを指しているか非常に分かりづらいです。例えば子リレーション名をSalesとした場合のSOQLが下記になりますが、文面からだけでも何をしたいのかが分かりやすい、親切な命名となります。

SELECT Id, (SELECT Name FROM Sales__r) FROM Account

よくある悪い例が、子リレーション名を項目名と同じにしてしまうことです。例えば子リレーション名を項目名と同じくAccountとした場合、混乱を招くようなSOQLとなってしまいます。

SELECT Id, (SELECT Name FROM Account__r) FROM Account

基本的に、子リレーション名は自身のオブジェクトを表す名前にするのが適切です。

子リレーション名の適切な命名

一般的に、子リレーション名は自身のオブジェクト名の複数系とするのが良いとされているようです。

なぜ複数系かというと、例えば下記のようなオブジェクト間の参照関係の場合
 親オブジェクト見積(Quote)
 子オブジェクト見積明細(QuoteDetail)

子オブジェクトは親オブジェクトに複数レコード紐づけることができます。

そのため見積明細オブジェクトに作成する参照/主従関係項目の子リレーション名は、見積明細オブジェクトの複数形(QuoteDetails)とすることで、より分かりやすい命名となります。

SELECT Id, (SELECT Name FROM QuoteDetails__r) FROM Quote

コメント

タイトルとURLをコピーしました