Тема: «Поддержание непротиворечивости и целостности БД»

1.Понятие целостности. Основные аспекты.

2. Правила соблюдения ссылочной целостности.

3.Транзакции

  Целостность (от англ. integrity – нетронутость, неприкосновенность,

сохранность, целостность) – понимается как правильность данных в любой момент

времени.

Целостность баз данных - некоторый набор требований нарушение которых приведет к противоречию между базой данных  и предметной областью которую она отражает. Поддержание целостности базы данных может рассматриваться как защита данных от неверных изменений или разрушений и  в ее классическом понимании включает в себя 3 аспекта:

  Во-первых, это поддержка структурной целостности, которая трактуется как то, что реляционная СУБД должна допускать работу только с однородными структурами данных типа "реляционное отношение".

  Во-вторых, это поддержка языковой целостности, которая состоит в том, что реляционная СУБД должна обеспечивать языки описания и манипулирования данными не ниже стандарта SQL. He должны быть доступны иные низкоуровневые средства манипулирования данными, не соответствующие стандарту.

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

  В-третьих, это поддержка ссылочной целостности, то есть поддержание  связей между таблицами.  Ссылочная целостность обеспечивает поддержку непротиворечивого состояния БД в процессе модификации данных при выполнении операций добавления, обновления или удаления.

НЕ нашли? Не то? Что вы ищете?

Нарушение целостности данных может быть вызвано рядом причин:

    сбои оборудования, физические воздействия или стихийные бедствия; ошибки санкционированных пользователей или умышленные действия несанкционированных пользователей; программные ошибки СУБД или ОС; ошибки в прикладных программах; совместное выполнение конфликтных запросов пользователей и др.

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

2.        Правила соблюдения ссылочной целостности.

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

Для дочерней таблицы:
    Вставка. Нельзя вставить запись в дочернюю таблицу, если для новой записи значение внешнего ключа некорректно. Операция может привести к нарушению ссылочной целостности. Обновление. При обновлении записи в дочерней таблице можно попытаться некорректно изменить значение внешнего ключа. Операция может привести к нарушению ссылочной целостности. Удаление. При удалении записи в дочерней таблице ссылочная целостность не нарушается.

Таким образом, ссылочная целостность в принципе может быть нарушена при выполнении одной из четырех операций:

Обновление записей в родительской таблице. Удаление записей в родительской таблице. Вставка записей в дочерней таблице. Обновление записей в дочерней таблице.

3.Важнейшим средством механизма защиты целостности БД выступает транзакция.

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

Фиксация  транзакции – это действие, обеспечивающее запись на диск изменений в БД, которые были сделаны в процессе выполнения транзакции.

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

Откат транзакции – это действие, обеспечивающее аннулирование всех изменений данных, которые были сделаны в процессе текущей незавершенной транзакции.

Свойства транзакций
свойство атомарности выражается в том, что транзакция должна быть выпол­нена в целом или не выполнена вовсе; свойство согласованности гарантирует, что по мере выполнения транзакций дан­ные переходят из одного согласованного состояния в другое – транзакция не раз­рушает взаимной согласованности данных; свойство изолированности означает, что конкурирующие за доступ к БД транзак­ции физически обрабатываются последовательно, изолированно друг от друга; свойство продолжительности трактуется следующим образом: если транзакция за­вершена успешно, то те изменения в данных, которые были ею произведены, не могут быть потеряны ни при каких обстоятельствах
Журнал транзакций

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

Журнал транзакций предназначен для обеспечения надежного хранения данных в БД.