
전체적인 설계는 위와 같다.
위치 기반 시스템인 만큼 하나의 위치에 거의 모든 서비스가 묶여있는데, 이를 활용하면 사용자의 위치 하나만 가지고 모든 데이터 서비스를 조회 할 수 있도록 설계하였다.

이번에 의도치 않게 일기예보가 큰 도움이 되었다.
그건 바로 날씨 관련 데이터 csv 파일 덕분이다.

위와 같이 대한민국 전역의 위치 좌표가 다 찍혀있다.
따라서, 위치 데이터는 날씨 위치 데이터를 활용해서 미리 매핑을 시켜놓는것이 가능하다!
우리가 할 일은 각각의 API 주소를 파싱하여 적절한 위치에 연결시키면 되는 것이다.
유저는 회원가입 할 때 3단계(동 주소)까지 입력을 받는것으로 한다.
일기예보는 모든 데이터를 한번에 갱신하게 되면 받아야 하는 데이터의 양이 너무나도 많기 때문에 비어있는 데이터를 요청할때 API를 요청하는 방향으로 설계 할 것 같다.
그 이유는 다음과 같다.


생필품 가격정보를 메인으로 하고, 업체 아이디와 상품 아이디를 외래키로 뒀다.
생필품 정보조회때 상품 소분류와 단위/용량 구분은 코드로 주어지기에 따로 API 요청을 통해 얻을 수 있는 데이터와 연결시켰고, 판매 업체 정보 조회도 위치키를 연결하였다.
왜 업체 정보 조회에 x좌표, y좌표를 중복해서 매핑했는가?
이렇게 함으로써의 기대 효과는 다음과 같다.


이건 간단했다.
정말 친절히 시도/시군구 까지 나타내주기 때문에 부담없이 바로 매핑이 가능하다.
위와 마찬가지로 위치 기반 데이터 제공을 할때 같이 나온다.


위치 기반 데이터가 주어지지만, 정확한 주소가 아닌 약식으로 데이터가 제공되기 때문에 주소를 파싱해서 매핑해야 한다.
생필품 판매 업체와 마찬가지로 X,Y 좌표를 따로 매핑해야 한다.
병원도 내 위치를 기반으로 주변에 있는 병원찾기/ 특정 병원 찾기 등으로 호출할 예정이다.

병원/판매 업체는 고유한 주소를 가지기에 따로 빼버렸다.
데이터의 종류가 증가했을때, 건물 좌표만을 가져오기 편하게 하기 위해서 빼뒀다.
건물 분류도 좌표마다 매핑해주는 것이 아닌, 분류 코드에 연결하는 것으로 효율을 올렸다.(데이터 중복 매핑 방지)
이제 데이터가 3가지 분류로 나뉘게 된다.
이로서 드디어 데이터베이스 정리가 끝이 났다.