实战

Claude Code 数据库开发实战:Schema 设计、迁移脚本与查询优化完整指南

Claude Code 辅助数据库开发完整指南:从 ERD 需求到 SQL Schema 设计、Prisma/SQLAlchemy ORM 集成、数据库迁移脚本生成、N+1 查询优化、索引分析、慢查询排查,以及 PostgreSQL/MySQL/SQLite 各场景最佳实践。

2026/3/154分钟 阅读ClaudeEagle

数据库设计和优化是开发中技术门槛最高的部分之一。Claude Code 能从业务需求直接推导出合理的 Schema 设计,生成迁移脚本,并分析性能瓶颈。本文展示完整工作流。

工作流 1:从业务需求设计 Schema

Design a PostgreSQL schema for an e-commerce platform: Entities: - Users: can be buyers or sellers - Products: belong to sellers, have multiple images and variants - Orders: placed by buyers, contain multiple order items - Reviews: buyers review purchased products - Categories: hierarchical (electronics > phones > iPhone) Requirements: - Support product variants (size, color, etc.) - Track inventory per variant - Order status history (created->paid->shipped->delivered) - Soft delete for products Output: 1. CREATE TABLE statements with proper constraints 2. Indexes for common query patterns 3. Brief explanation of design decisions

工作流 2:生成 Prisma Schema

Convert this SQL schema to Prisma schema format: [粘贴 SQL] Also add: - Proper relations (one-to-many, many-to-many) - @default values - @updatedAt for timestamp fields - @@index for performance-critical fields - Cascade delete rules

生成结果示例

prisma
model Product {
  id          String    @id @default(cuid())
  title       String
  slug        String    @unique
  price       Decimal   @db.Decimal(10, 2)
  sellerId    String
  seller      User      @relation(fields: [sellerId], references: [id])
  variants    Variant[]
  images      Image[]
  reviews     Review[]
  categoryId  String
  category    Category  @relation(fields: [categoryId], references: [id])
  deletedAt   DateTime?
  createdAt   DateTime  @default(now())
  updatedAt   DateTime  @updatedAt

  @@index([sellerId])
  @@index([categoryId])
  @@index([slug])
}

工作流 3:生成数据库迁移

Generate a safe database migration for these changes: Current schema: [粘贴当前 schema] Target schema: [粘贴新 schema] Requirements: - Zero-downtime migration (no table locks) - Add new nullable columns before making them required - Backfill existing rows before adding NOT NULL constraints - Create indexes CONCURRENTLY Output: 1. migration.sql 2. rollback.sql (undo script) 3. Estimated migration time for 10M rows

工作流 4:N+1 查询检测与修复

Review this code for N+1 query problems: [粘贴 ORM 代码] For each N+1 pattern found: 1. Explain why it causes N+1 2. Show the fixed version using proper joins/includes 3. Estimate queries before vs after the fix Use Prisma syntax for the fixes.

常见 N+1 修复

typescript
// 问题:N+1
const orders = await prisma.order.findMany()
for (const order of orders) {
  const user = await prisma.user.findUnique({where: {id: order.userId}})
  // 每个 order 一次查询 = N+1 次
}

// 修复:一次查询
const orders = await prisma.order.findMany({
  include: { user: true }  // JOIN 一次搞定
})

工作流 5:分析查询性能

Analyze the performance of this PostgreSQL query: Query: SELECT p.*, u.name, COUNT(r.id) as review_count FROM products p JOIN users u ON p.seller_id = u.id LEFT JOIN reviews r ON p.id = r.product_id WHERE p.category_id = $1 AND p.deleted_at IS NULL GROUP BY p.id, u.name ORDER BY review_count DESC LIMIT 20; EXPLAIN ANALYZE output: [粘贴 EXPLAIN 输出] Please: 1. Identify bottlenecks (seq scans, high cost steps) 2. Suggest missing indexes 3. Rewrite if the query can be restructured for better performance

工作流 6:SQLAlchemy 模型生成(Python)

Generate SQLAlchemy 2.0 models for this schema: [粘贴 SQL] Requirements: - Use DeclarativeBase (new SQLAlchemy 2.0 style) - Type annotations for all columns - relationship() with lazy='select' for small sets, lazy='dynamic' for large - __repr__ for debugging - save to src/models/

工作流 7:种子数据生成

Generate seed data for development/testing: Schema: [Prisma schema or SQL] Generate: - 10 users (mix of buyers and sellers) - 50 products (across 5 categories) - 100 orders with order items - 200 reviews Use realistic fake data (Faker.js). Save to prisma/seed.ts

CLAUDE.md 推荐配置(数据库项目)

markdown
## 数据库规范
- ORM: Prisma
- DB: PostgreSQL 15
- 迁移:prisma migrate dev

## 查询规范
- 禁止裸 SQL(除性能关键路径)
- 所有关联查询用 include/select 而非循环查询
- 新增字段先加 nullable,backfill 后再加约束

## 命令
- 迁移:npx prisma migrate dev
- 查看:npx prisma studio
- 重置:npx prisma migrate reset

来源:Anthropic 官方文档 + Prisma 官方文档

相关文章推荐

实战Claude Code 命令行工具开发实战:用 AI 快速构建专业 CLI 工具Claude Code 辅助命令行工具(CLI)开发的完整实战指南:Python Click/Typer、Go Cobra、Rust Clap 技术栈选型、用 Claude Code 生成完整 CLI 项目结构(参数解析/子命令/全局选项)、交互式提示和彩色输出、配置文件管理、Shell 自动补全生成、跨平台打包(PyInstaller/goreleaser),以及发布到 PyPI/npm/Homebrew 的完整流程。2026/3/26实战Claude Code Vue 3 实战完全指南:Composition API 开发到企业级前端工程化Claude Code 辅助 Vue 3 开发的完整实战指南:Composition API 组件生成(setup/ref/computed)、Pinia 状态管理代码生成、Vue Router 4 路由配置、TypeScript 类型定义生成(Props/Emits)、Composables 抽象、Vitest 单元测试生成、性能优化(虚拟滚动/v-memo),以及 Options API 迁移和响应式丢失问题排查的 Prompt 模板。2026/3/26实战Claude Code Django 实战完全指南:从模型设计到 REST API 开发全流程Claude Code 辅助 Django 开发的完整实战指南:用 Claude Code 生成 Django 项目结构和 Models(含迁移文件)、Django REST Framework(DRF)API 开发(Serializer/ViewSet/Router)、用户认证系统(JWT/Session/第三方登录)、Django ORM 查询优化(select_related/prefetch_related/annotate)、异步任务(Celery + Redis)、测试用例生成(pytest-django)、Docker 化部署,以及在现有 Django 项目中快速定位和修复 Bug 的 Prompt 技巧。2026/3/26实战Claude Code Rust 实战完全指南:从所有权错误到高性能系统编程Claude Code 辅助 Rust 开发的完整实战指南:用 Claude Code 理解 Rust 所有权(ownership)、借用(borrow)和生命周期(lifetime)报错、生成符合 Rust 惯用法的代码(使用 Result/Option/迭代器)、借助 Claude Code 快速上手异步 Rust(Tokio/async-await)、实战案例(CLI 工具/HTTP 客户端/WebAssembly 模块/系统命令行工具)、Cargo.toml 依赖管理优化、unsafe Rust 代码的安全审查、Rust 与 Python/Go 代码互操作,以及最有价值的 Rust Prompt 模板。2026/3/26实战OpenClaw 与 Claude Code 协同使用实战:AI 聊天助手 + AI 编程助手的终极组合OpenClaw 与 Claude Code 协同使用的完整实战指南:两款工具的定位差异(OpenClaw=聊天AI助手框架,Claude Code=代码库直接操作的编程工具)、在 OpenClaw 中通过 exec 工具调用 Claude Code CLI(claude 命令)执行编程任务、把 OpenClaw 的 Telegram 消息转化为 Claude Code 任务(用自然语言描述→Claude Code执行→返回结果)、使用 OpenClaw Cron 定期触发 Claude Code 执行代码审查/依赖更新/测试/文档生成、CRS 代理在两者中的统一接入方案,以及常见的协同架构模式(主动触发/被动响应/定时执行)。2026/3/24实战Claude Code + NestJS 实战:用 AI 构建企业级 TypeScript 后端服务Claude Code 与 NestJS 框架深度协作实战:模块化架构设计(Module/Controller/Service/Provider)、让 Claude 生成符合 NestJS 惯例的 CRUD 模块、依赖注入系统的 AI 辅助使用、Guards 认证守卫(JWT/Role-based)、Interceptors 全局日志与请求变换、Pipes 数据验证(class-validator)、Exception Filters 统一异常处理、TypeORM 集成与数据库迁移、Swagger 文档自动生成,以及 NestJS 微服务(Microservices)架构入门。2026/3/21