정규화(Normalization)란?

<aside> 💡 Normalization의 기본 목표는 테이블 간에 중복된 데이터를 허용하지 않는다는 것이다. 중복된 데이터를 허용하지 않음으로써 무결성(Integrity)를 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있다.

</aside>

관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 **정규화(Normalization)**라고 한다.

정규화의 목적

  1. 데이터베이스의 변경 시 이상 현상 제거

이상 현상(Anomaly) 테이블 내의 데이터들이 불필요하게 중복되어 있어 테이블을 조작할 때 발생되는 데이터 불일치 현상을 의미한다.

크게 3가지 삽입, 삭제, 수정 이상이 존재하며, 이는 정규화를 통해 해결 가능하다.

  1. 데이터베이스 구조 확장 시 재 디자인 최소화

정규화된 데이터베이스 구조에서는 새로운 데이터 형의 추가로 인한 확장 시, 그 구조를 변경하지 않아도 되거나 일부만 변경해도 되는 경우가 있다. 이는 이 데이터베이스와 연동된 응용 프로그램에 최소한의 영향만을 주며, 응용 프로그램의 생명을 연장시킨다.

  1. 사용자에게 데이터 모델을 더욱 의미있게

정규화된 테이블들과 정규화된 테이블들간의 관계들은 현실세계에서의 개념들과 그들간의 관계들을 반영한다. 즉 데이터 모델을 사용자에게 더욱 의미(informative)있게 한다