Тема: «Поддержание непротиворечивости и целостности БД»
1.Понятие целостности. Основные аспекты.
2. Правила соблюдения ссылочной целостности.
3.Транзакции
Целостность (от англ. integrity – нетронутость, неприкосновенность,
сохранность, целостность) – понимается как правильность данных в любой момент
времени.
Целостность баз данных - некоторый набор требований нарушение которых приведет к противоречию между базой данных и предметной областью которую она отражает. Поддержание целостности базы данных может рассматриваться как защита данных от неверных изменений или разрушений и в ее классическом понимании включает в себя 3 аспекта:
Во-первых, это поддержка структурной целостности, которая трактуется как то, что реляционная СУБД должна допускать работу только с однородными структурами данных типа "реляционное отношение".
Во-вторых, это поддержка языковой целостности, которая состоит в том, что реляционная СУБД должна обеспечивать языки описания и манипулирования данными не ниже стандарта SQL. He должны быть доступны иные низкоуровневые средства манипулирования данными, не соответствующие стандарту.
Именно поэтому доступ к информации, хранимой в базе данных, и любые изменения этой информации могут быть выполнены только с использованием операторов языка SQL.
В-третьих, это поддержка ссылочной целостности, то есть поддержание связей между таблицами. Ссылочная целостность обеспечивает поддержку непротиворечивого состояния БД в процессе модификации данных при выполнении операций добавления, обновления или удаления.
Нарушение целостности данных может быть вызвано рядом причин:
- сбои оборудования, физические воздействия или стихийные бедствия; ошибки санкционированных пользователей или умышленные действия несанкционированных пользователей; программные ошибки СУБД или ОС; ошибки в прикладных программах; совместное выполнение конфликтных запросов пользователей и др.
Нарушение целостности данных возможно и в хорошо отлаженных системах. Поэтому важно не только не допустить нарушения целостности, но и своевременно обнаружить факт нарушения целостности и оперативно восстановить целостность после нарушения.
2. Правила соблюдения ссылочной целостности.
- Для каждого значения внешнего ключа должно существовать соответствующее значение первичного ключа в родительской таблице
Для родительской таблицы:
- Вставка. Возникает новое значение первичного ключа. Существование записей в родительской таблице, на которые нет ссылок из дочерней таблицы, допустимо, операция не нарушает ссылочной целостности. Обновление. Изменение значения первичного ключа в записи может привести к нарушению ссылочной целостности. Удаление. При удалении записи удаляется значение первичного ключа. Если есть записи в дочерней таблице, ссылающиеся на ключ удаляемой записи, то значения внешних ключей станут некорректными. Операция может привести к нарушению ссылочной целостности.
Для дочерней таблицы:
- Вставка. Нельзя вставить запись в дочернюю таблицу, если для новой записи значение внешнего ключа некорректно. Операция может привести к нарушению ссылочной целостности. Обновление. При обновлении записи в дочерней таблице можно попытаться некорректно изменить значение внешнего ключа. Операция может привести к нарушению ссылочной целостности. Удаление. При удалении записи в дочерней таблице ссылочная целостность не нарушается.
Таким образом, ссылочная целостность в принципе может быть нарушена при выполнении одной из четырех операций:
3.Важнейшим средством механизма защиты целостности БД выступает транзакция.
Транзакция - это набор или действий, которые представляют собой, одну, неделимую операцию. Транзакция может быть либо выполнена в полном объеме, либо не выполнена вообще. Сделано это для сохранения логической целостности базы. С точки зрения программы эти действия состоят из нескольких операций, а с точки зрения пользователя эти операции представляют собой единое задание. Возможны два варианта завершения транзакции. Если все операторы выполнены успешно и в процессе транзакции не произошло никаких сбоев программного или аппаратного обеспечения, транзакция фиксируется.
Фиксация транзакции – это действие, обеспечивающее запись на диск изменений в БД, которые были сделаны в процессе выполнения транзакции.
Если в процессе выполнения транзакции случилось нечто такое, что делает невозможным ее нормальное завершение, БД должна быть возвращена в исходное состояние.
Откат транзакции – это действие, обеспечивающее аннулирование всех изменений данных, которые были сделаны в процессе текущей незавершенной транзакции.
Свойства транзакций
свойство атомарности выражается в том, что транзакция должна быть выполнена в целом или не выполнена вовсе; свойство согласованности гарантирует, что по мере выполнения транзакций данные переходят из одного согласованного состояния в другое – транзакция не разрушает взаимной согласованности данных; свойство изолированности означает, что конкурирующие за доступ к БД транзакции физически обрабатываются последовательно, изолированно друг от друга; свойство продолжительности трактуется следующим образом: если транзакция завершена успешно, то те изменения в данных, которые были ею произведены, не могут быть потеряны ни при каких обстоятельствахЖурнал транзакций
Реализация в СУБД принципа сохранения промежуточных состояний, подтверждения или отката транзакции обеспечивается специальным механизмом, для поддержки которого создается некоторая системная структура, называемая журналом транзакций.
Журнал транзакций предназначен для обеспечения надежного хранения данных в БД.


