본문 바로가기

Programming/DataBase

[DataBase]정규화(Normalization)에 대해 알아보자!

728x90
반응형


1. 정규화(Normalization)란?


◎ 정규화란 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법으로

 데이터를 분해하는 과정.


◎ 데이터 중복을 제거하고 데이터 모델의 독립성을 확보하기 위한 방법.


◎ 제1정규화부터 제5정규화까지 있으나 보통 제3정규화까지만 수행.


◎ 비즈니스에 변화가 발생하여도 데이터 모델의 변경을 최소화시킬 수 있음.


◎ 정규화를 수행하게 되면 불필요한 데이터를 입력할 필요가 없어 중복데이터가 제거된다.


◎ 정규화를 하지 않을경우 삽입, 삭제, 갱신이상이 발생할 수 있다.



2. 정규화 절차


정규화 절차

설명

1 정규화

- 속성(Attribute)의 원자성 확보(도메인이 원자값)

- 기본키(Primary key) 설정

2 정규화

- 기본키가 2개 이상의 속성으로 이루어진 경우

 부분 함수 종속성 제거

3 정규화

기본키를 제외한 컬럼 간 종속성 제거

(이행 함수 종속성 제거)

BCNF

후보키가 있는 경우, 후보키가 기본키를 종속시킬 때

(결정자가 모두 후보키인 경우 제거)

4 정규화

여러 컬럼이 하나의 컬럼을 종속시킬 때

다중 값 종속성 제거 (다치 종속성 제거)

5 정규화

조인에 의해 종속성이 발생했을 경우



3. 함수적 종속성(Functional Dependency)


◎ 함수적 종속이란 X→Y 이면 Y는 X에 함수적으로 종속한다고 말함.


◎ 함수적 종속인지 확인하려면 X가 변했을 때 Y도 변하는지 확인을 해본다.


◎ 제 1 정규화는 X의 컬럼값이 변화할 때 Y가 변한다면 X는 기본키가 되고 Y는 X에 함수적으로

 종속한다고 한다.

 이처럼 기본키를 찾는게 제 1 정규화다.




◎ 제 2 정규화는 부분 함수적 종속성을 제거할 때 사용한다. 기본키가 2개 이상 컬럼으로 이루어진 경우에만 발생한다.

 기본키가 하나의 컬럼으로 이루어지면 제 2 정규화는 생략한다.

 

ID가 변경되면 이름이 바뀐다. -> ID가 이름을 함수적으로 종속하고 있음.


기본키가 ID인 테이블을 하나 더 만듦으로 부분 함수적 종속 제거


◎ 제 3 정규화는 이행적 함수 종속성을 제거한다.

 이행적 함수 종속성이란 기본키 외의 컬럼간에 종속성이 발생하는 것이다.

 제 3 정규화는 제 1 정규화와 제 2 정규화를 수행한 다음에 해야 함.

관리점이 관리점 코드에 종속되고 있음(이행 함수 종속성)


관리점코드가 기본키인 관리점 테이블이 생성된다.(이행 함수 종속성 제거)


◎ BCNF(Boyce-Codd Normalization Form)는 복수의 후보키가 있고, 후보키들이 복합 속성이어야하며, 서로 중첩되어야 함.


기본키(학번, 과목 코드)가 교수를 함수적으로 종속하고 있는데, 교수가 후보키(최소성, 유일성)이고, 교수가 과목 코드를 함수적으로 종속할 때 분해 


교수가 기본키인 테이블을 새로 만든다.


반응형