Целостность баз данных

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

         Современные СУБД поддерживают возможности соблюдения тех или иных требований целостности.

         Рассмотрим типы целостности и механизмы СУБД поддерживающие эти типы.

1)Сущностная целостность или целостность по первичному ключу  по своему определению значение первичного ключа в таблице должно быть уникальным т.к. основной принцип Р.Б.Д. звучит что доступ к данным в таблице осуществляется по цепочке. Имя БД  à Имя таблицы  à Имя столбца à первичный ключ (значение).

Все современные СУБД поддерживают уникальность первичного ключа. Механизм поддержания уникальности первичного ключа основывается на понятие индекса см.ниже.

При определение первичного ключа СУБД автоматически создает индекс для поддержки его уникальности и для поиска поп первичному ключу.

2) Ссылочная целостность – это целостность поддерживается в связях между таблицами. Для того чтобы содержимое двух связанных таблиц правильно отражало предметную область. На операции изменяющие содержимое таблиц должны накладываться определенные ограничения (ограничения целостности). Это относится к трем операциям:

         - удаление записей (из главной таблицы)

         - изменение записей (в главной таблице)

         - Вставка записей во второстепенные таблицы.

Вводят ограничения на выполнение операций: удаление из главной таблицы, Обновления в главной таблице, вставка строк во вторичной таблице.

 

                Удаление из главной таблице

СУБД  поддерживает 4 вида сценария при удаление из главной таблицы.

1)     при удаление из главной таблицы автоматически удаляет связанные записи из подчиненной таблицы (каскад).

2)     Запрет на удаление записи из главной таблицы если она связана с какими-либо записями в подчиненной таблице.

3)     После удаления записи из главной таблицы внешним ключам связанных записей в подчиненной таблице присваиваются значения NULL.

4)     При удаление записи из главной таблицы внешним ключам второстепенных записей присваиваются значения по умолчанию.

 

 

                                   Обновление записей в главной таблице

                       (Это касается обновления первичного ключа)

1)     При обновление первичного ключа главной таблицы  каскадно изменяются значения внешнего ключа подчиненных таблиц.

2)     При изменение первичного ключа в главной таблице соответствующим значениям ключам в подчиненной таблице присваиваются значения NULL.

3)     При изменение первичного ключа в главной таблице соответствующим значениям ключам в подчиненной таблице присваиваются значение по умолчанию.

4)     {2} Устанавливается запрет на обновление первичных ключей тех записей главной таблицы, которые связанны с какими-либо записями в подчиненной таблице.

 

Значение по умолчанию – при определение структуры таблицы  для каждого столбца

А) определенное значение по умолчанию

Б) разрешено присваивание значения NULL.

 

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

         Например в одних СУБД возможно 32 бит целое à 16  бит целое, а в других невозможно из-за возможности потери данных свыше 16 бит.

 

4)Доменный механизм поддержания целостности. Под доменом в РБД понимается множество возможных значений, которые принимают данные хранящиеся в данном столбце. В частности в случае если домен совпадает со множеством значений данного типа, но часто домен является дополнительным ограничением. Если в столбце хранится номера месяца 1..12 то в домене находится 12 значений, а тип целый то есть домен уже. В большинстве СУБД домен определяется набором условий  которые должны выполнятся для данных хранящихся в столбце. В случае если записываемые данные не удовлетворяют условию генерируется ошибка. (условие(1<= =>12)), предотвращая неправильное указание месяца.

 

5)Поддержание наличия возможных ключей в таблице.

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

 

6)Некоторые СУБД поддерживают создание новых типов данных к таким относятся SQL Server 2005  там на основе технологии .Net можно создавать новые типы данных, которые фактически являются объектами со своими свойствами и методами. (Уже перевод РБД в Объектное РБД).

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

1) Запретить те или иные действия которые противоречат целостности базы данных.

2) Попутно с выполняемой операцией внести изменения в др. таблицы баз данных или структуру баз данных.

3) функция журналирования тех или иных действий в базе данных.

 

  

 

   

 

Hosted by uCoz