Prisma无unique注解无法创建1:1关系的建模问题咨询
Prisma中正确建模一对多(Type到Transaction)关系
你当前的schema定义的是一对一关系,因为两边的关联字段都加了@unique,导致一个Type只能绑定一个Transaction,反过来一个Transaction也只能绑定一个Type,这和你的需求完全不符。
你的需求是典型的一对多关系:Type是"一"(固定4条记录),Transaction是"多"(多条记录可关联同一个Type,单条仅关联一个Type)。正确的建模方式如下:
model Transaction { id Int @id @default(autoincrement()) type Type? @relation(fields: [typeTypeId], references: [id]) date DateTime product String value Int seller String typeTypeId Int // 移除@unique,允许多个交易关联同一类型 } model Type { id Int @id @default(autoincrement()) description String nature String sign String transactions Transaction[] // 用复数字段表示一个类型对应多个交易 }
关键改动说明:
- 移除Transaction里
typeTypeId的@unique:这样多个Transaction可以引用同一个Type的id,满足"多条交易关联同一类型"的需求 - Type模型里的关联字段改成
Transaction[]:明确表示一个Type可以对应多个Transaction - 删掉Type模型里多余的
typeId字段和@unique:外键应该放在"多"的一方(Transaction),Type作为"一"的一方不需要额外字段,直接通过Transaction的外键关联即可
这样配置后,你可以在Type表中创建id为1-4的固定类型记录,Transaction表的任意多条记录都可以将typeTypeId设为同一个Type的id,同时每条Transaction只能关联一个Type,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者danibrum
相关产品推荐
相关产品推荐

