users
회원 기준로그인 식별자, 이메일, 등급처럼 회원 자체의 속성을 보관합니다.
한 주문에는 공통 정보가 한 번만 있고, 상품별 수량과 주문 당시 단가는 상세 행으로 반복됩니다. 이 분리가 실습 전체의 기준입니다.
로그인 식별자, 이메일, 등급처럼 회원 자체의 속성을 보관합니다.
상품명, 현재 가격, 재고, 카테고리처럼 판매 대상의 현재 상태를 둡니다.
한 주문의 회원, 주문일, 상태, 총액처럼 공통으로 한 번만 필요한 값을 둡니다.
주문 안의 상품별 수량과 주문 당시 단가를 행 단위로 기록합니다.
주문은 반드시 실제 회원 하나를 가리킵니다.
주문 삭제 시 상세를 함께 지우는 CASCADE 정책을 둡니다.
상품 현재 정보와 주문 당시 단가는 분리해 보존합니다.
조회, 수정, 참조의 기준이 되는 대표 키입니다.
주문은 실제 회원을, 상세는 실제 주문과 상품을 가리킵니다.
음수 가격, 음수 재고, 0개 주문 같은 값을 저장 전에 막습니다.
아이디와 이메일이 같은 회원으로 겹치지 않게 합니다.
orders에는 주문 1건의 공통 상태만 둬 중복을 줄입니다.
order_items에는 상품별 수량과 당시 단가를 남겨 과거 거래를 보존합니다.
ON DELETE CASCADE는 주문 삭제 시 상세도 함께 지우는 선택입니다.