- •Создание модели данных в среде eRwin 4.0
- •Теоретические сведения
- •3.1. Представления модели данных в eRwin
- •3.2. Инструментальная среда eRwin V 4.0
- •Стандартная панель инструментов
- •Палитра инструментов на логическом уровне
- •Палитра инструментов на физическом уровне
- •Панель инструментов Alignment
- •3.3. Представление модели в среде eRwin
- •Панель инструментов Font & Color
- •Панель инструментов Drawing
- •Уровни отображения логической модели
- •3.4. Создание логической модели данных
- •3.5. Создание физической модели данных
- •3.6. Генерация схемы базы данных
- •3.7. Пример модели данных
Уровни отображения логической модели
-
Уровни отображения
Представление модели
Сущности (Entity)

Атрибуты (Attribute)

Определение (Definition)

Первичный ключ (Primary Key)

Иконки (Icon) с отображением больших иконок

Сущности с отображением малых иконок

Подмножества модели (Subject Area) предназначены для более удобной работы с большой моделью путем разделения её на части.
При создании новой модели автоматически создается главное подмножество модели с именем Main Subject Area.
Для создания, редактирования или удаления подмножеств нужно вызвать диалог Subject Areas (пункт меню Model/Subject Area), в котором указывается имя подмножества и входящие в него сущности (рис.8). Все изменения, сделанные в подмножествах, автоматически отображаются в Main подмножестве модели. Одна и та же сущность может входить в несколько подмножеств.

Рис.8. Диалог Subject Areas
Для перехода от одного подмножества к другому служит кнопка переключения на стандартной панели инструментов (см. табл.1).
Подмножества можно создавать как в физической, так и в логической моделях.
Хранимое отображение (Storied Display) – это представление модели, отображающее специфический аспект её внешнего вида.
Для модели можно создать несколько хранимых отображений, которые будут отличаться уровнем отображения (см. табл.7), масштабом, цветом объектов или фона. Для создания, редактирования или удаления отображений нужно вызвать диалог Storied Display (пункт меню Format/Storied Display) или одноименный пункт контекстного меню в свободном месте диаграммы, в котором указывается имя подмножества и определяются свойства (рис.9).
Хранимые отображения можно создавать как в физической, так и в логической моделях.

Рис.9. Диалог Storied Displays
Для переключения между хранимыми отображениями служат вкладки в нижней части диаграммы (рис.10).

Рис.10. Вкладки хранимых отображений
Навигатор модели данных (Model Explorer) служит для поиска и редактирования объектов модели данных. Он содержит три вкладки - Model, Subject Area, и Domains (рис.11).
Вкладка Model содержит все объекты модели как логического, так и физического уровней – сущности, атрибуты, связи, таблицы, поля. В навигаторе объекты можно редактировать через контекстное меню, а также переносить и копировать в пределах модели.
Вкладка Subject Area служит для отображения и редактирования подмножеств модели.
Вкладка Domains отображает домены, созданные в модели.


Рис.11. Вкладки Model и Subject Area навигатора
3.4. Создание логической модели данных
Основные объекты логической модели данных – это сущности (Entity), атрибуты (Attribute) и отношения между сущностями (Relationship). Дополнительными объектами являются ключи сущностей.
Сущность можно определить как объект, событие или концепцию, информация о которых должна сохраняться. Каждая сущность является множеством подобных объектов, называемых экземплярами. Каждый экземпляр индивидуален.
Всем сущностям необходимо назначить имена с четким смысловым значением, в виде существительных в единственном числе. Не допускается использование «технических» наименований.
Для
внесения сущности в модель необходимо
щелкнуть по кнопке
на панели инструментов, а затем в месте
её расположения на диаграмме. Каждая
сущность должна быть полностью определена
с помощью текстового описания. Для этого
следует вызвать через пунктEntity
Properties
контекстное меню сущности диалог
Entities
(рис.12). В диалоге определяются имя и
свойства сущности.


Рис.12. Диалог Entity Properties
Вкладка Definition используется для ввода определения сущности. Вкладки Note, Note 2, Note 3 позволяют добавлять дополнительные замечания о сущности, документировать возможные запросы к ней в дальнейшем, вводить примеры данных.
Во вкладке Icon каждой сущности можно поставить в соответствие изображение (файл формата *.bmp), которое будет видно на уровне иконок.
Вкладка UDP служит для просмотра свойств сущности, которые определены пользователем в диалоге User-Defined Properties (вызывается из пункта меню Model/UDP Dictionary).
Во вкладке History ERwin автоматически сохраняет историю всех изменений, связанных с сущностью.
Атрибут – это информация об определенном свойстве сущности. Атрибут или группа атрибутов, которые идентифицируют сущность (делают каждый экземпляр сущности уникальным), называется первичным ключом.
Для описания атрибутов используется диалог Attributes, который вызывается через одноименный пункт контекстное меню сущности (рис.13).


Рис.13. Диалог Attributes
Кнопка New этого диалога позволяет указать имя нового атрибута, имя соответствующей ему в физической модели колонки и домен (рис.14). Домен атрибута будет использоваться при определении типа колонки на уровне физической модели. По умолчанию список содержит пять базовых доменов, которые представляют основные типы данных, используемые СУБД: строковый (String), числовой (Number), время (DataTime), двоичный (Blob), неизвестный (Unknown).

Рис.14. Диалог New Attribute для определения нового атрибута
Для атрибутов первичного ключа во вкладке General диалога Attributes необходимо сделать пометку Primary Key.
Вкладка Key Group позволяет включить атрибут в состав первичного, альтернативного или инвертированного ключа. Все ключевые атрибуты располагаются в прямоугольнике сущности выше горизонтальной линии.
Назначение вкладок Definition, Note, UDP и History аналогично назначению таких же вкладок для сущности.
Для большей наглядности каждый атрибут можно связать с иконкой при помощи списка выбора Icon во вкладке General. Каждому домену соответствует стандартная иконка, также можно импортировать другое изображение. Для отображения иконки атрибута необходимо включить опцию Attribute Icon в пункте контекстного меню Entity Display,вызванного в свободном месте диаграммы (рис.15).

Рис.15. Сущность на уровне атрибутов с иконками
Очень важно дать атрибуту правильное имя. Атрибуты должны именоваться в единственном числе и иметь четкое смысловое значение. Согласно стандарту IDEF1X имя атрибута должно быть уникально в рамках модели (а не только в рамках сущности!). Для автоматической поддержки этого правила следует задать режим именования атрибутов Disallow duplicate names (пункт меню Tools/Names/Model Naming Options, вкладка Duplicate Names).
ERwin позволяет переносить атрибуты внутри и между сущностями. Для этого необходимо указать на сущность, которой принадлежит атрибут, при этом указатель приобретает вид кисти руки, после чего можно перенести атрибут.
Отношения (связи) между сущностями должны именоваться глаголом или глагольной фразой (RelationShip Verb Phrases). По умолчанию имя связи на диаграмме не показывается. Для отображения имени следует в контекстном меню свободной части диаграммы выбрать пункт RelationShip Display и включить опцию Verb Phrase.
На логическом уровне между сущностями можно установить связи следующих типов:
1) идентифицирующая связь «один ко многим»;
2) связь «многие ко многим»;
3) неидентифицирующая связь «один ко многим».
В IDEF1X различают зависимые и независимые сущности. Тип сущности определяется её связью с другими сущностями.
Идентифицирующая
связь
(кнопка
на палитре инструментов) устанавливается
между независимой (родительский конец
связи) и зависимой (дочерний конец связи)
сущностями. Когда рисуется такая связь,
дочерняя сущность автоматически
преобразуется в зависимую и изображается
прямоугольником со скругленными углами
(рис.16).

Рис.16. Идентифицирующая связь между независимой и зависимой сущностями
При установлении идентифицирующей связи атрибуты первичного ключа родительской сущности автоматически переносятся в состав первичного ключа дочерней сущности. Эта операция называется миграцией атрибутов. В дочерней сущности новые атрибуты помечаются как внешний ключ – (FK).
Неидентифицирующая
связь
(кнопка
на палитре инструментов) служит для
связывания независимых сущностей. В
такой связи дочерняя сущность остается
независимой, а атрибуты первичного
ключа родительской сущности мигрируют
в состав неключевых атрибутов дочерней
сущности (рис.17).

Рис.17. Неидентифицирующая связь между независимыми сущностями
Редактирование свойств связи выполняется в диалоге RelationShip, который вызывается через пункт RelationShipProperties контекстного меню. Во вкладке General этого диалога можно задать мощность, имя и тип связи (рис.18).

Рис.18. Диалог RelationShips
Мощность связи (Cardinality) служит для обозначения отношения числа экземпляров родительской сущности к числу экземпляров дочерней. Различают четыре типа мощности:
общий случай, когда одному экземпляру родительской сущности соответствуют 0,1 или много экземпляров дочерней сущности; этот тип мощности не помечается каким-либо символом;
случай, когда одному экземпляру родительской сущности соответствуют 1 или много экземпляров дочерней сущности (исключено нулевое значение); этот тип мощности помечается символом Р;
случай, когда одному экземпляру родительской сущности соответствуют 0 или 1 экземпляр дочерней сущности (исключены множественные значения); этот тип мощности помечается символом Z;
случай точного соответствия, когда одному экземпляру родительской сущности соответствует заранее заданное число экземпляров дочерней сущности (исключены множественные значения); этот тип мощности помечается цифрой.
По умолчанию символ, обозначающий мощность связи, не пока-зывается на диаграмме. Для отображения имени следует в контекстном меню свободной части диаграммы выбрать пункт RelationShip Display и включить опцию Cardinality.
Имя связи (Verb Phrase) – фраза, характеризующая отношение между родительской и дочерней сущностями. Для связи «один ко многим» (идентифицирующая и неидентифицирующая) достаточно указать имя, характеризующее отношение от родительской к дочерней сущности (Parent-to-Child). Для связи «многие ко многим» следует указать имя, характеризующее отношение в двух направлениях (Parent-to-Child и Child-to- Parent).
Тип связи (идентифицирующая и неидентифицирующая) можно переопределить в окне диалога RelationShip. Для неидентифицирующей связи можно указать обязательность (Nulls) или необязательность (Nulls Allowed). Необязательная неиден-тифицирующая связь помечается прозрачным ромбом со стороны родительской сущности (рис.19).

Рис.19. Необязательная неидентифицирующая связь между независимыми сущностями
Во вкладке Definition можно дать более полное определение связи. Во вкладке Rolename можно задать имя роли и правила ссылочной целостности (рис.20).

Рис.20. Вкладка Rolename диалога RelationShips
Обязательным является применение имен ролей в случае, если:
два или более атрибута одной сущности имеют одинаковую область значений, но разный смысл;
использована рекурсивная связь.
Примеры применения имен ролей показаны на рис.21.

Рис.21. Имена ролей внешних ключей
Правила ссылочной целостности (referential integrity RI) – это логические конструкции, которые выражают правила использования данных при вставке, замене и удалении, они устанавливаются во вкладке RI Actions диалога RelationShip. Эти правила используются при генерации схемы базы данных. Более подробно с информацией по этому вопросу можно познакомиться в [1, с.134-137].
Связь
«многие ко многим»
может быть создана только на логическом
уровне модели с помощью кнопки
палитры инструментов. Такая связь должна
именоваться с двух сторон двумя фразами
(рис.22).

Рис.22. Связь «многие ко многим»
Нотация IDEF1X требует, чтобы на физическом уровне связь «многие ко многим» была преобразована. По умолчанию при переходе к физическому уровню ERwin автоматически не преобразует такую связь. Для автоматического преобразования связи следует, находясь на физическом уровне модели, включить опцию Many-to-Many RelationShip with Association Table во вкладке General пункта меню Model/Model Properties.
Принудительное преобразование связи «многие ко многим» выполняется через контекстное меню выбором пункта Create Association Table.
Преобразование связи включает создание новой таблицы и двух новых связей «один ко многим», при этом имя новой таблицы присваивается автоматически как Имя1_Имя2(рис.23).

Рис.23. Преобразование связи «многие ко многим» на физической уровне
Категориальная сущность – это дочерняя сущность в иерархии наследования. Иерархия наследования (или категорий) – особый тип объединения сущностей, имеющих общие по смыслу атрибуты. Из общих атрибутов формируется обобщенная сущность – родовой предок. Специфическая информация располагается в категориальных сущностях – потомках (рис.24).

Рис.24. Связь категориального типа
Для каждой категории можно указать дискриминатор – атрибут родового предка, по которому один потомок отличается от другого.
Иерархия категорий может быть полной, когда одному экземпляру родового предка обязательно соответствует экземпляр в каком-либо потомке, и неполной.
Для
создания категориальной связи следует
выбрать кнопку
в палитре инструментов и щелкнуть
сначала по родовому предку, а затем по
потомку. Чтобы установить вторую связь
в иерархии категории, следует сначала
щелкнуть по символу категории, затем
по второму потомку.
Для редактирования категории следует выбрать в контекстном меню пункт Subtype RelationShip Editor и в диалоге указать атрибут-дискриминатор категории (список Discriminator Attribute Choice), а также тип категории – полная/неполная (Complete/Incomplete).
Нормализация данных – это процесс проверки и реорганизации сущностей и атрибутов для удовлетворения требований к реляционной базе данных. Нормализация позволяет значительно сократить объем памяти для хранения информации и устранить аномалии в организации хранения данных. В результате проведения нормализации должна быть создана структура данных, при которой информация о каждом факте хранится только в одном месте. На практике ограничиваются приведением данных к третьей нормальной форме (3NF). Эта форма позволяет избежать аномалий обновления (UPDATE), вставки (INSERT) и удаления (DELETE).
ERwin не содержит полного алгоритма нормализации и не проводит ее автоматически. Однако его возможности облегчают создание нормализованной модели данных, например, запрет на присвоение неуникальных имен атрибутов в рамках модели (при установке опции Unique Name) облегчает соблюдение правила «каждый факт в одном месте».
