[정보처리기사 실기 - 데이터베이스] 정규화 (Normalization) :: 소림사의 홍반장!

1. 정규화의 개념

- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정으로, 정규화의 목적은 가능한 한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것이다.

 

- 정규화의 절차

이름

조건

제1정규형

반복 속성 제거, 모든 속성이 원자값을 가짐

제2정규형

부분 함수적 종속 제거

제3정규형

이행적 함수적 종속 제거

BCNF

후보키가 아닌 결정자 제거

제4정규형

다치종속 제거

제5정규형

조인 종속성 이용

 

 

 

2. 정규화 과정

 

< 주문 목록 > - 정규화 과정을 거치기 전 최초 테이블

 제품번호

제품명 

재고수량 

주문번호 

고객번호 

주소 

주문수량 

1001 

모니터 

2000 

A345

D347 

100

200 

서울

부산 

150

300 

1007 

마우스

9000 

A210

A345

B230 

300

100

200 

광주

서울

부산 

600

400

700 

1201 

키보드 

2100 

D347 

200 

부산 

300 

 

 


제 1정규화 과정 후 테이블 변화

 

반복되는 주문 관련 정보를 원자값으로 분리

<주문목록> 테이블 ---> <제품>, <제품주문> 두 개로 분리

 

 

< 제품 >

 

제품번호

제품명 

재고수량

1001 

모니터 

2000 

1007 

마우스 

9000 

1201 

키보드 

2100 

 

 

< 제품 주문 > 

주문번호

제품번호 

고객번호 

주소 

주문수량 

A345 

1001 

100 

 서울

150 

D347 

1001 

200 

 부산

300 

A210 

1007 

300 

 광주

600 

A345 

1007 

100 

 서울

400 

B230 

1007 

200 

 부산

700 

D347 

1201 

200 

 부산

300 

 


제 2정규화 과정 후 테이블 변화

 

주문번호에 함수적 종속이 되는 속성들을 분리

<제품주문> 테이블 ---> <주문목록>, <주문> 두 개로 분리

 

< 주문 목록 > 

 

 주문번호

제품번호 

주문수량 

A345

1001

150

D347

1001

300

A210

1007

600

A345

1007

400

B230

1007

700

D347

1201

300

 

 

< 주문 >

주문번호

고객번호

주소 

A345

 100

서울 

D347

 200

 부산

A210

 300

 광주

B230

 200

 부산

 


제 3정규화 과정 후 테이블 변화

 

<주문> 테이블에서 이행적 함수적 종속을 제거

<주문> 테이블 ---> <주문>, <고객> 두 개로 분리

 

< 주문 >

주문번호

고객번호

A345

100

D347

200

A210

300

B230

200

< 고객 >

고객번호

주소

100

서울

200

부산

300

광주

 


BCNF 과정 후 테이블 변화

 

<수강_교수> 테이블에서 결정자가 후보키가 아닌 속성을 분리

<수강_교수> 테이블 ---> <수강>, <교수> 두 개로 분리

 

 

< 수강_교수 >

학번

과목명

담당교수 

981746

데이터베이스 

홍길동

 981747

 네트워크

유관순 

 981748

인공지능 

윤봉길 

 981749

데이터베이스 

홍길동 

 981747

데이터베이스 

이순신 

 981749

네트워크 

유관순 

 

|

|

|

 

< 수강 >

학번

담당교수

981746

홍길동

981747

유관순

981748

윤봉길

981749

홍길동

981747

이순신

981749

유관순

 

< 교수 >

담당교수

 과목명

홍길동

 데이터베이스

이순신 

 데이터베이스

윤봉길

 인공지능

유관순 

 네트워크

 

 

 

 

* 역정규화 : 정규화로 인해 여러 개로 분해된 릴레이션들에서 원하는 정보를 얻기 위해서는 조인을 사용하여 다시 연결해야 하는데, 지나치게 자주 조인을 사용하면 응답 속도가 떨어지므로 정규화에 위배되지만 성능 향상을 위해 다시 테이블을 합쳐야 한다.

 

 

 

[참고] 2011 시나공 정보처리기사 실기 문제집

 

다른 카테고리의 글 목록

Dev. 관련자격증/정보처리기사 카테고리의 포스트를 톺아봅니다