database-design
数据库设计原则与决策制定。模式设计、索引策略、ORM选择、无服务器数据库。
作者
分类
开发工具安装
热度:0
下载并解压到你的 skills 目录
复制命令,发送给 OpenClaw 自动安装:
下载并安装这个技能 https://openskills.cc/api/download?slug=sickn33-skills-database-design&locale=zh&source=copy
Database Design - 智能数据库设计助手
技能概述
Database Design 是一个专注于数据库设计原则和决策的 AI 助手,帮助开发者根据项目需求选择合适的数据库、ORM 和架构方案,而非简单复制 SQL 模式。
适用场景
当你开始新项目,需要决定使用 PostgreSQL、SQLite、Neon、Turso 等哪种数据库,以及选择 Drizzle、Prisma、Kysely 等哪个 ORM 框架时,这个技能会根据你的项目规模、部署环境和性能需求提供针对性建议。
当应用出现查询缓慢、N+1 问题或需要优化索引策略时,技能会分析你的查询模式,提供 EXPLAIN ANALYZE 分析、复合索引设计和查询重构建议。
当需要进行数据库迁移、调整表结构或从单体数据库迁移到 Serverless 方案时,技能会提供安全的迁移策略和架构演进路径。
核心功能
基于项目上下文(用户规模、部署环境、性能要求、成本预算)推荐最合适的数据库方案。不会默认推荐 PostgreSQL,而是客观分析 SQLite、Neon、Turso 等各方案的优劣,帮助你做出明智决策。
提供数据库表结构设计建议,包括主键选择策略、外键关系定义、数据规范化程度决策,以及何时使用结构化数据 vs JSON 字段的指导。
分析查询模式,设计高效的索引方案(单列索引、复合索引、部分索引),识别并解决 N+1 查询问题,提供 EXPLAIN ANALYZE 解读和优化建议。
常见问题
什么时候应该使用 SQLite 而不是 PostgreSQL?
SQLite 适合小型应用、本地开发环境、边缘计算场景和单用户应用。它的优势在于零配置、无服务器、文件级存储和极低的维护成本。如果你的应用预期用户量不大(<10万并发)、不需要复杂的事务处理、部署在边缘节点或资源受限环境,SQLite 往往是更明智的选择。只有在需要多写并发、复杂关系查询、数据分析或计划扩展到大规模部署时,PostgreSQL 才显示出明显优势。
Prisma、Drizzle 和 Kysely 应该如何选择?
选择取决于你的项目需求和团队偏好。Prisma 提供最完整的开发体验,自动生成类型安全的客户端,适合快速开发和对 ORM 功能有深度依赖的团队。Drizzle 在类型安全和性能之间取得平衡,生成的 SQL 更可控,适合对性能有较高要求的项目。Kysely 则提供最接近原生 SQL 的体验,学习曲线平缓,适合熟悉 SQL 的开发者或需要精确控制查询逻辑的场景。
如何避免 N+1 查询问题?
N+1 问题通常发生在循环中执行关联查询时。解决方案包括:使用 ORM 的预加载(eager loading)功能,如 Prisma 的
include 或 Drizzle 的关系查询;在适当情况下使用 JOIN 查询一次性获取数据;考虑数据结构设计,是否可以通过冗余字段或 JSON 字段减少关联查询;使用 EXPLAIN ANALYZE 识别性能瓶颈,针对性地添加复合索引。技能会帮你分析具体的查询场景,提供最适合的优化方案。