-
정의
- 모든 정규화를 마친 후 성능상 이슈가 있을때만 고려
- 데이터의 조회 성능 향상 목적
- 데이터의 중복을 허용하거나 그룹핑
- 입력, 수정, 삭제 성능이 저하될 수 있음
- 데이터 정합성 이슈 발생 가능 (데이터들의 관계에 모순이 생김)
-
테이블 반정규화
-
테이블 병합
- 업무 프로세스상 JOIN이 필요한 경우가 많아 통합하는게 유리할 때
- 테이블 관계가 강결합이어서 같이 조회되는게 대부분일 경우
- 종류
- 1:1 관계 테이블 병합
- 1:M 관계 테이블 병합
- 슈퍼 서브 타입 테이블 병합
- 공통 속성을 조회하는 빈도수가 개별 속성 조회하는 빈도수보다 높음
- 공통 속성과 개별 속성을 별도 관리
-
테이블 분할
- 종류
- 테이블 수직 분할
- 속성분할
- 1 : 1 관계 성립
- 분리되는 속성들이 자주 사용되지 않거나 대부분 NULL값일때 고려
- 한 개의 블록에 더 많은 인스턴스 저장 가능
- ex) 회원 엔티티에서 회원 배우자 관련 속성만 분리
- 테이블 수평 분할
- 인스턴스 분할, 파티셔닝
- 인스턴스를 특정 기준으로 별도 엔터티로 분할 (파티셔닝)
- 관계가 없는 다수의 테이블이 생
- ex) 2023 데이터, 2024 데이터 분리
-
테이블 추가
- 종류
- 중복 테이블 추가
- 통계 테이블 추가
- 이력 테이블 추가
- 부분 테이블 추가
- ex) 회원 대상으로 메일 데이터만 다량으로 발생 → 회원이메일 엔티티 추가
-
컬럼 반정규화
- 중복 컬럼 추가
- 파생 컬럼 추가
- 이력 컬럼 추가
-
관계 반정규화
- 중복 관계 추가
- JOIN 필요한 경우 많아 중복관계를 추가하는게 유리한 경우