Реляционные базы данных. Целостность данных. (Лекция 3)

Содержание

Слайд 2

Реляционные базы данных. Целостность данных Целостность сущностей Объект реального мира представляется

Реляционные базы данных. Целостность данных

Целостность сущностей
Объект реального мира представляется в реляционной

базе данных как кортеж некоторого отношения(запись таблицы).
Требование целостности сущностей заключается в следующем: каждый кортеж любого отношения должен отличатся от любого другого кортежа этого отношения (т.е. любое отношение должно обладать первичным ключом).
Вполне очевидно, что если данное требование не соблюдается (т.е. кортежи в рамках одного отношения не уникальны), то в базе данных может хранится противоречивая информация об одном и том же объекте. 
Слайд 3

Реляционные базы данных. Целостность данных Целостность сущностей Поддержание целостности сущностей обеспечивается

Реляционные базы данных. Целостность данных

Целостность сущностей
Поддержание целостности сущностей обеспечивается средствами системы

управления базой данных (СУБД).
Это осуществляется с помощью двух ограничений:
при добавлении записей в таблицу проверяется уникальность их первичных ключей;
не позволяется изменение значений атрибутов, входящих в первичный ключ.
Правило целостности сущностей:
Атрибуты, входящие в состав некоторого потенциального ключа не могут принимать null-значений.
Слайд 4

Реляционные базы данных. Целостность данных Целостность ссылок Сложные объекты реального мира

Реляционные базы данных. Целостность данных

Целостность ссылок
Сложные объекты реального мира представляются

в реляционной базе данных в виде нескольких нормализованных отношений, связанных между собой.
Пусть в отношении R1 имеется не ключевой атрибут А, значения которого являются значениями ключевого атрибута В другого отношения R2. Тогда атрибут А отношения R1 есть внешний ключ.
Слайд 5

Реляционные базы данных. Целостность данных контроль целостности вводимых в базу данных,

Реляционные базы данных. Целостность данных

контроль целостности вводимых в базу данных,
повышение достоверности

хранимой в БД информации,
облегчение доступа к данным.
При связывании двух таблиц выделяют основную и дополнительную (подчиненную) таблицы.
Логическое связывание таблиц производится с помощью ключа связи.
Ключ связи состоит из одного или нескольких полей - полей связи
Для отражения функциональных зависимостей между отношениями используется дублирование первичного ключа одного отношения (родительского) в другое (дочернее).
Правило целостности внешних ключей.
Для каждого значения внешнего ключа, появляющегося в дочернем отношении, в родительском отношении должен найтись кортеж с таким же значением первичного ключа.

Связывание таблиц реализует:

Слайд 6

Реляционные базы данных. Связи между таблицами Характеристика видов связей таблиц

Реляционные базы данных. Связи между таблицами

Характеристика видов связей таблиц

Слайд 7

Реляционные базы данных. Связи между таблицами Пример. Дана совокупность информационных объектов, отражающих учебный процесс в вузе:

Реляционные базы данных. Связи между таблицами

Пример. Дана совокупность информационных объектов, отражающих

учебный процесс в вузе:
Слайд 8

Реляционные базы данных. Связи между таблицами Связь вида 1:1 Связь вида

Реляционные базы данных. Связи между таблицами

Связь вида 1:1

Связь вида 1:1 образуется

в случае, когда все поля связи основной и дополнительной таблиц являются ключевыми. Поскольку значения в ключевых полях обеих таблиц не повторяются, обеспечивается взаимно-однозначное соответствие записей из этих таблиц. Сами таблицы, по сути, здесь становятся равноправными.

Предполагает, что в каждый момент времени одному экземпляру информационного объекта А соответствует не более одного экземпляра информационного объекта В и наоборот.

Слайд 9

Реляционные базы данных. Связи между таблицами Связь вида 1:М (М:1) Предполагает,

Реляционные базы данных. Связи между таблицами

Связь вида 1:М (М:1)

Предполагает, что в

каждый момент времени одному экземпляру информационного объекта А соответствует 0,1 или более одного экземпляра информационного объекта В и наоборот.
Слайд 10

Реляционные базы данных. Связи между таблицами Связь вида М:М Предполагает, что

Реляционные базы данных. Связи между таблицами

Связь вида М:М

Предполагает, что в

каждый момент времени одному экземпляру информационного объекта А соответствует 0, 1 или более экземпляров объекта В и наоборот.
Слайд 11

Реляционные базы данных. Связи между таблицами Контроль целостности связей

Реляционные базы данных. Связи между таблицами

Контроль целостности связей

Слайд 12

Реляционные базы данных. Связи между таблицами Операции для родительского отношения Вставка

Реляционные базы данных. Связи между таблицами

Операции
для родительского отношения

Вставка кортежа в родительском

отношении.
При вставке кортежа в родительское отношение возникает новое значение потенциального ключа. Т.к. допустимо существование кортежей в родительском отношении, на которые нет ссылок из дочернего отношения, то вставка кортежей в родительское отношение не нарушает ссылочной целостности.
Обновление кортежа в родительском отношении.
При обновлении кортежа в родительском отношении может измениться значение потенциального ключа, что может привести к нарушению ссылочной целостности, если это обновление затрагивает значение потенциального ключа.
Слайд 13

Реляционные базы данных. Связи между таблицами Операции для родительского отношения Удаление

Реляционные базы данных. Связи между таблицами

Операции для родительского отношения

Удаление кортежа в

родительском отношении.
При удалении кортежа в родительском отношении удаляется значение потенциального ключа. Если есть кортежи в дочернем отношении, ссылающиеся на удаляемый кортеж, то значения их внешних ключей станут некорректными.

Операции для дочернего отношения

Вставка кортежа в дочернее отношении.
Нельзя вставить кортеж в дочернее отношение, если вставляемое значение внешнего ключа некорректно. Вставка кортежа в дочернее отношение может привести к нарушению ссылочной целостности

Слайд 14

Реляционные базы данных. Связи между таблицами Операции для дочернего отношения Обновление

Реляционные базы данных. Связи между таблицами

Операции для дочернего отношения

Обновление кортежа в

дочернем отношении.
При обновлении кортежа в дочернем отношении можно попытаться некорректно изменить значение внешнего ключа. Обновление кортежа в дочернем отношении может привести к нарушению ссылочной целостности.

Удаление кортежа в дочернем отношении.
При удалении кортежа в дочернем отношении ссылочная целостность не нарушается.

Слайд 15

Реляционные базы данных. Связи между таблицами Ссылочная целостность может быть нарушена

Реляционные базы данных. Связи между таблицами

Ссылочная целостность может быть нарушена при

выполнении одной из четырех операций:

Обновление кортежа в родительском отношении.
Удаление кортежа в родительском отношении.
Вставка кортежа в дочернее отношение.
Обновление кортежа в дочернем отношении.

Слайд 16

Реляционные базы данных. Связи между таблицами Основные стратегии поддержания ссылочной целостности:

Реляционные базы данных. Связи между таблицами

Основные стратегии поддержания ссылочной целостности:

RESTRICT (ОГРАНИЧИТЬ)

- не разрешать выполнение операции, приводящей к нарушению ссылочной целостности.
CASCADE (КАСКАДИРОВАТЬ) - разрешить выполнение требуемой операции, но внести при этом необходимые поправки в других отношениях так, чтобы не допустить нарушения ссылочной целостности и сохранить все имеющиеся связи. Изменение начинается в родительском отношении и каскадно выполняется в дочернем отношении.
Слайд 17

Реляционные базы данных. Связи между таблицами Дополнительные стратегии поддержания ссылочной целостности:

Реляционные базы данных. Связи между таблицами

Дополнительные стратегии поддержания ссылочной целостности:

SET NULL

(УСТАНОВИТЬ В NULL) - разрешить выполнение требуемой операции, но все возникающие некорректные значения внешних ключей изменять на null-значения.
SET DEFAULT (УСТАНОВИТЬ ПО УМОЛЧАНИЮ) - разрешить выполнение требуемой операции, но все возникающие некорректные значения внешних ключей изменять на некоторое значение, принятое по умолчанию.
IGNORE (ИГНОРИРОВАТЬ) - выполнять операции, не обращая внимания на нарушения ссылочной целостности.
Слайд 18

Реляционные базы данных. Связи между таблицами

Реляционные базы данных. Связи между таблицами