Роль триггеров как одного из способов поддержания базы данных в адекватном и актуальном состоянии предметной области | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 6 марта, печатный экземпляр отправим 10 марта.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №35 (325) август 2020 г.

Дата публикации: 31.08.2020

Статья просмотрена: 28 раз

Библиографическое описание:

Абсатаров, Р. Н. Роль триггеров как одного из способов поддержания базы данных в адекватном и актуальном состоянии предметной области / Р. Н. Абсатаров. — Текст : непосредственный // Молодой ученый. — 2020. — № 35 (325). — С. 11-12. — URL: https://moluch.ru/archive/325/73393/ (дата обращения: 26.02.2021).



В данной статье рассматривается механизм использования триггеров для поддержания целостности базы данных.

Ключевые слова: триггер, база данных, событие.

Триггер в MySQL — это особый вид хранимой процедуры, которая выполняется автоматически при вставке, удалении или модификации записи таблицы или представления (view).

Идея, лежащая в основе триггеров, очень проста. SQL дает возможность нам вставлять, удалять и модифицировать данные в таблицах базы данных при помощи соответствующих команд — INSERT, DELETE и UPDATE. Для того, чтобы выполнять какие-либо действия, связанные с изменением данных в базе данных, существуют триггеры. Фактически триггер представляет собой набор команд процедурного языка, который исполняется при выполнении операций INSERT/DELETE/UPDATE [1].

Триггеры используются для поддержания базы данных в адекватном и актуальном состоянии предметной области. Триггер запускается сервером автоматически при попытке изменения данных в таблице, с которой он связан. Все производимые им модификации данных рассматриваются как выполняемые в транзакции, в которой выполнено действие, вызвавшее срабатывание триггера [2]. Соответственно, в случае обнаружения ошибки или нарушения целостности данных может произойти откат этой транзакции.

К примеру, необходимо вести журнал вносимых в базу данных изменений. Вместо написания двух отдельных запросов (первый для внесения изменений в основную базу данных, второй для обновления данных журнала), достаточно использовать триггер, содержащий правило: “при обновлении данных в данной таблице вносить записи в журнал изменений”. Подобный подход хотя и создает некоторую избыточность в выполняемом запросе, однако это позволяет сократить объем передаваемых данных, что в целом способствует повышению производительности [3].

Триггеры могут «срабатывать» непосредственно до или сразу же после указанного события.

Триггеры могут использоваться для поддержания целостности данных. Например, если необходимо удалить основной источник данных, с которым связанны многочисленные данные из других таблиц, применение триггеров поможет решить эту проблему. С помощью триггеров можно запретить подобную операцию, либо организовать удаление сначала зависимых записей из других таблиц, а только потом удалить основную запись. Такой подход позволяет избавиться от аномалии удаления или аномалии обновления записей в базе данных и поддерживать базу данных в адекватном и актуальном состоянии.

Преимущество триггеров, в отличие от транзакции с несколькими запросами, — перенос целостность данных с уровня логики на уровень данных, где она и должна находиться [4]. Также применение триггеров дает некоторый прирост производительности, порядка 1.5 раз, который значительно увеличивается, в случае низкой скорости передачи данных между клиентом и сервером.

Применение триггеров дает возможность отслеживания соответствия вводимых данных доменам атрибутов изменяемых записей базы данных [5]. Например, для проверки адекватности вводимого возраста сотрудника (добавление новой записи, изменение существующей), достаточно создать триггер, который при изменении записей таблицы будет проверять поле возраст на соответствие домену: “ Возраст сотрудника не менее 18 и не более 65”

Триггеры могут быть запущены непосредственно перед отслеживаемой операцией (ключевое слово BEFORE), либо же сразу после ее завершения (AFTER).

С помощью триггеров достигаются следующие цели:

– Проверка корректности введенных данных и выполнение сложных ограничений целостности данных, которые трудно, если вообще возможно, поддерживать с помощью ограничений целостности, установленных для таблицы;

– Создание сообщений, уведомляющих о необходимости выполнения некоторых действий при обновлении таблицы, реализованном определенным образом;

– Сохранение статистической информации путем фиксации внесенных изменений лиц, которые их выполнили, и времени совершения операции;

– Поддержка репликации.

Преимущества использования триггеров:

– Минимизация сетевого трафика

– Сокращение используемых ресурсов

– Отсутствие необходимости передачи промежуточных результатов приложению

– Сохранение целостности данных

– Автоматический запуск триггеров

Особенности использования триггеров:

– Триггеры удаляются при удалении таблицы, к которой они привязаны

– Триггер запускается для каждой записи в таблице. Если запрос затрагивает, к примеру, 5 записей, то триггер будет запущен ровно 5 раз

– Для создания триггера, необходимо иметь привилегии SUPER

– Триггер может вызывать сохраненную процедуру

Литература:

  1. С. Д. Кузнецов. Основы баз данных. — М.: Бином. Лаборатория знаний, Интернет-университет информационных технологий, 2007. — 488 с.
  2. В.Дунаев. Базы данных. Язык SQL для студента. — СПб.: БХВ-Петербург, 2012. — 320 с.
  3. С. Д. Кузнецов. Базы данных. — М.: Академия, 2012. — 496 с.
  4. Э. В. Фуфаев, Д. Э. Фуфаев. Разработка и эксплуатация удаленных баз данных. — М.: Академия, 2012. — 256 с.
  5. О. Л. Голицына, Т. Л. Партыка, И. И. Попов. Основы проектирования баз данных. — М.: Форум, 2012. — 416 с.
Основные термины (генерируются автоматически): Триггер, DELETE, INSERT, UPDATE, баз данных, AFTER, BEFORE, SQL, SUPER, актуальное состояние.


Ключевые слова

база данных, событие, триггер
Задать вопрос