정규화를 통한 성능 향상 전략
- 정규화를 수행한다는 것은 데이터를 결정하는 결정자에 의해 함수적 종속을 갖고 있는 일반 속성을 의존자로 하여 입력/수정/삭제 이상현상을 제거 하는 것이다.
데이터의 중복 속성을 제거하고 결정자에 의해 동일한 의미의 일반 속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화되는 효과가 있다.
정규화된 테이블은 데이터를 처리할때 속도가 빨라질 수도 있고 느려질 수도 있는 특성이 있다.
정규화된 데이터 모델은 조회 시에는 처리 조건에 따라 성능이 향상 혹은 저하된다.
정규화된 데이터 모델은 입력/수정/삭제 시 무조건 성능이 향상된다.
정규화 용어
정규화: 함수적 종속성 등과 같은 이론에 근거하여 관계형 데이터베이스 테이블의 삽입 삭제 갱신 이상 현상 발생을 최소화하기 위해 좀 더 작은 단위의 테이블로 설계하는 과정. 즉, 데이터 모델을 정규형에 맞도록 고치는 과정
정규형: 정규화 과정. 정규화 결과에 의해 도출된 데이터 모델이 갖춰야 할 특
성
함수적 종속성: 테이블 특정 컬럼 A의 값을 알면 다른 컬럼 B값을 알 수 있을 때, 컬럼 B는 컬럼 A에 함수적 종속성이 있다고 함
결정자: 함수적 종속성 설명에서, 컬럼 A를 결정자라고 함
다치종속: 결정자 컬럼 A에 의해 컬럼 B의 값을 다수개 알 수 있을때, 컬럼 B는 컬럼 A에 다치종속 되었다고 함.
정규화 효과 및 장점
상호 종속성이 강한 데이터 요소들을 분리, 독립된 개념으로 정의하게 됨에 따라 높은 응집도&낮은 결합도 원칙에 충실해지며 이로 인해 유연성이 극대화 됨
개념이 좀 더 세분화됨에 따라 해당 개념에 대한 재활용 가능성이 높아짐
Non-key(일반 속성) 데이터 요소가 한번만 표현됨에 따라 중복이 최소화 됨
정규화 이론
1차정규화: 함수종속, 복수의 속성값을 갖는 속성을 분리, 속성의 원자성 확보
2차정규화: 함수종속, 주식별자에 완전종속적이지 않은 속성의 분리
부분종속 속성을 분리
3차 정규화: 함수종속, 일반속성에 종속적인 속성의 분리
이전종속 속성을 분리
제 1정규형
모든 속성은 원자 값을 가져야 함
다중 값을 가질 수 있는 속성은 분리되어야함
제 2정규형
제 1정규형을 만족하는 상태에서 모든 Non-key 컬럼은 기본 키 전체에 종속되어야함
기본 키에 종속적이지 않거나 기본 키 일부 컬럼들에만 종속적인 컬럼은 분리되어야함
제 3정규형
제 2정규형을 만족하는 상태에서 일반속성들 간에도 종속관계가 존재하지 않아야함
일반속성들 간 종속관계가 존재하는 것들은 분리되어야 함
정규화와 성능
정규화를 수행해서 조인이 발생하게 되더라도 효율적인 인덱스 사용을 통해 조인 연산을 수행하면 성능 상 단점은 거의 없다.
정규화를 수행하여 소량의 테이블이 생성된다면 소량의 테이블을 먼저 읽어 조인 연산을 수행하면 되므로 성능상 유리할 수 있다.
정규화가 제대로 되지 않으면 동일한 졸유의 속성을 여러개 가지고 있어서 과다한 인덱스가 만들어 질 수 있는데 정규화를 한다면 하나의 인덱스만 만들어도 된다.
함수적 종속성에 근거한 정규화 수행 필요
함수의 종속성은 데이터들이 어떤 기준값에 의해 종속되는 현상을 지칭하는 것
이 때 기준값을 결정자라 하고 종속되는 값을 종속자라고 한다.