一尘不染

如何制作简单的公交路线搜索引擎?

sql

用户在[铁路查询系统开发中再次询问此问题,如何对火车,车站和车站进行建模?
我的问题描述:

假设我 在ROUTE-1中* 有一个 BUS-123, 它将通过D,E,F, X,Y,Z 穿越A,B,C,D,E,F,G,H和
ROUTE-2中的BUS-321
。如果有人输入B作为源点,输入F作为目标点,则带有BUS-123的ROUTE-1应该显示在结果中。但是,如果某人输入H作为来源,而输入A作为目的地,则不应显示结果,因为返回的路线可能不一定与旅行的返回路线相同。但是,如果有人输入A作为来源,Z作为目的地,则应该显示带有
ROUTE-1的 BUS-123 和带有 ROUTE-2的 BUS-321
***


我的问题是:如何在数据库中存储该路由信息?如果我像以下那样存储在RDBMS中

BUS_NUMBER   ROUTE_NUMBER    VIA_ROUTES
BUS-123      ROUTE-1         A, B, C, D, E, F, G, H
BUS-321      ROUTE-2         D, E, F, X, Y, Z

然后,我的搜索将如何工作。我的意思是如何在字符串中搜索它。如果我将所有VIA_ROUTES存储在不同的不同列中,那么它将如何。请用你自己的技术来建议我。这并不紧急,但我正计划进行基本的公交路线搜索,因此,感谢您提出的宝贵意见。


阅读 155

收藏
2021-03-17

共1个答案

一尘不染

我将其建模为循环图。每个公交车站都由一个顶点表示。两个站点之间的每个直接连接都由标有路线编号的边表示;因此,每条路线都是一系列相连的边。也使边缘对齐。并非所有从A站到B站的路线也一定会从B站到A站朝另一个方向行驶。

可能想用估计的旅行时间来填充每个边缘,这是该条腿的一个或多个差异测量值-在周日晚上2点,方差可能很小,但是在周五晚上5点,则可能非常小高,以及出发时间列表。

然后,它涉及图形遍历并找到“最低成本”路线,但是您选择定义“最低成本”-您可能要考虑的因素包括:

  • 总旅行时间
  • 等待下一条腿离开的总时间。
  • 在任何一个站点的等待时间。
  • 距离?

应该注意的是,太多的等待时间是不好的(曾经花40分钟等待一月份的-10
F时的公共汽车吗?)。太少也很不好,因为由于公共汽车对本地交通状况的波动具有高度的响应能力,因此公共汽车的时间表往往会有相当大的可变性,因为它增加了丢失连接的可能性。

我就是那样做的。

我不相信我会尝试直接在SQL中解决它。

不过,该模型非常适合SQL。您需要以下实体,然后是一些实体,因为您需要代表时间表等。

  • 停止。 一个巴士站。图的顶点。
  • 路线。 公交路线。
  • 。两站之间的直接联系。图的边缘。
  • RouteSegment。 表示组成路线的分段有序序列的关联实体。
2021-03-17