同一字段的多重关系prisma-postgresql



我想创建这个数据库设计https://i.stack.imgur.com/2QYip.png

我需要制作车站和轨道段的模型(一个轨道段将两个车站连接在一起。(

这是我的棱镜模式,但它给了我这个错误";验证模型"station"时出错:唯一索引定义多次引用字段代码。

model Station {
id        Int      @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
name String
code String @unique
}
model TrackSegment {
id        Int      @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
sourceId      String 
destinationId String
stationCode Station @relation(fields: [destinationId, sourceId], references: [code, code])
}

我想这就是数据的样子。

Station: [
{
name: 'kalisetail'
code: 'KLS
},
{
name: 'rogojampi'
code: 'RGJ
}]

那么TrackSegment就是

id: 1
sourceId: KLS
destinationId: RGJ

sourceId和destinationId都指型号站的同一字段(代码(

您需要在TrackSegment字段上添加第二个Station关系,以区分源和目标。

model Station {
id        Int      @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
name                String
code                String         @unique
sourceSegments      TrackSegment[] @relation("source")
destinationSegments TrackSegment[] @relation("destination")
}
model TrackSegment {
id        Int      @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
sourceId               String
destinationId          String
sourceStationCode      Station @relation(name: "source", fields: [sourceId], references: [code])
destinationStationCode Station @relation(name: "destination", fields: [destinationId], references: [code])
}

请注意,我总是给它们起不同的名字来消除它们之间的歧义。

最新更新