Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОБД / лабки / БД_Лабораторна робота17_Бойко

.doc
Скачиваний:
0
Добавлен:
27.01.2024
Размер:
443.01 Кб
Скачать

Виконав Бойко Є.А

Група 310

Варіант 3

Лабораторна робота 17

Тема: Управління транзакціями

Мета: Засвоєння способів управління транзакціями в середовищі СУБД PHPMYADMIN

Форма звіту – електронний звіт.

Завдання

Виконати запити до бази даних student_college2 згідно завданню з таблиці 1. Результати подати у вигляді змісту запиту, синтаксису запиту та скрін-шоту результату виконання запиту з екрану.

Таблиця 1 – Завдання для виконання

з/п

Зміст запиту: провести транзакцію на оновлення даних …

1.

таблиці Клієнт, фізичні особи (ФЛ) стали юридичними (ЮЛ) і навпаки.

Результат до транзакції

START TRANSACTION;

UPDATE client SET client_type="ЮЛ" WHERE client_type="ФЛ";

UPDATE client SET client_type="ФЛ" WHERE client_type="ЮЛ";

SELECT * FROM client;

COMMIT;

Результат після транзакції

2.

таблиці Працівник. Бонусний коефіцієнт ТоніСтарка зменшити на 0,2, а КапітануАмерика збільшити на 0,2.

Результат до транзакції

START TRANSACTION;

UPDATE employee SET coef_bonus=coef_bonus-0.2 WHERE first_name="Тони" AND second_name="Старк";

UPDATE employee SET coef_bonus=coef_bonus+0.2 WHERE first_name="Капитан" AND second_name="Америка";

SELECT * FROM employee;

COMMIT;

Результат після транзакції

3.

Таблиці Позиція, зарплату всіх Senior підняти на 360, а всіх Developer на 290

Результат до транзакції

START TRANSACTION;

UPDATE position set salary=salary+360 where position_name LIKE "%Senior%";

UPDATE position set salary=salary+290 where position_name LIKE "%developer%";

SELECT * from position;

COMMIT;

Результат після транзакції

4.

таблиці Клієнт, номера клієнтів з України повинні починатися з індексу «+3», а у клієнтів з Америки – «+6»

Результат до транзакції

START TRANSACTION;

UPDATE client set cont_person_info="3 8 10 12648449092" where country="Украина";

UPDATE client set cont_person_info="+6 10 17290899" where country="Америка";

SELECT * from client;

COMMIT;

Результат після транзакції

5.

таблиці Позиція, зарплату всіх Senior підняти на 360, а всіх Developer на 290

Результат до транзакції

START TRANSACTION;

UPDATE position set salary=salary+360 where position_name LIKE "%Senior%";

UPDATE position set salary=salary+290 where position_name LIKE "%developer%";

SELECT * from position;

COMMIT;

Результат після транзакції

6.

таблиці Працівник, зарплату працівника з id=1,зменшити на 200, а працівнику id=5 збільшити на 200

Результат до транзакції

START TRANSACTION;

UPDATE position set salary=salary-200 where position_id=1;

UPDATE position set salary=salary+200 where position_id=5;

SELECT * FROM position;

COMMIT;

Результат після транзакції

7.

таблиці Проєкт, проекти в статусі «постановка задачи» оновити в статус «в работе»

Результат до транзакції

START TRANSACTION;

UPDATE project set project_status="в работе" where project_status="постановка задачи";

SELECT * from project;

COMMIT;

Результат після транзакції

8.

таблиці Працівник, працівників з міста Суми перевести за адресою «Суми, ПроспектШевченка 17»

Результат до транзакції

START TRANSACTION;

UPDATE employee set adress="Суми, ПроспектШевченка 17" where adress like "%Сумы%";

SELECT * FROM employee;

COMMIT;

Результат після транзакції

9.

таблиці Структура, всіх тестувальників перевести на 2 поверхи вище, менеджерів на 1 поверх вище, розробників на 1 нижче

Результат до транзакції

START TRANSACTION;

UPDATE structure set location="3-й этаж" where structure_name="Tester";

UPDATE structure set location="2-й этаж" where structure_name="Manager";

UPDATE structure set location="1-й этаж" where structure_name="Developer";

SELECT * from structure;

COMMIT;

Результат після транзакції

10.

Таблиці Розклад, кількість годин half-time збільшити на 1, full-time на 2 години

Результат до транзакції

START TRANSACTION;

UPDATE schedule set hours=hours+1 where schedule_name="half-time";

UPDATE schedule set hours=hours+2 where schedule_name="full-time";

SELECT * from schedule;

COMMIT;

Результат після транзакції

Надати відповіді на контрольні питання.

КОНТРОЛЬНІ ПИТАННЯ

  1. Що таке транзакція?

Під транзакцією розуміється неподільна з погляду БД послідовність

операторів маніпулювання даними, що приводить до одного з двох

можливих результатів:

-або послідовність виконується, якщо всі оператори правильні,

-або вся транзакція відкатується, якщо хоча б один оператор не може бути успішно виконаний.

2. Які існують властивості транзакцій?

-Атомарність

-Узгодженість

-Ізольованість

-Довговічність

3. Що розуміється під атомарністю (Аtomicity) транзакцій?

Це властивість означає, що результати всіх операцій, успішно виконаних в рамках транзакції, повинні бути відображені в стані бази даних, або в стані бази даних не повинно бути відображено дію жодної операції

4. Що розуміється під узгодженістю (Сonsistency ) транзакцій?

У класичному розумінні це властивість означає, що транзакція може бути успішно завершена з фіксацією результатів своїх операцій тільки в тому випадку, коли дії операцій не порушують цілісність бази даних, тобто задовольняють набору обмежень цілісності, визначених для цієї бази даних .

5. Що розуміється під ізольованістю (Isolation) транзакцій?

Потрібно, щоб дві одночасно виконуючі транзакції ніяк не діяли одна на іншу. Іншими словами, результати виконання операцій транзакції T1 не повинні бути видні ніякій інший транзакції T2 до тих пір, поки транзакція T1 не закінчується успішно.

6. Що розуміється під довговічністю (Durability) транзакцій?

Після успішного завершення транзакції всі зміни, які були внесені в стан бази даних операціями цієї транзакції, повинні гарантовано зберігатися, навіть в разі збоїв апаратури або програмного забезпечення.

7. В якому режимі транзакцій працює MySQL зЗа замовчуванням ?

За замовчуванням MySQL працює в режимі autocommit. Це означає, що при

виконанні оновлення даних MySQL буде відразу записувати оновлені дані на диск.

8. Як можна завершити режим транзакцій за замовчення ?

Режим autocommit можна відключити командою

SET AUTOCOMMIT = 0.

9. Описати команду START TRANSACTION

Починає блок транзакції

10. Описати команду COMMIT

COMMIT - Зберігає зміни

11. Описати команду ROLLBACK

ROLLBACK - Відкочується (скасовує) зміни

12. Описати команду SAVEPOINT

SAVEPOINT - Створює точку до якої група транзакцій може відкотитися

13. Які є аналоги команди START TRANSACTION ?

BEGIN

14. Які команди автоматично завершують транзакцію?

Autocommit

15. Які є феномени виконання транзакцій?

-Феномен брудного читання;

-Феномен неповторення читання;

10