Разработка базы данных расписания автобусов - PullRequest
3 голосов
/ 21 апреля 2010

Я пытаюсь создать базу данных для хранения расписания для 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  

Ответы [ 3 ]

5 голосов
/ 21 апреля 2010

Нет, это не выглядит хорошо. Каждое значение времени маршрута / дня / остановки должно быть в отдельной строке:

 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, а затем использование этого значения вместо столбцов Route, Day и Run # в StopTimes. таблица.

В общем, когда у вас есть столбцы с индексами в конце (Time1, Time2 или Phone1, Phone2), это подсказка, что ваша база данных не разработана в соответствии с принципами нормализации.

Конечно, вы конвертируете данные в формат, который вы предложили для публикации.

3 голосов
/ 21 апреля 2010

Основами вашей системы являются автобус (или транспортное средство), остановки (по расписанию) и маршрут, подобный следующему:

автобус

bus_id
vehicle_type?
handicap_accessible?
и т.д ...

Стоп

stop_id
место
other_stop_attributes

Маршрут

route_id
stop_id
stop_order


Я думаю, вы перечислили бы все остановки в таблице маршрутов в том порядке, в котором вы хотите, чтобы они выполнялись. разделив его, вы сможете в будущем оптимизировать маршрут, если захотите или захотите.

Возможно, вы захотите иметь большую матрицу остановок, чтобы останавливать расстояния и время, что даст вам гибкость при разработке новых маршрутов. И, наконец, вы хотите, чтобы расписание сообщало, какой автобус будет на каком маршруте в какой день. все похоже на следующие примеры:

Stop_Stop

stop_1_id
stop_2_id
расстояние
время

Расписание

день недели
bus_id
route_id
start_time
1 голос
/ 06 октября 2010

Мне пришлось решить эту проблему, и я использовал это:

Line - число - имя

Station - название - широта - долгота - is_terminal

1012 * Праздник * - Дата - описание

Маршрут - line_id - from_terminal: station_id - to_terminal: station_id

Расписание маршрута - route_id - is_holiday_schedule - начальный_

Маршрутная остановка - route_id - station_id - enlapsed_time_from_start: в минутах

Вам это нравится?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...