Files
QingTianJiZhang/DATA_DESIGN.md

2.0 KiB
Raw Blame History

记账应用数据设计文档

本文档描述了本地存储的 SQLite 数据库结构,旨在方便后期迁移到后端数据库(如 MySQL/PostgreSQL

数据库概览

  • 数据库名称: expense_tracker.db
  • 版本: 2

表结构

1. Categories (分类表)

用于存储收支分类,支持多级分类(无限层级)。

字段名 类型 描述 备注
id INTEGER 主键ID 自增
name TEXT 分类名称 例如:餐饮、交通
type TEXT 类型 枚举值: income, expense
icon TEXT 图标标识 Material Icon 的名称或代码
color INTEGER 颜色值 存储 ARGB 的整数值
parentId INTEGER 父分类ID 外键关联 Categories.id,为空则为一级分类

预设数据示例:

[
  { "id": 1, "name": "餐饮", "type": "expense", "icon": "restaurant", "color": 0xFFFF5722, "parentId": null },
  { "id": 2, "name": "交通", "type": "expense", "icon": "directions_bus", "color": 0xFF2196F3, "parentId": null },
  { "id": 8, "name": "早餐", "type": "expense", "icon": "breakfast_dining", "color": 0xFFFF5722, "parentId": 1 }
]

2. Transactions (交易记录表)

用于存储每一笔收支记录。

字段名 类型 描述 备注
id TEXT 主键ID UUID 格式,方便后期同步
amount REAL 金额
type TEXT 类型 income, expense
categoryId INTEGER 分类ID 外键关联 Categories.id
date INTEGER 交易日期 Unix 时间戳 (毫秒)
note TEXT 备注 可为空
createdAt INTEGER 创建时间 Unix 时间戳 (毫秒)
updatedAt INTEGER 更新时间 Unix 时间戳 (毫秒)

数据示例:

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "amount": 25.5,
  "type": "expense",
  "categoryId": 8,
  "date": 1678886400000,
  "note": "豆浆油条",
  "createdAt": 1678886400000,
  "updatedAt": 1678886400000
}