Prisma

Schema 和 Model

Prisma Schema 和 Model 的作用与写法。

发布于 2026年5月30日0 views

schema.prisma 是 Prisma 的核心配置文件。它用来描述数据库连接、生成器和数据模型。

基本结构

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

model User {
  id        String   @id @default(cuid())
  email     String   @unique
  name      String?
  createdAt DateTime @default(now())
}

这里包含三部分:

  • generator:告诉 Prisma 生成什么客户端。
  • datasource:告诉 Prisma 连接哪个数据库。
  • model:描述数据库表结构。

Model 是什么

model 可以理解成数据库表。

model User {
  id    String @id @default(cuid())
  email String @unique
  name  String?
}

常见字段标记:

  • @id:主键。
  • @default(...):默认值。
  • @unique:唯一约束。
  • ?:可选字段,也就是可以为 null。

字段类型

常见类型:

  • String
  • Int
  • Boolean
  • DateTime
  • Json
  • Float

示例:

model Post {
  id        String   @id @default(cuid())
  title     String
  published Boolean  @default(false)
  views     Int      @default(0)
  createdAt DateTime @default(now())
}

关联关系

一对多关系:

model User {
  id    String @id @default(cuid())
  posts Post[]
}

model Post {
  id       String @id @default(cuid())
  title    String
  authorId String
  author   User   @relation(fields: [authorId], references: [id])
}

意思是:一个用户可以有多篇文章,一篇文章属于一个用户。

注意事项

  • 修改 model 后,需要执行 migration。
  • 字段命名尽量稳定,避免频繁改名。
  • 必填字段上线前要考虑已有数据怎么补默认值。
  • 关联关系要明确外键字段,比如 authorId

总结

Prisma Schema 用来描述数据库结构。Model 对应表,字段对应列,关系用 @relation 描述。Schema 改了之后,要通过 migration 同步到数据库。