본문 바로가기

Spring

배달앱 ERD 설계하기 (feat : 장바구니 기능)

대략 설계된 1차 ERD

  • (테이블의 속성만 설계됐다고 보면 됨, 타입이나 널값여부같은 것은 아직 제대로 결정 안 함)
  • 일반회원과 사장테이블은 시간관계상 나누면 복잡해질 것 같아서 통합
  • 사장은 여러개의 가게를 만들 수 있기 때문에 회원 테이블과 가게 테이블은 1 : N
  • 이때 구현려고 한 요구사항은 회원은 1개의 메뉴만 선택하여 주문할 수 있는 것임
  • 리뷰는 하나의 주문에만 달 수 있기 때문에 주문 테이블과 1대 1로 지정해 놓음
  • 리뷰 테이블의 가게ID는 외래키(기본키로 잘못 설정해놨다, 수정함)
  • 리뷰를 조회할 때 작성자명이 보여야 하기 때문에 회원 외래키를 어디에 적용해야 할지 고민함
    • 주문테이블에 있는 회원을 타고 가도 충분할 것 같다고 생각해서, 리뷰 테이블에 회원 외래키를 놓지 않음

피드백

  • 메뉴가 수정되면 주문한 메뉴가 수정될 수 있기 때문에 주문테이블과 메뉴테이블은 분리해 주어야 한다고 하심
  • 주문메뉴 테이블 같은걸 추가해라!

 

 2차 ERD : 장바구니 기능 추가

  • 이번 프로젝트에서 내가 담당해야 할 기능은 주문인데, 메뉴 1개만 주문하게 구현한다면 너무 단순해질 것 같아서 장바구니 테이블을 추가해서 고쳐 보았다

 

장바구니 테이블

  • 회원은 여러개의 메뉴를 장바구니에 담을 수 있고, 메뉴 또한 여러개의 장바구니에 담기기 때문에 서로 N : M
  • 수량 카운트도 추가

 

주문 테이블

  • 가게 : 주문 = 1 : N
  • 회원 : 주문 = 1 : N
  • 튜터님께 여쭤본 결과 주문pk 이외에 주문 번호도 고유하게 필요하다고 하셔서 필드 추가!
    • 주문 번호를 아예 pk로 해도 된다고 하셨다
    • 채번형식으로 할지 uuid로 할지 고민할 예정

 

주문상세 테이블

  • 주문 1개에는 여러개의 메뉴가 들어간다!
  • 그렇기에 주문 1개에 들어가는 여러가지 메뉴를 기록할 상세 테이블을 생성

 

추가 +) 회원 테이블

  • 사장님인 경우와 일반 회원인 경우를 나누지 않고 하나의 테이블로 했기 때문에 사장님이 일반 회원으로 가입하고 싶은 경우도 염두해야 한다
  • 이메일과 권한을 유니크 제약조건을 추가할 것!

 

 

대략 장바구니 부분의 erd는 설계완료 했기 때문에 구현을 먼저 하고 추후에 더 수정해봐야겠다! 끝 😂😂😂

 


최종 ERD