더북(TheBook)

다음은 제품 문서의 예다.


{
  product_ID: 3648,
  product_description: "1 package laser printer paper. 100% recycled.",
  product_name : "Eco-friendly Printer Paper",
  product_category : "office supplies",
  list_price : 9.00
}

컬렉션 두 개로 구현하고 이 문서들은 별개로 유지했다면 주문 항목 컬렉션에 질의하여 원하는 주문 항목을 찾은 다음 제품 문서에 질의하여 product_ID 값이 3648인 제품 정보를 찾아야 한다. 즉, 한 주문 항목에서 필요한 정보를 찾으려면 검색을 두 번 수행해야 한다.

하지만 비정규화를 해서 컬렉션 하나에 모든 정보를 넣으면 검색을 한 번만 수행해도 된다. 주문 항목 컬렉션의 비정규화 버전은 다음과 같이 작성할 수 있다.


{
  order_item_ID : 834838,
  order_ID: 8827,
  quantity: 3,
  cost_per_unit: 8.50,
  product :
              { product_description: “1 package laser printer paper. 100% recycled.”,
                 product_name : “Eco-friendly Printer Paper”,
                 product_category : “office supplies”,
                 list_price : 9.00
              }
}

Note 이런 식으로 처리하면 더 이상 product_ID 필드를 가지고 있을 필요가 없다. 이 필드는 order_Items 문서에서 해당 제품을 참조(관계형 데이터베이스의 외래 키 역할)하는 데 사용되는 필드이기 때문이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.