2

我想创建一个公交路线数据库,它给出的结果如下:

输入: 源 = station-X,目的地 = station-Y

输出:各种总线名称/编号。经过Station-X和Station-Y

到目前为止我有: 巴士(bus_no),Bus_Route()

    Bus(bus_name/no.)
id   |   bus_no
1    |   33
2    |   33A

  Bus_Route(route_id,bus_no)
id   |   route_id  |  bus_no
1    |   route-A   |   33
2    |   route-B   |   33A

我如何继续存储相应路线的站名。我不是数据库专家,所以任何帮助都会很有价值。提前致谢。

4

2 回答 2

6

你最好创建一个额外的表来保存 STATION - ROUTE 关系。您将在此处定义多对多关系,这意味着一个车站可以有很多路线,而一条路线可以有很多车站。

总线(仅当存在多个具有相同 *bus_no* 的物理总线时才需要)

id   |   bus_no
---------------
1    |   33
2    |   33A
3    |   33A

bus_routes(*route_id* 和 *bus_no* 都必须是唯一值)

route_id  |  bus_no
---------------------
route-A   |   33
route-B   |   33A

station_routes(多对多,route_order 告诉我们路线内的顺序)

route_id  |  station_id |  route_order
------------------------------------
route-A   |   Egham     |   1
route-A   | Haymarket   |   2
route-A   | Egham Plaza |   3
route-B   |   Egham     |   1
route-B   |   Langley   |   2
于 2013-10-27T14:18:23.423 回答
2

我认为您需要以下表格:

BUSROUTE: route_id, routenumber  

BUSSTOPS: stop_id, stopname     

BUSROUTESTOPS: route_id, stop_id, displayorder

以伦敦地铁为例,busroute 表将包含“Jubilee”、“Central”、“District”、“Bakerloo”等值。

busstops 表将保存车站名称,例如 Stanmore、Canons Park、Queensbury、Kingsbury、Wembley Park 等。此表是必要的,因为一个车站可以为多条路线提供服务。

busroutestops 包含路线编号、车站名称和车站出现在这条路线上的顺序。主键将是 route_id 和 stop_id 的合并。

一旦你克服了这个问题,你可能需要一个时间表,它最简单的形式将包含三个字段:一个 id、一个 route_id 和出发时间。留给读者“作为练习”如何表示回程!

伦敦地铁可能不是一个很好的例子,因为一些线路——尤其是北部和地区线路——有多条路线。这些最好被视为单独的路线。

于 2013-10-27T14:14:58.673 回答