정규화
이상이 있는 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것
보통 BCNF 까지만 수행되기 때문에 BCNF까지만 정리하였다. 이후에 제 4정규화, 제 5정규화도 존재한다.
이상현상
- 삽입 이상 : 테이블에 새로운 값을 넣을 때 불필요한 필드값을 추가로 삽입해야 되는 현상
- 삭제 이상 : 원치 않은 데이터까지 삭제가 일어나는 현상
- 갱신 이상 : 데이터를 수정시 그 데이터가 다른 속성값과 불일치가 발생하는 현상
제1 정규형 (1NF)
테이블의 컬럼이 원자값 즉 하나의 값만 가지도록 테이블을 분해하는 것
문제 테이블
학번 | 학과 | 조교 | 교수 | 과목코드 | 강의실 | 성적 |
101 | 컴퓨터 | a | A,B | 101, 102 | A101, A102 | A, A |
102 | 통계학 | b | C,D | 201, 202 | B201, B202 | B, A |
103 | 경영학 | c | E | 301 | C301 | C |
104 | 경영학 | c | F | 302 | C302 | A |
105 | 컴퓨터 | a | G | 103 | A103 | A |
과목 코드, 강의실, 성적에서 두가지 값을 가진 컬럼 존재
- 삽입 이상 : 학번 101인 학생이 A 교수의 다른 수업을 들을 시 과목코드와 강의의 갱신이 일어난다.
- 갱신 이상 : 과목 코드 101에 해당하는 교수가 변경 될 시 모든 101을 탐색후 수정하여야 하는 데 이때 두가지 값이 합쳐져 있으면 탐색하기 어렵다.
- 삭제 이상 : 학번 101의 101 과목의 수강정보를 삭제하려면 강의실 및 성적에서 해당 과목에 매칭되는 정보를 삭제해야 한다.
정규화후
학번 | 학과 | 조교 | 교수 | 과목코드 | 강의실 | 성적 |
101 | 컴퓨터 | a | A | 101 | A101 | A |
101 | 컴퓨터 | a | B | 102 | A102 | A |
102 | 통계학 | b | C | 201 | B201 | B |
102 | 통계학 | b | D | 202 | B202 | A |
103 | 경영학 | c | E | 301 | C301 | C |
104 | 경영학 | c | F | 302 | C302 | A |
105 | 컴퓨터 | a | G | 103 | A103 | A |
제2 정규형 (2NF)
모든 컬럼이 완전 함수 종속이어야 한다. 기본키를 제외한 모든 속성이 기본키에 종속 되는 것.
문제 테이블
학번 | 학과 | 조교 | 교수 | 과목코드 | 강의실 | 성적 |
101 | 컴퓨터 | a | A | 101 | A101 | A |
101 | 컴퓨터 | a | B | 102 | A102 | A |
102 | 통계학 | b | C | 201 | B201 | B |
102 | 통계학 | b | D | 202 | B202 | A |
103 | 경영학 | c | E | 301 | C301 | C |
104 | 경영학 | c | F | 302 | C302 | A |
105 | 컴퓨터 | a | G | 103 | A103 | A |
- 삽입 이상 : 학번 101인 학생이 새로운 과목 수강시 교수, 학과, 강의실을 알아야 한다.
- 갱신 이상 : 과목 코드 101에 해당하는 교수가 변경 될 시 모든 101을 탐색후 수정하여야 한다.
- 삭제 이상 : 학번 103의 수강정보를 삭제하면 과목 301에 대한 정보도 삭제된다.
정규화후
학번 | 과목코드 | 성적 |
101 | 101 | A |
101 | 102 | A |
102 | 201 | B |
102 | 202 | A |
103 | 301 | C |
104 | 302 | A |
105 | 103 | A |
학번 | 학과 | 조교 |
101 | 컴퓨터 | a |
102 | 통계학 | b |
103 | 경영학 | c |
104 | 경영학 | c |
105 | 컴퓨터 | a |
과목코드 | 교수 | 강의실 |
101 | A | A101 |
102 | B | A102 |
201 | C | B201 |
202 | D | B202 |
301 | E | C301 |
302 | F | C302 |
103 | G | A103 |
제3 정규형 (3NF)
기본키를 제외한 속성들 간의 이행 종속성을 없앤다.
릴레이션에서 X, Y, Z라는 3 개의 속성이 있을 때 X→Y, Y→Z 이란 종속 관계가 있을 경우, X→Z가 성립될 때 이행 종속성을 가진다고 한다.
문제 테이블
학번 | 학과 | 조교 |
101 | 컴퓨터 | a |
102 | 통계학 | b |
103 | 경영학 | c |
104 | 경영학 | c |
105 | 컴퓨터 | a |
- 삽입 이상 : 학과와 해당 조교를 추가할 때 소속 학생이 존재해야 한다.
- 갱신 이상 : 조교가 변경되는 경우 해당 학과를 모두 탐색 후 변경하여야 한다.
- 삭제 이상 : 102 학생이 삭제되면 통계학과 그의 조교 정보가 삭제된다.
정규화후
학번 | 학과 |
101 | 컴퓨터 |
102 | 통계학 |
103 | 경영학 |
104 | 경영학 |
105 | 컴퓨터 |
학과 | 조교 |
컴퓨터 | a |
통계학 | b |
경영학 | c |
경영학 | c |
컴퓨터 | a |
BCNF (Boyce-Codd Normal Form)
후보키 집합을 제외한 속성이 결정자가 되어선 안된다.
학번 | 교수 | 과목코드 |
101 | A | 101 |
101 | B | 102 |
102 | C | 201 |
102 | D | 202 |
103 | E | 301 |
104 | F | 302 |
105 | G | 103 |
- 삽입 이상 : 과목이 신설되어도 학생이 없으면 추가가 불가능하다.
- 갱신 이상 : 교수가 변경될시 모두 탐색후 갱신해야 한다.
- 삭제 이상 : 105 학생이 삭제되면 교수 G의 정보와 과목도 삭제된다.
정규화후
학번 | 교수 |
101 | A |
101 | B |
102 | C |
102 | D |
103 | E |
104 | F |
105 | G |
교수 | 과목코드 |
A | 101 |
B | 102 |
C | 201 |
D | 202 |
E | 301 |
F | 302 |
G | 103 |
장점
- 이상현상 제거
- 데이터 안정성 및 무결성 유
- 불 필요한 쿼리 제거
단점
- 릴레이션 분해로 인해 Join연산이 많아질 가능성이 있다.