본문 바로가기
카테고리 없음

정규화(Noramlization) / 반정규화(Denoramlization)

by sssinga 2022. 10. 15.

정규화 (Normalization)

- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용해 테이블을 무손실 분해하는 과정

- 목적: 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것

 

 

정규화 과정

정규형 설명
제 1정규형 (1NF) 메인(Domain)이 원자 값
제 2정규형 (2NF) - 분 함수적 종속 제거
- 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족
제 3정규형 (3NF) 기본키가 아닌 모든 속성이 기본키에 대해 행적 함수적 종속(Transitive Functional Dependency)을 만족하지 않는 정규형
> 이행적 함수정 종속이란 A->B이고 B->C일 때 A->C를 만족하는 관계
BCNF 모든 정자가 후보키(Candidate Key)
제 4정규형 (4NF) 중 값 종속(MVD; Multi Valued Dependency) Aㅡ>>B가 존재할 경우 해당 테이블의 모든 속성이 A에 함수적 종속 관계를 만족하는 정규형
제 5정규형 (5NF) 테이블의 모든 인 종속(JD; Join Dependency)이 후보키를 통해서만 성립되는 정규형

 

 

반정규화 (Denormalization)

- 정규화된 데이터 모델을 의도적으로 통합, 중복, 분리하여 정규화 원칙을 위배하는 행위

- 시스템 성능 향상, 관리 효율성 증가 But, 데이터 일관성 및 정합성 저하

 

 

반정규화 방법

방법 설명
테이블 통합 두 개의 테이블이 조인되어 사용되는 경우가 많을 경우 성능 향상을 위해 하나의 테이블로 만들어 사용
테이블 분할 - 수평 분할: 레코드별로 사용 빈도 차이가 큰 경우 사용 빈도에 따라 테이블 분할
- 수직 분할: 속성 기준으로 테이블 분할
중복 테이블 추가 작업의 효율성을 향상시키기 위해 테이블을 추가하는 것
- 집계 테이블 추가: 집계 데이터를 위한 테이블 생성 후 각 원본 테이블에 트리거를 설정하여 사용
- 진행 테이블 추가: 이력 관리 등의 목적으로 추가하는 테이블
- 특정 부분만을 포함하는 테이블 추가: 데이터가 많은 테이블의 특정 부분만을 사용하는 경우 해당 부분만으로 새로운 테이블 생성
중복 속성 추가 - 자주 사용하는 속성을 하나 더 추가하는 것
- 데이터의 무결성 확보가 어렵고 디스크 공간이 추가로 필요
- 조인 자주 발생, 접근 경로 복잡, 액세스 조건을 자주 사용되는 속성인 경우 추가

댓글