6. 실무와 정규화 – 이론과 현실 사이의 균형

6-1. 정규화의 목적 정리

지금까지 예제를 통해 정규화 과정을 따라가 봤다. 정규화를 사용하는 이유를 요약하면 다음과 같다.

  1. 데이터 중복 최소화
  2. 데이터 일관성 및 무결성 확보
  3. 데이터 이상(Anomaly) 방지
  4. 유연한 구조 확보

6-2. 정규화의 결과 – 우리가 만든 최종 구조

처음의 재앙적인 disaster_orders에서 시작해서 1NF → 2NF → 3NF를 거치며, 최종적으로 다음과 같은 테이블 구조를 얻었다고 정리할 수 있다.

  1. member_3nf : 회원 정보를 저장한다.
  2. product_2nf : 상품 정보를 저장한다.
  3. orders_3nf : 주문 기본 정보를 저장한다. 회원을 참조한다.
  4. order_item_2nf : 주문과 상품을 연결하면서, 주문 수량과 주문 가격을 저장한다.

이 구조는 결국 우리가 처음에 목표로 삼았던 memberproductordersorder_item 설계와 거의 동일하다.

즉, 우리가 앞에서 "당연히 이렇게 설계해야지"라고 생각했던 구조가 사실은 정규화 원칙을 충실히 적용한 결과였던 것이다.


6-3. 우리의 직관과 정규화의 관계

사실, 정규화 이론을 배우기 전에도 우리는 어느 정도 정규화된 설계를 직관적으로 떠올릴 수 있다. 이유는 다음과 같다.

  1. 하나의 칸에는 하나의 정보만