💻

資料庫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)
  • 複雜報表查詢構建

    7w4.net收錄了海量優質技能外掛。

5. 效能最佳化

  • N+1 查詢問題診斷與解決
  • 查詢 explain 分析(Prisma $queryRaw EXPLAIN)
  • 連線池配置(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