반정규화 방법
테이블에 대해
- 테이블 병합
- 1:1 관계를 ~
- 1:M 관계를 ~
- 슈퍼/서브타입을 ~
- 테이블 분할
- 수직분할
- 수평분할
: 로우 단위로 집중 발생되는 트랜잭션 분석
==> 로우 단위로 테이블 쪼갬
- 테이블 추가
- 중복 테이블 ~
- 통계 테이블 ~
- 이력 테이블 ~
- 부분 테이블 ~
칼럼(속성)에 대해
- 중복칼럼 추가
: 조인 감소 위해 - 파생칼럼 추가
: 트랜잭션 처리 시점에 계산 의한 성능저하 예방 - 이력 테이블 칼럼 추가
: 대량의 이력데이터 처리 시 성능저하 예방
이력테이블에 기능성 칼럼(최근값 여부, 시작/종료일자) 추가 - PK에 의한 칼럼 추가
: 복합의미 갖는 PK를 단일 속성으로 구성했을 시에 발생 - 응용시스템 오작동 위한 추가
관계에 대해
- 중복관계 추가
★ 관계의 반정규화는
데이터 무결성 깨트릴 위험 X
정규형, 정규화의 종류
정규형
1차 정규형
모든 속성은 반드시 하나의 값을 가져야 함.
2차 정규화
모든 속성은 반드시 기본키 전부에 종속돼야 함.
3차 정규화
- 기본키가 아닌 모든 속성 간에는 서로 종속 불가.
- 모든 속성들이 기본 키에 이행적인 함수 종속이 아님.
정규화
1차 정규화
모든 속성이 원자값만으로 구성된 형태
==> M:N 관계를 1:M 관계로 변환
ex) A에 해당되는 다른 칼럼의 값이 여러 개
==>해당 대응 칼럼 개수만큼 로우를 쪼갬
2차 정규화
부분적인 함수 종속성 존재
==>서로 관련있는 것끼리 수직분할
3차 정규화
이행함수 종속성 존재
(즉, A -> B, B -> C <===> A -> C인 형태)