트리구조처럼 무한히 확장해나가는 모델을 데이터베이스로 어떻게 표현할까?
1:M 재귀적 관계
분류체계 또는 Directory 구조와 같이 1:M 관계가 끊임없이 나아가는 모델이 있다.
이럴 경우에 자식 테이블을 무한히 만들어주어야만 할까?
테이블 안에 PK와 FK를 같이 만들어 줌으로써 해결할 수 있다.
회사와 부서 관계를 예시로 들어보자. 회사에는 여러 부서가 있고, 부서 속에 또 여러 부서가 존재할 수 있다. (EX. 삼성전자 > 총무부 > 총무1팀 > 총무1과...)
이 경우 '상위부서ID'란 Column을 만든 뒤 PK인 부서 ID를 참조함으로써 무한히 확장해나가는 1:M 관계를 표현할 수 있다.
결국 하나의 테이블 안에 모든 부서 간의 1:M 관계를 표현할 수 있게 된다.
이렇게 설계된 테이블을 출력하면 다음과 같다.
여기서 부서ID가 1인 총무부인 상위부서ID가 NULL임을 알 수 있다. 이는 총무부가 부모가 NULL인 최상위 계층임을 알려준다.
'Programming > 데이터베이스' 카테고리의 다른 글
[PostgreSQL] json, jsonb 타입과 연산자 (0) | 2024.01.21 |
---|---|
M:N 관계 (0) | 2021.07.21 |
1:M 관계 (0) | 2021.07.20 |
주 식별자 (Primary Key) 설계 (0) | 2021.07.20 |
관계형 데이터베이스(RDBMS), 주식별자와 후보식별자 (0) | 2021.07.17 |