Реляционная модель данных определяет два базовых требования целостности, которые поддерживаются любой РСУБД:
• требование целостности сущностей,
• требование целостности по ссылкам, или ссылочной целостности.
Целостность сущностей
Объекту или сущности реального мира в реляционной базе данных соответствует кортеж отношения. Требование целостности сущностей состоит в следующем: любой кортеж любого отношения должен быть отличим от любого другого кортежа этого же отношения.
Это требование означает, что каждое отношение должно иметь первичный ключ. Это требование выполняется автоматически, если в системе не нарушаются базовые свойства отношений.
Кроме этого, могут быть установлены и следующие ограничения:
• уникальность значения атрибутов; определяет альтернативные ключи отношения;
• обязательность значения; при вставке новых или модификации существующих элементов отношения значения соответствующих атрибутов должны быть заданы;
• допустимость значения атрибутов; вставляемые значения должны удовлетворять некоторому заданному условию.
|
|
Ссылочная целостность
Ссылочные ограничения целостности в реляционной модели данных представляют собой условия, накладываемые на сосуществование кортежей в связанных отношениях. Как уже говорилось, в реляционной базе данных связи между отношениями представляются с помощью внешних ключей. Вернемся к примеру, в котором рассматривались отношения ОТДЕЛ и СОТРУДНИК (Рис. 4.5):
ОТДЕЛ (Номер отдела, Название (АК))
СОТРУДНИК (Номер сотрудника, Имя, Год рождения, Номер отдела (FK))
Атрибут внешнего ключа Номер отдела в отношении СОТРУДНИК позволяет получить полную информацию о том конкретном отделе, в котором работает конкретный сотрудник.
Обычно отношение, в котором определяется внешний ключ, называется дочерним отношением, а отношение, на которое ссылается внешний ключ – родительским отношением. Так, в нашем примере отношение СОТРУДНИК – дочернее, а отношение ОТДЕЛ – родительское.
Требование ссылочной целостности состоит в следующем: значение атрибута внешнего ключа в любом кортеже дочернего отношения должно соответствовать значению атрибута первичного ключа в некотором кортеже родительского отношения.
Другими словами, требование целостности по ссылкам означает, что должно существовать то, на что ссылаемся.
При выполнении операций, связанных с модификацией отношений (операции вставки, удаления и модификации значения соответствующего ключа) необходимо следить за требованиями целостности (Рис. 4.9).
Рис. 4.9. Операции модификации родительского и дочернего отношений
|
|
Рассмотрим особенности выполнения этих операций.
1. Все операции с дочерним отношением должны удовлетворять требованиям ссылочной целостности:
1. при вставке нового элемента этот элемент должен иметь допустимое значение атрибутов внешнего ключа;
2. удаление элемента выполняется без каких-либо ограничений;
3. при модификации внешнего ключа некоторого элемента этот элемент должен получить допустимое значение атрибутов внешнего ключа.
2. Операции с родительским отношением выполняются в соответствии со следующими правилами:
1. вставка нового элемента выполняется без каких-либо ограничений;
2. удаление элемента не должно привести к нарушению ссылочной целостности. Если в дочернем отношении существует элемент, ссылающийся на удаляемый элемент родительского отношения, как поступить с ним? Здесь возможны три подхода:
a. удаление элемента из родительского отношения не выполняется, если в дочернем отношении есть хотя бы один элемент, ссылающийся на удаляемый;
b. вместе с элементом родительского отношения удаляются все ссылающиеся на него элементы дочернего отношения;
c. атрибутам внешнего ключа дочернего отношения присваивается пустое значение (каждая СУБД использует собственный способ задания пустого значения); этот подход возможен, если для атрибутов внешнего ключа дочернего отношения не установлено ограничение обязательности значения;
3. модификация значения первичного ключа существующего элемента также не должна привести к нарушению ссылочной целостности. Здесь также возможны те же три подхода:
a. модификация первичного ключа элемента из родительского отношения не выполняется, если в дочернем отношении есть хотя бы один элемент, ссылающийся на модифицируемый;
b. вместе с элементом родительского отношения модифицируются значения атрибутов внешнего ключа всех ссылающихся на него элементов дочернего отношения;
c. атрибутам внешнего ключа дочернего отношения присваивается пустое значение; этот подход возможен, если для атрибутов внешнего ключа дочернего отношения не установлено ограничение обязательности значения.