Skip to Content

数据库 Schema 管理

让 AI 通过一个文件理解整个数据模型

核心问题

当 AI 需要理解项目的数据模型时:

项目类型数据模型定义方式AI 的困难
Prisma单一 schema.prisma 文件✅ 一个文件包含所有信息
Spring Boot分散的 Entity 类文件❌ 需要读取 20+ 个文件
Django/Rails分散的 Models 文件❌ 需要在多个模块中查找

问题:当 Entity/Model 分散在数十个文件中时,AI 无法高效地理解完整的数据关系。

解决方案:统一 Schema 文件

无论使用什么技术栈,都应该维护一个统一的数据模型概览文件

方案一:Schema-First(推荐)

如果技术栈支持,优先使用 schema-first 的工具。Prisma 是一个很好的例子:

// prisma/schema.prisma model User { id String @id @default(cuid()) email String @unique name String? posts Post[] profile Profile? } model Profile { id String @id @default(cuid()) bio String? user User @relation(fields: [userId], references: [id]) userId String @unique } model Post { id String @id @default(cuid()) title String published Boolean @default(false) author User @relation(fields: [authorId], references: [id]) authorId String categories Category[] } enum OrderStatus { PENDING PAID SHIPPED DELIVERED }

优点: 所有模型、关系、枚举都在一个文件中,AI 读取一次就能理解整个数据结构。

方案二:维护 ERD 文档

对于使用 ORM Entity 的项目(如 Spring Boot、Django),需要手动维护一个 ERD 概览文件

# 数据库 ERD (docs/database/erd.md) ​```mermaid erDiagram User ||--o{ Post : writes User ||--|| Profile : has User ||--o{ Order : places User { string id PK string email UK string name } Profile { string id PK string user_id FK string bio } Post { string id PK string author_id FK string title boolean published } ​``` ## 枚举定义 - OrderStatus: PENDING, PAID, SHIPPED, DELIVERED

从 IntelliJ IDEA 导出 ERD

对于 Java 项目,可以使用 IntelliJ IDEA 的数据库工具导出 Mermaid ERD:

  1. 连接数据库:Database 面板 → + → Data Source → 选择数据库类型
  2. 生成 ERD:右键数据库/Schema → DiagramsShow Diagram
  3. 导出 Mermaid:在 ERD 图上右键 → Export to FileMermaid .md
IntelliJ IDEA 导出 Mermaid ERD

导出后,在文件中补充业务说明和关键规则。

Schema 文件的维护

放置位置

项目根目录/ ├── docs/database/ │ ├── erd.md # ERD 文档(Mermaid) │ └── conventions.md # 命名约定 ├── prisma/ │ └── schema.prisma # Prisma 项目 └── src/entities/ # ORM Entity 文件

更新时机

事件动作
新增表/实体更新 ERD 文档
修改字段/关系更新 ERD 文档
执行迁移后验证 ERD 是否同步

在 AI 工作流中使用

请参考 docs/database/erd.md 中的数据模型, 为 Order 模块添加"订单退款"功能: 1. 分析需要哪些新字段或新表 2. 生成迁移脚本 3. 更新相关的 Service 层代码

关键原则

原则说明
单一数据源所有数据模型信息集中在一处
保持同步Entity 修改后立即更新 ERD 文档
包含关系不仅有字段,还要有表间关系
业务注释添加字段和枚举的业务含义

下一步

接下来,我们将了解静态分析工具,如何为 AI 提供确定性反馈。

最后更新于: