정규화(Normalization), 반정규화(Denormalization), 이상(Anomaly)
들어가며
- 데이터베이스에서 정규화(Normalization)와 반정규화(Denormalization), 이상(Anomaly)에 대해 정리해본다.

정규화(Normalization)
개념
- 데이터의 중복을 최소화하고, 이상 현상(Anomalies)을 방지하기 위해 데이터베이스 테이블을 구조화하는 과정
- 1차 정규형(1NF), 2NF, 3NF, BCNF, 4NF, 5NF 등의 정규형이 있다.

장점
- 중복된 데이터가 적어져 갱신이나 삭제 시 한 번만 변경해도 일관성이 유지된다.
- 동일한 데이터를 여러 곳에 보관하지 않아도 되어 저장 공간을 절약할 수 있다.
- 테이블 구조가 잘 정리되어 있어 갱신 이상, 삭제 이상, 삽입 이상 같은 문제들을 최소화할 수 있다.
- 테이블이 명확히 분리되어 있고 각 테이블의 역할이 분명하여 상대적으로 유연하게 스키마를 확장하거나 변경할 수 있다.
단점
- 데이터가 여러 테이블에 나뉘어 저장되기 때문에 필요한 정보를 가져오기 위해 복잡한 조인(JOIN) 연산을 많이 수행해야 할 수 있다.
- 데이터 조회가 빈번하고, 여러 테이블을 조인해야 하는 경우 쿼리 성능이 떨어질 수 있다.
- 지나치게 높은 정규형을 추구할 경우 실제 업무에 비해 너무 복잡해질 수 있다.
반정규화(Denormalization)
개념
- 정규화된 구조에서 읽기(조회) 성능 향상 등 특정 목적을 달성하기 위해 의도적으로 테이블 구조를 재배치하거나 데이터를 중복 저장하는 기법
- 쿼리 성능 또는 응답 속도 향상 등의 요구사항을 충족시키기 위해 정규화 원칙을 일부 위배시키는 방법이다.
- 데이터의 중복을 허용하여 조회 성능을 높이거나, 복잡한 조인(JOIN) 연산이나 집계 연산을 줄이기 위해 결과를 미리 저장하는 방법 등을 적용한다.
장점
- 필요한 데이터를 미리 중복 저장해두거나, 집계(Aggregation) 정보를 미리 저장해두면 조인 연산을 줄이거나 계산 과정을 생략할 수 있어 조회 속도가 빨라질 수 있다.
- 조인이 많이 필요한 복잡한 구조를 피할 수 있으므로, 애플리케이션 계층에서 쿼리를 단순화할 수 있다.
단점
- 동일한 데이터가 여러 곳에 중복 저장되므로, 한쪽만 변경되거나 업데이트가 제대로 동기화되지 않으면 데이터 불일치 문제가 발생할 수 있다.
- 데이터가 여러 테이블 또는 컬럼에 중복으로 저장되므로 저장 공간을 더 많이 차지하게 된다.
- 모든 곳에서 동일한 정보를 일관성 있게 업데이트해야 하므로 중복된 데이터가 많을수록 갱신 로직이 복잡해진다.
정규화 vs. 반정규화
구분 | 정규화 | 반정규화 |
목적 | ☑️ 중복 최소화 ☑️ 데이터 무결성 확보 |
☑️ 조회 성능 최적화 ☑️ 복잡한 쿼리 단순화 |
장점 | ☑️ 이상 현상 최소화 ☑️ 무결성 및 일관성 유지 ☑️ 저장 공간 효율화 |
☑️ 조회 성능 향상 ☑️ 복잡한 조인 연산 감소 ☑️ 애플리케이션 로직 단순화 |
단점 | ☑️ 조인 증가로 인한 성능 저하 ☑️ 스키마가 지나치게 복잡해질 수 있음. |
☑️ 데이터 무결성 유지의 어려움 ☑️ 중복으로 인한 저장 공간 낭비 ☑️ 데이터 불일치 가능성 |
적용 시점 | 데이터 구조 설계 초기에 우선적으로 적용 | 성능 개선이 필요하거나 조회 빈도가 높은 특정 부분에 한해 선택적으로 적용 |
사용 예 | ☑️ 데이터베이스 스키마 초기 설계 ☑️ OLTP(온라인 거래 처리) 시스템 |
☑️ 대규모 트래픽 대응 ☑️ 데이터 집계(통계/분석) 활용 ☑️ 캐싱에 준하는 중복 데이터 활용 |
이상(Anomaly)
개념
- 정규화가 제대로 이루어지지 않은 테입르에서 발생하는 테이블 불일치, 중복, 예외적인 문제 등을 의미한다.
종류
- 주로 갱신 이상(Update Anomaly), 삭제 이상(Deletion Anomaly), 삽입 이상(Insertion Anomaly)으로 나뉜다.
(1) 갱신 이상(Update Anomaly)
- 데이터가 중복 저장되어 있을 때, 일부만 수정되어 불일치 문제가 발생하는 현상
예제
학번 | 학생 이름 | 강의명 |
101 | 홍길동 | 데이터베이스 |
102 | 김철수 | 데이터베이스 |
101 | 홍길동 | 자료구조 |
⇒ 홍길동(101번)의 이름을 홍길순으로 변경할 경우, 모든 행이 아닌 첫 번째 행만 수정이 되어 기존의 홍길동과 변경된 홍길순이 모두 존재하는 문제가 발생한다.
(2) 삭제 이상(Deletion Anomaly)
- 특정 데이터를 삭제할 때, 원하지 않는 중요한 정보까지 함께 삭제되는 현상
예제
학번 | 학생 이름 | 강의명 |
101 | 홍길동 | 데이터베이스 |
102 | 김철수 | 자료구조 |
⇒ 김철수(102번)가 수강을 취소하여 해당 행을 삭제하면, 학생 김철수의 개인 정보(학번, 이름)도 함께 삭제되는 문제가 발생한다.
(3) 삽입 이상(Insertion Anomaly)
- 새로운 데이터를 삽입할 때, 원하지 않는 NULL 값이 필요하거나, 불필요한 데이터를 함께 삽입해야 하는 현상
예제
학번 | 학생 이름 | 강의명 |
101 | 홍길동 | 데이터베이스 |
⇒ 새로운 학생 '이영희(103번)' 가 아직 강의를 신청하지 않았다면, 강의명
열에 NULL을 허용해야 하는 문제가 발생한다. (강의가 없으면 학생 정보를 추가할 수 없는 삽입 제약 조건 문제가 발생한다.)
이상 문제 해결 하기 : 정규화(Normalization)
- 정규화(Normalization)를 수행하면 이러한 이상 문제를 방지할 수 있다.
⇒ 갱신 이상 방지 : 학생 이름을 한 번만 수정하면 된다.
⇒ 삭제 이상 방지 : 특정 강의 정보를 삭제해도 학생 정보는 유지된다.
⇒ 삽입 이상 방지 : 강의를 신청하지 않은 학생도 등록할 수 있다.
예 : 학생 정보 테이블 (Student)
학번 | 학생 이름 |
101 | 홍길동 |
102 | 김철수 |
103 | 이영희 |
예 : 수강 정보 테이블 (Enrollment)
학번 | 강의명 |
101 | 데이터베이스 |
102 | 자료구조 |
참고 사이트
A Comprehensive Guide to Database Normalization with Examples - Visual Paradigm Guides
Table of Contents hide 1 Introduction 2 Why Normalize a Database? 3 Levels of Normalization 4 First Normal Form (1NF) 5 Second Normal Form (2NF) 6 Third Normal Form (3NF) 7 Boyce-Codd Normal Form (BCNF) 8 Fourth Normal Form (4NF) 9 Fifth Normal Form (5NF)
guides.visual-paradigm.com
'Database > Database' 카테고리의 다른 글
[Database] 정규화 방법 정리 (1NF, 2NF, 3NF, BCNF, 4NF, 5NF) (0) | 2025.02.10 |
---|