Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСНОВЫ ПРОГРАММИРОВАНИЯ И БАЗ ДАННЫХ.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
218.62 Кб
Скачать

Ключ, первичный ключ, внешний ключ

Каждый экземпляр сущности должен быть уникален и отличаться от других атрибутов.

Первичный ключ (primary key) - это атрибут или группа атрибутов, однозначно идентифицирующая экземпляр сущности. Атрибуты первичного ключа на диаграмме находятся в списке атрибутов сущности выше горизонтальной лилии.

Потенциальный ключ. В одной сущности могут оказаться несколько атрибутов или наборов атрибутов, претендующих на роль первичного ключа. Такие претенденты называются потенциальными ключами (candidate key).

Ключи могут быть сложными, т. е. содержащими несколько атрибутов.

Для того чтобы стать первичным, потенциальный ключ должен удовлетворять ряду требований:

а) уникальность: два экземпляра не должны иметь одинаковых значений возможного ключа;

б) компактность: сложный возможный ключ не должен содержать ни одного атрибута, удаление которого не приводило бы к утрате уникальности;

в) содержательность: атрибуты первичного ключа не могут содержать нулевых значений;

г) постоянность: значение атрибутов ключа не должно меняться в течение всего времени существования экземпляра сущности.

Альтернативный ключ (Alternate Key) - это потенциальный ключ, не ставший первичным. Каждая сущность должна иметь по крайней мере один потенциальный ключ. Многие сущности имеют только один потенциальный ключ. Такой ключ становится первичным. Некоторые сущности могут иметь более одного возможного ключа. Тогда один из них становится первичным, а остальные - альтернативными ключами.

Инверсные входы. При заботе ИС часто бывает необходимо обеспечить доступ к нескольким экземплярам сущности, объединенным каким-либо одним признаком. Для повышения производительности в этом случае используются неуникалънье индексы (вторичные, инверсные).

Внешний ключ включается в дочернюю сущность и служит для отождествления экземпляра зависимой сущности с экземпляром родительской. Поэтому он совпадает с первичным ключом родительской сущности. Атрибуты внешнего ключа обозначаются символом (FK) после своего имени. Сущность может иметь один и тот же внешний ключ из нескольких родительских сущностей. При этом сущность может также получить один и тот же внешний ключ несколько раз от одного и того же родителя через несколько последовательных связей.

Имя роли

Имя роли - это синоним атрибута внешнего ключа, который показывает, какую роль играет атрибут в дочерней сущности.

Полное имя атрибута состоит из функционального и базового имени, разделенных точкой.

Обязательным является применение имен ролей в том случае, когда два или более атрибута имеют одинаковую область значений, но разный смысл, что обычно случается, когда между сущностями есть две и более связей по одному набору атрибутов.

Другим примером обязательности присвоения имен ролей являются рекурсивные связи, когда одна и та же сущность является и родительской и дочерней одновременно. При задании рекурсивной связи атрибут должен мигрировать в качестве внешнего ключа в состав неключевых атрибутов той же сущности. Атрибут не может появиться дважды в одной сущности под одним именем, поэтому обязательно должен получить имя роли. Рекурсивная связь может быть только неидентифицирующей. В примере сущность сотрудник связана с собой же связью «Руководит/Подчиняется».

Рекурсивная связь называется иерархической рекурсией, если каждая сущность связана с несколькими дочерними сущностями, но имеет только одну родительскую

Другим видом рекурсии является сетевая рекурсия (network recursion), когда каждая сущность может быть связана с несколькими как в роли родительской, так и в роли дочерней.

ДОМЕН

Домен атрибута можно определить как совокупность возможных значений атрибута. Таким образом, в понятие домена входит и тип данных, и область их возможных значений. Для каждого атрибута может быть задан только один домен, но на каждом домене может быть определено множество атрибутов.

На уровне инфологической модели домены можно описать без конкретных физических свойств. На физическом уровне они автоматически получают специфические свойства, которые можно изменить вручную. Так, домен "Возраст" может иметь на логическом уровне тип Number, на физическом уровне колонкам домена будет присвоен тип INTEGER.