ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 31.03.2021
Просмотров: 1621
Скачиваний: 25
91
а
щихся
потенциальными
ю
я
(
или
входящих
в
и
уже
лось
,
ключ
отношения
яв
дство
ти
и
объектов
,
оп
ко
ами тношен
спеч
св
м
уник
ност
ий
ключа
в
отношении
.
тог
бы
е
атрибута
,
яв
л
ил его
част
ь
ь
быть
опре
ыми
,
яв
прот оречит
требованию
уникальности
ключа
.
Действительно
,
если
значение
ключа
или
его
части
не
определено
,
то
не
может
бы
кортежей
отношения
(
в
с
что
»).
Следует
заметить
,
однако
,
что
в
реальных
системах
такой
жесткий
запрет
использования
о
е
т
и
трибутов
,
являю
кл чами
отношени
х
состав
).
Как
говори
ляется
сре
м
иден фикаци
исываемых
ртеж
о
ия
.
Это
обе
ивается
ойство
аль
и
значен
Допущение
о
,
что
значени
ляющегося
к ючом
и
ью
,
могли
отсутствоват
,
то
ест
не
деленн
но
ив
ть
и
речи о
возможности
идентификации
с
помощью
него
казках
это
формулируется
как
– «
найди
то
,
не
знаю
NULL
для
ключевых
атрибутов
часто
относят
только
к
первичному
ключу
отношения
.
В
принципе
этого
достаточно
,
чтобы
обеспечить
механизм
идентификации
кортежей
.
Для
атрибутов
альтернативных
ключей
NULL
-
значения
могут
допускаться
,
при
этом
,
однако
,
с
помощью
значений
таких
ключей
можно
будет
идентифицировать
уже
не
все
кортежи
отношения
,
а
тольк
кортежи
с
р ально
прису ствующим
значениями
атрибутов
альтернативного
ключа
.
Таким
образом
,
рассмотренные
выше
свойства
ключа
отношения
и
соответствующее
ограничение
целостности
могут
быть
дополнены
следующим
.
Ни
один
из
атрибутов
,
составляющих
первичный
ключ
,
не
может
принимать
NULL
-
значения
.
Другим
словами
,
объявление
атрибута
(
атрибутов
)
отношения
первичным
ключом
(
в
языке
SQL
для
этого
используются
ключевые
слова
PRIMERY
KEY
)
фактически
означает
введение
для
этого
атрибута
(
атрибутов
)
обязательности
указания
его
(
их
)
значений
.
В
языке
SQL
это
эквивалентно
применению
к
атрибуту
ограничения
NOT
NULL
.
и
92
9.4
В
Ссылочная
е
ние
связано
само
с
собой
.
К
этом
чения
по
СТ
пр
сод
ДИ
УСПЕВАЕМОСТЬ
информацию
о
и
СТ
жет
иметь
к
с
о
мн
фа
клю
СТ
КО
.
Ограничения
целостности
уровня
базы
данных
нешние
и
родительские
ключи
отношения
.
целостность
Ограничения
целостности
уровня
базы
данных
представляют
собой
ограничения
,
накладываемые
на
значения
двух
или
боле
связанных
между
собой
отношений
,
включая
случай
,
когда
отноше
у
типу
ограничений
относятся
ограничения
,
накладываемые
на
зна
так
называемого
внешнего
ключа
,
и
определяющего
целостность
базы
данных
ссылкам
.
Рассмотрим
в
качестве
примера
приведенные
ниже
на
рис
отношения
УДЕНТЫ
,
ДИСЦИПЛИНЫ
,
УСПЕВАЕМОСТЬ
и
ФАКУЛЬТЕТЫ
.
Первое из
них
едставляет
персональную
информацию
о
конкретных
студентах
.
Его
кортежи
ержат
данные
о
конкретных
экземплярах
сущности
СТУДЕНТ
.
В
отношении
СЦИПЛИНЫ
содержится
информация
об
изучаемых
дисциплинах
.
Отношение
представляет
уже
связ
между
сущностями
УДЕНТ
и
ДИСЦИПЛИНА
.
Это
связь
многие
-
ко
-
многим
–
студент
мо
оценки
по
многим
дисциплинам
,
и
по
кон ретной ди циплине имеют
ценки
огие
студенты
.
В
отношении
ФАКУЛЬТЕТЫ
представлена
информация
о
культетах
.
Первичным
ключом
отношения
СТУДЕНТЫ
является
атрибут
(
личный
код
студента
),
в
отнош
КОД
_
СТУД
ении
ДИСЦИПЛИНЫ
первичным
ключом
является
атрибут
КОД
_
ДИСЦ
,
в
отношения
ФАКУЛЬТЕТЫ
первичный
ч
это
атрибут
ФАКУЛЬТЕТ
,
у
отношения
УСПЕВАЕМОСТЬ
первичный
ключ
составной
,
это
– {
КОД
_
СТУД
,
КОД
_
ДИСЦ
}.
УДЕНТЫ
УСПЕВАЕМОСТЬ
Д
_
СТУД
ИМЯ
ФАКУЛЬТЕТ
СТАРОСТА
КОД
_
СТУД
КОД
_
ДИСЦ
ОЦЕНКА
С
2
Иванов
Физический
С
2
С
9
Д
2
5
С
5
Петров
Химический
С
9
С
9
Д
4
4
С
4
Сидоров
Физический
С
2
С
9
Д
1
4
С
9
Орлов
Химический
С
9
С
9
Д
6
5
С
6
Смирнов
Физический
С
2
С
6
Д
2
3
С
1
Попова
Исторический
NULL
С
6
Д
4
4
С
8
Поляков
NULL NULL
С
6
Д
6
3
С
1
Д
4
5
С
1
Д
6
5
С
1
Д
8
4
93
ДИСЦИПЛИНЫ
ФАКУЛЬТЕТЫ
КОД
_
ДИСЦ
ДИСЦИПЛИНА
ЧАСЫ СЕМЕСТР
ФАКУЛЬТЕТ
ДЕКАН
ТЕЛЕФОН
Д
2
Физика
32
2
Физический
Климов
123778
Д
4
Математика
54 1
Химический
Боев
123556
Д
1
История
32
3
Исторический
Зуев
123367
Д
6
Информатика
108
1
Математический
Ковале
123876
в
Д
8
Химия
17
4
Рис
. 9.2.
Примеры
отношений
базы
данных
для
иллюстрации
ограничений
ссылочной
елостности
базы
данных
При
внимательном
рассмотрении
приведенных
отношений
можно
увидеть
,
что
значения
некоторых
атрибутов
одного
отношения
оказываются
связанными
со
значениями
атрибутов
в
другом
отношении
.
Рассмотрим
характер
связи
между
отношениями
СТУДЕНТЫ
и
УСПЕВАЕМОСТЬ
.
В
отношении
УСПЕВАЕМОСТЬ
не
должно
быть
кортежей
с
записями
,
касающимися
студентов
,
о
которых
отсутствует
информация
в
отношении
СТУДЕНТЫ
(
инф м
б
ц
т
с
й
мо
в
от
и
сре
и
,
атрибут
КОД
_
Т
ом
этого
отно
к
назы е
й
ключ
о
т
КОД
_
ДИ
ю
,
т
отношения
ДИСЦИПЛИНЫ
,
а
в
отношении
СТУДЕНТЫ
атрибут
ФАКУЛЬТЕТ
явля
ор ация
о
оценках
«
неизвестно кого
»
не
имее
смысла
).
Отсюда ледует
,
что
на
значения
атрибута
КОД
_
СТУД
отношения
УСПЕВАЕМОСТЬ
должно
быть
наложено
соответствующее
ограничение
,
а
именно
, –
в
качестве
его
значени
гут
использоваться
только
коды
студентов
фактически
присутствующие
ношении
СТУДЕНТЫ
.
Атрибут
КОД
_
СТУД
отношений
является
фактическ
дс в
т ом
связи
этих
отношений
.
При
этом
,
как
мы
уже
говорил
С УД
отношения
СТУДЕНТЫ
является
первичным
ключ
шения
.
В
отношении
же
УСПЕВАЕМОСТЬ
атрибут
КОД
_
СТУД
является
та
ва мым
внешним
ключом
,
ссылающимся
на
соответствующий
первичны
тношения
СТУДЕНТЫ
.
Аналогично
,
в
этом
же
отношении
атрибу
СЦ
является
внешним
кл чом
ссылающимся
на
одноименный
атрибу
ется
внешним
ключом
,
ссылающимся
на
одноименный
атрибут
отношения
ФАКУЛЬТЕТЫ
.
Определение
понятия
внешний
ключ
имеет
следующий
вид
.
Пусть
R2
–
базовое
отношение
.
Тогда
внешний
ключ
(
foreign key
)
,
FK
в
отношении
R2
–
это
подмножество
множества
атрибутов
R2
,
такое
что
:
•
существует
базовое
отношение
R1 (
отношения
R1
и
R2
не
обязательно
различные
)
с
потенциальным
ключом
PK;
•
каждое
значение
внешнего
ключа
FK
в
екущем
з ачении
R2
всегд
т
н
а
совпадает
со
значением
потенциального
ключа
PK
некоторого
кортежа
в
текущем
значении
R1.
94
Потенциальный
ключ
,
на
который
ссылается
внешний
ключ
,
называют
родительским
ключом
.
Значения
внешнего
ключа
называют
ссылкой
(
reference
)
к
кортежу
,
содержащему
соответствующее
значение
родительского
потенциального
ключа
.
Этот
кортеж
называют
ссылочным
(
referenced
)
или
целевым
(
target
)
кортежем
.
Проблема
необходимости
обеспечен я
соответствия
значений
внешнего
ключа
значениям
определенного
потенци
и
ального
ключа
известна
как
проблема
с
н
го
ключа
,
называют
ссыл
ЕМОСТЬ
со
з
г
л т
СТУДЕНТЫ
на
атрибут
КОД
_
СТУД
этого
же
от
сылочной
целостности
(
referential integrity problem
),
а
само
ограничение
,
акладываемое
на
допустимые
значения
внешне
очным
ограничением
(
referential
constraint
).
Прокомментируем
приведенное
выше
определение
внешнего
ключа
.
1.
Из
определения
следует
,
что
каждое
значение
внешнего
ключа
должно
являться
значением
соответствующего
родительского
потенциального
ключа
.
Однако
надо
обратить
внимание
на
то
,
что
обратное
не
требуется
,
потенциальный
ключ
,
выступающий
в
качестве
родительского
,
может
содержать
значения
,
которые
в
данный
момент
не
являются
значением
внешнего
ключа
.
Например
,
в
отношении
СТУДЕНТЫ
могут
быть
записи
о
студентах
,
не
имеющих
оценок
ни
по
одной
из
дисциплин
,
и
поэтому
в
отношении
УСПЕВА
записи
о
них
и
,
следовательно
,
ответствующие
начения
внешне о
ключа
будут
отсутствовать
.
2.
Внешний
ключ
будет
составным
тогда
и
только
тогда
,
когда
соответствующий
родительский
потенциальный
ключ
является
составным
.
Он
будет
простым
тогда
и
только
тогда
,
когда
соответствующий
родительский
ключ
также
будет
простым
.
3.
Каждый
атрибут
,
входящий
в
данный
внешний
ключ
,
должен
быть
определен
на том
же
самом домене
,
что
и
соответствующий
атрибут
соответствующего
родительского
ключа
.
4.
Следует
иметь
в
виду
,
что
целевое
отношение
может
само
ссылаться
на
другое
отношение
,
которое
в
свою
очередь
может
ссылаться
на
следующее
отношение
,
образуя
,
таким
образом
,
цепь
или
каскад
из
отношений
,
последовательно
ссылающихся
друг
на
друга
. (
В
приведенном
примере
отношение
УСПЕВАЕМОСТЬ
ссы ае ся
на
отношение
,
которое
,
в
свою
очередь
ссылается
на
отношение
ФАКУЛЬТЕТЫ
)
.
5.
Из
определения
внешнего
ключа
также
следует
,
что
отношение
может
ссылаться
само
на
себя
.
(
В
отношении
СТУДЕНТЫ
атрибут
СТАРОСТА
в
качестве
внешнего
ключа
ссылается
ношения
,
являющийся
для
него
родительским
ключом
).
95
Внешние
ключи
и
NULL-
значения
Допущение
возможности
использования
в
реляционной
базе
данных
NUL
выше
вопросов
,
связанных
с
цел
пер
в
кон
ежа
ссылающегося
отношения
значение
соответствующего
ФА
атр
клю
По
озн
как
L
-
значений
требует
уточнения
рассмотренных
внешними
ключами
отношений
и
правилами
обеспечения
ссылочной
остности
.
Как
уже
говорилось
выше
,
NULL
-
значения
являются
недопустимыми
для
вичных
ключей
.
Появление
же
NULL
-
значений
в
позициях
внешних
ключей
общем
случае
не
запрещено
.
Эта
ситуация
означает
лишь
то
,
что
для
кретного
корт
родительского
ключа
не
известно
.
Например
,
в
отношении
СТУДЕНТЫ
атрибут
КУЛЬТЕТ
является
внешним
ключом
,
ссылающимся
на
одноименный
ибут
отношения
ФАКУЛЬТЕТЫ
,
в
котором
этот
атрибут
является
первичным
чом
.
Тот
факт
,
что
в
отношении
СТУДЕНТЫ
в
кортеже
студента
по
фамилии
ляков
вместо
значения
конкретного
факультета
установлен
маркер
NULL
,
ачает
то
,
что
для
этого
студента
в
данный
момент
времени
не
известно
на
ом
факультете
он
учится
.
В
связи
с
вышесказанным
,
приведенное
в
предыдущем
разделе
определение
внешнего
ключа
необходимо
уточнить
следующим
образом
.
Пусть
R2
–
базовое
отношение
.
Тогда
внешний
ключ
,
скажем
FK
в
отношении
R2
–
это
подмножество
множества
атрибутов
R2
,
такое
что
:
•
существует
базовое
отношение
R1 (
отношения
R1
и
R2
не
обязательно
различные
)
с
потенциальным
ключом
PK;
•
каждое
значение
внешнего
ключа
FK
в
текущем
значении
R2
или
является
NULL
-
значением
,
или
совпадает
со
значением
потенциального
ключа
PK
некоторого
кортежа
в
текущем
значении
R1.
Решение
вопроса
о
допустимости
или
недопустимости
использования
для
н шнего
ключа
NULL
-
значений
зависит
от
конкретной
ситуации
.
Например
,
лжно
быть
понятно
,
что
в
рассматриваемом
выше
примере
для
внешнего
ча
,
представленный
атрибутом
КОД
_
СТУД
отношения
УСПЕВАЕМОСТЬ
,
рещено
использование
NULL
-
значений
из
-
за
того
,
что
сам
этот
атрибут
в е
до
клю
зап
отн
ФАКУЛЬТЕТ
,
явля
о
,
кто
является
его
старостой
,
или
не
известно
,
на
каком
факультете
он
учится
.
Допускать
или
не
допускать
использование
является
частью
составного
первичного
ключа
{
КОД
_
СТУД
,
ДИСЦИПЛИНА
}
ошения
УСПЕВАЕМОСТЬ
.
Для
атрибутов
СТАРОСТА
и
ющихся
внешними
ключами
отношения
СТУДЕНТЫ
,
NULL
-
значения
в
принципе
допустимы
.
Их
наличие
будет
отражать
тот
факт
,
что
для
конкретного
студента
не
известн