我正在使用SQL设计公交时刻表。每条公交线路都有多个站点,每条路线需要不同的表吗?

时间:2010-03-23 21:27:02

标签: sql bus timetable

我正在尝试尽可能提供最有效的数据库。我的巴士路线都有大约10站。公共汽车从第一站开始直至到达第10站,然后再次返回。这个循环一天发生3次。

我真的很困惑,我怎么能有效地为公共汽车生成时间以及我应该在哪里存储停靠点。如果我将所有停靠点放在一个字段中,将时间放在另一个字段中,则数据库将不会非常动态。

如果我将所有停靠点逐一存储在一列中,然后将其存储在另一列中,则会有很多重复发生,因为一次停止有多次。

也许我错过了一些东西,我刚刚开始学习SQL,这是我们设定的任务。

提前致谢。

3 个答案:

答案 0 :(得分:3)

您需要一个包含Timetable

的表格
  • 路线ID
  • 停止ID
  • 时间
  • 可能需要的其他字段(方向,序列#,块#等)

我建议创建单独的表Bus Stop(存储停止名称,纬度/长度等)和Route(存储路径名称,第一站,最后一站,方向等)。< / p>

您可能已经意识到这一点,但总线调度可能会很快变得复杂。例如:

  • 您可能需要将某些停靠点指定为打印时间表中显示的“时间点”

  • 每条路线可能有多种变化。例如,某些版本可能会在不同的公共汽车站开始或结束

  • 周六和周日的时间表可能会有所不同,大多数机构每季度都会更改时间表

您可能需要考虑其中一些情况,并将它们构建到您的架构中。

这有帮助吗?

答案 1 :(得分:2)

这里只有一个(很多)方法:

听起来你可能想要一个routes表,它描述了每条路线,并且有一个开始时间。

然后,一个stops表,其中包含每个站点的总线描述和等待时间。

stopDistanceMapping表将描述两个站点之间的距离以及它们之间的行驶时间。

最后,您的routeMap表格会将单个routesstops列表相关联。然后,您可以使用每个停靠点的等待时间以及routes的时间/距离来填充stopDistanceMapping表格的距离和时间。

祝你好运!

答案 2 :(得分:0)

在(非常粗略的)第一次通过时,我会将公交车路线时间保存在这样的表格中:

RouteID StartingLocationID  EndingLocationID TravelTime

另外,我会保留一张表格,例如:

StopID Address City etc... (whatever other information you need about each location)

对于路线本身,我会存储:

RouteID StartingLocationID RouteStartTime

显然你应该根据自己的需要量身定做,但这应该给你一个开始的地方。