본문 바로가기
개발/데이터베이스

[RDB] 자기참조관계 모델링 기법

by Devsong26 2023. 11. 22.

자기참조관계(Self Relationship, Recursive Relationship)는 하나의 엔티티타입 내에서 엔티티와 엔티티가 관계를 맺고 있는 형태의 관계입니다.

 

Q) 언제 자기참조관계 모델링을 사용해야 할까요?

A) 동일한 엔티티타입의 엔티티들이 상호 간에 계층적으로 데이터가 구성될 때 자기참조관계로 표현합니다.

 

Q) 동일한 식별자와 속성을 개별로 유지한다면 어떻게 될까요?

A) 기존에 형성된 관계에 추가적인 관계가 발생하거나 변경되는 경우에 새로운 엔티티타입이 추가되어 관련된 SQL이 수정되어야 합니다. 그러므로 유지보수 시에 변경 개발 비용이 발생한다는 점에서 관리가 쉽지 않은 모델이 되는 것입니다.

 

 

자기참조관계의 종류

구분 내용
1:1 자기참조관계 모델
데이터 사건번호 하나에 자사건번호가 한 개만 올 수 있는 경우
사례 관련 사건, 관련 계좌 등
1:M 자기참조관계 모델
데이터 상위 조직 하나에 여러 개의 하위 조직이 올 수 있고, 하위 조직 하나는 그 하위 조직 여러 개를 거느리는 경우
사례 조직, 게시판의 Q&A, 통합메뉴, BOM
M:N 자기참조관계 모델
데이터 부품 1은 상위 부품으로 2도 구성할 수 있고 4도 구성할 수 있으며
관계의 표현이 M:N으로 표현되어 모델링
사례 BOM, 관련 계좌

 

 

 

자기참조관계에서 주의할점

  • 관계의 연결이 되는 속성에 인덱스를 설정합니다.
  • 자기참조관계에 적합한 SQL 문장을 실행합니다.

 

 

M:N 자기참조관계

 

M:N 관계의 경우 실제로 물리적인 테이블에서는 동일한 스키마를 구성할 수 없다는 것이 관계형 데이터베이스의 특징입니다. 그래서 일반 데이터 모델에서는 관계 엔티티타입을 이용하여 M:N 관계를 해소하는데, M:N 자기참조관계에서도 관계 엔티티타입을 이용하여 그 관계를 해소하는 방법을 적용하고 있습니다. 하나의 엔티티타입 내에서는 복수의 관계를 표현하는 것이 불가능하므로 관계 엔티티타입을 이용하여 데이터를 처리할 수 있도록 한 것입니다.

 

M:N 자기참조관계의 해소

 

그러나 M:N 관계를 이와 같이 해소하여 데이터를 처리할 경우 두 개의 엔티티타입을 항상 조인해야 하고, 자기참조되는 데이터도 복잡해진다면 두 개의 엔티티타입을 조인하는 것이 번거로울 수 있습니다.

 

따라서 가급적 M:N 관계는 1:M 관계로 데이터를 조정하여 처리하도록 해보고 업무적인 조정이 불가능할 경우에만 관계 엔티티타입을 이용하여 모델링에 적용하도록 하는 것이 좋습니다.

 

 


 

참고 도서

- 아는 만큼 보이는 데이터베이스 설계와 구축