如何在MYSQL中存储很多不同的时间表?

时间:2013-06-12 21:22:26

标签: mysql database timetable

我需要有关如何建模数据库的帮助。我需要存储每条运输公共线路的时间表。让我们看看我们有什么......

我正在开发的计划的目的是检查官方时间表中的错误。每辆公交车都有一个跟踪GPS设备,每隔10秒将其位置发送到一个数据库。因此,我必须检查其坐标接近其中一个停靠点坐标的报告的小时,并将该时间与官方时间进行比较,如果存在很大差异,请在其他表STATISTICS中报告该问题。

无论如何,这只是针对上下文。事实是,我对如何以有效的方式存储它没有任何线索。

我考虑用Stops创建一个表:STOP_ID(PK) - NAME - LAT - LON - LINE - TIMETABLE

其中时间表是一个数组,其中包含为该站点序列化的所有时间[5:03,5:25,5:50,6:12,...]。

虽然我认为这不是一个好的解决方案,但我无法考虑更好的方法。

也许我可以为停靠点创建一个表,为时间表创建其他表,但是时间表的列是什么?我有很多变数......如果它是每周,周六或假日,那么很多小时,分钟......每一站都有不同的变化。

你能否分享一下如何解决这个问题?非常感谢!!

1 个答案:

答案 0 :(得分:2)

正如西蒙所说,你正在开展一个大项目。

建议:阅读关系DBMS的各种常规表格;如果你没有它,这将为你提供一些有用的背景。

您的实体(表格)是什么? 公交线路(考虑出境旅程和往返旅程是两条不同的线路)。 订购这些线路的车站。 旅行(例如106路巴士于05:22离开中央火车站,另一路在05:42离开,等等)。 计划,停止 GPS观测。

以下是可能的表格和列:

 Busline table:   one row for each busline.   
   Busline  e.g. 106-outbound or 108-inbound   (pk)
   Description

 Station table:   one row for each bus stop, including ends of trips
   Busline        part of pk, fk to Busline  e.g. 106
   Stationid      part of pk  kf to Station 
   Description    e.g. Second Avenue Eastbound at Houston Street
   lat
   long

 Trip table: One row for each bus trip.
   Tripid   pk
   Busline  fk to Busline
   Description  e.g.   05:22 trip Central Station to University Park

 Schedule table:  one row for each scheduled time for each trip at each stop 
   Scheduleid  pk ... ascending serial number.
   Busline     fk to Station
   Stationid   fk to Station
   Tripid      fk to Trip
   Time

 Observation table  a row for each of your GPS readings
   Observationid  pk  ... ascending serial number
   Busline if you know it   fk to Busline
   Tripid if you have it    fk to Trip
   Time
   Lat
   Long

我对RDBMS设计的建议是避免将多个数据项序列化为单个DBMS列。这就是我建议使用Schedule表的原因。

一旦你弄清楚如何加载你的Busline,Station,Trip和Schedule表,并且你已经将你的观察结果加载到观察表中,那么将你的观察结果与日程安排相关联将是一个有趣的练习。

小心!你可能会尴尬你的市政交通部门! : - )