주문 정보가 여러 테이블에 흩어집니다.
users { id, name }
orders { id, user_id, date }
order_items { order_id, product_id, qty }
products { id, name, price }
정규화는 중복을 줄이기 위해 값을 분리 저장하고, 반정규화는 함께 읽을 값을 한 문서에 모아 읽기와 이력 보존을 단순하게 만듭니다.
주문 정보가 여러 테이블에 흩어집니다.
users { id, name }
orders { id, user_id, date }
order_items { order_id, product_id, qty }
products { id, name, price }
주문을 읽을 때 필요한 값이 한 문서에 모입니다.
orders {
user: { name: "홍길동" },
items: [
{ product: "노트북", price: 1500000, qty: 1 },
{ product: "마우스", price: 35000, qty: 2 }
],
total: 1570000
}
조회 시 JOIN으로 조합합니다.
문서 1건 읽기로 끝납니다.
현재 원본 값과 주문 정보를 분리 관리합니다. 주문 시점 스냅샷이 필요하면 이력용 컬럼이나 별도 설계를 추가해야 합니다.
주문 당시 이름·가격이 문서 안에 남습니다. 상품 정보가 나중에 바뀌어도 주문 기록은 그 시점 값을 그대로 보존합니다.