회사에서 솔루션을 개발하며 느낀 것은 설계
의 중요성이다.
설계가 바뀌는 일이 많을수록 개발에 걸리는 시간은 점점 늘어난다.
하지만 회사에서 프로젝트 "전체"에 대한 설계를 진행할 일은 많지 않기에, 토이 프로젝트를 진행하면서 전체적인 설계를 해보는 일은 설레는 일이었다.😃
하지만 생각보다 설계에 많은 시간이 소요되었다,,,
"확인"해 줄 사람이 있는 회사 업무와는 달리, 혼자서 ERD 설계를 하고 이 구조로 필요한 API들을 다 만들수 있을까를 고민하다보니 설계 결과에 대한 확신이 부족해 계속 고민하게 되었다
아직 완성된 ERD는 아니지만, 처음의 설계와 나중의 설계가 얼마나 달라질지를 기록하기 위해, 중간 단계에서 ERD를 기록하고자 한다
가장 고민한 부분은 discount table이었다.
매장의 제품에 특정 기간 동안(month) 할인이 들어갈 수 있는데, 할인 판매가를 고려하여 상품 통계를 내는 부분이 가장 표현하기 어려웠다.
먼저, 제품의 기본 판매가는 제품(product) 테이블에 기록하고, 매장마다 제품의 할인 판매가가 있을 경우 할인(discount) 테이블에 할인가를 기록하는 방식으로 두 가지를 구분하였다. 할인가가 있는 제품은 많지 않을 텐데 모든 상품을 대상으로 할인가를 기록하는 방식은 사용자 입장에서 불필요하다고 생각했다
두 번째로, 매장마다 제품의 입고수, 판매수, 재고 수 와 같은 수량은 기록하되, 매출과 순이익과 같은 계산이 들어가는 수치들은 통계(statistics) 테이블에 저장하였다. 매출, 순이익 등은 특정 제품의 할인가와, 매장(store)의 매대비(fixed_cost) 또는 수수료(comission_rate)를 고려해서 계산하여야 했기에, 별도의 테이블에서 관리하는 것이 관리에 용이하다고 생각하였다.
다음 포스팅에서는 ERD에서 fk-pk 관계를 알아보기 쉽게 연결한 뒤, 테이블 정의서를 작성해보고자 한다. 💫
👍👍👍👍