본문 바로가기

CS/데이터베이스 DB

[데이터베이스] 정규형(Normal form)과 정규화(Normalization)

1. 이상(Anomaly)

1) 이상이란?

테이블에서 일부 속성들의 함수적 종속으로 인해 데이터의 중복이 발생하고

이 중복으로 인해 테이블을 삽입, 삭제, 갱신 시 문제가 발생하는 현상

 

2) 이상 종류

- 삽입 이상

- 삭제 이상

- 갱신 이상

2. 정규화(Normalization)

1) 정규화란

테이블을 손실 없이 분해하여 가능한 한 중복을 제거하고

테이블 삽입, 삭제, 갱신 시 이상이 발생하는 것을 줄이는 것이다.

 

2) 제 1 정규형(First Normal Form : 1NF)

테이블 R에 속한 모든 속성의 도메인이 원자 값으로만 되어야 한다.

 

제 1 정규형 방법 : 함수적 종속 PK → A가 있고,

B는 PK와 A를 제외한 속성들의 집합일 때

PK와 A로 이루어진 테이블과 PK와 B로 이루어진 테이블로 분해하는 것이다.

 

3) 제 2 정규형(Second Normal Form : 2NF)

테이블 R이 제 1 정규형을 만족하고

기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족하는 정규형.

즉 제 2 정규형은 부분 함수적 종속을 제거하는 것.

 

- 완전 함수적 종속이란?

  함수적 종속의 왼쪽이 기본키인 경우

  FD : PK → {...}

- 부분 함수적 종속이란?

  함수적 종속의 왼쪽이 기본키의 진부분집합일 때

  PK : {a, b} 일 때 

  FD : a → {...}

 

제 2 정규형 방법 : 부분 함수적 종속 a→b가 있고,

c는 a와 b를 제외한 속성들의 집합일 때,

a와 b로 이루어진 테이블과 a와 c로 이루어진 테이블로 분해한다.

 

3) 제 3정규형(Third Normal Form : 3NF)

테이블 R이 제 2정규형을 만족하고

기본키가 아닌 모든 속성이 기본키에 대하여

이행적 함수적 종속을 만족하지 않는 정규형

제 3정규형은 이행적 함수 종속을 제거하는 것.

 

- 이행적 함수 종속이란?

   A->B이고, B->C일 때 A->C를 만족하는 함수적 종속이다.

 

제 3정규형 방법 : 모든 함수적 종속에서 불필요한 속성을 제거한다.

이후, 각각의 함수적 종속들로 이루어진 테이블을 만든다.

 

4) 보이스 카드 정규형(Boyce-codd Normal form : BCNF)

테이블 R에서 모든 결정자가 후보키여야 한다.

즉 함수적 송족의 왼쪽이 모두 후보키가 될 수 있게 분해해야 한다.

 

보이스카드 정규형 방법 : 

보이스 카드 정규형에 어긋나는 함수적 종속 왼쪽을 A, 오른쪽을 B,

나머지 속성을 C라고 할 때

A와 B로 이루어진 릴레이션, A와 C로 이루어진 릴레이션으로 분해한다.