1. オブジェクトリレーションとは
「オブジェクトリレーション」とは、異なるオブジェクト間の関連性を表すデータの紐付きのことを指します。
2. 参照関係とは?
異なる2つオブジェクト同士をつなぎ、片方のオブジェクトをもう片方のオブジェクトの関連項目から参照できるようにします。
3. 主従関係とは?
主従関係のリレーションでは、片方のオブジェクトが「主」になり、もう片方のオブジェクトが「従」になります。
4.参照関係と主従関係の違い
4.1 参照関係と主従関係の違い①
◆親オブジェクトの必須
子オブジェクトにレコードの親オブジェクトは必須です。
4.2 参照関係と主従関係の違い②
◆子オブジェクトとするリレーション
子オブジェクトに参照関係項目、主従関係項目を作成する時の制限です。
4.3 参照関係と主従関係の違い③
◆リレーションの制限
1つのオブジェクトからリレーションを結べるオブジェクト数の制限です。
4.4 参照関係と主従関係の違い④
◆連動削除復元
親オブジェクトレコードが削除・復元されるときの子オブジェクトレコードの連動です。
4.5 参照関係と主従関係の違い⑤
◆段階制限
1つのオブジェクトからリレーションを結べる段階オブジェクト数の制限です。
4.6 参照関係と主従関係の違い⑥
◆積み上げ集計
関連リストにある関連レコードなどから値を計算し、従レコードの項目の値に基づいて主レコードの値を表示できる項目です。
5. 連結オブジェクト
2つの主従関係を持つカスタムオブジェクトです。カスタム連結オブジェクトを使用して、2 つのオブジェクト間の「多対多」リレーションをモデル化できます。
6. SOQLでリレーションの情報を取得
6.1 標準オブジェクトの場合
◆親オブジェクト:取引先(Account)
◆子オブジェクト:取引先責任者(Contact)
親 (Account) から子 (Contact) を参照
SELECT Id, Name, (SELECT Id FROM Contacts) FROM Account
子 (Contact) から親 (Account) を参照
SELECT Id, Name, Account.Id, Account.Name FROM Contact
6.2 カスタムオブジェクトの場合
◆親オブジェクト:ParentObj__c
◆子オブジェクト:ChildObj__c
◆子リレーション名:ChildObjs
親 (ParentObj__c) から子 (ChildObj__c) を参照
親オブジェクトから子オブジェクトをSOQLで使用したい場合は、対象の子オブジェクトで定義されている主従関係もしくは参照関係の項目の子リレーション名により子オブジェクトの所定の項目を指定できます。
カスタムオブジェクトの場合には、子リレーション名に__rを付与して記載することになります。
SELECT Id, Name, (SELECT Id, Name FROM ChildObjs__r) FROM ParentObj__c
子 (ChildObj__c) から親 (ParentObj__c) を参照
子オブジェクトから親オブジェクトをSOQLで使用したい場合は、対象の子オブジェクトで定義されている主従関係もしくは参照関係の項目により親オブジェクトの所定の項目を指定できます。
カスタムオブジェクトの場合には、項目のAPI参照名の__cの部分を__rに変換して記載することになります。
SELECT Id, Name, ParentObj__c, ParentObj__r.name FROM ChildObj__c