Для пользователей информационной системы важно, чтобы база данных отражала предметную область однозначно и непротиворечиво. Если она обладает такими свойствами, то говорят, что БД удовлетворяет условию целостности. Выделяют три группы правил целостности.
1. Целостность по сущностям. Не допускается, чтобы какой-либо атрибут, участвующий в первичном ключе, принимал неопределенное значение.
2. Целостность по ссылкам. Это значит, что значение внешнего ключа должно либо быть равным значению первичного ключа цели либо быть полностью неопределенным, т.е. каждое значение атрибута, участвующего во внешнем ключе должно быть неопределенным.
3. Целостность, определяемая пользователем. Для любой конкретной базы данных существует ряд дополнительных специфических правил, которые относятся к ней одной и определяются разработчиком.
Установив целостность данных, необходимо следовать следующим правилам:
· невозможно ввести в поле внешнего ключа связанной таблицы значение, не содержащееся в ключевом поле главной таблицы. Однако в поле внешнего ключа возможен ввод пустых значений, показывающих, что записи не являются связанными;
· не допускается удаление записи из главной таблицы, если существуют связанные с ней записи в подчиненной таблице;
· невозможно изменить значение ключевого поля в главной таблице, если существуют записи, связанные с данной.
Чтобы эти правила соблюдались для конкретной связи, при ее создании следует установить флажок R Обеспечение целостности данных. Если данный флажок установлен, то любая попытка выполнить действие, нарушающее одно из перечисленных выше правил, приведет к выводу на экран предупреждения, а само действие выполнено не будет.
Чтобы преодолеть ограничения на удаление или изменение связанных записей, сохраняя при этом целостность данных, следует установить флажки R Каскадное обновление связанных полей и RКаскадное удаление связанных полей. Если установлен флажок R Каскадное обновление связанных полей, то при изменении ключевого поля главной таблицы автоматически изменяются и соответствующие значения связанных записей. Если установлен флажок R Каскадное удаление связанных полей, то при удалении записи в главной таблице удаляются и все связанные записи в подчиненной таблице.