지금까지 예제를 통해 정규화 과정을 따라가 봤다. 정규화를 사용하는 이유를 요약하면 다음과 같다.
처음의 재앙적인 disaster_orders에서 시작해서 1NF → 2NF → 3NF를 거치며, 최종적으로 다음과 같은 테이블 구조를 얻었다고 정리할 수 있다.
member_3nf : 회원 정보를 저장한다.product_2nf : 상품 정보를 저장한다.orders_3nf : 주문 기본 정보를 저장한다. 회원을 참조한다.order_item_2nf : 주문과 상품을 연결하면서, 주문 수량과 주문 가격을 저장한다.이 구조는 결국 우리가 처음에 목표로 삼았던 member, product, orders, order_item 설계와 거의 동일하다.
즉, 우리가 앞에서 "당연히 이렇게 설계해야지"라고 생각했던 구조가 사실은 정규화 원칙을 충실히 적용한 결과였던 것이다.
사실, 정규화 이론을 배우기 전에도 우리는 어느 정도 정규화된 설계를 직관적으로 떠올릴 수 있다. 이유는 다음과 같다.
한 주문에 여러 상품이 들어간다고 해서, 상품들을 한 칸에 노트북, 키보드, 마우스라고 넣으면 관리가 어렵다는 것을 직감한다.
각 상품을 별도의 행으로 관리하는 편이 훨씬 깔끔하고 명확하다고 느낀다.
→ 이것이 바로 제1 정규형, "원자성"의 원칙이다.