小巴预订系统的架构建议

时间:2012-02-17 20:39:22

标签: php mysql cakephp database-design schema

我正在使用CakePHP 2.0和MySQL进行开发。

我正在尝试创建一个小巴预订解决方案,但我不确定我是否采用了正确的方法。

我们有一辆可以预订的小巴。在这个阶段,我并不担心预订时间的重叠。我为小巴的房产做了一张桌子,但我需要确定小巴和乘客之间的关系。

每辆小巴可以有许多(16)名乘客。 乘客可乘坐多辆小巴(今天一辆,明天一辆等)。

此外,我需要能够将乘客的类型设置为乘客或司机。 这需要三张桌子吗?我在想:

Buses table (id, description)
Users table (id, firstName)
Passengers table (buses.id, users.id, passenger_type)

任何建议都将受到赞赏。

3 个答案:

答案 0 :(得分:2)

我想我会引入一个Trip表并将总线分配给Trip的实例。然后引入一个联结表来解决旅行和乘客之间的多对多关系。

enter image description here

答案 1 :(得分:0)

鉴于一辆小巴可以为很多乘客提供服务,而一名乘客可以乘坐许多小巴路线,那么你所拥有的就是多对多(从一个到另一个)的关系。

因此,您需要三个表:一个用于乘客,一个用于小巴,另一个通过关键关联关联前两个:

Passenger_Minibus
------------------ 
PassengerID INT NOT NULL 
MinibusID INT NOT NULL

答案 2 :(得分:0)

看起来像这样:

一张存放小巴容量的表格。 (CapacityId)

一张存储乘客信息的表格。 (PassengerId,姓名,地址等)

一张存储小巴信息的表格。 (MiniBusId,CapacityId,Make,Model,Year,color等..)

一个预订信息表(BookingId,日期,时间,FromDestination,ToDestination等)

TripSchedule的一个表(TripId,BookingId,MinibusId)(只有在每次预订时有多个总线,否则您可以将MiniBusId添加到BookingInformation表并摆脱此表)

一个用于存储TripId和PassengerId的链接表。 (如果每次预订只有一辆小巴,请添加BookingId而不是TripId)