Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование ИС 2011.doc
Скачиваний:
72
Добавлен:
11.03.2015
Размер:
356.86 Кб
Скачать

29. Реляционная модель данных. Набор ограничений целостности. Операции, нарушающие целостность

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

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

Ограничения целостности отношенияпредставляют ограничения, накладываемые только на допустимые значенияотдельногоотношения, ине являющиесяограничением целостности кортежа. Требование, что ограничение относится к отдельному отношению, означает, что для его проверки не требуется информации о других отношениях (в том числе не требуется ссылокпо внешнему ключуна кортежиэтого жеотношения).Ограничение целостности.Совокупность взаимосвязанных таблиц.Внешний ключ– это атрибут или группа атрибутов отражающих связь между отношениями (объектами)Ссылающиеся отношения– это отношения, которые содержат внешний ключ.Ссылочное или целевое отношение – это отношение, которому соответствует потенциальный ключ.Ограничение целостности связизаключается в том, что для каждого значения внешнего ключа, появляющегося ссылающимся отношением в целевом отношении должен найтись картеж с таким же значением потенциального ключа, любо значение внешнего ключа должно быть неопределенным (значение NULL). Ограничение по существованию является разновидностью ограничения целостности связей.Ограничение по существованиюзаключается в том, что для существования объекта в отношении S1 необходимо, чтобы он был обязательно связан с объектом в отношении S2. Внешний ключ в отношении S1 не может быть неопределенным (значение NULL). В предметной области может существовать ситуация обратной связи по существованию, когда не может существовать запись родительской таблицы без связанной с ней дочерних записей.Прочие ограничения:

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

  • К прочим ограничениям относятся алгоритмические зависимости между показателями (изменением постоянных показателей).

  • Запрет на обновление (изменение статических показателей).

  • Ограничение целостности на отмену ранее созданных ограничений целостности.

Другим признаком классификации по временному признаку является классификация по режиму проверки корректности базы данных. Возможны два режима проверки целостности:

  • Проверка в момент корректировки (оперативная проверка).

  • Проверка существующей базы данных (аудит).

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

  • Вставка картежа в родит отношение – не нарушая ссылочной целостности.

  • Обновление кортежа в РО – может привести к нарушении СЦ.

  • Удаление  кортежа в РО – может привести к нарушении СЦ.

  • Вставка в ДО – может привести к нарушении СЦ.

  • Обновлении в ДО – может привести к нарушении СЦ.

  • Удаление из ДО  не нарушая ссылочной целостности.

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

  • RESTRICT (ОГРАНИЧИТЬ)- не разрешать выполнение операции, приводящей к нарушению ссылочной целостности. Это самая простая стратегия, требующая только проверки, имеются ли кортежи в дочернем отношении, связанные с некоторым кортежем в родительском отношении.

  • CASCADE (КАСКАДИРОВАТЬ)- разрешить выполнение требуемой операции, но внести при этом необходимые поправки в других отношениях так, чтобы не допустить нарушения ссылочной целостности и сохранить все имеющиеся связи. Изменение начинается в родительском отношении и каскадно выполняется в дочернем отношении. В реализации этой стратегии имеется одна тонкость, заключающаяся в том, что дочернее отношение само может быть родительским для некоторого третьего отношения. При этом может дополнительно потребоваться выполнение какой-либо стратегии и для этой связи и т.д. Если при этом какая-либо из каскадных операций (любого уровня) не может быть выполнена, то необходимо отказаться от первоначальной операции и вернуть базу данных в исходное состояние. Это самая сложная стратегия, но она хороша тем, что при этом не нарушается связь между кортежами родительского и дочернего отношений.

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

  • SET NULL (УСТАНОВИТЬ В NULL) - разрешить выполнение требуемой операции, но все возникающие некорректные значения внешних ключей изменять на null-значения. Эта стратегия имеет два недостатка. Во-первых, для нее требуется допустить использование null-значений. Во-вторых, кортежи дочернего отношения теряют всякую связь с кортежами родительского отношения. Установить, с каким кортежем родительского отношения были связаны измененные кортежи дочернего отношения, после выполнения операции уже нельзя.

  • SET DEFAULT (УСТАНОВИТЬ ПО УМОЛЧАНИЮ) - разрешить выполнение требуемой операции, но все возникающие некорректные значения внешних ключей изменять на некоторое значение, принятое по умолчанию. Достоинство этой стратегии по сравнению с предыдущей в том, что она позволяет не пользоваться null-значеними. Недостатки заключаются в следующем. Во-первых, в родительском отношении должен быть некий кортеж, потенциальный ключ которого принят как значение по умолчанию для внешних ключей. В качестве такого "кортежа по умолчанию" обычно принимают специальный кортеж, заполненный нулевыми значениями (не null-значениями!). Этот кортеж нельзя удалять из родительского отношения, и в этом кортеже нельзя изменять значение потенциального ключа. Таким образом, не все кортежи родительского отношения становятся равнозначными, поэтому приходится прилагать дополнительные усилия для отслеживания этой неравнозначности. Это плата за отказ от использования null-значений. Во-вторых, как и в предыдущем случае, кортежи дочернего отношения теряют всякую связь с кортежами родительского отношения. Установить, с каким кортежем родительского отношения были связаны измененные кортежи дочернего отношения, после выполнения операции уже нельзя.

В некоторых реализация СУБД рассматривается еще одна стратегия поддержания ссылочной целостности :

  • IGNORE (ИГНОРИРОВАТЬ) - выполнять операции, не обращая внимания на нарушения ссылочной целостности.

 

//Поскольку каждый атрибут связан с некоторым доменом, для множества допустимых значений каждого атрибута отношения определяются ограничения домена. Задаются два правила целостности, которые являются ограничениями для всех допустимых состояний базы данных: целостность сущностей и ссылочная целостность. Целостность сущностей– в базовом отношении ни один атрибут первичного ключа не может содержать отсутствующих значений, обозначаемых как NULL. По определению, первичный ключ — это минимальный идентификатор, который используется для уникальной идентификации кортежей. Это значит, что никакое подмножество первичного ключа не может быть достаточным для уникальной идентификации кортежей. Если допустить присутствие NULL в любой части первичного ключа, это равносильно утверждению, что не все его атрибуты необходимы для уникальной идентификации кортежей, что противоречит определению первичного ключа. Второе ограничение целостности касается внешних ключей.Ссылочная целостность– если в отношении существует внешний ключ, то значение внешнего ключа должно либо соответствовать значению потенциального ключа некоторого кортежа в его базовом отношении либо внешний ключ должен полностью состоять из значений NULL.Корпоративные ограниченияцелостности – дополнительные правила поддержки целостности данных, определяемые пользователями или администраторами базы данных.//