본문 바로가기

Untagged

데이터베이스의 정규화

728x90

Normalization

데이터베이스의 정규화는 데이터의 중복을 줄이고, 데이터의 무결성을 유지하기 위해 테이블 구조를 체계적으로 정리하는 과정이다.

 

정규화는 1형부터 5형까지 그 단계가 나뉘어있다.

제1정규형(1NF) - 원자값

테이블의 각 속성(컬럼)이 더 이상 쪼갤 수 없는 원자값이어야 함

제1정규화 예시

Before

고객명 전화번호
철수 010-1234-5678,010-1111-2222

 

전화번호에 2개의 값이 들어있어 제1정규형을 만족하지 않음

 

After

고객명 전화번호
철수 010-1234-5678
철수 010-1111-2222

제2정규형(2NF) - 부분 함수 종속 제거

복합키일 때, 기본키의 일부분만으로 결정되는 속성 제거

제2정규화 이행 조건

  • 1NF를 이미 만족
  • 기본키가 복합키일 경우만 가능
  • 기본키 일부는 비기본키 속성이 될 수 없음

제2정규화 예시

Before

학번 과목명 교수명
S001 DB 김교수
S002 Network 박교수

 

기본키가 학번과 과목명인 복합키일 때, 교수명은 과목명만으로 결정되는 부분 함수 종속이 발생함(과목명 -> 교수명)

 

After

과목

학번 과목명
S001 DB
S002 Network

 

교수

과목명 교수명
DB 김교수
Network 박교수

 

교수를 분리하여 부분 함수 종속 제거하여 완전 함수 종속을 만족함

제3정규형(3NF) - 이행 함수 종속성 제거

기본키가 아닌 속성이 다른 기본키가 아닌 속성에 의해 결정되면 안 됨

제3정규화 예시

Before

직원ID 부서ID 부서위치
E01 D01 제주

 

직원ID -> 부서ID -> 부서위치 관계의 이행 함수 종속이 발생함

 

After

직원

직원ID 부서ID
E01 D01

 

부서

부서ID 부서위치
D01 제주

 

직원과 부서 테이블을 분리하여 이행 함수 종속 제거

보이스-코드 정규형(BCNF) - 모든 결정자가 후보키

3NF를 더 엄격하게 적용한 것으로, 모든 결정자가 후보키여야 함

BCNF 예시

Before

교수명 과목명 강의실
김교수 DB A101
김교수 OS A101

현재 테이블의 기본 키는 (교수명, 과목명)인데 교수명으로도 강의실을 결정할 수 있음.

따라서 결정자가 후보키가 아님

 

After

교수

교수명 강의실
김교수 A101

 

과목

과목명 강의실
DB A101
OS A101

 

교수와 과목 테이블을 분리하여 함수 종속을 교수명 -> 강의실, 과목명 -> 강의실로 분리

제4정규형(4NF) - 다치 종속 제거

하나의 속성이 두 개 이상의 독립적인 다치 종속 관계를 가질 경우 이를 분리

제4정규화 예시

Before

학생ID 자격증 외국어
S001 정보처리기사 영어
S001 정보처리기사 일본어
S001 네트워크 영어
S001 네트워크 일본어

 

학생ID -> 자격증
            -> 외국어

 

학생ID로 외국어와 자격정을 독립적으로 결정할 수 있지만, 테이블에서 다치 종속이 존재함

 

After

자격증

학생ID 자격증
S001 정보처리기사
S001 네트워크

 

외국어

학생ID 외국어
S001 영어
S001 일본어

제5정규형(5NF) - 조인 종속 제거

모든 조인 종속이 후보키를 통해서만 성립해야 함

 

조인을 반복할 때 불필요한 중복 데이터 생성을 막기 위한 정규형이다.

제5정규화 예시

Before

프로젝트 부서 기술
P1 개발팀 자바
P1 개발팀 파이썬
P1 기획팀 자바
P1 기획팀 파이썬

 

부서와 기술은 아무런 관련이 없어 불필요한 조인 결과가 발생

 

After

부서

프로젝트 부서
P1 개발팀
P1 기획팀

 

기술

프로젝트 기술
P1 자바
P1 파이썬

 

다음과 같이 테이블을 분리

요약

정규형 의미 제거 대상
1NF 원자값만 허용 반복 속성
2NF 부분 함수 종속 제거 기본키 일부 → 비기본키
3NF 이행 함수 종속 제거 비기본키 → 또 다른 비기본키
BCNF 모든 결정자가 후보키일 것 후보키 아닌 결정자
4NF 다치 종속 제거 하나의 키로 두 독립적 속성
5NF 조인 종속 제거 불필요한 조인 중복
728x90