[weathervely 2] DB 설계
MVP
우선 MVP는 ‘유저의 체감온도를 바탕으로 옷을 보여준다’ 이다. 그리고 추후 사용자의 스타일에 따라 옷을 추천해줘야 함으로 여기에 대한 데이터도 쌓여야 한다.
DB 설계
같이 프로젝트를 하는 백엔드 개발자 분과 이야기를 하였는데, 얼추 나와 생각이 비슷했다.
첫 번째로, 옷 코디를 저장하는 테이블이 있어야 한다. 하나의 옷 코디가 있다면, 예를 들어, 반팔 + 긴바지 혹은 긴팔 + 긴바지 등 이런식으로 있다면 이 코디는 어떤 온도 부터 어떤 온도 까지 입을 수 있다는 컬럼을 만들어 줘야 한다. 또한 이 코디의 스타일을 저장해주는 컬럼도 필요하다.
두 번째로, 온보딩에서 이 사용자의 체감 온도를 설정을 해줬을 때, 이 체감 온도를 기록해주는 테이블도 필요하다. 예를 들어, 어제의 기온이 26도 였는데, 나는 남들 보다 더위를 잘 타서 반팔과 반바지를 입어 이런 식으로의 기록용 테이블이 있어야, 메인 페이지에서 옷을 보여 줬을 때 이 데이터를 기반하여 가중치를 계산을 하고 옷 코디를 보여줘야 하기 때문이다.
세 번째로, 옷 아이템을 저장을 해야 하는데, 카테고리 뎁스 별로 나뉘어야 하기 때문에, 카테고리 테이블 그리고, 마지막 아이템 테이블이 필요 하다.
이렇게 가장 중요한 테이블을 설계를 했다.
느낀점
mysql의 데이터 타입이 익숙치 않아서 조금 헤매었다. postgresql은 배열로도 저장을 할 수 있는데, mysql은 배열로 저장을 못한다. 또한 json으로 저장을 할 수 있지만, json.stringify를 한 다음 저장을 해줘야 하고, 데이터를 가져 와야 할 때도 parsing을 해주고 가져와야 한다. 이렇게 보면 postgresql이 컬럼 데이터 타입이 많은 것들을 지원을 해주는 구나 라는 생각을 했다.
댓글남기기