2011-02-23 78 views
0

我们正在创建人们搜索和预订座位的巴士服务的网络应用程序。我们想给他/她可以指定经常性旅行的管理员提供用户界面。数据库设计:为循环事件创建数据库和用户界面

例如沃尔沃客车每天早上9点从星期一开往城市2,星期二除外。可以有任何数量的这样的标准。

我应该如何存储这样不同的重复旅行,可以搜索没有perfomance命中?它应该如何在UI中表现出来,这对管理员来说很容易处理。

当前数据库的设计:

Table : TRIP_MASTER 
TRIP_ID 
NAME 

Table : TIMETABLE 
ID 
TRIP_ID 
CITY_ID 
ARRIVAL_TIME 
DEPARTURE_TIME 
SEQ_NO 
+0

我想“每天早上9:00接受星期二”=>“每天上午9:00 *除*星期二”? – 2011-02-23 11:29:43

+0

假设我从City1到City2的一次经常性旅行发生在周二 - 例如,当前有* no *公交计划在这两个城市之间运行的那一天。我应该被允许指定那种经常旅行吗? – 2011-02-23 12:06:06

回答

2

你的选择是:a)存储表示重复行的每次出现(因为你可能会填充一个日历表,表示一年中的每一天一排的实体),一利用SQL的方法或b)存储表示重复计划的规则,这将在整个应用程序中需要更多的程序代码。我赞成选项a),即使它需要例程来定期填充trip事件表。

+0

我会选择a)。我认为我们需要像谷歌日历定期事件对话框那样提供用户界面,并将所有规则存储在数据库中的某个地方。用户保存规则时,请在TIMETABLE中相应地创建计划。如果用户更改规则,请首先从TIMETABLE中删除所有记录,然后根据最新规则重新创建。 – 2011-02-23 12:10:43

+0

UI与数据库结构无关。数据库结构与UI相关。您必须为用户提供创建/定义路线的能力(例如,公交站的许多地方以及每个站的时间),但您如何在数据库中表示路线是UI不需要知道的事情关于。 – Tim 2011-02-23 14:00:20

+0

新的评论,因为5分钟过去了,我不能编辑另一个。我建议在给定的时间段内,例如一年中,您会为路线中的每个停靠点创建一个记录,例如每天在该地点停靠巴士,以及在每天的每个时间段内,例如,巴士每小时停在那里。想象一下,考古学家研究该路线停留时间表,然后从原始数据中推导出这个规则:Aha!这条路线从未在星期二运行。您可以从构成它的位置时间行实例化路线定义,并且路线停靠点的顺序在时间中隐含。 – Tim 2011-02-23 14:06:04