CREATE TABLE IF NOT EXISTS `Справка`
(
`ИД` INT AUTO_INCREMENT PRIMARY KEY,
`Код` INT NOT NULL,
`Слк` CHAR(3) NOT NULL,
`Название` VARCHAR(50) NOT NULL,
`Содержание` VARCHAR(100) NULL,
`ИД_родитель` INT NULL,
CONSTRAINT `Ун_СПР` UNIQUE (`Слк`, `Код`),
CONSTRAINT `Ун_СПР_ИД_Код` UNIQUE (`ИД`, `Код`),
CONSTRAINT `ВК1_СПР_СПР` FOREIGN KEY (`ИД_родитель`) REFERENCES `Справка` (`ИД`)
);
INSERT INTO `Справка` (`ИД`, `Код`, `Слк`, `Название`, `Содержание`, `ИД_родитель`)
VALUES
(1, 1, 'ДОЛ', 'оформитель', 'оформитель заказа', NULL),
(2, 2, 'ДОЛ', 'плановик', 'плановик заказа', NULL),
(3, 3, 'ДОЛ', 'менеджер', 'менеджер заказа', NULL),
(4, 4, 'ДОЛ', 'исполнитель', 'исполнитель работы', NULL);
SELECT * FROM `Справка`;
CREATE TABLE IF NOT EXISTS `Клиент_ПЕРС`
(
`ИД` INT AUTO_INCREMENT PRIMARY KEY,
`Код` INT NOT NULL UNIQUE,
`Паспорт` CHAR(10) NOT NULL UNIQUE,
`ФИО` VARCHAR(50) NOT NULL,
`Адрес` VARCHAR(150) NOT NULL
);
INSERT INTO `Клиент_ПЕРС` (`Код`, `Паспорт`, `ФИО`, `Адрес`) VALUES
(111, '8018234567', 'Петров Д. И.', 'ул. Менделеева 110, кв. 72'),
(112, '8020234457', 'Романов С. Ю.', 'ул. Батырская 8, кв. 48');
SELECT * FROM `Клиент_ПЕРС`;
CREATE TABLE IF NOT EXISTS `Вид_затраты_СПР`
(
`ИД` INT AUTO_INCREMENT PRIMARY KEY,
`Код_вида_затраты` INT NOT NULL UNIQUE,
`Название_вида_затраты` VARCHAR(100) NOT NULL
);
INSERT INTO `Вид_затраты_СПР` (`Код_вида_затраты`, `Название_вида_затраты`) VALUES
(1, 'Заработная плата'),
(2, 'Материальные затраты'),
(3, 'Транспортные расходы'),
(4, 'Командировочные расходы');
SELECT * FROM `Вид_затраты_СПР`;
CREATE TABLE IF NOT EXISTS `Вид_работы_СПР`
(
`ИД` INT AUTO_INCREMENT PRIMARY KEY,
`Код_вида_работы` INT NOT NULL UNIQUE,
`Название_вида_работы` VARCHAR(100) NOT NULL
);
INSERT INTO `Вид_работы_СПР` (`Код_вида_работы`, `Название_вида_работы`) VALUES
(1, 'Монтаж'),
(2, 'Сварочные работы'),
(3, 'Покраска'),
(4, 'Электромонтаж');
SELECT * FROM `Вид_работы_СПР`;
CREATE TABLE IF NOT EXISTS `Вид_задания_СПР`
(
`ИД` INT AUTO_INCREMENT PRIMARY KEY,
`Код_вида_задания` INT NOT NULL UNIQUE,
`Название_вида_задания` VARCHAR(100) NOT NULL
);
INSERT INTO `Вид_задания_СПР` (`Код_вида_задания`, `Название_вида_задания`) VALUES
(1, 'Проектирование'),
(2, 'Монтаж'),
(3, 'Диагностика'),
(4, 'Ремонт');
SELECT * FROM `Вид_задания_СПР`;
CREATE TABLE IF NOT EXISTS `Вид_условия_СПР`
(
`ИД` INT AUTO_INCREMENT PRIMARY KEY,
`Код_вида_условия` INT NOT NULL UNIQUE,
`Название_вида_условия` VARCHAR(100) NOT NULL
);
INSERT INTO `Вид_условия_СПР` (`Код_вида_условия`, `Название_вида_условия`) VALUES
(1, 'Гарантийное обслуживание'),
(2, 'Срочное выполнение'),
(3, 'Отложенный заказ'),
(4, 'Специальные условия');
SELECT * FROM `Вид_условия_СПР`;
CREATE TABLE IF NOT EXISTS `Вид_материала_СПР`
(
`ИД` INT AUTO_INCREMENT PRIMARY KEY,
`Код_вида_материала` INT NOT NULL UNIQUE,
`Название_вида_материала` VARCHAR(100) NOT NULL
);
INSERT INTO `Вид_материала_СПР` (`Код_вида_материала`, `Название_вида_материала`) VALUES
(1, 'Металл'),
(2, 'Древесина'),
(3, 'Пластик'),
(4, 'Композитные материалы');
SELECT * FROM `Вид_материала_СПР`;
CREATE TABLE IF NOT EXISTS `Вид_замечания_СПР`
(
`ИД` INT AUTO_INCREMENT PRIMARY KEY,
`Код_вида_замечания` INT NOT NULL UNIQUE,
`Название_вида_замечания` VARCHAR(100) NOT NULL
);
INSERT INTO `Вид_замечания_СПР` (`Код_вида_замечания`, `Название_вида_замечания`) VALUES
(1, 'Несоответствие чертежу'),
(2, 'Повреждение материала'),
(3, 'Ошибки в сборке'),
(4, 'Недостаточная прочность');
SELECT * FROM `Вид_замечания_СПР`;
CREATE TABLE IF NOT EXISTS `Сотрудник_ПЕРС`
(
`ИД` INT AUTO_INCREMENT PRIMARY KEY,
`Код` INT NOT NULL UNIQUE,
`Паспорт` CHAR(10) NOT NULL UNIQUE,
`Сведения` VARCHAR(150) NOT NULL,
`ИД_Слк` INT NOT NULL,
`ИД_Код` INT NOT NULL,
CONSTRAINT `ВК1_СПР_Сотрудник` FOREIGN KEY (`ИД_Слк`) REFERENCES `Справка` (`ИД`)
);
ALTER TABLE `Сотрудник_ПЕРС`
ADD CONSTRAINT `Ун_Сотрудник_Слк_Код` UNIQUE (`ИД_Слк`, `ИД_Код`);
INSERT INTO `Сотрудник_ПЕРС` (`Код`, `Паспорт`, `Сведения`, `ИД_Слк`, `ИД_Код`)
VALUES
(101, '8011234567', 'Отдел оформления', 1, 11),
(102, '2088234567', 'Отдел планирования', 2, 22),
(103, '8012344597', 'Отдел менеджмента', 3, 33),
(104, '8776234567', 'Отдел исполнения', 4, 44);
SELECT * FROM `Сотрудник_ПЕРС`;
CREATE TABLE IF NOT EXISTS `Оформитель_СОТ`
(
`ИД` INT AUTO_INCREMENT PRIMARY KEY,
`Код_ОФ_СОТ` INT NOT NULL UNIQUE,
`ФИО` VARCHAR(50) NOT NULL,
`ИД_Слк_родитель` INT NOT NULL,
`ИД_Код_родитель` INT NOT NULL,
CONSTRAINT `ВК1_ОФ_СОТ` FOREIGN KEY (`ИД_Слк_родитель`, `ИД_Код_родитель`)
REFERENCES `Сотрудник_ПЕРС` (`ИД_Слк`, `ИД_Код`)
);
INSERT INTO `Оформитель_СОТ` (`Код_ОФ_СОТ`, `ФИО`, `ИД_Слк_родитель`, `ИД_Код_родитель`)
VALUES
(101, 'Сидоров П. Н.', 1, 11);
SELECT * FROM `Оформитель_СОТ`;
CREATE TABLE IF NOT EXISTS `Плановик_СОТ`
(
`ИД` INT AUTO_INCREMENT PRIMARY KEY,
`Код_ПЛАН_СОТ` INT NOT NULL UNIQUE,
`ФИО` VARCHAR(50) NOT NULL,
`ИД_Слк_родитель` INT NOT NULL,
`ИД_Код_родитель` INT NOT NULL,
CONSTRAINT `ВК1_ПЛАН_СОТ` FOREIGN KEY (`ИД_Слк_родитель`, `ИД_Код_родитель`)
REFERENCES `Сотрудник_ПЕРС` (`ИД_Слк`, `ИД_Код`)
);
INSERT INTO `Плановик_СОТ` (`Код_ПЛАН_СОТ`, `ФИО`, `ИД_Слк_родитель`, `ИД_Код_родитель`)
VALUES
(102, 'Иванов А. В.', 2, 22);
SELECT * FROM `Плановик_СОТ`;
CREATE TABLE IF NOT EXISTS `Менеджер_СОТ`
(
`ИД` INT AUTO_INCREMENT PRIMARY KEY,
`Код_МЕН_СОТ` INT NOT NULL UNIQUE,
`ФИО` VARCHAR(50) NOT NULL,
`ИД_Слк_родитель` INT NOT NULL,
`ИД_Код_родитель` INT NOT NULL,
CONSTRAINT `ВК1_МЕН_СОТ` FOREIGN KEY (`ИД_Слк_родитель`, `ИД_Код_родитель`)
REFERENCES `Сотрудник_ПЕРС` (`ИД_Слк`, `ИД_Код`)
);
INSERT INTO `Менеджер_СОТ` (`Код_МЕН_СОТ`, `ФИО`, `ИД_Слк_родитель`, `ИД_Код_родитель`)
VALUES
(103, 'Петров С. Г.', 3, 33);
SELECT * FROM `Менеджер_СОТ`;
CREATE TABLE IF NOT EXISTS `Исполнитель_СОТ`
(
`ИД` INT AUTO_INCREMENT PRIMARY KEY,
`Код_ИСП_СОТ` INT NOT NULL UNIQUE,
`ФИО` VARCHAR(50) NOT NULL,
`ИД_Слк_родитель` INT NOT NULL,
`ИД_Код_родитель` INT NOT NULL,
CONSTRAINT `ВК1_ИСП_СОТ` FOREIGN KEY (`ИД_Слк_родитель`, `ИД_Код_родитель`)
REFERENCES `Сотрудник_ПЕРС` (`ИД_Слк`, `ИД_Код`)
);
INSERT INTO `Исполнитель_СОТ` (`Код_ИСП_СОТ`, `ФИО`, `ИД_Слк_родитель`, `ИД_Код_родитель`)
VALUES
(104, 'Стрельников К. М.', 4, 44);
SELECT * FROM `Исполнитель_СОТ`;
CREATE TABLE IF NOT EXISTS `Заказ_СПР`
(
`ИД` INT AUTO_INCREMENT PRIMARY KEY,
`Регномер_заказа` INT NOT NULL UNIQUE,
`Дата_заказа` DATE NOT NULL,
`Описание` VARCHAR(255) NOT NULL,
`ИД_клиента` INT NOT NULL, -- Внешний ключ на ИД клиента
CONSTRAINT `ВК1_ЗАКАЗ_СПР` FOREIGN KEY (`ИД_клиента`) REFERENCES `Клиент_ПЕРС` (`Код`)
);
INSERT INTO `Заказ_СПР` (`Регномер_заказа`, `Дата_заказа`, `Описание`, `ИД_клиента`) VALUES
(1001, '2024-03-01', "Заказ на установку оборудования", 111),
(1002, '2024-03-05', "Заказ на ремонт техники", 112),
(1003, '2024-03-10', "Дополнительный заказ", 111),
(1004, '2024-03-15', "Аварийный ремонт", 112);
SELECT "`Заказ_СПР` Table Content:" FROM `Заказ_СПР` WHERE 1=0;
SELECT * FROM `Заказ_СПР`;
CREATE TABLE IF NOT EXISTS `Задание`
(
`ИД` INT AUTO_INCREMENT PRIMARY KEY,
`Регномер_задания` INT NOT NULL UNIQUE,
`ИД_вида_задания` INT NOT NULL,
`ИД_заказа` INT NOT NULL,
CONSTRAINT `FK_Задание_ВидЗадания` FOREIGN KEY (`ИД_вида_задания`) REFERENCES `Вид_задания_СПР` (`Код_вида_задания`),
CONSTRAINT `FK_Задание_Заказ` FOREIGN KEY (`ИД_заказа`) REFERENCES `Заказ_СПР` (`Регномер_заказа`)
);
INSERT INTO `Задание` (`Регномер_задания`, `ИД_вида_задания`, `ИД_заказа`)
VALUES
(101, 1, 1001),
(102, 2, 1002),
(103, 3, 1003),
(104, 4, 1004);
SELECT * FROM `Задание`;
CREATE TABLE IF NOT EXISTS `Работа_ЗАДАН`
(
`ИД` INT AUTO_INCREMENT PRIMARY KEY,
`Код_РАБОТЫ` INT NOT NULL UNIQUE,
`Содержание_работы` VARCHAR(255) NOT NULL,
`ИД_задания` INT NOT NULL,
CONSTRAINT `FK_Работа_Задание` FOREIGN KEY (`ИД_задания`) REFERENCES `Задание` (`ИД`)
);
INSERT INTO `Работа_ЗАДАН` (`Код_РАБОТЫ`, `Содержание_работы`, `ИД_задания`)
VALUES
(201, 'Монтаж кабельной линии', 1),
(202, 'Настройка оборудования', 2),
(203, 'Пусконаладочные работы', 3);
SELECT * FROM `Работа_ЗАДАН`;
CREATE TABLE IF NOT EXISTS `Исполнитель_работы`
(
`ИД` INT AUTO_INCREMENT PRIMARY KEY,
`ИД_работы` INT NOT NULL,
`Роль_рабочего` VARCHAR(255),
CONSTRAINT `FK_Исполнитель_Работа` FOREIGN KEY (`ИД_работы`) REFERENCES `Работа_ЗАДАН` (`ИД`)
);
INSERT INTO `Исполнитель_работы` (`ИД_работы`, `Роль_рабочего`) VALUES
(1, "Бригадир"),
(2, "Инженер"),
(3, NULL);
SELECT * FROM `Исполнитель_работы`;
CREATE TABLE IF NOT EXISTS `Оформил_заказ`
(
`ИД` INT AUTO_INCREMENT PRIMARY KEY,
`ИД_заказа` INT NOT NULL,
`ИД_оформителя` INT NOT NULL,
`Дата_оформления` DATE NOT NULL,
CONSTRAINT `ВК1_ЗАКАЗ_ОФОРМ` FOREIGN KEY (`ИД_заказа`) REFERENCES `Заказ_СПР` (`ИД`),
CONSTRAINT `ВК2_ЗАКАЗ_ОФОРМ` FOREIGN KEY (`ИД_оформителя`) REFERENCES `Оформитель_СОТ` (`ИД`) -- Теперь ссылаемся на правильное поле
);
INSERT INTO `Оформил_заказ` (`ИД_заказа`, `ИД_оформителя`, `Дата_оформления`)
VALUES
(1, 1, '2024-03-02'),
(2, 1, '2024-03-06');
SELECT * FROM `Оформил_заказ`;
DROP TABLE IF EXISTS `Особое_условие_клиента_ЗАДАН`;
CREATE TABLE `Особое_условие_клиента_ЗАДАН`
(
`ИД_условия` INT AUTO_INCREMENT PRIMARY KEY,
`Содержание_условия` VARCHAR(255) NOT NULL,
`ИД_задания` INT NOT NULL,
`ИД_вида_условия` INT NOT NULL,
CONSTRAINT `FK_ОсобоеУсловие_Задание` FOREIGN KEY (`ИД_задания`) REFERENCES `Задание` (`ИД`),
CONSTRAINT `FK_ОсобоеУсловие_ВидУсловия` FOREIGN KEY (`ИД_вида_условия`) REFERENCES `Вид_условия_СПР` (`ИД`)
);
INSERT INTO `Особое_условие_клиента_ЗАДАН` (`ИД_задания`, `ИД_вида_условия`, `Содержание_условия`) VALUES
(1, 1, 'Работа выполняется в ночное время'),
(2, 2, 'Использование только сертифицированных материалов'),
(3, 3, 'Запрещено использование открытого огня'),
(4, 4, 'Требуется дополнительный контроль качества');
SELECT * FROM `Особое_условие_клиента_ЗАДАН`;
CREATE TABLE IF NOT EXISTS `Замечания_по_исполнению_ИСПРАБ`
(
`ИД_замечания` INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
`ИД_исполнителя_работы` INT NOT NULL,
`ИД_работы` INT NOT NULL,
`ИД_вида_замечания` INT NOT NULL,
`Содержание_замечания` VARCHAR(255) NOT NULL,
`Устранение_замечания` VARCHAR(255) NULL,
CONSTRAINT `ВК1_ЗАМ_ИСПРАБ` FOREIGN KEY (`ИД_исполнителя_работы`)
REFERENCES `Исполнитель_работы` (`ИД`),
CONSTRAINT `ВК2_ЗАМ_ИСПРАБ` FOREIGN KEY (`ИД_вида_замечания`)
REFERENCES `Вид_замечания_СПР` (`ИД`)
);
INSERT INTO `Замечания_по_исполнению_ИСПРАБ` (`ИД_исполнителя_работы`, `ИД_работы`, `ИД_вида_замечания`, `Содержание_замечания`, `Устранение_замечания`)
VALUES
(1, 1, 1, "Недостаточная толщина слоя", "Исправлено, добавлен слой"),
(2, 2, 2, "Неровность поверхности", NULL),
(3, 3, 3, "Использован несертифицированный материал", "Заменён на сертифицированный");
SELECT * FROM `Замечания_по_исполнению_ИСПРАБ`;
CREATE TABLE IF NOT EXISTS `Расход_материала_ИСПРАБ`
(
`ИД_расхода` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`ИД_исполнителя_работы` INT NOT NULL,
`ИД_работы` INT NOT NULL,
`Количество_материала` DECIMAL(10,2) NOT NULL,
`Марка_материала` VARCHAR(50) NULL,
CONSTRAINT `ВК1_РАСХ_ИСПРАБ` FOREIGN KEY (`ИД_исполнителя_работы`)
REFERENCES `Исполнитель_работы` (`ИД`),
CONSTRAINT `ВК2_РАСХ_ИСПРАБ` FOREIGN KEY (`ИД_работы`)
REFERENCES `Работа_ЗАДАН` (`ИД`)
);
INSERT INTO `Расход_материала_ИСПРАБ` (`ИД_исполнителя_работы`, `ИД_работы`, `Количество_материала`, `Марка_материала`)
VALUES
(1, 1, 15.5, "Марка-А"),
(1, 2, 8.0, "Марка-Б"),
(1, 3, 12.3, NULL);
SELECT * FROM `Расход_материала_ИСПРАБ`;
CREATE TABLE IF NOT EXISTS `Затрата_по_работе_РАБ_ВИДЗАТ`
(
`ИД_затраты` INT AUTO_INCREMENT PRIMARY KEY,
`ИД_вида_работы` INT NOT NULL,
`ИД_вида_затраты` INT NOT NULL,
`Объем_затраты` DECIMAL(10,2) NOT NULL,
CONSTRAINT `FK_Затрата_Работа` FOREIGN KEY (`ИД_вида_работы`) REFERENCES `Вид_работы_СПР` (`ИД`),
CONSTRAINT `FK_Затрата_ВидЗатраты` FOREIGN KEY (`ИД_вида_затраты`) REFERENCES `Вид_затраты_СПР` (`ИД`)
);
INSERT INTO `Затрата_по_работе_РАБ_ВИДЗАТ` (`ИД_вида_работы`, `ИД_вида_затраты`, `Объем_затраты`)
VALUES
(1, 1, 500.00),
(1, 2, 300.50),
(2, 3, 700.75),
(3, 4, 1000.00);
SELECT * FROM `Затрата_по_работе_РАБ_ВИДЗАТ`;