Open tonykang22 opened 1 year ago
cancel_id
order_id
purchase_agency_cancel_id
purchase_agency_request_id
delivery_agency
delivery_agency_cancel_id
cancel_date
order_sheet
cancel_sheet
판매
판매완료
정상적인 시나리오
취소/반품/환불
예외 상황
product_id
source
sold_count
cancel_count
특정 상품의 완료된, 취소된 주문 카운트를 확인할 수 있어야 한다.
product
Order-Manager Table v2
개요
cancel_id
: Source에서 취소/반품/환불 등의 처리를 위해 발급되는 id로,order_id
와 다르다.cancel_id
가order_id
와 동일하다면,cancel_id
값에order_id
값을 채우면 된다.purchase_agency_cancel_id
: Purchase Agency에 취소 요청을 하면 발급되는 id로,purchase_agency_request_id
와 다르다.delivery_agency
는cancel_id
등이 필요 없을 것으로 예상된다.delivery_agency_cancel_id
등 까지 고려하는 것은 과도한 설계로 판단된다.Order-Manager Table v2 설계
기존과 달라진 점 (비교 : #260 Order-Manager Table v1)
cancel_id
추가 : Source에서 취소 처리를 위해 발급되는 idpurchase_agency_cancel_id
추가 : Purchase Agency에 취소 요청 시 발급되는 id (추후 취소 현황을 조회할 수 있다.)cancel_date
위치 변경 : 기존의order_sheet
테이블에서cancel_sheet
테이블로 이동테이블을 분리한 이유
판매
의 입장에서는판매완료
가정상적인 시나리오
이고,취소/반품/환불
등이예외 상황
으로 간주할 수 있다.판매완료
로 종료되는 수가취소/반품/환불
등의 수보다 압도적으로 많아지는 것이다.취소/반품/환불
은 일어날 수도, 일어나지 않을 수도 있는 경우이다. (낮은 확률로 일어날 것을 예측)cancel_sheet
의 컬럼들은 정상상황이라면 부여되지 않을 값로, 따로 분리하여 보관하는 것이 타당하다고 판단한다.테이블 분리 후 예측되는 상황
cancel_id
를 사용하기 위해서는, "Source Vendor" 값을 알아야한다.product_id
를 통해 product 테이블의source
를 조회해야한다.sold_count
]sold_count
는 order_sheet를 통해 판매가 완료될 때마다 +1 씩 추가하는지cancel_count
값 또한 둘 예정인지cancel_count
값이 존재하는 경우cancel_sheet
테이블을 조회 및 사용하는 경우는 실제 취소/반품/환불의 경우로, 적은 경우의 수로 사용하므로 성능 이슈가 크게 문제되지 않을까 생각한다.cancel_count
값이 존재하지 않는 경우특정 상품의 완료된, 취소된 주문 카운트를 확인할 수 있어야 한다.
의 취소 카운트를 조회하는 경우에도,cancel_sheet
테이블을 직접 사용해야한다.