1:M 재귀적 관계
Programming/데이터베이스

1:M 재귀적 관계

트리구조처럼 무한히 확장해나가는 모델을 데이터베이스로 어떻게 표현할까?

 

1:M 재귀적 관계

분류체계 또는 Directory 구조와 같이 1:M 관계가 끊임없이 나아가는 모델이 있다.

이럴 경우에 자식 테이블을 무한히 만들어주어야만 할까?

테이블 안에 PK와 FK를 같이 만들어 줌으로써 해결할 수 있다.

 

회사와 부서 관계를 예시로 들어보자. 회사에는 여러 부서가 있고, 부서 속에 또 여러 부서가 존재할 수 있다. (EX. 삼성전자 > 총무부 > 총무1팀 > 총무1과...)

이 경우 '상위부서ID'란 Column을 만든 뒤 PK인 부서 ID를 참조함으로써 무한히 확장해나가는 1:M 관계를 표현할 수 있다.

1:M 재귀적관계 예시1
1:M 재귀적관계 예시2

결국 하나의 테이블 안에 모든 부서 간의 1:M 관계를 표현할 수 있게 된다.

이렇게 설계된 테이블을 출력하면 다음과 같다.

여기서 부서ID가 1인 총무부인 상위부서ID가 NULL임을 알 수 있다. 이는 총무부가 부모가 NULL인 최상위 계층임을 알려준다.