数据与存储
数据结构Schema
你可能会问
数据结构到底是什么?为什么存数据之前要先「建表」?
简单来说
定义数据包含哪些字段、字段类型以及它们之间的关系。
想到啥存啥按 schema 存形状定了,才对得齐
读的人自求多福读的人闭眼可用写入把关,读取省心
01 · 先这样理解
把抽象概念放进真实场景
定义数据包含哪些字段、字段类型以及它们之间的关系。
换个角度想Schema 像报名表的表头:姓名、手机、生日,每栏填什么、什么格式都印在纸上。没有表头,每个人按自己的理解乱填,收上来的表根本没法汇总。
02 · 点击演示
同一批数据,为什么有结构才算得动?
突出显示的部分,就是当前概念在整条流程中负责的位置。
- 这一步不存在——
没有约定,什么都塞得进去users 表的 schemaemail文本 · 必填 · 唯一age数字 · 可选 - 注册表单递来一条
email(用户漏填了)age"25 岁" · 手滑打成文字 没有校验这道关
"25 岁"、空邮箱,原样进了库
age 要数字、email 必填 → 都不合规
✗ 当场退回表单,请用户改正
- 用的时候炸平均年龄 NaN,群发邮件半路失败脏数据的账,总在读取时来算闭眼可用每条数据形状一致,统计一次算对写入时把关,换来读取时省心
1 / 4
Define · 定义字段、类型和关系
03 · 放进真实任务
什么时候会遇到它
团队协作对齐
前后端看同一份 schema,字段叫什么、什么类型,不靠口头约定。
挡住脏数据
必填、唯一、类型约束在写入时把关,坏数据进不了库。
AI 的施工图
让 AI 写增删改查前先给它 schema,生成的代码字段才对得上。
04 · 想一想
用一个问题检查理解
统计用户平均年龄时程序崩了,一查发现 age 字段里混着 25、"25 岁"和空值。问题出在哪一环?
查看答案
出在写入时没有 schema 把关:age 没约束成数字、也没规定必填,什么都存得进去。补上类型和必填约束,再清洗存量数据,统计才有得算。
最容易踩的坑
Schema 不是定完就不能动,但每次改都牵动存量数据。删字段、改类型前先想清楚老数据怎么办——这正是迁移(Migration)要管的事。