쇼핑몰 스키마 설계 포인트

기준 데이터와 거래 기록

한 주문에는 공통 정보가 한 번만 있고, 상품별 수량과 주문 당시 단가는 상세 행으로 반복됩니다. 이 분리가 실습 전체의 기준입니다.

기준 데이터 회원과 상품은 현재 상태를 보관하고 여러 거래에서 재사용된다.
거래 기록 orders는 주문 공통값, order_items는 상품별 수량과 당시 단가를 남긴다.

users

회원 기준

로그인 식별자, 이메일, 등급처럼 회원 자체의 속성을 보관합니다.

user_id PK username UNIQUE email UNIQUE grade

products

상품 기준

상품명, 현재 가격, 재고, 카테고리처럼 판매 대상의 현재 상태를 둡니다.

product_id PK name price 점검 stock 점검

orders

주문 헤더

한 주문의 회원, 주문일, 상태, 총액처럼 공통으로 한 번만 필요한 값을 둡니다.

order_id PK user_id FK status total_amount

order_items

주문 상세

주문 안의 상품별 수량과 주문 당시 단가를 행 단위로 기록합니다.

item_id PK order_id FK product_id FK quantity 점검 unit_price
orders.user_id → users.user_id 회원 1명 : 주문 N건

주문은 반드시 실제 회원 하나를 가리킵니다.

order_items.order_id → orders.order_id 주문 1건 : 상세 N건

주문 삭제 시 상세를 함께 지우는 CASCADE 정책을 둡니다.

order_items.product_id → products.product_id 상품 1개 : 상세 N건

상품 현재 정보와 주문 당시 단가는 분리해 보존합니다.