[프로젝트][Back] kakao login 구현하기(6)_sql DBM 사용하기 #06

피용희·2024년 5월 11일
0

firebase가 customToken을 설정해주긴 하지만, 이는 로그인 후 회원 정보를 저장해줄 뿐, "회원가입 유무"를 결정해주진 않는다. 그러므로 우리는 회원 정보를 저장할 db를 구성해야 한다.

우선 본격적으로 쇼핑몰 개발에 들어가기전, db를 먼저 구성해야 하기에 회원가입 프로세스를 정리하기 전 db를 구성해보기로 하였다.

https://app.sqldbm.com/MySQL/DatabaseExplorer/New/#
이 툴을 사용해볼 것이다. 처음 사용해보는 것이라 사용법을 정리하며 진행하고자 한다.

필요한 요소들 정리

우선 기본적으로, 현재 내 프로젝트에서 필요한 기능들과 그걸 이루는 요소들을 먼저 정리해보자.

  1. 회원 정보
  • 회원 이름
  • 회원 닉네임
  • 이메일
  • 전화번호
  • 프로필 사진
  • 주소
  • 회원 번호(고유 id)(PK)
  1. 상품 정보
  • 카테고리 고유 번호(FK)
  • 상품 사진
  • 가격
  • 상품 id(PK)
  • 상품 사이즈(s,m,l,free)
  • 브랜드
  • 재고 수량
  • 세일 상태
    • 세일 퍼센트
  • 상품 설명
  • 등록일
  1. 주문
  • 주문 번호(주문 id) (PK)
  • 주문한 회원 id (FK)
  • 주문한 상품 id(list) (FK)
  1. 주문 상품 (상세)
  • 주문 상품 사진
  • 주문 상품 사이즈
  • 주문 상품 수량
  • 주문 상품 id (PK)
  1. 장바구니
  • 회원 id(회원 별로, 장바구니는 1개 이므로) (PK)
  • 장바구니 상품 id (FK)
  • 각 상품 수량
  • 장바구니 추가 날짜
  1. 카테고리
  • 카테고리 고유 번호 (PK)
  • 카테고리 명

우선 현재 기획한 서비스에서 필요한 정보들을 정리하면 다음과 같다.(수정해야 할 부분이 있을 경우, 수정하면서 진행할 예정)

이제 이를 erd로 하나하나 정리해보자.

ERD 다이어그램

1. 주문 + 상품 정보

초보라 허접해서 나중에 고쳐야 할 것 같지만....기본 다이어그램이다.
우선, 하나의 Order안에 여러개의 OrderItem이 들어갈 수 있으므로 이 둘의 관계는 다대일 관계이다.

또한, Product와 OrderItem 관계의 경우, 하나의 product가 여러개의 OrderItem에 속할 수 있으므로 일대다의 관계로 구성했다.

2. 상품에 카테고리 추가

다음은 카테고리를 추가해보자.
이 부분에서 약간의 고민거리가 있었는데, 바로 카테고리가 Category - SubCategory 두가지로 이뤄져 있기 때문이다.

예를 들어 상의에는 티셔츠, 셔츠, 블라우스와 같은 하위 카테고리가 있을 수 있고, 하의에는 바지, 치마, 반바지 와 같은 하위 카테고리가 있을 수 있다.

이 부분을 분리해서 생각했기에, 어떻게 구성해야 할지 고민을 좀 했다.

https://velog.io/@hyevvy/ERD-%EB%A1%9C-%EC%B9%B4%ED%85%8C%EA%B3%A0%EB%A6%AC-%EA%B3%84%EC%B8%B5%EC%9D%84-%ED%91%9C%ED%98%84%ED%95%B4%EB%B3%B4%EC%9E%90

소중한 자료가 있어서 이 분의 자료를 참고해서 "재귀" 방식으로 table을 구성해야 한다는 결론을 내렸다!

이렇게 하면 부모 category를 찾아갈 수 있어 분류가 가능하고, 분류가 따로 추가 되거나 삭제 되어도 추가, 삭제가 쉬워 유지 보수 면에서도 이득이 있다.

3. 장바구니


장바구니의 경우, cart, cartProduct, product 세가지로 나눠서 구성했다.
또한, 장바구니는 userId당 하나만 가지고 있으므로 userId를 연결했다.

장바구니 안에 productId만 넣을지, 이미지, 가격 등의 정보도 같이 넣어야 할지는 고민이 있었는데, 우선 빠르게 프로토타입만 먼저 개발하는게 목표라 최대한 간단하게 잡았다.

전체

처음이라 좀 허접할 수 있긴한데, 차차 보완하려고 한다.

profile
코린이

0개의 댓글

관련 채용 정보