반응형
정규화(Normalization)
  • 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법이며 데이터를 분해하는 과정이다.
  • 데이터 중복을 제거하고 데이터 모델의 독립성을 확보하기 위한 방법이다.
  • 정규화를 수행하면 비즈니스에 변화가 발생하여도 데이터 모델의 변경을 최소화할 수 있다.
  • 제1정규화부터 제5정규화까지 있지만, 실질적으로는 제3정규화까지만 수행한다.

▶ 정규화 절차

정규화 절차 설명
제1정규화 - 속성(Attribute)의 원자성을 확보한다.
- 기본키(Primary)를 설정한다.
제2정규화 기본키가 2개 이상의 속성으로 이루어진 경우 부분 함수 종속성을 제거(분해)한다.
제3정규화 - 기본키를 제외한 칼럼 간에 종속성을 제거한다.
- 즉, 이행 함수 종속성을 제거한다.
BCNF 기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면 분해한다.
제4정규화 여러 칼럼들이 하나의 칼럼을 종속시키는 경우 분해하여 다중값 종속성을 제거한다.
제5정규화 조인에 의해서 종속성이 발생되는 경우 분해한다.
함수적 종속성(Functional Dependency)

(1) 제1정규화

- 정규화는 함수적 종속성을 근거로 한다.

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

- 함수적 종속성은 X가 변화하면 Y도 변화하는지 확인한다.

- 예를 들어 회원 ID가 변화하면 이름도 변경될 것이다.

- 이런 경우 회원ID가회원 ID가 기본키가 되고, 회원 ID가 이름을 함수적으로 종속한다고 한다.

(2) 제2정규화

- 부분 함수 종속성이란, 기본키가 2개 이상의 칼럼으로 이루어진 경우에만 발생한다.

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

(3) 제3정규화

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

- 이행 함수 종속성이란, 기본키를 제외하고 칼럼 간에 종속성이 발생하는 것이다.

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

(4) BCNF(Boyce-Codd Normal Form)

BCNF는 복수의 후보키가 있고, 후보 키들이 복합 속성이어야 하며, 서로 중첩되어야 한다.

정규화의 문제점

정규화는 데이터 조회시에 조인을 유발하기 때문에 CPU와 메모리를 많이 사용한다.

정규화를 사용한 성능 튜닝

조인으로 인하여 성능이 저하되는 문제를 반정규화로 해결이 가능하다.

칼럼이 계속적으로 증가하면 조인이 최소화되기 때문에 조회를 빠르게 할 수 있지만,

너무 많은 칼럼이 추가되면 한 개 행의 크기가 데이터베이스 관리 시스템의 입출력 단위인

블록의 크기를 넘어서게 되는 문제가 발생하게 된다.

그렇게 되면 한 개의 행을 읽기 위해서 여러 개의 블록을 읽어야 하는데, 

디스크 입출력이 증가하기 때문에 성능이 떨어지게 된다.

반정규화는 이러한 문제점을 유발할 수 있어 테이블을 분해하는 방법밖에 없다.

따라서 정규화는 입출력 데이터의 양을 줄여서 성능을 향상시킬 수 있는 것이다.

반응형

+ Recent posts