Ограничения целостности реляционной модели можно разделить на две группы – требование целостности сущности и требование целостности ссылок (ссылочная целостность).
Целостность сущностей. Требование целостности сущностей в общем, плане заключается в требовании уникальности экземпляров объектов инфологической схемы, отображаемых средствами реляционной модели.
Экземплярам объектов инфологической схемы в реляционной модели соответствуют записи таблиц-отношений.
Требование целостности сущностей состоит в требовании уникальности каждой строки. Отсюда вытекают следующие ограничения:
· отсутствие строк дубликатов; это требование не подразумевает отсутствия совпадений по всем полям, а лишь по полям первичных ключей;
· отсутствие полей с множественным характером значений атрибута; это ограничение обеспечивается нормализацией таблиц-отношений, то есть разбиением исходной таблицы на две или более связанные таблицы с единичным атомарным характером значений полей атрибутов.
Ссылочная целостность. Выше уже говорилось, что первичный ключ любой таблицы должен содержать уникальные непустые значения для данной таблицы. Это утверждение является одним из правил ссылочной целостности (referential integrity). Если СУБД контролирует уникальность первичных ключей (далеко не все СУБД это делают), то при попытке присвоить первичному ключу значение уже имеющееся в другой записи, СУБД генерирует диагностическое сообщение, содержащее словосочетание primary key violation (нарушение первичного ключа). Это сообщение может быть передано в приложение, с помощью которого конечный пользователь манипулирует данными.
Если две таблицы связаны соотношением master-detail, внешний ключ detail-таблицы должен содержать только те значения, которые уже имеются среди значений первичного ключа master-таблицы. Если корректность значений внешних ключей не контролируется СУБД можно говорить о нарушении ссылочной целостности. В этом случае, если мы удалим из таблицы «Клиенты» запись, имеющую хотя бы одну связанную с ней detail-запись в таблице «Заказы», в таблице «Заказы» окажутся записи о заказах, размещенных неизвестно кем.
Если СУБД контролирует корректность значений внешних ключей, то при попытке присвоить внешнему ключу значение, отсутствующее среди значений первичных ключей master-таблицы, либо при удалении или модификации записей master-таблицы, приводящих к нарушению ссылочной целостности, СУБД сгенерирует диагностическое сообщение, обычно содержащее словосочетание foreign key violation, которое может быть передано в пользовательское приложение.
Большинство современных СУБД Microsoft Access 97, 2000 и Microsoft SQL Server 7.0, способны контролировать соблюдение правил ссылочной целостности, если таковые описаны в базе данных.






