프로젝트에 앞선 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
menus
각각의 메뉴와 카테고리 자체를 클릭하여도 메인페이지에 상품 정보들이 떠서
처음에는 products테이블에 메뉴와 아웃카테고리 인 카테고리를
전부 Foreignkey로 묶어주었는데
모델링 리뷰를 받고 어짜피 메뉴와 카테고리들은 이어져 있으니 참조해서
가져오는 식으로 최하단 항목인 인카테고리만 이어주는 것으로 하였다.
메뉴 - 아웃카테고리 - 인카테고리 - 상품을이어주었다.
products
상품에 필요한 정보
로 테이블을 만들었다.
그리고 제품에 있는 이미지는 1:N 이므로 테이블을 하나 빼서 따로 만들어주었다.
아래 제품 이미지도 처음에는 같은 url이미지를 넣어주려고 했는데
멘토님의 리뷰로 인해 이미지를 넣는 것이 아니라 이미지와 글자들이 섞여있기 떄문에 html을 데이터베이스에 저장하여 하는 식으로 변경하여
TextField로 하였다.
상품과 사이즈는 서로 여러 개의 값을 가질 수 있기 때문에
N:M으로 하였다.
사이즈별로 품절이 되면 더이상 그 상품을 고를 수 없게 하기 위해
중간 테이블에 사이즈별 수량을 넣어주었다.
Users
유저 테이블 구성
처음에는 아이디와 비밀번호 이런 곳에 Null값을 주지 않았지만
비회원으로 주문을 할 시에 비회원의 정보도 user테이블에 담긴다는 정보를 얻었다.
그래서 비회원은 회원가입을 하지 않지만 유저 테이블에 정보는 담겨야 하기에
주문 정보에서도 필요하고 회원가입할 때 필요한 겹치는 정보들을 제외하고는 Null값을 주었다.
데이터의 효율을 위해 성별과 외국인, 내국인은 True False로 표현할 수 있게 실제 장고에서는 BooleanField을 사용하였다.
orders
주문창에 직접 가보니 주문하는 사람과 받는 사람의 정보를
다르게 설정할 수 있어서 주문 테이블에 주문받는 사람의 정보를 넣어주기로 하였다.
그리고 파생된 테이블을 살펴보자면 송장번호와 택배회사를 알 수 있는 테이블을 만들어주었고
배송 상태를 확인하는 테이블을 만들어주었다.
order_items
주문과 상품 테이블의 중간 테이블이다.
여기서 각 항목의 사이즈 수량을 계산하여 아래쪽의 products_sizes에 있는 재고별 수량에서 뺴주어서 품절 항목이 무엇인지 알 수 있게 해준다.
후에 파생된 테이블로 주문 상태 확인을 위한 테이블을 별도로 만들어서
주문이 취소되는 상황 완료된 상황을 알 수 있게 해주었다.