从文件开始:TXT、CSV 和 JSON
文本文件可以直接保存一段文字;CSV 适合表示行列式数据;JSON 用对象、数组等结构组织信息,常用于程序间交换数据。它们是数据的表达方式,不会自动提供完整的数据管理功能。
浏览器本地存储也能保留信息,但它通常只属于当前浏览器和网站来源,不会自动跨设备同步,清理浏览器数据后也可能消失。
导出的任务 JSON 可以包含标题和完成状态。它便于备份或传递,但同时有多人编辑时,还需要额外机制解决冲突。
带走这一点 · 说“保存数据”时,还要说明位置、生命周期和谁能访问。
数据库:负责管理与查询的系统
数据库系统提供组织、查询和更新数据的能力。关系型数据库中常见表、行和列:一行是一条记录,一列是某个字段。约束可以帮助防止某些无效数据进入。
数据库不是一用了就更快,也不等于“放到云上”。小项目可能从文件开始;随着查询、并发、权限和一致性需求增加,才更需要专门的数据管理。
任务表可以有 id、title、done、created_at。更新标题时使用稳定 id,避免两条同名任务被误认为同一条。
带走这一点 · 先画出数据字段和关系,再让 AI 选择合适的存储方案。
增删改查:把功能变成数据操作
Create、Read、Update、Delete 常缩写为 CRUD,分别对应创建、读取、更新和删除。界面按钮的背后通常能映射到这些操作。
例如“完成任务”通常是把 done 改为 true,而不是删除任务;“只看未完成”通常是筛选读取,而不是把已完成记录清空。操作含义不同,结果也不同。
你筛选出未完成任务,再取消筛选,已完成任务应该重新可见。如果它们真的被删除了,程序就做错了。
带走这一点 · 把筛选、修改和删除分清,是准确描述需求的一部分。
你的第一张数据表
在表格上执行增、查、改、删。切换“只看未完成”,观察筛选与删除为什么不同。
| id | title | done | 操作 |
|---|---|---|---|
| 1 | 认识数据 | ||
| 2 | 读懂一个概念 |
保存着: 2 · 当前显示: 2. 取消筛选,会重新显示仍然存在的记录。
表格在本地内存中运行,用于理解数据操作,不连接数据库。
关系表与其他组织方式
关系型数据库强调表、关系和约束,SQL 是常见查询语言。NoSQL 是一组其他数据库方式的统称,可能使用文档、键值、图等模型,并不只指“形状随意的文档”。
不同模型都需要认真设计数据和查询。灵活不是没有规则,使用表格也不意味着所有内容都必须僵硬地塞成一张表。需要考虑的是关系、查询方式和修改约束。
用户和任务可以分为两张表,通过 user_id 关联。一个用户有很多任务,但每条任务的归属要清楚。
带走这一点 · 选数据库之前,先说明“有哪些数据、怎样关联、经常怎么查”。
索引:查得快,也要付出成本
索引是为某种查找维护的辅助结构,像书的目录。它可以减少某些查询需要检查的数据,但要占空间,也会增加写入和维护的工作。
不是每个字段都建索引就最好。应当先知道实际查询,再通过执行计划和测量判断。对小数据集,简单扫描有时已经足够。
常按邮箱查用户,可以考虑邮箱索引;任务只有十条时,先保证功能正确比设计复杂分布式索引更有价值。
带走这一点 · 性能优化需要测量;不要只凭“数据库慢”就堆新技术。
你想隐藏已完成的任务,但以后还能查看。应该做什么?
先选一个答案,再看解释。
写清清单的数据字段、保存范围和过滤行为。
先自己想,再按需打开提示。越往后,描述越完整,验收也越明确。
带着本章的背景去问 AI。拓展是选学,不影响继续阅读。
用通讯录解释表、行、列、id 和 CRUD。
参考答案,可以改成你的版本
我正在从零学习计算机与 AI 编程。本章学过: 数据:分清文件、浏览器存储与数据库的使用边界;用字段、记录和 CRUD 描述功能;理解索引的作用与成本 用通讯录解释表、行、列、id 和 CRUD。 请先确认我的理解,一次解释一个小问题,用具体例子并说明比喻的局限。讲完问一道情境题,根据我的回答继续。区分事实、推测和不确定内容;推荐可操作的验证方式。如果涉及具体工具,先确认版本,不要编造功能和资料。
完成这一章
标记各节已读,完成原理实验和情境题后,即可记录本章完成。随时可以直接阅读下一章。
继续查阅原始资料
正文是入门解释;下面的官方资料供你继续核对和深入。
PostgreSQL · The SQL LanguageMDN · Web Storage API