Spring
배달앱 ERD 설계하기 (feat : 장바구니 기능)
김예나
2025. 3. 3. 00:25
대략 설계된 1차 ERD
- (테이블의 속성만 설계됐다고 보면 됨, 타입이나 널값여부같은 것은 아직 제대로 결정 안 함)
- 일반회원과 사장테이블은 시간관계상 나누면 복잡해질 것 같아서 통합
- 사장은 여러개의 가게를 만들 수 있기 때문에 회원 테이블과 가게 테이블은 1 : N
- 이때 구현려고 한 요구사항은 회원은 1개의 메뉴만 선택하여 주문할 수 있는 것임
- 리뷰는 하나의 주문에만 달 수 있기 때문에 주문 테이블과 1대 1로 지정해 놓음
- 리뷰 테이블의 가게ID는 외래키(기본키로 잘못 설정해놨다, 수정함)
- 리뷰를 조회할 때 작성자명이 보여야 하기 때문에 회원 외래키를 어디에 적용해야 할지 고민함
- 주문테이블에 있는 회원을 타고 가도 충분할 것 같다고 생각해서, 리뷰 테이블에 회원 외래키를 놓지 않음
피드백
- 메뉴가 수정되면 주문한 메뉴가 수정될 수 있기 때문에 주문테이블과 메뉴테이블은 분리해 주어야 한다고 하심
- 주문메뉴 테이블 같은걸 추가해라!
2차 ERD : 장바구니 기능 추가
- 이번 프로젝트에서 내가 담당해야 할 기능은 주문인데, 메뉴 1개만 주문하게 구현한다면 너무 단순해질 것 같아서 장바구니 테이블을 추가해서 고쳐 보았다
장바구니 테이블
- 회원은 여러개의 메뉴를 장바구니에 담을 수 있고, 메뉴 또한 여러개의 장바구니에 담기기 때문에 서로 N : M
- 수량 카운트도 추가
주문 테이블
- 가게 : 주문 = 1 : N
- 회원 : 주문 = 1 : N
- 튜터님께 여쭤본 결과 주문pk 이외에 주문 번호도 고유하게 필요하다고 하셔서 필드 추가!
- 주문 번호를 아예 pk로 해도 된다고 하셨다
- 채번형식으로 할지 uuid로 할지 고민할 예정
주문상세 테이블
- 주문 1개에는 여러개의 메뉴가 들어간다!
- 그렇기에 주문 1개에 들어가는 여러가지 메뉴를 기록할 상세 테이블을 생성
추가 +) 회원 테이블
- 사장님인 경우와 일반 회원인 경우를 나누지 않고 하나의 테이블로 했기 때문에 사장님이 일반 회원으로 가입하고 싶은 경우도 염두해야 한다
- 이메일과 권한을 유니크 제약조건을 추가할 것!
대략 장바구니 부분의 erd는 설계완료 했기 때문에 구현을 먼저 하고 추후에 더 수정해봐야겠다! 끝 😂😂😂