You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 05:45:38