wolf47
@wolf47
Айтишник, немного програмирую на JS

Как привязать авто к водителю на SQL сервер базе данных?

Всем доброго времени суток!

Переписал свой проект с mean.js c базой данной mongodb на golang с базой mySQL, вопросы проекта задавал ранее

Над проектом работаю год, на фриланс нет бюджета, поэтому пишу сам, как могу.

Действительно с mySQL гораздо легче, а самое главное привычно.

Но у меня тут опять трабла, я когда то 2-3 года подрядят работал SQL, вытаскивал простые отчеты, делал простые операции обновление, удаление и добавление прямо в SQL. А вот никогда не пробовал на нем разрабатывать с нуля. Теперь опять здесь не могу правильно реализовать функцию привязки авто к водителю.

Суть вопроса:

Есть служба такси со своим автопарком, водителями в штате. Нужно привязать авто к водителю. Эта функция должна отвечать след требованиям:
- Водитель не может одновременно ездить на двух машинах;
- Авто не может быть привязан к 2 водителям.

Я создал таблицу carsDrivers из таблицы cars и drivers, она содержит след поля:
- id;
- driver_id;
- car_id;
- link_date (дата привязки).
- description (driver.mark +' '+driver.number+').

Текущую связку собираюсь забирать по след запросу:
SELECT * FROM car_driver 
Where driver_id = 2
Order by link_date desc
LIMIT 1


Но тут у меня вот такая проблема, я не знаю как обеспечить целостность (если так можно выразится), так чтобы таблица отвечала моим требованиям.

Даже правильно вопрос не могу сформулировать. Друзья помогите разобраться
  • Вопрос задан
  • 303 просмотра
Пригласить эксперта
Ответы на вопрос 3
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
1) Если запрос частый, а смена водителей редкая - хранить кто к какой машине привязан прямо сейчас явно. Дополнительно для истории хранить вашу табличку.

2) Если смена водителей частая (а в такси так бывает) - логично хранить не только время начала, но и время конца привязки, на уровне логики приложения следить что бы интервалы не пересекались.
Ответ написан
Комментировать
@zolotykh
web-разработчик
Вспомогательная таблица не нужна если привязка 1 к 1 на все время. Хранить id машины отдельно как написали или в таблице водителей.

Но правильнее все таки допустить возможность передачи машины в другие руки (перехода водителя на другое авто), тогда ваша созданная таблица подходит. И сведения о машине хранить в "разбитом" виде.
Ответ написан
Комментировать
водитель и одно из его авто в любой момент времени составляют экипаж
соответственно хранить эту связь в отдельной таблице
при смене машины обновлять состав экипажа
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы