데이터베이스 정규화(Database Normalization)

정규화 목적


비정규화 테이블 (이상 현상 발생)

학생수강 테이블

학번 학생명 학과 학과전화 과목코드 과목명 교수명
1001 김철수 컴공 02-1111 CS101 자료구조 박교수
1001 김철수 컴공 02-1111 CS102 알고리즘 이교수
1002 이영희 전자 02-2222 CS101 자료구조 박교수

문제점:


1차 정규형(1NF)

원자값(Atomic Value)만 허용

Before (1NF 위반)

학번 학생명 수강과목
1001 김철수 자료구조, 알고리즘

After (1NF)

학번 학생명 수강과목
1001 김철수 자료구조
1001 김철수 알고리즘

2차 정규형(2NF)

부분 함수 종속(Partial Dependency) 제거

Before (1NF, 2NF 위반)

학번 과목코드 학생명 과목명 성적
1001 CS101 김철수 자료구조 A
1001 CS102 김철수 알고리즘 B

After (2NF)

학생 테이블

학번 학생명
1001 김철수
1002 이영희

과목 테이블

과목코드 과목명
CS101 자료구조
CS102 알고리즘

수강 테이블

학번 과목코드 성적
1001 CS101 A
1001 CS102 B

3차 정규형(3NF)

이행 함수 종속(Transitive Dependency) 제거

Before (2NF, 3NF 위반)

학생 테이블

학번 학생명 학과코드 학과명 학과전화
1001 김철수 CS 컴공 02-1111
1002 이영희 EE 전자 02-2222

After (3NF)

학생 테이블

학번 학생명 학과코드
1001 김철수 CS
1002 이영희 EE

학과 테이블

학과코드 학과명 학과전화
CS 컴공 02-1111
EE 전자 02-2222

BCNF (Boyce-Codd Normal Form)

모든 결정자가 후보키

Before (3NF, BCNF 위반)

수강 테이블

학번 과목 교수
1001 DB 김교수
1002 DB 이교수

After (BCNF)

수강 테이블

학번 교수
1001 김교수
1002 이교수

교수과목 테이블

교수 과목
김교수 DB
이교수 DB

정규화 단계 요약

  1. 1NF: 원자값
  2. 2NF: 부분 종속 제거
  3. 3NF: 이행 종속 제거
  4. BCNF: 모든 결정자가 후보키



무결성 제약조건(Integrity Constraints)

1. 개체 무결성(Entity Integrity)

2. 참조 무결성(Referential Integrity)

3. 도메인 무결성(Domain Integrity)

4. 키 무결성(Key Integrity)

5. NULL 무결성

6. 고유 무결성(Unique Integrity)

7. 비즈니스 규칙 무결성

무결성 유지 방법

함수적 종속

속성 집합에서 부분집합 X와 Y 있을때. X가 정해지면 그에따라 Y값도 오직 하나로만 정해질 때 X->Y X: 결정자, Y:종속자