Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Первичные и альтернативные ключи




Семантика первичных и альтернативных ключей

Возможный ключ сущности - это один или несколько атрибутов, чьи значения однозначно определяют каждый экземпляр сущности., Например, НОМЕР_ЗАКАЗА_НА_ПОКУПКУ может однозначно определить экземпляр сущности ЗАКАЗ_НА_ПОКУПКУ. Комбинация атрибутов НОМЕР_СЧЕТА и НОМЕР_ЧЕКА может однозначно определить экземпляр сущности ЧЕК.

Каждая сущность должна обладать хотя бы одним возможным ключом. В некоторых случаях сущность может иметь более одного атрибута или группу атрибутов, однозначно идентифицирующих экземпляры сущности. Например, каждый из атрибутов НОМЕР_СЛУЖАЩЕГО и НОМЕР_ПОЛИСА может однозначно идентифицировать экземпляр сущности СЛУЖАЩИЙ.

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

Синтаксис первичных и альтернативных ключей

Определяющие первичный ключ атрибуты размещаются наверху списка атрибутов в блоке сущности и отделяются от других атрибутов горизонтальной чертой (см. рис. 3-7).

Каждому альтернативному ключу присваивается уникальный целый номер. Этот ключ указывается с помощью размещения справа от каждого атрибута ключа заключенных в скобки букв АК с номером альтернативного ключа, например, (АК1) (см. рис. 3-8). Отдельный атрибут может входить в качестве компоненты в более чем один альтернативный ключ. Атрибут первичного ключа может служить также частью альтернативного ключа.

Рис. 3-8. Синтаксис альтернативных ключей

Правила первичных и альтернативных ключей

  1. Каждая сущность должна обладать первичным ключом.
  2. Каждая сущность может обладать любым числом альтернативных ключей.
  3. Первичный или альтернативный ключ может состоять из одного атрибута или комбинации атрибутов.
  4. Отдельный атрибут может быть частью более чем одного ключа, первичного или альтернативного.
  5. Атрибуты, входящие в первичные или альтернативные ключи сущности, могут быть собственными для сущности или наследоваться через отношения. (См. раздел 3.7 "Внешние ключи").
  6. Первичные и альтернативные ключи должны содержать только необходимые для однозначной идентификации атрибуты, т.е. при исключении из ключа любого атрибута не все экземпляры сущности могут быть однозначно определены (правило наименьшего ключа).
  7. Если первичный ключ состоит более чем из одного атрибута, то значение любого неключевого атрибута должно функционально зависеть от всего первичного ключа, т.е. если первичный ключ известен, то известно значение каждого неключевого атрибута, и значение неключевого атрибута не может быть определено с помощью только части первичного ключа (правило полной функциональной зависимости).
  8. Каждый неключевой атрибут должен функционально зависеть только от первичного и альтернативных ключей, т.е. значение неключевого атрибута не может определяться значением другого неключевого атрибута (правило отсутствия транзитивной зависимости).

 

Внешние ключи

Семантика внешних ключей

Если между двумя сущностями имеется специфическое отношение связи или категоризации, то атрибуты, входящие в первичный ключ родительской или общей сущности, наследуются в качестве атрибутов сущностью-потомком или категорией сущностью соответственно. Эти наследуемые атрибуты называются внешними ключами. Например, если существует отношение между сущностью ПРОЕКТ как родителем и сущностью ЗАДАНИЕ как потомком, то атрибуты первичного ключа сущности ПРОЕКТ будут наследуемыми атрибутами сущности ЗАДАНИЕ. Например, если атрибут ПРОЕКТ_ID являлся первичным ключом сущности ПРОЕКТ, то ПРОЕКТ_ID будет также наследуемым атрибутом или внешним ключом сущности ЗАДАНИЕ.

Наследуемый атрибут может использоваться в сущности в качестве. части или целого первичного ключа, альтернативного ключа или неключевого атрибута. Если все атрибуты первичных ключей сущности-родителя наследуются в качесте части первичного ключа сущности-потомка, то отношение, через которое эти атрибуты были унаследованы; называется идентифицирующим отношением. Если какой-нибудь из наследуемых атрибутов не является частью первичного ключа, то отношение называется неидентифицирующим отношением (см. раздел 3.2). Например, если задания имеют номера, уникальные только в пределах своего проекта, то для определения первичного ключа ЗАДАНИЯ необходимо соединить наследуемый атрибут ПРОЕКТ_ID с собственным атрибутом НОМЕР_ЗАДАНИЯ. Сущность ПРОЕКТ будет обладать идентифицирующим отношением с сущностью ЗАДАНИЕ. Если, с другой стороны, атрибут НОМЕР_ЗАДАНИЯ всегда уникален (даже для разных проектов), то наследуемый атрибут ПРОЕКТ_ID будет неключевым атрибутом сущности ЗАДАНИЕ. В этом случае сущность ПРОЕКТ будет обладать неидентифицирующим отношением с сущностью ЗАДАНИЕ.

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

В некоторых случаях сущность-потомок может иметь несколько отношений с одной и той же сущностью-родителем. Первичный ключ сущности-родителя появится для каждого отношения в качестве наследуемых атрибутов в сущности-потомке. Для данного экземпляра сущности-потомка значения наследуемых атрибутов могут быть различными для различных отношений, т.е. может быть ссылка на два разных экземпляра сущности-родителя. Например, спецификация некоторого устройства может изображаться двумя сущностями: ДЕТАЛЬ и УЗЕЛ. Сущность ДЕТАЛЬ в качестве сущности-родителя обладает двойным отношением с сущностью УЗЕЛ. Одна и та же деталь может служить как компонентой, из которой производится узел (т.е. деталь может быть компонентой одного или многих узлов), так и иногда быть узлом, в который собираются компоненты (т.е. деталь может быть узлом для одной или более деталей-компонент). Если НОМЕР-ДЕТАЛИ является первичным ключом для сущности ДЕТАЛЬ, то НОМЕР-ДЕТАЛИ дважды появляется в сущности УЗЕЛ в качестве наследуемого атрибута.

Когда отдельный атрибут наследуется более одного раза, для каждого случая должно назначаться имя роли. В предыдущем примере имена ролей НОМЕР_КОМПОНЕНТЫ и НОМЕР_УЗЛА могут назначаться для различения двух наследуемых атрибутов НОМЕР_ДЕТАЛИ. Имена ролей могут использоваться и при единственном появлении наследуемого атрибута для более точного выражения его смысла в контексте сущности-потомка, но это не является обязательным.

Синтаксис внешних ключей

Внешний ключ изображается с помощью помещения внутрь блока сущности имен наследуемых атрибутов, после которых следуют буквы FK в скобках (FK), см рис.3-9.

Рис. 3-9. Примеры синтаксиса внешних ключей

Если наследуемый атрибут принадлежит первичному ключу сущности-потомка, то он помещается выше горизонтальной линии, а сущность изображается с закругленными углами для указания на то, что идентификатор (первичный ключ) сущности зависит от атрибута, наследуемого через отношение. Если наследуемый атрибут не принадлежит первичному ключу сущности-потомка, то он изображается ниже линии. Наследуемые атрибуты могут быть также частью альтернативного ключа.

Имена ролей, как и имена атрибутов, являются грамматическими оборотами существительного. За именем роли следует имя наследуемого атрибута, отделенное точкой (см.рис.3-10).

Рис. 3-10. Синтаксис имени роли

Правила внешних ключей

  1. Каждая сущность должна содержать отдельный внешний ключ для каждого специфического отношения связи или категоризации, в котором эта сущность является сущностью-потомком или сущностью-категорией.
  2. Первичный ключ общей сущности должен наследоваться в качестве первичного ключа для каждой сущности-категории.
  3. Сущность не должна содержать двух полных внешних ключей, которые идентифицируют один и тот же экземпляр одной и той же родительской или общей сущности для каждого экземпляра сущности-потомка или сущности-категории (в противном случае существует только одно отношение и необходим только один внешний ключ).
  4. Каждый наследуемый атрибут сущности-потомка или сущности-категории должен представлять атрибут из первичного ключа связанной родительской или общей сущности. Наоборот, каждый атрибут первичного ключа родительской или общей сущности должен быть наследуемым атрибутом в связанной сущности-потомке или сущности-категории.
  5. Каждое присвоенное наследуемому атрибуту имя роли должно быть уникальным, а одному и тому же имени должен соответствовать один и тот же смысл. Кроме того, один и тот же смысл не может соответствовать различным именам, если только эти имена не являются псевдонимами.
  6. Один наследуемый атрибут может быть частью более чем одного внешнего ключа, если этот атрибут всегда имеет одно и то же значение для всех внешних ключей в любом данном экземпляре сущностей.

 

Процедуры моделирования

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...