응애개발자
article thumbnail
728x90

1. 요구사항 분석

메인 화면

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

2. 도메인 모델 설계

UML 1

다대다 테이블은 관계형 DB, 엔티티에서도 거의 사용하지 않는다 따라서 일대다 , 다대일 관계로 풀어냈다. 상품 분류 : 상품은 도서, 음반, 영화로 구분되는데 상품이라는 공통 속성을 사용하므로 상속 구조로 표현했다.

 

UML 2 상세정보

3, 테이블 설계

태이블 ERD

MEMBER : 회원 엔티티의 Address 임베디드 타입 정보가 회원 테이블에 그대로 들어갔따. 이것은 DELIVERY 테이블도 마찬가지이다.

ITEM : 앨범, 도서, 영화 타입을 통합해서 하나의 테이블로 만들었다. DTYPE 컬럼으로 타입을 구분한다.

 

4. 연관관계 정리

  • 회원과 주문 : 일대다 양방향 관계다. 연관관계의 주인을 정해야 하는데 외래 키가 있는 주문이 연관관계의 주인이다. 그러므로 Order.member를 ORDERS.MEMBER_ID 외래 키와 매핑한다.
  • 주문상품과 주문 : 다대일 양방향 관계다. 주문상품이 연관관계의 주인이다. 그러므로 OrderItem.order를 ORDER_ITEM_ID외래 키와 매핑한다.
  • 주문상품과 상품 :  다대일 단방향 관계다.  OrderItem.item을 ORDER_ITEM.ITEM_ID 외래 키와 매핑한다.
  • 주문과 배송 : 일대일 양방향 관계다. Order.delivery를  ORDERS.DELIVERY_ID 외래 키와 매핑한다.
  • 카테고리와 상품 : @ManyToMany를 사용해서 매핑한다.

5. 엔티티 클래스

회원 엔티티
주문 엔티티
주문상품 엔티티
상품 엔티티
상품-도서 엔티티
상품-음반 엔티티
상품-영화 엔티티
배송 엔티티
카테고리 엔티티
주소 값 타입

 

엔티티와 테이블 설계를 완성했다. 이 엔티티를 기반으로 실제 애플리케이션을 개발해보자.

 

 

profile

응애개발자

@Eungae-D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!