prisma:如何将具有多个 FK 的数据库 table 转换为 prisma 模式?

prisma: How to convert a database table with more that one FK to prisma schema?

总的来说,我是 Prisma 和关系数据库的新手。我对如何在 table 之间创建多对多关系感到有点困惑,尤其是关系字段。

例如,假设我想将此数据库模型转换为 Prisma 模式。

这是我想出的答案:

model User {
  id             String         @id
  comments       Comment[]
  posts          Post[]
}

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

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

Comment table 有两个指向 UserPost table 的外键。我是否需要在两个模型中都有 comments 字段?总的来说,我做对了吗?

根据您发布的数据库模型,您的 Prisma Schema 似乎非常好。让我一个一个地去吧。

User 与 Post

之间的一对多关系

这很好。 Post table 应该包含 User.id 字段的外键。

User 和 Post 之间的多对多关系(通过 Comment 关系 table)。

这又是一次,非常好。 comments 字段需要在两个模型中也是正确的。

关于显式与隐式多对多关系的一些说明

在 Prisma 术语中,您显式定义多对多 Comment table 的方式称为 explicit 多对多关系。由于 Comment table 有一个单独的 text 字段,因此使用显式多对多关系是有意义的。

如果 text 字段不存在,您可以使用 隐式 多对多关系。您可以选择在 prisma 文档 Relations Concept Article 的多对多关系部分阅读更多相关信息。

附带说明,您的图表似乎将 authorId 外键错误地列为 INT 类型。我相信这应该是 TEXT.