Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL

데이터베이스 제6정규형(6NF)이란? 개념과 예제로 쉽게 이해하기

제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_IDStudent_FirstNameStudent_LastNameMarks
S01TomAlter90
S02JacobWatson80
S03HarrySmith85

위 테이블을 6NF에 맞추어 세 개의 릴레이션으로 분해하면 다음과 같습니다.

<StudentFirstName>

Student_IDStudent_FirstName
S01Tom
S02Jacob
S03Harry

<StudentLastName>

Student_IDStudent_LastName
S01Alter
S02Watson
S03Smith

<StudentResult>

Student_IDMarks
S0190
S0280
S0385

6NF의 한계와 실무 적용

위와 같이 분해된 테이블들은 모두 6NF를 만족하지만, 눈치챘겠지만 실제 현업 환경에서 이러한 극단적인 분해를 적용하는 경우는 거의 없습니다.

그 이유는 다음과 같습니다.

  • 조인 연산 부담 증가: 테이블이 지나치게 많이 분해되면, 원래 데이터를 조회할 때마다 여러 테이블을 조인해야 하므로 성능 저하가 발생할 수 있습니다.
  • 관리 복잡성: 릴레이션 수가 늘어날수록 스키마 설계와 유지보수가 복잡해집니다.

따라서 6NF는 주로 시간에 따라 변하는 데이터(시간적 데이터, temporal data)를 다루는 특수한 상황이나, 데이터 웨어하우스 및 고도의 무손실 분해가 필요한 이론적 환경에서 활용됩니다. 일반적인 온라인 트랜잭션 처리(OLTP) 시스템에서는 3NF나 BCNF 수준의 정규화가 실무적으로 더 적합합니다.