CREATE DATABASE IF NOT EXISTS autoservice
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE autoservice;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS Orders;
DROP TABLE IF EXISTS MechanicWork;
DROP TABLE IF EXISTS Contracts;
DROP TABLE IF EXISTS Clients;
DROP TABLE IF EXISTS Works;
DROP TABLE IF EXISTS Mechanics;
SET FOREIGN_KEY_CHECKS = 1;
CREATE TABLE Mechanics (
passport VARCHAR(20) PRIMARY KEY,
last_name VARCHAR(50) NOT NULL,
first_name VARCHAR(50) NOT NULL,
middle_name VARCHAR(50),
address VARCHAR(150),
phone VARCHAR(20)
) ENGINE=InnoDB;
CREATE TABLE Contracts (
contract_no INT PRIMARY KEY,
passport VARCHAR(20) NOT NULL UNIQUE,
sign_date DATE NOT NULL,
term_years INT NOT NULL,
is_terminated TINYINT NOT NULL DEFAULT 0,
term_date DATE,
FOREIGN KEY (passport) REFERENCES Mechanics(passport)
) ENGINE=InnoDB;
CREATE TABLE Works (
work_code INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
norm_hours DECIMAL(6,2),
cost DECIMAL(10,2),
price DECIMAL(10,2),
wage_fund DECIMAL(10,2)
) ENGINE=InnoDB;
CREATE TABLE MechanicWork (
passport VARCHAR(20) NOT NULL,
work_code INT NOT NULL,
PRIMARY KEY (passport, work_code),
FOREIGN KEY (passport) REFERENCES Mechanics(passport),
FOREIGN KEY (work_code) REFERENCES Works(work_code)
) ENGINE=InnoDB;
CREATE TABLE Clients (
client_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(150) NOT NULL,
address VARCHAR(150),
phone VARCHAR(20),
car VARCHAR(50),
login VARCHAR(50) UNIQUE,
password VARCHAR(50)
) ENGINE=InnoDB;
CREATE TABLE Orders (
order_no INT PRIMARY KEY,
client_id INT NOT NULL,
work_code INT NOT NULL,
order_date DATE NOT NULL,
done_date DATE,
qty INT NOT NULL DEFAULT 1,
FOREIGN KEY (client_id) REFERENCES Clients(client_id),
FOREIGN KEY (work_code) REFERENCES Works(work_code)
) ENGINE=InnoDB;
INSERT INTO Mechanics VALUES
('4500111222','Иванов','Иван','Иванович','ул. Ленина, 1','79001112233'),
('4500333444','Петров','Пётр','Петрович','ул. Мира, 5','79004445566');
INSERT INTO Contracts (contract_no,passport,sign_date,term_years,is_terminated,term_date) VALUES
(1,'4500111222','2024-01-10',2,0,NULL),
(2,'4500333444','2024-03-01',1,0,NULL);
INSERT INTO Works VALUES
(101,'Замена масла',1.0,300,1000,400),
(102,'Ремонт тормозов',3.0,1500,4000,1600),
(103,'Диагностика двигателя',2.0,800,2500,1000);
INSERT INTO MechanicWork VALUES
('4500111222',101),('4500111222',102),('4500333444',102),('4500333444',103);
INSERT INTO Clients (client_id,name,address,phone,car,login,password) VALUES
(1,'Сидоров Алексей','ул. Садовая, 7','79007778899','Lada Vesta А123ВС','sidorov','1234'),
(2,'ООО Логистика','пр. Победы, 20','78005550000','ГАЗель Х777ОР','logistika','5678');
INSERT INTO Orders VALUES
(1,1,101,'2024-05-01','2024-05-01',1),
(2,1,102,'2024-05-10',NULL,1),
(3,2,103,'2024-05-12','2024-05-13',2),
(4,2,101,'2024-05-15','2024-05-15',3);