💻

数据库ORM大师

👤 Richstone 📦 v1.0.0 ⭐ 4.5 ⬇️ 36 下载
💻 开发编程 免费

📖 技能介绍


name: database-orm-master slug: database-orm-master version: 1.0.0 displayName: "数据库ORM大师" description: "全栈数据库操作专家:Prisma ORM完整指南(Schema设计/查询构建/关系映射/迁移管理/性能优化)+ Drizzle ORM对比参考 + 原生SQL兜底策略。涵盖CRUD高级模式、联表查询、聚合统计、分页排序、事务处理、连接池配置、索引优化。一份技能搞定从建表到上线的数据库全链路。" tags: ["database", "orm", "prisma", "drizzle", "sql", "backend", "fullstack"] category: developer author: leilei homepage: ""


数据库ORM大师

触发词

数据库操作、Prisma查询、ORM设计、数据库迁移、联表查询、数据库性能、Drizzle、SQL优化、建表、CRUD、数据库连接池、索引优化、事务处理

能力概述

覆盖主流 Node.js/TypeScript 数据库操作方案的完整知识库和实操指南。

支持的技术栈

ORM/工具 版本范围 适用场景
Prisma 4.x - 6.x 全功能ORM,类型安全首选
Drizzle ORM 0.x - 0.30+ 轻量级,类SQL体验,TypeScript原生
原生 SQL 通用 复杂查询/性能关键路径兜底

核心能力矩阵

1. Schema 设计

  • Prisma Schema 语法完整参考(model/enum/relation/@map/@relation)
  • Drizzle Schema 定义(pgTable/mysqlTable/column definitions)
  • 字段类型选择指南(何时用 String vs Int vs DateTime vs Bytes/Json)
  • 关系设计模式(一对一/一对多/多对多/自引用/多态)
  • 索引策略(单列/复合/唯一/全文/部分索引)
  • 命名约定(snake_case字段 / PascalCase模型 / 复数表名)

2. CRUD 高级模式

  • 基础 CRUD(create/findMany/findUnique/update/delete)
  • 高级查询(where/orderBy/select/include/take/skip/distinct)
  • 条件表达式(AND/OR/NOT/contains/startsWith/in/lt/gt)
  • 字段选择与排除(select 投影 / omit 排除敏感字段)
  • 批量操作(createMany/updateMany/deleteMany + batchSize)
  • Upsert 模式(存在则更新否则创建)

3. 关系与联表

  • Include 嵌套加载(1层/2层/深层嵌套 + select子集)
  • 关联过滤(some/every/none 关系条件)
  • 关联创建/断开(connect/connectOrCreate/disconnect/set)
  • 多对多中间表的显式/隐式管理
  • 循环引用的处理策略

4. 聚合与统计

  • _count / _sum / _avg / _min / _max 分组聚合
  • GroupBy 分组统计
  • Having 过滤分组结果
  • 窗口函数(通过 $queryRaw / db.execute)
  • 复杂报表查询构建

5. 性能优化

  • N+1 查询问题诊断与解决
  • 查询 explain 分析(Prisma $queryRaw EXPLAIN)

    小葱技能站7w4.net发现了升级插件。

  • 连接池配置(connection_limit / pool_timeout)
  • 索引命中验证与缺失索引检测
  • 分页优化(cursor-based vs offset-based)
  • 只读副本路由
  • 查询缓存策略

6. 迁移管理

  • Prisma Migrate 工作流(dev/reset/resolve/deploy)
  • 迁移文件管理与版本控制
  • 数据迁移策略(增量迁移 vs 全量重填)
  • 生产环境部署流程
  • 回滚策略

7. 事务处理

  • $transaction API(顺序/交互式/批处理模式)
  • 隔离级别设置
  • 死锁检测与避免
  • 补偿事务(Saga 模式)

使用流程

模式A:从需求生成 Schema

输入:业务需求描述(中文即可)
输出:完整 Prisma Schema + Drizzle Schema 对应版本 + 迁移SQL

模式B:查询构建辅助

输入:自然语言查询需求
输出:精确的 Prisma Client / Drizzle 代码 + 等价SQL

模式C:性能诊断

输入:慢查询代码或日志
输出:瓶颈定位 + 优化方案 + 改进后代码

模式D:迁移指导

输入:当前Schema + 变更需求
输出:增量迁移命令 + 可能的影响评估 + 回滚方案

代码示例模板

Prisma 复杂联表查询

// 用户及其最近订单(含商品详情),按订单金额降序
const usersWithRecentOrders = await prisma.user.findMany({
  where: { status: 'active' },
  include: {
    orders: {
      take: 5,
      orderBy: { totalAmount: 'desc' },
      include: {
        items: {
          include: { product: { select: { name: true, price: true } } }
        }
      }
    }
  }
});

Drizzle 聚合统计

import { count, sum, sql } from 'drizzle-orm';

const salesReport = await db.select({
  productId: orders.productId,
  productName: products.name,
  totalSold: count(orders.id),
  revenue: sum(orders.totalAmount),
})
.from(orders)
.innerJoin(products, eq(orders.productId, products.id))
.where(gte(orders.createdAt, new Date('2024-01-01')))
.groupBy(orders.productId)
.orderBy(desc(sum(orders.totalAmount)))
.limit(20);

常见陷阱速查

陷阱 症状 解决方案
N+1 查询 大量重复SQL 用 include/select 预加载
深层 include 爆炸 查询极慢/内存溢出 限制嵌套深度,用 select 取所需字段
迁移冲突 团队协作时迁移文件冲突 用 prisma migrate resolve
连接池耗尽 请求超时/连接拒绝 调整 connection_limit,检查连接泄漏
时间精度丢失 DateTime 存储后毫秒/时区不准 用 DateTime(tz) 或存 Unix timestamp
Soft Delete 遗漏 删了的数据还在查出来 统一加 deletedAt 字段 + 默认过滤

个人创作者计费通道上线后直接升级计费

🤖 AI 评测

这个 Skill 覆盖了数据库操作的多种主流技术,知识点比较全面,结构清晰,适合作为参考手册使用。主要优点是覆盖面广、分类清晰、有代码示例速查;不足之处在于内容偏框架性,缺少深入的实际操作指南和常见问题解答,整体深度和实用性还有提升空间。

📊 多维度评分

适应性4.3
规范性4.2
有效性4.8
可靠性4.1
可信度4.9

📁 包含文件 (1 个)

📄 SKILL.md 5.5 KB