Junction Object是指擁有兩個Master-detail Relationship的物件。
那什麼是Master-detail Relationship呢?
Master-detail Relationship 會連帶刪除關聯的子物件紀錄
Master-detail Relationship是兩個物件間的一種關係,一方是主物件,一方是子物件。
Master-detail Relationship有個特性就是當刪掉主物件的紀錄時,也會同時刪掉關聯的子物件紀錄。
常見的帳戶與連絡人就是Master-detail Relationship。
Lookup Relationship不會連帶刪除關聯的子物件紀錄
與Master-detail相對的是Lookup Relationship,差異在有Lookup關係的兩物件不會因為一方刪除紀錄而被連帶刪除。
常見的帳戶與使用者就是Lookup Relationship。
為什麼要有Junction Object?
Junction Object存在目的是為了服務『多對多關係』。日常生活中的多對多關係比如有顧客與產品、學生與課程。一個顧客可能買多項產品,一個產品也可能被多個顧客購買。
但如果只在Salesforce中單純建立兩個物件:顧客、產品,是做不到多對多關係的。
A. 你可能想說就在顧客物件中新增紀錄產品的欄位啊?但這種方法僅能記錄一個產品,無法滿足顧客與產品一對多的需求。
(無法滿足紅線的關係)
B. 如果再建立第二個產品欄位呢?或許可以解決問題,但這不是好方式,因為當顧客越買越多產品,管理員也要隨之在後台新增更多的產品欄位。
C. 如果不要新增欄位,而是另外新增一筆顧客紀錄,紀錄該顧客購買的第二項產品呢?一樣不是好方法,這會使得有重複顧客紀錄,並不是理想的資料管理方式。
最終解法是,需要新增一個中介物件來紀錄顧客與產品的每個關係。
在顧客與產品的例子中,JuntionObject可以是訂單。而且為了關聯顧客與產品物件,訂單物件會分別與顧客、產品物件建立Master-detail Relationship欄位。
建立完成後,只要在訂單上紀錄,就能紀錄顧客與產品多對多的關係。
比如下圖中
- 訂單 1 紀錄「顧客王一」購買了「產品A」。
- 訂單 2 紀錄「顧客王一」購買了「產品B」。
雖然我們只在訂單物件上操作,但在顧客以及產品物件的相關紀錄處也看見顧客購買的所有產品,或是產品所有的購買顧客了,多對多關係完美呈現。
那如何建立Junction Object呢?
Step 1. 先建立三個自訂物件
Step 2. 在預計成為Junction Object的物件中新增兩個Master-detail Relationship欄位,並分別Related to主物件
新增Master-detail Relationship欄位
Step 3. 最後調整兩個主物件Page Layout中的Related list欄位,拉出想要的資訊
完成!