【问题标题】:How to model a tournament in Prisma如何在 Prisma 中为锦标赛建模
【发布时间】:2022-01-24 08:25:54
【问题描述】:

我想在 Prisma 中为锦标赛建模。我有这个:

model Tournament {
  id      Int     @id @default(autoincrement())
  meets   Meet[]
}

model Meet {
  id      Int     @id @default(autoincrement())
  name    String
  matches Match[]
}

model Match {
  id            Int     @id @default(autoincrement())
  player1Id     Int
  player2Id     Int
  meet          Meet @relation(fields: [meetId], references: [id])
  meetId        Int
}

model Player {
  id    Int     @id @default(autoincrement())
  name  String
}

model Result {
  id        Int     @id @default(autoincrement())
  matchId    Int
  playerId  Int
}

我觉得 Match 模型可能需要将 player1 和 player2(具有关系)链接到 Player 模型。我也不确定结果应该如何建模。

我们将不胜感激。

【问题讨论】:

    标签: prisma


    【解决方案1】:

    你可以这样做:

    datasource mysql {
      provider = "mysql"
      url      = env("DATABASE_URL")
    }
    
    generator client {
      provider = "prisma-client-js"
    }
    
    generator erd {
      provider = "prisma-erd-generator"
      output = "./entity-relationship-diagram.svg"
    }
    
    model Tournament {
      id      Int     @id @default(autoincrement())
      name String
      meets   Meet[] @relation()
    }
    
    model Meet {
      id      Int     @id @default(autoincrement())
      name    String
      tournament Tournament @relation(fields: [tournamentId], references: [id])
      tournamentId Int
      matches Match[] @relation()
    }
    
    model Match {
      id            Int     @id @default(autoincrement())
      name          String
      meeet        Meet    @relation(fields: [meetId], references: [id])
      meetId       Int
      players      Player[] @relation("matchPlayers", fields: [playerId], references: [id])
      playerId     Int
      winner       Player?  @relation("matchWinner", fields: [winnerId], references: [id])
      winnerId     Int?
      score        Score[] @relation()
    }
    
    model Player {
      id    Int     @id @default(autoincrement())
      name  String
      matchesPlayers Match[] @relation("matchPlayers")
      matchesWinner Match[] @relation("matchWinner")
      score Score[] @relation()
    }
    
    model Score {
      id    Int     @id @default(autoincrement())
      score Int
      match Match    @relation(fields: [matchId], references: [id])
      matchId Int
      player Player  @relation(fields: [playerId], references: [id])
      playerId Int
    }
    

    它会生成如下数据库

    【讨论】:

    • 谢谢你!!!关系的命名尚不清楚。这行 'matchesPlayers Match[] @relation("matchPlayers")' 实际上应该是 'matchPlayers Match[] @relation("matchPlayers") '
    猜你喜欢
    • 2011-01-12
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 2017-09-01
    • 2017-05-21
    • 1970-01-01
    相关资源
    最近更新 更多