Database

Chapter 09. 정규화

JinWooHong Dev 2019. 11. 20. 13:58

1. 정규화의 개념과 이상 현상

1-1. 정규화의 개념

  • 함수 종속성을 이용하여, 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해해 이상 현상이 발생하지 않는 바람직한 릴레이션으로 만들어나가는 과정이다.

1-2. 이상 현상의 종류

  • 삽입 이상 : 새 데이어를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제
  • 갱신 이상 : 중복 투플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제
  • 삭제 이상 : 투플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제

1-3. 정규화의 필요성

  • 관련 없는 속성들을 하나의 릴레이션에 모아두고 있어 이벤트참여 릴레이션에 여러 이상 현상이 발생한다. 이상 현상이 발생하지 않도록 하려면, 관련 있는 속성들로만 릴레이션을 구성해야 되는데 이를 위해 필요한 것이 정규화다.

 

2. 함수 종속

X -> Y ( X는 결정자,  Y는 종속자)

  • X가 Y를 함수적으로 결정한다.
  • Y가 X에 함수적으로 종속되어 있다.

함수 종속 관계를 판단할 때 현재 시점에 릴레이션에 포함된 속성 값만으로 판단하면 안 된다는 것이다.

3. 기본 정규형과 정규화 과정

3-1. 정규형(Normal Form)이란?

  • 릴레이션이 정규화된 정도이며 크게 기본 정규형과 고급 정규형으로 나뉜다.
  • 기본 정규형에는 제1정규형, 제2정규형, 제3정규형, 보이스/코드 정규형이 있다.
  • 고급 정규형에는 제4정규형, 제5정규형이 있다.

정규형의 종류

3-2. 제1 정규형

  • 릴레이션에 속한 모든 속성의 도메인이 원자 값(Atomic Value)으로만 구성되어 있으면 제 1 정규형에 속한다.

 

3-3. 제2 정규형

  • 릴레이션이 제1 정규형에 속하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속되면 제2 정규형에 속한다.

 

3-4. 제3 정규형

  • 릴레이션이 제2 정규형에 속하고 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않으면 제3 정규형에 속한다.

 

3-5. 보이스/코드 정규형

  • 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키이면 보이스/코드 정규형에 속한다.

 

3-6. 제4 정규형과 제5 정규형

  • 고급 정규형으로 분류되는 제4 정규형은 릴레이션이 보이스/코드 정규형을 만족하면서, 함수 종속이 아닌 다치 종속(MVD : Multi Valued Dependency)을 제거해야 만족할 수 있다. 그리고 제5 정규형은 릴레이션이 제4 정규형을 만족하면서 후보키를 통하지 않는 조인 종속(Join Dependency)을 제거해야 만족할 수 있다.

 

3-7. 정규화 과정 정리

정규화 과정

 

'Database' 카테고리의 다른 글

Chapter 10. 트랜잭션  (0) 2019.11.20
Chapter 08. 데이터베이스 설계  (0) 2019.11.14
Chapter 07. 데이터베이스 언어 SQL  (0) 2019.10.18
Chapter 06. 관계 데이터 연산  (0) 2019.10.17
Chapter 05. 관계 데이터 모델  (0) 2019.10.17