3

我正在尝试设计一个数据库来存储 300 条不同公交路线的时间表,每条路线在周一至周五、周六和周日都有不同的停靠点和不同的时间。我已经将每条路线的巴士出发时间表示如下,我不确定我是否应该在表中包含空值,这看起来可以吗?

route,Num,Day,    t1,   t2,   t3,    t4    t5      t6      t7      t8     t9    t10 

117, 1, Monday,   9:00, 9:30, 10:50, 12:00, 14:00  18:00   19:00   null   null   null
117, 2, Monday,   9:03, 9:33, 10:53, 12:03, 14:03  18:03   19:03   null   null   null
117, 3, Monday,   9:06, 9:36, 10:56, 12:06, 14:06  18:06   19:06   null   null   null
117, 4, Monday,   9:09, 9:39, 10:59, 12:09, 14:09  18:09   19:09   null   null   null
.
.
.
117, 20, Monday,   9:39, 10.09, 11:39, 12:39, 14:39  18:39   19:39   null   null   null
119, 1, Monday,   9:00, 9:30, 10:50, 12:00, 14:00  18:00   19:00   20:00  21:00  22:00
119, 2, Monday,   9:03, 9:33, 10:53, 12:03, 14:03  18:03   19:03   20:03  21:03  22:03
119, 3, Monday,   9:06, 9:36, 10:56, 12:06, 14:06  18:06   19:06   20:06  21:06  22:06
119, 4, Monday,   9:09, 9:39, 10:59, 12:09, 14:09  18:09   19:09   20:09  21:09  22:09
.
.
.
119, 37, Monday,   9:49, 9:59, 11:59, 12:59, 14:59  18:59   19:59   20:59  21:59  22:59
139, 1, Sunday,   9:00, 9:30,  20:00  21:00  22:00  null   null     null    null   null  
139, 2, Sunday,   9:03, 9:33,  20:03  21:03  22:03  null   null     null    null   null  
139, 3, Sunday,   9:06, 9:36,  20:06  21:06  22:06  null   null     null    null   null  
139, 4, Sunday,   9:09, 9:39,  20:09  21:09  22:09  null   null     null    null   null  
.
.
.
139, 20, Sunday,   9:49, 9:59, 20:59  21:59  22:59  null   null     null    null   null  
4

3 回答 3

5

不,看起来不太好。每个 Route/Day/Stop 时间值应位于单独的行中:

 Route, Day, Run #, Stop #, Time

 117, Monday, 1, 1, 9:00
 117, Monday, 1, 2, 9:30
 117, Monday, 1, 3, 10:50
 117, Monday, 1, 4, 12:00
 . . . Finish Run #1 . . .
 117, Monday, 2, 1, 9:03
 117, Monday, 2, 2, 9:33
 117, Monday, 2, 3, 10:53
 117, Monday, 2, 4, 12:03

等等

理想情况下,您将有一个单独的表,其中包含 Route、Day、Run # 并将它们分配给唯一的 RunID 整数值,然后使用该值代替 StopTimes 表中的 Route、Day 和 Run # 列。

通常,当您的列末尾有索引号(Time1、Time2 或 Phone1、Phone2)时,这表明您的数据库不是根据规范化原则设计的。

当然,您会将数据转换为您建议的发布格式。

于 2010-04-20T21:24:15.220 回答
3

您的系统的基础是公共汽车(或车辆)、停靠点(预定的)和类似于以下的路线:

公共汽车

bus_id 车辆类型

障碍访问?
ETC...

停止

stop_id
位置
other_stop_attributes?

路线

route_id
stop_id
stop_order


我认为您会按照您希望它们发生的顺序列出路线表中的所有站点。如果您愿意或需要,将其分离后,您可以在未来进行其他路线优化。

您可能希望有一个大的停止矩阵来停止距离和时间,这将使您能够灵活地设计新路线。最后,您需要一个时间表来说明哪辆巴士将在哪一天在哪条路线上行驶。都类似于以下示例:

停止_停止

stop_1_id
stop_2_id
距离
时间

日程

day_of_week
bus_id
route_id
start_time

于 2010-04-20T21:47:45.003 回答
1

我必须解决这个问题,我使用了这个:

号-名称

- 名称 - 纬度 - 经度 - 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 :以分钟为单位

它看起来适合你吗?

于 2010-10-06T15:15:58.673 回答