Подмодели и сохраняемые отображения
Подмодель (поименованное подмножество логической или физической моделей тематически и логически связанных сущностей, таблиц или представлений соответственно) cоздается командой Model/Subject Areas. Каждая подмодель (внешняя модель, подсхема) может соответствовать определенной задаче. Все изменения, сделанные в подмодели, автоматически отражаются на общей модели. Одна и та же сущность может входить в несколько подмоделей. Сущность можно переносить только одну или со всеми (All), или с указанным числом уровней (Level) связанными с ней сущностями, предками (Ancestors) и потомками (Descendants).
Переход на подмодель осуществляется с помощью списка выбора подмоделей.
Хранимое отображение является подмоделью с оригинальным оформлением (различные уровни просмотра, цвет, масштаб, расположение и др.) на экране и задается окном Stored Displays, вызываемым командой Format/Store Display Settings. По умолчанию связи, которые не вошли в подмодель, не показываются. Для их отображения нужно включить в окне Stored Displays опцию General/Show Dangling Relationship. Опцией General/Diagonal можно разрешить отображение связей диагональными линиями, а не только ортогональными (Orthogonal).
Подмодель может иметь несколько хранимых отображений. Переход на хранимое отображение осуществляется с помощью закладок в нижней части диаграммы.
Создание логической модели данных
Уровни логической модели
Различают три уровня логической модели в порядке детализации: диаграмма «сущность – связь» (ERD, основные сущности и связи); модель данных, основанная на ключах (KB, описание всех сущностей, связей и первичных ключей); полная атрибутная модель (FA, данные в третьей нормальной форме со всеми сущностями, атрибутами и связями).
Сущности и атрибуты
Для примера создадим сущность Подразделение.
1. Установим уровень логической модели.
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 (командная строка).
6. Выполним команду Attributes контекстного меню сущности Подразделение,и появится одноименное окно (рисунок 3.2.2.2).
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).