쿠팡의 핵심 서비스인 상품 조회, 주문, 경제, 배송과 관련된 기능을 중심으로 ERD 를 설계했다. 전체 설계도와 각 테이블에 대한 간략한 설명까지만 적어볼 예정이다.

- `role` 을 이용해 고객과 판매자 구분
- `1:N` : orders, reviews 테이블
- `M:N` : users, products
- 여러 판매자가 여러 상품 판매 가능
- 한 판매자가 여러 상품 등록 가능
- 여러 판매자가 동일한 상품 등록 가능
- `1:N` : order_details 테이블
- 여러 주문 상세 내역이 하나의 판매자 상품에 연결
- 재귀적 `N:1` : `parent_id` 를 통해 상위/하위 카테고리와 연결
- `1:N` : products 테이블
- 상품이 하나의 테이블에 연결
- `N:1` : product_options, reviews 테이블
- 여러 상품 옵션, 리뷰가 하나의 상품에 연결
- `M:N` : sellers_products 테이블
- 여러 판매자가 여러 상품 판매 가능
- `N:1` : product 테이블
- 여러 상품 옵션이 하나의 상품에 연결
- order_details 에서 참조됨
- 상품 별 다양한 옵션 설정 가능
- `N:1` : order_details, payment 테이블
- 여러 주문 상세 내역과 결제과 하나의 주문에 연결
- `1:N` : users 테이블
- 여러 주문이 하나의 고객에 연결
- 여러 상품의 수량과 옵션, 가격 정보 저장
- 주문 이후 상품 정보가 변경되어도 주문 내용 불변
- `N:1` : shipments 테이블
- 여러 배송이 하나의 주문 상세 내역에 연결
- 결제 정보 저장 및 조회 가능
- `N:1` : payment 테이블
- 여러 결제가 하나의 주문에 연결
- 배송 정보 저장으로 고객이 배송 조회 가능
- `N:1` : order_details 테이블
- 여러 배송이 하나의 주문 상세에 연결
- 고객이 구매한 상품에 대한 리뷰 남기기 가능
- `N:1` : users 테이블
- 하나의 상품평이 한 고객과 연결