Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
srs_IPOVS_BD.doc
Скачиваний:
41
Добавлен:
05.06.2015
Размер:
1.19 Mб
Скачать

2.1.2. Причины, приводящие к нарушению ограничений целостности

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

Нарушение целостности может возникнуть и при выполнении операций реляционной алгебры (проекция, соединение).

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

1. Отношение может “проецироваться”, если: 1) отношение находится в 3НФ и 2) результирующее отношение содержит тот же самый ключ или эквивалентный возможный ключ.

2. Отношения А и В могут соединяться по атрибутам элементов данных A.x и B.y, если: 1) отношения А и В находятся в 3НФ и 2) A.x является атрибутом в А (включая ключевой атрибут) и B.y является ключом или возможным ключом в В.

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

Предположим, что в ПО имеет место следующая ситуация: 1) предприятие имеет несколько корпусов, которые находятся в разных местах, т.е. степень связи между сущностями “предприятие” и “место расположения” - 1:N; 2) служащий работает на каком-либо предприятии (степень связи “служащий” - “предприятие” - М:1). Для отображения этой ПО в БД созданы два отношения: СЛУЖАЩИЕ (ФИО, код_предприятия, должность) и РАСПОЛОЖЕНИЕ_ПРЕДПРИЯТЯ (код_предприятия, адрес). Третье отношение отображает информацию о ПРЕДПРИЯТИИ в целом. Если выполнить операцию соединения этих двух отношений по условию равенства кодов предприятий, то полученное в результате отношение будет семантически неверно, так как, несмотря на то, что корпуса предприятия находятся по разным адресам, каждый из служащих работает только в одном определенном месте. Если бы степень связи “предприятие” - “место расположения” была 1:1, то никаких проблем при выполнении операции соединения не возникло бы.

Нарушение целостности при выполнении операций с таблицами БД может возникнуть и в других ситуациях. Пусть, например, имеются две таблицы X и Y, и в результате операции соединения получается новая таблица Z. После этого делается попытка в таблицу Z внести новые данные или скорректировать имеющиеся. В большинстве случаев нельзя заранее определить, какие изменения надо внести в исходные таблицы X и Y, чтобы сохранилась целостность всей БД. Поэтому обычно таблицу Z обновлять не разрешается.

Во многих системах, когда подобные таблицы возникают в результате выполнения запросов, они автоматически защищаются от обновления, и при их просмотре на экране дисплея высвечивается сообщение “Только для просмотра”. Если СУБД не контролирует подобные ситуации или таблицы были созданы такими способами, что система не установит наличие взаимосвязи между ними, то обеспечение целостности возлагается на проектировщика.

Наличие в БД исходных и соединенной таблиц приводит к дублированию данных, а любое явное или неявное дублирование требует специальных мер по обеспечению целостности данных.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]