💡 핵심 인사이트
제4정규형(4NF)은 BCNF까지 통과하여 1:1, 1:N의 함수적 종속성(FD) 문제가 전혀 없는 깨끗한 테이블에서, 서로 아무런 논리적 연관이 없는 두 개 이상의 '다중값(M:N, 리스트형 값)'을 하나의 테이블에 우겨 넣었을 때 폭발하는 데이터 뻥튀기(다치 종속, MVD)를 제거하여 테이블을 찢는 고급 정규화 단계입니다.

(※ 107. 다치 종속성 문서에서 MVD의 발생 원리와 개념을 자세히 다루었으며, 본 문서는 4NF의 정의와 조건을 명확히 요약합니다.)


Ⅰ. 제4정규형 (4NF)의 공식적 정의

어떤 릴레이션 $R$이 제4정규형을 만족하려면, 다음 두 가지 까다로운 조건을 모두 통과해야 합니다.

  1. 선행 조건: 릴레이션 $R$은 기본적으로 **BCNF(보이스-코드 정규형)**를 완벽하게 만족하고 있어야 합니다. (함수적 종속성으로 인한 에러가 없어야 함).
  2. 4NF 절대 조건: 릴레이션 내에 의미 있는 다치 종속성(MVD, $X \twoheadrightarrow Y$)이 존재한다면, 그 결정자인 $X$는 반드시 릴레이션의 모든 속성을 결정하는 '슈퍼 키(Super Key)'여야만 합니다.
    • 쉽게 말해, 짱(슈퍼 키)이 아닌 일개 속성이나 복합키의 일부를 기준으로 무관한 다중값이 2개 이상 양 갈래로 나뉘어 폭발하면 안 된다는 뜻입니다.

Ⅱ. 4NF 위반을 눈으로 판별하는 법 (증상)

실무 테이블에서 4NF를 위반한 징후는 매우 직관적입니다.

  • 증상 1 (올(All) 기본 키): 보통 4NF 위반 테이블은 속성이 3~4개밖에 없는데, 그 **속성 전체를 하나의 덩어리로 묶어서 억지로 기본 키(PK)**로 쓰고 있습니다. (예: PK: {사원명, 기술, 언어})
  • 증상 2 (카테시안 곱의 폭발): 엑셀 데이터를 봤을 때, 똑같은 단어들이 곱하기 조합(경우의 수)처럼 규칙적으로 무한히 중복되어 찍혀있는 끔찍한 모양새를 띱니다.
    • 사원 A ➔ (기술1, 언어1), (기술1, 언어2), (기술2, 언어1), (기술2, 언어2) ...
  • 증상 3 (수정/삭제의 공포): "기술1" 이름을 "슈퍼기술1"로 바꾸려고 UPDATE를 날리려는데, 도대체 몇 줄을 고쳐야 꼬이지 않는지 짐작이 안 가는 무서운 짬뽕 테이블입니다.

Ⅲ. 4NF 수술의 기적 (무손실 분해)

이 짬뽕 테이블을 수술하는 유일한 방법은 **'관련 없는 다중값들을 서로 격리하는 무손실 분해'**입니다.

  • 원래 테이블: $R (X, Y, Z)$
    • (X를 기준으로 Y다중값과 Z다중값이 서로 무관하게 얽혀 뻥튀기된 상태)
  • 분해 결과:
    1. $R_1 (X, Y)$ : X와 Y의 관계만 남긴 깔끔한 테이블.
    2. $R_2 (X, Z)$ : X와 Z의 관계만 남긴 깔끔한 테이블.

이렇게 찢어놓은 $R_1$과 $R_2$를 나중에 짱인 $X$를 기준으로 자연 조인(Natural Join)하면, 이전에 뻥튀기되었던 원본 테이블 $R$이 단 한 치의 오차(손실)도 없이 똑같이 100% 복원됩니다 (무손실 분해의 완성).

📢 섹션 요약 비유: 제4정규형은 **'피자 뷔페의 재료 섞임 방지'**입니다. 피자 도우(사원) 위에 토핑(기술)과 소스(언어)를 올릴 때, 4NF 위반은 "페퍼로니+핫소스, 페퍼로니+갈릭, 치즈+핫소스, 치즈+갈릭..." 이 모든 조합의 완제품 피자 수십 판을 주방에 다 만들어 쟁여놓아 음식이 썩어 나가는(데이터 중복) 상황입니다. 4NF 정규화는 이를 찢어서 "페퍼로니 토핑 통 1개, 핫소스 통 1개"로 분리해 놓고, 손님이 주문할 때만(Join) 결합해서 낭비 0%의 쾌적한 주방 환경을 만드는 것입니다.