NoSQL:面向文档的设计/ MongoDB

时间:2014-08-22 10:20:26

标签: mongodb database-design document-oriented-db database nosql

我尝试使用面向文档的数据库,但我无法正确设计。

主要是,我想要一个可以存储飞机,座位,乘客的数据库,而且非常重要的是 - 乘客在特定飞机上用他们的timpestamp做的座位变化。

我需要查询从飞机上获得所有座位,从飞机上取下所有座位,从飞机上取下所有乘客,在某些时候选择特定座位的所有乘客,以及乘客在飞机和最受欢迎的座位。

在关系数据库中,我只会使用与其关联的联结表的2或3对多关系,但我不知道如何在面向文档的数据库中执行此操作。现在飞机上有一个座位和乘客的参考清单;和座位和乘客互相参考。这不起作用,因为我不知道在哪里保持座位更改的时间戳。我想我需要另一种(某种类型的联结)表,但不能确定如何正确地执行它。

有什么建议吗?

1 个答案:

答案 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"
}

对于您的用例,这大致是架构的外观。代码中将需要联接。