20분
정규화, 왜 해야 할까?
Day 1: 같은 주소가 100군데 있어요 - 정규화
정규화, 왜 해야 할까?
데이터 모델링 > Day 1: 같은 주소가 100군데 있어요 - 정규화
학습 목표
데이터 이상(Anomaly) 개념을 이해한다 정규화의 목적과 효과를 파악한다
정규화란?
정규화 (Normalization) = 데이터 중복을 줄이고, 무결성을 보장하는 테이블 설계 기법
쉽게 말해: 같은 정보를 여러 곳에 저장하지 않는 것
비정규화 테이블의 3가지 문제
비정규화된 테이블을 보자:
에디터 로딩 중...
문제 1: 삽입 이상 (Insertion Anomaly)
"새 부서 '기획팀'을 만들고 싶어요. 근데 아직 직원이 없어요."
에디터 로딩 중...
직원 없이는 부서 정보를 저장할 수 없다.
문제 2: 갱신 이상 (Update Anomaly)
"개발팀 전화번호가 02-1111로 바뀌었어요."
에디터 로딩 중...
중복 데이터 중 일부만 수정되면 불일치 발생.
문제 3: 삭제 이상 (Deletion Anomaly)
"박민수가 퇴사했어요. 삭제해주세요."
에디터 로딩 중...
잠깐... 마케팅팀의 유일한 직원이었는데? 마케팅팀 정보(전화번호)도 같이 사라졌다!
정규화 전후 비교
Before (비정규화)
에디터 로딩 중...
After (정규화)
에디터 로딩 중...
| 이슈 | Before | After |
|---|---|---|
| 부서 단독 저장 | 불가능 | 가능 |
| 부서 정보 수정 | 여러 행 | 한 행 |
| 직원 삭제 시 | 부서도 삭제 | 부서 유지 |
정규화의 효과
- 데이터 무결성: 불일치 방지
- 저장 공간 절약: 중복 제거
- 유지보수 용이: 한 곳만 수정
- 확장성: 새 데이터 추가 쉬움
정규화의 단점
"정규화가 무조건 좋은 건 아니에요"
- JOIN 증가: 테이블이 분리되면 JOIN이 필요
- 쿼리 복잡도: 간단한 조회도 JOIN 필요
- 성능 저하: JOIN 많으면 느려질 수 있음
실무에서는 3NF까지 정규화 후, 필요한 곳만 비정규화 (이건 내일 배울 Star Schema에서 다룬다)