过往回顾
记账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 |
有这五个表的存在, “记账” 这个基本功能就可以实现了. 从简单入手, 再到复杂的功能, 一个个慢慢实现.