我尝试使用面向文档的数据库,但我无法正确设计。
主要是,我想要一个可以存储飞机,座位,乘客的数据库,而且非常重要的是 - 乘客在特定飞机上用他们的timpestamp做的座位变化。
我需要查询从飞机上获得所有座位,从飞机上取下所有座位,从飞机上取下所有乘客,在某些时候选择特定座位的所有乘客,以及乘客在飞机和最受欢迎的座位。
在关系数据库中,我只会使用与其关联的联结表的2或3对多关系,但我不知道如何在面向文档的数据库中执行此操作。现在飞机上有一个座位和乘客的参考清单;和座位和乘客互相参考。这不起作用,因为我不知道在哪里保持座位更改的时间戳。我想我需要另一种(某种类型的联结)表,但不能确定如何正确地执行它。
有什么建议吗?
答案 0 :(得分:0)
您的架构设计应该是这样的:
{ //Flight Collection, helps query Available and Booked seats
"Flight_id":"A",
"FlightName":"CoolAir",
"AvailableSeats":["A1","A2"],
"BookedSeats":["A3","A4"]
}
{ //Seats Collection, helps query current/previous passenger
"SeatId":"A1",
"Flight_id":"A",
"AllPreviousPassengers":[{"P2",TimeStamp1},{"P3",TimeStamp2}],
"CurrentPassenger":{"P1",TimeStamp3}
}
{//Passenger collection, helps query passenger details
"PassengerId":"P1",
"PassengerName":"Mr. ABC",
"SeatId":"A1",
"Flight_id":"A"
}
对于您的用例,这大致是架构的外观。代码中将需要联接。