Обеспечение целостности данных
Существует два основных вида ограничений целостности, которые должны поддерживаться СУБД:
1) структурные ограничения – задаются функциональными зависимостями и проверяются путем проверки равенства значений соответствующих данных в БД;
2) ограничения реальных значений данных, хранимых в БД, требуют, чтобы значение поля принадлежало некоторому диапазону значений, либо выражают некоторое арифметическое соотношение между значениями различных полей.
Существуют и другие ограничения целостности. Например, ограничения на условия выполнения параллельных операций над данными в базе; ограничения тина «старый» – «новый», когда БД переходит в новое состояние.
В общем случае целостность можно нарушить при сбое оборудования, программной ошибке, ошибке человека-оператора, ошибках в исходных данных и т. п.
Рассмотрим различные тины ограничений целостности.
1. Значения первичного ключа любого отношения (файла) должны быть уникальны. Система управления БД должна отклонить любую попытку ввести в базу данных кортеж (запись) со значением первичного ключа, повторяющим уже имеющееся значение. Для спецификации этого типа ограничений достаточно фразы KEY при описании модели данных.
2. Отношение (файл) кроме первичного ключа может содержать возможные ключи, значения которых должны быть также уникальными. Для спецификации этого типа ограничений достаточно фразы UNIQUE (А) при описании модели данных, где А – атрибут или комбинация атрибутов.
Рассмотренные два примера соответствуют структурным ограничениям. Если отношение находится в четвертой нормальной форме, то фраз KEY и UNIQUE достаточно для спецификации всех функциональных зависимостей. Если отношение содержит некоторую дополнительную зависимость (т. е. не является нормализованным), эту зависимость необходимо специфицировать специальным выражением при описании данных.
3. В заданном отношении для каждого кортежа между значениями полей А и В должно всегда выполняться условие, что первое больше второго. Ограничение специфицируется специальным выражением.
4. Значения, которые принимает некоторый атрибут, должны быть ограничены заданным диапазоном. Ограничение специфицируется специальным выражением.
5. Для некоторого атрибута (или комбинации атрибутов) может существовать конечный, небольшой по размеру набор допустимых значений (например, по атрибуту ОБРАЗОВАНИЕ могут быть только значения НАЧАЛЬНОЕ, НЕПОЛНОЕ СРЕДНЕЕ СРЕДНЕЕ, НЕПОЛНОЕ ВЫСШЕЕ, ВЫСШЕЕ). Ограничение специфицируется специальным выражением при описании данных.
6. Значения некоторого атрибута должны удовлетворять определенному формату. Ограничение специфицируется фразой при описании соответствующего атрибута.
7. Множество значений одного из атрибутов отношения должно удовлетворять некоторому статистическому условию. Например, конкретное значение не должно превышать более чем в два раза среднее значение. Ограничение реализуется СУБД при контроле выполняемых операций, в которых используются агрегатные функции.
8. Множество значений некоторого столбца отношения является подмножеством значений другого столбца этого отношения. Ограничения также контролируются при выполнении операций.
Примеры 3—8 соответствуют второму виду ограничений—ограничений на значения данных.
9. Требуется ограничить обновление данных в заданном отношении таким образом, чтобы для указанного атрибута имело место в каждом кортеже некоторое соотношение между «старым» и «новым» значениями. Чтобы специфицировать подобное ограничение, в языках должны быть предусмотрены возможности ссылки на старое и новое значения.
10. Если транзакции А и В выполняют изменения одних и тех же данных в БД, то при их параллельном выполнении может быть нарушена целостность данных в базе. В этом случае СУБД должна реализовать специальный режим выполнения параллельных вычислений. Например, транзакция В не может обратиться к данным. пока с ними не закончится работа в транзакции Л.
11. Если транзакция выполняет несколько изменений в БД, связанных между собой ограничениями целостности, то ограничения целостности можно проверять только после выполнения транзакции. Такие ограничения называют отложенными.
Рассмотренных примеров достаточно, чтобы создать представление о составе задач, подлежащих решению при проектировании средств обеспечения целостности данных в БД.
Основная идея обеспечения ограничений целостности данных заключается в том, чтобы использовать ЯМД как средство выражения этих ограничений. Описание ограничений целостности содержит две части. В первой из них выражается само ограничение, во второй описывается, когда, при каких условиях должна выполняться проверка. Языки манипулирования данными реальных систем позволяют в той или иной мере поддерживать многие из рассмотренных ограничений целостности.
Дата добавления: 2015-02-10; просмотров: 1703;