29
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Salesforce 子リレーション名の命名について

Last updated at Posted at 2018-07-07

はじめに

Salesforceでリレーション項目を作成するときに、子リレーション名を設定する必要があります。
「子オブジェクトの複数形」で命名することが一般的です。
標準項目でも「子オブジェクトの複数形」で命名されています。
(ContactsAssetsCasesなど)

しかし、親のオブジェクト名がつけられていたり、項目名と同じ命名がされていたり、
めちゃくちゃな命名がされていることもよく見かけます。

項目名と同じだと何がだめなのか

Apexでクエリを書いたときに問題があります。

子リレーション名を項目名と一緒にしてしまった例

親オブジェクト: 拠点 Office__c
子オブジェクト: 従業員 Employee__c

従業員の項目: 勤務先拠点 Office__c
勤務先拠点の子リレーション名: Office__r (悪例)

List<Office__c> offices = [ SELECT Id, (SELECT Id, Name FROM Office__r) FROM Office__c ];

List<Employee__c> employees = offices.get(0).Office__r;

項目名または親オブジェクト名で子リレーション名を設定すると、上の例のようになり、
子オブジェクト(Employee__c)にもかかわらず、親オブジェクトのように(Office__r)見えてしまい、可読性が落ちてしまいます。
また、複数形にしないことで、Listであることがわかりにくくなってしまいます。

子リレーション名に「子オブジェクト名の複数形」を使用した例

勤務先拠点の子リレーション名: Employees__r
にすることでわかりやすくなります。

List<Office__c> offices = [ SELECT Id, (SELECT Id, Name FROM Employees__r) FROM Office__c ];

List<Employee__c> employees = offices.get(0).Employees__r;

子リレーション名の命名

子リレーション名はあくまでも「親からみた子の関係」に名前をつけたものなので、そのことを意識した命名をする必要があります。

一般的には、子オブジェクトの複数形で命名しますが、同じオブジェクトにリレーション項目が複数ある場合は注意する必要があります。

親オブジェクト: User
子オブジェクト: Employee

項目ラベル名: 考課者
API参照名: Appraiser__c
子リレーション名: Appraisees__r

項目ラベル名: 研修担当者
API参照名: Traininer__c
子リレーション名: Trainees__r

29
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?