Файл: Управление данными (пособие).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 31.03.2021

Просмотров: 1611

Скачиваний: 25

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

96

NULL

ком

 

системы

 

исходя

 

из

 

кон р

емой

 

задачи

Правила

н

ы

-

значений

 

в

 

этих

 

случаях

 

определяется

 

разработчи

к етных

 

особенностей

 

предметной

 

области

 

и

 

реша

 

ссылочной

 

целостности

 

Как

 

уже

 

говорилось

требование

 

целостности

 

данных

касающееся

 

внешних

 

ключей

состоит

 

в

 

следующем

В

 

базе

 

данных

 

не

 

должно

 

быть

 

значений

 

внешних

 

ключей

 

есогласованн х

 

со

 

значениями

 

соответствующих

 

родительских

 

ключей

Встает

 

вопрос

каким

 

образом

 

это

 

требование

 

может

 

быть

 

выполнено

б

статич

е

уд

 

яв

о

 

это

 

за

т

 

зна

 

и

 

ссы

дположим

что

 

мы

 

удаляем

 

из

 

отношения

 

R1

 

неко

 

отношения

). 

Если

 

в

 

другом

 

отношении

 

R2

 

то

 

2

 

мо

начения

 

родительского

 

поте

щ

ие

а

 

ди

 

к

 

а

ет

 

нарушиться

 

в

 

результате

 

операций

изменяющих

 

состояние

 

базы

 

данных

Таких

 

операций

 

три

 – 

вставка

обновление

 

и

 

удаление

 

кортежей

 

в

 

отношении

Так

 

как

 

в

 

определении

 

учитывая

 

то

что

 

данные

 

в

 

азе

 

данных

 

не

 

являются

 

ескими

неизменными

а

 

могут

 

в

 

процесс

 

работы

 

с

 

базой

 

обновляться

добавляться

аляться

Особенностью

 

требования

 

ссылочной

 

целостности

ляется

 

то

чт

 

требование

 

делает

 

значения

 

атрибутов

 

одного

 

отношения

висимыми

 

о

чений

 

атрибутов

 

другого

 

отношения

В

 

результате

 

такой

 

зависимости

 

возникает

 

ситуация

когда

 

мы

 

не

 

можем

 

произвольно

 

выполнять

 

операции

 

по

 

изменению

 

значен

ибутов

 

отношения

не

 

учитывая

 

возможных

 

ег

ий

 

атр

о

 

связей

с

 

другими

 

отношениями

в

 

данном

 

случае

 

связей

определяемых

 

требованиям

лочной

 

целостности

.  

Действительно

пре

торый

 

кортеж

  (

и

 

тем

 

самым

 

соответствующее

 

этому

 

кортежу

 

значение

 

потенциального

 

ключа

 

данного

имеется

 

внешний

 

ключ

который

 

ссылается

 

на

 

модифицируемое

 

отношение

 

R1

 

эта

 

операция

 

может

 

привести

 

к

 

тому

что

 

значение

 

внешнего

 

ключа

 

в

 

R

жет

 

оказаться

 

без

 

соответствующего

 

ему

 

з

нциального

 

ключа

 

в

 

этом

 

отношении

 

R1

Образуется

как

 

говорят

«

висячая

» 

ссылка

 

и

 

данные

 

в

 

базе

 

данных

 

оказываются

 

несогласованными

то

 

есть

 

целостность

 

базы

 

данных

 

будет

 

нарушенной

Такая

 

ситуация

 

возникнет

например

при

 

удалении

 

из

 

таблицы

 

СТУДЕНТЫ

  (

рис

. 9.2) 

кортежа

  {

С

6

Смирнов

Физический

С

2

}. 

В

 

таблице

 

УСПЕВАЕМОСТЬ

 

у

 

трех

 

кортежей

ссылаю ихся

 

на

 

значен

 

С

6

 

как

 

н ро тельский люч

значение трибута

 

КОД

_

 

будет

 

не

 

определено

СТУД

Аналогичная

 

ситуация

 

может

 

возникнуть

если

 

мы

 

захотим

 

в

 

каком

-

либо

 

кортеже

 

изменить

 

значение

 

атрибута

 

являющегося

 

потенциальным

 

ключом

 

(

или

 

входящего

 

в

 

потенциальный

 

ключ

). 

Таким

 

образом

ссылочная

 

целостность

 

мож


background image

 

97

ссылочной

 

целостности

 

участвуют

 

два

 

отношения

 – 

родительское

 

и

 

дочернее

а

 

в

 

каждом

 

из

 

них

 

возможны

 

три

 

операции

 – 

вставка

обновление

удаление

то

 

о

 

операции

в

 

 

е

 

ым

й

 

 

а

 

о

 

н

й

 

е

 

 

 

затрагивает

 

значение

 

потенциального

 

ключа

являющегося

 

родительским

.  

ении

 

кортежа

 

в

 

го

 

ключа

Если

 

в

 

ж

 

т

 
 

.  

 

в

 

а

 

е

 

е

 

 

ежа

 

в

 

е р

е

 
 

е

 

нию

 

ссылочной

 

целостности

.  

 

Удаление

 

кортежа

 

в

 

дочернем

 

отношении

При

 

удалении

 

кортежа

 

в

 

дочернем

 

отношении

 

ссылочная

 

целостность

 

не

 

нарушается

.  

 

нарушение

 

ссылочной

 

целостность

 

в

 

принципе

 

оказывается

 

возможным

 

при

 

выполнении

 

одной

 

из

 

следует

 

рассмотреть

 

шесть

 

различных

 

вариантов

.  

Для

 

родительского

 

отношения

 

эт

 

Вставка

 

кортежа

 

в

 

родительском

 

отношении

При

 

вставке

 

кортежа

 

родительское

 

отношение

 

возникает

 

новое

 

значение

 

потенциального

 

ключа

Так

 

как

 

существование

 

кортежей

 

в

 

родительском

 

отношении

,

на

 

которы

отсутствуют

 

ссылки

 

из

 

дочернего

 

отношения

является

 

вполне

 

допустим

то

 

вставка

 

кортежей

 

в

 

родительское

 

отношение

 

не

 

нарушает

 

ссылочно

целостности

.  

Обновление

 

кортежа

 

в

 

родительском

 

отношении

При

 

обновлении

 

кортеж

в

 

родительском

 

отношении

 

может

 

измениться

 

значение

 

потенциальног

(

родительского

ключа

Если

 

есть

 

кортежи

 

в

 

дочернем

 

отноше ии

ссылающиеся

 

на

 

обновляемый

 

кортеж

то

 

значения

 

их

 

внешних

 

ключе

станут

 

некорректными

 («

висячие

» 

ссылки

). 

Таким

 

образом

обновлени

кортежа

 

в

 

родительском

 

отношении

 

может

 

привести

 

к

 

нарушению

ссылочной

 

целостности

если

 

это

 

обновление

 

Удаление

 

кортежа

 

в

 

родительском

 

отношении

При

 

удал

родительском

 

отношении

 

удаляется

 

значение

 

потенциально

дочернем

 

отношении

 

есть

 

кортежи

ссылающиеся

 

на

 

удаляемый

 

корте

родительского

 

отношения

то

 

значения

 

их

 

внешних

 

ключей

 

стану

некорректными

Таким

 

образом

удаление

 

кортежей

 

в

 

родительском

отношении

 

также

 

может

 

привести

 

к

 

нарушению

 

ссылочной

 

целостности

Для

 

дочернего

 

отношения

Вставка

 

кортежа

 

в

 

дочернее

 

отношение

Нельзя

 

вставить

 

кортеж

 

дочернее

 

отношение

если

 

вставляемое

 

значение

 

внешнего

 

ключ

некорректно

  (

в

 

ельском

 

отношении

 

отсутствует

 

соответс

родит

твующе

значение

 

родительского

 

ключа

). 

Следовательно

вставка

 

кортежа

 

в

 

дочерне

отношение

 

может

 

привести

 

к

 

нарушению

 

ссылочной

 

целостности

.  

Обновление

 

кортежа

 

в

 

дочернем

 

отношении

При

 

обновлении

 

корт

дочернем

 

отношении

 

можно

 

попытаться

 

н ко ректно

 

изменить

 

значени

внешнего

 

ключа

  (

заменить

 

его

 

значением

отсутствующим

 

в

 

родительском

отношении

). 

То

 

есть

обновление

 

кортежа

 

в

 

дочернем

 

отношении

 

такж

может

 

привести

 

к

 

наруше

Таким

 

образом

из

 

вышесказанного

 

следует

что

следующих

 

четырех

 

операций

:  


background image

 

98

 

Обновление

 

кортежа

 

в

 

родительском

 

отношени

.  

 

Удаление

 

и

кортежа

 

в

 

родительском

 

отношении

.  

шение

 

ограничений

 

ссылочной

 

й

 

и м

н

я

необходимо

 

вы

ешних

 

ключей

 (foreign key rules). 

Существуют

 

два

 

основных

 

варианта

 

действий

 

для

 

обеспечения

 

целостности

 

данных

 

при

 

выполнении

 

указанных

 

выше

 

 

Ограничить

Этот

 

вариант

 

состоит

 

в

 

запрете

 

операции

приводящей

 

к

 

 

 

е

 

ющих

 

поправок

необходимых

 

для

 

сохранения

 

т

 

до

ой

 

целостности

в

 

.

ых

 

системах

 

используется

 

еще

 

одна

 

стратегия

 

обеспечения

 

ссыл

о

е

 

в

и

 

до

м

 

введение

 

в

 

систему

 

специальных

 

средств

обеспечивающих

 

выполнение

 

указанных

 

требований

 

для

 

этого

 

кортежа

Таким

 

образом

в

 

каждой

 

из

 

приведенных

 

ранее

 

четырех

 

операций

обновление

 

и

 

 

удаление

 

кортежа

 

в

 

родительском

 

отношении

вставка

 

и

 
 

ссылочно

ь

может

 

быть

 

использована

 

одна

 

из

 

четырех

 

указанных

 

стратегий

 

согласованности

 

данных

.  

 

Вставка

 

кортежа

 

в

 

дочернее

 

отношение

.  

 

Обновление

 

кортежа

 

в

 

дочернем

 

отношении

.  

Для

 

того

 

чтобы

 

исключить

 

нару

целостности

 

и

 

возникновение

  «

висячих

» 

ссылок

 

при

 

выполнении

 

операци

з ене ия

  (

UPDATE

и

 

удалени

  (

DELETE

значений

 

атрибутов

 

полнять

 

определенные

 

правила

Эти

 

правила

 

называются

 

правилами

 

вн

потенциально

 

опасных

 

операций

 

над

 

данными

:  

нарушению

 

ограничений

 

целостности

Каскадировать

Выполнение

 

операции

 

разрешается

но

 

при

 

этом

 

обеспечивается

 

каскадное

внесение

 

в

 

други

отношения

 

соответству
согласованности

 (

целостности

данных

.  

Если

 

в

 

отношениях

 

являются

 

допустимыми

 

NULL

-

значения

то

 

существуе

полнительная

 

возможность

 

восстановления

 

ссылочн

 

Установить

 

NULL

 

Операция

 

разрешается

но

 

при

 

этом

 

возникающие

 

некорректные

 

значения

 

внешних

 

ключей

 («

висячие

» 

ссылки

заменяются

 

NULL

-

значениями

.

 

 

В

 

некотор

очной

 

целостности

 

Установить

 

по

 

умолчанию

Операция

 

также

 

разрешается

но

 

при

 

этом

 

возникающие

 

некорректные

 

значения

 

внешних

 

ключей

 

заменяются

 

некоторым

 

значением

принятым

 

по

 

умолчанию

.  

последнего

 

 

Достоинством

 

варианта

 

является то

что

 

н

 

позволяет

 

н

пользоваться

 

NULL

-

значениями

Однако

 

при

 

этом

   

родительском

 

отношени

лж

 

ен обязательно

 

присутствовать

 

специальный

 

кортеж

потенциальный

 

ключ

 

которого

 

принят

 

как

 

значение

 

по

 

умолчанию

 

для

 

внешних

 

ключей

Этот

 

кортеж

 

нельзя

 

удалять

нельзя

 

также

 

изменять

 

значение

 

его

 

потенциального

 

ключа

что

 

делает

 

необходимы

обновление

 

кортежа

 

в

 

дочернем

 

отношении

при

 

которых

 

возможно

 

нарушение

й

 

целостност

 

обеспечения


background image

 

99

При

 

обновлении

 

кортежа

 

в

 

родительском

 

отношении

 

 

Ограничить

Операция

 

бновления

 

кортежа

 

отвергается

если

 

в

 

каком

-

либо

 

дочернем

 

отношении

 

имеется

 

хотя

 

бы

 

один

 

кортеж

ссылающийся

 

на

 

данный

  

об овляемый

 

кортеж

 

Каскадиро

о

н

вать

Операция

 

разрешается

но

 

вместе

 

с

 

обновлением

 

ко

ключ

 – 

объект

 

сс

яются

 

также

 

и

 

зн

а

 

в

 

родительском

 

отношении

 

.

ы

 

один

 

кортеж

ссылающийся

 

и

 

 

на

 

удаляемый

 

кортеж

.  

 

Установить

 

в

 

NULL

Вместе

 

с

 

удалением

 

кортежа

содержащего

 

 

в

обновлением

 

кортежа

со

 

Ограничить

Операция

 

вставки

 

кортежа

 

отвергается

если

 

значение

 

внешнего

 

ключа

 

этого

 

кортежа

 

не

 

соответствует

 

ни

 

одному

 

ртежа

содержащего

 

родительский

 

потенциальный

 

ылки

соответствующим

 

образом

 

каскадно

 

обновл

ачения

 

ссылающихся

 

на

 

него

 

внешних

 

ключей

 

в

 

дочернем

 

отношении

 

Установить

 

в

 

NULL

Операция

 

разрешается

но

 

вместе

 

с

 

обновлением

 

кортежа

содержащего

 

родительский

 

потенциальный

 

ключ

значения

 

ссылающихся

 

на

 

него

 

внешних

 

ключей

 

в

 

дочернем

 

отношении

 

заменяются

 

NULL

-

значением

 

Установить

 

по

 

умолчанию

Операция

 

разрешается

но

 

вместе

 

с

 

обновлением

 

кортежа

содержащего

 

родительский

 

потенциальный

 

ключ

значения

 

ссылающихся

 

на

 

него

 

внешних

 

ключей

 

в

 

дочернем

 

отношении

 

заменяются

 

значением

принятым

  

по

 

умолчанию

При

 

удалении

 

кортеж

 

Ограничить

 

Операция

 

удаления

 

кортежа

 

отвергается

если

 

в

 

каком

-

либо

 

дочернем

 

отношении

 

имеется

 

хотя

 

б

на

 

удаляемый

 

кортеж

 

Каскадировать

Операция

 

удаления

 

выполняется

однако

вместе

 

с

 

удалением

 

кортежа

содержащего

 

родительский

 

потенциальный

 

ключ

каскадно

 

удаляются

 

также

 

кортежи

   

дочернего

 

отношения

содержащие

 

внешние

 

ключи

ссылающиеся

родительский

 

потенциальный

 

ключ

значения

 

ссылающихся

 

на

 

него

 

внешних ключей

   

дочернем

 

отношении

 

заменяются

 

NULL

-

значением

 

Установить

 

по

 

умолчанию

Вместе

 

с

 

держащего

 

родительский

 

потенциальный

 

ключ

значения

 

ссылающихся

 

на

 

него

 

внешних

 

ключей

 

в

 

дочернем

 

отношении

 

заменяются

 

значением

принятым

  

по

 

умолчанию

При

 

вставке

 

кортежа

 

в

 

дочернее

 

отношение

  


background image

 

100

существующему

 

значению

 

потенциального

 

ключа

 

родительского

 

отношения

 

У

 

L

вс

значения

 

О

в

п

ь

 

по

 

умолчанию

Операция

 

обновления

 

кортежа

 

ра

п

9.

е

л

связанных

 

с

 

необходимостью

 

представления

 

в

 

базе

 

данных

 

специального

 

вида

 

становить в

 

NUL

Операция

 

тавки

 

кортежа

 

разрешается

но

 

вместо

 

предлагаемого

 

пользователем

 

некорректного

 

значения

 

внешнего

 

ключа

 

устанавливается

 

NULL

-

значение

 

Установить

 

по

 

умолчанию

Операция

 

вставки

 

кортежа

 

разрешается

но

 

вместо

 

предлагаемого

 

пользователем

 

некорректного

 

 

внешнего

 

ключа

 

устанавливается

 

значение

принятое

  

по

 

умолчанию

При

 

обновлении

 

кортежа

 

в

 

дочернем

 

отношении

 

 

граничить

Операция

 

обновления

 

кортежа

 

отвергается

если

 

новое

 

значение

 

внешнего

 

ключа

 

этого

 

кортежа

 

не

 

соответствует

 

ни

 

одному

 

сущест ующему

 

значению

 

отенциального

 

ключа

 

родительского

 

отношения

 

Установить

 

в

 

NULL

Операция

 

обновления

 

кортежа

 

разрешается

но

 

вместо

 

предлагаемого

 

пользователем

 

некорректного

 

нового

 

значения

 

внешнего

 

ключа

 

устанавливается

 

NULL

-

значение

 

Установит

зрешается

но

 

вместо

 

предлагаемого

 

пользователем

 

некорректного

 

значения

 

внешнего

 

ключа

 

устанавливается

 

значение

принятое

   

по

 

умолчанию

В

 

заключение

 

этого

 

раздела

 

можно

 

еще

 

отметить

что

вообще

 

говоря

возможно

 

использование

 

еще

 

одной

 

стратегии

 

поведения

 

при

 

возникновении

 

ситуации

нарушающей

 

ссылочную

 

целостность

 

базы

 

данных

которая

 

состоит

 

в

 

отказе

 

обеспечения

 

ссылочной

 

целостности

а

 

именно

 

И

и

в

я внимания

гнор ровать

Операция

 

ыполняется

не

 

обраща

 

 

на

 

нарушение

 

ссылочной

 

целостности

В

 

этом

 

случае

 

разработчик

 

базы

 

данных

использую

 

средства

 

СУБД

должен

 

реализовать

 

свою

 

специальную

 

стратегию

 

оддержания

 

ссылочной

 

целостности

 

данных

5. 

Средства

 

обеспечения

 

целостности

 

данных

 

в

 

СУБД

 

Предыдущи

 

разде ы

 

были

 

посвящены

 

рассмотрению

 

вопросов