【简记往来】通用记账App为什么管不了“人情账”?
第二篇通用记账App为什么管不了“人情账”一、两种完全不同的记账逻辑很多人觉得“记账就是记账”不管是日常开销还是人情礼金不都是记一笔钱嘛但实际开发简记往来时我发现这两件事的底层逻辑完全不同。通用记账App的数据模型是单向流水记录(金额, 分类, 时间, 备注)查询围绕“某个时间段花了多少钱”“哪个分类支出最多”展开。但礼账要回答的问题完全不同“张三累计给了我多少钱”“我累计给张三多少钱”“我和张三之间的净额是多少”这不是在“收入”分类下加一个“礼金”子类能解决的。二、从两个场景看本质区别维度日常记账人情礼账记录对象自己的钱人和人之间的钱核心问题我花了多少剩了多少谁给了我多少我给了谁多少统计维度时间分类人净额数据方向单向收入/支出双向我→你、你→我核心计算收入-支出结余收礼-送礼净额三、单向流水不够用的三个场景场景一查某个人通用记账App里你想查“张三总共给了我多少钱”需要筛选“收入”分类搜索“张三”逐条相加如果备注里写的是“三姨”而不是“张三”根本搜不到。场景二算差额通用记账App只能算“总收入”和“总支出”算不出“张三欠我多少”。如果你想看“我和张三之间的净额”通用记账App做不到。因为它没有“人”这个维度。场景三多人共用通用记账App的多人协作一般是“多人编辑同一个账本”。但礼账需要的是“夫妻俩各记各的数据自动汇总”。这看起来是一个功能实际上是一个数据模型问题。通用记账App的数据模型不支持“按人隔离统计”。四、为什么说“加个分类”解决不了问题很多人说“那我在通用记账App里加一个‘礼金’分类不就行了”问题在于礼金需要的是“双向记录”不是“分类”。通用记账App的设计逻辑是“收入-支出结余”而礼账需要的是“收礼-送礼净额”。两者看起来相似实际上完全不同通用记账礼账数据结构单条记录金额分类两条记录关联收礼送礼净额统计方式时间维度汇总人维度汇总核心问题“我花了多少”“谁欠我多少”五、简记往来的设计思路既然通用记账App的数据模型不够用那就重新设计。简记往来的数据模型从第一天就围绕“双向关系”展开联系人表contacts记录“人”记录表records记录“往来”两张表通过contact_id关联。一个联系人可以有多个记录收礼和送礼。核心查询SELECTcontact_id,SUM(CASEWHENtypereceiveTHENamountELSE0END)astotal_receive,SUM(CASEWHENtypesendTHENamountELSE0END)astotal_send,SUM(CASEWHENtypereceiveTHENamountELSE-amountEND)asnetFROMrecordsWHEREbook_id?GROUPBYcontact_idHAVINGnet!0这就是“人和人之间”的数据模型——不是“我的钱”而是“我和你的钱”。六、一句话总结通用记账App是为“我”设计的礼账是为“我和他”设计的。一个是单人的流水账一个是双人的往来账。数据模型完全不同不能互相替代。下一篇我们来聊聊技术选型为什么选了微信小程序Node.js评论区聊聊你试过用通用记账App记礼金吗体验如何