정규화 정리

2023. 1. 10. 00:38db

정규화란?

관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스라고 정의되어 있다.

 

정규화를 사용하는 목적

데이터베이스의 변경시 이상 현상 제거

 

1) 갱신 이상 : 만약 A.Bruchs의 부서를 변경할 때 4번째 행만 변경한다면 4번째 행과 5번째의 행의 부서가 달라지게 되므로 A.Bruchs의 부서가 어디에 속하는지 알 수 없다.

 

2) 삽입 이상 : 새로운 부서가 생겼을 때 아직 근무자 없다고 가정했을 때, 이 부서에 관련한 정보는 불필요한 정보를 함께 입력해야만 입력할 수 있다.

 

3) 삭제 이상 : Accounting 부서에 속한 사람이 한 명이라면 1행을 삭제하면 Accounting 부서에 대한 정보도 사라지게 된다.

 

제1 정규화

제1 정규화란 테이블의 칼럼이 원자값을 갖도록 테이블을 분해하는 것을 의미한다.

 

취미들이라는 컬럼에 2개 이상의 값이 있으므로 1개의 값을 갖도록 변경한다.

제2 정규화

제2 정규화는 1정규화를 만족하는 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것이다.

완전 함수 종속은 기본키의 부분집합이 결정자가 되면 안되는 것을 의미한다.

 

여기서 기본키는 (학생번호, 강좌이름)인데 기본키의 부분집합인 강좌이름이 강의실의 결정자가 되므로 분해하여 제2정규형을 만족할 수 있다.

 

제3 정규화

 

제3 정규화란 제 2정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것이다. 이행적 함수 종속은 A -> B, B -> C가 성립할 때 A -> C가 성립되는 것을 의미한다.

 

위에서는 학생번호는 강좌이름을 결정하고 강좌이름이 수강료를 결정하고 있다. 

 

 

 

reference : https://mangkyu.tistory.com/110

'db' 카테고리의 다른 글

반정규화 정리  (0) 2023.01.10
데이터 무결성  (0) 2023.01.10
인덱스 정리  (2) 2022.12.21
트랜잭션 REQUIRES_NEW 옵션  (0) 2022.12.18
CQRS  (0) 2022.12.16