Целостность сущностей

Первое ограничение целостности касается первичных ключей базовых отношений. Здесь базовое отношение определяется как отношение, которое соответствует некоторой сущности в концептуальной схеме (см. раздел 2.1), Более точное определение этого понятия приводится в разделе 3.5.

Целостность сущностей В базовом отношении ни один атрибут первичного ключа не может содержать отсутствующих значений, обозначаемых определителем NULL.

По определению, первичный ключ — это минимальный идентификатор, который используется для уникальной идентификации кортежей. Это значит, что никакое подмножество первичного ключа не может быть достаточным для уникальной идентификации кортежей. Если допустить присутствие определителя NULL в любой части первичного ключа, это равноценно утверждению, что не все его атрибуты необходимы для уникальной идентификации кортежей, что противоречит определению первичного ключа. Например, поскольку Впо является первичным ключом отношения Branch, то нельзя допустить вставку в отношение Branch кортежа с определителем NULL в атрибуте Впо.

Если рассмотреть это правило более внимательно, то можно заметить несколько его необычных свойств. Во-первых, почему оно применяется к первичным ключам, но не используется в отношении альтернативных ключей? Во-вторых, почему оно ограничивается только базовыми отношениями? Например, используя данные отношения Staff (см, табл. 3.4), рассмотрим выполнение следующего запроса: "Создать список номеров телефонов всех сотрудников организации". Результатом этого запроса является унарное отношение из единственного атрибута Tel No, По определению, этот атрибут должен быть первичным ключом, но среди его значений содержится определитель NULL (соответствующий номеру телефона сотрудника с личным номером 'SA9'). Поскольку это отношение не является базовым, реляционная модель допускает присутствие определителя NULL в его первичном ключе. Недавно было предпринято несколько попыток переопределения этого правила (Codd, 1988; Date, 1990).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: