교육과정 기록/💾DB & SQL

정규화 (Normalization)

춘식이왔엉 2022. 5. 9. 18:16

*논리적 모델링의 마지막 작업

*논리적 모델링에 따라, 사상(mapping) 작업과 상세속성까지 추출된 릴레이션 목록들은 아직까지 "비정상" 상태임.

- 정의 : 이상현상(Anormaly)이 포함된 릴레이션들을, "무손실 분해"를 통해 이상현상을 제거하는 과정

- 효과 : 중복데이터 저장을 없애고, 이상현상이 발생되지 않도록 함으로써, 데이터의 무결성을 최대한 보장받을 수 있다.


 

< 이상현상 - Anomaly >

- 삭제이상 : tuple 삭제 시, 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상

    --> 연쇄삭제 문제 발생

- 삽입이상 : tuple삽입 시, 특정 속성에 해당하는 값이 없어 Null값을 입력해야하는 현상

    --> Null값 문제 발생

- 수정(갱신)이상 : tuple 수정 시, 중복된 데이터의 일부만 수정되어 데이터의 불일치 문제가 발생하는 현상

    --> 불일치 문제 발생

 

< 함수 종속성 > 

- 어떤 속성 A의 값을 알면 다른 속성 B의 값이 유일하게 정해지는 의존 관계를

   '속성 B는 속성 A에 종속한다' 혹은 '속성 A는 속성 B를 결정한다' 라고 함.

- A → B 로 표기하며, A를 B의 결정자라고 함.

 

* 함수 종속성과 기본키

- 릴레이션의 함수 종석성을 파악하기 위해서는 우선 기본키를 찾아야 함.

- 기본키가 함수 종속성에서 어떤 역할을 하는지 알면, 이상현상을 제거하는 정규화 과정을 쉽게 이해할 수 있음

- 릴레이션 R(K, A1, A2, A3, ....,An)에서, K가 기본키면, K → R이 성립.

  즉, 기본키는 릴레이션의 모든 속성에 대해 결정자(determinant)임

 

* 이상현상과 결정자

이상현상은 한 개의 릴레이션에 두 개 이상의 정보가 포함되어 있을 때 나타남. 

    ( 기본키가 아니면서 결정자인 속성이 있을 때 발생한다. )

- 이상현상을 제거하려면, 릴레이션을 분해한다.


- 분해할 때 부분 릴레이션의 결정자는 원래 릴레이션에 남겨두어야 함. 
그래야 분해된 부분 릴레이션이 원래 릴레이션과 관계를 형성할 수 있음.
 

결과



 

< 정규화 >

- 이상현상이 발생하는 릴레이션을 분해하여 이상현상을 없애는 과정

- 이상현상이 있는 릴레이션은 이상현상을 일으키는 함수 종속성의 유형에 따라 등급을 구분 가능. 

- 릴레이션은 정규형 개념으로 구분하며, 정규형이 높을수록 이상현상은 줄어듦.

 

1NF (Normal Form) : 제 1정규화

→ 릴레이션 R의 모든 속성 값이 원자값을 가질 때.

2NF

→ 릴레이션 R이 제 1정규형이고, 기본키가 아닌 속성이 기본키에 완전 함수 종속일 때.

3NF

→ 릴레이션 R이 제 2정규형이고, 기본키가 아닌 속성이 기본키에 비이행적으로 종속할 때(직접 종속).

→ 이행적 종속이란 A→B, B→C가 성립할 때 A→C가 성립되는 함수 종속성

BCNF

→ 릴레이션 R에서, 함수 종속성 X→Y가 성립할 때, 모든 결정자 X가 후보키일 때.

4NF (다치종속 제거)

5NF (조인종속 제거)