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

StackOverflow https://stackoverflow.com/questions/2503759

  •  21-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь создать максимально эффективную базу данных, насколько это возможно.Все мои автобусные маршруты имеют около 10 остановок.Автобус отправляется с первого номера, пока не дойдет до 10-й остановки, затем возвращается снова.Этот цикл происходит 3 раза в день.

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

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

Возможно, я чего-то не понимаю, я только начал изучать SQL, и это поставленная перед нами задача.

Заранее благодарю.

Это было полезно?

Решение

Вам понадобится одна таблица, содержащая ваши Timetable:

  • Идентификатор маршрута
  • Идентификатор остановки
  • Время
  • Возможно, другие поля по мере необходимости (направление, последовательность #, блок # и т.д.)

Я бы рекомендовал создавать отдельные таблицы Bus Stop (для хранения названий остановок, широты / длины и т.д.) И Route (чтобы сохранить название маршрута, первую остановку, последнюю остановку, направление и т.д.).

Вероятно, вы уже знаете об этом, но планирование движения автобусов может очень быстро усложниться.Например:

  • Возможно, вам потребуется обозначить определенные остановки как "Временные точки", которые отображаются в распечатанных расписаниях

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

  • Расписание, вероятно, будет отличаться в субботу и воскресенье, и большинство агентств меняют свои расписания ежеквартально

Возможно, вам потребуется рассмотреть некоторые из этих случаев и встроить их в свою схему.

Помогает ли это?

Другие советы

Вот лишь один (из многих) способов сделать это:

Это звучит так, как будто вы, вероятно, хотите иметь routes таблица, которая описывает каждый маршрут и имеет время начала.

Затем, a stops таблица с описанием и временем ожидания автобуса на каждой остановке.

A stopDistanceMapping в таблице будет описано расстояние между двумя остановками и время в пути между ними.

Наконец, ваш routeMap таблица свяжет отдельные routes с перечнем stops.Затем вы можете заполнить свой routes таблица расстояния и времени при использовании времени ожидания от каждой отдельной остановки, а также времени / расстояний от stopDistanceMapping.

Удачи вам!

На (очень грубом) 1-м проходе я бы сохранил время следования автобуса в таблице, подобной этой:

RouteID StartingLocationID  EndingLocationID TravelTime

Также я бы вел таблицу остановок, таких как:

StopID Address City etc... (whatever other information you need about each location)

Для самих маршрутов я бы сохранил:

RouteID StartingLocationID RouteStartTime

Очевидно, что вы должны адаптировать это к своим собственным потребностям, но это должно дать вам с чего начать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top