第 3 节:从一笔早餐 10.5 元开始设计数据结构

图文课 第 3 / 14 节 2026-07-07 6 分钟阅读 👁 5 阅读 💬 0 评论

产品一开始不要急着设计数据库。

先看一条真实记录。

比如这笔:早餐 10.5 元。

它看起来很小,小到不像一个“产品问题”。但记账 App 里很多关键设计,其实都藏在这一笔小钱里。

用户输入的是一句很自然的话:早餐10.5。

但系统真正要保存的,不只是“早餐10.5”这几个字。它至少要知道:这是一笔支出,金额是 10.5,分类大概率是吃饭,时间是今天,备注是早餐,并且它要进入本月统计。

这就是数据结构的起点。

蜡笔小账本第3节课程封面:从一笔早餐 10.5 元开始设计数据结构

先别把字段设计得太复杂

做记账工具,很容易一上来就把字段设计满。

账户、商户、支付方式、标签、发票、地点、项目、成员、报销状态。

这些字段不是没用。

但第一版如果一口气把它们都加进去,用户每记一笔都要面对一张很重的表单。

蜡笔小账本第一版要解决的是“轻一点记下来”,所以字段也要跟着轻。

一笔支出最早只需要几个字段:

  1. 金额:这笔钱是多少。
  2. 类型:收入还是支出。
  3. 分类:吃饭、交通、购物,或者其他。
  4. 备注:早餐、午餐、打车这类自然语言。
  5. 时间:这笔记录发生在哪一天。

够了。

不是因为别的字段永远不需要,而是第一版先不让字段压住用户。

数据结构要服务统计,而不是只服务保存

保存一条记录很容易。

难一点的是:这条记录以后能不能被统计。

比如早餐 10.5 元保存下来之后,首页要显示本月已花,分类占比要把它放进“吃饭”,消费明细要能按时间排序,月底还要能汇总。

所以数据结构不能只想着“我把文字存下来就好”。

它要让后面的统计有路可走。

一条记录可以理解成这样:

{
  "type": "expense",
  "amount": 10.5,
  "category": "food",
  "note": "早餐",
  "date": "2026-07-06 11:54"
}

这不是为了显得技术化,而是为了让每一个字段都有后续用途。

amount 进入总支出。

category 进入分类占比。

note 让用户看得懂。

date 决定它属于哪一天、哪一月。

数据结构的好坏,不在于字段多,而在于每个字段是不是能支撑产品反馈。

用户看到的是一句早餐,系统看到的是一条记录

用户不关心 category 叫不叫 food

用户也不关心时间戳怎么存。

用户只关心:我刚刚记的早餐,有没有进账本。

所以产品界面要尽量自然,数据层要尽量清楚。

这两件事不能混在一起。

界面可以轻,底层不能糊。

如果底层只存一段文字,后面做分类、报表、每日小报都会很吃力。反过来,如果界面把所有底层字段都暴露给用户,记账又会变得很累。

好的第一版,是在中间找平衡。

蜡笔小账本 App 中早餐 10.5 元已经进入消费明细

分类不要一开始就追求完美

记账分类也很容易做复杂。

你可以拆成早餐、午餐、晚餐、咖啡、奶茶、零食,也可以拆成餐饮、交通、购物、娱乐。

分类越细,报表越精确。

但分类越细,用户越容易卡住。

第一版更适合用少量大分类。

比如“吃饭”就先装下早餐、午餐、晚餐和咖啡。

等用户真的开始长期使用,再看有没有必要拆得更细。

分类不是设计师在纸上越想越完整的东西。它最好来自真实记录。

如果一个分类经常被用到,再把它细分。

如果一个分类很少出现,就没必要提前占一个位置。

时间字段决定了很多后续功能

早餐 10.5 元不只是金额,它还属于某一天。

这个“某一天”会影响很多功能。

本月已花要靠它判断是不是这个月。

昨日小报要靠它判断是不是昨天。

消费明细要靠它排序。

打卡天数也要靠它判断用户有没有在这一天记账。

所以时间字段不能随便。

哪怕第一版界面很简单,记录时间也要保存清楚。后面你做日报、月报、趋势图时,才不会发现自己当初缺了一块地基。

这是做小产品很常见的经验:有些字段现在看不出价值,但一旦漏掉,后面补起来会很痛。

本节小结

一笔早餐 10.5 元,表面上只是一条消费。

但它背后至少有金额、类型、分类、备注和时间。

第一版数据结构不需要复杂,但一定要让后续统计能跑起来。

下一节,我们会继续往前走:当数据能保存之后,首页应该先展示什么?为什么蜡笔小账本不先把流水列表放在最显眼的位置,而是先显示“本月已花”。

FAQ

为什么不直接把用户输入的原话保存下来?

只保存原话很简单,但后面很难统计。记账 App 至少要能按金额、分类和时间汇总,所以需要把自然语言拆成结构化字段。

第一版分类应该做细吗?

不建议一开始太细。少量大分类更容易坚持使用,等真实记录变多以后,再根据高频消费拆分类。

时间字段为什么重要?

因为本月统计、昨日小报、明细排序、打卡天数都依赖时间。如果第一版时间存得不清楚,后面很多功能都会变难。

数据结构是不是越完整越好?

不是。第一版的数据结构要够用、可统计、可扩展,但不要为了未来的想象把字段堆得太重。

用 AI 写代码时,数据结构要自己想吗?

要。AI 可以帮你实现,但哪些字段真正重要,应该由产品目标决定。你越清楚这条记录未来要怎么被使用,AI 写出来的代码越稳。

评论