DB

정규화(Normalization)

탁재민 2024. 2. 24. 18:11

정규화(Normalization)

데이터베이스 설계 과정에서 데이터 중복을 최소화하고, 데이터 무결성을 유지하기 위해 데이터를 구조화하는 과정

 

제1정규형(1NF)

각 컬럼의 값이 원자값(하나의 값)이어야 함
학생번호
이름
수강 강의
1
김수환
DB
2
유길선
운영체제
3
탁재민
네트워크, 그래픽스

 

네트워크, 그래픽스 분리

학생번호
이름
수강 강의
1
김수환
DB
2
유길선
운영체제
3
탁재민
네트워크
3
탁재민
그래픽스

 

제2정규형(2NF)

제1정규형을 만족하며, 모든 비-기본키 컬럼이 기본키에 완전 함수 종속(기본키의 부분집합이 다른 값을 결정하지 않는 것) 이어야 함
학생번호
이름
수강 강의
성적
1
김수환
DB
3
2
유길선
운영체제
3.5
3
탁재민
네트워크
4
3
탁재민
그래픽스
2

 

위 테이블의 기본키는 (학생번호, 수강 강의)

(학생 번호)가 이름 컬럼을 결정

(학생 번호, 수강 강의)가 성적 컬럼을 결정

 

학생 테이블

학생번호
이름
1
김수환
2
유길선
3
탁재민

 

강의 테이블

학생번호
수강 강의
성적
1
DB
3
2
운영체제
3.5
3
네트워크
4
3
그래픽스
2

제3정규형(3NF)

제2정규형을 만족하며, 기본키를 제외한 속성들 간의 이행 종속성(A->B, B->C 일 때 A->C 인 것)이 없어야 함
학생번호
수강 강의
주당 강의 수
1
DB
4
2
운영체제
3
3
네트워크
3

학생 번호 -> 수강 강의, 수강 강의 -> 주당 강의 수

 

학생 강의 테이블

학생번호
수강 강의
1
DB
2
운영체제
3
네트워크

 

강의 교수 테이블

수강 강의
주당 강의 수
DB
4
운영체제
3
네트워크
3

BCNF(보이스-코드 정규형)

제3정규형을 만족하며, 모든 결정자가 후보 키
강의
강의실
강의 시간
DB
101
9
운영체제
102
10 
네트워크
101
11

(강의)가 강의실, 강의 시간을 결정하며 후보 키

(강의실, 강의 시간)이 강의를 결정하지만 후보키가 아님

 

강의 시간 테이블

강의
강의 시간
DB
9
운영체제
10 
네트워크
11

 

강의실 테이블

강의
강의실
DB
101
운영체제
102
네트워크
101

제4정규형(4NF)

BCNF를 만족하며, 다치 종속성(A->B 일 때 하나의 A값에 여러 개의 B값이 존재, A↠B라고 표시)이 없어야 함
학생 번호 취미  언어
1 등산 한국어
1 등산 영어
1 요리 한국어
1 요리 영어
2 요리 한국어
2 요리 일본어

학생 번호 ↠ 취미

학생 번호 ↠ 언어

 

취미 테이블

학생 번호 취미 
1 등산
1 요리
2 요리

 

언어 테이블

학생 번호 언어
1 한국어
1 영어
2 한국어
2 일본어

 

제5정규형(5NF)

제4정규형을 만족하며, 조인 종속 제거

 


이상(Anomaly)

삽입 이상(Insertion Anomaly)

원하는 데이터를 데이터베이스에 추가하기 위해 불필요하거나 관련 없는 데이터도 함께 삽입해야 하는 상황

삭제 이상(Deletion Anomaly)

한 데이터를 삭제할 때, 의도하지 않게 관련된 다른 데이터까지 함께 삭제되어 정보가 손실되는 상황

업데이트 이상(Update Anomaly)

데이터의 중복으로 인해 데이터의 일부만 업데이트되어 데이터 간의 불일치가 발생하는 상황