Book
도서 목록과 상세 화면의 기준 데이터.
isbn 또는 _id
Book, Auth.js userId, CartItem, Order는 기능 이름이 아니라 데이터 소유권과 변경 범위를 제한하는 경계다.
도서 목록과 상세 화면의 기준 데이터.
키: isbn 또는 _id
세션의 문자열 ID가 장바구니와 주문의 소유자를 결정.
MVP: 인증 필수
사용자가 선택한 책과 수량을 임시 보관.
참조: userId, bookId
구매 시점의 가격과 수량을 확정 기록.
스냅샷: priceAtPurchase
| 관계 | 저장 방식 | 이유 | 실수 신호 |
|---|---|---|---|
| Auth.js -> CartItem | CartItem.userId에 문자열 ID 저장 | 사용자별 장바구니와 수정 권한 조회 | 임의 userId를 입력값에서 신뢰 |
| Book -> CartItem | CartItem.bookId 참조 | 책 정보 변경과 수량 변경 분리 | 책 제목과 가격을 장바구니마다 복사 |
| Book -> Order.items | bookId와 priceAtPurchase 함께 저장 | 주문 후 가격 변경을 이력과 분리 | 주문 총액을 매번 현재 가격으로 재계산 |