过往回顾
记账Side Project (一)上一篇文章详细的分析了产品的需求, 这篇文章, 主要谈谈数据库应该要怎么设计. 由于我本身数据库设计的知识不是很全面, 很多时候都是属于摸着石头过河, 如果有出错, 或者设计不合理的地方, 还有望各位指正.
数据库设计
User
注册和登陆都属于比较基础的需求, 这方面业界也有很多成熟的设计方案. 那么这个表的设计就不用分析, 直接拿来成熟的设计, 只保留基础功能就可以了.
column | type | |
---|---|---|
id | int | PK |
varchar(50) | UQ | |
first_name | varchar(50) | |
last_name | varchar(50) | |
password | varchar(100) |
Income
这个表用来记录每一条收入, 不管是固定收入还是意外收入, 或者理财收入, 都将作为一条单独的数据存在这个表格当中.
column | type | |
---|---|---|
id | int | PK |
user_id | int | FK |
income_type | int | FK |
name | varchar(100) | |
date | date | |
amount | money | |
note | text |
对于这个表, 需要采集的数据就是 name
, note
, amount
, date
四项. 对于 income_type
, 逻辑上来说, 所有需要被手动输入的收入都输入意外/一次性收入, 所以income_type
的值就被确定了. 那么对于固定收入来说, 需要用户建立在另外的表格建立他们的固定收入, 每一个收入周期, 就会有一个收入条目被创建然后插入到这个表格当中.
IncomeType
这个主要储存收入的类型, 比如说固定收入, 意外收入, 理财收入
column | type | |
---|---|---|
id | int | PK |
type | varchar(50) | PK |
Expenditure
column | type | |
---|---|---|
id | int | PK |
user_id | int | FK |
exp_type | int | FK |
name | varchar(100) | |
date | date | |
amount | money | |
note | text |
ExpenditureType
column | type | |
---|---|---|
id | int | PK |
type | varchar(50) | PK |
有这五个表的存在, “记账” 这个基本功能就可以实现了. 从简单入手, 再到复杂的功能, 一个个慢慢实现.