Родственник Родственное отношение

Номер родственника Младший.Номер родственника(FK)

Старший.Номер родственника(FK)

Тип отношения

 
 

 


Рисунок 1.23 – Пример реализации сетевой рекурсии

 

 

Если атрибут мигрирует в качестве внешнего ключа более чем на один уровень, то на первом уровне отображается полное имя внешнего ключа (имя роли + базовое имя атрибута), на втором и более – только имя роли. На рисунке 1.24. изображена структура данных, которая содержит сущность Команда, сущность Игрок, в которой хранится информация об игроках каждой команды, и сущность Гол, содержащая информацию и о голах, которые забивает каждый игрок. Атрибут внешнего ключа Номер команды сущности Игрок имеет имя роли «В какой команде играет». На следующем уровне, в сущности Гол, отображается только имя роли соответствующего атрибута внешнего ключа (В какой команде играет).

 

 

Команда Игрок

Номер команды В какой команде играет. Номер команды(FK)

Номер игрока

Название команды

Имя игрока

 

 
 

 


Гол

Дата/время гола

Номер игрока (FK)

В какой команде играет (FK)

 
 

 

 


Рисунок 1.24 – Миграция имен ключей

 

 

Связь многие-ко-многим возможна только на уровне концептуальной модели данных. На рисунке 1.25 показан пример связи многие-ко-многим. Врач может принимать много пациентов, пациент может лечиться у нескольких врачей. Такая связь обозначается сплошной линией с двумя точками на концах.

 

 

Врач Пациент

 

принимает

Номер врача Номер пациента

лечится

 

 

Рисунок 1.25 - Связь «многие ко многим»

 

 

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

Важным понятием в IDEF1X является понятие ключа и различные типы ключей.

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

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

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

Например, рассмотрим кандидатов на первичный ключ сущности Сотрудник. Здесь можно выделить следующие потенциальные ключи:

- Табельный номер

- Номер паспорта

- Фамилия + Имя + Отчество

Для того чтобы стать первичным, потенциальный ключ должен удовлетворять ряду требований: уникальность. Два экземпляра не должны иметь одинаковых значений возможного ключа. Потенциальный ключ Фамилия+Имя+Отчество является плохим кандидатом, поскольку в организации могут работать полные тезки. Компактность. Сложный возможный ключ не должен содержать ни одного атрибута, удаление которого не приводило бы к утрате уникальности. Для обеспечения уникальности ключа Фамилия+Имя+Отчество дополним его атрибутами Дата рождения и Цвет волос, а ключ Фамилия+Имя+Отчество+Дата рождения+Цвет волос не является компактным.

При выборе первичного ключа предпочтение должно отдаваться более простым ключам, то есть в нашем примере это либо Табельный номер, либо номер паспорта.

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

Значение атрибутов ключа не должно меняться в течение всего времени существования экземпляра сущности. Сотрудница организации может выйти замуж и сменить как фамилию так и паспорт. Поэтому ключи Номер паспорта и Фамилия+Имя+Отчество не выбраны в качестве первичного ключа.

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

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

На диаграмме атрибуты альтернативных ключей обозначаются как (AKn.m), где n – порядковый номер ключа, m – порядковый номер атрибута в ключе. Когда альтернативный ключ содержит несколько атрибутов, (AKn.m) ставится после каждого.

На рисунке 1.26 атрибуты Фамилия, Имя, Отчество и Дата рождения входят в альтернативный ключ № 1 (AK1), Номер паспорта составляет альтернативный ключ № 2 (AK2). Инверсионные входы обозначаются как (IEn.m), где n – порядковый номер входа, m – порядковый номер атрибута. Инверсионный вход IE1 (атрибут Должность) позволяет выбрать всех сотрудников, занимающих одинаковую должность, IE2 (атрибуты Город и Улица) – всех сотрудников, живущих на одной улице, IE3 (атрибут Номер комнаты) – всех сотрудников, работающих в одной комнате, а IE4 (атрибут Дата рождения) – всех сотрудников, родившихся в один день.