1.     정규화(Normalization)

  • 정규화는 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 벙법이며, 데이터를 분해하는 과정

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

  • 정규화를 수행하면 비즈니스에 변화가 발생해도 데이터 모델의 변경을 최소화 할 수 있음

  • 1정규화부터 제5정규화까지 있음(실질적으로는 제3정규화까지만 수행)

  • 정규화가 이루어지지 않으면 이상현상이 발생함

*이상현상(Anomaly): 데이터의 중복성으로 인해 릴레이션을 조작할 때 발생하는 비합리적 현상(하나의 릴레이션에 두 개 이상의 실체의 속성들을 혼합하여, 즉 정규화 되지 않은 경우 데이터의 중복이 원인이 되어 발생함)

  • 정규화된 모델은 테이블이 분해됨(조인을 통해 하나의 합집합으로 만들 수도 있음)

  • 정규화 하면 불필요한 데이터를 입력하지 않아도 되기 때문에 중복 데이터가 제거 됨

*정규화 절차

  • 1정규화: 속성의 원자성을 확보(모든 도메인이 원자값), 기본키를 설정

  • 2정규화: 기본키가 2개 이상의 속성으로 이루어진 경우, 부분 함수 종속성을 제거함

  • 3정규화: 기본키를 제외한 칼럼 간에 종속성을 제거함, 이행 함수 종속성을 제거

  • BCNF: 기본키를 제외하고 후보키가 있는 경우(모든 결정자가 후보키), 후보키가 기본키를 종속시키면 분해됨

  • 4정규화: 여러 칼럼들이 하나의 칼람을 종속시키는 경우 분해하여 다중값 종속성을 제거(다치종속 제거)

  • 5정규화: 조인에 의해서 종속성이 발생되는 경우 분해

 

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

(1)   1정규화

  • 함수적 종속성을 근거로 기본키를 잡음

  • 모든 도메인이 원자 값으로만 되어 있음

  • 속성을 보고 유일성을 만족할 수 있는지 확인

  • 한 개의 속성으로 만족이 안되면 2개의 조합으로 유일성을 만족시킬 수 있는지 확인

(2)   2정규화

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

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

(3)   3정규화

  • 이행 함수 종속성을 제거함

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

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

(4)   BCNF(Boyce-Codd Normal Form)

  • 복수의 후보키가 있고 후보키들이 복합 속성이어야 하며, 서로 중첩되어야 함

1.     정규화의 문제점

  • 정규화는 테이블을 분해해서 데이터 중복을 제거하기 때문에 데이터 모델의 유연성을 높임

  • 정규화는 데이터 조회(select) 시에 조인을 유발하기 때문에 CPU와 메모리를 많이 사용함

  • 반정규화를 하여 하나의 테이블에 저장하면 조인을 통한 성능 저하는 해결 가능함

2.     정규화를 사용한 성능 튜닝

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

  • 반정규화는 데이터를 중복시키기 때문에 또 다른 문제점 발생시킴

  • 정규화는 입출력 데이터의 양을 줄여서 성능을 향상시킴

+ Recent posts