数据库设计
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/database-design-zh。
技能介绍
要解决什么问题
很多团队在「先上 PostgreSQL + Prisma」的惯性里做数据库设计:小工具也用重型栈、缺索引、生产里 SELECT *、该规范化却塞 JSON、ORM 懒加载拖出 N+1。结果不是「能跑就行」,而是迁移难、查询慢、改表风险高。本技能面向在动手写 DDL 之前需要选型、建模和性能预案的场景,强调按上下文决策,而不是套一套通用模板。
技能如何组织内容
技能采用内容地图 + 按需阅读:只在请求相关时打开对应文档,避免把整本手册塞进上下文。
- 选型:
database-selection.md(PostgreSQL / Neon / Turso / SQLite 等)、orm-selection.md(Drizzle / Prisma / Kysely) - 建模:
schema-design.md(规范化、主键、关系类型) - 性能:
indexing.md(索引与复合索引)、optimization.md(N+1、EXPLAIN ANALYZE) - 变更:
migrations.md(安全迁移、无服务器数据库下的模式变更)
执行前有一份决策检查清单:是否问过用户数据库偏好、是否匹配部署环境、是否规划索引与关系。核心原则写得很直白:偏好不明确就询问;不要默认所有场景都用 PostgreSQL(例如简单应用 SQLite 可能足够)。
适用边界与注意点
这是设计方法论与检查清单,不是替你生成完整业务 schema 的代码生成器。它明确列了反模式(跳过索引、滥用 JSON、忽略 N+1 等),适合与具体 ORM/云数据库文档配合使用。若你的需求只是「给我一张用户表的 SQL」,应直接说明栈与约束;若需求是选型 + 建模 + 可维护的演进,按地图分步阅读更合适。
使用场景
- 新项目要定持久化方案,需在 SQLite、PostgreSQL 或 Neon/Turso 之间按部署与规模做选型
- 已有 Drizzle/Prisma 代码出现 N+1 或慢查询,要用索引策略与 EXPLAIN ANALYZE 排查
- 上线前规划表结构:规范化程度、主键与一对多/多对多关系尚未定稿
- 无服务器或边缘部署环境下,要设计可回滚的数据库迁移与模式变更流程
适合人员
- 负责新服务技术选型的后端,需要在问清偏好后避免一律默认 PostgreSQL
- 全栈开发者维护 Prisma/Drizzle 项目,改表前想对照清单检查索引与关系设计
- 从单机 SQLite 原型准备迁到托管 Postgres,要评估迁移路径与 ORM 是否匹配
- 性能问题集中在 ORM 懒加载的团队,希望按文档分步处理 N+1 与查询反模式