Wecode - Project 3 (부트캠프)/Project 3 과정

Project 3: sprint 1주- 2일차- standing meeting 및 erd modeling

Queen Julia 2023. 10. 10. 12:49

기능 구현 먼저, api문서 통신 위주 

3주안에 못해도

 

우선순위 




바로 erd 회의 

 

https://dbdiagram.io/d/2team-6524aa73ffbf5169f05b838c

 

dbdiagram.io - Database Relationship Diagrams Design Tool

 

dbdiagram.io

 

Erd 테이블은 데이터 기반으로 -> 마이페이지:

위치는 현 위치로 하기로 

 

구독 날짜를 알아야 하니까 user 구독, 셀러 구독 테이블을 따로 빼야함 



주문 테이블- >결제 이후에 들어가는 주문내역 

결제 테이블 ->버튼 누르면 결제되었다 알람/ 외부 결제 모듈(추가사항)  

 

(수령하면, 셀러에게 돈 주는 거는 빼기

간단하게. ) 



검색, 필터링 -> 조건문 select like, select where 


할인가 할인율은 우리가 직접 계산하는게 아니라, query문 있음 

위치 -> 조건 / 반경 

“위치 기반 api “ 검색 

https://kagrin97-blog.vercel.app/other/Kakao%20Local%20Api



회원가입때 받은 주소(필수값) 로 5km로 할 거냐 현위치로 할거냐 -> 웹서비스니 그렇게 돌아다니지 않을테니 

(선택) 배송을 현재 위치 기반 

(선택) 처음 들어가면 메인페이지를 현재 위치 기반 

 

주소: 3줄로 우편번호/ 도로명 주소/ 상세주소 (우편번호 끌어오더라도) 

 

 

 변경 사항: user table에 user name 추가 (배송 때문에)  

 

 

 

Product 테이블 

  • Seller id 넣으면 연결되니, seller 테이블에 마켓명까지 연결 되니 
  • Category id (fk)
  • 판매가, 할인율 discount rate 
  • created at, updated at
변경사항: product 테이블 내에 review

상품 목록에서 rating 넣어야 
정렬- 평점순 가능하니 

 

 

리뷰 페이지 

  • 이미지 Null (리뷰에 사진 없을 수도 있으니) 
  • 글 
  • 닉네임 대신 이메일로 (뒤에 암호화해서) --> user id로 가져오는 
  • product id 
  • 좋아요 (선택사항)
  • created at, updated at  
  • rating (별점) 

--> 목록처럼 다 보이게, 그래서 리뷰의 댓글 없게 

변경사항: 리뷰는 create ,read만 필수 (update, delete는 추가사항) 
- 리뷰 pagination X 

 

 

변경 사항: 거점 배송 안하기로 
배송은 택배/ 방문 수령 

 

 

주문 테이블 (결제 완료된 주문 내역서)

- total price (프론트에서 주문할 떄 보내줄 것)

- order_detail (order_goods) 에서 수량, 각 금액 보내줄 것 (연결)

- 배송 방법 (shipping method) : -->배송 테이블 따로 안 뺴는거로 

- 결제 방법 

- 배송 상태 (devilery status) -> 0,1,2로 (배송 전, 중, 완료) = 주문 상태로 

- updated at은 필요 없는게, 주문 취소/ 수량 추가 시에는 다른 order 가 추가 되는 거니까

 

 

합산까지만 보내주고, 배송비 들어가고 안 들어가는건 프론트에서 하는 거. 

우리는 들어오는 가격만 

 

 

결제 테이블 

 

 

장바구니

- 제품의 재고만큼 

- 가격은 products_id (join)에서 올 것 

 

 

order detail(order goods)에 

- product id, user id, quantity 들어가면 됨 

- 여기에 order id 가 들어가면, join 해서 order 테이블에 어떤 상품썼는지 다 알 수 있음 

- 각각 상품 몇개 들어있는지 (주문 내역서의 디테일)

 

 

 

product_main _ images(대표이미지)

- 단일이미지였으면, 이미지 테이블이 필요 없고, 메인페이지에서 0,1로 대표 이미지 구분하는거로 where로 가져오는 거

or product에 main image 무조건 넣고 / product images는 상세 여러 이미지만. 

- product 안에 image를 넣게 (제품 등록할 떄 메인 이미지 등록)/ 나머지 

 

 

product_detail_images

(프론트에게 sort로 주는 거도 가능)

 

 

 

sellers 테이블 

- 마켓명 (nickname 없음)

- 방문수령이 있으니까, 마켓 주소 -> 위도 경도가 필요함 -> 주소 3개 

- 마켓 이미지 --> product 메인 이미지가 있고, 마켓 프로필용 이미지가 있음 (단일 이미지)

(고려점: 테이블 명과 키명 맞춰서, 우리가 알아보기 좋게)

- product 관련한 정보는 seller 테이블이 아니라(셀러 정보가 아니니까), product 테이블에 sellers_id로 들어감 

 

seller 테이블: seller_market_image는 단일 이미지 (multi 아님) 

 

user subscription table

- 카드 번호 (앞자리만 암호화)

- subscription history (결제 log로) 기록

- subscription fee 

- user id 

- createdAt , updatedAt

- subscription status (잠깐 중단 옵션) 

 

구독 등급/멤버십 종류가 있는게 아님 (돈 많이 낸 사람 /적게 낸 사람 왼쪽 작은 배너, 위 배너 구분 안 하기로)
기간은 쿼리문으로 하면 됨. sql 자체 함수 있음 (주/ 달)

 

seller subscription table

- 카드 번호 (앞자리만 암호화)

- 카드 subscription history (결제 log로) 기록

- subscription fee 

- seller id 

- createdAt, updatedAt 

- subscription status (잠깐 중단 옵션) 

 

subscription 구독 테이블 = 전체 목록에서 상위노출
구독 등급/멤버십 종류가 있는게 아님 (돈 많이 낸 사람 /적게 낸 사람 왼쪽 작은 배너, 위 배너 구분 안 하기로)

 

 

- 기간은 쿼리문으로 하면 됨. sql 자체 함수 있음 (주/ 달)

seller_sub 구독한 사람은->  목록 상위노출  (배너가 아니라)
거점 등록한 사람은 -> 광고 배너 
변경사항: 
seller_sub 구독한 판매자: 상단 배너에 이미지 3개씩 
거점 등록: 홍보 안하기로. 

 

변경사항: seller_category table 삭제

market(seller)_category 

- category name 

 

[product_category]

- category name 

 

 

[likes]

- 표본이 적지는 않는다 -> 동쪽 5km, 서쪽 5km 

- product likes 상품  좋아요 

- user_id

(제품 좋아요가 있고, 댓글이 있고, 댓글 좋아요는 뺴기로, 댓글의 대댓글도 빼기로)

 

거점 등록/ 광고 등록한 사람 홍보 테이블 

- 위치도 현위치 기준이어야 하니 address 넣어야 

제품 좋아요 (X) 

 

 

셀러는 위치 고정으로 처음 기입한 주소에서 올리고, 

위치 기반: 두 점 사이의 거리를 만드는 방식을 sql로 프론트(브라우저에 있는 위치 좌표를 get)에게서 r을 받아오면, 백엔드는 검색해서, 조절하는거로 

[advertisements]

- 거점 등록한 사람한테 혜택을 주겠다 = "광고"해주는거 

 

 

[연결키] 

 

 

 

재고수량 관리 안할거니까 product 테이블에 있는 quantity 빼기. 

product 테이블에 있는 quantity 는 재고 관리

 

order에 있는 quantitiy는 수량 .

 

이미 우리는 product DB에 이 해당 상품의 테이블안에 있는 값 정보들 다 있으니, 주문/결제 시에는 productId 만 있으면 됨.