본문 바로가기
WEB/Spring Boot

[Spring Boot] 쇼핑몰 #2 - 도메인 모델과 테이블 설계

by JooRi 2024. 10. 7.
728x90
반응형
SMALL

* 요구사항 분석

기능 목록

  • 회원 기능
    • 회원 등록
    • 회원 조회
  • 상품 기능
    • 상품 등록
    • 상품 수정
    • 상품 조회
  • 주문 기능
    • 상품 주문
    • 주문 내역 조회
    • 주문 취소
  • 기타 요구사항
    • 상품은 재고 관리가 필요하다.
    • 상품의 종류는 도서, 음반, 영화가 있다.
    • 상품을 카테고리로 구분할 수 있다.
    • 상품 주문 시 배송 정보를 입력할 수 있다.

 

* 도메인 모델과 테이블 설계

테이블 설계

 

회원 엔티티 분석

Member(회원) : 이름, 임베디드 타입인 주소(Address), 주문(orders) 리스트를 가진다.

 

Order(주문) : 주문은 상품을 주문한 회원과 배송 정보, 주문 날짜, 주문 상태를 가진다.

주문 상태(status)는 열거형을 사용하여 주문(ORDER)/취소(CANCEL)를 표현할 수 있다.

한번 주문 시 여러 상품을 주문할 수 있으므로 주문과 주문상품(OrderItem)은 1:N 관계이다.

 

OrderItem(주문 상품) : 주문한 상품 정보와 주문 금액(orderPrice), 주문 수량(count) 정보를 가진다.

 

Item(상품) : 이름, 가격, 재고수량(stockQuantity)을 가진다. 상품을 주문하면 재고수량이 줄어든다.

 

Delivery(배송) : 주문 시 하나의 배송 정보를 생성하기에, 주문과 배송은 1:1 관계이다.

 

Category(카테고리) : 상품과 N:N 관계이다.

 

Address(주소) : 값 타입(임베디드 타입)이다. 회원(Member)과 배송(Delivery)에서 사용한다.

 

회원 테이블 연관 관계 매핑 분석

회원 - 주문

1:N 양방향 관계, Order.member를 ORDERS.MEMBER_ID 외래 키와 매핑

(외래키가 있는 주문이 연관관계의 주인)

 

주문상품 - 주문

N:1 양방향 관계, OrderItem.order를 ORDER_ITEM.ORDER_ID 외래 키와 매핑

(외래 키가 주문상품에 있으므로 주문상품이 연관관계의 주인)

 

주문상품 - 상품

N:1 단방향 관계, OrderItem.item을 ORDER_ITEM.ITEM_ID 외래 키와 매핑

 

주문 - 배송

1:1 양방향 관계, Order.delivery를 ORDERS.DELIVERY_ID 외래 키와 매핑

 

카테고리 - 상품

@ManyToMany를 사용하여 매핑

(실무에서 @ManyToMany는 사용 X, 여기서는 다대다 관계를 예제로 보여주기 위해 추가했을 뿐이다.)


 

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 강의 | 김영한 - 인프런 (inflearn.com)

 

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 강의 | 김영한 - 인프런

김영한 | 실무에 가까운 예제로, 스프링 부트와 JPA를 활용해서 웹 애플리케이션을 설계하고 개발합니다. 이 과정을 통해 스프링 부트와 JPA를 실무에서 어떻게 활용해야 하는지 이해할 수 있습니

www.inflearn.com

본 게시물은 위 강의를 공부하고 정리한 글입니다.

 

 

728x90
반응형
LIST

댓글