Комплексное определение для информационного моделирования (IDEF1X), страница 14

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

3.9.1.1 Семантика функционального имени

Когда атрибут переходит из одной сущности в другую через одно отношение, «функциональное имя» необходимо присвоить каждой активности, чтобы показать различия между ними. Если экземпляр сущности имеет только одно значение для одной активности и другое значение для другой, тогда каждой активности присваиваются различные функциональные имена. Если же каждый экземпляр сущности имеет одно и то же значение для двух или более активностей, им должны быть присвоены одинаковые имена. Для предыдущего примера, должны быть определены функциональные имена активностей ID-ЭЛЕМЕНТА-ДЕТАЛИ и ID-СОБРАННОЙ-ДЕТАЛИ, чтобы обозначить различия между двумя переходящими атрибутами ID-ДЕТАЛИ. Не обязательно, но возможно использовать функциональное имя для одной активности, содержащей переходящие атрибуты, чтобы более точно передать значение в контекст дочерней сущности.

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

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

Пример переходящего не ключевого атрибута

Сотрудник

Внешний ключ

 
Номер_Сотрудника

Номер_Отдела (ВК)

Пример переходящего ключевого атрибута

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

3.9.2.1 Синтаксис функционального имени

Функциональные имена, такие как имена доменов (атрибутов) являются сочетанием существительных. За функциональным именем следует название переходящего атрибута, отделенное точкой. См. Рисунок 12.

Рис. 12. Синтаксис функционального имени

3.9.3 Правила использования внешних ключей

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

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

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

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

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

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

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

3.10 Уровни представления данных

Существует 3 концептуальных уровня представления данных в IDEF1X: модель сущность-связь (ER модель), ключевая (KB) и атрибутивная (FA) модели. Они отличаются синтаксисом и семантикой построения. Главные отличия:

а) В ER-модели не определяются ключи.

б) В KB-модели определяются ключевые и некоторые неключевые атрибуты.

в) В FA-модели определяются ключевые и все неключевые атрибуты.