Ограничения целостности этого типа позволяют обеспечить согласованность
данных в связующих полях (первичном и внешнем ключах) нескольких таблиц.
Рассмотрим таблицы Поставщики (табл. 1.1) и Поставки товаров (табл.
1.2). Эти таблицы связаны между собой с помощью ключевых полей Код и
Шифр поставщика. Таблица Поставщики является главной таблицей, таблица
Поставки товаров – подчиненной. Значения данных в связующих полях
получены из одного домена, представляющего в рассматриваемом примере
множество положительных целых трехзначных чисел.
Нарушение целостности связи между таблицами возможно при
возникновении следующих ситуаций:
1. В главной таблице удаляется запись, для которой существуют связанные
записи в подчиненной таблице. Действительно, если в таблице Поставщики
удалить первую запись (код поставщика равен 345), база данных будет
находиться в несогласованном состоянии – неизвестно, какая фирма
осуществила поставки, представленные первой, четвертой и пятой записями
таблицы Поставки товаров (см. табл. 1.2).
Ввод в таблицу Поставщики дополнительной записи не приводит к
нарушению целостности базы данных, так как в таблице появятся сведения еще
об одном поставщике, информация о поставках товаров которым может быть
добавлена в таблицу Поставки товаров после начала этих действий.
2. В главной таблице изменяются значения данных в поле (полях) первичного
ключа, если существуют связанные с ними значения в поле (полях) внешнего
ключа подчиненной таблицы (например, в таблице Поставщики код
поставщика, равный 345, изменяется на значение 725, а такого значения в поле
Шифр поставщика таблицы Поставки товаров нет).
3. В поле (полях) внешнего ключа подчиненной таблицы вводятся значения
данных, отсутствующие в поле (полях) первичного ключа главной таблицы
(например, в таблицу Поставки товаров нельзя ввести шифр поставщика 750,
которого нет в поле Код таблицы Поставщики).
В СУБД MS Access для исключения возможности возникновения
перечисленных ситуаций, нарушающих согласованность базы данных, при
создании каждой конкретной связи между таблицами в диалоговом окне Связи
устанавливается флажок Обеспечение целостности данных. После этого любая
попытка выполнить действия, нарушающие целостность связей между
таблицами, будет игнорироваться (при этом выводится сообщение об ошибке).