정규화는 이상현상이 있는 릴레이션을 분해하여 없애는 과정이다.
분해되는 정도에 따라 정규형 단계로 나누어지며 단계가 높을 수록 이상현상이 줄어든다.
[제 1 정규형]
모든 속성이 원자값을 갖도록 분해한다.
[제 2 정규형]
제1 정규형을 만족하고, 기본키가 아닌 속성이 기본키에 완전 함수 종속일 때를 의미한다.
기본키에 종속적이지 않은 속성을 분리한다!
*복합키를 가진 경우. 여기서 기본키는 학생번호와 강좌이름이다.
1) 학생번호 와 강좌이름을 알아야 성적을 알 수 있다? (O)
2) 학생번호 와 강좌이름을 알아야 강의실을 알 수 있다? (X) : 강좌이름만 알아도 된다.
[제 3 정규형]
릴레이션이 제 2 정규형을 만족하면서 기본키에 직접 종속하도록 하는 것.
아래는 학생번호->강좌이름->수강료의 형태로 정보를 찾는데 이것을 분리해준다.
= 기본키와 일촌이 아닌경우 분리
{학생번호->강좌이름}, {강좌이름->수강료}
[ BCNF 정규형 ]
3차 정규형을 만족하면서 BCNF는 만족하지 않는 경우는 언제일까? 바로 일반 컬럼이 후보키를 결정하는 경우이다.
따라서, 특강수강 릴레이션에서 이상현상을 일으키는 (교수, 특강이름)을 분해한다.
요약
1정규형 : 원자값을 가져야 함.
2정규형 : 기본키가 2개 이상일 때 둘다 필요 해야 함.
3정규형 : 기본키랑 일촌이여야 함.
'데이터 엔지니어링 관련' 카테고리의 다른 글
빅데이터 - 구자환 교수님 (0) | 2021.08.11 |
---|---|
ETL 작업, DB에 저장하기 (0) | 2021.08.03 |
song, log dataset 으로 데이터 모델링 (0) | 2021.07.29 |
PostgreSQL , MySQL 비교 (0) | 2021.07.28 |