이번 글에서는 데이터베이스의 자기참조관계와 결과를 출력하는 방법에 대해 공유하고자 합니다.
자기참조관계?
하나의 엔티티가 다른 엔티티가 아닌 자기 자신과 관게를 맺는 타입으로 순환관계 혹은 자기참고관계라 불립니다.
이 기법은 자기가 자기를 참조하는 구조로, 조직도를 표현할 때 자주 사용합니다.
자기참조관계는 어떤것이 있을까?
1:1 자기참조관계
1:N 자기참조관계
N:N 자기참조관계
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와 조인을 한 후 표현한다면 위의 예시처럼 메인부서와 서브부서가 표시될 것입니다.
마치며
이번 기회를 통해 자기참조쿼리가 많이 쓰이는 쿼리가 아니지만 이번 기회를 통해 조금 더 알아가고 쉽게 접근할 수 있는 계기가 되었습니다. 긴 글 읽어주셔서 감사합니다.
'기술 > 국문' 카테고리의 다른 글
Github Action으로 EC2 배포 시 tcp connection refused 해결방법 (0) | 2022.09.14 |
---|---|
VSCode 터미널 오류 해결하기 (0) | 2021.07.05 |