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)
데이터의 중복으로 인해 데이터의 일부만 업데이트되어 데이터 간의 불일치가 발생하는 상황