데이터베이스/데이터베이스 공부

반정규화

아밍나 2022. 8. 16. 20:47
728x90

반정규화란?

반정규화: 정규화된 엔터티, 속성, 관계에 대해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법

   - 목적: 시스템의 성능 향상, 개발과 운영의 단순화

반정규화 수행하는 경우

1) 데이터 조회 시 디스크 I/O량이 많아서 성능이 저하될 경우
2) 경로가 너무 멀어 조인으로 인한 성능 저하가 예상될 경우
3) 칼럼을 계산해서 읽을 때 성능 저하가 예상될 경우

테이블의 반정규화

 - 테이블 병합 - 1:1 관계, 1:M, 슈퍼(상위개체)/서브타입(하위개체) 테이블 병합
 - 테이블 분할 - 수직, 수평분할
 - 테이블 추가 - 중복, 통계, 이력, 부분 테이블 추가

1) 테이블 병합

  - 두 개의 테이블이 JOIN 되는 경우가 많아 통합하는 것이 성능 측면에서 유리할 경우 하나의 테이블로 만들어 사용.

2) 테이블 분할

  - 수직 분할: column 단위로 테이블 분리(속성 기준 분할)

  - 수평 분할: row 단위로 테이블 분리(레코드 기준 분할)

▲ 수직분할, 수평분할

3) 테이블 추가

  - 중복 테이블 추가: 타 업무 또는 타 서버에 있는 테이블과 동일한 구조의 테이블 추가

  - 통계 테이블 추가: 통계값을 미리 계산해서 저장하는 테이블 추가

  - 이력 테이블 추가: 마스터 테이블에 존재하는 row를 트랜잭션 발생 시점에 따라 복사해두는 테이블 추가

  - 부분 테이블 추가: 자주 조회되는 컬럼들만 별도로 모아놓은 테이블 추가

칼럼의 반정규화

- 중복칼럼 추가
→ JOIN 감소를 위함.
- 파생칼럼 추가
- 이력 테이블 칼럼 추가
→ 기능성 칼럼(최신 여부, 시작일/종료일 등) 추가
- PK에 의한 칼럼 추가
- 응용시스템 오작동을 위한 칼럼 추가

참고 사이트)

테이블 추가 - https://youtu.be/SS6H2whbfwc

 

728x90
반응형