Обеспечение целостности данных (функция безопасности). 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Обеспечение целостности данных (функция безопасности).



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

Существует два основных вида ограниченной целостности (ОЦ), которые должны поддерживаться СУБД:

1. Структурные ограничения - задаются функциональные зависимости и проверяются путем проверки этих зависимостей;

2. Ограничение реальных значений данных, хранимых в БД требующие 1) либо чтобы значение поля принадлежало некоторому диапазону значе­ний, 2) либо выражает некоторые арифметические соотношения между значениями различных полей.

Существуют и другие ОЦ. Например, ограничения на условия выполнения параллельных операций над данными в БД.

Рассмотрим различные типы (варианты) ограничений целостности.

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

2. Отношение (файл) кроме первичного ключа может содержать и другие ключи (вторичный ключ и т.д.), значение которых должны быть уникальны. Для спецификации этого типа ограничений достаточно фразы UNIQUE (Ai) при описании модели данных. Ai - атрибут или комбина­ция атрибутов.

Рассмотренные два примера (п. 1 и 2) соответствуют структурным ограничениям.

Если отношение нормализовано (представлено в 4-ой НФ), то фраз KEY и UNIQUE достаточно для спецификации всех функциональных зависимостей. Если отношение содержит некоторую вспомогательную зависимость (т.е. не является нормализованным), то эту зависимость нужно специфицировать специальным выражением при описании данных.

3. Значения, которые может принимать некоторый атрибут, должны быть ограничены заданным диапазоном. Ограничение специфицируется специальным выражением.

Пример 1. ОЦ домена ((Дейт) стр.450): в отношении поставки SP значение атрибута QTY (количества штук) не должно выходить за пределы 0 - 5000.

Выражение спецификации - это ОЦ на гипотетическом языке (типа SQL) можно представить в виде:

CREATE DOMAIN QTY

FORALL QTY (QTY > 0 AND QTY < 5000);

Для данного примера укажем некоторые особенности:

- имя ограничения целостности и имя домена совпадают;

- поскольку сами домены не обновляются, то сами по себе ограничения должны не проверяться, а вместо этого проверяются ограничения атрибута.

Рассмотрим это на Примере 2, дополняющем Пример 1. То есть, ограни­чение целостности атрибута может быть специфицировано с учетом ОЦ домена так::

CREATE TABLE SP

SNAME DOMAIN QTY

- при этом ОЦ атрибута совпадает с именем соответствующего ОЦ домена, которое является именем домена (QTY);

- ограничения целостности атрибута проверяется СУБД немедленно, т.е. любая попытка (с помощью операции вставки INSERT или обновления UPDATE) введения в БД некоторого значения атрибута, не соответствующего заданным ограничениям, будет отвергнута (т.е. выполняется операция REJECT с отменой действий, вызвавших это нарушение).

Таким образом, указанное в определении атрибута ограничение (SNAME DOMAIN QTY), которое иногда определяют как ограничение атрибута, выводится из соответствующего ограничения домена;

- ОЦ атрибута может быть снято только путем устранения самого атрибута;

- ОЦ домена может быть устранено только путем устранения самого домена. Пример: DESTROY DOMAIN QTY

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

Пример 3. Указать допустимый набор цветов детали в отношении детали Р.

CREATE DOMAIN COLOR

VALUES ('RED','YELLOW,'BLUE','GREEN') CREATE TABLE P

SNANE DOMAIN COLOR

5. Значения, которые может принимать некоторый атрибут Ai, должны быть ограничены заданным диапазоном, но при условии, накладываемом на значение другого атрибута Aj. Это ограничение относится к разряду ОЦ отношения. Пример 3. ОЦ отношения.

В отношении поставщика S каждый поставщик NS из Лондона должен иметь статус > 20.

Общий синтаксис ограничения целостности отношения имеет вид: CREATE INTEGRITY RULE <ИМЯ> /"Создать правило ОЦ*/

Ограничение

ON ATTEMPTED VIOLATION действия REJECT /* Отказать в выполнении изменения, нарушающего его целостность*/

Для конкретного ОЦ отношения CREATE INTEGRITY RULE PR3

FORALL S (IF S.CITY = 'LONDON' THEN S/STATUS > 20) ON ATTEMPTED VIOLATION REJECT;

Пример 4. ОЦ отношения.

Необходимо задать ограничение на значение статуса поставщиков в диа­пазоне 1 - 100. При этом домен STATUS содержит значения, которые выходят за данный диапазон 1 - 100. Поэтому для атрибута STATUS в дополнение к существующему ОЦ домена можно сформировать (задать) ОЦ отношение следующим образом:

CREATE INTEGRITY RULE PR4

S.STATUS > 1 AND S.STATUS < 100

ON ATTEMPTED VIOLATION REJECT;

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

6. Значения, которые могут принимать атрибуты, ограничены правилом, задаваемым для двух или более связанных между собой отношений. Такое ОЦ называется ОЦ базы данных. Рассмотрим пример такого ОЦ базы данных.

Пример 5. Ограничение - «Поставщики со статусом < 20 не могут постав­лять товары в качестве > 500». На гипотетическом языке (типа SQL) его можно сформулировать следующим образом:

CREATE INTEGRITY RULE PR5

FORALL (FORALL SP IF S.STATUS < 20 AND S.NS =SP.NS

THEN SP.QTY < 500);

Это же ОЦ БД можно записать без кванторов общности и соответствую­щих им скобок в следующем виде:

CREATE INTEGRITY RULE PR5

IF S.STATUS < 20 AND S.NS =SP.NS

THEN SP.QTY < 500

ON ATTEMPTED VIOLATION REJECT;

В этом примере есть две связанные переменные S.NS и SP.NS.

Замечание.

- ОЦ БД должно включать по крайней мере одно условие «условие соединения», содержащее две различных связанных переменных (имен атрибутов), которые определены в разных отношениях.

В данном примере S.NS = SP.NS;

- ОЦ БД не проверяются немедленно. Проверка ОЦ БД откладывается до конца выполнения транзакции;

- по умолчанию в качестве параметра действия используется не операция отказа REJECT, а операция отказа ROLLBACK.

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

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

Основная идея обеспечения ОЦ данных заключается в том, что использовать ЯМД как средство выражения этих ограничений.

ЯМД реальных СУБД позволяют в этой или иной мере поддерживать многие из рассмотренных ОЦ.

 



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 302; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.33.107 (0.009 с.)