💡 핵심 인사이트
제3정규형(3NF)은 부분 종속(2NF)까지 모두 치료하여 1차 관문을 넘은 깨끗한 단일 키 테이블에 남아있는 마지막 찌꺼기, "일반 쫄따구 컬럼이 또 다른 쫄따구 컬럼을 지배하는 꼬리물기(이행적 함수적 종속, $X \rightarrow Y \rightarrow Z$)"를 메스로 도려내어 테이블을 또 한 번 찢는 수술입니다.
3NF까지만 오면 실무에서 마주하는 대부분의 중복과 이상 현상(Anomaly)은 99% 치유됩니다.


Ⅰ. 2NF를 통과한 사원 테이블의 숨겨진 병(3NF 위반)

기본 키가 단 1개뿐인 훌륭한(2NF를 자동 패스한) 사원 테이블이 있습니다.

  • 테이블 스키마: [사번](PK), 이름, 부서코드, 부서명, 부서위치

[ 종속성 X-Ray 분석 (다단계 하청 구조) ]

  1. $X \rightarrow Y$: 사번(PK)을 알면, 그 사원이 일하는 부서코드가 결정됩니다. (정상 종속).
  2. $Y \rightarrow Z$: 그런데 테이블 끝자락에 있는 부서명부서위치는 누구를 보고 값이 정해질까요? 사원 개개인의 사번? 아닙니다. 이놈들은 오직 자신과 똑같은 일반 컬럼인 부서코드에만 맹목적으로 충성하며 값이 결정됩니다. (부서코드가 HR이면, 이름이 철수든 영희든 무조건 부서명은 인사팀, 위치는 강남으로 똑같이 복사되어 찍힘).
  3. 결과: 사번(X) ➔ 부서코드(Y) ➔ 부서명(Z) 로 이어지는 **이행적 함수적 종속(Transitive Dependency)**이 발생했습니다.
  4. 부작용 (중복): 영업팀(SA)에 사원이 1,000명 있다면, 저 테이블에는 "SA = 영업팀 = 종로"라는 똑같은 부서 정보가 쓸데없이 1,000줄이나 중복해서 저장되는 엄청난 낭비와 갱신 이상이 터집니다.

Ⅱ. 3NF 수술 집도 (테이블 찢기)

치료법은 2NF와 똑같습니다. 건방지게 왕(PK)을 무시하고 뒤에서 자기들끼리 다단계 하청 조직을 만든 놈들(중간 보스와 떨거지)을 묶어서 새집(새 테이블)으로 쫓아냅니다.

수술 후 결과 (3NF 달성)

1. 사원 테이블 (메인 테이블)

  • 컬럼: [사번](PK), 이름, 부서코드(FK)
  • 조치: 다단계의 꼬리였던 부서명과 위치를 싹 다 날려버리고, 나중에 조인(Join)해서 찾아갈 수 있도록 중간 보스인 **부서코드 딱 하나만 외래 키(FK)**로 덜렁 남겨둡니다.

2. 부서 테이블 (쫓겨난 놈들 ➔ 독립 자회사 창업)

  • 컬럼: [부서코드](PK), 부서명, 부서위치
  • 조치: 쫓겨난 떨거지(부서명, 위치)들을 데리고 나가, 그들이 따르던 중간 보스인 **부서코드를 새 테이블의 완벽한 단독 짱(기본 키, PK)**으로 앉혀 줍니다.
  • 결과: 이제 "SA = 영업팀 = 종로"라는 데이터는 사원 테이블에 1,000번 반복되지 않고, 이 독립된 부서 테이블에 단 1줄만 영구적으로 깔끔하게 보관됩니다. (중복 제로!)

Ⅲ. 정규화의 실무적 딜레마 (왜 3NF에서 멈추는가?)

정규화는 뒤로 갈수록(BCNF, 4NF, 5NF) 테이블을 가루가 되도록 미친 듯이 잘게 찢습니다. 테이블이 1개일 때는 SELECT 한 번이면 조회가 끝났지만, 3NF를 거쳐 테이블이 3~4개로 찢어지면, 직원 이름과 부서 이름을 한 번에 화면에 띄우기 위해 수많은 테이블을 본드로 다시 이어 붙이는 조인(JOIN) 연산을 무겁게 돌려야 합니다.

조인이 많아지면 CPU 연산이 터지고 DB 조회 속도가 지옥으로 떨어집니다. 따라서 실무 DBA들은 보통 **제3정규형(3NF)**까지만 쪼개어 중복을 없앤 뒤, 극단적인 조회 성능이 필요한 화면에서는 오히려 테이블을 다시 합쳐버리는 **반정규화(De-normalization, 역정규화)**를 의도적으로 수행하는 타협을 합니다.

📢 섹션 요약 비유: 제3정규형은 회사 안의 **'다단계 외주 하청 금지법'**입니다. 원청(사번 PK)이 하청(부서코드)에 일을 줬더니, 그 하청이 몰래 재하청(부서명, 위치)을 주어 중간에서 돈(디스크 용량)을 빼먹으며 문제를 일으킵니다. 사장님(DBA)은 이를 적발하여, 그 하청 업체를 아예 **별도의 독립된 자회사(부서 테이블)**로 찢어내어 분리 시키고, 오직 합법적인 1:1 직통 계약(외래 키 조인)만 남겨두어 회계 장부를 투명하게 만듭니다.