如何设计这个“公交车站”数据库?

时间:2009-12-09 04:01:15

标签: mysql database

我想设计一个关于公交车站的数据库。这个城市大约有60辆公共汽车,每一辆都包含这些信息:

  • BusID
  • BusName
  • 路上的站点列表(前进和后退)

此数据库必须高效搜索,例如,当用户想要列出通过A和B站的公交车时,它必须快速运行。

在我的第一个想法中,我想将电台放在一个单独的表中,包括StationId和Station,然后电台列表将包含那些StationIds。我拜访它可能有用,但不确定它是否有效。

我该如何设计这个数据库?

非常感谢。

7 个答案:

答案 0 :(得分:11)

您是否查看了Database Answers以查看是否有符合您要求的架构?

答案 1 :(得分:5)

我必须解决这个问题而且我用过这个:

订单   - 号码   - 姓名

<强>站  - 名称   - 纬度   - 经度   - is_terminal

<强>度假   - 约会   - 说明

<强>路线   - line_id   - from_terminal:station_id   - to_terminal:station_id

路线时间表   - route_id   - is_holiday_schedule   - starting_at

路线停止   - route_id   - station_id   - enlapsed_time_from_start:以分钟为单位

它看起来对你有好处吗?

答案 2 :(得分:4)

根据伦敦公共汽车旅行的一些随机想法在我的青年时代,因为我认为这可能相当复杂。

您可能需要以下实体:

  1. 总线 - 具有特定模型的物理实体(即特定的座位容量和禁用的访问权限,以及尺寸等)和VIN。
  2. 巴士站 - 巴士停靠的地点。通常公共汽车站成对出现,道路的每一侧都有一个,但有时他们在单行道上。
  3. 路线 - 一系列公共汽车站及其之间的路线(存在多条可能的道路)。有时公共汽车不会运行整个路线,或者跳过停靠站(快速服务)。路线只是一个方向,还是两个方向?也许路线实际上是一个循环,而不是一个回来。
  4. 服务 - 遵循某条路线的公共汽车
  5. 预定运行 - 特定服务上的总线遵循特定路由的事件。它从路线的某个部分开始,在另一个部分结束,并且可能跳过某些停靠点(见3)。
  6. 实际运行 - 特定预定运行后的特定总线。什么时候开始,什么时候到达特定的站点,有多少人上下车,他们有什么样的票?

答案 3 :(得分:1)

(这听起来像是家庭作业,所以我不会给出完整的答案。)

似乎你只需要使用3个表之间的公共汽车和停靠点之间的多对多关系。具有两个内部联接的查询将为您提供在两个特定站点停止的总线。

答案 4 :(得分:1)

我会破解它。

bus_id          int
path            varchar(max)

如果公共汽车经过以下车站(按此顺序):

01
03
09
17
28

然后我将路径设置为

的记录放入
'-01-03-09-17-28-'

如果有人想要从03到28号车站找到公交车,那么我的选择声明是

select * from buses where path like '%-03-%-28-%'

不可扩展,不优雅,但死得很简单,并且在尝试寻找路线时不会像狂热的表一样流失。当然,它只有在有一条公共汽车通过这两个电台的情况下才有效。

答案 5 :(得分:0)

你所想的是好的,在某些情况下它可能有效也可能没有效率。我认为你应该创建表作为table1(BusID,BusName)表2(站点列表,总线ID)。我认为这会有所帮助。并尝试在这两个表之间使用连接来获得结果。如果可能的话还有一件事是尝试规范化可以帮助你的表格。

答案 6 :(得分:0)

我要去3张桌子:

总线 站 bus_stations

“bus”代表名称的含义,“station”代表工作站ID和名称,“bus_stations”连接其他2个表,具有bus_id,station_id_from station_id_to

这可能比你真正需要的更复杂,但是如果你需要知道公共汽车的完整轨迹,并且从巫婆站到达“B站”时会有一辆公共汽车,很有用。

但是,60辆公共汽车的性能不会对性能造成太大影响。