公交车路线查询系统后台数据库设计——关联地名和站点

From:http://www.cnblogs.com/lucc/archive/2009/02/14/1390384.html

/Files/leleroyn/bris2.rar(该数据库已经输入了广州市350条公交车路线作为测试数据) 

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

注:

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

1.路线和地名信息管理:

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

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

SplitString

 

插入新的公车路线: 

InsertRoute

 

插入新地名函数: 

InsertSpot

 

2.路线查询

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

直达路线查询: 

InquiryT0

 

一次换乘查询: 

InquiryT1

 

二次换乘查询:

InquiryT2

 

综合查询: 

Inquiry

 

获取地名对应的站点: 

GetStopsOfSpot

 

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

declare @sps varchar(1024),@eps varchar(1024)
set @sps=dbo.GetStopsOfSpot('起始地点名称')
set @eps=dbo.GetStopsOfSpot('目的地点名称')
exec Inquiry @sps,@eps
posted @ 2009-02-14 08:55  Ants  阅读(1524)  评论(0编辑  收藏  举报