如果说 Prisma 是一家数据翻译官事务所,那么 schema.prisma 就是这家事务所的总章程。
它至少关心三件事:
- 数据源是谁:
datasource - 要生成什么:
generator - 业务世界里有哪些档案模板:
model
先看一个最小但完整的心智骨架:
datasource db {
provider = "postgresql"
}
generator client {
provider = "prisma-client"
output = "../src/generated/prisma"
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
createdAt DateTime @default(now())
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
authorId Int
author User @relation(fields: [authorId], references: [id])
createdAt DateTime @default(now())
}#这段 schema 在表达什么
事务所章程
│
├── datasource:我们服务哪家档案馆
├── generator:要培养出哪类翻译官
└── models:城市里有哪些档案模板#你需要建立的 schema 心智
Schema 不是“为了让 Prisma 开心而写的配置”。
它是:
- 数据模型的声明式描述
- 应用代码与数据库结构的中间契约
- 生成 Client 和生成 migration 的出发点
所以 Prisma 的第一原则不是“先写 SQL”,而是:
先把数据世界描述清楚。