Heim >Backend-Entwicklung >PHP-Tutorial >公交车系统的mysql数据库设计

公交车系统的mysql数据库设计

WBOY
WBOYOriginal
2016-06-13 10:07:481351Durchsuche

公交车系统的mysql数据库设计,在线等
现有某地区公交车线路名和其对应的公交线路的每一站名,
如 2路车  青山路--八一路--上海路  
  3路车  凝注路--八一路--上海路
...
可从站名1到站名2,有些是一趟车直达的,有些时需转车的,

现问:在MYSQL中,数据库如何设计呀,在线等 
THANKS 如文件比较大,可发我EMAIL [email protected]

------解决方案--------------------
这个要配和2维地图才可以吧,个人做不出来。 或者我理解的简单点
id 站名 几路 可换乘几路
1 青山路 2路 null
2 八一路 2路 3路
3 上海路 2路 3路
4 凝注路 3路 null
5 八一路 3路 2路
6 上海路 3路 2路

 青山路>凝注路: 
青山路在几路车线上?
凝注路在几路车线上?
是否一致?
是:...
否: 哪一路可转凝注路的那路车?
 不过这么又有问题,转车两次或以上就查不到。 
码了这么多字不忍心删掉,混个分吧。菜鸟程序员总是边干边想。。。。
------解决方案--------------------
我用“公交线路 mysql设计”关键词查到一些。
没做过,感觉也有点复杂。
一见到这个问题,我就想到数据结构中的图和广义表。所以我更倾向其它语言实现接口的形式。这是我瞎猜的。
祝好运!
------解决方案--------------------

数据库大概这样:

站名表
id 站名 几路 第几站(用来算距离几站)

转车表
id 站名 几路 可转几路 转站名(有时候两路车会在同一地点给不同站名)

实际计算时,应该把这个表,用图(不是map,是graph)来表示,
就是每个站能到达的站(可互相转车的站作为同一点), 然后用Dijkstra算法

不过,这个是最简单的,
如果公交线路比较复杂,比如有单行路段(来回路线不完全重复),那么表里需要更多字段来区分.
还有如果需要计算最短时间,就更复杂了,需要记录车次时间....
计算价格的话....如果同一路上有不同的车(空调车,普通车)...
还有如果有快车(停的站少)....如果不同时间段有不同的班次,停的站也不同的话.....
.....
.......
.........
等你搞完了,可以试试应聘google map类似项目...:)









------解决方案--------------------
给个例子;
http://tech.ddvip.com/2009-02/1234417065108419.html
http://tech.ddvip.com/2009-02/1234598725108794.html楼主参考下。
------解决方案--------------------
比较简单的存储方式
线路号
上下行
站名组 沿线路方向以逗号分隔的站名

如果你打算今后与地图关联,结构要稍微复杂点
线路号
上下行
第几站
站名
站点坐标x
站点坐标y

数据组织的不同使用的查询算法也不同
------解决方案--------------------
1.车次 编号 型号 出发地 目的地
2.编号 上下行 途经
3.编号 费用 


公交系统应该蛮复杂的,最好了解清楚运作,然后再分开设计表内容,方便以后开发.经验不多就说这么些
------解决方案--------------------

SQL code
CREATE TABLE IF NOT EXISTS `buss` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `bus` int(11) NOT NULL,  `line` varchar(200) NOT NULL,  PRIMARY KEY (`id`)) ENGINE=MyISAM  DEFAULT CHARSET=gbk AUTO_INCREMENT=3 ;---- 转存表中的数据 `buss`--INSERT INTO `buss` (`id`, `bus`, `line`) VALUES(1, 2, '青山路,八一路,上海路'),(2, 3, '凝注路,八一路,上海路');<br><font color="#e78608">------解决方案--------------------</font><br>我只给了你直达和一次换乘的基本算法<br>而你这是二次换乘了<br>你需要将由起点出发的所有线路的经过站作为起点,一次对他们做:直达或一次换乘的查询<br><br>对你示例的数据,就是分别将 青山路,八一路,上海路,高新 作为起点<br>最后将得到  <br>青山路 -> 高新 -> 新建一路 -> 新建二路<br><br><font color="#e78608">------解决方案--------------------</font><br>楼主显然没有去搜索一下"Dijkstra算法"<div class="clear">
                 
              
              
        
            </div>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn