[데이터베이스] 반정규화

Doyeon Lim·2022년 4월 30일
0

데이터베이스

목록 보기
4/6

반정규화란?

반정규화 de-normalization : 정규화된 엔티티, 속성, 관계에 대해 시스템의 성능향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법

*즉, 성능 향상을 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정을 의미한다. 반정규화를 적용하면 데이터 무결성이 깨질 수 있는 위험이 있다.

반정규화를 수행하는 이유

데이터를 조회할 때 조인으로 인한 성능저하가 예상될 때 성능이 저하될 것이 예상되는 경우 수행한다.

반정규화 절차

  1. 반정규화 대상조사
  • 범위처리빈도수 조사
  • 대량의 범위 처리 조사
  • 통계성 프로세스 조사
  • 테이블 조인 개수
  1. 다른 방법유도 검토
  • 뷰(VIEW) 테이블
  • 클러스터링 적용
  • 인텍스의 조정
  • 응용 애플리케이션
  1. 반정규화 적용
  • 테이블 반정규화
  • 속성의 반정규화
  • 관계의 반정규화

반정규화 기법

테이블 반정규화

  • 테이블 병합
    • 1:1 관계 테이블 병합 : 1:1 관계를 통합하여 성능향상
    • 1:M 관계 테이블 병합 : 1:M 관계를 통합하여 성능향상
    • 슈퍼/서브타입 테이블병합 : 슈퍼/서브 관계를 통합하여 성능향상
  • 테이블 분할
    • 수직분할 : 하나의 테이블의 속성을 분할하여 두 개 이상의 테이블로 분할
    • 수평분할 : 하나의 테이블에 있는 값을 기준으로 테이블을 분할
  • 테이블 추가
    • 중복 테이블 추가 : 동일한 테이블 구조를 중복하여 원격조인을 제거
    • 통계 테이블 추가 : SUM, AVG 등을 미리 수행하여 계산
    • 이력 테이블 추가 : 마스터 테이블에서 자주 조회되는 레코드를 중복하여 테이블 추가
    • 부분 테이블 추가 : 자주 이용하는 칼럼을 모아놓은 별도의 테이블 추가

속성 반정규화

  • 중복 칼럼 추가 : 조인 감소를 위해 중복된 칼럼을 추가
  • 파생 칼럼 추가 : 미리 값을 계산하여 칼럼에 보관
  • 이력 테이블 칼럼 추가 : 대량의 이력 데이터를 처리할 때 기능성 칼럼(최근값 여부, 시작과 종료일자 등)을 추가
  • PK에 의한 칼럼 추가 : 여러 칼럼으로 이루어진 PK를 가진 테이블을 조인할 경우 단순성을 위해서 인공키를 PK로 지정하고 활용
  • 응용시스템 오작동을 위한 칼럼 추가 : 이전 데이터를 임시적으로 중복하여 보관

관계 반정규화

  • 중복 관계 추가 : 여러 경로를 거쳐 조인 할 수 있지만, 성능 저하를 예방하기 위해 추가적인 관계를 맺음

참고

https://dataonair.or.kr/db-tech-reference/d-guide/sql/?mod=document&uid=333
https://sodayeong.tistory.com/106
https://itpenote.tistory.com/604

profile
🙇‍♀️ Android

0개의 댓글