본문 바로가기
프로젝트/개인 프로젝트 V1

(2) 엔티티와 테이블 설계

by Thumper 2022. 8. 1.

1. Database Schema

1. 회원 (users)

  • 회원정보로 name, loginId, password, email, 배송지정보가 있다.
  • 배송지정보(city 도시, street 도로명주소, zipcode 우편번호)는 Address 임베디드 타입 정보로 들어갔다.

 

2. 상품 (item)

  • 상품정보로 categoryType(상품 카테고리), itemName(상품명), itemType(상품 상태등급), price(상품가격), stockQuantity(재고량)이 있다.
  • 상품 카테고리는 ItemCategory 클래스를 사용한다.
  •  ItemCategory의 필드 code는  'BOOK' 'MUSIC'과 같은 시스템에서 전달하는 값이다.
  • ItemCategory의 필드 categoryName은 '책' '음반'과 같은 고객에게 보여주는 값이다. 
  • @ModelAttribute를 활용해  상품등록폼 작성 시, 상품카테고리를 선택할 수 있게 한다.
  • (또한, ItemType의 필드 code도 '상품 상태등급'을 전달하는 값이다.) 
  • 상품 이미지가 있다. 
  • imgName(저장된 이미지 파일명), savePath(파일경로), originImgName(이미지 이름), reImgYn(대표 이미지)
  • 상품을 주문하면 재고수량이 줄어든다.

 

3. 장바구니 (cart)

  • 회원별 주문한 상품들(orderItem)을 담는다.
  • 주문정보로 상품정보(item), 각각의  주문수량(count), 상품주문액(orderPrice)이 있다.

 


 

2. 연관관계 매핑 분석

회원과 장바구니(users - cart)

  • 일대다 , 다대일의 양방향 관계다. ( 연관관계를 표시하기 위해 양방향 매핑을 했다.)
  • 장바구니에서 회원을 참조하는 로직만 만들었다.
  • cart.users 를 cart.users_id 외래 키와 매핑한다.

 

장바구니와 주문상품(cart - orderItem)

  • 일대다 양방향 관계다.
  • 외래 키가 주문상품에 있으므로 주문상품이 연관관계의 주인이다.
  • orderItem.cart 를 order_item.cart_id 외래 키와 매핑한다.

 

 

주문상품과 상품(orderItem - item)

  • 다대일 단방향 관계다.
  • orderItem.item 을 order_item.item_id 외래 키와 매핑한다.

 

 

회원과 상품(users - item)

  • 회원은 상품을 등록할 수 있다.
  • 일대다 양방향 관계다.
  • item.users를 item.users_id 외래 키와 매핑한다.

 

 

상품과 상품이미지(item- itemImg)

  • 상품정보에 여러 개의 이미지가 포함된다.
  • 일대다 단방향 매핑이다. (연관관계 주인은 itemImg이다.)
  • item_id가 외래키가 되어 Item과 연관관계 매핑이 된다. 

 

 

 


느낀점 

  • Item 정보 중, ItemType(상품등급), ItemCategory(상품카테고리) 설계하는 더 나은 방법을 찾았으면 한다.
  • 두 엔티티를 @Entity, @Data로 구현하여 애매한 느낌이 든다. (좀 더 공부가 필요한 부분으로 느꼈다.)

 

댓글