데이터베이스 설계에서 중복을 제거하고 무결성을 유지하는 과정인 ‘정규화(Normalization)’의 단계별 핵심 원리를 분석한다.
데이터 이상 현상을 방지하기 위한 논리적 설계 기법을 정리한다.
정규화의 목적과 이상 현상
정규화가 되지 않은 데이터베이스는 데이터 삽입, 삭제, 수정 시 데이터의 불일치나 손실이 발생하는 이상 현상(Anomaly)을 유발한다.
이를 방지하기 위해 테이블을 작은 단위로 분해한다.
단계별 정규화 (1NF ~ 3NF)
- 제1정규형 (1NF): 모든 속성 값은 원자 값(Atomic Value)이어야 한다.
- 제2정규형 (2NF): 기본키의 일부분에만 의존하는 속성이 없어야 한다.
(부분 함수 종속 제거) - 제3정규형 (3NF): 기본키가 아닌 속성 간의 종속 관계가 없어야 한다.
(이행적 함수 종속 제거)
설계의 균형: 성능 vs 무결성
- 장점: 데이터 무결성이 강화되고 중복이 줄어 저장 공간이 절약된다.
- 단점: 테이블 분리로 인해 조회 시 JOIN 연산이 늘어나 성능이 저하될 수 있다.
P.S
정규화는 데이터의 본질적인 관계를 파악하는 논리적 과정이다.
시스템의 요구사항에 따라 정규화와 반정규화 사이의 적절한 균형을 잡는 설계 능력이 중요하는 것 같다.