我正在尝试尽可能提供最有效的数据库。我的巴士路线都有大约10站。公共汽车从第一站开始直至到达第10站,然后再次返回。这个循环一天发生3次。
我真的很困惑,我怎么能有效地为公共汽车生成时间以及我应该在哪里存储停靠点。如果我将所有停靠点放在一个字段中,将时间放在另一个字段中,则数据库将不会非常动态。
如果我将所有停靠点逐一存储在一列中,然后将其存储在另一列中,则会有很多重复发生,因为一次停止有多次。
也许我错过了一些东西,我刚刚开始学习SQL,这是我们设定的任务。
提前致谢。
答案 0 :(得分:3)
您需要一个包含Timetable
:
我建议创建单独的表Bus Stop
(存储停止名称,纬度/长度等)和Route
(存储路径名称,第一站,最后一站,方向等)。< / p>
您可能已经意识到这一点,但总线调度可能会很快变得复杂。例如:
您可能需要将某些停靠点指定为打印时间表中显示的“时间点”
每条路线可能有多种变化。例如,某些版本可能会在不同的公共汽车站开始或结束
周六和周日的时间表可能会有所不同,大多数机构每季度都会更改时间表
您可能需要考虑其中一些情况,并将它们构建到您的架构中。
这有帮助吗?
答案 1 :(得分:2)
这里只有一个(很多)方法:
听起来你可能想要一个routes
表,它描述了每条路线,并且有一个开始时间。
然后,一个stops
表,其中包含每个站点的总线描述和等待时间。
stopDistanceMapping
表将描述两个站点之间的距离以及它们之间的行驶时间。
最后,您的routeMap
表格会将单个routes
与stops
列表相关联。然后,您可以使用每个停靠点的等待时间以及routes
的时间/距离来填充stopDistanceMapping
表格的距离和时间。
答案 2 :(得分:0)
在(非常粗略的)第一次通过时,我会将公交车路线时间保存在这样的表格中:
RouteID StartingLocationID EndingLocationID TravelTime
另外,我会保留一张表格,例如:
StopID Address City etc... (whatever other information you need about each location)
对于路线本身,我会存储:
RouteID StartingLocationID RouteStartTime
显然你应该根据自己的需要量身定做,但这应该给你一个开始的地方。