mlb 모델링

Pang·2021년 10월 6일
0
post-thumbnail

프로젝트에 앞선 mlb사이트 모델링을 하였다.
링크 : https://www.mlb-korea.com/main/mall/view?utm_source=google&utm_medium=search_ad&utm_campaign=MLB&utm_content=201022_MPBZ_0N0000N_01&gclid=CjwKCAjwkvWKBhB4EiwA-GHjFoHwXO9mlbVFRM3mkqWAhGBQF18_og350qw8U3MP3tajhdhimbzaLhoCnuoQAvD_BwE

각각의 메뉴와 카테고리 자체를 클릭하여도 메인페이지에 상품 정보들이 떠서
처음에는 products테이블에 메뉴와 아웃카테고리 인 카테고리를
전부 Foreignkey로 묶어주었는데

모델링 리뷰를 받고 어짜피 메뉴와 카테고리들은 이어져 있으니 참조해서
가져오는 식으로 최하단 항목인 인카테고리만 이어주는 것으로 하였다.

메뉴 - 아웃카테고리 - 인카테고리 - 상품을이어주었다.

products

상품에 필요한 정보

  1. 이름
  2. 상품 코드
  3. 제품 상세 정보
  4. 제품 타입
  5. 가격
  6. 팀 (후에 팀 별 필터을 위해)
  7. 팔린 수량 (후에 인기순 정렬을 위해)
  8. 날짜 (후에 최신순 정렬을 위해)
  9. 카테고리 포링키

로 테이블을 만들었다.

그리고 제품에 있는 이미지는 1:N 이므로 테이블을 하나 빼서 따로 만들어주었다.

아래 제품 이미지도 처음에는 같은 url이미지를 넣어주려고 했는데
멘토님의 리뷰로 인해 이미지를 넣는 것이 아니라 이미지와 글자들이 섞여있기 떄문에 html을 데이터베이스에 저장하여 하는 식으로 변경하여
TextField로 하였다.

상품과 사이즈는 서로 여러 개의 값을 가질 수 있기 때문에
N:M으로 하였다.

사이즈별로 품절이 되면 더이상 그 상품을 고를 수 없게 하기 위해

중간 테이블에 사이즈별 수량을 넣어주었다.

Users

유저 테이블 구성

  1. 이름
  2. 아이디
  3. 비밀번호
  4. 생일
  5. 성별
  6. 외국인, 내국인
  7. 핸드폰 번호
  8. 주소
  9. 전화번호
  10. 이메일
  11. 마일리지
  12. 생성시각
  13. 업데이트 시간

처음에는 아이디와 비밀번호 이런 곳에 Null값을 주지 않았지만

비회원으로 주문을 할 시에 비회원의 정보도 user테이블에 담긴다는 정보를 얻었다.

그래서 비회원은 회원가입을 하지 않지만 유저 테이블에 정보는 담겨야 하기에
주문 정보에서도 필요하고 회원가입할 때 필요한 겹치는 정보들을 제외하고는 Null값을 주었다.

데이터의 효율을 위해 성별과 외국인, 내국인은 True False로 표현할 수 있게 실제 장고에서는 BooleanField을 사용하였다.

orders

  1. 주문 받는 사람 이름
  2. 핸드폰 번호
  3. 주소
  4. 전화번호
  5. 요청사항
  6. 상품 번호

주문창에 직접 가보니 주문하는 사람과 받는 사람의 정보를
다르게 설정할 수 있어서 주문 테이블에 주문받는 사람의 정보를 넣어주기로 하였다.

그리고 파생된 테이블을 살펴보자면 송장번호와 택배회사를 알 수 있는 테이블을 만들어주었고
배송 상태를 확인하는 테이블을 만들어주었다.

order_items

주문과 상품 테이블의 중간 테이블이다.

여기서 각 항목의 사이즈 수량을 계산하여 아래쪽의 products_sizes에 있는 재고별 수량에서 뺴주어서 품절 항목이 무엇인지 알 수 있게 해준다.

후에 파생된 테이블로 주문 상태 확인을 위한 테이블을 별도로 만들어서
주문이 취소되는 상황 완료된 상황을 알 수 있게 해주었다.

profile
팡 화이토

0개의 댓글