Вы задали два вопроса:
Поле 'id' является хорошим соглашением в качестве уникальной идентификации строки. Это не обязательно, и некоторые данные, которые имеют свой уникальный серийный номер для каждой строки, будут использовать этот серийный номер. Программы часто хотят искать всю запись по уникальной идентификации строки, поэтому поле должно быть первичным ключом. Обычно используемое предложение для создания идентификатора: «id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id)». Уникальный идентификатор будет назначаться автоматически при каждом добавлении новой записи. См. Tizag MySQL Tutorial для подробного описания. Лично некоторые называют их "_id", например, "route_id", "bus_id", и ваш стиль может отличаться.
Размещение ваших данных зависит от того, что вы хотите с ними делать. Я предполагаю, что для каждого автобусного маршрута вы хотите найти следующий автобус на определенной остановке через некоторое время, а затем, когда этот автобус прибывает на какую-то следующую остановку. Каждый маршрут имеет много остановок; остановка может быть разделена между маршрутами; маршрут меняется в течение дня, пропуская некоторые остановки; маршруты идут в двух направлениях; и т. д. Я бы добавил абстракцию «пробег», когда один автобус проезжает через остановки от начала до конца.
Мое первое предположение при его изложении было бы:
Маршрут автобуса имеет название, номер и другую информацию: "Красный № 1", "Юг и Запад", "Муни SF", "map: // ..."
Остановка имеет уникальное имя и другую информацию: "North Grand Mall". «Юг», «Под вишней, к западу от Гранд-авеню».
Прогон имеет номер маршрута, дни недели, направление, может быть порядковый номер прогона в этом направлении в тот день, может быть время начала / остановки для прогона: "63 (route_id для # 1 Red) "," обратное направление "," MTWRF "(рабочие дни)," 2 "(2-й прогон)," 7:00 "," 7:36 ".
Тогда у вас есть таблица расписания «Run_id», «Stop_id», «Stop Sequence Number», «Time».
Запишите вашу запланированную схему, а затем начните пытаться писать схемы для них. Не удивляйтесь паре множественных объединений "SELECT * из Schedule как S, Run как R, Bus как B для B ... ГДЕ B.id == R.bus_id и S.run_id == R.id и B .id = (запрошенная шина) и S.time> = now () и .... "Вы денормализуете производительность после того, как она заработает.
Это все мои бесплатные советы. :)