Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Определение сущностей с общими (по определению) атрибутами



Предположим, в процессе проектирования созданы сущности Постоянный
сотрудник
и Совместитель (рис. 2. 2. 35). Можно заметить, что часть атри-
бутов у этих сущностей {Фамилия, Имя, Отчество, Дата рождения,
Должность)
имеет одинаковый смысл.

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


Создание неполной структуры категорий. Создается категориальная
связь от новой сущности-родового предка к старым сущностям-потомкам.
Новая сущность дополняется атрибутом-дискриминатором категории (Гни)
(см. рис. 2. 2. 36).

Создание полной структуры категорий. Проводится дополнительный
поиск сущностей, имеющих общие по смыслу атрибуты с родовым предком.
В примере это сущность Консультант (рис. 2. 2. 36).

Общие атрибуты переносятся в родового предка, и категория преобразу-
ется в полную (признак полной категории устанавливается в диалоге
Subtype Relationship). Сущность Консультант не имеет атрибута Долж-
ность,
поэтому в родовом предке значение этого атрибута в случае кон-
сультанта будет NULL. В зависимости от бизнес-правил атрибут Долж-
ность
может быть перенесен обратно из родового предка в сущности-
потомки Постоянный сотрудник и Совместитель.

Комбинации полной и неполной структур категорий. При необходимо-
сти создание иерархии категорий можно продолжить. Для каждого потомка мо-
жет найтись сущность с общими атрибутами, тогда сущность-потомок стано-
вится родовым предком для новых потомков и т. д. (см. рис. 2. 2. 33).

Ключи

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

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


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

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

Рассмотрим кандидатов на первичный ключ
сущности Сотрудник (рис. 2. 2. 37).

Здесь можно выделить следующие потенциаль-
ные ключи:

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

2. Номер паспорта.

3. Фамилия + Имя + Отчество.
Для того чтобы стать первичным, потенциальный ключ должен удовле-
творять ряду требований.

Уникальность. Два экземпляра не должны иметь одинаковых значений
возможного ключа. Потенциальный ключ № 3 {Фамилия + Имя + Отчест-
во)
является плохим кандидатом, поскольку в организации могут работать
полные тезки.

Компактность. Сложный возможный ключ не должен содержать ни од-
ного атрибута, удаление которого не приводило бы к утрате уникальности.
Для обеспечения уникальности ключа № 3 дополним его атрибутами Дата
рождения
и Цвет волос. Если бизнес-правила говорят, что сочетания атри-
бутов Фамилия + Имя + Отчество + Дата рождения достаточно для од-
нозначной идентификации сотрудника, то Цвет волос оказывается лишним,
т. е. ключ Фамилия + Имя + Отчество + Дата рождения + Цвет волос
не является компактным.

При выборе первичного ключа предпочтение должно отдаваться более
простым ключам, т. е. ключам, содержащим меньшее количество атрибутов.
В примере ключи № 1 и 2 предпочтительней ключа № 3.

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


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

Значение атрибутов ключа не должно меняться в течение всего времени
существования экземпляра сущности. Сотрудница организации может вый-
ти замуж и сменить как фамилию, так и паспорт. Поэтому ключи № 2 и 3 не
подходят на роль первичного ключа.

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

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

Создать альтернативные ключи и инверсионные входы можно во вклад-
ке Key Group диалога Attributes (см. рис. 2. 2. 8). Если щелкнуть по кнопке , расположенной в правой верхней части вкладки, вызывается диалог Key
Groups (рис. 2. 2. 38). В верхней части диалога находится список ключей,
в нижней - список атрибутов, доступных для включения в состав ключа
(слева), и список ключевых атрибутов. Каждый вновь созданный ключ дол-
жен иметь хотя бы один атрибут. Для включения атрибута в состав ключа

следует выделить его в левом списке и щелкнуть по кнопке


Для создания нового ключа следует щелкнуть по кнопке New. Появляет-
ся диалог New Key Group (рис. 2. 2. 39). Имя нового ключа присваивается ав-
томатически (Alternate Key N для альтернативного ключа и Inversion Entry N
для инверсионного входа, где N - порядковый номер ключа).

Каждому ключу соответствует индекс, имя которого также присваивает-
ся автоматически (XAKNENTITY для альтернативного ключа и XIENEN-
TITY для инверсионного входа, где N - порядковый номер ключа,
ENTITY - имя сущности). Имена ключа и индекса при желании можно из-
менить вручную.


На диаграмме атрибуты альтернативных ключей обозначаются как
(AKn. m), где n - порядковый номер ключа, m - порядковый номер атрибута
в ключе. Когда альтернативный ключ содержит несколько атрибутов,
(AKn. m) ставится после каждого. На рис. 2. 2. 40 атрибуты Фамилия, Имя,
Отчество
и Дата рождения входят в альтернативный ключ № 1 (АК1),
Номер паспорта
составляет альтернативный ключ № 2 (АK2). Инверсион-
ные входы обозначаются как (IEn. m), где n - порядковый номер входа, m -
порядковый номер атрибута. Инверсионный вход IE1 (атрибут Должность)
позволяет выбрать всех сотрудников, занимающих одинаковую должность,
IE2 (атрибуты Город и Улица) - всех сотрудников, живущих на одной ули-
це, IE3 (атрибут Номер комнаты) - всех сотрудников, работающих в одной
комнате, a IE4 (атрибут Дата рождения) - всех сотрудников, родившихся
в один день. Если один атрибут входит в состав нескольких ключей, ключи
перечисляются в скобках через запятую (атрибут Дата рождения входит
в состав АК1 и IE4). По умолчанию номера альтернативных ключей и ин-
версионных входов рядом с именем атрибута на диаграмме не показывают-
ся. Для отображения номера следует в контекстном меню, которое появля-
ется, если щелкнуть левой кнопкой мыши по любому месту диаграммы, не
занятому объектами модели, выбрать пункт Display Options/Entities и затем
включить опцию Alternate Key Designator (AK).

Внешние ключи (Foreign Key) создаются автоматически, когда связь
соединяет сущности: связь образует ссылку на атрибуты первичного ключа
в дочерней сущности и эти атрибуты образуют внешний ключ в дочерней
сущности (миграция атрибутов ключа). Атрибуты внешнего ключа обозна-
чаются символом (FK) после своего имени (см. рис. 2. 2. 40). Атрибут внеш-
него ключа Где работает. Номер отдела ("Где работает" - имя роли) явля-
ется атрибутом первичного ключа (РК) в сущности Отдел.

Зависимая сущность может иметь один и тот же внешний ключ из не-
скольких родительских сущностей. Сущность может также получить один


и тот же внешний ключ несколько раз от одного и того же родителя через
несколько разных связей. Когда ERwin обнаруживает одно из этих событий,
он распознает, что два атрибута одинаковы, и помещает атрибут внешнего
ключа в зависимой сущности только один раз. Хотя во вкладке Key Group
диалога Attribute Editor этот атрибут будет входить в два внешних ключа,
на диаграмме он показывается только один раз. Это комбинирование или
объединение идентичных атрибутов называется унификацией.

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

По смыслу это одно и то же значение номера отдела, поскольку в отделе
реализуются проекты, которые ведут сотрудники того же отдела. ERwin уни-
фицирует атрибуты и отображает на диаграмме только один атрибут Номер
отдела.

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

В некоторых случаях бывает целесообразно иметь в дочерней сущности
ссылку не на первичный, а на альтернативный ключ. ERwin позволяет соз-


давать связи, при которых в дочернюю сущность мигрируют атрибуты од-
ного из альтернативных ключей. Для создания такой связи необходимо соз-
дать идентифицирующую или неидентифицирующую связь, шелкнуть
по связи правой кнопкой мыши, выбрать пункт меню Relationship Properties
и в списке выбора Migrated Key (диалог Relationships, вкладка Rolename)
выбрать ключ, атрибуты которого будут мигрировать в дочернюю сущность
(рис. 2. 2. 42).

В результате в дочерней сущности внешний ключ содержит атрибуты
альтернативного ключа родительской сущности (рис. 2. 2. 43).





Дата публикования: 2015-10-09; Прочитано: 1115 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...