정규화

정규화란?

데이터 중복을 최소화하고 무결성을 향상시키는 데이터베이스 설계 기법

제1정규형 (1NF)

조건: 모든 속성 값이 원자값(Atomic Value)이어야 함

비정규형 테이블

학생ID 이름 수강과목
1 홍길동 수학, 영어

1NF 적용

학생ID 이름 수강과목
1 홍길동 수학
1 홍길동 영어

제2정규형 (2NF)

조건: 1NF + 부분 함수 종속 제거 (기본키가 아닌 속성이 기본키의 일부에만 종속되면 안됨)

1NF 테이블

학생ID 과목코드 학생이름 과목이름 성적
1 C01 홍길동 수학 A

2NF 적용

학생 테이블

학생ID 학생이름
1 홍길동

과목 테이블

과목코드 과목이름
C01 수학

수강 테이블

학생ID 과목코드 성적
1 C01 A

제3정규형 (3NF)

조건: 2NF + 이행적 함수 종속 제거 (기본키가 아닌 속성끼리 종속되면 안됨)

2NF 테이블

학생ID 학생이름 학과코드 학과명
1 홍길동 D01 컴퓨터공학

3NF 적용

학생 테이블

학생ID 학생이름 학과코드
1 홍길동 D01

학과 테이블

학과코드 학과명
D01 컴퓨터공학

BCNF (Boyce-Codd Normal Form)

조건: 3NF + 모든 결정자가 후보키여야 함

3NF 테이블

학생ID 과목 교수
1 수학 김교수

문제: 한 과목은 한 교수만 담당 → 교수가 과목을 결정 (교수→과목)

BCNF 적용

수강 테이블

학생ID 교수
1 김교수

담당 테이블

교수 과목
김교수 수학

정규화의 장단점

장점

단점