20

3NF: 꼬리에 꼬리를 무는 종속

Day 1: 같은 주소가 100군데 있어요 - 정규화

학습 목표

제3정규형(3NF)의 조건을 이해한다 이행 함수 종속 개념을 파악한다

제3정규형 (3NF)

조건: 2NF + 이행 함수 종속 제거

이행 종속 = A → B → C 관계에서 A → C로 건너뛰는 종속


3NF 위반 사례

직원 테이블을 보자:

에디터 로딩 중...

기본키: emp_id (단일키)

종속 관계:

  • emp_id → dept_id (직원 → 부서ID)
  • dept_id → dept_name (부서ID → 부서이름)
  • dept_id → dept_location (부서ID → 부서위치)

이행 종속: emp_id → dept_id → dept_name = emp_id가 dept_name을 직접 결정하는 게 아니라 dept_id를 거쳐서 결정함


왜 문제인가?

"개발팀이 7층으로 이사합니다"

에디터 로딩 중...

개발팀 직원이 100명이면? 100번 수정. 중복 저장의 문제!


3NF 적용

에디터 로딩 중...

이행 종속의 중간 다리(dept_id → dept_name)를 별도 테이블로 분리!


SQL로 보면

에디터 로딩 중...

3NF 체크리스트

체크질문
[ ]기본키가 아닌 컬럼이 다른 비키 컬럼을 결정하나?
[ ]A → B → C 형태의 종속 관계가 있나?

있다면 B를 별도 테이블로 분리!