정규화와 성능
성능 데이터 모델링 정의
1. 데이터베이스 성능 향상을 목적
2. 성능과 관련된 사항들이 데이터 모델링 작업에 반영될 수 있도록 하는 것
3. 작업 유형에 따라 성능 향상 목표를 분명하게 정의해야 정확한 성능향상 모델링을 수행할 수 있음
성능 데이터 모델링 특징
1. 데이터의 증가가 빠를수록 성능저하에 따른 성능개선비용은 증가
2. 데이터모델은 성능을 튜닝하면서 변경될 수 있음
3. 분석/설계 단계에서 성능을 고려한 데이터모델링을 수행할 경우 성능 저하에 따른 재설계 비용을 최소화할 수 있는 기회가 됨
데이터 모델 성능 저하 원인
1. 데이터 모델 구조에 의해 성능이 저하
2. 데이터가 대용량이 됨으로 인해 불가피하게 성능이 저하
3. 인덱스 특성을 충분히 고려하지 않고 인덱스를 생성
성능 데이터 모델 방안
1. 반정규화
2. 정규화
3. 인덱스의 특징을 고려한 인덱스 구성 칼럼의 순서 변경
4. 대량의 데이터는 테이블을 수직 또는 수평분할
5. 논리적인 테이블을 물리적인 테이블로 전환할 때 데이터 처리의 성격에 따라 테이블을 생성하는 방법
성능 데이터 모델링 순서
1. 데이터 모델링을 할 때 정규화를 정확하게 수행
2. 데이터베이스 용량산정
3. 데이터베이스에 발생되는 트랜잭션 유형을 파악
4. 용량과 트랜잭션 유형에 따라 반정규화를 수행
5. 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행
6. 성능관점에서 데이터 모델을 검증
성능 데이터 모델링 고려사항
1. 용량산정은 전체적인 데이터베이스에 발생되는 트랜잭션의 유형과 양을 분석하는 자료가 되므로
성능데이터 모델링을 할 때 중요한 작업이 될 수 있다.
2. 물리적인 데이터 모델링을 할 때 PK/FK의 칼럼의 순서조정, FK 인덱스 생성 등은 성능 향상을 위한
데이터 모델링 작업에 중요한 요소가 된다.
3. 이력데이터는 시간에 따라 반복적으로 발생이 되기 때문에 대량 데이터일 가능성이 높아서
특별히 성능을 고려하여 칼럼 등을 추가하도록 설계해야 한다.
정규화 정의
1. 데이터 정합성을 위해 엔터티를 작은 단위로 분리하는 과정
2. 데이터에 대한 중복을 제거
3. 데이터 입력, 수정, 삭제 성능 향상
데이터 모델 정규화
1. 상호 종속성이 강한 데이터 요소들을 분리, 독립된 개념으로 정의
2. 높은 응집도, 낮은 결합도 원칙에 충실
3. 데이터 모델 유연성 극대화
4. 데이터 모델 재활용 가능성이 높아짐
5. 식별자가 아닌 속성이 한 번만 표현되어 중복이 최소화
6. 데이터 품질 확보, 저장 공간 절약, DML 처리 시 성능 향상
정규화 용어
- 정규화(Normalization) - 관계형 데이터베이스 테이블의 삽입/삭제/갱신 이상 현상 발생을 최소화하기 위해 좀 더 작은 단위의 테이블로 설계하는 과정. 데이터 모델을 정규형에 맞게 고치는 과정
- 정규형(Normal Form) - 정규화한 결과. 정규화 결과에 의해 도출된 데이터 모델이 갖춰야 할 특성을 만족한 형태
- 함수적 종속성 - 함수적 종속성(FD:Functional Dependency) : 테이블의 특정 칼럼 A의 값을 알면 다른 칼럼 B 값을 알 수 있을 때, 칼럼 B는 칼럼 A에 함수적 종속성이 있다고 함
- 결정자(Determinant) - 함수적 종속성 설명에서 칼럼 A를 결정자라고 함
- 다치종속(MVD) - 다치종속(MVD:MultiValued Dependency), 결정자 칼럼 A에 의해 칼럼 B의 값을 다수 개를 알 수 있을 때, 칼럼 B는 칼럼 A에 다치 종속되었다고 함
데이터 모델 정규형
【 제1정규형 】
1. 모든 속성은 반드시 하나의 값만 가져야 함
【 제2정규형 】
1. 제1정규형을 만족
2. 엔터티의 모든 일반속성은 반드시 모든 주식별자에 종속되어야 함수적
【 제3정규형 】
1. 제2정규형을 만족
2. 주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없음
데이터 모델 정규화
【 제1정규화 】
1. 한 속성에 여러 개의 속성 값을 갖거나 같은 유형의 속성이 여러 개인 경우 해당 속성을 분리
2. 속성의 원자성을 확보
【 제2정규화 】
1. 주식별자 완전 함수 종속되지 않는 속성을 분리
2. 부분함수종속 속성을 분리함으로써 완전함수종속 확보
【 제3정규화 】
1. 일반 속성끼리 함수 종속이 발생한 속성을 분리
2. 이행 종속 속성을 분리
【 보이스-코드 정규화 】
1. 결정자 안에 함수 종속을 가진 주식별자 속성을 분리
【 제4정규화 】
1. 다가 종속 속성을 별도의 엔터티로 분리
【 제5정규화 】
1. 결합 종속일 경우 2개 이상의 엔터티로 분리
[SQLD] 1-5. 데이터 모델의 이해 - 식별자(Identifiers) 특징, 분류체계, 고려사항
[SQLD] 1-1. 데이터 모델의 이해 - 데이터 모델링, 데이터베이스 스키마, ERD