728x90
반정규화란?
반정규화: 정규화된 엔터티, 속성, 관계에 대해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법
- 목적: 시스템의 성능 향상, 개발과 운영의 단순화
반정규화 수행하는 경우
1) 데이터 조회 시 디스크 I/O량이 많아서 성능이 저하될 경우
2) 경로가 너무 멀어 조인으로 인한 성능 저하가 예상될 경우
3) 칼럼을 계산해서 읽을 때 성능 저하가 예상될 경우
테이블의 반정규화
- 테이블 병합 - 1:1 관계, 1:M, 슈퍼(상위개체)/서브타입(하위개체) 테이블 병합
- 테이블 분할 - 수직, 수평분할
- 테이블 추가 - 중복, 통계, 이력, 부분 테이블 추가
1) 테이블 병합
- 두 개의 테이블이 JOIN 되는 경우가 많아 통합하는 것이 성능 측면에서 유리할 경우 하나의 테이블로 만들어 사용.
2) 테이블 분할
- 수직 분할: column 단위로 테이블 분리(속성 기준 분할)
- 수평 분할: row 단위로 테이블 분리(레코드 기준 분할)

3) 테이블 추가
- 중복 테이블 추가: 타 업무 또는 타 서버에 있는 테이블과 동일한 구조의 테이블 추가
- 통계 테이블 추가: 통계값을 미리 계산해서 저장하는 테이블 추가
- 이력 테이블 추가: 마스터 테이블에 존재하는 row를 트랜잭션 발생 시점에 따라 복사해두는 테이블 추가
- 부분 테이블 추가: 자주 조회되는 컬럼들만 별도로 모아놓은 테이블 추가
칼럼의 반정규화
- 중복칼럼 추가
→ JOIN 감소를 위함.
- 파생칼럼 추가
- 이력 테이블 칼럼 추가
→ 기능성 칼럼(최신 여부, 시작일/종료일 등) 추가
- PK에 의한 칼럼 추가
- 응용시스템 오작동을 위한 칼럼 추가
참고 사이트)
테이블 추가 - https://youtu.be/SS6H2whbfwc
728x90
반응형
'데이터베이스 > 데이터베이스 공부' 카테고리의 다른 글
트랜잭션과 무결성(트랜잭션, 원자성, 일관성, 고립성, 지속성, 무결성) (0) | 2022.08.18 |
---|---|
SQL 문장들의 종류(DML, DDL, DCL, TCL) (0) | 2022.08.17 |
성능 데이터 모델링(성능 데이터 모델링 정의, 성능 데이터 모델링 수행 절차) (0) | 2022.08.16 |
정규화(제1정규형, 제2정규형, 제3정규형, 보이스/코드 정규형) (0) | 2022.08.16 |
데이터베이스의 기본(엔터티, 릴레이션, 속성, 도메인, 필드와 레코드, 관계, 키) (0) | 2022.08.11 |