2. Щелкнем мышкой по кнопке Entity, а затем щелкнем на свободном месте модели. Появится изображение сущности.
3. Выполним команду Entity Properties из контекстного меню этой сущности, и появится одноименное окно Entities (рисунок 3.2.2.1).
4. На странице Defintion укажем наименование и назначение сущности (рисунок 3.2.2.1).
Рисунок 3.2.2.1. Окно определения сущности
5. Заполним страницы Note (дополнительные данные, например бизнес-правило или соглашение по организации диаграммы), Note2 (возможные запросы к сущности), Note3 (примеры данных для сущности), UDP (свойства, определенные пользователем командой Model/UDP Dictionary), Icon (имена двух файлов типа BMP с изображениями маленькой и большой иконки). Существуют шесть типов данных для UDP: Date (дата вида мм/дд/гг), Int/Real (целое/вещественное число), List (список значений через запятую; перед умалчиваемым значением указывается символ «~» (1,2,~3,4,5,6), Command (командная строка).
7. Нажмем кнопку New для создания атрибута Код подразделения (рисунок 3.2.2.3). Поле Attribute/Column Name cодержит имя атрибута (в единственном числе) в логической/физической (латинские буквы и цифры без пробелов) модели. Имена атрибутов должны быть уникальными в рамках всей модели. Если это нарушается, то по умолчанию в конце имени дубля добавляется через дробную черту порядковый номер дубля. Этот порядок переименования атрибутов можно изменить командой Tools/Names/Model Naming Options/Duplicate Names: Allow (разрешить дублирование), AutomaticallyRename (переименовывать по умолчанию), Ask (запрос на возможные действия), Disallow (запрет дублирования). Выберем тип данных Number и порядок сортировки Hierarchically (рисунок 3.2.2.2).
Рисунок 3.2.2.2. Окно редактирования атрибутов
Рисунок 3.2.2.3. Окно создания атрибута
8. Аналогично определим атрибут Наименование подразделения.
9. Укажем, что атрибут Код подразделения является первичным ключом (опция Primary Key (рисунок 3.2.2.2)). При установке связей между сущностями атрибуты первичного ключа родительской сущности мигрируют в виде внешних ключей в дочернюю сущность. Для отображения иконок атрибутов выполним команду контекстного меню Intity Properties/Icon. Определим страницы Definition (определение атрибутов), Note (примечания к атрибутам), UDP (значения свойств пользователя). Нажмем кнопку OK и сформируется сущность Подразделения (рисунок3.2.2.4). Мышкой можно переносить атрибуты внутри и между сущностями.
Рисунок 3.2.2.4. Отображение сущности
Связи
Имя связи между объектами (глагол или глагольная фраза) по умолчанию не показывается на диаграмме; для ее отображения нужно выполнить команду Relationship Display/Verb Phrase из контекстного меню диаграммы. В IDEF1X различаются зависимые и независимые сущности.
Для создания связи следует щелкнуть на кнопке связи, затем – по родительской и дочерней сущности.
Идентифицирующая связь устанавливается между независимой (родительский конец связи) и зависимой (дочерний конец связи) сущностями. Экземпляр дочерней сущности (изображается прямоугольником со скругленными углами) не может существовать без родительского экземпляра. Первичный ключ автоматически переносится (мигрирует) в дочернюю сущность в состав ее первичного ключа и помечается в круглых скобках символами FK (рисунок 3.2.3.1).
Рисунок 3.2.3.1. Идентифицирующая связь между сущностями
Неидентифицирующая связь устанавливается между независимыми сущностями и оставляет дочернюю сущность независимой: экземпляр дочерней сущности может существовать без родительского экземпляра.
Первичный ключ автоматически переносится (мигрирует) в дочернюю сущность в состав неключевых атрибутов и помечается в круглых скобках символами FK (рисунок 3.2.3.2). Сотрудник может работать самостоятельно, не числясь в каком-либо подразделении.
Риc. 3.2.3.2. Неидентифицирующая связь между сущностями
Редактирование связи реализуется командой Relationship Properties из контекстного меню линии связи (рисунок 3.2.3.3).
Рисунок 3.2.3.3. Окно настройки свойств связи
Рассмотрим основные свойства и страницы связи.
Cardinality – мощность связи (отношение числа экземпляров родительской сущности к числу экземпляров дочерней): ни одного (Zero), один (One), более одного (More), указанное число (Exactly). Мощность связи между сущностями по умолчанию не показывается на диаграмме, и для ее отображения нужно выполнить команду Relationship Display/Cardinality из контекстного меню диаграммы.
Ver Phase – имя связи от родительской к дочерней сущности (Parent‑to‑Child), и наоборот, для связи «многие‑ко‑многим» (Child‑to‑Parent).
Relationship Type – идентифицирующая/неиндентифицирующая связь (Identifying/Non‑Identifying).
Null – обязательная/необязательная связь (No Nulls/Nulls Allowed). Необязательная неидентифицирующая связь помечается прозрачным ромбиком со стороны родительской сущности (рисунок 3.2.3.2).
Definition – на странице задается полное определение связи для возможности ссылки на эту связь.
Rolename – на странице в поле Rolename задается имя роли (функциональное имя – синоним атрибута) внешнего ключа, который показывает, какую роль играет атрибут в дочерней сущности (рисунок 3.2.3.4).