主题
第 3 章 数据库 · 软件的记忆
程序有个天生的毛病,一关掉,脑子里的东西就全没了。可用户第二天回来,凭什么你还记得他是谁、他传过什么文件、他有哪些凭证?靠的是数据库(Database),一个专门负责记住的软件。这些东西从来不存在程序里,程序只在需要时去数据库里取。
最快的理解方式是把数据库想成一个极其严谨的 Excel。一张表(Table)对应 Excel 里的一个工作表。一行(Row)是一条记录,比如一个用户。一列(Column)是一个属性,比如邮箱、注册时间。我们用的 Supabase,底下就是世界上最受欢迎的开源数据库 Postgres。
和数据库说话有专门的语言,叫 SQL。别被吓到,它的核心只有四个动词,查(SELECT)、增(INSERT)、改(UPDATE)、删(DELETE)。比如这一句。
sql
SELECT * FROM users WHERE email = 'dad@example.com';意思是从 users 表里,把邮箱等于这个的行都找出来。你看 Claude Code 写的 SQL,八成都是这四个动词的变体。
那为什么不直接用 Excel 或者一堆文件来存?数据库解决了四个 Excel 搞不定的问题。一千个人同时读写不打架。在百万行里瞬间查到你要的那一条。精确控制谁能看哪些行、谁能改哪些列。断电、崩溃也不丢数据。至于 Supabase 是什么,它帮你把 Postgres 托管好,再送你登录系统(Auth)、文件存储和现成的 API,所以 Claude Code 三句话不离它。
顺带认识一个你常会见到的词,迁移(Migration)。每次修改表结构,加一列,建一张表,都写成一个脚本保存下来,让数据库的每一步变化都有据可查、可以重放,相当于给数据库结构做版本记录。
关键领悟
你产品里一切属于用户的东西,几乎都住在数据库里。设计表结构的过程,就是想清楚我的产品到底要记住什么。
试一试
打开 Supabase 后台的 Table Editor,随便点开一张表,亲手把表、行、列各自指认一遍。