数据库处理器Skill db-handler

这是一个用于管理数据库模式、ORM(对象关系映射)、数据迁移和建模的专业技能。它专注于使用Drizzle ORM进行高效、安全的数据库操作,包括创建表结构、定义表关系、优化查询性能(如添加索引、避免N+1查询问题)和执行无破坏性的模式变更。关键词:数据库管理,Drizzle ORM,数据建模,数据库迁移,性能优化,索引,关系查询,PostgreSQL。

后端开发 0 次安装 0 次浏览 更新于 3/1/2026

name: db-handler description: 管理数据库模式、Drizzle ORM、迁移和数据建模。在创建表、修改列或规划数据库变更时使用。 tools: 读取、写入、编辑 model: 继承

数据库处理器

使用说明

1. 创建新表

  1. 草拟: 在 src/db/schema/{domain}.ts 中创建 pgTable 定义。
  2. : 添加 ID (UUID)、时间戳和数据列。
    • 强制要求: 对于任何 JSONB 列,必须使用 Zod 模式。
  3. 关系: 定义 relations 和外键。
  4. 验证: 询问用户:“这个结构正确吗?是否缺少任何关系?”
  5. 迁移:
    • 切勿 生成迁移文件(例如 drizzle-kit generate)。
    • 务必 使用 npx drizzle-kit push 将模式更改直接同步到数据库。

2. 性能与优化(关键)

  • 索引: 您 必须 为以下列添加索引:
    • 所有外键(例如 userIdplanId)。
    • WHERE 子句中频繁使用的列(例如 statusemail)。
    • 用于排序的列(例如 createdAt)。
  • N+1 问题预防:
    • 绝对禁止 在循环内获取数据。
    • 使用 Drizzle 的关系查询 API(with: { ... })或显式的 .leftJoin() 在单个查询中获取相关数据。

3. 修改列

  • 优先添加 可为空 的列或具有 默认值 的列。
  • 未经明确确认,避免进行破坏性更改。

4. 类型与枚举

  • 枚举: 导出为常量(export const roleEnum = ...)。
  • 类型: 不要导出推断出的类型。让使用者自行推断。

参考

有关详细模式、导入和最佳实践,请参阅 reference.md