DROP TABLE IF EXISTS `Справка+`;
CREATE TABLE `Справка+`
( `Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, `Слк` CHAR (3) NOT NULL
, `Код` CHAR (3) NOT NULL
, `Название` VARCHAR (50) NOT NULL
, `Содержание` VARCHAR (100) NULL
, `Ид_родитель\СПР^СПР` INT NULL REFERENCES `Справка+` (`Ид`)
, CONSTRAINT `Ун1\СПР` UNIQUE (`Слк`, `Код`)
);
INSERT INTO `Справка+` VALUES
(DEFAULT, "ДОЛ", "про", "проф.", "профессср кафедры", NULL),
(DEFAULT, "ДОЛ", "доц", "доц. ", "доцент кафедры", NULL),
(DEFAULT, "ДОЛ", "лаб", "лаборант", NULL, NULL),
(NULL, "СТЕ", "дтн", "д-р техн. наук", "доктор технических наук", NULL),
(NULL, "СТЕ", "ктн", "канд. техн. наук", "кандидат технических наук", NULL),
(NULL, "ЗВА", "про", "проф.", "профессор ВАК", NULL),
(NULL, "ЗВА", "доц", "доц.", "доцент ВАК", NULL),
(NULL, "ПОД", "ИРТ", "ФИРТ", "ф-т информатикики и робототехники", NULL);
INSERT INTO `Справка+` SELECT
NULL, "ПОД", "АСУ", "каф. АСУ", "каф. автоматизир. систем упр-я", `Ид` FROM `Справка+` WHERE `Слк`="ПОД" AND `Код`="ИРТ";
SELECT "Table `Справка+`" FROM `Справка+` WHERE 1=0;
SELECT * FROM `Справка+`;
DROP TABLE IF EXISTS `Сотрудник%ПЕРС`;
CREATE TABLE `Сотрудник%ПЕРС`
( `Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, `Код` INT NOT NULL UNIQUE
, `Паспорт` INT NOT NULL UNIQUE
, `ФИО` VARCHAR (50) NOT NULL
, `Сведения` VARCHAR (50) NOT NULL
, `Ид_ДОЛ\СОТ^СПР` INT NOT NULL
REFERENCES `Справка+` (`Ид`)
);
INSERT INTO `Сотрудник%ПЕРС` SET `Ид` = NULL, `Код` = "1", `Паспорт` = "423533", `ФИО` = "Петров А.А.", `Сведения` = "1", `Ид_ДОЛ\СОТ^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк`="ДОЛ" AND `Код`="про");
SELECT "'Сотрудник%ПЕРС` Table Content:" FROM `Сотрудник%ПЕРС` WHERE 1=0;
SELECT* FROM `Сотрудник%ПЕРС`;
DROP TABLE IF EXISTS `Ответственный:СОТ`;
CREATE TABLE `Ответственный:СОТ`
( `Ид\ОТВ^СОТ` INT NOT NULL
REFERENCES `Сотрудник%ПЕРС` (`Ид`)
, `Сведения` VARCHAR (50) NOT NULL
, CONSTRAINT `ПК\ОТВ` PRIMARY KEY (`Ид\ОТВ^СОТ`)
);
INSERT INTO `Ответственный:СОТ` SET `Ид\ОТВ^СОТ` = (SELECT `Ид` FROM `Сотрудник%ПЕРС` WHERE `Код` = "1"), `Сведения` = "1";
SELECT "'Ответственный:СОТ` Table Content:" FROM `Ответственный:СОТ` WHERE 1=0;
SELECT* FROM `Ответственный:СОТ`;
DROP TABLE IF EXISTS `Руководитель:СОТ`;
CREATE TABLE `Руководитель:СОТ`
( `Ид\РУК^СОТ` INT NOT NULL
REFERENCES `Сотрудник%ПЕРС` (`Ид`)
, `Сведения` VARCHAR (50) NOT NULL
, CONSTRAINT `ПК\РУК` PRIMARY KEY (`Ид\РУК^СОТ`)
);
INSERT INTO `Руководитель:СОТ` SET `Ид\РУК^СОТ` = (SELECT `Ид` FROM `Сотрудник%ПЕРС` WHERE `Код` = "1"), `Сведения` = "1";
SELECT "'Руководитель:СОТ` Table Content:" FROM `Руководитель:СОТ` WHERE 1=0;
SELECT* FROM `Руководитель:СОТ`;
DROP TABLE IF EXISTS `Ходатайствующий:СОТ`;
CREATE TABLE `Ходатайствующий:СОТ`
( `Ид\ХОД^СОТ` INT NOT NULL
REFERENCES `Сотрудник%ПЕРС` (`Ид`)
, `Сведения` VARCHAR (50) NOT NULL
, CONSTRAINT `ПК\ХОД` PRIMARY KEY (`Ид\ХОД^СОТ`)
);
INSERT INTO `Ходатайствующий:СОТ` SET `Ид\ХОД^СОТ` = (SELECT `Ид` FROM `Сотрудник%ПЕРС` WHERE `Код` = "1"), `Сведения` = "1";
SELECT "'Ходатайствующий:СОТ` Table Content:" FROM `Ходатайствующий:СОТ` WHERE 1=0;
SELECT* FROM `Ходатайствующий:СОТ`;
DROP TABLE IF EXISTS `Имевший допуск:СОТ`;
CREATE TABLE `Имевший допуск:СОТ`
( `Ид\СИД^СОТ` INT NOT NULL
REFERENCES `Сотрудник%ПЕРС` (`Ид`)
, `Сведения` VARCHAR (50) NOT NULL
, CONSTRAINT `ПК\СИД` PRIMARY KEY (`Ид\СИД^СОТ`)
);
INSERT INTO `Имевший допуск:СОТ` SET `Ид\СИД^СОТ` = (SELECT `Ид` FROM `Сотрудник%ПЕРС` WHERE `Код` = "1"), `Сведения` = "1";
SELECT "'Имевший допуск:СОТ` Table Content:" FROM `Имевший допуск:СОТ` WHERE 1=0;
SELECT* FROM `Имевший допуск:СОТ`;
DROP TABLE IF EXISTS `Представитель:СОТ`;
CREATE TABLE `Представитель:СОТ`
( `Ид\ПРЕД^СОТ` INT NOT NULL
REFERENCES `Сотрудник%ПЕРС` (`Ид`)
, `Сведения` VARCHAR (50) NOT NULL
, CONSTRAINT `ПК\ПРЕД` PRIMARY KEY (`Ид\ПРЕД^СОТ`)
);
INSERT INTO `Представитель:СОТ` SET `Ид\ПРЕД^СОТ` = (SELECT `Ид` FROM `Сотрудник%ПЕРС` WHERE `Код` = "1"), `Сведения` = "1";
SELECT "'Представитель:СОТ` Table Content:" FROM `Представитель:СОТ` WHERE 1=0;
SELECT* FROM `Представитель:СОТ`;
DROP TABLE IF EXISTS `Допуск сотрудника`;
CREATE TABLE `Допуск сотрудника`
( `Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, `Код` INT NOT NULL UNIQUE
, `Название` VARCHAR (50) NOT NULL
);
INSERT INTO `Допуск сотрудника` VALUES
( NULL, "1", "допуск Д1"),
( NULL, "2", "допуск Д2");
SELECT "'Допуск сотрудника` Table Content:" FROM `Допуск сотрудника` WHERE 1=0;
SELECT* FROM `Допуск сотрудника`;
DROP TABLE IF EXISTS `С допуском:СОТ`;
CREATE TABLE `С допуском:СОТ`
( `Ид\ССД^СОТ` INT NOT NULL
REFERENCES `Сотрудник%ПЕРС` (`Ид`)
, `Сведения` VARCHAR (50) NOT NULL
, `Ид\ССД^ДОП` INT NOT NULL
REFERENCES `Допуск сотрудника` (`Ид`)
, CONSTRAINT `ПК\ССД` PRIMARY KEY (`Ид\ССД^СОТ`)
);
INSERT INTO `С допуском:СОТ` SET `Ид\ССД^СОТ` = (SELECT `Ид` FROM `Сотрудник%ПЕРС` WHERE `Код` = "1"), `Сведения` = "1", `Ид\ССД^ДОП` = (SELECT `Ид` FROM `Допуск сотрудника` WHERE `Код` = "1");
SELECT "'С допуском:СОТ` Table Content:" FROM `С допуском:СОТ` WHERE 1=0;
SELECT* FROM `С допуском:СОТ`;
DROP TABLE IF EXISTS `Отчет`;
CREATE TABLE `Отчет`
( `Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, `Регномер` INT NOT NULL UNIQUE
, `Дата/время` VARCHAR (50) NOT NULL
, `Ид\ОТЧ^ССД` INT NOT NULL
REFERENCES `С допуском:СОТ` (`Ид\ССД^СОТ`)
, `Ид\ОТЧ^РУК` INT NOT NULL
REFERENCES `Руководитель:СОТ` (`Ид\РУК^СОТ`)
);
INSERT INTO `Отчет` SET `Ид` = NULL, `Регномер` = "1", `Дата/время` = "19.04.24", `Ид\ОТЧ^ССД` = (SELECT `Ид\ССД^СОТ` FROM `С допуском:СОТ` WHERE `Ид\ССД^СОТ` = "1"), `Ид\ОТЧ^РУК` = (SELECT `Ид\РУК^СОТ` FROM `Руководитель:СОТ` WHERE `Ид\РУК^СОТ` = "1");
SELECT "'Отчет` Table Content:" FROM `Отчет` WHERE 1=0;
SELECT* FROM `Отчет`;
DROP TABLE IF EXISTS `Документ`;
CREATE TABLE `Документ`
( `Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, `Регномер` INT NOT NULL UNIQUE
, `Код грифа` VARCHAR (50) NOT NULL
, `Название` VARCHAR (50) NOT NULL
, `Ид\ДОК^ОТВ` INT NOT NULL
REFERENCES `Ответственный:СОТ` (`Ид\ОТВ^СОТ`)
, `Ид_ВД\ДОК^СПР` INT NOT NULL
REFERENCES `Справка+` (`Ид`)
);
INSERT INTO `Документ` SET `Ид` = NULL, `Регномер` = "1", `Код грифа` = "1", `Название` = "документ д1", `Ид\ДОК^ОТВ` = (SELECT `Ид\ОТВ^СОТ` FROM `Ответственный:СОТ` WHERE `Ид\ОТВ^СОТ` = "1"), `Ид_ВД\ДОК^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк`="ПОД" AND `Код`="ИРТ");
SELECT "'Документ` Table Content:" FROM `Документ` WHERE 1=0;
SELECT* FROM `Документ`;
DROP TABLE IF EXISTS `Доступ к документу:ОТЧ*ДОК`;
CREATE TABLE `Доступ к документу:ОТЧ*ДОК`
( `Ид\ДКД^ДОК` INT NOT NULL
REFERENCES `Документ` (`Ид`)
, `Ид\ДКД^ОТЧ` INT NOT NULL
REFERENCES `Отчет` (`Ид`)
, `Основание для выдачи` VARCHAR (50) NOT NULL
, `Дата/время выдачи` VARCHAR (50) NOT NULL
, `Дата/время возврата` VARCHAR (50) NOT NULL
, CONSTRAINT `ПК\ДКД` PRIMARY KEY (`Ид\ДКД^ДОК`, `Ид\ДКД^ОТЧ`)
);
INSERT INTO `Доступ к документу:ОТЧ*ДОК` SET `Ид\ДКД^ДОК` = (SELECT `Ид` FROM `Документ` WHERE `Регномер` = "1"), `Ид\ДКД^ОТЧ` = (SELECT `Ид` FROM `Отчет` WHERE `Регномер` = "1"), `Основание для выдачи` = "+", `Дата/время выдачи` = "12", `Дата/время возврата` = "22";
SELECT "'Доступ к документу:ОТЧ*ДОК` Table Content:" FROM `Доступ к документу:ОТЧ*ДОК` WHERE 1=0;
SELECT* FROM `Доступ к документу:ОТЧ*ДОК`;
DROP TABLE IF EXISTS `Форма допуска`;
CREATE TABLE `Форма допуска`
( `Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, `Код` INT NOT NULL UNIQUE
, `Название` VARCHAR (50) NOT NULL
);
INSERT INTO `Форма допуска` VALUES
( NULL, "1", "Ф1"),
( NULL, "2", "Ф2");
SELECT "'Форма допуска` Table Content:" FROM `Форма допуска` WHERE 1=0;
SELECT* FROM `Форма допуска`;
DROP TABLE IF EXISTS `Приказ`;
CREATE TABLE `Приказ`
( `Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, `Регномер` INT NOT NULL UNIQUE
, `Дата` VARCHAR (50) NOT NULL
, `Основание` VARCHAR (50) NOT NULL
, `Ид\ПРИК^РУК` INT NOT NULL
REFERENCES `Руководитель:СОТ` (`Ид\РУК^СОТ`)
);
INSERT INTO `Приказ` SET `Ид` = NULL, `Регномер` = "1", `Дата` = "10.05.25", `Основание` = "1", `Ид\ПРИК^РУК` = (SELECT `Ид\РУК^СОТ` FROM `Руководитель:СОТ` WHERE `Ид\РУК^СОТ` = "1");
SELECT "'Приказ` Table Content:" FROM `Приказ` WHERE 1=0;
SELECT* FROM `Приказ`;
DROP TABLE IF EXISTS `Допуск сотрудника\СИД`;
CREATE TABLE `Допуск сотрудника\СИД`
( `Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, `Ид\ДОПС^СИД` INT NOT NULL
REFERENCES `Имевший допуск:СОТ` (`Ид\СИД^СОТ`)
, `НПП` VARCHAR (50) NOT NULL
, `Ид\ДОПС^ПРИК` INT NOT NULL
REFERENCES `Приказ` (`Ид`)
, `Ид\ДОПС^ФОР` INT NOT NULL
REFERENCES `Форма допуска` (`Ид`)
, `Ид\ДОПС^ХОД` INT NOT NULL
REFERENCES `Ходатайствующий:СОТ` (`Ид\ХОД^СОТ`)
);
INSERT INTO `Допуск сотрудника\СИД` SET `Ид` = NULL, `Ид\ДОПС^СИД` = (SELECT `Ид\СИД^СОТ` FROM `Имевший допуск:СОТ` WHERE `Ид\СИД^СОТ` = "1"), `НПП` = "1", `Ид\ДОПС^ПРИК` = (SELECT `Ид` FROM `Приказ` WHERE `Регномер` = "1"), `Ид\ДОПС^ФОР` = (SELECT `Ид` FROM `Форма допуска` WHERE `Код` = "1"), `Ид\ДОПС^ХОД` = (SELECT `Ид\ХОД^СОТ` FROM `Ходатайствующий:СОТ` WHERE `Ид\ХОД^СОТ` = "1");
SELECT "'Допуск сотрудника\СИД` Table Content:" FROM `Допуск сотрудника\СИД` WHERE 1=0;
SELECT* FROM `Допуск сотрудника\СИД`;
DROP TABLE IF EXISTS `Разрешение`;
CREATE TABLE `Разрешение`
( `Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, `Регномер` INT NOT NULL UNIQUE
, `Дата` VARCHAR (50) NOT NULL
, `Ид\РАЗ^ПРЕД` INT NOT NULL
REFERENCES `Представитель:СОТ` (`Ид\ПРЕД^СОТ`)
);
INSERT INTO `Разрешение` SET `Ид` = NULL, `Регномер` = "1", `Дата` = "05.02.25", `Ид\РАЗ^ПРЕД` = (SELECT `Ид\ПРЕД^СОТ` FROM `Представитель:СОТ` WHERE `Ид\ПРЕД^СОТ` = "1");
SELECT "'Разрешение` Table Content:" FROM `Разрешение` WHERE 1=0;
SELECT* FROM `Разрешение`;
DROP TABLE IF EXISTS `Запрос на получение допуска`;
CREATE TABLE `Запрос на получение допуска`
( `Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, `Регномер` INT NOT NULL UNIQUE
, `Дата` VARCHAR (50) NOT NULL
, `Ид\ЗАПП^ФОР` INT NOT NULL
REFERENCES `Форма допуска` (`Ид`)
);
INSERT INTO `Запрос на получение допуска` SET `Ид` = NULL, `Регномер` = "1", `Дата` = "11.04.24", `Ид\ЗАПП^ФОР` = (SELECT `Ид` FROM `Форма допуска` WHERE `Код` = "1");
SELECT "'Запрос на получение допуска` Table Content:" FROM `Запрос на получение допуска` WHERE 1=0;
SELECT* FROM `Запрос на получение допуска`;
DROP TABLE IF EXISTS `Сотрудник в запросе:ЗАПП*СОТ`;
CREATE TABLE `Сотрудник в запросе:ЗАПП*СОТ`
( `Ид\СВЗ^ЗАПП` INT NOT NULL
REFERENCES `Запрос на получение допуска` (`Ид`)
, `Ид\СВЗ^СОТ` INT NOT NULL
REFERENCES `Сотрудник%ПЕРС` (`Ид`)
, `НПП сотрудника` VARCHAR (50) NOT NULL
, `Основание для присвоения` VARCHAR (50) NOT NULL
, `Ид\СВЗ^РАЗ` INT NULL
REFERENCES `Разрешение` (`Ид`)
, `Ид\СВЗ^ХОД` INT NOT NULL
REFERENCES `Ходатайствующий:СОТ` (`Ид\ХОД^СОТ`)
, CONSTRAINT `ПК\СВЗ` PRIMARY KEY (`Ид\СВЗ^ЗАПП`, `Ид\СВЗ^СОТ`)
);
INSERT INTO `Сотрудник в запросе:ЗАПП*СОТ` SET `Ид\СВЗ^ЗАПП` = (SELECT `Ид` FROM `Запрос на получение допуска` WHERE `Регномер` = "1"), `Ид\СВЗ^СОТ` = (SELECT `Ид` FROM `Сотрудник%ПЕРС` WHERE `Код` = "1"), `НПП сотрудника` = "1", `Основание для присвоения` = "12", `Ид\СВЗ^РАЗ` = (SELECT `Ид` FROM `Разрешение` WHERE `Регномер` = "1"), `Ид\СВЗ^ХОД` = (SELECT `Ид\ХОД^СОТ` FROM `Ходатайствующий:СОТ` WHERE `Ид\ХОД^СОТ` = "1");
SELECT "'Сотрудник в запросе:ЗАПП*СОТ` Table Content:" FROM `Сотрудник в запросе:ЗАПП*СОТ` WHERE 1=0;
SELECT* FROM `Сотрудник в запросе:ЗАПП*СОТ`;
DROP TABLE IF EXISTS `Документ к допуску`;
CREATE TABLE `Документ к допуску`
( `Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, `Регномер` INT NOT NULL UNIQUE
, `Дата документа` VARCHAR (50) NOT NULL
, `Ид\ДОКД^СВЗ` INT NOT NULL
REFERENCES `Сотрудник в запросе:ЗАПП*СОТ` (`Ид\СВЗ^ЗАПП`)
, `Ид\ДОКД^ДОПС` INT NOT NULL
REFERENCES `Допуск сотрудника\СИД` (`Ид`)
, `Ид_ВД\ДОКД^СПР` INT NOT NULL
REFERENCES `Справка+` (`Ид`)
);
INSERT INTO `Документ к допуску` SET `Ид` = NULL, `Регномер` = "1", `Дата документа` = "12", `Ид\ДОКД^СВЗ` = (SELECT `Ид\СВЗ^ЗАПП` FROM `Сотрудник в запросе:ЗАПП*СОТ` WHERE `Ид\СВЗ^ЗАПП` = "1"), `Ид\ДОКД^ДОПС` = (SELECT `Ид` FROM `Допуск сотрудника\СИД` WHERE `НПП` = "1"), `Ид_ВД\ДОКД^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк`="ПОД" AND `Код`="ИРТ");
SELECT "'Документ к допуску` Table Content:" FROM `Документ к допуску` WHERE 1=0;
SELECT* FROM `Документ к допуску`;
DROP VIEW IF EXISTS `вирт_Запрос на получение допуска`;
CREATE VIEW `вирт_Запрос на получение допуска` AS
SELECT
`ЗАПП`.`Регномер` AS `Регномер запроса`,
`ЗАПП`.`Дата` AS `Дата запроса`,
`ФОР`.`Код` AS `Код формы допуска`,
`ФОР`.`Название` AS `Название формы допуска`,
`ЗАПП`.`Ид` AS `Ид\Запрос`
FROM `Запрос на получение допуска` AS `ЗАПП`
LEFT JOIN `Форма допуска` AS `ФОР` ON `ЗАПП`.`Ид\ЗАПП^ФОР` = `ФОР`.`Ид`
;
SELECT * FROM `вирт_Запрос на получение допуска`;
DROP PROCEDURE IF EXISTS `проц_Сотрудник в запросе`;
CREATE PROCEDURE `проц_Сотрудник в запросе`
(IN `@Ид\Запрос` INT)
SELECT
`СВЗ`.`НПП сотрудника` AS `НПП сотрудника`,
`СОТ`.`Код` AS `Код сотрудника`,
`СОТ`.`ФИО` AS `ФИО сотрудника`,
`СПР`.`Код` AS `Код должности сотрудника`,
`СПР`.`Название` AS `Название должности сотрудника`,
`СВЗ`.`Основание для присвоения` AS `Основание для присвоения допуска`,
`СОТХ`.`Код` AS `Код ходатайствующего о присвоении`,
`СОТХ`.`ФИО` AS `ФИО ходатайствующего о присвоении`,
`СПРХ`.`Код` AS `Код должности ходатайствующего`,
`СПРХ`.`Название` AS `Название должности ходатайствующего`,
`РАЗ`.`Регномер` AS `Регномер разрешения`,
`РАЗ`.`Дата` AS `Дата разрешения`,
`СОТП`.`Код` AS `Код представителя`,
`СОТП`.`ФИО` AS `ФИО представителя`
FROM `Сотрудник в запросе:ЗАПП*СОТ` AS `СВЗ`
LEFT JOIN `Ходатайствующий:СОТ` AS `ХОД` ON `СВЗ`.`Ид\СВЗ^РАЗ` = `ХОД`.`Ид\ХОД^СОТ`
LEFT JOIN `Сотрудник%ПЕРС` AS `СОТХ` ON `ХОД`.`Ид\ХОД^СОТ` = `СОТХ`.`Ид`
LEFT JOIN `Справка+` AS `СПРХ` ON `СОТХ`.`Ид_ДОЛ\СОТ^СПР` = `СПРХ`.`Ид`
LEFT JOIN `Разрешение` AS `РАЗ` ON `СВЗ`.`Ид\СВЗ^СОТ` = `РАЗ`.`Ид`
LEFT JOIN `Представитель:СОТ` AS `ПРЕД` ON `РАЗ`.`Ид\РАЗ^ПРЕД` = `ПРЕД`.`Ид\ПРЕД^СОТ`
LEFT JOIN `Сотрудник%ПЕРС` AS `СОТП` ON `ПРЕД`.`Ид\ПРЕД^СОТ` = `СОТП`.`Ид`
LEFT JOIN `Сотрудник%ПЕРС` AS `СОТ` ON `СВЗ`.`Ид\СВЗ^СОТ` = `СОТ`.`Ид`
LEFT JOIN `Справка+` AS `СПР` ON `СОТ`.`Ид_ДОЛ\СОТ^СПР` = `СПР`.`Ид`
WHERE `СВЗ`.`Ид\СВЗ^ЗАПП` = `@Ид\Запрос`
;
CALL `проц_Сотрудник в запросе` (1);