- •Резниченко Валерий Анатольевич Организация баз данных и знаний
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
- •Лекция 5. Реляционная структура данных
Лекция 5. Реляционная структура данных
Пример первичного ключа
|
|
|
|
Первичный ключ |
|
|
|||
|
|
|
|
|
|
|
|
|
Значения |
|
|
|
|
|
|
|
|
|
атрибутов, |
Сотрудники: |
|
Ном |
Фамилия |
Сер_пасп |
Ном_пасп |
|
|||
|
|
|
составляющих |
||||||
|
|
|
|
|
|
|
|
|
первичный ключ, |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
||
|
|
1 |
Сидорчук |
СН |
951945 |
|
|
|
могут повторяться |
|
|
|
|
|
|
||||
|
|
2 |
Петренко |
СН |
917327 |
|
|
|
Этот кортеж нарушает |
|
|
3 |
Бутенко |
СК |
917327 |
|
|
|
|
|
|
|
|
|
ограничение |
||||
|
|
4 |
Иванчук |
ВО |
111223 |
|
|
|
первичного ключа, так |
|
|
|
|
|
|
|
|
|
как повторяет |
|
|
5 |
Грищук |
ВО |
111223 |
|
|
||
|
|
|
|
|
значение уже |
||||
|
|
6 |
Деркач |
МК |
NULL |
|
|
||
|
|
|
|
существующего ключа |
|||||
|
|
7 |
Иванов |
NULL |
457328 |
|
|
|
|
|
|
|
|
|
|
|
|
|
Последние два |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
кортежа нарушают |
|
|
|
|
|
|
|
|
|
ограничение |
|
|
|
|
|
|
|
|
|
первичного ключа, так |
|
|
|
|
|
|
|
|
|
как содержат значения |
ФКН НАУ |
|
|
|
|
|
|
NULL |
||
|
|
|
|
|
21 |
Лекция 5. Реляционная структура данных
Внешний ключ
В реляционной модели связь между отношениями определяется «по значению».
Внешний ключ – это один или несколько атрибутов одного отношения, значения которых используются для ссылки на кортежи другого отношения.
Отношение, из которого делается ссылка, - дочернее. Отношение, на которое делается ссылка, - родительское.
Ссылаться можно только на первичный (или уникальный) ключ родительского отношения.
ФКН НАУ |
22 |
Лекция 5. Реляционная структура данных
Пример внешнего ключа
Первичный ключ |
|
|
|
Ссылка на первичный ключ |
|
|||
|
|
|
родительского отношения |
|||||
|
|
|
|
|
||||
|
|
|
Первичный ключ |
|
|
|
|
|
Фак-т Ном |
Имя |
Декан |
Каф-ра Ном |
Имя |
Зав. |
ФакNo |
Внешний |
|
ключ |
||||||||
1 |
ФКН |
Иванов |
|
1 |
ИПО |
Труб |
1 |
|
2 |
ФКС |
Петров |
|
|
||||
|
2 |
СУБД |
Грач |
1 |
|
|||
|
|
|
|
|
||||
Родительское отношение |
|
3 |
САПР |
Орел |
2 |
|
||
|
4 |
ЯП |
Драч |
NULL |
|
|||
|
|
Дочернее отношение |
5 |
ОС |
Сыч |
3 |
|
|
|
|
|
|
|
Этот кортеж нарушает ограничения целостности внешнего ключа (ссылочное ограничение целостности):
производится ссылка на отсутствующее значение первичного ключа родительской таблицы
ФКН НАУ |
23 |
Лекция 5. Реляционная структура данных
Свойства внешнего ключа
Основное свойство (ограничение целостности):
Значение внешнего ключа не может ссылаться на отсутствующее значение первичного ключа
родительского отношения. Это так называемое
ссылочное (или референциальное) ограничение целостности внешнего ключа.
Дополнительные свойства:
Значения внешнего ключа могут повторяться.
Внешний ключ может принимать значение NULL.
ФКН НАУ |
24 |
Лекция 5. Реляционная структура данных
Поддержание ссылочной целостности
Манипулирование кортежами дочернего отношения:
При вставке и замене проверяется ссылочная целостность и в случае ее нарушения действие не производится.
При удалении ничего не проверяется.
Манипулирование кортежами родительского отношения:
При вставке ничего не проверяется.
При удалении и замене:
•Запретить удаление/замену, если имеется ссылка в дочерней таблице, приводящая к нарушению ссылочной целостности.
•Удаляя/заменяя родительский кортеж, также удалить/заменить все ссылающиеся на него кортежи дочернего отношения.
•Удаляя/заменяя родительский кортеж, разорвать связь с ним кортежей дочерней таблицы и вместо ссылки поставить NULL.
•Удаляя/заменяя родительский кортеж, разорвать связь с ним кортежей дочерней таблицы и вместо ссылки поставить значение
ФКН НАУ по умолчанию. |
25 |
Лекция 5. Реляционная структура данных
Поддержания ссылочной целостности в SQL
Описание поддержания целостности в стандарте SQL:
ON DELETE {RESTRICT | CASCADE | SET NULL | SET DEFAULT} ON UPDATE {RESTRICT | CASCADE | SET NULL | SET DEFAULT}
Описание поддержания целостности в SQL Oracle:
[ON DELETE {CASCADE | SET NULL}]
ФКН НАУ |
26 |
Лекция 5. Реляционная структура данных
Поддержание ссылочной целостности - RESTRICT
ON DELETE RESTRICT
Эти кортежи удалять нельзя, так как на них имеются ссылки Этот кортеж можно удалить, так как на него нет ссылок
|
|
|
|
|
|
|
|
|
|
|
|
|
Фак-т |
|
Ном |
Имя |
Декан |
|
Каф-ра |
|
Ном |
Имя |
Зав. |
ФакNo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
ФКН |
Иванов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
1 |
ИПО |
Труб |
1 |
|
|||
|
|
2 |
ФКС |
Петров |
|
|
|
|
||||
|
|
|
|
|
2 |
СУБД |
Грач |
1 |
|
|||
|
|
3 |
ФКТ |
Игнатов |
|
|
|
|
||||
|
|
|
|
|
3 |
САПР |
Орел |
2 |
|
|||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
4 |
ЯП |
Драч |
NULL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Этот кортеж, включая поле «Ном» можно изменять, так как на него нет ссылок Значения атрибута «Ном» этих кортежей изменять нельзя, так как на них имеются ссылки
ON UPDATE RESTRICT
ФКН НАУ |
27 |
Лекция 5. Реляционная структура данных
Поддержание ссылочной целостности – CASCADE
ON DELETE CASCADE
При удалении этого кортежа удаляются также эти кортежи дочернего отношения, которые ссылаются на удаляемый кортеж родительского отношения.
|
|
|
|
|
|
|
|
|
|
|
|
|
Фак-т |
|
Ном |
Имя |
Декан |
|
Каф-ра |
|
Ном |
Имя |
Зав. |
ФакNo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
ФКН |
Иванов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
1 |
ИПО |
Труб |
1 |
|
|||
|
|
2 |
ФКС |
Петров |
|
|
|
|
||||
|
|
|
|
|
2 |
СУБД |
Грач |
1 |
|
|||
|
|
3 |
ФКТ |
Игнатов |
|
|
|
|
||||
|
|
|
|
|
3 |
САПР |
Орел |
2 |
|
|||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
4 |
ЯП |
Драч |
NULL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
При изменении атрибута «Ном» этого кортежа автоматически изменяются эти значения атрибута «ФакNo», которые ссылаются на изменяемый кортеж родительского отношения
ON UPDATE CASCADE
ФКН НАУ |
28 |
Лекция 5. Реляционная структура данных
Поддержание ссылочной целостности – SET NULL
ON DELETE SET NULL
При удалении этого кортежа устанавливаются в NULL эти значения атрибута «ФакNo, которые ссылаются на удаляемый кортеж родительского отношения.
|
|
|
|
|
|
|
|
|
|
|
|
|
Фак-т |
|
Ном |
Имя |
Декан |
|
Каф-ра |
|
Ном |
Имя |
Зав. |
ФакNo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
ФКН |
Иванов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
1 |
ИПО |
Труб |
1 |
|
|||
|
|
2 |
ФКС |
Петров |
|
|
|
|
||||
|
|
|
|
|
2 |
СУБД |
Грач |
1 |
|
|||
|
|
3 |
ФКТ |
Игнатов |
|
|
|
|
||||
|
|
|
|
|
3 |
САПР |
Орел |
2 |
|
|||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
4 |
ЯП |
Драч |
NULL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
При изменении атрибута «Ном» этого кортежа устанавливаются в NULL эти значения атрибута «ФакNo», которые ссылаются на изменяемый кортеж родительского отношения
ON UPDATE SET NULL
ФКН НАУ |
29 |
Лекция 5. Реляционная структура данных
Поддержание ссылочной целостности – SET DEFAULT
ON DELETE SET DEFAULT
При удалении этого кортежа устанавливаются эти значения атрибута «ФакNo принимают значения по умолчанию.
|
|
|
|
|
|
|
|
|
|
|
|
|
Фак-т |
|
Ном |
Имя |
Декан |
|
Каф-ра |
|
Ном |
Имя |
Зав. |
ФакNo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
ФКН |
Иванов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
1 |
ИПО |
Труб |
1 |
|
|||
|
|
2 |
ФКС |
Петров |
|
|
|
|
||||
|
|
|
|
|
2 |
СУБД |
Грач |
1 |
|
|||
|
|
3 |
ФКТ |
Игнатов |
|
|
|
|
||||
|
|
|
|
|
3 |
САПР |
Орел |
2 |
|
|||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
4 |
ЯП |
Драч |
NULL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
При изменении атрибута «Ном» этого кортежа эти значения атрибута «ФакNo» принимают значения по умолчанию.
ON UPDATE SET DEFAULT
ФКН НАУ |
30 |