데이터베이스 성능 향상 등을 위해 정규화된 데이터를 의도적으로 정규형을 위배한 데이터 구조로 만드는 행위를 반정규화라고 한다.
즉, 정규화된 엔터티, 속성, 관계를 시스템의 성능 향상 및 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법이다. 특히 조회에 대한 처리성능이 중요할 때, 부분적으로 반정규화를 수행한다.
컬럼 반정규화, 테이블 반정규화, 관계의 반정규화 종합적으로 고려하여 실시
성능을 향상 시킬수 있는 다른 방법을 먼저 고려하고 그 이후 반정규화를 수행.
반드시 정규화 수행 후 반정규화 수행.
튜닝 등 다른 개선 후 최후의 수단으로 수행.
논리적으로 구분된 엔티티들을 하나의 테이블로 합친다.
논리적 모델 상으론 구분되어야 하지만, Join 없이 하나의 테이블로 관리하는 것이 성능 측면에서 유리할 수 있다.
게시판 테이블에 회원 정보를 일부 저장한다.
회원 정보 테이블과 Join 하여 불러올 수 있지만, 일부 중복 데이터만으로 Join 없이 처리한다면 더 유리할 수 있다.
평균치, 계량값을 특정 필드에 추가한다.
바로바로 계산할 수 있는 값이지만, 자주 참조되는 값이라면 DB에 저장해두는 것이 유리할 수 있다.
남자 여자를 F, M이 아니라 그냥 남자, 여자로 저장한다.
출력 시 '남자' '여자'로 보여줘야 하는 경우 연산을 줄일 수 있다.
https://itwiki.kr/w/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4_%EB%B0%98%EC%A0%95%EA%B7%9C%ED%99%94
https://antkdi.github.io/posts/post-license-sqld-reverse/
삶이 그대를 속일지라도 슬퍼하거나 노하지 말아라 슬픈 날에 참고 견디라. 즐거운 날은 오고야 말리니 마음은 미래를 바라느니 현재는 한없이 우울한 것. 모든 건 하염없이 사라지나가 버리고 그리움이 되리니 – 푸쉬킨