콘텐츠로 이동

개요

KittyWallet은 사용자, 거래, 계좌, 카드, 카테고리, 아이콘을 중심으로 데이터를 구성합니다. 모든 데이터는 사용자 단위로 완전히 분리되어 저장되며, 거래 기록을 중심에 두고 나머지 데이터가 연결되는 구조로 설계했습니다.

핵심 엔티티

엔티티역할
사용자인증과 데이터 소유의 기준이 됩니다.
거래수입과 지출을 통합 관리하며, 통계와 검색의 기준이 됩니다.
계좌잔액이 반영되는 지갑입니다.
카드사용 내역으로 관리되는 지갑이며, 할부 거래와 연결됩니다.
카드 할부할부 개월 수만큼 거래를 생성합니다.
카테고리거래 분류와 통계 집계의 공통 기준입니다.
아이콘계좌, 카드, 카테고리에서 공통으로 사용합니다.

엔티티 관계

사용자는 거래, 계좌, 카드, 카테고리, 아이콘을 소유합니다. 거래는 계좌 또는 카드 중 하나의 지갑을 참조하며, 어떤 지갑을 사용할 수 있는지는 표준 페이지의 거래와 지갑 기준을 따릅니다. 카드 할부는 등록 시점에 할부 개월 수만큼 거래를 생성해 연결하고, 카테고리와 아이콘은 여러 엔티티에서 공통으로 참조되는 구조입니다.

엔티티 관계 다이어그램

설계 원칙

사용자별 데이터 분리

모든 데이터는 사용자 단위로 분리되어 있으며, 다른 사용자의 데이터를 참조하지 않습니다.

논리 삭제 우선

거래와 연결된 데이터는 통계와 기록의 일관성을 유지하기 위해 물리 삭제보다 상태 값 기반의 논리 삭제를 우선합니다.

오프라인 동기화

오프라인 상태에서 작성한 거래는 재연결 시 서버와 동기화됩니다. 동일 거래가 중복 생성되지 않도록 관리하며, 충돌이 발생하면 최신 변경 내용을 우선 적용합니다.