Схема консультации для системы бронирования микроавтобусов - PullRequest
1 голос
/ 18 февраля 2012

Я работаю с CakePHP 2.0 и MySQL.

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

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

Каждый микроавтобус может иметь много (16) пассажиров.Пассажир может путешествовать на более чем одном микроавтобусе (один сегодня, один завтра и т. Д.).

Кроме того, мне нужно иметь возможность установить тип пассажира для пассажира или водителя.Для этого понадобятся три таблицы?Я думал:

Buses table (id, description)
Users table (id, firstName)
Passengers table (buses.id, users.id, passenger_type)

Любой совет будет оценен.

Ответы [ 3 ]

2 голосов
/ 18 февраля 2012

Думаю, я бы представил таблицу Trip и назначил бы шину для экземпляра Trip. Затем введите таблицу соединений, чтобы разрешить отношения «многие ко многим» между рейсами и пассажирами.

enter image description here

0 голосов
/ 18 февраля 2012

Это будет выглядеть примерно так:

Один стол для хранения вместимости микроавтобуса. (CapacityId)

Одна таблица для хранения информации о пассажирах. (PassengerId, имя, адрес и т. Д.)

Одна таблица для хранения информации о микроавтобусе. (MiniBusId, CapacityId, Марка, Модель, Год, Цвет и т. Д.)

Одна таблица для BookingInformation (BookingId, даты, времени, FromDestination, ToDestination и т. Д.)

Одна таблица для TripSchedule (TripId, BookingId, MinibusId) (Только если у вас есть несколько автобусов на бронирование, в противном случае вы можете добавить MiniBusId в таблицу BookingInformation и избавиться от этой таблицы)

Одна таблица ссылок для хранения TripId и PassengerId. (Если у вас есть только один микроавтобус на бронирование, добавьте BookingId вместо TripId)

0 голосов
/ 18 февраля 2012

Учитывая, что один микроавтобус может обслуживать много пассажиров, а один пассажир может ездить по многим маршрутам микроавтобуса, то у вас есть отношение многие ко многим (m-to-n).Вам понадобятся три таблицы: одна для Пассажира, одна для Микроавтобуса и одна, которая связывает первые две с помощью ключевых ассоциаций:

Passenger_Minibus
------------------ 
PassengerID INT NOT NULL 
MinibusID INT NOT NULL
...