Untitled
unknown
mysql
2 years ago
3.3 kB
10
Indexable
-- Створення таблиці "Клієнти"
CREATE TABLE Клієнти (
Id INT PRIMARY KEY,
ПІБ VARCHAR(255),
Посвідчення_водія VARCHAR(255),
Дата_отримання_посвідчення_водія DATE
);
-- Створення таблиці "Моделі"
CREATE TABLE Моделі (
Id INT PRIMARY KEY,
Назва_моделі VARCHAR(255),
Марка VARCHAR(255),
Ціна_за_день_оренди DECIMAL(10, 2),
Місткість INT,
Тип_кузова VARCHAR(255)
);
-- Створення таблиці "Автомобілі"
CREATE TABLE Автомобілі (
Id INT PRIMARY KEY,
Держномер VARCHAR(20),
Рік_випуску INT,
Колір VARCHAR(255),
Стан VARCHAR(255),
Пробіг INT,
Модель_Id INT,
FOREIGN KEY (Модель_Id) REFERENCES Моделі(Id)
);
-- Створення таблиці "Договори_на_оренду"
CREATE TABLE Договори_на_оренду (
Id INT PRIMARY KEY,
Клієнт_Id INT,
Автомобіль_Id INT,
Дата_укладення_договору DATETIME,
Тривалість_договору NUMERIC(3, 0),
Вартість_договору DECIMAL(10, 2),
Дата_повернення DATETIME,
FOREIGN KEY (Клієнт_Id) REFERENCES Клієнти(Id),
FOREIGN KEY (Автомобіль_Id) REFERENCES Автомобілі(Id)
);
-- Створення таблиці "Оренда_Автомобілів"
CREATE TABLE Оренда_Автомобілів (
Договір_Id INT,
Автомобіль_Id INT,
PRIMARY KEY (Договір_Id, Автомобіль_Id),
FOREIGN KEY (Договір_Id) REFERENCES Договори_на_оренду(Id),
FOREIGN KEY (Автомобіль_Id) REFERENCES Автомобілі(Id)
);
-- Перевірка на термін дії водійського посвідчення
DELIMITER //
CREATE TRIGGER Перевірка_терміну_посвідчення
BEFORE INSERT ON Договори_на_оренду
FOR EACH ROW
BEGIN
DECLARE дія DATE;
SELECT Дата_отримання_посвідчення_водія INTO дія FROM Клієнти WHERE Id = NEW.Клієнт_Id;
IF DATE_ADD(дія, INTERVAL 10 YEAR) < NOW() THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Термін дії посвідчення закінчився';
END IF;
END;
//
DELIMITER ;
DELIMITER //
CREATE TRIGGER check_duration_trigger
BEFORE INSERT ON Договори_на_оренду
FOR EACH ROW
BEGIN
DECLARE duration_period INT;
SET duration_period = DATEDIFF(NEW.Дата_повернення, NEW.Дата_укладення_договору);
IF NEW.Тривалість_договору < duration_period THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Тривалість договору не може бути менше періоду від укладення до повернення';
END IF;
END;
//
DELIMITER ;
ALTER TABLE Клієнти
ADD COLUMN QR_код VARCHAR(255);
ALTER TABLE Моделі
MODIFY COLUMN Ціна_за_день_оренди DECIMAL(12, 2);Editor is loading...
Leave a Comment