我想以这样的方式创建一个总线路由DB,它给出如下结果:
输入: Source = station-X,Destination = 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
如何继续存储相应路线的电台名称。 我不是数据库专家,所以任何帮助都是有价值的。 提前谢谢。
答案 0 :(得分: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
stations_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
答案 1 :(得分: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和出发时间。它留给'作为读者的练习'如何代表回程!
伦敦地铁可能不是一个很好的例子,因为有些线路 - 尤其是北线和地区线路 - 有多条路线。这些最好被视为单独的路线。