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.