1. 테이블 반정규화
분류 |
기법 |
내용 |
테이블 병합 |
1:1 관계 테이블 병합 |
1:1 관계를 통합 |
1:M 관계 테이블 병합 |
1:M 관계를 통합 | |
슈퍼/서브타입 테이블 병합 |
슈퍼/서브타입 관계를 통합 | |
테이블 분할 |
수직 분할 |
컬럼 단위로 분할 |
수평 분할 |
로우 단위로 분할 | |
테이블 추가 |
중복 테이블 추가 |
다른 업무이거나 서버가 다른 경우 동일한 테이블 구조를 중복하여 생성 |
통계 테이블 추가 |
SUM, AVG 등을 미리 계산해 둔 테이블을 추가 | |
이력 테이블 추가 |
마스터 테이블에 존재하는 레코드를 시간, 트랜잭션 발생 시점에 따라 복사해 두는 테이블을 추가 | |
부분 테이블 추가 |
수평 분할이란 동일한 개념 |
2. 컬럼 반정규화
기법 |
내용 |
중복 컬럼 추가 |
조인에 의한 성능 저하를 예방하기 위해 중복 된 컬럼을 위치 시킴 |
파생 컬럼 추가 |
트랜잭션이 처리 되는 시점에 계산에 의해 발생 되는 성능 저하를 예방하기 위해 미리 값을 계산하여 컬럼에 보관 |
이력 테이블 컬럼 추가 |
대량의 이력 데이터를 처리할 때 불특정 날 조회나 최근 값을 조회할 때 나타날 수 있는 성능 저하를 예방하기 위해 이력 테이블에 기능성 컬럼을 추가 |
PK에 의한 컬럼 추가 |
복합 의미를 가지는 PK를 단일 속성으로 구성하는 경우 단일 PK안에서 특정 값을 별도로 조회하는 경우 성능 저하가 발생 될 수 있음. 이미 PK안에 데이터가 존재하지만 성능 향상을 위해 일반 속성으로 포함 |
응용시스템 오작동을 위한 컬럼 추가 |
업무적으로는 의미가 없지만 사용자가 데이터 처리를 하다가 잘 못 처리하여 원래 값으로 복구하기를 원하는 경우 이전 데이터를 임시적으로 중복하여 보관. 이력 데이터 모델로 풀어낼 수 있음 |
3. 관계 반정규화
기법 |
내용 |
중복관계 추가 |
데이터를 처리하기 위한 여러 경로를 거쳐 조인이 가능하지만 이 때 발생할 수 있는 성능 저하를 예방하기 위해 추가적인 관계를 맺음 |
'데이터베이스 > 정규화' 카테고리의 다른 글
BCNF(Boyce-Codd NF) (0) | 2015.01.09 |
---|---|
제3정규형(3NF) (0) | 2015.01.09 |
제2정규형(2NF) (0) | 2015.01.09 |
제1정규형(1NF) (0) | 2015.01.09 |