Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник(Семенова).doc
Скачиваний:
13
Добавлен:
26.08.2019
Размер:
9.15 Mб
Скачать

Глава 4 Обеспечение целостности данных в информационных системах, основанных на реляционной модели

4.1. Целостность данных и ограничения целостности

При проектировании и разработке информационных систем важное место занимает описание ограничений целостности. Напомним, что ограничения целостности являются компонентом инфологической модели предметной области. В общем смысле под целостностью данных понимают их непротиворечивость, такое их состояние, при котором они в любой момент адекватно отражают состояние предметной области. В [37] приводится следующее определение целостности.

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

Предложения, описывающие целостность данных называют ограничениями целостности.

Таким образом, реализацию ограничений целостности данных рассматривают как защиту данных от непреднамеренных ошибок (случайного искажения или разрушения) и их предотвращения, т.е как реализацию такой функции защиты данных, как безопасность. Следовательно, проблема целостности состоит в обеспечении правильности данных в БД в любой момент времени. Однако эта цель может быть достигнута лишь в определенных пределах. В частности, система не может контролировать правильность каждого отдельного значения, вводимого в БД (хотя их можно проверить на правдоподобность). Однако, несмотря на исключения необходимо обеспечить возможность поддержки высокой степени целостности в БД. Поддержание целостности следует рассматривать как защиту данных от неверных (в противоположность незаконным) изменений или разрушений.

Реализация ограничений целостности непростая проблема даже для однопользовательской системы (системы, в которой в каждый отдельный момент времени с базой данных может работать не более одного пользователя). В многопользовательских си­стемах (в системах, где может быть осуществлен одно­временный доступ нескольких пользователей к базе данных) возникают до­полнительные проблемы, в частности, такие, как проблемы управления совместно используемыми данными.

Чаще всего нарушения целостности данных происходит в результате выполнения какой-либо транзакции.

Транзакция [transaction]– это запрос на изменение базы данных, т.е. входное сообщение, переводящее базу данных из одного непротиворечивого состояния в другое.

Таким образом, к транзакциям следует отнести запрос на добавление, изменение, редактирование или удаление данных.

Транзакция характеризуется такими важными свойствами, как атомарность, согласованность, изоляция, долговечность, которые в некоторых источниках так и обозначают АСИД (по первым буквам свойств).

Атомарность. Транзакция выполняется как атомарная операция т.е. она либо выполняется полностью от начала до конца (целиком), либо она целиком не выполняется.

Согласованность. Транзакция переводит базу данных из одного согласованного (целостного) состояния в другое согласованное (целостное) состояние.

Изоляция. Транзакции разных пользователей должны происходить изолированно друг от друга (не пересекаясь друг с другом), в определенной очередности.

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

Следует заметить, что в процессе выполнения транзакции может произойти временное нарушение целостности. Однако к моменту окончания этого процесса, данные должны стать вновь непротиворечивыми. Если же после выполнения транзакции обнаружено нарушение целостности, то должен быть совершен откат (т.е. все изменения в базе данных должны быть ликвидированы). Аналогичный процесс реализуется и в тупиковой ситуации.

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

Для поддержания целостности базы данных необходим некоторый набор обслуживающих стандартных программ (Схема ).

Программы ведения журнала. Каждая операция над базой данных должна быть записана в системном журнале. О каждой операции в журнал обычно помещается следующая информация: описание соответствующей транзакции, время выполнения, описание соответствующего терминала и пользователя, полный текст входного сообщения и, в случае, если операция изменяет базу данных, тип изменения и адрес изменяемых данных (включая их значения до и после выполнения транзакции).

В журнал заносится информация обо всех операциях над базой данных, включая операции, сгенерированные системой (например, операция обновления индекса).

Программы разгрузки (dump). Программы разгрузки используются для получения копий (выборочных частей) базы данных для последующего ее восстановления. Обычно разгрузка базы данных происходит регулярно, например, один раз в неделю. После разгрузки может быть начат новый системный журнал, а старый — уничтожен или переведен в архив.

Программы восстановления. Программы восстановления используются для возврата базы данных или некоторых ее частей в первоначальное состояние, после того как системный сбой (аппаратный или программный) привел к потере данных из базы данных или (что случается чаще) из буферов в основной памяти. Они используют в качестве исходных данных копию базы данных (созданную программами разгрузки), а также системный журнал (содержащий детальные сведения об операциях, которые выполнялись после того, как была произведена эта разгрузка); в результате программы восстановления создают новую копию данных в том виде, какой они имели перед возникновением сбоя. Отметим, что все транзакции, которые выполня­лись в момент сбоя, должны быть, вероятно, выполнены повторно.

Программы отката. Функция данных программ состоит в ликвидации последствий транзакции, выполнение которой привело к нарушению целостности данных в базе. Используя информацию из системного журнала, программы отката устраняют изменения в базе, выполненные этой транзакцией.

Программы контрольных точек и повторного исполнения. Откат и повторное исполнение всей длительной транзакции может потребовать больших затрат времени. Если система позволяет транзакциям в процессе выполнения создавать контрольные точки в соответствующие моменты времени, то в случае возникновения необходимости отката можно вернуться в последнюю контрольную точку вместо возвращения к началу транзакции. Выполнение отката к контрольной точке приведет к тому, что в базе будут содержаться все изменения, сделанные к моменту фиксации контрольной точки. Использование аппарата контрольных точек позволяет разбить длительные транзакции на более короткие. Кроме того, в момент фиксации контрольной точки можно записать значения определенных переменных программы в системный журнал. Программы повторного исполнения впоследствии используют эти контрольные точки для возвращения транзакции к состоянию, в котором она находилась в момент фиксации соответствующей контрольной точки.

Программы контроля. Реализация ограничений целостности основана на функционировании программ, которые выявляют нарушения таких ограничений. Эти программы вызываются после каждого изменения (для безотлагательных ограничений) или через некоторое время после того, как изменения были выполнены (для отложенных ограничений). Если обнаружены какие-либо нарушения, то такая программа может либо просто выполнить откат транзакции (без планирования ее повторного выполнения), либо передать ей информацию, с тем чтобы транзакция сама попыталась обработать ошибку. При этом транзакции должны быть переданы список нарушенных ограничений и список кортежей, содержащих ошибки. Транзакция может модифицировать свой запрос на изменение их содержания и попытаться выполнить его вновь или просто напечатать сообщение об ошибке и затем запросить откат.

Подводя итог, следует отметить, что целостность данных рассматривают в трех аспектах: поддержание семантической (смысловой) целостности (включая ссылочную целостность), целостности при параллельной обработке данных и восстановление целостности (восстановление данных). Далее более подробно будет рассмотрена семантическая целостность.