如何在 Prisma 中模拟锦标赛
How to model a tournament in Prisma
我想在 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 模型可能需要 link player1 和 player2(具有关系)到 Player 模型。我也不确定结果应该如何建模。
如有任何建议,我们将不胜感激。
您可以按照以下方式进行:
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
}
并且会生成如下数据库
我想在 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 模型可能需要 link player1 和 player2(具有关系)到 Player 模型。我也不确定结果应该如何建模。
如有任何建议,我们将不胜感激。
您可以按照以下方式进行:
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
}
并且会生成如下数据库