我正试图使一个数据库与多对多的关系,用户和职级,其中一些职级可以暂时分配。我遇到的问题是,我不知道如何将排名过期的时间戳与分配给用户的实际排名联系起来。这是我建立的模型(不包括其他属性,如姓名,电子邮件等):
model User {
id Int @id @default(autoincrement())
ranks Rank[]
...
}
model Rank {
name String @id
users User[]
...
}
任何建议都很感激!
我不是所有太有经验的棱镜,所以我没有很多创造性的解决方案。我想做一个单独的model
来代替关系,充当一种中间人。我也尝试了types
的东西,但由于它们的限制,没有工作。
1条答案
按热度按时间up9lanfz1#
这是一个糟糕的数据模型,您如何知道并强制
users.rank[]
仅引用那些在rank.users[]
中具有相应条目的数据?对于多:多关系,一个更好的、常见的解决方案是创建一个引用两者的解析表。所以类似于(我只使用Postgres DDL,因为我不使用prisma或任何其他orm,但翻译应该是直接的。如图所示,您现在可以将任何交叉点数据添加到分辨率表中。如果您需要维护user_rank的完整历史记录,只需将
assign_date
添加到PK中。