ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 31.03.2021
Просмотров: 1611
Скачиваний: 25
96
NULL
ком
системы
исходя
из
кон р
емой
задачи
.
Правила
н
ы
-
значений
в
этих
случаях
определяется
разработчи
к етных
особенностей
предметной
области
и
реша
ссылочной
целостности
Как
уже
говорилось
,
требование
целостности
данных
,
касающееся
внешних
ключей
,
состоит
в
следующем
.
В
базе
данных
не
должно
быть
значений
внешних
ключей
есогласованн х
со
значениями
соответствующих
родительских
ключей
.
Встает
вопрос
,
каким
образом
это
требование
может
быть
выполнено
б
,
статич
,
е
,
уд
яв
о
это
за
т
зна
и
ссы
дположим
,
что
мы
удаляем
из
отношения
R1
неко
отношения
).
Если
в
другом
отношении
R2
,
то
2
мо
начения
родительского
поте
щ
ие
а
ди
к
а
ет
нарушиться
в
результате
операций
,
изменяющих
состояние
базы
данных
.
Таких
операций
три
–
вставка
,
обновление
и
удаление
кортежей
в
отношении
.
Так
как
в
определении
учитывая
то
,
что
данные
в
азе
данных
не
являются
ескими
неизменными
,
а
могут
в
процесс
работы
с
базой
обновляться
,
добавляться
аляться
.
Особенностью
требования
ссылочной
целостности
ляется
то
,
чт
требование
делает
значения
атрибутов
одного
отношения
висимыми
о
чений
атрибутов
другого
отношения
.
В
результате
такой
зависимости
возникает
ситуация
,
когда
мы
не
можем
произвольно
выполнять
операции
по
изменению
значен
ибутов
отношения
,
не
учитывая
возможных
ег
ий
атр
о
связей
с
другими
отношениями
,
в
данном
случае
связей
,
определяемых
требованиям
лочной
целостности
.
Действительно
,
пре
торый
кортеж
(
и
тем
самым
соответствующее
этому
кортежу
значение
потенциального
ключа
данного
имеется
внешний
ключ
,
который
ссылается
на
модифицируемое
отношение
R1
эта
операция
может
привести
к
тому
,
что
значение
внешнего
ключа
в
R
жет
оказаться
без
соответствующего
ему
з
нциального
ключа
в
этом
отношении
R1
.
Образуется
,
как
говорят
,
«
висячая
»
ссылка
и
данные
в
базе
данных
оказываются
несогласованными
,
то
есть
целостность
базы
данных
будет
нарушенной
.
Такая
ситуация
возникнет
,
например
,
при
удалении
из
таблицы
СТУДЕНТЫ
(
рис
. 9.2)
кортежа
{
С
6
,
Смирнов
,
Физический
,
С
2
}.
В
таблице
УСПЕВАЕМОСТЬ
у
трех
кортежей
,
ссылаю ихся
на
значен
С
6
как
н ро тельский люч
,
значение трибута
КОД
_
будет
не
определено
.
СТУД
Аналогичная
ситуация
может
возникнуть
,
если
мы
захотим
в
каком
-
либо
кортеже
изменить
значение
атрибута
являющегося
потенциальным
ключом
(
или
входящего
в
потенциальный
ключ
).
Таким
образом
,
ссылочная
целостность
мож
97
ссылочной
целостности
участвуют
два
отношения
–
родительское
и
дочернее
,
а
в
каждом
из
них
возможны
три
операции
–
вставка
,
обновление
,
удаление
,
то
о
операции
:
в
.
е
ым
,
й
•
а
о
н
,
й
е
затрагивает
значение
потенциального
ключа
,
являющегося
родительским
.
ении
кортежа
в
го
ключа
.
Если
в
ж
т
.
•
в
а
е
е
•
ежа
в
е р
е
е
нию
ссылочной
целостности
.
•
Удаление
кортежа
в
дочернем
отношении
.
При
удалении
кортежа
в
дочернем
отношении
ссылочная
целостность
не
нарушается
.
нарушение
ссылочной
целостность
в
принципе
оказывается
возможным
при
выполнении
одной
из
следует
рассмотреть
шесть
различных
вариантов
.
Для
родительского
отношения
эт
•
Вставка
кортежа
в
родительском
отношении
.
При
вставке
кортежа
родительское
отношение
возникает
новое
значение
потенциального
ключа
Так
как
существование
кортежей
в
родительском
отношении
,
на
которы
отсутствуют
ссылки
из
дочернего
отношения
,
является
вполне
допустим
то
вставка
кортежей
в
родительское
отношение
не
нарушает
ссылочно
целостности
.
Обновление
кортежа
в
родительском
отношении
.
При
обновлении
кортеж
в
родительском
отношении
может
измениться
значение
потенциальног
(
родительского
)
ключа
.
Если
есть
кортежи
в
дочернем
отноше ии
ссылающиеся
на
обновляемый
кортеж
,
то
значения
их
внешних
ключе
станут
некорректными
(«
висячие
»
ссылки
).
Таким
образом
,
обновлени
кортежа
в
родительском
отношении
может
привести
к
нарушению
ссылочной
целостности
,
если
это
обновление
•
Удаление
кортежа
в
родительском
отношении
.
При
удал
родительском
отношении
удаляется
значение
потенциально
дочернем
отношении
есть
кортежи
,
ссылающиеся
на
удаляемый
корте
родительского
отношения
,
то
значения
их
внешних
ключей
стану
некорректными
.
Таким
образом
,
удаление
кортежей
в
родительском
отношении
также
может
привести
к
нарушению
ссылочной
целостности
Для
дочернего
отношения
:
Вставка
кортежа
в
дочернее
отношение
.
Нельзя
вставить
кортеж
дочернее
отношение
,
если
вставляемое
значение
внешнего
ключ
некорректно
(
в
ельском
отношении
отсутствует
соответс
родит
твующе
значение
родительского
ключа
).
Следовательно
,
вставка
кортежа
в
дочерне
отношение
может
привести
к
нарушению
ссылочной
целостности
.
Обновление
кортежа
в
дочернем
отношении
.
При
обновлении
корт
дочернем
отношении
можно
попытаться
н ко ректно
изменить
значени
внешнего
ключа
(
заменить
его
значением
,
отсутствующим
в
родительском
отношении
).
То
есть
,
обновление
кортежа
в
дочернем
отношении
такж
может
привести
к
наруше
Таким
образом
,
из
вышесказанного
следует
,
что
следующих
четырех
операций
:
98
•
Обновление
кортежа
в
родительском
отношени
.
•
Удаление
и
кортежа
в
родительском
отношении
.
шение
ограничений
ссылочной
й
и м
н
я
необходимо
вы
ешних
ключей
(foreign key rules).
Существуют
два
основных
варианта
действий
для
обеспечения
целостности
данных
при
выполнении
указанных
выше
•
Ограничить
.
Этот
вариант
состоит
в
запрете
операции
,
приводящей
к
•
е
ющих
поправок
,
необходимых
для
сохранения
т
до
ой
целостности
.
в
.
ых
системах
используется
еще
одна
стратегия
обеспечения
ссыл
о
е
в
и
до
м
введение
в
систему
специальных
средств
,
обеспечивающих
выполнение
указанных
требований
для
этого
кортежа
.
Таким
образом
,
в
каждой
из
приведенных
ранее
четырех
операций
:
обновление
и
удаление
кортежа
в
родительском
отношении
,
вставка
и
ссылочно
ь
,
может
быть
использована
одна
из
четырех
указанных
стратегий
согласованности
данных
.
•
Вставка
кортежа
в
дочернее
отношение
.
•
Обновление
кортежа
в
дочернем
отношении
.
Для
того
чтобы
исключить
нару
целостности
и
возникновение
«
висячих
»
ссылок
при
выполнении
операци
з ене ия
(
UPDATE
)
и
удалени
(
DELETE
)
значений
атрибутов
полнять
определенные
правила
.
Эти
правила
называются
правилами
вн
потенциально
опасных
операций
над
данными
:
нарушению
ограничений
целостности
.
Каскадировать
.
Выполнение
операции
разрешается
,
но
при
этом
обеспечивается
каскадное
внесение
в
други
отношения
соответству
согласованности
(
целостности
)
данных
.
Если
в
отношениях
являются
допустимыми
NULL
-
значения
,
то
существуе
полнительная
возможность
восстановления
ссылочн
•
Установить
NULL
Операция
разрешается
,
но
при
этом
возникающие
некорректные
значения
внешних
ключей
(«
висячие
»
ссылки
)
заменяются
NULL
-
значениями
.
В
некотор
очной
целостности
.
•
Установить
по
умолчанию
.
Операция
также
разрешается
,
но
при
этом
возникающие
некорректные
значения
внешних
ключей
заменяются
некоторым
значением
,
принятым
по
умолчанию
.
последнего
Достоинством
варианта
является то
,
что
н
позволяет
н
пользоваться
NULL
-
значениями
.
Однако
при
этом
родительском
отношени
лж
ен обязательно
присутствовать
специальный
кортеж
,
потенциальный
ключ
которого
принят
как
значение
по
умолчанию
для
внешних
ключей
.
Этот
кортеж
нельзя
удалять
,
нельзя
также
изменять
значение
его
потенциального
ключа
,
что
делает
необходимы
обновление
кортежа
в
дочернем
отношении
,
при
которых
возможно
нарушение
й
целостност
обеспечения
99
При
обновлении
кортежа
в
родительском
отношении
•
Ограничить
.
Операция
бновления
кортежа
отвергается
если
в
каком
-
либо
дочернем
отношении
имеется
хотя
бы
один
кортеж
,
ссылающийся
на
данный
об овляемый
кортеж
.
•
Каскадиро
о
,
н
вать
.
Операция
разрешается
,
но
вместе
с
обновлением
ко
ключ
–
объект
сс
яются
также
и
зн
а
в
родительском
отношении
.
ы
один
кортеж
,
ссылающийся
•
и
на
удаляемый
кортеж
.
•
Установить
в
NULL
.
Вместе
с
удалением
кортежа
,
содержащего
в
•
обновлением
кортежа
,
со
•
Ограничить
.
Операция
вставки
кортежа
отвергается
,
если
значение
внешнего
ключа
этого
кортежа
не
соответствует
ни
одному
ртежа
,
содержащего
родительский
потенциальный
ылки
,
соответствующим
образом
каскадно
обновл
ачения
ссылающихся
на
него
внешних
ключей
в
дочернем
отношении
.
•
Установить
в
NULL
.
Операция
разрешается
,
но
вместе
с
обновлением
кортежа
,
содержащего
родительский
потенциальный
ключ
,
значения
ссылающихся
на
него
внешних
ключей
в
дочернем
отношении
заменяются
NULL
-
значением
.
•
Установить
по
умолчанию
.
Операция
разрешается
,
но
вместе
с
обновлением
кортежа
,
содержащего
родительский
потенциальный
ключ
,
значения
ссылающихся
на
него
внешних
ключей
в
дочернем
отношении
заменяются
значением
,
принятым
по
умолчанию
.
При
удалении
кортеж
•
Ограничить
Операция
удаления
кортежа
отвергается
,
если
в
каком
-
либо
дочернем
отношении
имеется
хотя
б
на
удаляемый
кортеж
.
Каскадировать
.
Операция
удаления
выполняется
,
однако
,
вместе
с
удалением
кортежа
,
содержащего
родительский
потенциальный
ключ
,
каскадно
удаляются
также
кортежи
дочернего
отношения
,
содержащие
внешние
ключи
,
ссылающиеся
родительский
потенциальный
ключ
,
значения
ссылающихся
на
него
внешних ключей
дочернем
отношении
заменяются
NULL
-
значением
.
Установить
по
умолчанию
.
Вместе
с
держащего
родительский
потенциальный
ключ
,
значения
ссылающихся
на
него
внешних
ключей
в
дочернем
отношении
заменяются
значением
,
принятым
по
умолчанию
.
При
вставке
кортежа
в
дочернее
отношение
100
существующему
значению
потенциального
ключа
родительского
отношения
.
•
У
L
.
вс
значения
О
в
п
ь
по
умолчанию
.
Операция
обновления
кортежа
ра
п
9.
е
л
связанных
с
необходимостью
представления
в
базе
данных
специального
вида
становить в
NUL
Операция
тавки
кортежа
разрешается
,
но
вместо
предлагаемого
пользователем
некорректного
значения
внешнего
ключа
устанавливается
NULL
-
значение
.
•
Установить
по
умолчанию
.
Операция
вставки
кортежа
разрешается
,
но
вместо
предлагаемого
пользователем
некорректного
внешнего
ключа
устанавливается
значение
,
принятое
по
умолчанию
.
При
обновлении
кортежа
в
дочернем
отношении
•
граничить
.
Операция
обновления
кортежа
отвергается
,
если
новое
значение
внешнего
ключа
этого
кортежа
не
соответствует
ни
одному
сущест ующему
значению
отенциального
ключа
родительского
отношения
.
•
Установить
в
NULL
.
Операция
обновления
кортежа
разрешается
,
но
вместо
предлагаемого
пользователем
некорректного
нового
значения
внешнего
ключа
устанавливается
NULL
-
значение
.
•
Установит
зрешается
,
но
вместо
предлагаемого
пользователем
некорректного
значения
внешнего
ключа
устанавливается
значение
,
принятое
по
умолчанию
.
В
заключение
этого
раздела
можно
еще
отметить
,
что
,
вообще
говоря
,
возможно
использование
еще
одной
стратегии
поведения
при
возникновении
ситуации
,
нарушающей
ссылочную
целостность
базы
данных
,
которая
состоит
в
отказе
обеспечения
ссылочной
целостности
,
а
именно
:
•
И
и
в
я внимания
гнор ровать
.
Операция
ыполняется
,
не
обраща
на
нарушение
ссылочной
целостности
.
В
этом
случае
разработчик
базы
данных
,
использую
средства
СУБД
,
должен
реализовать
свою
специальную
стратегию
оддержания
ссылочной
целостности
данных
.
5.
Средства
обеспечения
целостности
данных
в
СУБД
Предыдущи
разде ы
были
посвящены
рассмотрению
вопросов
,