Prisma - 如何使用多个模型中的字段定义复合唯一约束?

Prisma - How to define compound unique constraint with fields in multiple models?

我在 Prisma 中有这种不那么直接的模型关系。 User --< Enrollment >-- Course 我不知道如何确保 Course title 字段在该用户创建的课程中是唯一的。换句话说,我不希望一个用户创建多个同名课程。但我希望课程与不同的创作者同名。 (只有创建者在注册中具有教师角色)

我面临的问题是,我不知道在哪里定义唯一属性以及要包含哪些字段。我要对其进行唯一约束的字段(课程名称,具有TEACHER角色的成员)跨不同模型。

model User {
  id                Int              @id @default(autoincrement())
  email             String           @unique
  passwordHash      String
  enrollments       Enrollment[]
}

model Course {
  id                Int              @id @default(autoincrement())
  name              String
  members           Enrollment[]
}

model Enrollment {
  role              UserRole         @default(STUDENT)

  // Relation Fields
  userId            Int
  courseId         Int
  user              User             @relation(fields: [userId], references: [id])
  course           Course          @relation(fields: [courseId], references: [id])
  @@id([userId, courseId])
  @@index([userId, role])
}

您可能想在 Course 模型上添加一个字段来定义它的创建者,以便您可以将该字段用作 table 本身的唯一约束。

model Course {
  id                Int              @id @default(autoincrement())
  name              String
  members           Enrollment[]
  creatorId         Int
  creator           User             @relation(fields: [creatorId], references: [id])
  @@unique([creatorId, name], name: "courseIdentifier")
}