2015-09-25 81 views
1

我正在设计一个巴士预约系统的数据库,我无法弄清楚在某些情况下如何限制座位。 假设我有巴士停靠站A-B-C-D-E,它形成从A到E通过C和D的路线。巴士有10个座位。现在如果10个座位是从AB预订的,另外10个是从DE预订的,系统应该允许为BC,BD和CD预订。我无法弄清楚如何制作满足所有场景的设计,以避免预订路线已经满了。巴士预约系统的座位管理

我打算使用PHP进行MySQL开发。这是数据库设计的相关部分(数据库本身太大,我试图做一个简单的演示)

Database

+1

这将很高兴地说出为什么倒票。这将使问题更好,因为我相信它的有效问题(在广泛的SO搜索之后) –

回答

1

如果我理解的情况下正确,我会做这样的事情:

ID|busStop|routeTime 
1 | A | 01:00 

在这个表格中,您所有的预订都会进行,因此每次预订都会有一排预订。 所以,现在您可以计算每条路线上每站的预订量以及剩余座位数。

这是回答您的问题吗?

编辑:ofcourse你应该添加一个列的预订帐户的ID也。

编辑2:而不是使用busStop列,你可以使用busDrive(或类似的东西)列,但不存储busstops A,B ...但存储路由A - B,B - C.

假设一位客户预订AB行,该行将被添加一个值AB。我们可以计算出A-B路线还剩9个座位。因此,现在如果在该公共汽车数据库中有10条A-B记录,我们知道A-B路线没有剩余座位。

Ofcourse,你可以创建旁边用总线的表停本身它

这是你想要的吗?

EDIT3:

用户表:

ID|username ... 

巴士站就表:

ID|busstop|userID ... 

busdrive表

ID|busdrive|userID ... 

用户ID是指在用户表中的ID的列。

编辑4:所以,现在当从AD别人的书,你让三个记录busdrive与价值观AB,BC和CD

+0

路线由两个停靠站构成,我需要覆盖所述问题的场景。 –

+0

不要担心其他领域,他们在生产中。我只是将其剥离到最低限度,使我的观点 –

+0

问题出现在AC充满时,AB和BC自动充满,因为那个人占用座位从A到C –

1

我认为你将不得不使用包含每个端点的表开始了与它相关的家长。

所以表1有定义的每个路线点

RouteId : "A" 
RouteName "My A Route" 

RouteId : "B" 
RouteName "My B Route" 

表2(路径)将定义路由的连接方式:

PathId :"P1" 
RouteId : "B" 
ParentRouteId : "A" 

现在你可以使用第三个表来跟踪谁在骑什么路线和它的父母是什么因此累计乘客的总数。

我知道这有些含糊,但它应该让你走上正确的轨道。

+1

你可以解释第三个表。它在正确的轨道上 –