Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Типы сущностей и иерархия наследования






 

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

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

 

Рис. 2.34. Пример характеристической сущности " Хобби"

 

Ассоциативная - сущность, связанная с несколькими родительскими сущностями. Такая сущность содержит информацию о связях сущностей. Примером ассоциативной сущности является Visit рис. 2.33.

Именующая - частный случай ассоциативной сущности, не имеющей собственных атрибутов (только атрибуты родительских сущностей, мигри­ровавших в качестве внешнего ключа). Примером именующей сущности является Doctor_ Patient на рис. 2.32.

Категориальная - дочерняя сущность в иерархии наследования.

Иерархия наследования (или иерархия категорий) представляет собой особый тип объединения сущностей, которые разделяют общие характери­стики, Например, в организации работают служащие, занятые полный ра­бочий день (постоянные служащие) и совместители. Из их общих свойств можно сформировать обобщенную сущность (родовой предок) Сотрудник (рис. 2.35), чтобы представить информацию, общую для всех типов служа­щих. Специфическая для каждого типа информация может быть располо­жена в категориальных сущностях (потомках) Постоянный сотрудник и Совместитель.

Обычно иерархию наследования создают, когда несколько сущностей имеют общие по смыслу атрибуты, либо когда сущности имеют общие по смыслу связи (например, если бы Постоянный сотрудник и Совместитель имели бы сходную по смыслу связь " работает в" с сущностью Организа­ция ), либо когда это диктуется бизнес-правилами.

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

(атрибут Тип на рис. 2 35).

 

 

Рис. 2.35. Иерархия наследования. Неполная категория

 

Иерархии категорий делятся на два типа - полные и неполные. В пол­ной категории одному экземпляру родового предка (сущность Служащий, рис. 2.36) обязательно соответствует экземпляр в каком-либо потомке, т. е. в примере служащий обязательно является либо совместителем, либо кон­сультантом, либо постоянным сотрудником.

Если категория еще не выстроена полностью и в родовом предке могут существовать экземпляры, которые не имеют соответствующих экземпля­ров в потомках, то такая категория будет неполной. На рис. 2.35 показана неполная категория - сотрудник может быть не только постоянным или совместителем, но и консультантом, однако сущность Консультант еще не внесена в иерархию наследования.

 

 

Рис 2.36. Иерархия наследования. Полная категория

Полная категория помечается символом , неполная - .

Возможна комбинация полной и неполной категорий. На рис. 2.37 по­мимо постоянных сотрудников и совместителей могут быть и консультан­ты, что не отражено в иерархии (неполная категория), но каждый постоян­ный сотрудник либо мужчина, либо женщина (полная категория).

 

Рис. 2.37. Иерархия наследования. Комбинация полной и неполной категорий

 

Для создания категориальной связи следует:

- установить курсор на кнопке в палитре инструментов и нажать ле­вуюкнопку мыши;

- щелкнуть сначала по родовому предку, а затем по потомку;

- для установления второй связи в иерархии категории следует сначала щелкнуть по символу категории, затем по второму потомку.

Для редактирования категорий нужно щелкнуть правой кнопкой мыши по символу категории и выбрать в контекстном меню пункт Subtype Relationship Editor. В диалоге Subtype Relationship (рис. 2.38) можно указать атрибут - дискриминатор категории (список Discriminator Attribute Choice) и тип категории - полная/неполная (радиокноики Complete/Incomplete).

 

 

Рис. 2.38. Диалог Subtype Relationship

 

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

 

 

Рис. 2.39. Сущности с общими по смыслу атрибутами

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

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

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

 

 

Рис. 2.40. Дополнительная сущность с общими по смыслу атрибутами

 

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

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

Ключи

 

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

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

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

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

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

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

  1. Табельный номер;
  2. Номер паспорта;
  3. Фамилия + Имя + Отчество.

 

Рис. 2.41. Определение первичного ключа для сущности " Сотрудник "

 

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

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

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

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

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

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

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

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

Создать альтернативные ключи и инверсионные входы можно в заклад­ке Key Group диалога Attribute Editor (рис. 2.42). Если щелкнуть по кнопке , расположенной в правой верхней части закладки, вызывается диалог Key Group Editor (рис. 2.43). В верхней части диалога находится список ключей, в нижней - список атрибутов, доступных для включения в состав ключа (слева), и список ключевых атрибутов. Каждый вновь созданный ключ должен иметь хотя бы один атрибут. Для включения атрибута в состав ключа следует выделить его в левом списке и щелкнуть по кнопке .

 

 

Рис 2.42. Закладка Key Group диалога Attribute Editor

 

Рис 2.43. Диалог Key Group Editor

 

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

 

 

Рис. 2.44. Диалог New Key Group

 

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

 

 

Рис. 2.45. Сущность " Сотрудник" с отображением ключей

 

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

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

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

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

 

 

Рис 2.46. Унификация атрибута

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

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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.