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. 관련자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기] 2012년 4회차(2012.10.14) 시험일 - 가채점 가답안, 기출문제 합격 후기 (2) | 2012.10.14 |
---|---|
[정보처리기사 실기] 5일차 - 데이터베이스 이론 정리 (0) | 2012.10.14 |
[정보처리기사 실기 - 데이터베이스] 스토어드 프로시저 (Stored Procedure) (0) | 2012.10.13 |
[정보처리기사 실기 - 데이터베이스] 내장 SQL과 커서(Cursor) 사용 예제 (0) | 2012.10.13 |
[정보처리기사 실기 - 데이터베이스] 뷰 (View) (0) | 2012.10.13 |