type
status
date
slug
summary
tags
category
icon
password
Notion作为笔记应用具有丰富的使用场景,其中提供的数据库功能和各种特性为使用Notion来记账提供了基础能力,于是基于自己的需求设计了一种记账方案,记录思路和各类实现细节。
关于数据库的官方说明
模板自取
实际功能可以自行体验,一些详情细节可以接着看下面内容
一. 整体效果
账单页

分类页

账户页

统计图

一. 确定需求
首先确定自己记账需求共三类
- 实现收入支出的记录,以及流水表的展示
- 记录各类账户信息,并且实现流水表与账户余额的关联更新
- 实现收入支出分类,实现按分类显示收支情况
- 实现按月/年分组统计和统计图
对应的,需要建立三个数据库,分别存储流水、账户和分类数据
针对三类需求做具体拆分
流水表
在流水表中要实现的功能如下
- 记录收入和支出流水
- 快速查看当天/当月,收入/支出流水表
- 按月/年分组显示,收入/支出流水表
- 按月/年汇总统计支出金额,输出统计图
账户表
账户表要实现的核心功能是根据流水表的收支,来实时更新账户余额
分类表
分类表的核心功能是根据流水表的记录来统计每个分类的收支数据
二. 构建数据库
实现上述功能要使用数据库以及数据库中的各种特性,以下是具体方案
流水表
流水表需要包括用于显示和记录的主属性,和用于分组统计的副属性,具体设置如下
事项:用于记录项目,默认类型分类:记录事项的类别,使用关联关系类型来实现与分类表的关联路径:点击列名-编辑属性
类型:选择关联关系
关联到:选择分类表
打开在分类中显示开关

⭐ 打开这个开关后,流水表与分类表双向关联
也即流水表能取到分类表数据,同时分类表也能根据流水表的分类取到对应行的流水表数据
此时分类表会自动添加一个“账本”属性用于关联

日期:用于记录发生日期,日期类型金额:用于记录收支金额,数字类型,数字格式选择人民币,在实际记录时支出用负数,收入用正数
账户:记录关联的账户,即在哪个账户发生收支,同样使用关联关系类型来实现与账户表的关联路径:点击列名-编辑属性
类型:选择关联关系
关联到:选择账户表
打开在分类中显示开关

为了实现当天/当月视图以及按月/按年分组显示的功能,还需要增加几个副属性,这些属性不需要做显示,但是可以用于判断和分组,具体如下
年度:自动记录日期年份,使用函数类型将日期字段格式化,获取年份,具体按如下设置类型:函数
函数:
formatDate(prop("日期"), "YYYY")
月度:自动记录日期年份加月份逻辑同上,
类型:函数
函数:
formatDate(prop("日期"), "YYYY-MM")月度F2:同月度,采用另一种格式,用于第三方图表排序,后文提到类型:函数
函数:
formatDate(prop("日期"), "YYYYMM")当月:自动判断是否为当月,以勾选/未勾选的形式显示,使用函数判断当前日期的年月是否与月度相同类型:函数
函数:
formatDate(now(), "YYYY-MM") == prop("月度F1")当年:自动判断是否为当年,以勾选/未勾选的形式显示,使用函数判断当前日期的年份是否与年度相同,formatDate(now(), "YYYY") == prop("年度")以上为流水表中所有构建的属性字段,后续功能均基于这些属性来实现
顺带说明在参考其他账本模板时,基于月度的统计常使用单独的月度数据库,将流水表的记录与月度数据库关联,从而实现按月统计收支的功能,但这个方案依赖月度数据库需要手动更新,即进入新的月份后需要手工维护一个月度,因此本文没有使用这个方法,而是使用第三方图表直接读取月度数据来分组汇总,同时输出统计图,在操作和体验上都更优秀
分类表
分类表需要显示名称和金额汇总
名称:分类的名称,默认数据类型
可以给分类添加图标,使显示更加美观
路径:打开页面-添加图标

汇总:统计该分类下收支汇总,关联账本中的金额做累加
类型:汇总
关联关系:账本
属性:金额
计算:总和

视图使用画廊类型,分类显示更加直观
路径:视图名称-编辑视图-布局-画廊
卡片预览:无
卡片大小:小
同时调整视图显示属性为分类名称和汇总金额
路径:视图名称-编辑视图-属性

其中账本属性为双向关联时自动生成,隐藏即可
使用排序功能将分类按汇总金额从高到低排序
路径:排序-添加排序
选择排序字段以及排序方式

账户表
账户表核心功能是自动计算余额,方案是构建一个流水字段,汇总记录流水表中所有该账户的收支数据,再新建一个初始存款金额,使用存款加上(因为支出为负数)流水即可得到余额
具体方案如下
存款:用于录入账户初始金额,支持信用卡账户(存款录入0即可)类型:数字
格式:人名币
流水:用于汇总记录流水表对应账户收支总和类型:汇总
关联关系:账本
属性:金额
计算:总和
余额:用于自动计算存款与流水的差额类型:函数
格式:人民币
函数:prop("存款") + prop("收益") + prop("流水")
收益:考虑到账户资金可能有其他情况的变动,如收益,构建一个收益字段用于手动修正资金的变动给每个账户添加一个图标,使视图更加美观,

图标可以自行上传,提供一个阿里的图标库,有丰富的内容且质量非常高
3.分组统计
完成流水表数据库构建后,即可构建不同的视图,不同视图根据筛选器和分组属性实现
当月/当年支出/收入视图
新建表格视图,添加高级筛选器,筛选当月/当年属性为是,且金额为负的流水

同理构建收入视图设置金额大于0即可
添加排序,按日期降序排列,保证最新的流水在最上面

月度/年度支出/收入视图
新建表格视图,在群组选项里选择月度/年度,即可按分组显示数据
分组会自动创建空分组,用于存储无月度/年度属性的数据,因我们的数据是根据日期自动生成的,因此不存在空分组,可以直接隐藏

同样添加筛选器,设置金额大于或小于0来实现收入与支出的区分
统计图
上文的月度/年度统计是按分组显示流水实现,如果要实现只分组统计金额数据不显示明细数据,则可以采用第三方图表来实现
Notion2Charts通过读取Notion的数据库来构建和设计统计图
搞完了才发现免费用户只能创建一张图,差评
如按月统计支出合计,设置如下
横坐标:月度F2
纵坐标:金额
排序:使用月度F2升序,这里如果使用2023-04格式排序会不准确,因此在上文构建一个新的格式202304来排序

另外要实现仅统计支出的功能,需要给图表添加过滤器,设置金额大于0

同时在金额坐标设置中设置格式为人民币,且反转坐标轴

点击获取链接,直接复制到Notion页面中即可添加图表
4.一些细节
- 数据库标题左侧可以添加图标,显得更加美观
- 当然数据库标题也可以隐藏,使视图更加简洁
- 视图可以隐藏不关注的属性使页面更简洁
- 数据表可以整体放置到标注块中,使表格突出且有整体感
- 数据库可以转换为页面,变成当前页面的子页面,如账户等不希望直接展示的视图可以使用
- 每个视图最下方有列计算功能,可以显示金额合计、平均值等数据

