Министерство образования и науки Российской Федерации Севастопольский государственный университет Расчётно-графическое задание СОЗДАНИЕ ПОЛЬЗОВАТЕЛЬСКИХ ПРЕДСТАВЛЕНИЙ И ИНДЕКСОВ Выполнил: Ст.гр. УТС/б-21-о Данилюк И.О. Проверил: Ченгарь О.В. Севастополь 2018 1. Цель работы Ознакомиться с принципом работы пользовательских представлений и индексов, продемонстрировав работу с ними на примере. 2. Постановка задачи Создание представления Для заданной вариантом базы данных разработать и выполнить с помощью SQL-редактора PHPMyAdmin следующие запросы: 1) Запрос на создание представления для ввода данных в таблицу; 2) Запрос, который продемонстрирует успешный ввод данных через созданное представление; 3) Запрос, который продемонстрирует отрицательный результат при вводе данных через созданное представление; 4) Запрос на удаление созданного представления; 5) Запрос на создание представления для вывода данных из двух или более таблиц одновременно; Создание индекса Разработать и выполнить с помощью SQL-редактора PHPMyAdmin следующие запросы: 1) Запрос на создание уникального индекса; 2) Запрос на создание индекса на поле, по которому сортируются данные; 3) Запрос на создание индекса на поле, по которому происходит группировка во время агрегации; 4) Запрос на создание составного индекса с учетом селективности колонок; 5) Запрос на создание составного индекса, причем обосновать очередность перечисления полей в индексе (группировка, сортировка, частота использования) и их количество. После каждого запроса на создание индекса представить соответствующий запрос на выборку, для которого индексация имеет смысл. После чего обязательно удалять созданный индекс. Рисунок 1 – схема БД 3. ХОД РАБОТЫ Создание представления 1) Запрос на создание представления CREATE VIEW StudView AS SELECT * FROM `Студент`; INSERT INTO StudView (`Номер_зачётной_книжки`, `ФИО`, `Номер_группы`, `Стипендия`, `Номер_специальности`) VALUES (351734, 'Колвецкий Аристарх Моисеевич', 'АВТ11', 100, 10 ) Рисунок 2 – Таблица с новыми значениями 2) Запрос с отрицательным результатом. Ошибка была произведена о причине использования оператора DISTINCT CREATE VIEW StudView2 AS SELECT DISTINCT `Номер_зачётной_книжки` FROM `Студент`; INSERT INTO StudView2 (`Номер_зачётной_книжки`) VALUES (63461) Рисунок 3 – ошибка при созании представления 3) Удаление представления DROP VIEW studview; 4) Запрос на создание представления с выводом нескольких таблиц CREATE VIEW StudView3 AS SELECT `Студент`.`Стипендия`, `Студент`.`ФИО`, `Студент`.`Номер_специальности`,`Специальность`.`Наименование специальности` FROM `Специальность` JOIN `Студент` ON `Студент`.`Номер_специальности` = `Специальность`.`id_specialty` Рисунок 4 – Успешное создание представления с выводом таблиц Создание индекса 1) Запрос на создание индекса Рисунок 5 – Запрос на создание индекса 2) Запрос на создание индекса на поле, по которому сортируются данные; CREATE INDEX fio_ind ON `Студент`(`ФИО` ASC) SELECT * FROM `Студент` ORDER BY `ФИО` ASC Рисунок 6 – Запрос на создание индекса на поле, по которому сортируются данные 3) Запрос на создание индекса на поле, по которому происходит группировка во время агрегации; SELECT `Студент`.`Номер_специальности`, MAX(`Стипендия`) FROM `Студент` GROUP BY `Номер_специальности` CREATE INDEX num_spec ON `Студент` (`Номер_специальности`) Рисунок 7 - Запрос на создание индекса на поле, по которому происходит группировка во время агрегации 4) Запрос на создание составного индекса с учетом селективности колонок SELECT * FROM `Специальность` WHERE `id_specialty` < 80 AND `Номер_факультета` = 10; CREATE INDEX ind_sspect ON `Специальность`(`id_specialty`, `Номер_факультета`) Рисунок 8 - Запрос на создание составного индекса с учетом селективности колонок 4. Вывод В ходе выполнения расчётно-графического задания мы ознакомились с принципом работы пользовательских представлений и индексов, продемонстрировав работу с ними на примере. Были осозданы представления и индексы в БД в соответствие с вариантом