CS (Computer Science)

[개발 공부 110일차] DB 개론 | 3차 정규화, 보이스-코드 정규화, 4차/5차 정규화

MOLLY_ 2024. 10. 1. 07:00
728x90

< 목차 >

0. TL;DR

1. 정규화

2. 오브젝트 분석과 정규화 엔티티 타입 분석 차이점

3. 1차 정규화

4. 2차 정규화

 

 

0. TL;DR

  1. 3차 정규화: 속성에서 종속적인 속성을 분리하는 것
  2. 보이스-코드 정규화: 복잡한 식별자 관계에 의해 발생하는 문제를 해결하기 위해 3차 정규화를 보완한 정규화
  3. 4차 정규화: 보이스-코드 정규화를 만족해야 하며, 다치 종속(Multi-Value Attribute)이 없어야 하는 정규화
  4. 5차 정규화: 중복을 제거하기 위해 분해할 수 있는 만큼 전부 분해하는 과정

 

 

1. 3차 정규화

: 속성에서 종속적인 속성을 분리하는 것

 

  • 1차 정규화 및 2차 정규화 이후, 속성 간의 종속관계가 발생한다면 3차 정규화 진행
  • 이행적 함수 종속 제거, 기본키가 아닌 모든 속성 간에서는 서로 종속될 수 없음

 

 

[예시] 학생 테이블 - 학과번호 종속

⇒ 학생 테이블의 경우 기본키는 학번이며, 학과 속성의 경우 학과번호에 종속되고 있다.

 

기본키가 아닌 속성들 간에는 서로 종속관계가 될 수 없다.

 

이러한 경우,

아래와 같이 학과 테이블을 따로 만들어 학생 테이블과 학과 테이블을 참조하도록 구성해야 한다.

학생 테이블에서 학과 테이블을 참조할 수 있게 해야 한다.

 

 

2. 보이스-코드 정규화

: 복잡한 식별자 관계에 의해 발생하는 문제를 해결하기 위해 3차 정규화를 보완한 정규화

 

  • 테이블에 존재하는 식별자가 여러 개 존재할 경우, 식별자가 중복되어 나타나는 현상을 제거하기 위한 것
  • 보이스-코드 정규화 대상은 3차 정규화를 마친 테이블에 해당

 

즉, 3차 정규화를 마친 뒤에도 식별자가 여러 개 존재할 경우에 해당 테이블만 보이스-코드 정규화를 하면 된다고 보면 된다.

 

 

예시

기본키가 아닌 속성은 기본키의 속성을 결정할 수 없다.

 

⇒ 교수는 하나의 강의만 담당의 사전조건 필요함. 교수의 이름만으로도 강의(기본키 속성)을 결정 가능함

이러한 경우,

아래와 같이 ‘교수는 하나의 강의를 담당한다’는 조건이 들어가 있기 때문에 테이블을 분할해야 한다.

 

 

3. 함수 종속성 작업 정리

  1. 1차, 2차, 3차, 보이스-코드 정규화 작업까지 진행됐으면 함수의 종속성에 관한 모든 작업은 완료된 상태임
  2. 더 이상 종속적인 관계로 인한 정규화 작업은 필요 없음
  3. 하지만 하나의 테이블에 2개 이상의 독립적인 다치 종속(Multi-Value Attribute)은 존재할 가능성 있음

 

 

4. 4차 정규화

: 보이스-코드 정규화를 만족해야 하며, 다치 종속(Multi-Value Attribute)이 없어야 하는 정규화

 

  • 동시에 발생하는 여러 엔티티 타입 간의 관계에서 기인하는 경우가 많음
  • 다치 종속처럼 보여도 속성 간 종속관계가 존재한다면 다치 종속관계에 의한 4차 정규화 대상이 될 수 없음

 

 

4차 정규화가 적용될 수 있는 예시

취미와 강의 엔티티 타입에서는 아무런 관계가 존재하지 않음

 

  1. 한 명의 학생은 여러 취미를 가지고 있을 수 있다.
  2. 한 취미는 여러 학생이 가지고 있을 수 있다.
  3. 한 명의 학생은 여러 개의 강의를 들을 수 있다.
  4. 한 강의는 여러 명의 학생을 가질 수 있다.

 

⇒ 학생번호 1개에 과목과 여러 개의 취미가 종속된다.

강의와 취미는 관계가 없는 독립적인 관계지만 같은 테이블에 학생이라는 컬럼에 다치 종속되어 중복이 발생한다.

 

이러한 경우,

아래와 같이 테이블을 변경하면 여전히 다치 종속을 가지지만 2개 이상의 컬럼이 하나의 컬럼에 다치 종속되지 않아 4차 정규화를 만족한다.

 

 

5. 5차 정규화

: 중복을 제거하기 위해 분해할 수 있는 만큼 전부 분해하는 과정

 

 

  • Project Join Normal Form(PJNF) 라고도 불림
  • 4차 정규화(4NF)를 만족해야 함
  • 조인 종속(Join Dependency)이 없어야 함
  • 조인 연산을 했을 때, 데이터 손실이 없어야 함

 

 

728x90