回顾与练习
关键要点
- 大多数应用只需要三种存储形态 — 关系型、文档型、键值型 — 中的一种,而关系型是安全的默认选择。
- 从托管数据库开始:数据和模式决策由你掌握,服务器的运行由平台负责。
- 好的模式设计意味着诚实的类型、外键与约束、合理的索引,以及没有重复的数据。
- 把每一次迁移都当作一道单向门:在 drop 或重命名任何东西之前先备份,并仔细审查 AI 写的迁移。
- 始终要求参数化查询,使用户输入永远不会被拼接进 。
动手试试
挑一个小小的应用点子,先用平实的中文把它的实体和关系写出来。然后把这段描述交给 AI,请它给出一份模式加一个前向迁移 — 在运行任何东西之前,用本章的清单审查结果。
Design a relational schema for a personal bookmarks app.
Entities and relationships:
- A user has many bookmarks.
- A bookmark belongs to one user, has a URL, a title, and many tags.
- A tag can apply to many bookmarks.
Requirements:
- Use UUID primary keys and created_at timestamps.
- Enforce relationships with foreign keys.
- Add indexes for the columns we'll filter on.
- Give me the schema as SQL plus a forward migration file.
- Flag any migration step that drops or renames so I can back up first.