DB

순환관계가 변경에 유연한 이유

타우루스 2026. 2. 11. 23:03
순환 관계가 변경에 유연한 이유
Database Design

순환 관계가
변경에 유연한 이유

Recursive Relationship — 하나의 테이블로 무한 계층을 표현하다

자기 자신을 참조하는 외래 키
CREATE TABLE Employee (
  emp_id      INT PRIMARY KEY,
  name        VARCHAR(50),
  manager_id INT REFERENCES Employee(emp_id) -- 자기 참조!
);
emp_idnamemanager_id역할
1김대표NULLCEO (루트)
2이부장1부장
3박과장2과장
4최대리3대리
5정사원3사원
고정 컬럼 방식 vs 순환 관계 방식

고정 컬럼 방식

level1_id INT
level2_id INT
level3_id INT
-- 4단계 추가 → ALTER TABLE 필요!

계층 깊이가 바뀔 때마다 스키마를 수정해야 합니다. 깊이가 고정되지 않으면 사용할 수 없습니다.

⚠ 구조(DDL) 변경 필요

순환 관계 방식

emp_id      INT PK
manager_id INT FK → 자기참조
-- 깊이 무한! 행만 추가하면 됨

계층이 몇 단계든 데이터(행) 추가만으로 표현됩니다. 스키마 변경이 전혀 없습니다.

✓ 데이터(DML)만 변경
조직 변경 = manager_id 값 하나만 수정

변경 전

김대표 이부장 박과장 최대리 정사원 최대리.manager_id = 2 (이부장)

변경 후 UPDATE 1건

김대표 이부장 박과장 최대리 정사원 최대리.manager_id = 3 (박과장) ✓
계층이 깊어져도 스키마는 그대로

3단계 → 5단계로 확장 INSERT 2건

L1 L2 L3 L4 ★ 김대표 이부장 박과장 최대리 정사원 신입A INSERT (6, '신입A', 4) ALTER TABLE 없이 깊이 확장 ✓
순환 관계의 4가지 유연성
01

깊이 무제한

계층이 3→7→20단계로 늘어나도 테이블 구조 변경 없이 행(row)만 추가합니다.

02

노드 이동 간편

FK 값 하나만 UPDATE하면 하위 트리 전체가 자동으로 따라 이동합니다.

03

DDL 변경 없음

새로운 분기·계층 추가 시 INSERT만 사용. ALTER TABLE이 필요 없습니다.

04

다양한 구조 표현

트리, 포레스트, 방향 그래프까지 동일한 스키마로 표현 가능합니다.

핵심 원리: 순환 관계는 구조적 복잡성을 스키마(DDL)가 아닌 데이터(DML)로 표현합니다.
따라서 계층의 깊이·폭·형태가 변해도 테이블 설계를 건드리지 않아 변경에 유연합니다.

'DB' 카테고리의 다른 글

인덱스를 사용할 수 없는 경우  (0) 2026.02.13
[뷰] 갱신제약  (0) 2026.02.13
Trigger  (0) 2026.02.11
[정규화] 3정규형 분해  (0) 2026.02.11
[빅데이터] HDFS(Hadoop Distributed File System)  (0) 2026.02.09