Дайте совет в проектировании системы бронирования-покупки билета на автобусы. Моя структура выглядит следующим образом:
Меня интересуют такие моменты:
Лучше никак не хранить. По-хорошему, у вас должны быть следующие сущности:
STATION - станция (есть). Это справочник точек маршрутов.FLIGHT - рейс (есть). Это абстрактый рейс как "вещь в себе".FLIGHT_ROUTE - состав маршрута, то есть список станций, посещаемых автобусом. Он должен содержать FLIGHT_ID - ссылку на маршрут, STATION_ID - ссылка на станцию, ARRIVAL_TIME, DEPARTURE_TIME - время прибытия и отправления. Ну можно еще порядковый номер добавить, но это в принципе лишнее. Выбирая первую и последнюю по времени станцию для данного FLIGHT_ID, вы получите пункт отправления и назначения.FLIGHT_RUN - конкретный выезд в рейс. К нему вы будете привязывать билеты, автобусы, плановую и фактическую дату/время отправления.FLIGHT_TICKET - фактически продаваемые билеты на конкретный рейс и дату. Там будет ссылка на рейс (FLIGHT_RUN) и на покупателя (CLIENT).FLIGHT_TICKET.Как уже сказали в комментариях, это не задача программирования, это бизнес-задача. Но если это учебный проект и вопрос отдали на ваше усмотрение, можно взять часто используемый вариант разбивания на зоны. Делите станции по зонам, цена билета равна (некоторая фиксированная сумма) * (N зоны А - N зоны Б).
В принципе, ответил выше. Остается только добавить номер места в таблицу FLIGHT_TICKET.
Не важно. Хорошо - это когда все работает быстро, удобно и без косяков. Плохо - когда наоборот. Сколько вам нужно внешних ключей, чтобы заработало хорошо, столько и делайте.
И еще. У вас часть сущностей названа во множественном числе, а часть - в единственном. Выработайте какой-то один стиль и работайте в нем - проще будет запоминать.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости