全书目录

第二十二篇:Prisma 完全指南 —— 数据翻译官事务所宇宙

第四章:Model 和 Relation —— 档案模板与档案转介关系

1 分钟 400 字 第 403 / 962 个阅读单元

在事务所里,model 就像一类档案模板。

例如:

  • User 是居民档案
  • Post 是文章档案
  • Order 是订单档案
  • AuditLog 是操作流水档案
#1. model 是什么
prisma
model User {
  id    Int    @id @default(autoincrement())
  email String @unique
  name  String?
}

这表示:

  • User 是一个模型
  • id 是主键
  • email 必须唯一
  • name 可为空
#2. relation 是什么

relation 就像档案馆里的“转介关系”或“挂靠关系”。

一个用户可以有很多文章:

prisma
model User {
  id    Int    @id @default(autoincrement())
  email String @unique
  posts Post[]
}

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

它的关系图可以这样记:

text
User 1 ─────────── N Post

User.posts      = 从用户视角看“他有哪些文章”
Post.author     = 从文章视角看“作者是谁”
Post.authorId   = 真正落在库里的外键字段
#一个很容易忽略的点

User.posts 这种 relation field,很多时候不是数据库里真实存在的一列
它是 Prisma 在“数据翻译层”给你的关系表达能力。

所以不要把下面两件事混为一谈:

text
关系字段 posts     !=  数据库里有一列叫 posts
外键字段 authorId  =   数据库里真实存在的连接点
#关系的本质

你可以把 relation 想成:

  • model 是档案模板
  • relation 是档案之间的官方挂接规则
  • Prisma Client 则能顺着这些规则做关联读取和嵌套写入