Professional Documents
Culture Documents
mysql - ГОТОВО-от Светы Сулимы
mysql - ГОТОВО-от Светы Сулимы
Бази даних
Методичні вказівки
до виконання лабораторних робіт
для студентів спеціальності
"Телекомунікації та радіотехніка"
Київ
КПІ ім. Ігоря Сікорського
2019
1
Бази даних [Текст]: метод. вказівки до викон. лаборатор. робіт для
студентів спеціальності "Телекомунікації та радіотехніка" / Уклад.: Л.С. Глоба,
С.В. Суліма. – К.: КПІ ім. Ігоря Сікорського, 2019. – 57 с.
Навчальне видання
Бази даних
Методичні вказівки
до виконання лабораторних робіт
для студентів спеціальності
"Телекомунікації та радіотехніка"
Відповідальний
редактор: Л.С. Глоба, докт. техн. наук
За редакцією укладачів
Надруковано з оригінал-макета замовника
Темплан 2008 р., поз. 2-022
2
Зміст
Загальні методичні вказівки.........................................................................................................5
Вимоги до оформлення звіту з лабораторної роботи.................................................................6
Підготовка до виконання лабораторних робіт. Встановлення програмного забезпечення
MySQL............................................................................................................................................7
Лабораторна робота №1 Створення бази даних у MySQL Workbench..................................11
Лабораторна робота № 2 Створення запитів і модифікація таблиць бази даних у
MySQLWorkbench.......................................................................................................................26
Лабораторна робота №3 Використання транзакцій у MySQL Workbench............................42
Лабораторна робота №4 Робота з тригерами в MySQL...........................................................51
Додаток А Перелік предметних областей.................................................................................62
3
Вступ
4
ЗАГАЛЬНІ МЕТОДИЧНІ ВКАЗІВКИ
5
ВИМОГИ ДО ОФОРМЛЕННЯ ЗВІТУ З ЛАБОРАТОРНОЇ РОБОТИ
6
ПІДГОТОВКА ДО ВИКОНАННЯ ЛАБОРАТОРНИХ РОБІТ.
ВСТАНОВЛЕННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ MYSQL
Теоретичні відомості:
7
Послідовність дій при завантаженні:
8
Після завантаження відкриваємо файл, та інсталюємо тільки ті програми
які нам необхідні:
-- MySQL Server
-- MySQL Workbench
-- Samples and Examples
9
--MySQL Documentation
УВАГА!!! На початку інсталяції обов’язково потрібно дати дозвіл на
оновлення, інакше сервер не буде працювати.
10
Після інсталяції вигадайте пароль, всі налаштування залишите за
замовчуванням. Виконавши перелічені вище дії, ви готові до виконання
лабораторних робіт.
11
ЛАБОРАТОРНА РОБОТА №1
СТВОРЕННЯ БАЗИ ДАНИХ У MYSQL WORKBENCH
Реляційні ключі
13
Рис. 1. 1. Створення нової БД
Вказуємо назву БД <Shop> (Рис. 1.2. п.1). Задаємо формат зберігання як
зображено на (Рис. 1.2. п.2). Натискаємо на клавішу <застосувати> (Рис. 2. п.3) .
14
Рис. 1.2. Назва БД та формат зберігання
Створюємо відношення як показано на (Рис. 1.3.)
15
Аналогічні дії виконуємо створюючи ще три відношення (Рис. 1.5, Рис.
1.6, Рис. 1.7)
Рис. 1.5
16
Рис. 1.7 Товари
Головним відношення у нашій базі даних є <Товари>. Тому потрібно
проставити зв’язки для цілісності даних які будемо вводити. Відкриваємо
відношення для редагування, натискаємо на
Реалізація зв’язку багато-до-багатьох
Взаємовідносини сутностей виражаються зв'язками.
Класи зв'язків (relationship classes) - це взаємовідносини між класами
сутностей.
Примірники зв'язку (relationship instances) - взаємини між
екземплярами сутностей
Ступінь зв'язку (relationship degree) - число класів сутностей, що
беруть участь в зв'язку.
17
Позначення засобами в UML- діаграмах:
тип зв'язку -
Зв’язок "один-до-багатьох"
18
додати до таблиці ''Замовлення'' та назвати його ''Код користувача''. Потім
програма Access зможе використати номер із поля ''Код користувача'' в таблиці
''Замовлення'' для пошуку користувачів, які відповідають певним замовленням.
Зв’язок "багато-до-багатьох"
19
Зв’язок "один-до-одного"
Реалізація зв’язків
Foreign keys (Рис. 1.8. п.1). Даємо назву сценарію і вказуємо зв’язок з
необхідним відношенням (Рис. 1.8. п.2 ). Вказуємо зв’язки між атрибутами
відношень (Рис. 1.8. п.3 ). Обов’язково вказуємо каскадне видалення (Рис. 1.8.
п.4 ).
20
Рис. 1.8 Зв’язок з відношенням Бренди
Аналогічні дії виконуємо для інших відношень (Рис. 1.9, Рис. 1.10)
21
Рис. 1.10 Зв’язок з відношенням Тип товару
22
Рис. 1.12 Наповнення даними
23
24
Рис. 1.13 Результат виконаної роботи
25
2. Для кожного варіанту реалізуйте не менше 5 відношень по не менше 4
атрибутів у кожному.
3. Кожне відношення має мати третю нормальну форму.
4. Описати (письмово) кожне відношення та зв’язки між ними.
5. Наповнити відношення даними.
6. Згенерувати схему.
V. Контрольні питання:
1. Визначте терміни сутність, атрибут, зв'язок.
2. Опишіть структуру реляційних даних.
3. Дайте визначення основним термінам: відношення, атрибут, домен,
кортеж, степінь відношення і кардинальність. Наведіть приклади.
4. Наведіть класифікацію реляційних ключів і дайте відповідні
визначення. Поясніть суть на прикладах.
5. Дайте визначення зв'язку та наведіть приклад.
6. Перерахуйте три типи бінарних зв'язків та наведіть приклади.
Намалюйте ER-діаграму для кожного типу.
7. Наведіть приклад ER-діаграми для сутностей ФАКУЛЬТЕТ і ДОЦЕНТ,
що мають зв'язок 1: N. Зробіть припущення, що на факультеті може і не
бути доцентів, але кожен доцент повинен належати до якого-небудь
факультету.
26
ЛАБОРАТОРНА РОБОТА № 2
СТВОРЕННЯ ЗАПИТІВ І МОДИФІКАЦІЯ ТАБЛИЦЬ БАЗИ ДАНИХ У
MYSQLWORKBENCH
27
Порядок проходження фраз в команді select повинен відповідати
наведеній вище послідовності. Для кращого розуміння механізму
функціонування виконайте наступні вправи:
ІI. Прості запити на мові SQL
Запит на мові SQL формується з використанням оператора Select.
Оператор Select використовується
• для вибірки даних з бази даних;
• для отримання нових рядків у складі оператора Insert;
• для оновлення інформації в складі оператора Update.
У загальному випадку оператор Select містить наступні сім
специфікаторів, розташованих в операторі в наступному порядку:
• специфікатор Select;
• специфікатор From;
• специфікатор Where;
• специфікатор Group by;
• специфікатор Having;
• специфікатор Order by;
Обов'язковими є тільки специфікатор Select і From. Ці два специфікатори
складають основу кожного запиту до бази даних, оскільки вони визначають
таблиці, з яких вибираються дані, і стовпці, які потрібно вибрати.
Специфікатор Where додається для вибірки певних рядків або вказівки
умови з'єднання. Специфікатор Order by додається для зміни порядку
одержуваних даних. Специфікатор Into temp додається для збереження цих
результатів у вигляді таблиці з метою виконання наступних запитів. Два
додаткових специфікатор оператора Select - Group by (специфікатор
групування) і Having (специфікатор умови вибірки групи) - дозволяють
виконувати більш складні вибірки даних.
Приклади
1. Вибір всіх рядків і стовпців таблиці.
Приклад.
28
Видати повну інформацію про бренди.
Рисунок 2.1
2. Зміна порядку відображення стовпців.
Приклад.
29
Отримати таблицю category в наступному порядку: name, alias_name,
discount, id.
30
Рисунок 2.2
3. Вибір заданих стовпців.
Приклад.
Отримати всі назви одягу з таблиці category.
31
Натискаємо на «Execute the selected portion of the script or everything, if
there is no selection» (3).
Результат: стовпець name таблиці category (Рис 2.3)
Рисунок 2.3
4. Вибір даних без повторення.
Приклад.
Видати назви всього одягу з таблиці category, виключаючи дублювання.
Рисунок 2.4
5. Використання в запитах констант і виразів.
Приклад.
Показати значення на які множиться ціна при знижці.
33
USE «назва_бази_даних» (1).
Обираємо для якого стовпця буде виконаний потрібний вираз, за
допомогою команди:
SELECT «назва_стовпця», “Назва_виразу”,
«назва_стовпця_над_яким_виконується_дія»«символ_дії»«константа»
FROM «назва_таблиці» (2).
Натискаємо на «Execute the selected portion of the script or everything, if
there is no selection» (3).
Результат: стовпець name таблиці category, стовпець Відносне значення
(множник ціни), стовпець зі зміненими даними відповідно до виразу
discount/100 (Рис 2.5).
Рисунок 2.5
6. Обмеження у вибірці.
Приклад.
Видати назви чоловічого одягу, які мають знижку ≥ 15%.
34
Вказуємо з якою базою даних ми будемо працювати за допомогою
команди:
USE «назва_бази_даних» (1).
Обираємо для якого стовпця будуть виконуватись наступні умови, за
допомогою команди:
SELECT «назва_стовпця» FROM «назва_таблиці» WHERE
«назва_стовпця»«дія»«значення» (2).
Натискаємо на «Execute the selected portion of the script or everything, if
there is no selection» (3).
Результат: стовпець name таблиці category, наповнений даними які
задовольняють задані умови (Рис 2.6).
Рисунок 2.6
7. Вибірка з упорядкуванням.
35
Приклад.
Видати id товару чоловічого взуття в порядку спадання знижки.
36
Рисунок 2.7
8. Команда in (not in).
Приклад.
Видати назви одягу знижка яких дорівнює 5% або 15%;
Рисунок 2.8
9. Вибір за шаблоном.
Для запитів з пошуком за шаблоном, основаних на пошуку підрядків в
полях типу CHARACTER, використовуються ключове слова LIKE.
Включення в вираз ключового слова NOT породжує умова c зворотним сенсом.
Ключове слово LIKE відповідає стандарту ANSI.
Символ Значення
LIKE
% Замінює послідовність символів
- Замінює будь-який одиночний символ
\ Скасовує спеціальне призначення наступного символу
Приклад.
Вибрати список брендів речей, які починаються на букву “C”.
38
Результат (рис 2.9):
Рисунок 2.9
39
Рисунок 2.10
б) Видати середню ціну усіх товарів.(Рис 2.11)
Рисунок 2.11
в) Видати мінімальну та максимальну ціну товарів. (Рис 2.12)
40
Рисунок 2.12
г) За замовчуванням всі вище перелічені три функції враховують всі
рядки вибірки для обчислення результату. Але вибірка може містити
повторювані значення. Якщо необхідно виконати обчислення тільки над
унікальними значеннями, виключивши з набору значень повторювані дані, то
для цього застосовується оператор DISTINCT. За замовчуванням замість
DISTINCT застосовується оператор ALL, який вибирає всі рядки.
Приклад.
Видати кількість типів продукту. (Рис 2.13)
Рисунок 2.13
41
В даному випадку ми бачимо, що типи можуть повторюватися в таблиці,
так як деякі товари можуть мати однакові типи. Тому щоб підрахувати кількість
унікальних типів, необхідно використовувати оператор DISTINCT.
Завдання:
1. Написати запит на операцію вибірки.
2. Написати запит на операцію проекції.
3. Підготувати і виконати засобами СУБД MySQL запит по вибірці
інформації з таблиць бази даних з використанням агрегатної функцій.
4. Написати 3 багатотабличних запити, у тому числі з використанням
зовнішнього з’єднання.
5. Написати запит на одну з операцій: об’єднання, перетину або
різниці.
6. Підготувати і виконати засобами СУБД MySQL 3 запити по
модифікації інформації (вставка, видалення, заміщення) з таблиць бази даних.
7. Написати запит з підзапитом.
Контрольні питання
1. Що таке корельований запит? Чим відрізняється корельований запит
від некорельованого?
2. Які існують обмеження на формування корельованого запиту?
3. Яким чином зберегти результати запиту в таблиці?
4. Якими засобами SQL реалізуються такі операції реляційної алгебри:
обмеження, декартовій добуток, проекція, перетин, об'єднання, різниця,
з'єднання?
5. Що таке зовнішнє з'єднання?
6. У яких випадках замість фрази IN можна використовувати операцію
порівняння?
7. Які існують засоби групування в SQL? Як вони використовуються?
42
ЛАБОРАТОРНА РОБОТА №3
ВИКОРИСТАННЯ ТРАНЗАКЦІЙ У MYSQL WORKBENCH
I.Теоретичний матеріал:
Властивості транзакцій:
Одним з найбільш розповсюджених наборів вимог до транзакцій і
транзакційних систем є набір ACID (англ. Atomicity, Consistency, Isolation,
Durability). Вимоги ACID були в головному сформульовані наприкінці 70-х
43
років Джимом Ґреєм. Разом з тим, існують спеціалізовані системи з
ослабленими транзакційними властивостями.
Atomicity — Атомарність
Consistency — Узгодженість
Isolation — Ізольованість
Durability — Надійність
45
тому таке читання є потенційним джерелом помилок. Неможливими є втрачені
зміни (lost changes), можливими є неповторювані читання і фантоми.
1 — Читання підтверджених даних (Read Committed) — читання всіх
змін своєї транзакції і зафіксованих змін паралельних транзакцій. Втрачені
зміни и брудне читання не дозволяються, можливими є неповторюване читання
і фантоми.
2 — Повторюване читання (Repeatable Read, Snapshot) — читання всіх
змін своєї транзакції, будь-які зміни, внесені паралельними транзакціями після
початку своєї, є недоступними. Втрачені зміни, брудне і неповторюване
читання не є можливими; можливі фантоми.
3— Впорядкований — (Serializable) — впорядковані транзакції.
Результат паралельного виконання впорядкованої транзакції з іншими
транзакціями повинен бути логічно еквівалентний результату їх будь-якого
послідовного виконання. Проблеми синхронізації не виникають.
Чим вище рівень ізоляції, тим більше потребується ресурсів, щоб його
забезпечити. Відповідно, підвищення ізольованості може приводити до
зниження швидкості виконання паралельних транзакцій, що є «платою» за
підвищення надійності.
Управління транзакціями
Для управління транзакціями використовуються наступні команди:
COMMIT - зберегти зміни.
ROLLBACK - скасувати зміни.
46
SAVEPOINT - створює точки збереження в групах транзакцій.
SET TRANSACTION - поміщає ім'я в транзакцію.
47
Команда DELETE видаляє рядок №1 в таблиці, а команда COMMIT
зберігає зміни в таблиці.
3) Оновити значення «discount» для рядка з id=3 на «дане значення» +
«половина даного значення»:
2. Команда ROLLBACK
48
1) Повинно було встановитись в id=2 в «discount» значення 20, але
була використана команда ROLLBACK яка відмінила виконання
транзакції.
3. Команда SAVEPOINT
49
7) Виконуємо транзакцію і повертаємося до 2 точки збереження «point1»;
50
Завдання
1. Виконати транзакцію над довільною таблицею. Видалити кортежі,
певний числовий параметр якої якого 10 і відразу зберегти дані.
2. Виконати транзакцію над довільною таблицею. Видаліть рядки з
id=2;3;6, створюючи точки збереження перед кожним видаленням. Перевірте
точки збереження.
3. Виконати транзакцію над довільною таблицею. Змініть числовий
параметр в одному з атрибутів з довільним id на +300 і -250 для іншого id.
4. Виконати транзакцію над довільною таблицею, в якій додається
новий атрибут з значенням 3000 для парних і 2000 для непарних значень
певного атрибуту.
Контрольні запитання
1. Що таке транзакція? Для чого її використовують?
2. Що свідчить про закінчення транзакції?
3. Назвіть основні властивості транзакцій і що вони собою являють.
4. Які переваги і недоліки використання транзакцій?
5. Для чого використовують команди COMMIT, ROLLBACK,
SAVEPOINT, SET TRANSACTION.
6. Поясніть як вирішується проблема паралельних транзакцій.
51
ЛАБОРАТОРНА РОБОТА №4
РОБОТА З ТРИГЕРАМИ В MYSQL
I.Теоретичний матеріал:
53
Тригер активується кожного разу, коли рядок видаляється з таблиці;
наприклад, за допомогою операторів DELETE і REPLACE. Оператор
TRUNCATE TABLE в таблиці не активує цей тригер, оскільки він не
використовує DELETE.
Простий приклад:
Інший приклад:
55
Забезпечення цілісності даних
Тригер запускається автоматично
Всі виконані операції вважаються транзакціями, тому в разі помилки ви
легко можете відкотити ті чи інші зміни.
56
Вона має наступну структуру:
59
У наведеному нижче прикладі перед тим, як вставити новий запис у
таблицю emp_details, перевірятиметься показник значення стовпців:
V. Контрольні питання:
1. Що таке тригер, процедура та збережена функція, у чому їх
відмінності?
2. Назвіть основні запити створюють, видаляють тригер та показують
список наявних тригерів.
3. З якими правами користувач може створювати тригер в наявній БД?
4. За якими типами операцій активується тригер?
5. Які є переваги використання тригерів в базах даних?
6. Для чого застосовують хеш-функції?
7. Що таке тимчасова таблиця і які її відмінності від звичайної таблиці?
62
ДОДАТОК А
ПЕРЕЛІК ПРЕДМЕТНИХ ОБЛАСТЕЙ
1 Агентство з організації сімейних 45 Комп’ютерний клуб
свят 46 Ферма
2 Мобільний оператор 47 Поліклініка
3 Профілакторій 48 Спортивний клуб
4 Відділ кадрів підприємства 49 Готель
5 Гуртожиток 50 Космічне агентство
6 Консервний завод 51 Магазин товарів для рукоділля
7 Салон краси 52 Медпункт
8 Бібліотека 53 Кав’ярня
9 ЖКГ 54 Принт-центр
10 Зоомагазин 55 База відпочинку
11 Майстерня по ремонту взуття 56 Кондитерська фабрика
12 Залізничний вокзал 57 Молокозавод
13 М’ясокомбінат 58 Комісійний магазин
14 Санаторій 59 Торгово-розважальний комплекс
15 Майстерня по ремонту техніки 60 Будівельна фірма
16 Паб 61 Іподром
17 Поштамт 62 Аптека
18 Турагенство 63 Майстерня по ремонту годинників
19 Школа мистецтв 64 Фотосалон
20 Автовокзал 65 Метро
21 Пароплавство 66 Ресторан
22 Зоопарк 67 Весільне агентство
23 Пожежна станція 68 Музей
24 Кінотеатр 69 Спортзал
25 Мисливське угіддя 70 Казино
26 Інтернет-магазин 71 Книжковий магазин
27 Комерційний банк 72 Суд
28 Квітковий магазин 73 Танцювальна студія
29 Магазин одягу 74 Укртелеком
30 Ательє 75 Дискотечний клуб
31 Лікарня 76 Армія
32 Цирк 77 Театр опери та балету
33 Картинна галерея 78 Боулінг-клуб
34 Консерваторія 79 Автотранспортне підприємство
35 Видавництво 80 Дитячий садок
36 Заправна станція 81 Благодійна організація
37 Телеканал 82 Радіостанція
38 Адміністрація президента 83 Баскетбольний клуб
39 Завод 84 Ріелторське агентство
40 Театр 85 Інтернет провайдер
41 Школа 86 Приймальна комісія
42 Верховна Рада 87 Риболовство
43 Аквапарк 88 Газетний кіоск
44 Водне господарство 89 Лісництво
63
90 Прокат відеофільмів
91 Міліція
92 Столова
93 Банк
94 Міністерство освіти та науки
95 Гірськолижний курорт
96 Магазин промислових товарів
97 Футбольний клуб
98 Продовольчий магазин
99 Аукціонний дім
10 Відділ кадрів інституту
0
64