A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 彭思 中级黑马   /  2013-2-28 01:08  /  1453 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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.Position<sr2.Position
                and sr1.Stop=@StartStop
                and sr2.Stop=@EndStop
end



1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马