DROP TABLE IF EXISTS `Справка+`;
CREATE TABLE `Справка+` (
`ИД` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
`Слк` CHAR(3) NOT NULL,
`Код` INT NOT NULL,
`Название` CHAR(50) NOT NULL,
CONSTRAINT `УН\СПР` UNIQUE (`Слк`, `Код`)
);
INSERT INTO `Справка+` VALUES
(DEFAULT, "ПОМ", 1, "27-10"),
(DEFAULT, "ПОМ", 2, "10-11"),
(DEFAULT, "ВИД", 1, "Техническая"),
(DEFAULT, "ВИД", 2, "Гуманитарная"),
(DEFAULT, "ДОЛ", 1, "Техническая"),
(DEFAULT, "ДОЛ", 2, "Гуманитарная")
;
SELECT "`Справка+` Table Content:" FROM `Справка+` WHERE 1=0;
SELECT * FROM `Справка+`;
DROP TABLE IF EXISTS `Секретарь%ПЕРС`;
CREATE TABLE `Секретарь%ПЕРС` (
`ИД` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
`Код` INT NOT NULL UNIQUE,
`ФИО` CHAR(50) NOT NULL
);
INSERT INTO `Секретарь%ПЕРС` VALUES
(DEFAULT, 1, "ФИО"),
(DEFAULT, 2, "ФИО")
;
SELECT "`Секретарь%ПЕРС` Table Content:" FROM `Секретарь%ПЕРС` WHERE 1=0;
SELECT * FROM `Секретарь%ПЕРС`;
DROP TABLE IF EXISTS `Заседание`;
CREATE TABLE `Заседание` (
`ИД` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
`Регномер` INT NOT NULL UNIQUE,
`Дата проведения` DATE NOT NULL,
`ИД\ЗАС^СЕК` INT NOT NULL,
`ИД_ПОМ\ЗАС^СПР` INT NOT NULL,
FOREIGN KEY (`ИД\ЗАС^СЕК`) REFERENCES `Секретарь%ПЕРС` (`ИД`),
FOREIGN KEY (`ИД_ПОМ\ЗАС^СПР`) REFERENCES `Справка+` (`ИД`)
);
INSERT INTO `Заседание` VALUES
(DEFAULT, 1, "2025-06-16", (SELECT `ИД` FROM `Секретарь%ПЕРС` WHERE `Код` = 1), (SELECT `ИД` FROM `Справка+` WHERE `Слк` = "ПОМ" AND `Код` = 1)),
(DEFAULT, 2, "2025-06-16", (SELECT `ИД` FROM `Секретарь%ПЕРС` WHERE `Код` = 2), (SELECT `ИД` FROM `Справка+` WHERE `Слк` = "ПОМ" AND `Код` = 2))
;
SELECT "`Заседание` Table Content:" FROM `Заседание` WHERE 1=0;
SELECT * FROM `Заседание`;
DROP TABLE IF EXISTS `Приглашенный%ПЕРС`;
CREATE TABLE `Приглашенный%ПЕРС` (
`Код` INT NOT NULL PRIMARY KEY,
`ФИО` CHAR(50) NOT NULL,
`Дата отправки приглашения` DATE NOT NULL,
`Дата ответа на приглашение` DATE,
`Содержание ответа` CHAR(50),
`ИД\ПРИ^ЗАС` INT NOT NULL,
FOREIGN KEY (`ИД\ПРИ^ЗАС`) REFERENCES `Заседание` (`ИД`)
);
INSERT INTO `Приглашенный%ПЕРС` VALUES
(1, "ФИО", "2025-06-10", "2025-06-11", "Приглашение принято", (SELECT `ИД` FROM `Заседание` WHERE `Регномер` = 1)),
(2, "ФИО", "2025-06-10", "2025-06-11", "Приглашение принято", (SELECT `ИД` FROM `Заседание` WHERE `Регномер` = 2))
;
SELECT "`Приглашенныйе%ПЕРС` Table Content:" FROM `Приглашенный%ПЕРС` WHERE 1=0;
SELECT * FROM `Приглашенный%ПЕРС`;
DROP TABLE IF EXISTS `Тема заседания\ЗАС`;
CREATE TABLE `Тема заседания\ЗАС` (
`ИД` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
`ИД\ТЕМ^ЗАС` INT NOT NULL,
`Нпп` INT NOT NULL,
`Название` CHAR(50) NOT NULL,
`Решение` CHAR(50) NOT NULL,
`ИД_ВИД\ТЕМ^СПР` INT NOT NULL,
CONSTRAINT `УН\ТЕМ` UNIQUE (`ИД\ТЕМ^ЗАС`, `Нпп`),
FOREIGN KEY (`ИД\ТЕМ^ЗАС`) REFERENCES `Заседание` (`ИД`),
FOREIGN KEY (`ИД_ВИД\ТЕМ^СПР`) REFERENCES `Справка+` (`ИД`)
);
INSERT INTO `Тема заседания\ЗАС` VALUES
(DEFAULT, (SELECT `ИД` FROM `Заседание` WHERE `Регномер` = 1), 1, "Дифференциальные уравнения", "Утвердить", (SELECT `ИД` FROM `Справка+` WHERE `Слк` = "ВИД" AND `Код` = 1)),
(DEFAULT, (SELECT `ИД` FROM `Заседание` WHERE `Регномер` = 2), 1, "Обществознание", "Утвердить", (SELECT `ИД` FROM `Справка+` WHERE `Слк` = "ВИД" AND `Код` = 2))
;
SELECT "`Тема заседания\ЗАС` Table Content:" FROM `Тема заседания\ЗАС` WHERE 1=0;
SELECT * FROM `Тема заседания\ЗАС`;
DROP TABLE IF EXISTS `Докладчик%ПЕРС`;
CREATE TABLE `Докладчик%ПЕРС` (
`ИД` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
`Код` INT NOT NULL UNIQUE,
`ФИО` CHAR(50) NOT NULL,
`Роль` CHAR(50),
`ИД\ДОК^ТЕМ` INT NOT NULL,
`ИД_ДОЛ\ДОК^СПР` INT NOT NULL,
FOREIGN KEY (`ИД\ДОК^ТЕМ`) REFERENCES `Тема заседания\ЗАС` (`ИД`),
FOREIGN KEY (`ИД_ДОЛ\ДОК^СПР`) REFERENCES `Справка+` (`ИД`)
);
INSERT INTO `Докладчик%ПЕРС` VALUES
(DEFAULT, 1, "ФИО", NULL, (SELECT `ИД` FROM `Тема заседания\ЗАС` WHERE `ИД\ТЕМ^ЗАС` = 1 AND `Нпп` = 1), (SELECT `ИД` FROM `Справка+` WHERE `Слк` = "ДОЛ" AND `Код` = 1)),
(DEFAULT, 2, "ФИО", NULL, (SELECT `ИД` FROM `Тема заседания\ЗАС` WHERE `ИД\ТЕМ^ЗАС` = 2 AND `Нпп` = 1), (SELECT `ИД` FROM `Справка+` WHERE `Слк` = "ДОЛ" AND `Код` = 2))
;
SELECT "`Докладчик%ПЕРС` Table Content:" FROM `Докладчик%ПЕРС` WHERE 1=0;
SELECT * FROM `Докладчик%ПЕРС`;
DROP TABLE IF EXISTS `Спрашивающая персона%ПЕРС`;
CREATE TABLE `Спрашивающая персона%ПЕРС` (
`ИД` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
`Код` INT NOT NULL UNIQUE,
`ФИО` CHAR(50) NOT NULL,
`ИД_ДОЛ\ПЕРс^СПР` INT NOT NULL,
FOREIGN KEY (`ИД_ДОЛ\ПЕРс^СПР`) REFERENCES `Справка+` (`ИД`)
);
INSERT INTO `Спрашивающая персона%ПЕРС` VALUES
(DEFAULT, 1, "ФИО", (SELECT `ИД` FROM `Справка+` WHERE `Слк` = "ДОЛ" AND `Код` = 1)),
(DEFAULT, 2, "ФИО", (SELECT `ИД` FROM `Справка+` WHERE `Слк` = "ДОЛ" AND `Код` = 2))
;
SELECT "`Спрашивающая персона%ПЕРС` Table Content:" FROM `Спрашивающая персона%ПЕРС` WHERE 1=0;
SELECT * FROM `Спрашивающая персона%ПЕРС`;
DROP TABLE IF EXISTS `Вопросы докладчику\ДОК`;
CREATE TABLE `Вопросы докладчику\ДОК` (
`ИД\ВОП^ДОК` INT NOT NULL,
`Нпп` INT NOT NULL,
`Содержание вопроса` CHAR(50) NOT NULL,
`Содержание ответа` CHAR(50) NOT NULL,
`ИД\ВОП^ПЕРс` INT NOT NULL,
CONSTRAINT `ПК\ТЕМ` PRIMARY KEY (`ИД\ВОП^ДОК`, `Нпп`),
FOREIGN KEY (`ИД\ВОП^ДОК`) REFERENCES `Докладчик%ПЕРС` (`ИД`),
FOREIGN KEY (`ИД\ВОП^ПЕРс`) REFERENCES `Спрашивающая персона%ПЕРС` (`ИД`)
);
INSERT INTO `Вопросы докладчику\ДОК` VALUES
((SELECT `ИД` FROM `Докладчик%ПЕРС` WHERE `Код` = 1), 1, "Вопрос", "Ответ", (SELECT `ИД` FROM `Спрашивающая персона%ПЕРС` WHERE `Код` = 1)),
((SELECT `ИД` FROM `Докладчик%ПЕРС` WHERE `Код` = 2), 1, "Вопрос", "Ответ", (SELECT `ИД` FROM `Спрашивающая персона%ПЕРС` WHERE `Код` = 2))
;
SELECT "`Вопросы докладчику\ДОК` Table Content:" FROM `Вопросы докладчику\ДОК` WHERE 1=0;
SELECT * FROM `Вопросы докладчику\ДОК`;
DROP TABLE IF EXISTS `Выступающая персона%ПЕРС`;
CREATE TABLE `Выступающая персона%ПЕРС` (
`ИД` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
`Код` INT NOT NULL UNIQUE,
`ФИО` CHAR(50) NOT NULL,
`ИД_ДОЛ\ПЕРв^СПР` INT NOT NULL,
FOREIGN KEY (`ИД_ДОЛ\ПЕРв^СПР`) REFERENCES `Справка+` (`ИД`)
);
INSERT INTO `Выступающая персона%ПЕРС` VALUES
(DEFAULT, 1, "ФИО", (SELECT `ИД` FROM `Справка+` WHERE `Слк` = "ДОЛ" AND `Код` = 1)),
(DEFAULT, 2, "ФИО", (SELECT `ИД` FROM `Справка+` WHERE `Слк` = "ДОЛ" AND `Код` = 2))
;
SELECT "`Выступающая персона%ПЕРС` Table Content:" FROM `Выступающая персона%ПЕРС` WHERE 1=0;
SELECT * FROM `Выступающая персона%ПЕРС`;
DROP TABLE IF EXISTS `Выступления по теме\ТЕМ`;
CREATE TABLE `Выступления по теме\ТЕМ` (
`ИД\ВЫС^ТЕМ` INT NOT NULL,
`Нпп` INT NOT NULL,
`Содержание` CHAR(50) NOT NULL,
`ИД\ВЫС^ПЕРв` INT NOT NULL,
CONSTRAINT `ПК\ВЫС` PRIMARY KEY (`ИД\ВЫС^ТЕМ`, `Нпп`),
FOREIGN KEY (`ИД\ВЫС^ТЕМ`) REFERENCES `Тема заседания\ЗАС` (`ИД`),
FOREIGN KEY (`ИД\ВЫС^ПЕРв`) REFERENCES `Выступающая персона%ПЕРС` (`ИД`)
);
INSERT INTO `Выступления по теме\ТЕМ` VALUES
((SELECT `ИД` FROM `Тема заседания\ЗАС` WHERE `ИД\ТЕМ^ЗАС` = 1 AND `Нпп` = 1), 1, "Содержание", (SELECT `ИД` FROM `Выступающая персона%ПЕРС` WHERE `Код` = 1)),
((SELECT `ИД` FROM `Тема заседания\ЗАС` WHERE `ИД\ТЕМ^ЗАС` = 2 AND `Нпп` = 1), 1, "Содержание", (SELECT `ИД` FROM `Выступающая персона%ПЕРС` WHERE `Код` = 2))
;
SELECT "`Выступления по теме\ТЕМ` Table Content:" FROM `Выступления по теме\ТЕМ` WHERE 1=0;
SELECT * FROM `Выступления по теме\ТЕМ`;
DROP TABLE IF EXISTS `Конкурсная должность на заседании:ДОЛ`;
CREATE TABLE `Конкурсная должность на заседании:ДОЛ` (
`ИД` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
`ИД_ДОЛ\КОН^СПР` INT NOT NULL UNIQUE,
`Дата объявления конкурса` DATE NOT NULL,
`Количество мест` INT NOT NULL,
`Решение по избранию` CHAR(50) NOT NULL,
`ИД\КОН^ЗАС` INT NOT NULL,
FOREIGN KEY (`ИД_ДОЛ\КОН^СПР`) REFERENCES `Справка+` (`ИД`),
FOREIGN KEY (`ИД\КОН^ЗАС`) REFERENCES `Заседание` (`ИД`)
);
INSERT INTO `Конкурсная должность на заседании:ДОЛ` VALUES
(DEFAULT, (SELECT `ИД` FROM `Справка+` WHERE `Слк` = "ДОЛ" AND `Код` = 1), "2025-06-09", 1, "Положительное", (SELECT `ИД` FROM `Заседание` WHERE `Регномер` = 1)),
(DEFAULT, (SELECT `ИД` FROM `Справка+` WHERE `Слк` = "ДОЛ" AND `Код` = 2), "2025-06-09", 1, "Положительное", (SELECT `ИД` FROM `Заседание` WHERE `Регномер` = 2))
;
SELECT "`Конкурсная должность на заседании:ДОЛ` Table Content:" FROM `Конкурсная должность на заседании:ДОЛ` WHERE 1=0;
SELECT * FROM `Конкурсная должность на заседании:ДОЛ`;
DROP TABLE IF EXISTS `Претендент на должность%ПЕРС`;
CREATE TABLE `Претендент на должность%ПЕРС` (
`Код` INT NOT NULL PRIMARY KEY,
`ФИО` CHAR(50) NOT NULL,
`Результаты голосования` CHAR(50) NOT NULL,
`ИД\ПРЕ^КОН` INT NOT NULL,
`ИД_ДОЛ\ПРЕ^СПР` INT NOT NULL,
FOREIGN KEY (`ИД\ПРЕ^КОН`) REFERENCES `Конкурсная должность на заседании:ДОЛ` (`ИД`),
FOREIGN KEY (`ИД_ДОЛ\ПРЕ^СПР`) REFERENCES `Справка+` (`ИД`)
);
INSERT INTO `Претендент на должность%ПЕРС` VALUES
(1, "ФИО", "Утвердить", (SELECT `ИД` FROM `Конкурсная должность на заседании:ДОЛ` WHERE `ИД_ДОЛ\КОН^СПР` = 5), (SELECT `ИД` FROM `Справка+` WHERE `Слк` = "ДОЛ" AND `Код` = 1)),
(2, "ФИО", "Утвердить", (SELECT `ИД` FROM `Конкурсная должность на заседании:ДОЛ` WHERE `ИД_ДОЛ\КОН^СПР` = 6), (SELECT `ИД` FROM `Справка+` WHERE `Слк` = "ДОЛ" AND `Код` = 2))
;
SELECT "`Претендент на должность%ПЕРС` Table Content:" FROM `Претендент на должность%ПЕРС` WHERE 1=0;
SELECT * FROM `Претендент на должность%ПЕРС`;
DROP VIEW IF EXISTS `вирт_Заседание`;
CREATE VIEW `вирт_Заседание` AS
SELECT
`ЗАС`.`Регномер` AS `Регномер заседания`,
`ЗАС`.`Дата проведения` AS `Дата проведения заседания`,
`СПР`.`Код` AS `Код помещения`,
`СПР`.`Название` AS `Адрес помещения`,
`СЕК`.`Код` AS `Код секретаря`,
`СЕК`.`ФИО` AS `ФИО секретаря`,
`ЗАС`.`ИД` AS `ИД\Заседание`
FROM `Заседание` AS `ЗАС`
LEFT JOIN `Справка+` AS `СПР` ON `СПР`.`ИД` = `ЗАС`.`ИД_ПОМ\ЗАС^СПР`
LEFT JOIN `Секретарь%ПЕРС` AS `СЕК` ON `СЕК`.`ИД` = `ЗАС`.`ИД\ЗАС^СЕК`;
SELECT * FROM `вирт_Заседание`;
DROP PROCEDURE IF EXISTS `проц_Приглашенный на заседание`;
CREATE PROCEDURE `проц_Приглашенный на заседание`
(IN `@ИД\Заседание` INT)
SELECT
`ПРИ`.`Код` AS `Код приглашенного`,
`ПРИ`.`ФИО` AS `ФИО приглашенного`,
`ПРИ`.`Дата отправки приглашения` AS `Дата отправки приглашения`,
`ПРИ`.`Дата ответа на приглашение` AS `Дата ответа на приглашение`,
`ПРИ`.`Содержание ответа` AS `Содержание ответа`
FROM `Приглашенный%ПЕРС` AS `ПРИ`
WHERE `ПРИ`.`ИД\ПРИ^ЗАС` = `@ИД\Заседание`;
CALL `проц_Приглашенный на заседание` (1);
CALL `проц_Приглашенный на заседание` (2);
DROP PROCEDURE IF EXISTS `проц_Тема заседания`;
CREATE PROCEDURE `проц_Тема заседания`
(IN `@ИД\Заседание` INT)
SELECT
`ТЕМ`.`Нпп` AS `Нпп темы`,
`ТЕМ`.`Название` AS `Название темы`,
`СПР`.`Код` AS `Код вида темы`,
`СПР`.`Название` AS `Название вида темы`,
`ТЕМ`.`ИД` AS `ИД\Тема заседания`
FROM `Тема заседания\ЗАС` AS `ТЕМ`
LEFT JOIN `Справка+` AS `СПР` ON `СПР`.`ИД` = `ТЕМ`.`ИД_ВИД\ТЕМ^СПР`
WHERE `ТЕМ`.`ИД\ТЕМ^ЗАС` = `@ИД\Заседание`;
CALL `проц_Тема заседания` (1);
CALL `проц_Тема заседания` (2);
DROP PROCEDURE IF EXISTS `проц_Планируемый докладчик по теме`;
CREATE PROCEDURE `проц_Планируемый докладчик по теме`
(IN `@ИД\Тема заседания` INT)
SELECT
`ДОК`.`Код` AS `Код докладчика`,
`ДОК`.`ФИО` AS `ФИО докладчика`,
`ДОК`.`Роль` AS `Роль докладчика`
FROM `Докладчик%ПЕРС` AS `ДОК`
WHERE `ДОК`.`ИД\ДОК^ТЕМ` = `@ИД\Тема заседания`;
CALL `проц_Планируемый докладчик по теме` (1);
CALL `проц_Планируемый докладчик по теме` (2);
DROP VIEW IF EXISTS `вирт_Тема заседания`;
CREATE VIEW `вирт_Тема заседания` AS
SELECT
`ЗАС`.`Регномер` AS `Регномер заседания`,
`ТЕМ`.`Нпп` AS `Нпп темы`,
`ТЕМ`.`Название` AS `Название темы`,
`ТЕМ`.`Решение` AS `Решение по теме`,
`ДОК`.`Код` AS `Код докладчика`,
`ДОК`.`ФИО` AS `ФИО докладчика`,
`СПРд`.`Код` AS `Код должности докладчика`,
`СПРд`.`Название` AS `Название должности докладчика`,
`ДОК`.`Роль` 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 `ПЕРв`.`ИД` = `ВЫС`.`ИД\ВЫС^ПЕРв`
LEFT JOIN `Справка+` AS `СПРв` ON `СПРв`.`ИД` = `ПЕРв`.`ИД_ДОЛ\ПЕРв^СПР`;
SELECT * FROM `вирт_Тема заседания`;
DROP VIEW IF EXISTS `вирт_Конкурсное заседание`;
CREATE VIEW `вирт_Конкурсное заседание` AS
SELECT
`ЗАС`.`Регномер` AS `Регномер заседания`,
`ЗАС`.`Дата проведения` AS `Дата проведения заседания`,
`СПР`.`Код` AS `Код помещения`,
`СПР`.`Название` AS `Адрес помещения`,
`СЕК`.`Код` AS `Код секретаря`,
`СЕК`.`ФИО` AS `ФИО секретаря`,
COUNT(*) AS `Число конкурсных должностей`
FROM `Конкурсная должность на заседании:ДОЛ` AS `КОН`
LEFT JOIN `Заседание` AS `ЗАС` ON `ЗАС`.`ИД` = `КОН`.`ИД\КОН^ЗАС`
LEFT JOIN `Справка+` AS `СПР` ON `СПР`.`ИД` = `ЗАС`.`ИД_ПОМ\ЗАС^СПР`
LEFT JOIN `Секретарь%ПЕРС` AS `СЕК` ON `СЕК`.`ИД` = `ЗАС`.`ИД\ЗАС^СЕК`
GROUP BY `КОН`.`ИД`;
SELECT * FROM `вирт_Конкурсное заседание`;