Поскольку это транспортная компания, я понимаю, что route
- это обычная услуга. Чтобы решить вашу проблему, вам необходимо:
- определить случаи появления
route
в данный день. - каким-то образом связать
users
с ticket
, которое они купили .
Решение будет зависеть от того, что у вас уже есть.
В базе данных
Случай 1 : если ticket
- для конкретной даты c вы уже обратились к первому пункту. Если ticket
испускается для user
, вы решили второй вопрос. В этом случае ваша поездка представляет собой внутреннее соединение user
с ticket
и route
(и с любой другой таблицей, содержащей соответствующие данные, представляющие интерес). Никакой записи не требуется. В БД вы можете решить эту проблему с помощью CREATE VIEW, который всегда будет актуальным.
Случай 2 : Если какое-либо из вышеуказанных условий не выполняется (например, билет без date или анонимные билеты), вам нужно будет добавить таблицу trip
, содержащую недостающую информацию, например routeId, userId, ticketId, date_of_travel
. Вы также должны СОЗДАТЬ ВИД, чтобы объединить эти данные с другими таблицами и сделать все соответствующие данные, представляющие интерес, всегда доступными.
В вашей модели:
В первом случае вам придется ничего не делать в модели ER, поскольку поездка уже там (вероятно, в билете). Но на диаграмме классов UML вы можете показать класс поездки, связанный с другими, чтобы сделать видимость данных и отношений явной.
Во втором случае вы бы добавили связь «многие ко многим» между пользователем и билет с классом ассоциации для хранения дополнительной информации, которую необходимо записать