sql - 公交时刻表数据库设计

标签 sql mysql database-design timetable

我正在尝试设计一个数据库来存储 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  

最佳答案

不,它看起来不太好。每个路线/日期/停止时间值应在单独的行中:

 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),则表明您的数据库未根据规范化原则设计。

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

关于sql - 公交时刻表数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2678714/

相关文章:

php - 在页面拆分输出中合并来自不同表的搜索结果

MySql vs NoSql - 社交网络评论和通知数据结构和实现

sql - 数据库设计 : how to avoid serialization when data structure is not static

mysql - 查找 mysql "SELECT MIN(Celsius)"的日期/时间

php - 实现我的第一个 PHP 模型

database - 同一张表中的多对多关系?

sql - Postgres : use of CASE and ANY() in WHERE clause

MySQL - "view"表示特定单元格

mysql - MySQL中如何确定一组的第一个结果?

php - HTML 表单 GET 结果显示在目标 div 中,然后立即消失