본문 바로가기

기술/국문

자기참조관계가 뭐지?

이번 글에서는 데이터베이스의 자기참조관계와 결과를 출력하는 방법에 대해 공유하고자 합니다.

 

자기참조관계?

하나의 엔티티가 다른 엔티티가 아닌 자기 자신과 관게를 맺는 타입으로 순환관계 혹은 자기참고관계라 불립니다.

이 기법은 자기가 자기를 참조하는 구조로, 조직도를 표현할 때 자주 사용합니다.

 

자기참조관계는 어떤것이 있을까?

1:1 자기참조관계

1:1 자기참조관계 (출처 : https://needjarvis.tistory.com/)

 

1:N 자기참조관계

1:N 자기참조관계 (출처 : https://needjarvis.tistory.com/)

 

N:N 자기참조관계

N:M 자기참조관계 (출처 : https://needjarvis.tistory.com/)

 

3가지 방식이 있으나 보통은 1:N 관계를 표현할 때 가장 많이 쓰입니다.

 

이 관계를 이용하여 부서를 표현해보았고 메인 부서와 서브 부서를 아래와 같이 표시하고 싶을 때는 어떻게 해야할까? 

 

상하관계를 표시할 수 있는 방법은 다양하지만 테이블 내 parent_id라는 컬럼을 추가하여 부모의 id를 지정하였습니다.

 

id name parent_id
1 재무팀 null
2 재무1팀 1
3 재무2팀 1
4 경리팀 1
5 SW팀 null
6 모바일팀 5

 

이를 이용해 한번 쿼리로 나타내보겠습니다.

 

SELECT dep1.department_name as main_team, dep2.department_name as sub_team FROM department dep1, department dep2
	where dep1.department_id=dep2.department_parent_id;

department 테이블을 2개 선언안 후 department_id와 department_parent_id와 조인을 한 후 표현한다면 위의 예시처럼 메인부서와 서브부서가 표시될 것입니다.

 

마치며

이번 기회를 통해 자기참조쿼리가 많이 쓰이는 쿼리가 아니지만 이번 기회를 통해 조금 더 알아가고 쉽게 접근할 수 있는 계기가 되었습니다. 긴 글 읽어주셔서 감사합니다.