ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 총무앱 - 개발
    사이드 프로젝트/이기적인 총무 2017. 5. 14. 18:22

    구현할 기능 자체가 단순하고 잉여력 측정기 개발 할 때 다양한 기능들을 경험해봐서 그런지 개발을 빠르게 진행 할 수 있었다. 현재 총무앱에 필요한 기본 기능들은 모두 구현이 완료됐다. 각 기능별로 어떻게 구현했는지 간단히 정리하려고 한다.


    - 모임/결제 데이터베이스 관리


    잉여력측정기에서 애플리케이션 데이터베이스를 만드는 것을 한 번 경험해봐서 데이터베이스 기본 동작을 쉽게 구현 할 수 있었다. 테이블은 크게 모임 테이블과 결제 내역 테이블 두개를 생성해서 관리한다.


    모임테이블은 Party Table, 결제내역 테이블은 Pay Table로 관리한다. 굵은 글씨로 표시한 것은 각 테이블의 primary key이다. 붉은색으로 표시한 pay_party_id는 외래키인데, 결제 내역은 항상 특정 모임에 포함되는 관계이기 때문에 선언해뒀다. 모임을 선택하면 결제 내역은 모임 테이블의 party id와 동일한 값들만 읽어오게 되고 모임이 삭제되면 외래키 관계에 있는 값들만 자동으로 삭제할 수 있다.


    DB시간에 배운 외래키를 적용하고 자동으로 삭제되는 기능을 구현하기까지 에러가 많이 발생했었다. 나는 분명히 제대로 SQL 문을 작성하고 적용한 것 같은데 이상한데서 문제들이 툭 튀어나왔다. 지금은 아래와 같이 해결했다



    먼저 테이블 생성 할때 특정 attribute가 외래키임을 선언하는 구문(Foreign key 로 시작하는...)은 테이블 생성 맨 아래에 와야 했다. 중간에 끼어 넣으니까 테이블 생성 할 때 자꾸 죽었다. 이유는 모르겠다.. 애초에 문법상의 문제가 있었던 것인지.. 그런데 이렇게만 두면 생성할때는 문제가 없으나 외래키가  참조하는 튜플(party)을 삭제할 때 또 죽었다. 알고보니 바로 삭제하는(on cascade) 옵션이 적용되려면 아래처럼 DB에 따로 또 옵션을 줘야했다.



    이상한데서 시간을 말짱 보냈다 ㅡㅡ


    - 결제내역 공유하기 기능


    카카오톡 공유기능처럼 깔끔하게 만들려면 무지 시간이 걸릴 수 있는데 나는 애초에 모든 애플리케이션과 공유하는 걸 목표로 했었다. 다행히 안드로이드에서 쉽게 공유 할 수 있는 기능을 만들어놔서 그저 가져다 사용하면 됐다. 정산 내역을 텍스트로만 보내서 깔끔하지 않은 것 같긴 하다. 하지만 뭐 이정도면 감지덕지지. 디자인 할 때 앱 홍보 링크도 넣고 하면 좀더 깔끔하게 보내 질 것 같다.


    (결제 내역이 카카오톡에 공유된 모습)


    나머지 기능들은 디자인과 관련된 기능이므로 디자인때 총 정리해야겠다.

    댓글

Designed by Tistory.