💡 핵심 인사이트
제5정규형(5NF)은 데이터베이스 정규화 이론의 가장 마지막 종착역(최종 보스)입니다.
4NF까지 만족한 완벽해 보이는 테이블이라도, "3개 이상의 테이블로 쪼갰을 때 무손실 복원이 가능한 기형적 연결 구조(조인 종속성, JD)"가 숨어있다면, 이를 아예 3개의 파편 테이블로 영구 분해하여 마지막 남은 한 톨의 중복마저 멸균해버리는 상태를 말합니다. (일명 투영-조인 정규형, PJNF).
Ⅰ. 5NF의 공식적 정의와 조건
어떤 릴레이션(테이블)이 제5정규형을 만족하려면 아래의 지옥 같은 관문을 모두 통과해야 합니다.
- 선행 조건: 기본적으로 **제4정규형(4NF)**을 100% 만족하고 있어야 합니다. (함수적 종속, 다치 종속 모두 박멸 상태).
- 5NF 절대 조건: 테이블 내에 존재하는 모든 **조인 종속성(Join Dependency)**이 오직 릴레이션의 후보 키(Candidate Key)들을 통해서만 성립해야 합니다.
- 쉽게 말해, 테이블의 짱(후보 키)이 아닌 일반 속성들끼리 둥글게 원형 꼬리물기(A ➔ B ➔ C ➔ A)를 하여 만들어진 비정상적인 조인 종속성은 무조건 3개의 테이블로 찢어서(투영) 격리시켜야 한다는 뜻입니다.
Ⅱ. 4NF 통과 테이블의 마지막 찌꺼기 (5NF 위반)
앞장(109번)에서 보았던 기형적인 테이블을 다시 소환합니다.
- [ 테이블 R (과목, 강사, 교재) ]
- 이 테이블은 컬럼 3개가 통째로 묶여서 거대한 기본 키 하나로 동작합니다. 따라서 부분 종속(2NF), 이행 종속(3NF), 다치 종속(4NF) 위반에 해당되지 않아 모든 검사를 통과한 것처럼 보입니다.
- 문제의 발견: 하지만 개발자가 이 테이블의
(과목, 강사),(강사, 교재),(과목, 교재)데이터를 수정(UPDATE)하려다 보니, 3개의 값이 둥글게 꼬리를 물고 얽혀 있어서(조인 종속성) **단 1개만 수정하면 세 값의 균형이 깨져버리는 '마지막 갱신 이상'**이 기어이 터져버립니다. 중복의 찌꺼기가 여전히 남아있었던 것입니다.
Ⅲ. 5NF 수술 집도 (3단 분해)
이 더러운 순환 고리를 끊는 유일한 방법은, 앞서 증명했던 **'무손실 3단 분리'**를 그대로 실행하여 원본 테이블을 영원히 없애버리는 것입니다.
[ 수술 완료: 5NF 달성 ] 원본 테이블 R을 아예 산산조각 내어 3개의 아주 작은 테이블로 쪼개어 영구 보관합니다.
- 테이블 R1:
(과목, 강사) - 테이블 R2:
(강사, 교재) - 테이블 R3:
(과목, 교재)
이제 각 테이블에는 딱 2개의 짝꿍 데이터만 군더더기 없이 들어있습니다. 강사가 과목을 바꾸든 교재를 바꾸든, 그냥 해당 조각 테이블(R1이나 R2)에 가서 단 1줄만 수정하면 끝납니다. 데이터 꼬임 현상과 중복이 우주에서 완벽하게 박멸되었습니다.
Ⅳ. 5NF의 실무적 한계 (이론 속의 유니콘)
"우와! 완벽하네요. 당장 우리 회사 DB도 5NF로 바꿉시다!" ➔ DBA에게 뺨을 맞습니다.
- 5NF로 쪼개놓으면, 나중에 "어떤 강사가 어떤 과목에서 무슨 교재를 쓰는가?"라는 단순한 질문 하나를 위해 무려 3개의 테이블을 조인(JOIN)해서 가져와야 합니다.
- 실무의 수천만 건 데이터에서 3중 조인이 걸리면 DB CPU가 100%를 치고 화면이 10초 동안 멈춰버립니다(성능 지옥).
- 따라서 제5정규형(5NF)은 이론적 완벽함을 증명하기 위한 학술적 끝판왕일 뿐, 실제 현장(기업)에서는 성능을 위해 3NF나 기껏해야 BCNF까지만 정규화하고 멈추는 것이 절대적인 상식입니다.
📢 섹션 요약 비유: 제5정규형(5NF)은 결벽증이 있는 정리 전문가가 집안의 먼지(데이터 중복) 한 톨까지 없애겠다며 **'모든 물건을 1종류씩 개별 진공 포장하여 서랍 100개에 따로따로 넣어버린 극한의 무균실 상태'**입니다. 곰팡이(에러)는 절대 안 피겠지만, 라면 하나 끓여 먹으려면 서랍 3곳을 열어 면, 스프, 건더기를 따로따로 찾아 합쳐야(3중 JOIN) 하는 끔찍한 실사용의 불편함을 동반합니다.