Никогда не разрабатывал базы данных с нуля, в основном работал на готовых. Но теперь понадобилось это сделать.
Вроде со всем разобрался, но остались некоторые воспросы. Суть в том, что надо создать грамотную структуру БД.
БД должна состоять из трех таблиц
Организация
Автомобили
Водители
У одной организации может быть несколько автомобилей - с этим понятно, организовываем связь один ко многим
За каждым водителем может быть закреплен 1 автомобиль, или на каждом автомобиле может быть только один водитель - вот в этом вопросе возникают сложности, ибо автомобиль может быть просто без водителя, типа стоит в парке и не работает.
Вот как мне организовать базу данных с внешними ключами и ненарушить целостность БД, чтобы выполнялись следующие условия:
1. Водителя можно удалить из базы данных
2. Водителя можно пересадить с одной машины на другую
3. Автомобиль можно перенести из одной организации в другую
4. Автомобиль может быть удален
Пока сделать такую структуру:
- Код: Выделить всё
CREATE TABLE firms (
FirmsID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
FirmsIndex VARCHAR (255) NOT NULL,
FirmsAddress VARCHAR (255) NOT NULL,
FirmsOGRN VARCHAR (255) NOT NULL,
FirmsINN VARCHAR (255) NOT NULL,
FirmsPhone VARCHAR (255) NOT NULL,
FirmsDisp VARCHAR (50),
Cars_ID INTEGER NOT NULL,
FOREIGN KEY (Cars_ID) REFERENCES cars(CarsID));
CREATE TABLE cars (
CarsID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
CarsName VARCHAR (50) NOT NULL,
CarsNumber VARCHAR (50) NOT NULL,
CarsLic VARCHAR (50) NOT NULL,
CarsGrant VARCHAR (50) NOT NULL,
Drivers_ID INTEGER NULL,
FOREIGN KEY (Drivers_ID) REFERENCES drivers (DriversID));
CREATE TABLE drivers (
DriversID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
DriversFIO VARCHAR (100) NOT NULL,
DriversPrava VARCHAR (50) NOT NULL);
Но что-то мне подсказывает что я сделал что-то неправильно, особенно с внешними ключами.
И как правильно в моем случае связывать машину с водителем или водителя с машиной?
В идеале должно работать так:
Механик выбирает из списка водителя и видит инфу о машине и организации, за которой закреплена машина.
Начальник колонны имеет право цволить водителя, закрепить машину за другой организацией и удалить машину.