欢迎来到天天文库
浏览记录
ID:42222971
大小:539.00 KB
页数:47页
时间:2019-09-09
《公交车路线查询系统后台数据库设计说明》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、....公交车路线查询系统后台数据库设计--查询算法1.公交车路线信息在数据库中的存储方式显然,如果在数据库中简单的使用表bus_route(路线名,路线经过的站点,费用)来保存公交车路线的线路信息,则很难使用查询语句实现乘车线路查询,因此,应该对线路的信息进行处理后再保存到数据库中,笔者使用的方法是用站点-路线关系表stop_route(站点,路线名,站点在路线中的位置)来存储公交车路线,例如,如果有以下3条路线R1:S1->S2->S3->S4->S5R2:S6->S7->S2->S8R3:S
2、8->S9->S10则对应的站点-路线关系表stop_route为StopRoutePositionS1R11S2R12S3R13S4R14S5R15S6R21专业.专注....S7R22S2R23S8R24S8R31S9R32S10R33注:Stop为站点名,Route为路线名,Position为站点在路线中的位置2.直达乘车路线查询算法基于表stop_route可以很方便实现直达乘车路线的查询,以下是用于查询直达乘车路线的存储过程InquiryT0: createprocInquiryT0(@
3、StartStopvarchar(32),@EndStopvarchar(32))asbeginselectsr1.Stopas启始站点,sr2.Stopas目的站点,sr1.Routeas乘坐线路,sr2.Position-sr1.Positionas经过的站点数fromstop_routesr1,stop_routesr2wheresr1.Route=sr2.Routeandsr1.Position4、r2.Stop=@EndStopend3.查询换乘路线算法(1)直达路线视图直达路线视图可以理解为一张存储了所有直达路线的表(如果两个站点之间存在直达路线,那么在直达路线视图中就有一行与之相对应)。例如R1,R2,R3对应的RouteT0如下: 起点终点乘坐路线站点数S3S4R11S3S5R12S4S5R11S1S2R11S1S3R12S1S4R13S1S5R14S2S3R11S2S4R12专业.专注....S2S5R13S2S8R21S6S2R22S6S7R21S6S8R23S7S2R21S7S5、8R22S8S10R32S8S9R31S9S10R31RouteT0定义如下:createviewRouteT0asselectsr1.StopasStartStop,--启始站点sr2.StopasEndStop,--目的站点sr1.RouteasRoute,--乘坐线路sr2.Position-sr1.PositionasStopCount--经过的站点数专业.专注....fromstop_routesr1,stop_routesr2wheresr1.Route=sr2.Routeandsr16、.Position7、转站点,r2.Routeas乘坐路线2,r2.EndStopas目的站点,r1.StopCount+r2.StopCountas总站点数fromRouteT0r1,RouteT0r2wherer1.StartStop=@StartStopandr1.EndStop=r2.StartStopandr2.EndStop=@EndStopend同理可以得到二次换乘的查询语句createprocInquiryT2(@StartStopvarchar(32),@EndStopvarchar(32))asbe8、ginselectr1.StartStopas启始站点,r1.Routeas乘坐路线1,r1.EndStopas中转站点1,r2.Routeas乘坐路线2,r2.EndStopas中转站点2,r3.Routeas乘坐路线3,专业.专注....r3.EndStopas目的站点,r1.StopCount+r2.StopCount+r3.StopCountas总站点数fromRouteT0r1,RouteT0r2,RouteT0r3wherer1.StartStop=@StartStop
4、r2.Stop=@EndStopend3.查询换乘路线算法(1)直达路线视图直达路线视图可以理解为一张存储了所有直达路线的表(如果两个站点之间存在直达路线,那么在直达路线视图中就有一行与之相对应)。例如R1,R2,R3对应的RouteT0如下: 起点终点乘坐路线站点数S3S4R11S3S5R12S4S5R11S1S2R11S1S3R12S1S4R13S1S5R14S2S3R11S2S4R12专业.专注....S2S5R13S2S8R21S6S2R22S6S7R21S6S8R23S7S2R21S7S
5、8R22S8S10R32S8S9R31S9S10R31RouteT0定义如下:createviewRouteT0asselectsr1.StopasStartStop,--启始站点sr2.StopasEndStop,--目的站点sr1.RouteasRoute,--乘坐线路sr2.Position-sr1.PositionasStopCount--经过的站点数专业.专注....fromstop_routesr1,stop_routesr2wheresr1.Route=sr2.Routeandsr1
6、.Position7、转站点,r2.Routeas乘坐路线2,r2.EndStopas目的站点,r1.StopCount+r2.StopCountas总站点数fromRouteT0r1,RouteT0r2wherer1.StartStop=@StartStopandr1.EndStop=r2.StartStopandr2.EndStop=@EndStopend同理可以得到二次换乘的查询语句createprocInquiryT2(@StartStopvarchar(32),@EndStopvarchar(32))asbe8、ginselectr1.StartStopas启始站点,r1.Routeas乘坐路线1,r1.EndStopas中转站点1,r2.Routeas乘坐路线2,r2.EndStopas中转站点2,r3.Routeas乘坐路线3,专业.专注....r3.EndStopas目的站点,r1.StopCount+r2.StopCount+r3.StopCountas总站点数fromRouteT0r1,RouteT0r2,RouteT0r3wherer1.StartStop=@StartStop
7、转站点,r2.Routeas乘坐路线2,r2.EndStopas目的站点,r1.StopCount+r2.StopCountas总站点数fromRouteT0r1,RouteT0r2wherer1.StartStop=@StartStopandr1.EndStop=r2.StartStopandr2.EndStop=@EndStopend同理可以得到二次换乘的查询语句createprocInquiryT2(@StartStopvarchar(32),@EndStopvarchar(32))asbe
8、ginselectr1.StartStopas启始站点,r1.Routeas乘坐路线1,r1.EndStopas中转站点1,r2.Routeas乘坐路线2,r2.EndStopas中转站点2,r3.Routeas乘坐路线3,专业.专注....r3.EndStopas目的站点,r1.StopCount+r2.StopCount+r3.StopCountas总站点数fromRouteT0r1,RouteT0r2,RouteT0r3wherer1.StartStop=@StartStop
此文档下载收益归作者所有