😍

同一テーブルへ複数の参照があるテーブルをPrismaで定義する

2024/07/26に公開

概要

  • userとcoupleのそれぞれのテーブルを定義します。
    • userには一意となるユーザーが存在します。
    • coupleには一意となるユーザーの組み合わせのレコードが存在します。

状況図解

テーブル定義

schema.prisma
model User {
  id String @id @default(uuid())
  name  String
  user1 Couple? @relation("user1")
  user2 Couple? @relation("user2")
}

model Couple {
  id String @id @default(uuid())
  userId1 String @unique
  user1 User @relation("user1", references: [id], fields: [userId1])
  userId2 String @unique
  user2 User @relation("user2", references: [id], fields: [userId2])
}

終わりに

  • こう言う状況の名称がわからず困ったので、どなたかの助けになれば幸いです。
  • 同一人物でcoupleとしてのレコードができないようにはしていないのでご注意ください。
    • 開発物の都合上、複合ユニークにはしておりません。

Discussion