[C#]公交车路线查询系统后台数据库设计2

数据库下载(该数据库已经输入了广州市350条公交车路线作为测试数据) 

 

在《公交车路线查询系统后台数据库设计——查询算法》 一文中,已经实现了查询站点到站点的路线查询算法,但是,现实中用户不一定使用站点进行查询,而是使用地名。因此,公交车查询系统数据库必需记录地名与站 点的对应关系,在查询时将地名映射为站点。根据实际情况,某一地点附近通常有几个站点,因此,地名与站点之间是多对多的关系。显然,只需创建一个地名站点关系表stop_spot(Stop,Spot)用于储存这个关系即可。数据库关系图如下:

注:

Route:路线表
Stop
:站点表
Spot
:地名表
stop_route
路线站点关系表
stop_spot
:地名站点关系表

1.路线和地名信息维护:

以下函数用于维护公交车路线和地名的相关信息

字符串分割函数(信息处理的及路线查询的存储过程都需要使用到该函数) : 

SplitString

 

插入新的公车路线: 

InsertRoute

 

插入新地名函数: 

InsertSpot

 

2.路线查询

在《公交车路线查询系统后台数据库设计——查询算法》一文中,使用储存过程InquiryT0InquiryT1InquiryT2实现了站点到站点的查询,但是地名可能对应多个站点,因此,当进行地点到地点的查询相当于站点集到站点集的查询。因此,为了支持使用地名进行查询,将InquiryT0InquiryT1InquiryT2修改为站点集到站点集的查询:

直达路线查询: 

InquiryT0

 

一次换乘查询: 

InquiryT1

 

二次换乘查询:

InquiryT2

 

综合查询: 

Inquiry

 

如要进行地名到地名的路线查询,必需先调用GetStopsOfSpot获取地名对应的所有站点,在调用Inquiry进行查询。 

获取地名对应的站点: 

GetStopsOfSpot

 

使用地名查询乘车路线示例:

declare @sps varchar(1024),@eps varchar(1024)
set @sps=dbo.GetStopsOfSpot('起始地点名称')
set @eps=dbo.GetStopsOfSpot('目的地点名称')
exec Inquiry @sps,@eps
赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏