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