Overview
얍얍얍
Normalization
Normalization(정규화)은 데이터 정합성(데이터의 정확성과 일관성을 유지하고 보장)을 위해 Entity를 작은 단위로 분리하는 과정이다.
- 조회성능은 처리조건에 따라 향상되는 경우도 있고 저하되는 경우도 있다.
- 일반적으로 입력, 수정, 삭제 성능은 향상된다.
- 지나친 정규화는 오히려 성능 저하를 일으킬 수 있다. (여러 번의 JOIN을 해야 함)
제1정규형
모든 속성은 반드시 하나의 값만 가져야 한다.
제2정규형
Entity의 모든 일반속성은 반드시 모든 주식별자에 종속되어야 한다. (주식별자가 복합식별자인 경우 발생할 수 있다.)
제3정규형
주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없다.
De-Normalization
De-Normalization(반정규화)은 데이터의 조회 성능을 향상시키기 위해 중복을 허용하거나 데이터를 그룹핑하는 과정이다.
- 입력, 수정, 삭제 성능은 저하될 수 있다.
- 데이터 정합성 이슈가 발생할 수 있다.
- 정규화가 끝난 후 거치게 되는 과정이다. 모든 정규화를 마친 후 성능상 이슈가 있을때만 고려한다.
테이블 반정규화
- 테이블 병합 : 업무 프로세스상 JOIN이 필요한 경우가 많아 테이블을 통합하는 것이 성능 측면에서 유리할 경우 고려
- 1:1 관계 테이블 병합
- 1:M 관계 테이블 병합 (단, 1에 해당하는 Entity의 속성 개수가 많으면 병합했을 경우 중복 데이터가 많아지므로 테이블 병합에 적절하지 못하다.)
- 슈퍼 서브 타입 테이블 병합