Типы сущностей и иерархия наследования (супертипы, подтипы)
Существуют несколько типов зависимых сущностей.
Характеристическая/Ассоциативная – зависимая дочерняя сущность, связанная только с одной/нескольким родительскими сущностями. Связи «Состоит из» и «Визит» являются характеристической и ассоциативной соответственно (рисунки 3.2.3.6; 3.2.3.11).
Связь «Визит» является ассоциативной (рисунок 3.2.3.11).
Именующая – ассоциативная сущность без собственных атрибутов (только атрибуты, мигрировавшие в качестве внешнего ключа, например связь «Врач_Пациент») (рисунок 3.2.3.10).
Категориальная – дочерняя сущность (подтип) в иерархии наследования.
Иерархию наследования создают, когда несколько сущностей имеют несколько общих атрибутов или имеют общие по смыслу связи (супертип). Для каждой категории можно указать дискриминатор – атрибут родового предка, который показывает, как отличить сущности (Тип (рисунок 3.2.4.1)).
Рисунок 3.2.4.1. Иерархия наследования (полная категория)
Для создания категориальной связи нужно последовательно щелкнуть на кнопке Complete sub‑category по родовому предку (супертипу), затем – по потомку (подтипу). Для установки второй связи следует щелкнуть по символу категории, затем – по второму потомку.
Существуют два типа категории:
· полная (Complete), когда любому экземпляру предка обязательно соответствует один из потомков (сотрудник обязательно постоянный или совместитель, и других вариантов нет);
· неполная (Incomplete), когдасуществует экземпляр предка, для которого отсутствует потомок (сотрудник может быть консультантом).
Дискриминатор и тип категории устанавливаются командой Subtype Relationship из контекстного меню символа категории.
Порядок постоения иерархии наследования:
· определение сущностей с общими атрибутами («Постоянный сотрудник» и «Совместитель»);
· создание и перенос общих атрибутов в сущность – родовой предок (супертип «Сотрудник»);
· создание категориальных связей;
· задание типа категорий и дискриминаторов;
· при необходимисоти для каждого потомка можно продолжить иерархию наследования.
Ключи
Атрибуты первичного ключа находятся выше горизонтальной линии в диаграмме. Ключ может соcтоять из нескольких атрибутов (составной или сложный ключ). Атрибуты ключа не должны содержать нулевых значений.
Все не первичные, но уникальные ключи называются альтернативными (Alternate Key) (вторичными, кандитами, дополнительными).
Для каждого инверсионного входа (п. 3.1.1) генерируется неуникальный (регулярный) индекс.
Для создания альтернативных ключей или инверсионных входов (индексов) используется команда Key Groups из контекстного меню сущности. Кнопкой New (рисунок 3.2.5.1) можно создать новый ключ или вход (рисунок 3.2.5.2).
На диаграмме атрибуты альтернативного ключа/входа изображаются после имени атрибута в виде:
(AK/IE<номер ключа/входа>.<номер атрибута в ключе/входе>)
Если атрибут входит в состав нескольких ключей или входов, то они перечиляются через запятую (AK1.2, IE2,3).
Если имеется один и тот же внешний ключ из нескольких родительских сущностей, то он помещается на диаграмму только один раз, хотя в поле Key Group он показывается несколько раз (рисунок 3.2.5.1).
Для отображения ключей и входов следует выполнить команду Format/Entity Dispaly/Alternate Key Designator.
Рисунок 3.2.5.1. Редактирование альтернативных ключей и инверсионных входов
Рисунок 3.2.5.2. Создание альтернативного ключа или инверсионного входа