정규화(Normalization): 데이터베이스의 중복을 최소화하고 무결성을 유지하는 핵심 기법
🔹 정규화(Normalization)란?
1. 정규화의 정의
정규화(Normalization)는 데이터 중복을 최소화하고 데이터 무결성을 유지하기 위해 데이터베이스를 체계적으로 설계하는 프로세스입니다.
이 과정에서 테이블을 여러 개로 분할하고, 각 테이블 간 관계를 정의하여 데이터 일관성을 보장합니다.
✅ 정규화의 주요 목적:
- 데이터 중복을 줄여 저장 공간을 절약
- 데이터 삽입, 수정, 삭제 시 일관성을 유지(Anomaly 방지)
- 데이터 무결성(Integrity)과 정확성 보장
- 데이터 검색과 업데이트 성능 최적화
📌 정규화는 관계형 데이터베이스(RDBMS)의 핵심 설계 기법이며, 기업 데이터 관리, 전자상거래, 금융 시스템 등 다양한 분야에서 필수적으로 적용됨
🔹 정규화의 주요 개념
✅ 1. 데이터 중복과 이상(Anomaly) 문제 해결
정규화를 하지 않으면 데이터 중복(Data Redundancy)과 함께 삽입 이상(Insertion Anomaly), 수정 이상(Update Anomaly), 삭제 이상(Deletion Anomaly)이 발생할 수 있습니다.
✔️ 데이터 중복 문제:
| 주문ID | 고객명 | 고객연락처 | 상품명 | 수량 | 가격 |
|--------|--------|----------|------|----|----|
| 101 | 홍길동 | 010-1111-2222 | 노트북 | 1 | 100만 원 |
| 102 | 홍길동 | 010-1111-2222 | 스마트폰 | 2 | 80만 원 |
| 103 | 이영희 | 010-3333-4444 | 태블릿 | 1 | 50만 원 |
📌 문제점:
- 홍길동의 연락처가 여러 번 저장됨 → 데이터 중복 발생
- 고객 정보를 변경하면 모든 행을 업데이트해야 함 → 수정 이상 발생
- 특정 주문을 삭제하면 고객 정보도 사라질 가능성이 있음 → 삭제 이상 발생
✔️ 정규화를 통해 해결:
- 고객 정보와 주문 정보를 분리하여 테이블을 설계
- 고객 테이블(Customer)과 주문 테이블(Order)을 외래 키로 연결
✅ 2. 정규화의 단계(Normal Forms, NF)
정규화는 1NF(제1정규형) → 2NF(제2정규형) → 3NF(제3정규형) → BCNF(보이스-코드 정규형) → 4NF → 5NF 순서로 진행됩니다.
🔹 정규화의 단계(1NF ~ 5NF)
✅ 1. 제1정규형(1NF: First Normal Form) - 중복된 열과 다중 값 제거
- 모든 데이터가 원자적(Atomic) 값을 가져야 함
- 하나의 컬럼에 여러 개의 값이 포함되지 않아야 함
✔️ 비정규화된 데이터 (1NF 위반)
| 주문ID | 고객명 | 상품명 | 수량 |
|--------|--------|----------------|----|
| 101 | 홍길동 | 노트북, 스마트폰 | 3 | ❌ (상품명이 여러 개 포함됨)
✔️ 1NF 적용 후
| 주문ID | 고객명 | 상품명 | 수량 |
|--------|--------|------|----|
| 101 | 홍길동 | 노트북 | 1 |
| 101 | 홍길동 | 스마트폰 | 2 |
📌 각 셀에 단일 값만 존재하도록 수정 → 원자성(Atomicity) 보장
✅ 2. 제2정규형(2NF: Second Normal Form) - 부분적 종속성 제거
- 기본 키의 일부분에만 종속되는 컬럼 제거
- 모든 컬럼이 기본 키에 완전히 종속되어야 함
✔️ 1NF 테이블 (2NF 위반)
| 주문ID (PK) | 고객명 | 고객연락처 | 상품명 (PK) | 수량 |
|--------|--------|----------|------|----|
| 101 | 홍길동 | 010-1111-2222 | 노트북 | 1 |
| 101 | 홍길동 | 010-1111-2222 | 스마트폰 | 2 |
📌 고객 정보(고객명, 연락처)가 주문ID에 종속되지 않고 상품명과도 관계 없음 → 테이블 분리 필요
✔️ 2NF 적용 후 (고객 정보 분리)
고객 테이블(Customer)
| 고객ID (PK) | 고객명 | 고객연락처 |
|--------|--------|----------|
| 1 | 홍길동 | 010-1111-2222 |
| 2 | 이영희 | 010-3333-4444 |
주문 테이블(Order)
| 주문ID (PK) | 고객ID (FK) | 상품명 | 수량 |
|--------|--------|------|----|
| 101 | 1 | 노트북 | 1 |
| 101 | 1 | 스마트폰 | 2 |
📌 기본 키에 완전 종속되도록 테이블을 분리 → 부분적 종속성 제거
✅ 3. 제3정규형(3NF: Third Normal Form) - 이행적 종속 제거
- 기본 키가 아닌 컬럼이 다른 컬럼에 종속되면 테이블을 분리해야 함
- 예: 고객연락처는 고객ID에 종속되므로 고객 테이블로 분리
✔️ 3NF 적용 후:
고객 테이블(Customer)과 주문 테이블을 분리하여 유지보수성을 향상시킴.
✅ 4. BCNF (보이스-코드 정규형, Boyce-Codd Normal Form)
- 3NF보다 더 엄격한 정규화 단계
- 모든 결정자가 후보 키(Unique Key)이어야 함
✅ 5. 4NF, 5NF
- 다대다 관계에서 중복 문제를 해결하기 위해 추가적인 테이블 분리 수행
🔹 정규화의 장점과 단점
✅ 정규화의 장점
✔ 데이터 중복 최소화 → 저장 공간 절약
✔ 데이터 무결성 유지 → 삽입, 수정, 삭제 이상 방지
✔ 테이블 간 관계를 명확히 정의하여 데이터 검색 최적화
❌ 정규화의 단점
✔ 너무 많은 테이블 분리 → 복잡한 JOIN 연산 발생
✔ 성능 저하 가능성 → OLAP(데이터 분석) 시스템에서는 일부 정규화 해제(반정규화, Denormalization) 필요
📌 결론
✅ 정규화(Normalization)는 데이터베이스의 중복을 최소화하고 무결성을 유지하는 필수적인 설계 기법이다.
✅ 1NF → 2NF → 3NF → BCNF → 4NF → 5NF 순서로 정규화 단계를 수행한다.
✅ 전자상거래, 금융, 인사관리 등 다양한 데이터 중심 시스템에서 데이터의 정확성과 안정성을 보장하기 위해 정규화가 필수적으로 사용된다.