我想创建这个数据库设计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])
}
请注意,我总是给它们起不同的名字来消除它们之间的歧义。