DB 정규화
DB 정규화
DB 정규화
DB 의 중복을 최소화 하도록 설계해 무결성을 유지하고 테이블의 상태 이상을 방지한다.
1. 제 1 정규화
- 컬럼이 원자 값을 가져야 한다.
AS-IS
id | name | subject |
---|---|---|
1 | a | math |
2 | b | english, math |
TO-BE
id | name | subject |
---|---|---|
1 | a | math |
2 | b | english |
2 | b | math |
2. 제 2 정규화
- 부분 함수 종속이 발생하면 안된다.
AS-IS
key : 주문번호, 상품ID
주문번호 | 상품ID | 단위 | 수량 | 단가 |
---|---|---|---|---|
2301 | H360 | NET | 20 | 25600 |
2301 | J142 | PACK | 320 | 65400 |
2301 | K101 | 3-PACK | 16 | 32500 |
2302 | A101 | 6-PACK | 8 | 24200 |
2303 | H011 | PACK | 10 | 65100 |
2303 | R301 | COVER | 8 | 12900 |
TO-BE
주문번호 | 상품ID | 수량 |
---|---|---|
2301 | H360 | 20 |
2301 | J142 | 320 |
2301 | K101 | 16 |
2302 | A101 | 8 |
2303 | H011 | 10 |
2303 | R301 | 8 |
상품ID | 단위 | 단가 |
---|---|---|
H360 | NET | 25600 |
2301 | PACK | 65400 |
2301 | 3-PACK | 32500 |
2302 | 6-PACK | 24200 |
2303 | PACK | 65100 |
2303 | COVER | 12900 |

3. 제 3 정규화
- 이행적 함수 종속이 있으면 안된다.
AS-IS key : 주문번호, 회원ID, 회원명
주문번호 | 주문일 | 회원ID | 회원명 | 회원등급 |
---|---|---|---|---|
2301 | 20210624 | HONG | 홍진경 | 일반 |
2302 | 20210605 | SONG | 송혜교 | 우수 |
2303 | 20210606 | PARK | 박보영 | 일반 |
TO-BE
주문번호 | 회원ID | 주문일 |
---|---|---|
2301 | HONG | 20210604 |
2302 | SONG | 20210605 |
2303 | PARK | 20210606 |
회원ID | 회원명 | 회원등급 |
---|---|---|
HONG | 홍진경 | 일반 |
SONG | 송혜교 | 우수 |
PARK | 박보영 | 일반 |

4. BCNF 정규화
- 모든 결정자는 후보키 이어야 한다.
AS-IS key : 학번, 과목명 ※각 교수는 한 과목만 강의할 수 있고 각 강의는 여러 교수들에 의해 강의될 수 있다.
학번 | 과목명 | 교수 |
---|---|---|
100 | DB | P01 |
100 | 자료구조 | P02 |
200 | DB | P01 |
200 | 자료구조 | P03 |
300 | DB | P04 |
300 | 자료구조 | P03 |
TO-BE
학번 | 교수 |
---|---|
100 | P01 |
100 | P02 |
200 | P01 |
200 | P03 |
300 | P03 |
300 | P04 |
교수 | 과목명 |
---|---|
P01 | DB |
P02 | 자료구조 |
P03 | 자료구조 |
P04 | DB |

This post is licensed under CC BY 4.0 by the author.