데이터베이스를 설계할 때 처음에는 데이터의 중복을 최소화하고 일관성을 높이기 위해 정규화를 수행한다. 정규화는 '일관성 우선'의 절차로 이해된다. 그러나 정규화가 너무 진행되면 테이블이 너무 많이 쪼개져서 데이터를 조회할 때 조인(Join) 작업이 많아져 성능이 떨어질 수 있다.
이를 해결하기 위해 정규화된 엔티티, 속성, 관계를 시스템의 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법이 반정규화(De-normalization)다. 반정규화는 정규화의 역으로, 일부러 데이터를 중복시키거나 테이블을 통합하여 조회 속도를 높이는 기법이며, 성능과 일관성 사이의 균형을 맞추기 위해 의도적으로 정규화 원칙을 일부 깨는 전략이다. '인덱스 정규화', '머징', '집단화'는 데이터 모델링의 일반적인 반정규화 기법을 지칭하는 표준 용어가 아니므로, 이런 보기가 나오면 정답에서 빠진다.
정규화와 반정규화는 목적과 수행 내용이 정반대로 대비된다. 정규화는 '일관성 우선, 중복 최소화', 반정규화는 '성능 우선, 중복 용인'으로 정리된다.
공식 교재로 짚기
학습목표: 정규화의 목적과 특징을 설명할 수 있다.
정의 중복성을 최소화하고 정보의 일관성을 보장하기 위한 개념이다.
NCS 학습모듈 2001020205 데이터 입출력 구현 · 1-1. 논리 데이터 모델 검증
예제
'정규화된 엔티티, 속성, 관계를 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법은?' 문제의 정답은 반정규화다. '성능 향상', '중복 허용', '정규화의 반대'라는 키워드가 나오면 반정규화를 선택하고, '중복 최소화', '일관성'이 키워드이면 정규화 쪽이다. 정규화는 '깨끗하게', 반정규화는 '빠르게'로 기억하면 보기를 빠르게 걸러낼 수 있다.
대표 기출 1문항
정규화된 엔티티, 속성, 관계를 시스템의 성능 향상과 개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법은?
인덱스정규화
반정규화
집단화
머징
정답과 해설 보기
정답 ② · 정규화된 데이터 모델을 성능 향상과 운영 단순화를 위해 중복, 통합, 분리하는 기법을 묻는 문제이다. 반정규화(De-normalization)는 정규화로 분할된 엔티티, 속성, 관계를 시스템 성능 향상과 개발 운영의 단순화를 위해 의도적으로 중복, 통합, 분리하는 데이터 모델링 기법이다.
정규화의 역으로, 성능 향상을 위해 데이터를 중복하거나 통합하는 기법을 반정규화라고 한다.