13.2 비정규화 과정

  • 비정규형은 중복을 허용하는 체계화된 모델이다. 제대로 사용하면 비정규형은 정규형의 장점을 살리면서 정규형을 뛰어넘을 수 있는 모델이다.


좋은 비정규형의 과정

  • 함수 종속을 적용해 정규화
  • 성능문제발생요건 도출
  • 비정규화 외에 다른 방안 검토
  • 비정규화 수행
  • 정합성 방안 검토


비정규화 단계

첫번째 단계
  • 일반적인 정규화 단계이며 모델링을 수행하는 단계이다. 비정규화를 수행할 때도 거쳐야 하는 단계이다.


두번째 단계
  • 성능 문제는 사전에 인지하기가 쉽지않다. 실제 운영되는 데이터 가지고 엑세스 패턴을 분석해야 성능 문제를 파악할수있다.
  • 그런데 모델링은 개발보다 선행돼 분석 설계단계에서 진행되므로 개발 중에 발생하는 요건으로 말미암아 비정규화를 고려하는 경우가 많다.
  • 결국 모델링 단계에서는 여측 가능한부분에 대하여 비정규화할뿐 정확히 판단이 힘들다


세번째 단계
  • 비정규형을 채택하기전에 대안을 찾는다.
대안 대상
  • 뷰(VIEW)를 사용해 원천(RAW) 데이터 중복 관리 방지
  • 파티션(Partition)으로 데이터를 나눠서 해결할 수 있는지 검토
  • 클러스터링(Clustering)이나 IOT(Index Oriented Table)같은 특수 형태의 테이블 사용 검토
  • 인덱스를 조종하거나 힌트 등으로 해결할 수 있는지 검토
  • DBMS의 최신 기술을 적용해 해결할 수 있는지 검토


네번째 단계
  • 다양한 종류의 비정규형을 고려해야한다.


다섯번째 단계
  • 데이터 정합성을 어떻게 구현할지 방안을 마련해야한다.


예시

  • 초기 모델링후 엔터티
그림 13.2 정규화 수행전 엔터티


  • 고객 속성으로 정규화된 엔터티
그림 13.3 정규형 엔터티


  • 최종 거래일자 속성를 비정규형(추출)으로 채택
그림 13.4 비정규형 엔터티-추출 ㆍ중복 속성이 사용된 정규형