Ограничения целостности
Логические ограничения, которые накладываются на данные, называются ограничениями целостности. Ограничения используются в моделях данных для поддержания целостности данных при функционировании системы, т. е. СУБД должна обеспечивать непротиворечивость данных заданным ограничениям при переводе БД из одного состояния в другоею. Использование ограничений связано также с адекватностью отражения предметной области с помощью данных, хранимых в БД. Например, значение атрибута ГОД-ОКОНЧАНИЯ-ВУЗА должно превышать значение атрибута ГОД-РОЖДЕНИЯ в записи типа СЛУЖАЩИЙ.
Ограничения целостности, задаваемые для данных в БД, обычно специфицируются для множества реализаций, а не для одной конкретной реализации. Например, ограничение «в учебной группе по списку должно быть не более 35 студентов» относится к любой учебной группе, информация о которой представлена в базе данных.
Модель данных определяет допустимые структуры данных, которые поддерживаются СУБД, реализующей эту модель. Это связано с тем, что для заданных типов структур в МД существует тщательно подобранное и согласованное с этими типами структур множество операций над данными. Поэтому отдельная реализация любой из структур должна отвечать определенным ограничениям целостности, специфицированным для данного типа структуры. Например, ограничение «запись может состоять не более чем из 250 полей». Или другой пример - в иерархической модели данных связи между группами ограничены древовидной иерархической структурой и при этом более общие сетевые структуры недопустимы. Такие ограничения называют внутренними ограничениями целостности.. Внутренние ограничения представлены в МД правилами композиции допустимых структур данных и в конкретной схеме БД находят свое отражение в структурных спецификациях.
Кроме внутренних ограничений существуют ограничения, которые явно специфицируются в БД с помощью специальных конструкций языка описания данных. Их называют явными ограничениями целостности. Например, для записи типа СЛУЖАЩИЙ атрибут ТАБЕЛЬНЫЙ-НОМЕР определен как первичный ключ. Это означает, что множество экземпляров записей типа СЛУЖАЩИЙ, хранящихся в БД, не может содержать двух или более экземпляров с одинаковым значением атрибута ТАБЕЛЬНЫЙ-НОМЕР. Или, например, в схеме базы данных специфицировано, что значение атрибута ШИФР-ДЕТАЛИ представляется целым числом из четырех десятичных цифр. Это означает, что шифры деталей, описания которых будут обрабатываться в системе, должны состоять из четырех десятичных цифр. Или, например, сумма значений по заданному атрибуту по всем экземплярам записей одного типа должна совпадать со значением определенного атрибута в экземпляре записи некоторого другого типа и т. п.
Спецификация явных ограничений обладает определенной автономией по отношению к структурной спецификации данных, поэтому в язык описания данных включают специальные средства для задания явных ограничений, либо в системе разрабатывается специальный язык спецификации ограничений. Во многих случаях для описания явных ограничений используются средства исчисления предикатов. Система управления базой данных проверяет непротиворечивость системы ограничений и при своем функционировании обеспечивает целостность данных в БД по отношению к заданным ограничениям.
Ограничения целостности можно специфицировать для элементов, групп и групповых отношений.
Большинство конкретных моделей данных, поддерживаемых существующими СУБД, предусматривают в основном внутренние ограничения целостности, нарушение которых приводит к некорректности структуры данного, и достаточно просто контролируется. Контроль выполнения явных ограничений -более сложная задача, поскольку связан с проверкой некоторого множества значений данных, часть из которых должна быть получена путем многократного обращения к базе данных.