我实际上正在开发一个巴士票预订系统。提供商有许多路线和不同的行程。我已经建立了一个相当全面的数据库,将所有这些映射在一起,但是当我进行交叉路线预订时,我无法让路径算法正常工作。
例如,用户想从蒙特利尔到舍布鲁克,他只会走我们这里所说的 Route #47。但如果他去萨顿而不是舍布鲁克,他现在必须在某个时候转入 53 号路线。
现在,检测一个且只有一个转移并不难。但是当我谈到他可以做哪些选择来穿越多条路线时,我有点害怕。我设计了一种可爱且相对有效的方法,仅使用 SQL 在 1-3 跳上执行此操作,但我想知道我应该如何在更广泛的范围内组织所有这些,因为客户端可能不会在其余的路径中停留是生命。
到目前为止我所想到的示例:
StartingStop
joins to Route
joins to StopsOfTheRoute
joins to TransfersOnThatStop
joins to TargetStopOfThatTransfer
joins to RouteOfThatStop
joins to StopsOfThatNewRoute
[wash rince repeat for more hops]
where StopsOFThatNewRoute = EndingStop
问题是,如果我有超过 3 个跃点,我确信我的 SQL 服务器在压力下会很快窒息,即使我正确索引我的数据库,我也可以很容易地预测最终会出现重大故障......
谢谢