데이터 모델은 화면 기능이 어떤 저장 단위로 갈라지는지 보여준다

Book, Auth.js userId, CartItem, Order는 기능 이름이 아니라 데이터 소유권과 변경 범위를 제한하는 경계다.

Book

도서 목록과 상세 화면의 기준 데이터.

키: isbn 또는 _id

Auth.js userId

세션의 문자열 ID가 장바구니와 주문의 소유자를 결정.

MVP: 인증 필수

CartItem

사용자가 선택한 책과 수량을 임시 보관.

참조: userId, bookId

Order

구매 시점의 가격과 수량을 확정 기록.

스냅샷: priceAtPurchase

관계저장 방식이유실수 신호
Auth.js -> CartItemCartItem.userId에 문자열 ID 저장사용자별 장바구니와 수정 권한 조회임의 userId를 입력값에서 신뢰
Book -> CartItemCartItem.bookId 참조책 정보 변경과 수량 변경 분리책 제목과 가격을 장바구니마다 복사
Book -> Order.itemsbookId와 priceAtPurchase 함께 저장주문 후 가격 변경을 이력과 분리주문 총액을 매번 현재 가격으로 재계산