公交路线查询系统--数据库设计.docVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1. 公交车路线信息在数据库中的存储方式   显然,如果在数据库中简单的使用表bus_route(路线名,路线经过的站点,费用)来保存公交车路线的线路信息,则很难使用查询语句实现乘车线路查询,因此,应该对线路的信息进行处理后再保存到数据库中,考试大使用的方法是用站点-路线关系表stop_route(站点,路线名,站点在路线中的位置)来存储公交车路线,例如,如果有以下3条路线   R1:S1-S2-S3-S4-S5   R2:S6-S7-S2-S8   R3:S8-S9-S10   则对应的站点-路线关系表stop_route为 Stop Route Position S1 R1 1 S2 R1 2 S3 R1 3 S4 R1 4 S5 R1 5 S6 R2 1 S7 R2 2 S2 R2 3 S8 R2 4 S8 R3 1 S9 R3 2 S10 R3 3   注:Stop为站点名,Route为路线名,Position为站点在路线中的位置   2.直达乘车路线查询算法   基于表stop_route可以很方便实现直达乘车路线的查询,以下是用于查询直达乘车路线的存储过程InquiryT0:   create proc InquiryT0(@StartStop varchar(32),@EndStop varchar(32))   as   begin   select   sr1.Stop as 启始站点,   sr2.Stop as 目的站点,   sr1.Route as 乘坐线路,   sr2.Position-sr1.Position as 经过的站点数   from   stop_route sr1,   stop_route sr2   where   sr1.Route=sr2.Route   and sr1.Positionsr2.Position   and sr1.Stop=@StartStop   and sr2.Stop=@EndStop   end   3.查询换乘路线算法   (1)直达路线视图   直达路线视图可以理解为一张存储了所有直达路线的表(如果两个站点之间存在直达路线,那么在直达路线视图中就有一行与之相对应)   create view RouteT0   as   select   sr1.Stop as StartStop, --启始站点   sr2.Stop as EndStop,  --目的站点   sr1.Route as Route,  --乘坐线路   sr2.Position-sr1.Position as StopCount  --经过的站点数   from   stop_route sr1,   stop_route sr2   where   sr1.Route=sr2.Route   and sr1.Positionsr2.Position   (2)换乘路线算法   显然,一条换乘路线由若干段直达路线组成,因此,基于直达路线视图RouteT0可以很方便实现换乘查询,以下是实现一次换乘查询的存储过程InquiryT1:   create proc InquiryT1(@StartStop varchar(32),@EndStop varchar(32))   as   begin   select   r1.StartStop as 启始站点,   r1.Route as 乘坐路线1,   r1.EndStop as 中转站点,   r2.Route as 乘坐路线2,   r2.EndStop as 目的站点,   r1.StopCount+r2.StopCount as 总站点数   from   RouteT0 r1,   RouteT0 r2   where   r1.StartStop=@StartStop   and r1.EndStop=r2.StartStop   and r2.EndStop=@EndStop   end   同理可以得到二次换乘的查询语句   create proc InquiryT2(@StartStop varchar(32),@EndStop varchar(32))   as   begin   select   r1.StartStop as 启始站点,   r1.Route as 乘坐路线1,   r1.EndStop as 中转站点1,   r2.Route as 乘坐路线2,   r2.EndStop as 中转站点2,   r3.Route as 乘坐路线3,   r3.EndStop as 目的站点,   r1.StopCount+r2.StopCount+r3.StopCount a

文档评论(0)

nfcm1 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档