3

300の異なるバス路線の時刻表を保存するデータベースを設計しようとしています。各路線には、月曜日から金曜日、土曜日、日曜日の停車地の数と時刻が異なります。各ルートのバスの出発時刻を次のように表しています。テーブルにnull値を含める必要があるかどうかわかりませんが、これは問題ないように見えますか?

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, 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
Vehicle_type?
handicap_accessible?
等...

止まる

stop_id
の場所
other_stop_attributes?

ルート

route_id
stop_id
stop_order


ルートテーブル内のすべての停車地を、発生させたい順序でリストすると思います。これを分離することで、必要に応じて、将来的に他のルート最適化を行うことができます。

新しいルートを柔軟に設計できるように、距離と時間を停止するための停止の大きなマトリックスが必要になる場合があります。そして最後に、どのバスがどの日にどのルートにあるかを示すスケジュールが必要になります。すべて次の例に似ています。

Stop_Stop

stop_1_idstop_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 に答える