Junction object는 Master-Detail 관계로만 이어져야할까요?
ERD를 그리거나 다른 ERD 모델들을 확인해보면 Junction object들이 많이 보입니다.
세일즈포스 어드민 수업에서 다룬 junction object는 두 개의 Master Object를 이어주는 Detail Object였습니다.
하지만 세일즈포스에서는 Lookup Relationship으로 이루어진 Many-to-Many 관계의 child object도 만들 수 있거든요.
이 경우에는 Junction object가 아닌걸까요??
Lookup관계로 이루어지면 정션 오브젝트가 아닌지를 알고 싶었는데,
명확한 답변을 찾지 못해서 결국 공식 문서들을 찾아보다 알게된 내용을 정리해봤습니다.
Many-to-Many Object Relationship
말 그대로 한 오브젝트 안의 레코드들이 다른 오브젝트의 레코드들과 서로 multiple 하게 관련있는 관계입니다.
하지만 세일즈포스의 ERD에서는 다대다 관계를 직접 만들 수 없습니다.
두 오브젝트를 다대다 관계로 만들어 주기 위해선 두 오브젝트를 연결해주는 다른 object가 필요합니다.
You can use master-detail relationships to model many-to-many relationships between any two objects. A many-to-many relationship allows each record of one object to be linked to multiple records from another object and vice versa.
Junction Object
다대다 관계의 두 오브젝트를 연결해주기 위해 사용하는 중간 오브젝트를 Junction 오브젝트라고 합니다.
세일즈포스에서는 처음 연결하려는 두 오브젝트와 마스터-디테일 관계인 중간 오브젝트를 Junction 오브젝트로 정의하고 있습니다.
A custom object with two master-detail relationships. Using a custom junction object, you can model a “many-to-many” relationship between two objects.
저의 의문은 두 Parent Object와 Lookup 관계로 이어진 Child Object는 Junction Object가 아닌가? 였는데, 정션 오브젝트의 정의를 보면 아마 정확하게는 '아니다' 일 것 같습니다.
Junction Object의 특징
Junction Object의 Owner는 누구일까요?
정션 오브젝트는 두 Master 오브젝트를 가집니다. 그리고 Master-Detail Relationship의 특성상 Detail object는 Master의 Owner를 상속받습니다.(그래서 Detail 오브젝트에는 오너 필드가 보이지 않습니다.)
그럼 Junction Object의 오너는 두 마스터 오브젝트 중 어디서 상속 받아올까요? 두 마스터의 오너가 다를 경우도 많을테니까요.
처음엔 두 마스터의 오너 모두 Child의 오너가 되지 않을까 생각했습니다.
Junction Object를 만드는 방법을 보면 답이 있습니다. Junction Object를 생성하고 Master-detail relationship 필드에 먼저 연결한 Master Object를 primary relationship으로 정의합니다. (그 다음 연결한 오브젝트는 secondary 입니다.)
relationship에 order를 부여하고 0이면 primary, 1이면 secondary 가 됩니다.
detail 오브젝트로서 상속 받아야하는 속성들은 primary relationship의 master object에서 상속받습니다.


primary relationship의 object로부터 상속받는 속성은 다음과 같습니다.
- 페이지 컬러, 아이콘 등
- 레코드 오너
- Division
Junction 오브젝트 덕분에 많은 공부를 하게 되었네요.
항상 help 문서를 열심히 봐야겠습니다 :)
참고
- Object Relationships Overview
- Considerations for Object Relationships
- Create a Many-to-Many Object Relationship
'세일즈포스 > 세일즈포스' 카테고리의 다른 글
AI Now unTour Agentforce 101 - 세일즈포스 개발자 그룹 (0) | 2024.11.28 |
---|---|
Salesforce Enhanced Lightning UI: 생산성을 높이는 새로운 디자인 혁신 (0) | 2024.11.13 |
Salesforce AppExchange에서 앱 버전 관리하기: 기본 개념 이해하기 (1) | 2024.11.10 |
Junction object는 Master-Detail 관계로만 이어져야할까요?
ERD를 그리거나 다른 ERD 모델들을 확인해보면 Junction object들이 많이 보입니다.
세일즈포스 어드민 수업에서 다룬 junction object는 두 개의 Master Object를 이어주는 Detail Object였습니다.
하지만 세일즈포스에서는 Lookup Relationship으로 이루어진 Many-to-Many 관계의 child object도 만들 수 있거든요.
이 경우에는 Junction object가 아닌걸까요??
Lookup관계로 이루어지면 정션 오브젝트가 아닌지를 알고 싶었는데,
명확한 답변을 찾지 못해서 결국 공식 문서들을 찾아보다 알게된 내용을 정리해봤습니다.
Many-to-Many Object Relationship
말 그대로 한 오브젝트 안의 레코드들이 다른 오브젝트의 레코드들과 서로 multiple 하게 관련있는 관계입니다.
하지만 세일즈포스의 ERD에서는 다대다 관계를 직접 만들 수 없습니다.
두 오브젝트를 다대다 관계로 만들어 주기 위해선 두 오브젝트를 연결해주는 다른 object가 필요합니다.
You can use master-detail relationships to model many-to-many relationships between any two objects. A many-to-many relationship allows each record of one object to be linked to multiple records from another object and vice versa.
Junction Object
다대다 관계의 두 오브젝트를 연결해주기 위해 사용하는 중간 오브젝트를 Junction 오브젝트라고 합니다.
세일즈포스에서는 처음 연결하려는 두 오브젝트와 마스터-디테일 관계인 중간 오브젝트를 Junction 오브젝트로 정의하고 있습니다.
A custom object with two master-detail relationships. Using a custom junction object, you can model a “many-to-many” relationship between two objects.
저의 의문은 두 Parent Object와 Lookup 관계로 이어진 Child Object는 Junction Object가 아닌가? 였는데, 정션 오브젝트의 정의를 보면 아마 정확하게는 '아니다' 일 것 같습니다.
Junction Object의 특징
Junction Object의 Owner는 누구일까요?
정션 오브젝트는 두 Master 오브젝트를 가집니다. 그리고 Master-Detail Relationship의 특성상 Detail object는 Master의 Owner를 상속받습니다.(그래서 Detail 오브젝트에는 오너 필드가 보이지 않습니다.)
그럼 Junction Object의 오너는 두 마스터 오브젝트 중 어디서 상속 받아올까요? 두 마스터의 오너가 다를 경우도 많을테니까요.
처음엔 두 마스터의 오너 모두 Child의 오너가 되지 않을까 생각했습니다.
Junction Object를 만드는 방법을 보면 답이 있습니다. Junction Object를 생성하고 Master-detail relationship 필드에 먼저 연결한 Master Object를 primary relationship으로 정의합니다. (그 다음 연결한 오브젝트는 secondary 입니다.)
relationship에 order를 부여하고 0이면 primary, 1이면 secondary 가 됩니다.
detail 오브젝트로서 상속 받아야하는 속성들은 primary relationship의 master object에서 상속받습니다.


primary relationship의 object로부터 상속받는 속성은 다음과 같습니다.
- 페이지 컬러, 아이콘 등
- 레코드 오너
- Division
Junction 오브젝트 덕분에 많은 공부를 하게 되었네요.
항상 help 문서를 열심히 봐야겠습니다 :)
참고
- Object Relationships Overview
- Considerations for Object Relationships
- Create a Many-to-Many Object Relationship
'세일즈포스 > 세일즈포스' 카테고리의 다른 글
AI Now unTour Agentforce 101 - 세일즈포스 개발자 그룹 (0) | 2024.11.28 |
---|---|
Salesforce Enhanced Lightning UI: 생산성을 높이는 새로운 디자인 혁신 (0) | 2024.11.13 |
Salesforce AppExchange에서 앱 버전 관리하기: 기본 개념 이해하기 (1) | 2024.11.10 |