정규화를 통한 성능 향상 전략
- 정규화를 수행한다는 것은 데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는 일반 속성을 의존자로 하여 입력/수정/삭제 이상현상을 제거하는 것이다.
- 데이터의 중복 속성을 제거하고 결정자에 의해 동일한 의미의 일반 속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화되는 효과가 있다. (고객과 주문테이블의 분리)
- 정규화된 테이블을 데이터를 처리할 때 속도가 빨라질 수도 있고 느려질 수도 있는 특성이 있다.
정규화 용어
정규화
- Normalization
- 함수적 종속성등과 같은 이론에 근거하여 관계형 데이터베이스 테이블의 삽입,삭제,갱신 이상(Anomaly) 현상 발생을 최소화하기 위해 좀 더 작은 단위의 테이블로 설계하는 과정. 즉, 데이터 모델을 정규형에 맞도록 고치는 과정
정규형
- NF: Normal Form
- 정규화 규정
- 정규화 결과에 의해 도출된 데이터 모델이 갖춰야 할 특성
함수적 종속성
- FD: Functional Dependency
- 테이블의 특정 컬럼A의 값을 알면 다른 컬럼 B값을 알 수 있을 때, 컬럼 B는 컬럼 A에 함수적 종속성이 있다고 함
- ex. 고객명은 고객주민등록번호에 함수적 종속성이 있음
결정자
- Determinant
- 함수적 종속성 설명에서, 컬럼 A를 결정자라고 함(ex. 주민등록번호는 결정자임)
다치종속
- MVD: MultiValued Dependency
- 결정자 컬럼 A에 의해 컬럼 B의 값을 다수 개 알 수 있을 때, 컬럼 B는 컬럼 A에 다치종속 되었다고 함
- ex. 학번을 알면 해당 학생의 다수 개의 수강과목을 알 수 있을 때, 수강과목은 학번에 다치종속관계임
정규화 효과 및 장점
- 상호 종속성이 강한 데이터 요소들을 분리, 독립된 개념(엔티티, 테이블)으로 정의 하게 됨에 따라 High Cohesion & Loose Coupling(높은 응집도와 낮은결합도) 원칙에 충실해지며 이로 인해 유연성이 극대화 됨
- 개념이 좀 더 세분화됨에 따라 해당 개념에 대한 재활용 가능성이 높아짐 (일반적으로 각종 참조 모델은 정규형을 만족하고 있음)
- Non-Key(일반 속성) 데이터 요소가 한번만 표현됨에 따라 중복이 최소화됨(데이터 품질확보, 저장공간 절약, DML성능)
정규화 이론
- 1차, 2차, 3차, 보이스코드정규화는 함수종속성에 근거하여 정규화를 수행하고,
- 4차 정규화는 속성의 값이 여러 개 발생하는 다치종속,
- 5차 정규화는 조인에 의해 발생하는 이상현상 제거로 정규화를 수행한다.
- 보통 실무에서는 3차정규화까지 보장함
제 1 정규형
- 모든 속성은 원자 값을 가져야 함
- 다중 값을 가질 수 있는 속성은 분리되어야 함
제 2정규형
- 제 1정규형을 만족하는 상태에서 모든 Non-key 컬럼은 기본 키 전체에 종속되어야 함
- 기본 키에 종석정이지 않거나 기본 키 일부 컬럼(들)에만 종속적인 컬럼은 분리되어야 함
제 3정규형
- 제 2정규형을 만족하는 상태에서 일반속성들간에도 종속관계가 존재하지 않아야 함
- 일반속성들 간 종속관계가 존재하는 것들은 분리되어야 함
정규화와 성능
- 정규화를 수행해서 조인이 발생하게 되더라도 효율적인 인덱스 사용을 통해 조인연산을 수행하면 성능상 단점은 거의 없다.
- 정규화를 수행하여 소량의 테이블이 생성된다면 소량의 테이블을 먼저 읽어 조인 연산을 수행하면 되므로 성능상 유리할 수 있다
- 정규화가 제대로 되지 않으면 동일한 종류의 속성을 여러 개 가지고 있어서 과다한 인덱스가 만들어 질 수 있는데 정규화를 한다면 하나의 인덱스만 만들어도 된다.
반정규화된 테이블의 성능저하 예시1
반정규화된 테이블의 성능저하 예시2
반정규화된 테이블의 성능저하 예시3
반정규화된 테이블의 성능저하 예시4
함수적 종속성(Functional Dependency)에 근거한 정규화 수행 필요
- 함수의 종속성(Functional Dependency)은 데이터들이 어떤 기준값에 의해 종속되는 현상을 지칭하는 것이다.
- 이 때 기준값을 결정자(Determinant)라 하고 종속되는 값을 종속자(Dependent)라고 한다.
'Computer Science > 데이터베이스' 카테고리의 다른 글
대량 데이터에 따른 성능 (0) | 2023.06.08 |
---|---|
반정규화와 성능 (0) | 2023.06.08 |
성능 데이터 모델링 (0) | 2023.06.07 |
식별자(Identifiers) (1) | 2023.06.07 |
관계(Relationship) (0) | 2023.06.03 |