DROP TABLE IF EXISTS `Справка+`;
CREATE TABLE `Справка+`
(`Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,`Слк` CHAR (4) NOT NULL
, `Код` CHAR (4) NOT NULL
, `Название` VARCHAR (100) NOT NULL
, CONSTRAINT `УН\СПР` UNIQUE KEY (`Слк`, `Код`));
INSERT INTO `Справка+` VALUES
(DEFAULT, "ДОЛ", "101", "Должность руководителя"),
(DEFAULT, "ДОЛ", "102", "Должность преподавателя"),
(DEFAULT, "ФАК", "2", "Факультет информатики и робототехники"),
(DEFAULT, "ДИС", "302", "Базы данных"),
(DEFAULT, "НАПР", "401", "Направление");
SELECT "`Справка+` Table Content:" FROM `Справка+` WHERE 1 = 0;
SELECT * FROM `Справка+`;
DROP TABLE IF EXISTS `Кафедра\ФАК`;
CREATE TABLE `Кафедра\ФАК`
(`Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Код` CHAR (10) NOT NULL,
`Название` VARCHAR (50) NOT NULL,
CONSTRAINT `УН\КАФ`
UNIQUE KEY (`Код`, `Ид\КАФ^СПР`),
`Ид\КАФ^СПР` INT NOT NULL
REFERENCES `Справка+` (`Ид`));
INSERT INTO `Кафедра\ФАК` SET
`Ид` = DEFAULT, `Код` = "001-К", `Название` = "АСУ",
`Ид\КАФ^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "ФАК");
SELECT "`Кафедра\ФАК` Table Content:" FROM `Кафедра\ФАК` WHERE 1 = 0;
SELECT * FROM `Кафедра\ФАК`;
DROP TABLE IF EXISTS `Сотрудник%ПЕРС`;
CREATE TABLE `Сотрудник%ПЕРС`
(`Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Код` CHAR (10) NOT NULL UNIQUE
, `Паспорт` CHAR (10) NOT NULL UNIQUE
, `ФИО` VARCHAR (50) NOT NULL
, `Ид\СОТ^СПР` INT NOT NULL
REFERENCES `Справка+` (`Ид`));
INSERT INTO `Сотрудник%ПЕРС` SET
`Ид` = DEFAULT, `Код` = "001-ПРЕ", `Паспорт` = "567976", `ФИО` = "Александров Б. К.",
`Ид\СОТ^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "ДОЛ" AND `Код` = "102");
INSERT INTO `Сотрудник%ПЕРС` SET
`Ид` = DEFAULT, `Код` = "001-РУК", `Паспорт` = "875426", `ФИО` = "Харитонов С. С.",
`Ид\СОТ^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "ДОЛ" AND `Код` = "101");
SELECT "`Сотрудник%ПЕРС` Table Content:" FROM `Сотрудник%ПЕРС` WHERE 1 = 0;
SELECT * FROM `Сотрудник%ПЕРС`;
DROP TABLE IF EXISTS `Преподаватель: СОТ`;
CREATE TABLE `Преподаватель: СОТ`
(`Ид\ПРЕ^СОТ` INT NOT NULL PRIMARY KEY
REFERENCES `Сотрудник%ПЕРС` (`Ид`),
`Ид\ПРЕ^КАФ` INT NOT NULL
REFERENCES `Кафедра\ФАК` (`Ид`));
INSERT INTO `Преподаватель: СОТ` SET
`Ид\ПРЕ^СОТ` = (SELECT `Ид` FROM `Сотрудник%ПЕРС` WHERE `Код` = "001-ПРЕ"),
`Ид\ПРЕ^КАФ` = (SELECT `Ид` FROM `Кафедра\ФАК` WHERE `Код` = "001-К");
SELECT "`Преподаватель: СОТ` Table Content:" FROM `Преподаватель: СОТ` WHERE 1 = 0;
SELECT * FROM `Преподаватель: СОТ`;
DROP TABLE IF EXISTS `Руководитель: СОТ`;
CREATE TABLE `Руководитель: СОТ`
(`Ид\РУК^СОТ` INT NOT NULL PRIMARY KEY
REFERENCES `Сотрудник%ПЕРС` (`Ид`));
INSERT INTO `Руководитель: СОТ` SET
`Ид\РУК^СОТ` = (SELECT `Ид` FROM `Сотрудник%ПЕРС` WHERE `Код` = "001-РУК");
SELECT "`Руководитель: СОТ` Table Content:" FROM `Руководитель: СОТ` WHERE 1 = 0;
SELECT * FROM `Руководитель: СОТ`;
DROP TABLE IF EXISTS `Приказ`;
CREATE TABLE `Приказ`
(`Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Регномер` CHAR (10) NOT NULL UNIQUE,
`Дата приказа` VARCHAR (50) NOT NULL,
`Ид\ПРИК^РУК` INT NOT NULL
REFERENCES `Руководитель: СОТ` (`Ид\РУК^СОТ`));
INSERT INTO `Приказ` SET
`Ид` = DEFAULT, `Регномер` = "34667-98", `Дата приказа` = "02.12.2023",
`Ид\ПРИК^РУК` = (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,
`Год` CHAR (10) NOT NULL UNIQUE KEY,
`Сроки` VARCHAR (50) NOT NULL);
INSERT INTO `Кампания` VALUES
(DEFAULT, "2023", "31.12.2023");
SELECT "`Кампания` Table Content:" FROM `Кампания` WHERE 1 = 0;
SELECT * FROM `Кампания`;
DROP TABLE IF EXISTS `Экзаменационная комиссия`;
CREATE TABLE `Экзаменационная комиссия`
(`Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Регномер` CHAR (10) NOT NULL UNIQUE KEY,
`Ид\КОМ^ПРИК` INT NOT NULL
REFERENCES `Приказ` (`Ид`),
`Ид\КОМ^КАМП` INT NOT NULL
REFERENCES `Кампания` (`Ид`),
`Ид\КОМ^СПР` INT NOT NULL
REFERENCES `Справка+` (`Ид`));
INSERT INTO `Экзаменационная комиссия` SET
`Ид` = DEFAULT, `Регномер` = "74729-09",
`Ид\КОМ^ПРИК` = (SELECT `Ид` FROM `Приказ` WHERE `Регномер` = "34667-98"),
`Ид\КОМ^КАМП` = (SELECT `Ид` FROM `Кампания` WHERE `Год` = "2023"),
`Ид\КОМ^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "ДИС" AND `Код` = "302");
SELECT "`Экзаменационная комиссия` Table Content:" FROM `Экзаменационная комиссия` WHERE 1 = 0;
SELECT * FROM `Экзаменационная комиссия`;
DROP TABLE IF EXISTS `Состав: КОМ*ПРЕ`;
CREATE TABLE `Состав: КОМ*ПРЕ`
(`Нпп` CHAR (100) NOT NULL
, `Роль` CHAR (100) NOT NULL
, CONSTRAINT `ПК\СОСТ` PRIMARY KEY (`Ид\СОСТ^КОМ`, `Ид\СОСТ^ПРЕ`)
, `Ид\СОСТ^КОМ` INT NOT NULL
REFERENCES `Экзаменационная комиссия` (`Ид`)
, `Ид\СОСТ^ПРЕ` INT NOT NULL
REFERENCES `Преподаватель: СОТ` (`Ид\ПРЕ^СОТ`));
INSERT INTO `Состав: КОМ*ПРЕ` SET
`Нпп` = "1", `Роль` = "Роль",
`Ид\СОСТ^КОМ` = (SELECT `Ид` FROM `Экзаменационная комиссия` WHERE `Регномер` = "74729-09"),
`Ид\СОСТ^ПРЕ` = (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,
`Код` CHAR (10) NOT NULL,
`Название` CHAR (100) NOT NULL,
`Сведения` CHAR (100) NOT NULL,
CONSTRAINT `УН\СПЕ`
UNIQUE KEY (`Ид\СПЕ^СПР`, `Код`),
`Ид\СПЕ^СПР` INT NOT NULL
REFERENCES `Справка+` (`Ид`));
INSERT INTO `Специальность\НАПР` SET
`Ид` = DEFAULT, `Код` = "123", `Название` = "Специальность 1", `Сведения` = "Сведения",
`Ид\СПЕ^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "НАПР" AND `Код` = "401");
INSERT INTO `Специальность\НАПР` SET
`Ид` = DEFAULT, `Код` = "234", `Название` = "Специальность 2 вузовская", `Сведения` = "Сведения",
`Ид\СПЕ^СПР` = (SELECT `Ид` FROM `Справка+` WHERE `Слк` = "НАПР" AND `Код` = "401");
SELECT "`Специальность\НАПР` Table Content:" FROM `Специальность\НАПР` WHERE 1 = 0;
SELECT * FROM `Специальность\НАПР`;
DROP TABLE IF EXISTS `Абитуриент`;
CREATE TABLE `Абитуриент`
(`Ид` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Регномер` CHAR (10) NOT NULL UNIQUE KEY,
`Дата подачи` VARCHAR (50) NOT NULL,
`Сведения абитуриента` CHAR (10) NOT NULL,
`Ид\АБИТ^СПЕ` INT NOT NULL
REFERENCES `Специальность\НАПР` (`Ид`),
`Ид\АБИТ^КАМП` INT NOT NULL
REFERENCES `Кампания` (`Ид`));
INSERT INTO `Абитуриент` SET
`Ид` = DEFAULT, `Регномер` = "56959-80",
`Дата подачи` = "10.09.2023", `Сведения абитуриента` = "Сведения",
`Ид\АБИТ^СПЕ` = (SELECT `Ид` FROM `Специальность\НАПР` WHERE `Код` = "123"),
`Ид\АБИТ^КАМП` = (SELECT `Ид` FROM `Кампания` WHERE 1);
INSERT INTO `Абитуриент` SET
`Ид` = DEFAULT, `Регномер` = "34567-80",
`Дата подачи` = "10.09.2023", `Сведения абитуриента` = "Сведения",
`Ид\АБИТ^СПЕ` = (SELECT `Ид` FROM `Специальность\НАПР` WHERE `Код` = "234"),
`Ид\АБИТ^КАМП` = (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,
`Регномер заседания` CHAR (10) NOT NULL UNIQUE KEY,
`Дата заседания` VARCHAR (50) NOT NULL,
`Ид\ЗАС^КАМП` INT NOT NULL
REFERENCES `Кампания` (`Ид`));
INSERT INTO `Заседание приемной комиссии` SET
`Ид` = DEFAULT, `Регномер заседания` = "34628-73", `Дата заседания` = "20.09.2023",
`Ид\ЗАС^КАМП` = (SELECT `Ид` FROM `Кампания` WHERE 1);
SELECT "`Заседание приемной комиссии` Table Content:" FROM `Заседание приемной комиссии` WHERE 1 = 0;
SELECT * FROM `Заседание приемной комиссии`;
DROP TABLE IF EXISTS `Решение по абитуриенту: ЗАС*АБИТ`;
CREATE TABLE `Решение по абитуриенту: ЗАС*АБИТ`
(`Решение` CHAR (10) NOT NULL,
CONSTRAINT `ПК\РЕШ`
PRIMARY KEY (`Ид\РЕШ^ЗАС`, `Ид\РЕШ^АБИТ`),
`Ид\РЕШ^ЗАС` INT NOT NULL
REFERENCES `Заседание приемной комиссии` (`Ид`),
`Ид\РЕШ^АБИТ` INT NOT NULL
REFERENCES `Абитуриент` (`Ид`),
`Ид\РЕШ^ПРИК` INT NOT NULL
REFERENCES `Приказ` (`Ид`));
INSERT INTO `Решение по абитуриенту: ЗАС*АБИТ` SET
`Решение` = "Зачислен",
`Ид\РЕШ^ЗАС` = (SELECT `Ид` FROM `Заседание приемной комиссии` WHERE `Регномер заседания` = "34628-73"),
`Ид\РЕШ^АБИТ` = (SELECT `Ид` FROM `Абитуриент` WHERE `Регномер` = "56959-80"),
`Ид\РЕШ^ПРИК` = (SELECT `Ид` FROM `Приказ` WHERE `Регномер` = "34667-98");
SELECT "`Решение по абитуриенту: ЗАС*АБИТ` Table Content:" FROM `Решение по абитуриенту: ЗАС*АБИТ` WHERE 1 = 0;
SELECT * FROM `Решение по абитуриенту: ЗАС*АБИТ`;
DROP TABLE IF EXISTS `Экзамен: АБИТ*КОМ`;
CREATE TABLE `Экзамен: АБИТ*КОМ`
(`Нпп` CHAR (10) NOT NULL,
`Дата` CHAR (100) NOT NULL,
`Оценка` CHAR (10) NOT NULL,
CONSTRAINT `ПК\ЭКЗ`
PRIMARY KEY (`Ид\ЭКЗ^КОМ`, `Ид\ЭКЗ^АБИТ`),
`Ид\ЭКЗ^КОМ` INT NOT NULL
REFERENCES `Экзаменационная комиссия` (`Ид`),
`Ид\ЭКЗ^АБИТ` INT NOT NULL
REFERENCES `Абитуриент` (`Ид`),
`Ид\ЭКЗ^СПЕ` INT NOT NULL
REFERENCES `Специальность\НАПР` (`Ид`));
INSERT INTO `Экзамен: АБИТ*КОМ` SET
`Нпп` = "1", `Дата` = "12.09.2023", `Оценка` = "5",
`Ид\ЭКЗ^КОМ` = (SELECT `Ид` FROM `Экзаменационная комиссия` WHERE `Регномер` = "74729-09"),
`Ид\ЭКЗ^АБИТ` = (SELECT `Ид` FROM `Абитуриент` WHERE `Регномер` = "56959-80"),
`Ид\ЭКЗ^СПЕ` = (SELECT `Ид` FROM `Специальность\НАПР` WHERE `Код` = "123");
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 `Название должности`
FROM `Решение по абитуриенту: ЗАС*АБИТ` AS `РЕШ`
LEFT JOIN `Приказ` AS `ПРИК`
ON `РЕШ`.`Ид\РЕШ^ПРИК` = `ПРИК`.`Ид`
LEFT JOIN `Руководитель: СОТ` AS `РУК`
ON `ПРИК`.`Ид\ПРИК^РУК` = ``.`Ид\РУК^СОТ`
LEFT JOIN `Сотрудник%ПЕРС` AS `СОТ`
ON `РУК`.`Ид\РУК^СОТ` = `СОТ`.`Ид`
LEFT JOIN `Справка+` AS `СПР`
ON `СОТ`.`Ид\СОТ^СПР` = `СПР`.`Ид`
WHERE `РЕШ`.`Ид\РЕШ^ЗАС` = `@Ид\Заседание приемной комиссии`
;
CALL `проц_Решение по абитуриенту` (1);
DROP VIEW IF EXISTS `вирт_Экзамен%Абитуриент`;
CREATE VIEW `вирт_Экзамен%Абитуриент` AS
SELECT
`ЭКЗ`.`Нпп` 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 `СПЕ`.`Ид\СПЕ^СПР` = `СПР`.`Ид`
;
SELECT * FROM `вирт_Экзамен%Абитуриент`;
DROP VIEW IF EXISTS `вирт_Заседание приемной комиссии_решения`;
CREATE VIEW `вирт_Заседание приемной комиссии_решения` AS
WITH
`ЧРЕШ` AS (
SELECT
`РЕШ`.`Ид\РЕШ^ЗАС` AS `Ид_РЕШ`,
COUNT(*) AS `Кол_РЕШ`
FROM `Решение по абитуриенту: ЗАС*АБИТ` AS `РЕШ`
GROUP BY `Ид\РЕШ^ЗАС`)
SELECT
`ЗАС`.`Регномер заседания` AS `Регномер заседания`,
`ЗАС`.`Дата заседания` AS `Дата заседания`,
`КАМП`.`Год` AS `Год кампании`,
`КАМП`.`Сроки` AS `Сроки кампании`,
COUNT(*) AS `Количество решений`
FROM `Решение по абитуриенту: ЗАС*АБИТ` AS `РЕШ`
LEFT JOIN `Заседание приемной комиссии` AS `ЗАС`
ON `РЕШ`.`Ид\РЕШ^ЗАС` = `ЗАС`.`Ид`
LEFT JOIN `Кампания` AS `КАМП`
ON `ЗАС`.`Ид\ЗАС^КАМП` = `КАМП`.`Ид`
GROUP BY `РЕШ`.`Ид\РЕШ^ЗАС`;
SELECT * FROM `вирт_Заседание приемной комиссии_решения`;
DROP VIEW IF EXISTS `вирт_Заседание приемной комиссии_зачисленные`;
CREATE VIEW `вирт_Заседание приемной комиссии_зачисленные` AS
WITH
`ЧЗАЧ` AS (
SELECT
`РЕШ`.`Ид\РЕШ^ЗАС` AS `Ид_РЕШ`,
COUNT(*) AS `Кол_ЗАЧ`
FROM `Решение по абитуриенту: ЗАС*АБИТ` AS `РЕШ`
GROUP BY `Ид\РЕШ^ЗАС`)
SELECT
`ЗАС`.`Регномер заседания` AS `Регномер заседания`,
`ЗАС`.`Дата заседания` AS `Дата заседания`,
`КАМП`.`Год` AS `Год кампании`,
`КАМП`.`Сроки` AS `Сроки кампании`,
COUNT(*) AS `Число зачисленных`
FROM `Решение по абитуриенту: ЗАС*АБИТ` AS `РЕШ`
LEFT JOIN `Заседание приемной комиссии` AS `ЗАС`
ON `РЕШ`.`Ид\РЕШ^ЗАС` = `ЗАС`.`Ид`
LEFT JOIN `Кампания` AS `КАМП`
ON `ЗАС`.`Ид\ЗАС^КАМП` = `КАМП`.`Ид`
GROUP BY `РЕШ`.`Ид\РЕШ^ЗАС`;
SELECT * FROM `вирт_Заседание приемной комиссии_зачисленные`;