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