Uploaded by Катя Ткачук

TDB LAB 6

advertisement
Министерство образования и науки Российской Федерации
Севастопольский государственный университет
Расчётно-графическое задание
СОЗДАНИЕ ПОЛЬЗОВАТЕЛЬСКИХ ПРЕДСТАВЛЕНИЙ И
ИНДЕКСОВ
Выполнил:
Ст.гр. УТС/б-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. Вывод
В ходе выполнения расчётно-графического задания мы ознакомились с
принципом работы пользовательских представлений и индексов,
продемонстрировав работу с ними на примере.
Были осозданы представления и индексы в БД в соответствие с вариантом
Download