제6정규형(6NF)의 정의
제6정규형(Sixth Normal Form, 6NF)은 데이터베이스 정규화 단계 중 가장 높은 수준의 정규형으로, 관계 변수(relation variable)를 더 이상 분해할 수 없는(irreducible) 구성 요소까지 분해한 형태입니다.
하나의 릴레이션이 6NF를 만족하려면 다음 두 가지 조건을 충족해야 합니다.
- 해당 릴레이션이 5NF(제5정규형)를 만족할 것
- 릴레이션에 존재하는 모든 조인 종속성(join dependency)이 자명(trivial)할 것
여기서 '자명한 조인 종속성'이란, 후보 키와 하나의 속성으로만 구성된 조인 종속성을 의미합니다. 즉, 6NF에서는 각 릴레이션이 후보 키 하나와 단일 비키 속성만을 가지도록 분해됩니다.
6NF 예제 1: 학생 정보 분해
다음과 같은 학생(Student) 릴레이션을 살펴보겠습니다.
<Student>
| Enrollment_No (등록번호) | Name (이름) | Marks (점수) |
위 릴레이션에서 가능한 조인 종속성은 다음과 같습니다.
| {Enrollment_No, Marks} {Enrollment_No, Name} |
이 릴레이션을 6NF로 분해하면 아래와 같이 두 개의 릴레이션으로 나뉩니다.
<StudentInformation>
| Enrollment_No (등록번호) | Name (이름) |
<ResultInformation>
| Enrollment_No (등록번호) | Marks (점수) |
6NF 예제 2: 실제 데이터가 포함된 분해
이번에는 실제 데이터가 들어 있는 예제를 통해 분해 과정을 자세히 살펴보겠습니다.
<StudentMarks>
| Student_ID | Student_FirstName | Student_LastName | Marks |
| S01 | Tom | Alter | 90 |
| S02 | Jacob | Watson | 80 |
| S03 | Harry | Smith | 85 |
위 테이블을 6NF에 맞추어 세 개의 릴레이션으로 분해하면 다음과 같습니다.
<StudentFirstName>
| Student_ID | Student_FirstName |
| S01 | Tom |
| S02 | Jacob |
| S03 | Harry |
<StudentLastName>
| Student_ID | Student_LastName |
| S01 | Alter |
| S02 | Watson |
| S03 | Smith |
<StudentResult>
| Student_ID | Marks |
| S01 | 90 |
| S02 | 80 |
| S03 | 85 |
6NF의 한계와 실무 적용
위와 같이 분해된 테이블들은 모두 6NF를 만족하지만, 눈치챘겠지만 실제 현업 환경에서 이러한 극단적인 분해를 적용하는 경우는 거의 없습니다.
그 이유는 다음과 같습니다.
- 조인 연산 부담 증가: 테이블이 지나치게 많이 분해되면, 원래 데이터를 조회할 때마다 여러 테이블을 조인해야 하므로 성능 저하가 발생할 수 있습니다.
- 관리 복잡성: 릴레이션 수가 늘어날수록 스키마 설계와 유지보수가 복잡해집니다.
따라서 6NF는 주로 시간에 따라 변하는 데이터(시간적 데이터, temporal data)를 다루는 특수한 상황이나, 데이터 웨어하우스 및 고도의 무손실 분해가 필요한 이론적 환경에서 활용됩니다. 일반적인 온라인 트랜잭션 처리(OLTP) 시스템에서는 3NF나 BCNF 수준의 정규화가 실무적으로 더 적합합니다.