백앤드 개발자로 근무하면서, DB정규화는 선택이 아닌 필수요소로 작용합니다.
정규화가 왜 필요하고 어떤 단계로 정규화를 해 나가야 되는지를 간략하게 요약해보았습니다.
1. 정규화란 ?
•
DB설계시 데이터의 무결성 및 성능개선, 이상현상 방지를 위해 필요하다.
•
데이터와 관계를 최소단위로 분해하여, 중복되는 데이터가 없게하는 과정이다.
2. 목적
•
중복 데이터를 최소화하여 테이블 불일치 위험을 최소화한다.
•
수정, 삭제 시 이상 현상을 방지함으로써 데이터 구조의 일관성을 최대화한다.
•
데이터 삽입 시 릴레이션의 재구성에 대한 필요성을 줄인다.
•
효과적인 검색 알고리즘을 생성할 수 있다.
3. 정규화 단계
4. 참고
•
실무에서는 목적에 따라 모든 정규화를 충족시키지 못할때도 있다.
◦
예시 : 확장성을 고려하여 역정규화 필요, 단발적인 테이블 설계, 유지보수로 발생하는 변동사항 등
•
BCNF 까지의 단계는 완벽히 이해하고, 되도록이면 지켜야 된다고 생각한다.