지도를 프로젝트에 띄우는데까지 성공했으니 이제 이 지도를 이용해 기능들을 하나하나 구현해볼 차례이다.
가장 먼저 구현해보고자 하는 기능은 "지도에 추억을 저장할 수 있는 기능"이다. 추억을 저장한다는 말이 거창하게 들리지만 여기서 추억은 여행 사진, 여행지에서 찍은 동영상, 여행 추억을 담은 짧은 글 정도를 의미한다.
제주도로 이사를 오게되니 아무래도 여행 다니는 빈도수가 부쩍 늘었고 이런 여행의 추억들을 쉽고 간편하게 기록하고 싶어 이 기능을 생각하게 되었다.
일명 "지도에 추억 저장"이라고 이름 붙은 이 기능은 쉽게 설명하자면 우리가 방문한 여행지 혹은 방문지를 지도에 표시하고 해당 지역과 연관지어 그 곳에서 찍은 사진, 동영상, 글 등을 기록할 수 있게 하는 것이다. 유저는 지도의 어느 곳에나 핀을 찍을 수 있고 해당 장소에 그 곳과 연관된 추억들을 저장할 수 있다. (구글맵에 있는 기능과 비슷하다.)
이 정도가 현재까지의 기능에 대한 구상이고 개발을 진행하며 이 뼈대에 살을 붙여 나갈 계획이다.
다음은 현재까지의 계획을 토대로 구상한 er 다이어그램이다.

여기서 사용되는 테이블의 용도는 다음과 같다.
user >
사용자에 대한 정보가 이 테이블에 담긴다. 유저가 보통 저장하는 기본적인 값들(이름, 이메일, 설명글)이 이 테이블에 포함된다. 현재 merci는 오직 한 유저(나)만을 타겟으로 하는 어플리케이션이라 유저 테이블이 굳이 필요하지 않을 수도 있지만 확장성을 고려하여 user 테이블을 설계하게 되었다. 아직은 1인 유저가 타겟이기 때문에 password와 관련된 컬럼도 집어넣지 않았다.
place >
사용자가 방문한 장소가 이 테이블에 담길 것이다. lon, lat 컬럼이 longitude(경도), latitude(위도)를 의미하며 이 위도, 경도 값을 토대로 해당 장소에 대한 위치가 결정된다. merci는 geoserver 사용까지 염두에 두고 있기 때문에 현재는 존재하지 않지만 후에 공간정보와 관련된 데이터 타입 컬럼이 추가될 수도 있다.
album >
사용자는 같은 장소에 여러번 방문할 수 있다. 같은 장소이지만 여러번 방문하여 여러 다른 추억들을 만들 수 있고 이를 기록하기 위해 album 테이블이 존재한다. album 테이블의 목적은 쉽게 말해 같은 장소 내에 추억들을 그룹화하는 것이다.
file >
파일 데이터들이 file 테이블에 담긴다. 이 기능에서는 사진과 동영상 등의 파일이 파일 테이블에 기록될 것이다. file들은 aws S3를 사용하여 저장할까 고민도 했으나 비용적인 측면을 고려하여 프로젝트 폴더 외 외부 저장소(서버 내 파일시스템)에 파일들을 저장하는 형태로 구현하려고 생각중이다.
er 다이어그램을 보면서 status_cd, reg_dt, mod_dt가 뭔지 궁금할 수도 있는데 status_cd는 간단히 말해서 해당 데이터에 대한 상태값, reg_dt는 등록 날짜, mod_dt는 수정 날짜를 의미한다. 이 세 컬럼들은 서비스 상용화 목적을 가지고 있는 어플리케이션이라면 꼭 필요한데 이는 상용화되고 있는 서비스에 이슈가 발생하면 이 컬럼들에 적힌 값들이 큰 도움이 되기 때문이다. 예를 들어, 실제 서비스가 되고 있는 어플리케이션에서는 데이터를 그냥 지워버리지 않고 상태값만 바꿔서 데이터를 남겨둔다. 어떤 유저가 회원탈퇴를 하더라도 유저에 대한 정보를 단순히 delete시키지 않고 상태값 변경 후 남겨두는 것이다.(물론 데이터 정책에 따라 달라질 수 있다.) merci 어플리케이션에서 이를 목적으로 사용되는 컬럼이 status_cd라고 생각하면 된다.