Для расписания автобусов, я должен иметь одну таблицу данных для всех автобусов и хранить расписание в столбце, или создать отдельные таблицы для каждого автобуса? - PullRequest
1 голос
/ 14 февраля 2012

Мне просто нужно иметь возможность отображать время прибытия следующей пары автобусов, не планируйте никакого планирования поездки.

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

Какой способ будет более эффективным?

Ответы [ 2 ]

1 голос
/ 14 февраля 2012

В простейшей форме вам нужны три таблицы: одна для ваших автобусов, одна для их остановок и одна для расписаний.

create table bus (
    bus_id int -- primary key
,   route_name varchar(64)
)

create table stop (
    stop_id int -- primary key
,   bus_id int references bus(bus_id)
,   address_or_intersection varchar(128)
)

create table timetable (
    time_entry_id int -- primary key
,   stop_id int references stop(stop_id)
,   run_id int
,   stop_time time
)

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

bus:
bus_id    route_name
------    ----------
   1      red arrow

stop:
stop_id   bus_id   address
-------   ------   ---------
   1         1     Market St
   2         1     North Point
   3         1     Stockton

timetable:
time_entry_id   stop_id   run_id  stop_time
-------------   -------   ------  ---------
    1              1         1     06:15
    2              2         1     06:39
    3              3         1     07:05
    4              1         2     19:03
    5              2         2     19:30
    6              3         2     19:51
0 голосов
/ 14 февраля 2012

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

HTH, Bud

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