2025.4.7
根据您提供的代码和需求,您正在开发一个基于Android的个人理财软件,以下是完整的数据库建表语句(基于SQLite):
1. 预算表(budget)建表语句
CREATE TABLE budget (
_id INTEGER PRIMARY KEY AUTOINCREMENT,
month TEXT NOT NULL,
amount REAL NOT NULL
);
2. 交易表(transactions)建表语句
CREATE TABLE transactions (
_id INTEGER PRIMARY KEY AUTOINCREMENT,
date TEXT NOT NULL,
type INTEGER NOT NULL,
amount REAL NOT NULL,
category TEXT NOT NULL,
description TEXT
);
关键设计说明:
-
主键设计:两个表都使用
_id作为自增主键,这是Android开发中的常见做法。 -
数据类型选择:
- 金额使用
REAL类型存储浮点数 - 日期使用
TEXT类型存储(建议格式:YYYY-MM-DD) - 交易类型
type用整数表示(1:收入, 2:支出)
- 金额使用
-
约束条件:
- 所有必填字段都设置为
NOT NULL - 预算月份(month)和交易日期(date)必须非空
- 交易类别(category)必须非空
- 所有必填字段都设置为
-
扩展建议:
- 可添加外键约束关联预算和交易表(如交易关联到某个月份的预算)
- 可考虑添加索引提高查询性能(如按日期或类别查询)
完整实现代码(Java):
// 预算表
private static final String CREATE_TABLE_BUDGET = "CREATE TABLE " + TABLE_BUDGET + " (" +
COLUMN_BUDGET_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_BUDGET_MONTH + " TEXT NOT NULL, " +
COLUMN_BUDGET_AMOUNT + " REAL NOT NULL);";
// 交易表
private static final String CREATE_TABLE_TRANSACTION = "CREATE TABLE " + TABLE_TRANSACTION + " (" +
COLUMN_TRANSACTION_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_TRANSACTION_DATE + " TEXT NOT NULL, " +
COLUMN_TRANSACTION_TYPE + " INTEGER NOT NULL, " +
COLUMN_TRANSACTION_AMOUNT + " REAL NOT NULL, " +
COLUMN_TRANSACTION_CATEGORY + " TEXT NOT NULL, " +
COLUMN_TRANSACTION_DESCRIPTION + " TEXT);";
数据库升级考虑:
当需要修改表结构时,应在onUpgrade()方法中处理,常见做法包括:
- 删除旧表后重建
- 使用
ALTER TABLE添加新列 - 通过临时表迁移数据(对于复杂修改)
例如添加新列的SQL:
ALTER TABLE transactions ADD COLUMN remark TEXT;
这些建表语句已涵盖您个人理财软件的核心数据存储需求,可根据实际业务需求进一步扩展。

浙公网安备 33010602011771号