Home 데이터베이스 정규화(Normalization)
Post
Cancel

데이터베이스 정규화(Normalization)

정규화

정규화의 기본 목표는 테이블 간의 중복된 데이터를 허용하지 않는것이다. 중복된 데이터를 허용하지 않음으로서 무결성을 유지할 수 있고, DB의 저장 용량 또한 줄일 수 있다. 이러한 테이블을 분해하는 정규화 단계가 정의되어 있는데, 각 단계를 알아보자

제 1정규화

제 1정규화란 컬럼이 Atomic Value를 갖도록 하는 분해하는 것이다

이름취미
코지인터넷,게임
판다인터넷,음악

위 테이블에서 취미라는 컬럼은 한개 이상의 값을 가지고 있다. 여기에 제 1정규화를 적용하면 다음과 같은 표를 얻는다

이름취미
코지인터넷
코지게임
판다인터넷
판다음악

제 2정규화

제 2정규화란 기본키의 부분집합이 결정자가 되지 않도록 분해하는 것이다

다음과 같은 테이블이 있다고 가정하자

학교이름취미학교 위치
숭실대코지코딩서대문구
경희대코지독서동대문구
숭실대판다인터넷서대문구
경희대판다음악동대문구

여기서 기본키는 (학교, 이름)을 복합키로 가지고 있다. 모든 컬럼이 Atomic한 값을 가지고 있지만, 기본키의 부분집합(학교)이 학교 위치를 결정하는 결정자가 된다 따라서 이를 정규화하면 다음과 같다

학교학교 위치
숭실대서대문구
경희대동대문구
학교이름취미
숭실대코지코딩
경희대코지독서
숭실대판다인터넷
경희대판다음악

제 3정규화

제 3 정규화란 A->B 이고 B->C 일때, A->C가 성립되지 않도록 분해하는 것이다

구매자물건가격
코지노트북100
판다노트북100
데스크탑50
여우노트1

위 테이블에서 구매자가 물건을 구매하고, 물건은 가격을 가지므로 이를 정규화 할 수 있다

구매자물건
코지노트북
판다노트북
데스크탑
여우노트
물건가격
노트북100
데스크탑50
노트1
This post is licensed under CC BY 4.0 by the author.

스프링 서비스 추상화(Service Abstraction)

자바 JVM(Java Virtual Machine), 가비지 콜렉션(Garbage Collection)