Целостность (integrity) – свойство БД, означающее, что она содержит полную, непротиворечивую и адекватно отражающую предметную область информацию.
Различают физическую и логическую целостность. Физическая целостность означает наличие физического доступа к данным и то, что данные не утрачены. Логическая целостность означает отсутствие логических ошибок в БД, к которым относятся нарушение структуры БД или ее объектов, удаление или изменение установленных связей между объектами и т.д. Будем рассматривать логическую целостность.
Установить проверку целостности данных можно, выполнив предварительно следующие условия:
· Связанное поле родительской таблицы является ключевым или имеет уникальный индекс;
· Связанные поля имеют один тип данных (возможно одно из полей имеет тип счетчик);
· Обе таблицы принадлежат одной БД.
Для задания условий целостности данных нужно открыть окно Изменение связей (например, выделить нужную связь в схеме данных и выполнить одноименную команду контекстного меню) и установить в этом окне соответствующие флажки.
Если установлен флажок Обеспечение целостности данных (Enforce Referential Integrity), то дальнейшее действия по добавлению, удалению и модификации данных должны удовлетворять следующим условиям:
· запрещается вводить запись, если значение индексного выражения дочерней таблицы не соответствует ни одной из записей в родительской таблице (однако в Access разрешается вводить пустое значение);
· запрещается удалять записи в родительской таблице, если в дочерней таблице имеется хотя бы одна запись, содержащая ссылку на удаляемую запись;
· запрещается изменять значения связанного поля в родительской таблице, если в дочерней таблице имеется хотя бы одна запись, содержащая ссылку на изменяемую запись.
Если установлен флажок Каскадное обновление связанных полей(Cascade Update Related Fields), то при изменении ключевого поля родительской таблицы автоматически осуществляется каскадное изменение всех соответствующих значений в дочерней таблице.
Если установлен флажок Каскадное удаление связанных записей(Cascade Delete Related Records), то при удалении записи в родительской таблицы автоматически осуществляется каскадное удаление всех соответствующих значений в дочерней таблице.