내 커피는 핑크! 바나프레소의 주문 화면을 보고 주요 엔터티와 속성을 설계해보면 다음과 같습니다.
각 엔터티별 주요 내용을 정리해보면 다음과 같습니다.
•
매장
◦
도로명과 같은 주소를 처리하는 부분은 제외되어 있습니다.
▪
해당 부분은 아래 글의 답글들을 참고하시면, 전문가분들이 잘 정리해서 설계해주셨습니다. 꼭 참고해 보세요.
◦
위도경도를 하나의 컬럼으로 관리하고 있습니다.
▪
POINT 자료형은 X, Y 좌표 값을 저장할 수 있으며 거리 계산에 유용합니다.
•
DBMS에 따라 해당 자료형에 인덱스를 추가해 성능 개선도 고려할 수 있습니다.
•
매장별메뉴
◦
매장별로 파는 메뉴가 상이할 수 있다는 점을 고려한 엔터티입니다.
▪
예를들어 A 매장에는 수박주스가 팔지만, B 매장에는 수박주스가 안판다는 점입니다.
▪
여기서 추가로 고려해볼 것은 수박주스가 팔았다 안팔았다 하는 것을 어떻게 설정할 것인가입니다. 관련해서 엔터티를 변경하거나 엔터티를 추가해야 할 수도 있습니다.
•
주문
◦
꼭 회원이 아니어도 주문할 수 있는 것을 고려해 비회원주문번호를 추가해 놨습니다.
▪
실제 업무에 따라 비회원 관련된 정보를 추가로 저장해야 합니다.
▪
비회원도 주문할 수 있게 하는 것은 마케팅 관점에서 매우 중요하다 생각합니다.
•
회원 가입이 매우 귀찮은 분들도 많거든요.
•
주문상세
◦
주문상세는 하나의 주문에 여러 개의 메뉴를 주문할 수 있도록 합니다.
◦
참고로, 주문상세는 현재 주문과 메뉴를 참조합니다.
▪
조금더 타이트하게 데이터 정확성을 올리고자 할 때는, 주문상세가 메뉴가 아닌 매장별메뉴를 참조하는 것을 고려해 볼 수도 있습니다.
•
이 경우에는 매장별메뉴가 향후 데이터가 삭제되지 않도록 해야 합니다.
제 생각은 여기까지입니다. 다양한 기능을 추가하면서 엔터티나 속성을 추가해본다면 제법 재미있는 작업이 되리라 생각합니다.
다른 전문가분들의 모델도 꼭 보시기 바랍니다.
감사합니다.