Логическое проектирование.
Аудит базы данных
Основная проблема в реализации таблиц аудита заключается в том, что исходная база данных содержит большое количество таблиц. Разработка базы данных продолжается и число таблиц может увеличиться. Поэтому необходимо реализовать автоматическое определение существующих в базе данных таблиц и создание для них таблиц аудита, а также возможность создавать журнал аудита для конкретной таблицы, заданной… Читать ещё >
Логическое проектирование. Аудит базы данных (реферат, курсовая, диплом, контрольная)
На этапе логического проектирования должна быть сформирована логическая структура подсистемы аудита базы данных, а конкретно логическая структура ее таблиц и триггеров.
Как уже было отмечено ранее журнал аудита представляет собой систему из трех таблицы, создаваемых для каждой таблицы базы данных (таблица AuditInf — таблица для записи общей информации об изменяемых данных; таблица UpdateLog предназначена для фиксации изменений, произошедших в результате выполнения операции изменения (UPDATE); для фиксации изменений данных при выполнении операций вставка (INSERT) и удаление (DELETE) служит таблица InstDelLog). Таблицы аудита реализуются согласно схеме, представленной на рисунке 1.
Рис. 1. Схема журнала аудита
Описание полей таблиц для аудита представлено в таблицах 1 и 2.
Таблица 1. Таблица AuditInf.
Содержание поля. | Имя поля. | Тип, длина. | Примечания. | |
Идентификатор | id. | int. | Первичный ключ. | |
Тип операции (INSERT, UPDATE или DELETE). | type. | char (6). | Обязательное поле. | |
Изменяемая таблица. | table_name. | nvarchar (200). | Обязательное поле. | |
Дата изменения. | date_change. | datetime. | Заполняется автоматически. | |
Пользователь. | user_change. | sysname. | Заполняется автоматически. | |
Приложение. | app. | sysname. | Заполняется автоматически. | |
Таблица 2. Таблица UpdateLog.
Содержание поля. | Имя поля. | Тип, длина. | Примечания. | |
Идентификатор | id. | int. | Первичный ключ. | |
Идентификатор таблицы AuditInf. | id_AI. | int. | Внешний ключ (к AuditInf). | |
Идентификатор изменяемой записи. | id_rec. | int. | Обязательное поле. | |
Название изменяемого поля. | column_name. | sysname. | Обязательное поле. | |
Старое значение. | old_value. | sql_variant. | Необязательное поле. | |
Новое значение. | new_value. | sql_variant. | Необязательное поле. | |
Таблица InstDelLog также содержит поля id_LOG (идентификатор, являющийся первичным ключом) и id_AI (Внешний ключ к общей таблице аудита AuditInf). Кроме того, к ним присоединяются измененные или удаленные столбцы исходной таблицы. Таким образом структура таблицы InstDelLog для каждой аудируемой таблицы будет уникальна.
Основная проблема в реализации таблиц аудита заключается в том, что исходная база данных содержит большое количество таблиц. Разработка базы данных продолжается и число таблиц может увеличиться. Поэтому необходимо реализовать автоматическое определение существующих в базе данных таблиц и создание для них таблиц аудита, а также возможность создавать журнал аудита для конкретной таблицы, заданной пользователем.
Для того, чтобы закрепить за каждой из исходных таблиц триггер, фиксирующих изменения в них, необходимо также автоматизировать этот процесс, описав эти действия один раз, но для всех таблиц. Поэтому после создания таблиц для аудита, в которых будет храниться информация обо всех изменениях данных в базе данных, необходимо создать один триггер, который будет записывать все эти изменения в нужные таблицы.
Чтобы можно было без дополнительных действий запустить подсистему аудита, ее структура будет выглядеть следующим образом: будет создана процедура, запустив которую подсистема аудита и начнет свою работу, в ней сначала будут определены все таблицы в базе данных, затем созданы таблицы для аудита и запущен триггер, записывающий в них изменения данных.