BPwin и Erwin. CASE-средства для разработки информационных систем - Маклаков Сергей Владимирович
Именующая - частный случай ассоциативной сущности, не имеющей собственных атрибутов (только атрибуты родительских сущностей, мигрировавших в качестве внешнего ключа). Примером именующей сущности является 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).
2.2.5. Ключи
Каждый экземпляр сущности должен быть уникален и отличаться от других атрибутов.
Первичный ключ (primary key) - это атрибут или группа атрибутов, однозначно идентифицирующая экземпляр сущности. Атрибуты первичного ключа на диаграмме не требуют специального обозначения - это те атрибуты, которые находятся в списке атрибутов выше горизонтальной линии (см., например, рис. 2.33). При внесении нового атрибута в диалоге Attribute Editor для того, чтобы сделать его атрибутом первичного ключа, нужно включить флажок Primary Key в нижней части закладки General. На диаграмме неключевой атрибут можно внести в состав первичного ключа, воспользовавшись режимом переноса атрибутов (кнопка в палитре инструментов).
Выбор первичного ключа может оказаться непростой задачей, решение которой может повлиять на эффективность будущей ИС. В одной сущности могут оказаться несколько атрибутов или наборов атрибутов, претендующих на роль первичного ключа. Такие претенденты называются потенциальными ключами (candidate key).
Ключи могут быть сложными, т. е. содержащими несколько атрибутов. Сложные первичные ключи не требуют специального обозначения - это список атрибутов выше горизонтальной линии:"
Рассмотрим кандидатов на первичный ключ сущности Сотрудник (рис. 2.41).