Как вести учет Поездок, совершенных в транспортной компании? - PullRequest
1 голос
/ 06 августа 2020

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

  • route (routeID, start, destination, carId)
  • user (userId, routeId, ...)
  • ticket (ticketID, routeID ..)
  • car (carID, ownerID)
  • владелец (ownerID ..)

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

Возможно запрос с INNER JOIN может показать мне то, что я хочу, но он ничего не будет записывать, так что какая структура МОДЕЛЬ / таблица лучше всего подходит для этой ситуации.

Надеюсь, я сделал это настолько ясно, насколько это возможно. Большое спасибо за ваше внимание.

1 Ответ

1 голос
/ 07 августа 2020

Поскольку это транспортная компания, я понимаю, что 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 вы можете показать класс поездки, связанный с другими, чтобы сделать видимость данных и отношений явной.

Во втором случае вы бы добавили связь «многие ко многим» между пользователем и билет с классом ассоциации для хранения дополнительной информации, которую необходимо записать

...