2. Значение NULL
2
В реляционной алгебре используется тернарная
логика.
Для любого атрибута есть первичное
универсальное пустое значение: NULL.
Используется в тех случаях, когда значение
неизвестно.
Таблицы истинности для NULL:
& 0 1 N
0 0 0 0
1 0 1 N
N 0 N N
|| 0 1 N
0 0 1 N
1 1 1 1
N N 1 N
!
0 1
1 0
N N
3. Потенциальный ключ
3
Подмножество атрибутов К отношения R будем
называть потенциальным ключом, если
выполняются свойства:
уникальность – в отношении R отсутствуют кортежи
с идентичными значениями К;
неизбыточность – никакое подмножество множества
К не обладает свойством уникальности.
Потенциальный ключ – единственное средство
идентификации и адресации на уровне
кортежей.
4. Целостность сущностей
4
Правило целостности сущности – атрибуты,
входящие в состав потенциального ключа не могут
иметь значение NULL, то есть принимать пустых
значений
5. Первичные и альтернативные ключи
5
Простой ключ – потенциальный ключ,
состоящий из одного атрибута.
Составной ключ - потенциальный ключ,
состоящий из множества атрибутов.
Если в отношении можно выделить более чем
один потенциальный ключ, то один из ключей
выбирается первичным PK (Primary Key),
остальные становятся альтернативными AK
(Alterative Key).
6. Внешний ключ
6
Подмножество атрибутов FK (Foreign Key) множества
атрибутов отношения R называется внешним
ключом, если выполнены следующие условия:
существует отношение S с потенциальным ключом K;
каждое значение FK в R всегда совпадает с некоторым
значением K из S, Либо является NULL-значением.
Отношение S в данном случае принято считать
родительским, R - дочерним.
8. Пример
8
ID_поставщика Поставщик ID_категории Категория Количество
0 Apple 1 Телефон 100
0 Apple 2 Планшет 40
2 Samsung 1 Телефон 100
2 Samsung 3 Ноутбук 50
Составной
потенциальный
ключ (первичный)
Составной
потенциальный ключ
(альтернативный)
10. Пример
10
ID Поставщик
0 Apple
2 Samsung
ID Категория
1 Телефон
2 Планшет
3 Ноутбук
Простые
потенциальные
ключи
Простые
потенциальные
ключи
Первичный
ключ
Альтернативный
ключ
11. Пример
11
ID_поставщика ID_категории Количество
0 1 100
0 2 40
2 1 100
2 3 50
ID Поставщик
0 Apple
2 Samsung
ID Категория
1 Телефон
2 Планшет
3 Ноутбук
Родительское
отношение S1
Родительское
отношение S2
Дочернее
отношение R
Первичный ключ К1 Внешние ключи FK Первичный ключ К2
12. Свойства внешнего ключа
12
Для внешнего ключа не требуется уникальность
значений кортежей.
Внешний ключ может быть простым и составным.
Должен быть того же типа что и потенциальный
ключ родительского отношения.
Каждое значение внешнего ключа должно совпадать
со значением потенциального ключа родительского
отношения, обратное не обязательно верно.
Наличие NULL среди значений внешнего ключа
может трактоваться как признак отсутствия
связанной записи в родительском отношении.
13. Целостность внешнего ключа
13
База данных не должна содержать каких-либо
несогласованных значений внешнего ключа.
Для каждого значения внешнего ключа должно
существовать соответствующее значение
первичного ключа в родительском отношении,
иначе возникнет нарушение целостности.
14. Ссылочная целостность
14
Для родительского отношения:
Изменение (обновление) кортежа может нарушить ссылочную
целостность, если это обновление затрагивает значение в
дочернем отношении.
Удаление кортежа может нарушить ссылочную целостность
если в дочернем кортеже есть данные, ссылающиеся на
удаляемые.
Для дочернего отношения:
Вставка кортежа может привести к нарушению ссылочной
целостности.
Изменение кортежа может привести к нарушению ссылочной
целостности.
Отношение insert update delete
Родительское x x
Дочернее x x
16. Нарушение целостности в S
16
ID Поставщик
0 Apple
ID_поставщика Количество
0 500
2 1000
Родительское
отношение S
Дочернее
отношение R
17. Нарушение целостности в R
17
ID Поставщик
0 Apple
2 Samsung
ID_поставщика Количество
0 500
2 1000
1 400
Родительское
отношение S
Дочернее
отношение R
18. Соблюдение целостности в R
18
ID Поставщик
0 Apple
2 Samsung
ID_поставщика Количество
0 500
2 1000
NULL 400
Родительское
отношение S
Дочернее
отношение R
19. Стратегии поддержания целостности
19
Основные:
Ограничение (RESTRICT),
Каскадирование (CASCADE).
Дополнительные:
Установка в NULL (SET NULL),
Установка по умолчанию (SET DEFAULT).
Исключительная:
Игнорировать ссылочную целостность
(IGNORE). Отказ от поддержки ссылочной
целостности.
20. Ограничение (RESTRICT)
20
Ограничение предполагает запрет на
выполнение операции, приводящей к
нарушению ссылочной целостности.
Самая простая стратегия, требующая только
проверки, имеются ли кортежи в дочернем
отношении, связанные с некоторым кортежем в
родительском отношении.
Стратегии RESTRICT и CASCADE являются
стандартными и присутствуют во всех СУБД, в
которых имеется поддержка ссылочной
целостности.
21. Каскадирование (CASCADE)
21
Разрешить выполнение требуемой операции, но
внести при этом необходимые поправки в других
отношениях так, чтобы не допустить нарушения
ссылочной целостности и сохранить все
имеющиеся связи.
Изменение начинается в родительском отношении и
каскадно выполняется в дочернем отношении.
Дочернее отношение может одновременно являться
родительским для некоторого третьего отношения.
22. Установка в NULL (SET NULL)
22
Разрешить выполнение требуемой операции, но
все возникающие некорректные значения
внешних ключей изменять на значения NULL.
Стратегия имеет два недостатка.
требуется допустить использование NULL;
кортежи дочернего отношения теряют всякую связь
с кортежами родительского отношения.
23. Установка по умолчанию (SET DEFAULT)
23
Разрешить выполнение требуемой операции, но все
возникающие некорректные значения внешних
ключей изменять на некоторое значение, принятое
по умолчанию.
Достоинство этой стратегии по сравнению с
предыдущей в том, что она позволяет не
пользоваться значениями NULL.
Недостатки: в родительском отношении должен
быть некий кортеж, потенциальный ключ которого
принят как значение по умолчанию для внешних
ключей.
кортеж нельзя удалять из родительского отношения,
нельзя изменять значение потенциального ключа.