我需要有关如何建模数据库的帮助。我需要存储每条运输公共线路的时间表。让我们看看我们有什么......
我正在开发的计划的目的是检查官方时间表中的错误。每辆公交车都有一个跟踪GPS设备,每隔10秒将其位置发送到一个数据库。因此,我必须检查其坐标接近其中一个停靠点坐标的报告的小时,并将该时间与官方时间进行比较,如果存在很大差异,请在其他表STATISTICS中报告该问题。
无论如何,这只是针对上下文。事实是,我对如何以有效的方式存储它没有任何线索。
我考虑用Stops创建一个表:STOP_ID(PK) - NAME - LAT - LON - LINE - TIMETABLE
其中时间表是一个数组,其中包含为该站点序列化的所有时间[5:03,5:25,5:50,6:12,...]。
虽然我认为这不是一个好的解决方案,但我无法考虑更好的方法。
也许我可以为停靠点创建一个表,为时间表创建其他表,但是时间表的列是什么?我有很多变数......如果它是每周,周六或假日,那么很多小时,分钟......每一站都有不同的变化。
你能否分享一下如何解决这个问题?非常感谢!!
答案 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表,并且你已经将你的观察结果加载到观察表中,那么将你的观察结果与日程安排相关联将是一个有趣的练习。
小心!你可能会尴尬你的市政交通部门! : - )