Цель работы: изучить, при каких условиях в базе данных имеются аномалии обновления.
Ход работы
Задание 1
Какие особенности представленных в приведенных таблицах данных свидетельствуют о наличие в них аномалии удаления? Продемонстрируете это, написав код удаления и объясните, в чем состоит эта аномалия.
Если в таблице "Студенческие кружки" есть внешний ключ, который ссылается на первичный ключ таблицы "Руководители студенческих кружков", это может указывать на наличие аномалии удаления. Если для этого внешнего ключа установлено ON DELETE CASCADE, то при удалении записи из первичной таблицы могут быть удалены данные в связанной таблице.
В результате удаления записи с ID_student = 1 из таблицы "Руководители студенческих кружков" будут утеряны данные о кружках, которые он руководил.
Какой запрос до удаления и после удаления позволяет показать, что в результате удаления может произойти потеря данных? Напишите этот запрос.
До удаления
После удаления
Запросы показывают, что при удалении руководителя кружка с ID=1 данные о кружках, которые он руководил, будут потеряны. Это связано с тем, что в таблице "Руководители студенческих кружков" есть ссылка на удаленную запись в таблице "Студенческие кружки".
Как можно устранить обнаруженную аномалию?
Чтобы избежать аномалии удаления, необходимо изменить опцию ON DELETE внешнего ключа в таблице "Студенческие кружки" на ON DELETE SET NULL. Это позволит сохранить строки в связанной таблице и установить значение внешнего ключа на NULL, если соответствующая строка в таблице-родителе будет удалена.
Задание 2
Какие особенности представленных в приведенных таблицах данных свидетельствуют о наличие в них аномалии удаления? Продемонстрируете это, написав код удаления и объясните, в чем состоит эта аномалия.
Особенностью таблицы "Лаборатории" является то, что ее первичным ключом является поле "Password", содержащее пароль для доступа в лабораторию. Поскольку пароли могут изменяться, это может вызвать проблемы с сохранением целостности данных.
Изменили пароль для первого сотрудника:
Если не обновить пароль сотрудника в таблице "Лаборатории", информация в таблице станет несогласованной. Это значит, что некоторые сотрудники не смогут получить доступ в лабораторию, поскольку их пароль будет устаревшим.
2) Какой запрос до удаления и после удаления позволяет показать, что в результате удаления может произойти потеря данных? Напишите этот запрос.
Запрос, который позволяет показать, что в результате редактирования может нарушиться целостность данных, это запрос на выборку данных из таблицы "Лаборатории", связанных с измененным полем в таблице "Работники":
SELECT * FROM Лаборатории
WHERE Employee_id = 1;
Если в таблице "Лаборатории" есть строки, которые используют старое значение поля Employee_id для сотрудника с Employee_id=1, то эти строки будут содержать некорректные данные, что приведет к нарушению целостности данных.
3) Как нужно организовать данные, чтобы устранить обнаруженную аномалию?
Использовали поле "Pass" в качестве первичного ключа таблицы "Работники", оно уникально для каждого сотрудника. Вместо "Employee_id" в таблице "Лаборатории", добавили внешний ключ "Pass" таблицы "Работники".
Вывод: в ходе лабораторной работы изучили, при каких условиях в базе данных имеются аномалии обновления.