1

我在设计架构时遇到了一些问题。

情况1:

model User {
  package: @relation(fields: [authorId], references: [id])
  packageId: Int
}

model Package {
  user User[]
}

一个包可以被数百名用户订阅。所以,我认为这是要走的路。但是,问题是,当一个包需要被删除时,用户(管理员)也需要被删除。我们不想要的

案例2:

model User {
  package Package[]
}

model package {
  author      User?  @relation(fields: [authorId], references: [id])
  authorId    Int?
}

通过这种方式设计,当包被删除时,用户并没有被删除。但我无法将多个用户连接到一个包。

4

1 回答 1

2

我认为您必须明确地对双方的关系进行建模才能获得多对多关系。毕竟用户可以订阅很多包,包可以有很多用户订阅。

model User {
  id Int @id @default(autoincrement())
  packages Package[] @relation(references: [id])
}

model Package {
  id Int @id @default(autoincrement())
  user User[] @relation(references: [id])
}
于 2020-07-04T11:32:21.453 回答