Одним из наиболее важных свойств является то, что СУБД должна, предоставлять способы поддержания целостности данных. Эти ограничения, которые используют проверку изменения и добавления данных, называются ограничениями целостности. Задача поддержания ограничений целостности может быть выполнена пользователем в программах приложения или системой управления базами данных. Наиболее важными преимуществами обработки ограничений целостности самой СУБД являются следующие:
♦ повышается надежность данных;
♦ уменьшается время на программирование;
♦ становится проще поддержка.
Использование СУБД для поддержания ограничений целостности повышает надежность данных, потому что здесь не существует возможности, что программист забудет о необходимости следить за ограничениями целостности. Если ограничение целостности обрабатывается в программе приложения, то все программы, связанные с этим ограничением, должны включать соответствующий код. Если код опущен в одной из программ приложения, то согласованность данных подвергается риску.
Ограничение целостности, не обрабатываемое СУБД, должно быть определено в каждой программе приложения, которая использует данные, включенные в это ограничение. В противоположность этому то же самое ограничение целостности должно быть объявлено только один раз, если оно обрабатывается СУБД. В дополнение к этому, ограничения, поддерживаемые приложением, обычно более сложны в кодировании, чем ограничения, поддерживаемые базой данных.
Если ограничение целостности обрабатывается СУБД, то изменение структуры ограничения (если такое потребуется) должно быть выполнено только один раз - в СУБД. Это же изменение структуры в программах приложения требует изменения каждой программы, которая содержит соответствующий код.
Существуют две группы ограничений целостности, обрабатываемых СУБД:
♦ декларативные ограничения целостности;
♦ процедурные ограничения целостности, которые обрабатываются триггерами (определение триггеров).
Декларативные ограничения объявляются с использованием операторов DDL create table и alter table. Они могут быть ограничениями на уровне столбца и ограничениями на уровне таблицы. Ограничения на уровне столбца вместе с типом данных и другими свойствами столбца помещаются в объявление столбца, в то время как ограничения на уровне таблицы всегда размещаются в конце операторов create table или alter table после объявления всех столбцов.
Каждое декларативное ограничение имеет имя. Имя ограничения может быть задано явно с использованием опции constraint в операторе create table или alter table. Если опция constraint отсутствует, Database Engine присваивает неявное имя этому ограничению.
Все декларативные ограничения могут быть разделены на несколько групп:
♦ предложение default;
♦ предложение unique;
♦ предложение primary key;
♦ предложение check;
♦ предложение foreign key и ссылочную целостность.
Определение значения по умолчанию с использованием предложения default было рассмотрено ранее В этом разделе (см. также пример 5.6). Все остальные ограничения подробно описываются в следующих разделаах.