Построение моделей в ERwin. Логическая и физическая модели в erwin data modeler

Построение моделей в ERwin

Возможны две точки зрения на информационную модель и, соответственно, два уровня модели. Первый - логический уровень (точка зрения пользователя) означает прямое отображение фактов из реальной жизни. Например, люди, столы, отделы, собаки и компьютеры являются реальными объектами. Они именуются на естественном языке, с любыми разделителями слов (пробелы, запятые и т.д.). На физическом уровне модели рассматривается использование конкретной СУБД, определяются типы данных (например, целое или вещественное число), индексы для таблиц.

ERwin предоставляет возможности создавать и управлять этими двумя различными уровнями представления одной диаграммы (модели), равно как и иметь много вариантов отображения на каждом уровне. Термин "логический уровень" в ERwin соответствует концептуальной модели.

Этапы построения информационной модели:

· определение сущностей;

· определение зависимостей между сущностями;

· задание первичных и альтернативных ключей;

· определение атрибутов сущностей;

· приведение модели к требуемому уровню нормальной формы;

· переход к физическому описанию модели: назначение соответствий имя сущности - имя таблицы, атрибут сущности - атрибут таблицы;

· задание триггеров, процедур и ограничений;

· генерация базы данных.

Erwin создает визуальное представление (модель данных) для решаемой задачи. Это представление может использоваться для детального анализа, уточнения и распространения документации, необходимой в цикле разработки. Однако ERwin далеко не только инструмент для рисования. ERwin автоматически создает базу данных (таблицы, индексы, хранимые процедуры, триггеры для обеспечения ссылочной целостности и другие объекты, необходимые для управления данными).

Создание сущности.

Для внесения сущности в модель необходимо щелкнуть по кнопке сущности на панели инструментов (Erwin Toolbox) , затем - по тому месту на диаграмме, где необходимо расположить новую сущность. Щелкнув правой кнопкой мыши по сущности и выбрав из всплывающего меню пункт Entity Editor, можно вызвать диалог Entity Editor, в котором определяются имя, описание и комментарии сущности.

Каждая сущность должна быть полностью определена с помощью текстового описания в закладке Definition. Эти определения полезны как на логическом уровне, поскольку позволяют понять, что это за объект, так и на физическом уровне, поскольку их можно экспортировать как часть схемы и использовать в реальной БД (CREATE COMMENT on entity_name). Закладки Note, Note2, Note3, UDP (User Defined Properties - Свойства, определенные пользователем) служат для внесения дополнительных комментариев и определений к сущности.

В закладке Icon каждой сущности можно поставить в соответствие изображение, которое будет отображаться в режиме просмотра модели на уровне иконок и изображение, которое будет отображаться на всех других уровнях.

Закладка UDP диалога Entity Editor служит для определения свойств, определяемых пользователем (User - Defined Properties). При нажатии на кнопку этой закладки вызывается диалог User - Defined Property Editor (также вызывается из меню Edit/UDPs). В нем необходимо указать вид объекта, для которого заводится UDP (диаграмма в целом, сущность, атрибут и т.д.) и тип данных. Для внесения нового свойства следует щелкнуть в таблице по кнопке и внести имя, тип данных, значение по умолчанию и определение.

Создание атрибутов

Для описания атрибутов следует, щелкнув правой кнопкой по сущности, выбрать в появившемся меню пункт Attribute Editor. Появится диалог Attribute Editor.

Если щелкнуть по кнопке New, то в появившемся диалоге New Attribute можно указать имя атрибута, имя соответствующей ему в физической модели колонки и домен. Домен атрибута будет использоваться при определении типа колонки на уровне физической модели.

Для атрибутов первичного ключа в закладке General диалога Attribute Editor необходимо сделать пометку в окне выбора Primary Key.

Закладки Definition, Note и UDP несут те же функции, что и при определении сущности, но на уровне атрибутов.

Для большей наглядности диаграммы каждый атрибут можно связать с иконкой. Это можно сделать при помощи списка выбора Icon в закладке General.

Очень важно дать атрибуту правильное имя. Атрибуты должны именоваться в единственном числе и иметь четкое смысловое значение.

Согласно синтаксису IDEF1X, имя атрибута должно быть уникальным в рамках модели (а не только в рамках сущности!). По умолчанию при попытке внесения уже существующего имени атрибута ERwin переименовывает его. Например, если атрибут Комментарий уже существует в модели, другой атрибут (в другой сущности) будет назван Комментарий/2, затем Комментарий/3 и т.д.

При переносе атрибутов внутри и между сущностями можно воспользоваться техникой drag&drop, выбрав кнопку в палитре инструментов.

Создание связи.

Для создания новой связи следует выбрать идентифицирующую или неидентифицирующую связь в палитре инструментов (ERwin Toolbox), щелкнуть сначала по родительской, а затем по дочерней сущности.

В палитре инструментов кнопка соответствует идентифицирующей связи, кнопка связи многие-ко-многим и кнопка соответствует неидентифицирующей связи. Для редактирования свойств связи следует щелкнуть правой кнопкой мыши по связи и выбрать на контекстном меню пункт Relationship Editor.

В закладке General появившегося диалога можно задать мощность, имя и тип связи.

Мощность связи (Cardinality) - служит для обозначения отношения числа экземпляров родительской сущности к числу экземпляров дочерней.

Различают четыре типа мощности:

общий случай, когда одному экземпляру родительской сущности соответствуют 0, 1 или много экземпляров дочерней сущности, не помечается каким-либо символом;

символом P помечается случай, когда одному экземпляру родительской сущности соответствуют 1 или много экземпляров дочерней сущности (исключено нулевое значение);

символом Z помечается случай, когда одному экземпляру родительской сущности соответствуют 0 или 1 экземпляр дочерней сущности (исключены множественные значения);

цифрой помечается случай, когда одному экземпляру родительской сущности соответствует заранее заданное число экземпляров дочерней сущности.

По умолчанию символ, обозначающий мощность связи, не показывается на диаграмме. Для отображения имени следует в контекстном меню, которое появляется, если щелкнуть правой кнопкой мыши по любому месту диаграммы, не занятому объектами модели, выбрать пункт Display Options/Relationship и затем включить опцию Cardinality.



Тип связи (идентифицирующая/неидентифицирующая).

В IDEF1X различают зависимые и независимые сущности. Тип сущности определяется ее связью с другими сущностями. Идентифицирующая связь устанавливается между независимой (родительский конец связи) и зависимой (дочерний конец связи) сущностями. Когда рисуется идентифицирующая связь, ERwin автоматически преобразует дочернюю связь в зависимую. Зависимая сущность изображается прямоугольником со скругленными углами.

Экземпляр зависимой сущности определяется только через отношение к родительской сущности. При установлении идентифицирующей связи атрибуты первичного ключа родительской сущности автоматически переносятся в состав первичного ключа дочерней сущности. Эта операция дополнения атрибутов дочерней сущности при создании связи называется миграцией атрибутов. В дочерней сущности новые атрибуты помечаются как внешние ключи - (FK).

При установлении неидентифицирующей связи дочерняя сущность остается независимой, а атрибуты первичного ключа родительской сущности мигрируют в состав неключевых компонентов дочерней. Неидентифицирующая связь служит для связи независимых сущностей.

Идентифицирующая связь показывается на диаграмме сплошной линией с жирной точкой на дочернем конце связи, неидентифицирующая - пунктирной.

Для неидентифицирующей связи можно указать обязательность (Nulls в закладке General диалога Relationship Editor). В случае обязательной связи (No Nulls) при генерации схемы БД атрибут внешнего ключа получит признак NOT NULL, несмотря на то, что внешний ключ не войдет в состав первичного ключа дочерней сущности. В случае необязательной связи (Nulls Allowed) внешний ключ может принимать значение NULL. Необязательная неидентифицирующая связь помечается прозрачным ромбом со стороны родительской сущности

Имя связи (Verb Phrase) - фраза, характеризующая отношение между родительской и дочерней сущностями. Для связи один-ко-многим идентифицирующей или неидентифицирующей достаточно указать имя, характеризующей отношение от родительской к дочерней сущности (Parent-to-Child). Для связи многие-ко-многим следует указывать имена как Parent-to-Child, так и Child-to-Parent. Для отображения имени следует в контекстном меню, которое появляется, если щелкнуть правой кнопкой мыши по любому месту диаграммы, не занятому объектами модели, выбрать пункт Display Options/Relationship и затем включить опцию Verb Phrase.

Имя роли или функциональное имя (Rolename) - это синоним атрибута внешнего ключа, который показывает, какую роль играет атрибут в дочерней сущности. Задать имя роли можно в закладке Rolename/RI Actions диалога Relationship Editor.

Рис.1. Имена ролей внешних ключей

В примере, приведенном на рис. 1, в сущности Сотрудник внешний ключ Номер отдела имеет имя роли "Где работает", которое показывает, какую роль играет этот атрибут в сущности. По умолчанию в списке атрибутов показывается только имя роли. Для отображения полного имени атрибута (как функционального имени, так и имени роли) следует в контекстном меню, которое появляется, если щелкнуть правой кнопкой мыши по любому месту диаграммы, не занятому объектами модели, выбрать пункт Display Options/Entities и затем включить опцию Rolename/Attribute. Полное имя показывается как функциональное имя и базовое имя, разделенные точкой (рис. 1).

Обязательным является применение имен ролей в том случае, когда два или более атрибутов одной сущности определены по одной и той же области, т.е. они имеют одну и ту же область значений, но разный смысл.

Рис.2. Случай обязательности имен ролей

На рис.2 сущность Продажа валюты содержит информацию об акте обмена валюты, в котором участвуют две валюты - проданная и купленная. Информация о валютах содержится в сущности Валюта. Следовательно, сущности Продажа валюты и Валюта должны быть связаны дважды, и первичный ключ - Номер валюты должен дважды мигрировать в сущность Валюта в качестве внешнего ключа. Необходимо различать эти атрибуты, которые содержат информацию о номере проданной и купленной валюты (имеют разный смысл), но ссылаются на одну и ту же сущность Валюта (имеют общую область значений). В примере на рис.2 атрибуты получили имена ролей Проданная и Купленная.

Другим примером обязательного применения имен ролей являются рекурсивные связи, когда одна и та же сущность является и родительской и дочерней одновременно.

Правила ссылочной целостности (Referential Integrity (RI)) - логические конструкции, которые выражают бизнес-правила использования данных и представляют собой правила вставки, замены и удаления. Задать правила ссылочной целостности можно в закладке Rolename/RI Actions диалога Relationship Editor.

При генерации схемы БД на основе опций логической модели будут сгенерированы правила декларативной ссылочной целостности, которые должны быть предписаны для каждой связи, и триггеры, обеспечивающие ссылочную целостность.

Рис.3. Миграция имен ролей

На рис.3 существует идентифицирующая связь между сущностями Команда и Игрок. Что будет, если удалить команду? Экземпляр сущности Игрок не может существовать без команды (атрибут первичного ключа В какой команде играет. Номер команды не может принимать значение NULL), следовательно нужно либо запретить удаление команды, пока в ней числится хотя бы один игрок, либо удалять вместе с командой и всех ее игроков. Такие правила удаления (Parent Delete) называются Parent Restrict (ограничение) и Parent Cascade (каскад). Сущности Игрок и Гол, в свою очередь, тоже связаны идентифицирующей связью и, если на удаление игрока наложено правило каскадного удаления всех записей о его голах, то при удалении команды будут удалены все игроки команды и все голы, забитые этими игроками.

Связь многие-ко-многим возможна только на уровне логической модели данных. Такая связь обозначается сплошной линией с двумя точками на концах. Для внесения связи следует сначала нажать на кнопку в палитре инструментов (ERwin Toolbox), а затем по очереди щелкнуть по обеим связанным сущностям.

Связь многие-ко-многим должна именоваться (Verb Phrase) двумя фразами - в обе стороны. Это облегчает чтение диаграммы.

Создание ключей.

Каждый экземпляр сущности должен быть уникален и отличаться от других атрибутов.

Первичный ключ (primary key) - это атрибут или группа атрибутов, однозначно идентифицирующие экземпляр сущности. Атрибуты первичного ключа на диаграмме не требуют специального обозначения - это те атрибуты, которые находятся в списке атрибутов выше горизонтальной линии. При внесении нового атрибута в диалоге Attribute Editor для того, чтобы сделать его атрибутом первичного ключа, нужно включить флажок Primary Key в нижней части закладки General. На диаграмме ключевой атрибут можно внести в состав первичного ключа, воспользовавшись режимом переноса атрибутов (кнопка в палитре инструментов).

В одной сущности может оказаться несколько атрибутов или наборов атрибутов, претендующих на роль первичного ключа. Такие претенденты называются потенциальными ключами (candidate key).

Ключи могут быть сложными, т.е. содержащими несколько атрибутов. Сложные первичные ключи не требуют специального обозначения - это список атрибутов выше горизонтальной линии. При выборе первичного ключа предпочтение должно отдаваться более простым ключам, т.е. ключам, содержащим меньшее количество атрибутов.

Многие сущности имеют только один потенциальный ключ. Такой ключ становится первичным. Некоторые сущности могут иметь более одного возможного ключа. Тогда один из них становится первичным, а остальные - альтернативными ключами.

Альтернативный ключ (Alternative Key) - это потенциальный ключ, не ставший первичным.

Каждому ключу соответствует индекс, имя которого также присваивается автоматически. Имена ключа и индекса при желании можно изменить вручную.

На диаграмме атрибуты альтернативных ключей обозначаются как (Akn.m.), где n - порядковый номер ключа, m - порядковый номер атрибута в ключе. Когда альтернативный ключ содержит несколько атрибутов, (Akn.m.) ставится после каждого.

Рис.4. Сущность "Сотрудник" с отображением ключей


Внешние ключи (Foreign Key) создаются автоматически, когда связь соединяет сущности: связи образуют ссылку на атрибуты первичного ключа в дочерней сущности и эти атрибуты образуют внешний ключ в дочерней сущности (миграция ключа). Атрибуты внешнего ключа обозначаются символом (FK) после своего имени (рис.4). Атрибуты внешнего ключа Где работает.Номер отдела ("Где работает" - имя роли) сущности Сотрудник является атрибутом первичного ключа (PK) в сущности Отдел.

Зависимая сущность может иметь один и тот же ключ из нескольких родительских сущностей. Сущность может также получить один и тот же внешний ключ несколько раз от одного и того же родителя через несколько разных связей. Когда ERwin обнаруживает одно из этих событий, он распознает, что два атрибута одинаковы, и помещает атрибуты внешнего ключа в зависимой сущности только один раз. Это комбинирование или объединение идентичных атрибутов называется унификацией.

Есть случаи, когда унификация нежелательна. Например, когда два атрибута имеют одинаковые имена, но на самом деле они отличаются по смыслу, и необходимо, что бы это отличие отражалось в диаграмме. В этом случае необходимо использовать имена ролей внешнего ключа (рис.2).

Домены.

Домен можно определить как совокупность значений, из которых берутся значения атрибутов. Каждый атрибут может быть определен только на одном домене, но на каждом домене может быть определено множество атрибутов. В понятие домена входит не только тип данных, но и область значений данных. Например, домен "Возраст" можно определить как положительное целое число и определить атрибут Возраст сотрудника как принадлежащий этому домену.

В ERwin домен может быть определен только один раз и использоваться как в логической, так и в физической модели.

На логическом уровне домены можно описать без конкретных физических свойств. На физическом уровне они получают специфические свойства, которые можно изменить вручную. Так, домен "Возраст" может иметь на логическом уровне тип Number, на физическом уровне домену будет присвоен тип INTEGER.

Для создания домена в логической модели служит диалог Domain Dictionary Editor. Его можно вызвать из меню Edit/Domain Dictionary по кнопке, расположенной в верхней левой части закладки General диалога Attribute Editor. Для создания нового домена в диалоге Domain Dictionary Editor следует:

· щелкнуть по кнопке New. Появляется диалог New Domain;

· выбрать родительский домен из списка Domain Parent. Новый домен можно создать на основе уже созданного пользователем домена, либо на основе изначально существующего. По умолчанию Erwin имеет четыре предопределенных доменов (String, Number, Blob, Datetime). Новый домен наследует все свойства родительского домена. Эти свойства в дальнейшем можно переопределить;

· набрать имя домена в поле Logical Name. Можно также указать имя домена на физическом уровне в поле Physical Name. Если физическое имя не указано, по умолчанию оно принимает значение логического имени;

· щелкнуть по кнопке OK;

В диалоге Domain Dictionary Editor можно связать домен с иконкой, с которой он будет отображаться в списке доменов (Domain Icon), иконкой, с которой атрибут, определенный на домене будет отображаться в модели (Icon Inherited by Attribute).

Каждый домен может быть описан в закладке Definition, снабжен комментарием в закладке Note или свойством определенным пользователем в закладке UDP.

ERwin имеет специальный инструмент, который значительно облегчает создание новых атрибутов в модели, используя описание доменов, - Independent Attribute Browser. Этот диалог вызывается (и скрывается) по горячему ключу CTRL+B. С его помощью можно выбрать в списке домен и по методу drag&drop перенести его в какую-либо сущность. В ней будет создан новый атрибут с именем, которое следует задать в окне Name Inherited by Attribute диалога Domain Dictionary Editor. Если значение поля не задано, по умолчанию принимается имя домена.

На физическом уровне диалог Domain Dictionary Editor позволяет редактировать физические свойства домена. Имя этой закладки зависит от выбранного сервера БД. На ней можно задать конкретный тип данных, соответствующих домену, правила присвоения NULL - значений, правила валидации (правила проверки допустимых значений) и задания значения по умолчанию. Правила валидации и значения по умолчанию должны быть предварительно описаны и именованы. Для вызова диалогов редактирования правил валидации и значений по умолчанию служат кнопки справа от соответствующего списка выбора (Valid и Default).

Функции других закладок диалога Domain Dictionary Editor:

General. Задание родительского домена (Domain Parent) и имени, присваиваемого колонке при ее создании с помощью Independent Column Browser. С помощью опции Phisical Only домен можно определить только на уровне физической модели.

Comment. Внесение комментария к атрибуту.

UDP . Свойства, определяемые пользователем.

Visual Basic - PowerBuilder. Задание специальных свойств домена для кодогенерации клиентского приложения.

Задание на выполнение.

На основе ранее созданной функциональной модели и описания предметной области создать логическую модель с использованием пакета ERwin.

Лабораторная работа № 7.
Основы работы в Erwin. Подготовка физической модели данных для генерации БД

1. Цель работы: освоение принципов подготовки физической модели данных для генерации системного каталога БД.

Лабораторная работа № 5

Цель работы:

Задание:

Последовательность выполнения работы

Знакомство с пользовательским интерфейсом

· Загрузите программу Erwin.

· В появившемся диалоговом окне установите переключатель Crеаte а New Model. На экране появится диалог Create Model – Select Template, гденеобходимо выбрать уровень моделирования.

Erwin имеет два уровня моделирования: логический и физический. На логическом уровне данные представляются так, как они выглядят в реальном мире. Объектами логического уровня являются сущности и атрибуты.

На физическом уровне модель зависит от конкретной реализации базы данных, выбираемой пользователем. При переходе модели на физический уровень производится трансформация сущностей в таблицы, а атрибутов в поля, поэтому все имена и описания физической модели должны соответствовать принятым для выбранной СУБД соглашениям.

· Установите переключательLogical/Physical для создания модели с логическим и физическим уровнями.

· В полях DataBase и Version указывается тип и версия сервера, для которого создается модель. Выберите в списке Access, 2000. Нажмите кнопку ОК .

· На экране появится основное окно программы.

В верхней части окна находится титульная строка, в которой указано название программы, наименование модели, наименование подмножества (Subject Area) и хранимого отображения (Stored Display). Основную часть пространства программы занимает рабочая область, в которой создается ER-диаграмма.

Для переключения между логическим и физическим уровнями на панели инструментов имеется список (рис 1.1).

Помимо этого списка, на панели инструментов имеются кнопки (см. табл. 1.1).

Таблица 1.1.

Кнопки, расположенные на панели инструментов программы Erwin

Кнопка Назначение
Создание, открытие, сохранение и печать модели
Вызов диалога Report Browser для генерации отчетов
Изменение уровня просмотра модели: уровень сущностей, уровень атрибутов, уровень определений
Изменение масштаба просмотра модели
Генерация схемы БД, выравнивание схемы с моделью и выбор сервера (доступны только на уровне физической модели)
Переключение между областями модели Subject Area


Для непосредственной работы с элементами модели в программе имеется палитра инструментов (Erwin Toolbox), представляющая собой «плавающее окошко» (рис. 1.2). При необходимости палитру инструментов можно убирать с экрана и вызывать нажатием комбинации клавиш «CTRL-T».

Рис. 1.2. Палитра инструментов на логическом уровне

Внесение в модель сущностей

На данном этапе необходимо внести в модель следующие сущности, выявленные в результате анализа предметной области (поставка товара в соответствии с договорами): покупатель, договор, накладная, товар, склад.

· Выберите на панели инструментов (ERwin Toolbox) кнопку Сущность ,щелкнув по ней указателем мыши. Затем щелкните мышкой по тому месту на диаграмме, где необходимо расположить новую сущность. На поле диаграммы появится прямоугольник, изображающий новую сущность, с автоматически сгенерированным именем «Е/1».

· Введите с клавиатуры имя сущности «Покупатель » и нажмите Enter .

· Точно таким же образом вставьте в диаграмму еще четыре сущности: договор, накладная, товар, склад.

· Щелкнув правой кнопкой мыши по сущности и выбрав из контекстного меню пункт Entity Properties , можно вызвать редактор сущностей Entities (рис. 1.6), который позволяет изменять свойства выбранной сущности. Редактор сущностей также можно вызвать через главное меню: Model | Entities.



Рис. 1.6. Редактор сущности

В верхней части окна редактора находится список всех сущностей, имеющихся на диаграмме. С его помощью можно выбрать сущность, свойства которой необходимо посмотреть или изменить. По умолчанию, выбранной является выделенная на диаграмме сущность, по которой щелкнули мышью. Далее имеется поле Name, в котором высвечивается имя сущности. Имя можно редактировать.

Ниже в окне редактора находится ряд закладок:

Definition (определение) – на этой странице вводится определение сущности.

Note, Note2, Note3 (примечание) – используются для ввода произвольного текста, связанного с сущностью, например, образцы данных и запросы.

UDP – определяемые пользователем свойства.

Icon (иконка) – для наглядности каждой сущности может быть присвоена иконка, которая выводится рядом с ее названием.

· Для каждой сущности введите определение Definition.

Ключевые группы

· Вызовите редактор ключевых групп Key Groups, щелкнув правой кнопкой мыши по сущности Покупатель и выбрав из контекстного меню пункт Key Groups . Редактор ключевых групп также можно вызвать через главное меню: Model | Key Groups.

Редактор ключевых групп содержит элементы управления:

Entity – поле с выпадающим списком, в котором следует выбрать сущность для редактирования.

Окно с перечнем ключевых групп. Каждая группа представлена отдельной строкой, включающей в себя имя (Key Group), тип (Type) и определение (Definition).

Кроме того, диалоговое окно редактора ключевых групп содержит следующие закладки:

ü Members (члены). Задаются члены ключевых групп и их порядок следования в группе.

ü General (общие установки). Переключатели, позволяющие задавать тип ключевой группы. Для первичного и внешнего ключа эти группы недоступны.

ü Definition (определение). Произвольная текстовая информация, относящаяся к выбранной ключевой группе.

ü Note (примечание). Примечание к выбранной группе.

ü UDP (пользовательские свойства).

· Нажмите кнопку New .

· В окне New Key Group в поле Key Group введите имя ключевой группы – ИНН . В поле Index выводится генерируемое программой Erwin имя индекса. Оставьте его без изменений.

· Переключатель Key Group Type задает тип создаваемого ключа. Это может быть альтернативный ключ (Alternate Key) или инверсный вход (Inversion Entry). Выберите Alternate Key и нажмите ОК . Вновь введенный альтернативный ключ появится в перечне ключей.



Перейдите на закладку Members . Новый ключ пока не содержит никаких атрибутов, поэтому правый список Key Group Members (члены ключевой группы) пуст. Выберите в левом списке атрибут ИНН и переместите его в правый список при помощи кнопки со стрелкой (см. рис. 1.8).

Рис. 1.8. Редактор ключевых групп

· Таким же образом создайте ключевые группы для инверсных входов, приведенных в табл. 1.3.

Лабораторная работа № 6

Задание правил декларативной ссылочной целостности

· Находясь на логическом уровне модели данных, выделите связь «заключает» между сущностями Покупатель и Договор, щелкнув по ней указателем мыши. Затем нажмите правую кнопку мыши и в контекстном меню выберите пункт Relationship Properties (редактор связей).

· В окне редактора связей Relationship перейдите на вкладку RI Actions . Ознакомьтесь с правилами ссылочной целостности для связи «Покупатель – Договор», присвоенными по умолчанию. Данные установки запрещают вставку и изменение экземпляра дочерней сущности, а также удаление и изменение родительской сущности. Это означает, что не допускается удаление или изменение покупателя, если в базе данных имеются заключенные с ним договоры, а также ввод договора без указания покупателя или со ссылкой на несуществующего покупателя. Тем самым мы выполнили условие, по которому договор может существовать только для конкретного покупателя.

· Проанализируйте установленные правила ссылочной целостности для всех остальных связей.

Правила, присваиваемые связи по умолчанию, можно изменить, выбрав нужное значение из выпадающего списка.

Нормализация данных

Из модели видно, что в сущности Покупатель присутствует множественный атрибут ТЕЛ. Покупатель может иметь несколько телефонных номеров, что является нарушением первой нормальной формы, согласно которой все значения атрибутов должны быть атомарными. Поэтому необходимо выделить атрибут ТЕЛ в отдельную сущность.

· Создайте сущность Телефон, содержащую следующие атрибуты: КОД_ТЕЛ (первичный ключ, тип – number) и ТЕЛ (тип – string).

· Свяжите сущности Покупатель и Телефон идентифицирующей связью. Установите мощность связи – One or More (P) и введите имя связи – имеет.

Выбор сервера

· Выполните команду Database | Choose Database .

· В диалоговом окне Erwin/ERX – Target Server необходимо задать тип сервера – Access и его версию – 2000 . Кроме того, здесь указывается используемый по умолчанию тип данных и условие NULL для вновь созданных колонок. Некоторые опции данного диалогового окна зависят от выбранного типа сервера.

· После выбора сервера нажмите кнопку ОК .

Денормализация данных

На модели имеются две связи типа «многие-ко-многим»: Товар – Договор и Товар – Накладная, которые должны быть разрешены на физическом уровне. Результат разрешения данных связей представлен в табл. 2.1.

Таблица 2.1.

Результат разрешения связей «многие-ко-многим»

Разрешение связей «многие-ко-многим» осуществляется автоматически при переходе на физический уровень, либо с помощью специального мастера Many Relationship Transform Wizard .

· Для вызова данного мастера выделите связь «Товар – Договор», щелкнув по ней указателем мыши. Затем нажмите правую кнопку мыши и в контекстном меню выберите пункт Create Association Table (создать ассоциативную таблицу). На экране появится первый диалог мастера, содержащий текст о его назначении.

· Введите в поле Table Name (имя таблицы) – Поставка_План . В поле Table Comment (комментарии к таблице) введите текст: Сведения о поставках товара по договору.

· На модели появилась новая таблица Поставка_План, связанная идентифицирующей связью с таблицами Товар и Договор.

· Новую таблицу необходимо дополнить тремя колонками (см. табл. 2.1). Для этого выделите таблицу Поставка_План , щелкнув по ней указателем мыши. Затем нажмите правую кнопку мыши и в контекстном меню выберите пункт Columns (редактор колонок). Работа с данным редактором аналогична работе с редактором атрибутов.

· Самостоятельно введите три новых колонки в соответствии с табл. 2.1.

· Рассмотренным выше способом (с использованием мастера) преобразуйте связь «Товар – Накладная» и дополните полученную ассоциативную таблицу Отгрузка двумя колонками согласно табл. 2.1.

Задание правил валидации

Задание списка допустимых значений

В соответствии с рассматриваемой предметной областью для поля СТАВКА_НДС таблицы Товар зададим список допустимых значений: 0, 10 и 18 %.

Columns.

· В окне редактора в поле Column – СТАВКА_НДС .

· Перейдите на закладку выбранной СУБД – Access .

· Valid .

· В диалоге Validation Rules щелкните по кнопке New .

· В диалоге New Validation Rule вполе Logical введите имя правила – Проверка ставки НДС . Нажмите кнопку ОК .

· Перейдите на закладку General . В группе Type установите опцию Valid Value List .

· В поле Valid Value в первой строке введите 0. Во вторую и третью строки введите значения: 10 и 18.

· Проверьте, чтобы в верхней части окна редактора Validation Rules появилась строчка: Проверка ставки НДС (Validation Name) IN (0, 10, 18) (Validation Rule).

· Нажмите ОК. В окне редактора Columns на закладке Access в поле Valid появилось наименование созданного правила – «Проверка ставки НДС».

Задание значений, присваиваемых по умолчанию

Создадим правило, согласно которому в поле ДАТА_ДОГ таблицы Договор будет по умолчанию подставляться значение текущей даты.

· Вызовите контекстное меню таблицы Договор и выберите пункт Columns.

· В окне редактора в поле Column выберите колонку, для которой будет задаваться правило– ДАТА_ДОГ .

· На закладке Access щелкните по кнопке, расположенной справа от раскрывающегося списка Default .

· В диалоговом окне Default/Initial Values щелкните по кнопке New .

· В диалоге New Default Value вполе Logical введите имя правила – Текущая дата . Нажмите кнопку ОК .

· На закладке Access в поле Server Value – Access Default введите Date() (функцию, получающую значение текущей даты).

· Нажмите ОК. В окне редактора Columns на закладке Access в поле Default появилось наименование созданного правила – «Текущая дата».

· Установите это же правило для поля ДАТА_ОТГР таблицы Накладная. Для этого в окне редактора колонок Column выделите поле ДАТА_ОТГР и на закладке Access в поле Default из раскрывающегося списка выберитеправилоТекущая дата.

Задание правил проверки вводимых значений

Создадим правило проверки вводимых значений для поля ЦЕНА таблицы Товар, согласно которому данное поле не может иметь значения, меньшие 0.

· Вызовите контекстное меню таблицы Товар и выберите пункт Columns.

· В окне редактора в поле Column выберите колонку, для которой будет задаваться правило– ЦЕНА .

· На закладке Access щелкните по кнопке, расположенной справа от раскрывающегося списка Valid .

· В диалоге Validation Rules щелкните по кнопке New .

· В диалоге New Validation Rule вполе Logical введите имя правила – Проверка цены . Нажмите кнопку ОК .

· Перейдите на закладку General . В группе Type установите опцию Min/Max .

· В поле Min введите 1. Кроме нижней границы диапазона значений здесь также можно задать и верхнюю границу (Max ).

· В верхней части окна редактора Validation Rules в списке правил валидации добавилось вновь созданное: Проверка цены >=1.

· Нажмите кнопку ОК .

Лабораторная работа № 7

Расчет размера базы данных

Цель работы:

Освоить методику расчета размера базы данных, реализованную в Erwin.

Лабораторная работа № 8

Создание отчетов в Erwin

Цель работы:

· изучение видов отчетов;

· освоение процедуры создания отчетов

Лабораторная работа № 5

Основы работы в Erwin. Построение логической модели данных

Цель работы:

· овладение навыками работы в Erwin;

· построение логической модели заданной предметной области.

Задание:

Построить логическую информационную модель поставки товаров в соответствии с договорами средствами Erwin.

Соглашения

Примем некоторые соглашения для краткости последующего изложения:

· Щелчок - нажатие на левую кнопку мыши.

· Правый щелчок - нажатие на правую кнопку мыши.

· Двойной щелчок - два последовательных нажатия на кнопку мыши

· Выбрать - подвести курсор к соответствующему объекту (элементу диаграммы, пункту меню, пиктограмме) и щелкнуть левой кнопкой мыши.

· Перетащить- выбрать объект и, не отпуская кнопку мыши, переместить курсор в другое положение.

· Запись типа File/Open означает, что нужно выбрать пункт меню File, a затем из раскрывшегося меню - пункт Open.

Рабочий стол ERwin

На рис. 1 представлен рабочий стол программного продукта ERwin фирмы Logic Works.

Рис.1- Рабочий стол Erwin.

На рисунке 1 цифрами обозначено:

1- главное меню;

2- панель инструментов;

3- набор специальных инструментов;

4- панель шрифтов и цветов;

5- поле диаграммы.

Рассмотрим подробнее составные части рабочего стола.

Главное меню содержит команды общего назначения. Заметим, что большинство этих команд дублируются либо пиктограммами панели инструментов, либо пунктами меню, всплывающего по правому щелчку мыши. Поэтому остановимся сейчас на командах, относящихся к общему виду рабочего стола. Пункт Window имеет следующие подпункты:

Toolbar - панель инструментов;

Font & Color Toolbar - панель шрифтов и цветов;

Statusbar - строка состояния;

ERwin Toolbox - набор специальных инструментов.

Если какой-либо из перечисленных пунктов не отмечен, то соответствующий элемент не отображается на рабочем столе. Пункты Option / Show Display Menu и Option / Show Editor Menu добавляют в главное меню дополнительные 1гуш;ты: Display и Editor.

Панель инструментов содержит следующие группы пиктограмм:

Работа с файлами:

Создать новую диаграмму;

Открыть существующую диаграмму;

Отправить диаграмму на печать.

Заметим, что эти пиктограммы дублируются командами пункта главного меню File.



Уровни представления модели:

Уровень сущностей;

Уровень атрибутов;

Уровень описания;

Физический уровень (если нажата эта пиктограмма, то при демонстрации на уровне атрибутов указываются их типы).

Эти инструменты дублируются пунктом меню Display. Он содержит дополнительные уровни представления: Primary Key Level - демонстрируются только первичные ключи, Physical Order Level - атрибуты не делятся на ключевые и неключевые.

Масштабирование:

Уменьшить;

Увеличить;

Без увеличения;

Наиболее мелкий (дальнейшее уменьшение приведет к нечитаемости схемы);

Просмотреть часть (после выбора этого инструмента выделите на рабочем поле фрагмент, который нужно просмотреть).

Все действия этой группы дублируются пунктом Display/ /Zoom.

Работа с сервером:

Сгенерировать скрипт для сервера;

Подключиться к серверу;

Выбрать сервер.

Набор специальных инструментов включает всебя пиктограммы, необходимые для графического построения схемы данных. Он состоит из следующих инструментов:

Выбор объекта;

Манипулирование атрибутами;

Независимая сущность;

Зависимая сущность;

Полное разбиение на категории;

Неполное разбиение на категории;

Идентифицирующая связь «один ко многим»;

Неидентицирующая связь «одой ко многим»;

Связь «многие ко многим»;

Текстовая метка.

КОНЦЕПТУАЛЬНОЕ ПРОЕКТИРОВАНИЕ

Создание сущностей

Сущности на концептуальной схеме могут быть зависимыми и независимыми. На диаграмме любая сущность изображается прямоугольником. Над ним располагается имя сущности. Прямоугольник разбит на две части: верхняя - область первичного ключа; нижняя - область остальных атрибутов. При построении сущности прямоугольник первоначально пустой, а имя имеет вид E/n (например, Е/1, Е/2 и т.д.).

Чтобы построить независимую сущность, нужно щелкнуть на соответствующей пиктограмме из набора специальных инструментов, а затем щелкнуть на поле диаграммы в том месте, где должна располагаться создаваемая сущность. Для построения зависимой сущности нужно выбрать инструмент «Зависимая сущность» и щелкнуть на поле диаграммы. Заметим, что прямоугольник, изображающий такую сущность, имеет скругленные углы. При построении диаграммы практически нет необходимости непосредственно задавать зависимые сущности, так как ERwin преобразует обычные сущности в зависимые при организации связей или разбиении на категории.

Если проектировщика не устраивает положение сущности на поле, то нужно выбрать пиктограмму «Указать на объект» из набора специальных инструментов и перетащить сущность на новое место. Для удаления выделенной сущности воспользуйтесь клавишей Delete на клавиатуре. Изменить размеры прямоугольника, изображающего сущность, можно, выбрав пункт главного меню Option / Entity Size. Пункт меню Option / Layout применяется для упорядочения положения сущностей на поле.

Теперь определим имя сущности и характерные для нее атрибуты. Для этого служит пункт Entity-Attribute из меню, всплывающего по правому щелчку мыши. В поле Entity Name открывшегося редактора вводится название сущности. Используя переключатель, можно изменить зависимость сущности. Поле редактирования Primary Key предназначено для ввода наименований атрибутов, составляющих первичный ключ. В поле Non-Key Attributes вводятся неключевые атрибуты. Заметим, что в обоих случаях для отделения атрибутов друг от друга используется клавиша Enter на клавиатуре. На рис. 2 приведен пример независимой сущности.

Рис. 2 - Независимая сущность

Для добавления расширенного описания сущности (Definition) и общего просмотра всех сущностей воспользуйтесь пунктом Report / Entity Browser.

В ERwin существует возможность манипулирования отдельными атрибутами. Для этого выберите пиктограмму «Манипулирование атрибутами». В таком режиме можно:

· Удалить атрибут. Для этого выделите отдельный атрибут и нажмите Delete на клавиатуре.

· Переместить атрибут внутри сущности. Для этого выделите атрибут и, не отпуская клавиши мыши, переместите его на нужное место. Заметим, что таким образом можно перемещать атрибуты как внутри ключевой и неключевой областей, так и между ними.

· Переместить атрибуты между сущностями. Методика этого действия аналогична предыдущей. Если при перемещении атрибута нажата клавиша Ctrl, то он скопируетеся в другую сущность.

Построение связей

Рассмотрим построение связей типа «один ко многим». Для этого выбрать из набора специальных инструментов соответствующую пиктограмму, затем щелкнуть последовательно на родителе и потомке. Идентифицирующая связь изображается сплошной линией и черной точкой у прямоугольника, отображающего потомка. Такая связь характеризуется перенесением первичного ключа родителя в состав идентификатора потомка. На рис. 3 изображена идентифицирующая связь «один ко многим».

Рис.3. – Идентифицирующая связь

Неидентифицирующая связь строится аналогичным образом. Она изображается пунктирной линией и ромбом у прямоугольника, отображающего родителя. Такой ромб означает, что существование родителя необязательно, т.е. поле внешнего ключа может иметь значение nul. Построение неидентифицирущей связи в ERwin характеризуется перенесением первичного ключа родителя в состав неключевых атрибутов потомка. На рис.4 приведена неидентифицирующая связь.

Рис. 4. - Неидентифицирующая связь

Как уже отмечалось, проектирование связи «многие ко многим» приводит к возникновению новой сущности. Пример построения связи этого типа между сущностями first и second приведен на рис. 5.

Рис. 5. - Связь вида "многие ко многим"

Просмотреть и изменить описание связи можно, используя пункт Rela­tionship из меню, всплывающего по правому щелчку мыши на связи. В открывшемся окне указываются:

· Название связи (поле Verb Phrase).

· Тип связи (Relationship Type): идентифицирующая (Identifying) или неидентифицирующая (Non-Identifying).

· Кардинальность связи (Cardinality). ERwin позволяет задать нижеприведенные виды связей.

1. Ноль, один или более. Наличие такой кардинальности не вносит дополнительных обозначений в диаграмму.

2. Один или более. Подобные связи обозначаются буквой Р около прямоугольника, отображающего потомка.

3. Ноль или один. Кардинальность обозначается буквой Z.

4. Заданная. В этом случае поле Exactly должно содержать число, характеризующее кардинальность. Такая связь обозначается числом у прямоугольника, отображающего потомка.

· Возможность существования Null - значений (переключатель Nulls).

· Роль внешнего ключа. В этом случае название роли записывается в поле Role Name. При этом поле Foreign Key редактора содержит конструкцию <имя роли>.<имя первичного ключа родителя>.

Если на диаграмме не отображены имена или кардинальности связи, то необходимо поставить указатели напротив пунктов Display / Verb Phrase и Dis­play /Cardinality.

Для удаления связи нужно выбрать пиктограмму «Указать на объект», щелкнуть на соответствующей связи и нажать Delete на клавиатуре.

Разбиение сущностей на категории в ERwin показано на аналогично рис. 6.

Рис. 6 - Полное разбиение на категории

Для того чтобы построить категории, нужно выполнить следующие действия:

Полностью описать главную сущность;

Построить сущности-категории;

Выбрать пиктограмму полного или неполного разбиения на категории из набора специальных инструментов;

Щелкнуть на главной сущности;

Щелкнуть на одной из категорий;

Для построения каждой последующей категории щелкнуть на знаке категории, а затем на соответствующей сущности.

Для удаления связи одной из категорий с главной сущностью нужно выделить соответствующую ветвь и нажать Delete на клавиатуре. Если необходимо удалить целиком разбиение на категории, укажите на знак категории и нажмите Delete.

ЛОГИЧЕСКОЕ ПРОЕКТИРОВАНИЕ

Логическое проектирование начинают с выбора модели данных. Все СУБД, с которыми работает ERwin, являются реляционными, это и определяет выбор модели данных.

Для выбора конкретной СУБД нажмите пиктограмму «Выбрать сервер». В открывшемся окне поместите указатель напротив выбранной СУБД, при необходимости задайте версию. Кроме того, нужно выбрать характеристики полей таблицы (тип и возможность нулевого значения) по умолчанию.

Важным этапом логического проектирования является определение стратегии поддержания целостности информации. Чтобы установить стратегию по умолчанию для различных типов связей, нажмите кнопку Referential Integrity Default в окне выбора СУБД. ERwin предлагает три типа стратегий:

1. Restrict - запрещающая. Она характеризуется запрещением действий со связанными сущностями.

2. Cascade - каскадная. Такая стратегия заключается в осуществлении каскадных операций над связанными сущностями.

3. Set Null - нулевая. Эта стратегия заключается в установлении Null - значения поля.

После выбора СУБД приступим к описанию данных в ее терминах. Для этого нужно выбрать из меню, всплывающего по правому щелчку на сущности, пункт <имя выбранной СУБД> Database Schema. В открывшемся окне можно задать имена таблиц и их полей, а также характеристики этих полей.

На практике часто бывает, что не все связи какого-либо типа определяются одинаковыми стратегиями поддержки ограничений целостности. Для изменения стратегий по конкретной связи воспользуйтесь пунктом Referential Integrity из меню, всплывающего по правому щелчку на связи. Если на диаграмме отсутствует информация о выбранных стратегиях, поместите указатель напротив пункта Display / Referenda Integrity.

Чтобы построить скрипт для выбранной СУБД, нажмите пиктограмму «Сгенерировать скрипт для сервера». При этом ERwin строит схему базы данных согласно определенным таблицам. Если выбранная СУБД поддерживает написание триггеров, то они строятся в зависимости от выбранных стратегий поддержки ограничений целостности.

ФИЗИЧЕСКОЕ ПРОЕКТИРОВАНИЕ

На этом этапе проектирования добавим дополнительные индексы к полученной схеме. Для этого воспользуйтесь пунктом <имя СУБД> Index меню, всплывающего по правому щелчку на сущности. В открывшемся окне нажмите кнопку New для построения нового индекса, после чего укажите атрибут для него, щелкнув на визуальном изображении этого атрибута. Заметим, что теперь на общей диаграмме атрибуты, по которым построены индексы, отмечены буквами АК. Это значит, что они являются альтернативными ключами.

ЗАДАНИЕ

1. Построить с использованием ERwin концептуальную схему базы данных для органа по сертификации. Описание предметной области приведено ниже.

Орган по сертификации аккредитован на выдачу сертификатов по некоторым видам продукции. Каждый вид продукции описывается кодом (согласно классификатору), наименованием типа (например, молочная продукция) и видом (например, молоко). На каждый вид продукции может существовать несколько нормативных документов, а действие каждого нормативного документа распространяется на несколько видов продукции. Нормативный документ характеризуется уровнем (ГОСТ, ОСТ и т.п.), номером и названием.

Сертификат выдается только на один вид продукции и только одному клиенту. Один и тот же клиент может обращаться в орган по сертификации несколько раз, поэтому нужно хранить информацию о клиентах (код организации, ее наименование, адрес и телефон).

Клиент может обратиться в орган по сертификации с одним из двух видов заявления на сертификацию: заявкой или декларацией. В зависимости от этого оформляются различные виды внутренней документации и хранится различная информация.(Таблица1)

Таблица 1

При этом нумерация заявок и деклараций является сквозной. Это значит, что если есть заявка под номером, то декларации под этим номером быть не должно.

Орган по сертификации хранит информацию о своих сотрудниках (личный код, фамилия, должность и адрес). Кроме того, необходимо знать, какую именно работу и по какому заявлению выполнил сотрудник. Работы, проводимые по заявлению, могут быть четырех видов: оформить заявление, принять решение по заявке, принять решение о выдаче сертификата, выдать сертификат. По одному и тому же заявлению различные виды работ могут выполнять разные сотрудники. В концептуальной схеме обязательно должно присутствовать разбиение на категории. Кроме того, необходимо использовать роли внешних ключей.

2. Преобразовать концептуальную схему в таблицы выбранной СУБД с использованием ERwin. Построить триггеры.

3. Создать для базы данных трех пользователей со следующими правами:

1) «Отчеты» - право чтения на всю информацию (другие права отсутствуют);

2) «Справочники» - все права на информацию о сотрудниках, клиентах, продукции и нормативных документах;

3) «Документация» - все права на информацию о внутренней документации органа по сертификации и клиентах; право чтения на данные о продукции и нормативных: документах.

Отчет должен содержать:

Распечатку концептуальной схемы из ERwin;

Обоснование выбора стратегий поддержки ограничений целостности базы;

Структуру таблиц и триггеров;

Описание средств создания пользователей базы.

КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Какие виды связей могут существовать в предметной области?

2. Как устранить из схемы базы данных связь вида «многие ко многим»?

3. В чем различие идентифицирующей и неидентифицирующей связей?

4. В каких случаях возникает необходимость описания ролей внешних ключей?

5. Чем можно обосновать выделение категорий?

6. В чем различие полного и неполного разделения на категории?

7. Какие виды стратегий поддержки ограничений целостности применялись при выполнении лабораторной работы?


Список используемой литературы

1. Дейт К.Дж. Введение в системы баз данных.- Учеб. пособие: Пер.с англ. – 6-е изд. – М.и др.: Вильямс, 2000. – 846 с.

2. Робинсон С. Microsoft Access 2000: учеб. курс: пер. с англ. – СПБ.: Питер, 2001. – 511 с.

3. Кузнецов С.Д. Основы баз данных: Курс лекций: Учеб. пособие.М.:Интернет-ун-т Информ. технологий, 2005.-484 с.

4. Гофман В.Э.,Хомоненко А.Д. Работа с базами данных в Delphi. СПБ.:Dhv,2002.-656 с.

5. Маклаков С.В. Bpwin и Erwin. Cаse-средства разработки информационных систем.-М.:Диалог-Мифи, 2003.-254с.

6. Малыхина М.П. Базы данных: основы, проектирование, использование:Учеб. пособие для вузов.-2-е изд.-СПБ.:БХВ-Петербург,2006.-517 с.

Описание интерфейса ERwin. Интерфейс CASE - средства ERwin состоит их трех основных частей. Первая - это главное меню и панели инструментов.

Кнопки на панелях инструментов повторяют некоторые основные команды в главном меню. Сохранить, открыть, создать новый файл, панель с кнопками увеличения или уменьшения масштаба отображение модели, переключатель между физической и логической моделью, переключатель между хранимыми отображениями, панель для редактирования стиля, размера и цвета шрифтов, панель с инструментами для построения геометрических фигур и несколько вспомогательных панелей инструментов (рис. 5.3).

Рис. 5.3.

Вторая - это Model Explorer. Она содержит три закладки: Model, Subject Areas и Domains. Чаще всего в Model Explorer применяется закладка Domains или Model (которая содержит все объекты и модели). В Domains отображаются соответственно домены, в Subject Areas - отображаемые области (рис. 5.4).

Рис. 5.4.

И третья - непосредственно область, отведенная для создания модели объектов, в которой создаются и редактируются все объекты модели. Снизу появляются закладки с именами запомненных хранимых отображений (Stored Displays) (рис. 5.5).


Рис. 5.5.

ERwin имеет два уровня представления данных модели: логический и физический. Логический уровень - это абстрактный взгляд на данные, на нем данные представляются так, как выглядят в реальном мире, например «Заказчик», «Цех» или «Фамилия сотрудника». Объекты модели, представляемые на логическом уровне, называются сущностями и атрибутами. Логическая модель данных может быть построена на основе другой логической модели, например модели процессов. Логическая модель данных является универсальной и никак не связана с конкретной реализацией СУБД.

Физическая модель данных, напротив, зависит от конкретной СУБД, фактически являясь отображением системного каталога. В физической модели содержится информация обо всех объектах БД. Поскольку стандартов на объекты БД не существует (например, нет стандарта на типы данных), физическая модель зависит от конкретной реализации СУБД. Следовательно, одной и той же логической модели могут соответствовать несколько разных физических моделей. Если в логической модели не имеет значения, какой конкретно тип данных имеет атрибут, то в физической модели важно описать всю информацию о конкретных физических объектах - таблицах, колонках, индексах, процедурах и т. д. Разделение модели на логические и физические позволяет решить много важных задач.

ERwin имеет несколько уровней отображения диаграммы: уровень сущностей, уровень атрибутов, уровень определений, уровень первичных ключей и уровень иконок. Переключиться между первыми тремя уровнями можно с использованием кнопок панели инструментов. Переключиться на другие уровни отображения можно при помощи контекстного меню, которое появляется, если «кликнуть» по любому месту диаграммы, не занятому объектами модели. В контекстном меню следует выбрать пункт Display Level и затем необходимый уровень отображения. ERwin позволяет связать с сущностью большую и малую иконки. При переключении на уровень иконок показывается большая иконка. Для отображения малой иконки следует выбрать в контекстном меню пункт Entity Display/Entity Icon. Маленькая иконка будет показана слева от имени сущности на всех уровнях отображения модели.

Установка цвета и шрифта. Установить шрифт и цвет объектов в ERwin можно несколькими способами. Во-первых, для установки цвета и шрифта объекта служит Font and Color Toolbar, которая располагается под основной панелью. Для редактирования шрифта и цвета конкретного объекта следует, щелкнув правой кнопкой мыши по сущности или связи и выбрав из всплывающего меню пункт Object Font & Color..., вызвать диалог Font/Color Editor, в котором определяются имя, описание и комментарии сущности. В диалоге Font/Color Editor можно выбрать шрифт и установить его размер, стиль и цвет, установить цвет заливки (свойство Fill Color, только для сущностей) и цвет линий (свойство Outline Color, только для сущностей).

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

Хранимое отображение (Stored Display) - представление подмножества модели, отображающее специфический аспект структуры данных. Одна Subject Area может включать в себя несколько хранимых отображений. В хранимое отображение входят те же самые сущности и связи, что и в Subject Area, но они могут по-разному располагаться на экране, иметь разные уровни, различный масштаб и цвет объектов или фона.

Для создания хранимого отображения служит диалог Stored Displays (меню Format/Stored Display Settings...). Для переключения между хранимыми отображениями служат закладки в нижней части диаграммы.

Основные компоненты диаграммы ERwin - это сущности, атрибуты и связи. Каждая сущность является множеством подобных индивидуальных объектов, называемых экземплярами. Каждый экземпляр индивидуален и должен отличаться от всех остальных экземпляров. Атрибут выражает определенное свойство объекта. С точки зрения БД (физическая модель) сущности соответствует таблица, экземпляру сущности - строка в таблице, а атрибуту - колонка таблицы.

Создание логической модели данных предметной области «Мебель под заказ». Создаваемая логическая модель повторяет структуру проектируемой ИС. Для того чтобы создать сущность в области для создания моделей объектов, необходимо (убедившись предварительно, что вы находитесь на уровне логической модели: переключателем между логической и физической моделью служит раскрывающийся список в правой части панели инструментов) «кликнуть» по кнопке сущности на панели инструментов (ERwin Toolbox) Q , затем «кликнуть» по тому месту на диаграмме, где необходимо расположить новую сущность. Щелкнув правой кнопкой мыши по сущности и выбрав из всплывающего меню пункт Entity Properties..., можно вызвать диалог Entities, в котором определяются имя, описание и комментарии сущности (например, имя сущности - поставщик, описание - данные о поставщике). Каждая сущность определяется с помощью текстового описания в закладке Definition. Закладки Note, Note 2, Note 3, UDP (User Defined Properties - Свойства, определенные пользователем) служат для внесения дополнительных комментариев к сущности. Следующим шагом является создание атрибутов сущности. Как было указано выше, каждый атрибут хранит информацию об определенном свойстве сущности, а каждый экземпляр сущности должен быть уникальным. Атрибут или группа атрибутов, которые идентифицируют сущность, называется первичным ключом. Для создания атрибутов следует, «кликнув» правой кнопкой по сущности, выбрать в появившемся меню пункт Attributes.... Появляется диалог Attributes. Если щелкнуть по кнопке New..., то в появившемся диалоге New Attribute указываем имя атрибута, имя соответствующей ему в физической модели колонки и домен (например, имя атрибута - наименование поставщика). Домен атрибута будет использоваться при определении типа колонки на уровне физической модели. Для атрибутов первичного ключа в закладке General диалога Attributes необходимо сделать пометку в окне выбора Primary Key.

Для отображения иконки атрибута следует выбрать в контекстном меню пункт Entity Display и в каскадном меню включить опцию Attribute Icon. Малая иконка будет показана слева от имени атрибута на уровне атрибутов отображения модели. Имя сущности показывается над прямоугольником, изображающим сущность, список атрибутов сущности - внутри прямоугольника. Список разделен горизонтальной чертой, выше которой расположены атрибуты первичного ключа, ниже - неключевые атрибуты. Атрибуты должны именоваться в единственном числе и иметь четкое смысловое значение. Соблюдение этого правила позволяет частично решить проблему нормализации данных уже на этапе определения атрибутов. Например, создание в сущности Поставщик атрибута Телефоны поставщика противоречит требованиям нормализации, поскольку атрибут должен быть атомарным, т. е. не содержать множественных значений. Согласно синтаксису IDEF1X имя атрибута должно быть уникально в рамках модели (а не только в рамках сущности!). Каждый экземпляр сущности должен быть уникален и отличаться от других атрибутов. Следующим шагом создания модели является установление связей между сущностями. Каждая связь должна именоваться глаголом или глагольной фразой (Relationship Verb Phrases рис. 5.6). Имя связи выражает некоторое ограничение или бизнес-правило и облегчает чтение диаграммы, например:

Каждый ЗАКАЗЧИК ЗАКАЗы;

Каждый ЗАКАЗ ДИЗАЙН.

Рис. 5.В. Имя связи - Relationship Verb Phrases

Для создания новой связи следует:

  • установить курсор на нужной кнопке в палитре инструментов (идентифицирующая или неидентифицирующая связь) и нажать левую кнопку мыши;
  • щелкнуть сначала по родительской, а затем по дочерней сущности. При установлении связей между сущностями атрибуты первичного ключа родительской сущности мигрируют в качестве внешних ключей в дочернюю сущность. По умолчанию имя связи на диаграмме не показывается. Для отображения имени следует в контекстном меню, которое появляется, если щелкнуть левой кнопкой мыши по любому месту диаграммы, не занятому объектами модели, выбрать пункт Relationship Display и в контекстном меню включить опцию Verb Phrase.

Логическая модель данных предметной области «Мебель под заказ» приведена на рис. 5.7.


Рис. 5.7.

Полная атрибутивная модель представляет данные в третьей нормальной форме и включает все сущности атрибуты и связи и представлена на рис. 5.8.

На уровне сущностей модель представлена на рис. 5.9.

На рис. 5.10 представлена модель данных на уровне определений.

Рис. 5.8.

Рис. 5.Э. Уровень сущностей модели данных

Создание сущностей и информации о них - это только часть картины. Связями называются логические соединения или ассоциации между двумя сущностями. Если Вы не знакомы с типами связей, которые поддерживаются в ER

win , обратитесь к руководству по методам ER win Methods Guide .

В этой главе Вы узнаете, как:

Создавать новую связь Переносить внешние ключи на зависимые сущности Входить в редактор Relationship Входить в редактор Relationship Definition Корректировать расположение "изгиба" связи

Существует некоторый базовый объем информации, которую Вы должны знать, прежде чем Вы начнете рисовать связи.

Что такое связь Как входить в нужные редакторы Какие инструменты из toolbox Вам понадобятся

Анатомия связи

Данные, относящиеся к связям, очень важны и часто являются критическими данными, которые мы используем в повседневном бизнесе. Например, важно знать о каком-то типе инструмента, но знание того, к кому относится конкретный инструмент (связь между человеком и инструментом) может иметь критическую важность. Связь - это соотношение либо между двумя сущностями, либо между сущностью и этой же сущностью. Связь - "логический" объект, представленный одним или несколькими атрибутами - внешними ключами. Связь в ER

win обычно содержит пять типов информации: тип связи, родительский конец связи, дочерний конец связи, знак "обязательности" связи и кардинальность связи.

Как показать на экране меню Editor

поставляется со строкой меню, в которой отсутствует меню Editor. Вы всегда можете войти в меню Display и Editor нажатием правой кнопки мыши. Указывая стрелкой курсора на диаграмму, вы вызываете на экран меню Display, а указывая курсором на объект, вызываете меню, содержащее все редакторы, связанные с этим объектом. Вместе с тем Вы можете показать меню Editor в строке меню или убрать его оттуда.

1. Дайте команду переключателя "Show Editor Menu" в меню Option для того, чтобы показать меню Editor в строке меню.

2. Для того, чтобы убрать меню Editor из строки меню, повторите эту команду.

Поддержка связей в Toolbox

win Toolbox есть пять типов связей: идентифицирующая, неидентифицирующая, полный кластер подтипов, неполный кластер подтипов, неопределенная (связь"многие-ко-многим"). Идентифицирующая связь - такая связь, при которой экземпляр дочерней сущности идентифицируется через свою ассоциацию с родительской сущностью. Атрибуты первичного ключа родительской сущности становятся атрибутами первичного ключа дочерней. Неидентифицирующая связь - это такая связь, при которой экземпляр дочерней сущности не идентифицируется через свою ассоциацию с родительсой сущностью. Атрибуты первичного ключа родительской сущности становятся неключевыми атрибутами дочерней. См. также гл. 9, Связи: возможности повышенного уровня сложности, разд. "Задание неидентифицирующих связей" и "Создание связей подтипов".

1. Установите курсор на тот инструмент, который Вам нужен, и нажмите левую кнопку мыши.

идентифицирующая связь неидентифицирующая связь

2. Щелкните по родительской, а затем по дочерней сущности для создания связи.

Использование pop-up меню Editor для связей

содержит специальную сокращенную версию меню Editor для связей. Если Вы щелкнете правой кнопкой мыши по связи, находящейся в окне диаграммы, то ER win выведет на экран сокращенный, контекстно-чувствительный вариант меню Editor, которое содержит только редакторы, ориентированные на связи.
См. гл. 3, Сущности и атрибуты в
ERwin , разд. "Использование редакторов ER win ".

Если Вы установите курсор на линию связи, нажмете SHIFT и дважды щелкнете левой кнопкой мыши, то появится окно-диалог, в котором ERwin спросит Вас, хотите ли Вы открыть активный редактор для родительской или для дочерней сущности. Выберите нажатием кнопки мыши родительскую или дочернюю сущность и нажмите "ОК".

Создание связи

Создать связь в ER

win легко. В этом разделе описывается, как создать связь и ввести необходимые данные по ней.

Как создать связь

1. На Toolbox выберите инструмент, соответствующий нужному типу связи (идентифицирующая связь - простая линия с одной точкой на конце, неидентифицирующая связь - пунктирная линия, у которой может быть (но не обязательно) ромбик на одном конце и точка на другом).

2. Нарисуйте связь: щелкните сначала по родительской, а затем по дочерней сущности.

Когда Вы сформируете связь, то ключ родительской сущности автоматически появится в качестве части ключа дочерней (для идентифицирующей связи) или в качестве неключевого атрибута дочерней сущности (для неидентифицирующей связи), причем рядом с ним будет стоять (FK), то есть внешний ключ, Foreign Key. Эта операция изменения дочерней сущности вследствие создания связи называется миграцией ключа

.

Поскольку ERwin автоматически производит миграцию ключей, Вам не нужно вводить внешние ключи. Если Вы это сделаете, то получите повторяющиеся атрибуты и колонки, что приведет к конфликтной ситуации в Вашем проекте.

Работа в редакторе Relationship

Связи, как и сущности, могут иметь имена и метки. Эти метки называются глагольными фразами, они должны описывать, каким образом родительская сущность связана с дочерней. Редактор Relationship позволяет Вам задать глагольную фразу, кардинальность и отношение к нулевым значениям для связи.

Вы можете также задать в редакторе Relationship имя роли для атрибута - внешнего ключа. См. также гл. 8, Сущности и атрибуты: возможности повышенного уровня сложности, разд. "Использование имен ролей атрибутов".

Как открыть редактор Relationship

1. Дайте команду "Relationship" в меню Editor.

2. Дважды щелкните по линии той связи, которую Вы хотите редактировать. Вы войдете в редактор Relatio

nship.

Установите курсор на линию связи и щелкните правой кнопкой мыши. Вы войдете в pop-up меню Editor. Дайте в нем команду "Relationship".

Как пользоваться редактором Relationship

1. Введите имя, которое идентифицирует связь, в окно "Verb Phrase".

Обычно именем связи служит глагольная фраза (verb phrase). Старайтесь, чтобы имена связей как можно более полно их описывали! Редактор Relationship показывает первые четыре строки глагольной фразы и позволяет Вам вводить и просматривать даже большее число строк.

Для перехода на новую строку используйте клавишу "Возврат каретки". ER

win изображает глагольную фразу на диаграмме в то самое время, когда Вы вводите ее в редакторе.

2. Рядом с областью для ввода глагольной фразы находится список "Foreign Keys", который содержит все внешние ключи, которые возникли в результате миграции при задании текущей связи.

3. Если тип связи еще не задан, задайте его нажатием на кнопку выбора: "Identifying" или "Non-Identifying".

4. Нажмите нужные кнопки выбора в окнах "Cardinality" и "Nulls" для задания кардинальности и режима нулевых значений для текущей связи.

5. Если Вы хотите связать имя роли с внешним ключом, щелкните по атрибуту в окне-списке "Foreign Key" и введите имя роли в текстовое окно "Role Name".

См. гл. 8, Сущности и атрибуты: возможности повышенного уровня сложности, разд. "Использование имен ролей атрибутов".

Как просматривать окно VERb Phrase

Вы можете пользоваться стрелками для прокручивания текста в окне "Verb Phrase" для того, чтобы просмотреть весь текст длинной глагольной фразы.

Задание кардинальности связи

Кардинальность связи

служит для обозначения отношения числа экземпляров родительской сущности к числу экземпляров дочерней. Родительская сущность может связываться с дочерней одним из четырех способов. В IDEF1X кардинальность бинарных отношений равна 1:n, где n может принимать значения: 0, 1 или более - обозначается "пустым местом"
Каждая родительская сущность связана с 0, 1 или более экземпляров дочерней.
1 или более - обозначается буквой "Р"
Каждая родительская сущность связана с 1 или более экземпляров дочерней.
0 или 1 - обозначается буквой "Z"
Каждая родительская сущность связана с 0 или 1 экземпляром дочерней.
ровно n, где "n" - некоторое число
Каждая родительская сущность связана с ровно n экземплярами дочерней.

Редактор Relationship также позволяет Вам задавать кардинальность связи.

1. Находясь в редакторе Relationship, нажмите кнопку выбора, обозначающую нужную Вам кардинальность.

2. Если Вы нажали кнопку "Exactly", то необходимо ввести число.

Если Вы задали этот режим и не ввели число, то ER

win не даст Вам выйти из окна-диалога.

Как показать кардинальность связи

позволяет Вам показать кардинальность связи на диаграмме.

Как показать или убрать кардинальность связи

1. Дайте команду "Cardinality" в меню Display.

2. Для того, чтобы убрать информацию о кардинальности, повторите эту команду.

См. также гл. 11, Документирование правил (Business Rules), разд. "Использование кардинальности связи для выражения правил".

Задание режима Null (нулевых значений)

В редакторе Relationship Вы можете задать также режим "нулевых значений". Он относится к случаю, когда значения нет: это пустое множество или "нет колонки". Атрибут, который может принимать нулевое значение, считается "необязательным" и на диаграмме изображается как ромбик на родительском конце связи. Вы можете задать этот режим и в других местах, но вообще говоря, первая такая возможность предоставляется именно в этом редакторе.

Как задать "обязательную" или
"необязательную" связь

1. Находясь в редакторе Relationship, нажмите кнопку "No Nulls" для задания "обязательной" связи (ромбик на родительском конце отсутствует), или нажмите кнопку "Nulls Allowed" для задания "необязательной" связи (с ромбиком на родительском конце).

Работа в редакторе Relationship Definition

Вы можете также захотеть дать более полное определение Вашей связи для того, чтобы в дальнейшем иметь возможность на него ссылаться. Это делается в редакторе Relanship Definition.

1. Дайте команду "Relationship Definition" в меню Editor, если Вы еще ее не давали.

2. Дважды щелкните по той связи, которую Вы хотите отредактировать.

Установите курсор на ту связь, которую Вы хотите отредактировать, и нажмите правую кнопку мыши. Дайте команду "Relationship Definition" в меню Editor.

Если при попытке дважды щелкнуть по связи Вы получили сообщение "Select an Object First", это значит, что Вы щелкнули не точно по линии связи. Нажмите кнопку "ОК" в окне сообщения, для того чтобы убрать его с экрана, и попробуйте снова. Постарайтесь щелкнуть точно по линии.

Как пользоваться редактором Relationship Definition

1. Имя связи, если оно есть, находится в окне "Verb Phrase". Если хотите, можете его отредактировать.

2. Отредактируйте, как нужно, физическое имя связи "Relationship Physical Name".

3. Введите определение в окно "Rel

ationship Definition".

4. После того, как Вы закончите работу, нажмите кнопку "ОК" для того, чтобы сохранить информацию и выйти из редактора. Для выхода из редактора без сохранения изменений нажмите кнопку "Cancel".

Коррекция связей

Если Вам не нравится форма линии связи, ее можно изменить. Для этого Вам нужно захватывать мышью углы линии связи и переносить их с места на место, пока линия не начнет выглядеть лучше.

Как откорректировать связь

1. Щелкните по той связи, которую Вы хотите отредактировать. На экране появится "рычаг" связи (темный квадрат) . Он определяет место на линии связи, которое можно переносить.

2. Щелкните по любому месту того сегмента линии связи, где изображен рычаг.

3. Не отпуская левой кнопки мыши, измените расположение линии связи в соответствии с Вашим вкусом и затем отпустите кнопку мыши.

Никогда не забывайте регулярно сохранять изменения, которые Вы вносите в диаграмму.

Краткое повторение главы 4

Как показать или убрать меню Editor

Дайте команду "Show Editor Menu" в меню Option для того, чтобы показать меню Editor в строке меню. Для того, чтобы убрать меню Editor из строки меню, повторите эту команду.

Как пользоваться инструментами, ориентированными на связь

Установите курсор на нужный Вам инструмент и щелкните левой кнопкой мыши.

Как создать новую связь

Щелкните по одной из пиктограмм на Toolbox, обозначающих связь, а затем щелкните сначала по родительской сущности, затем - по дочерней.

Как произвести миграцию внешних ключей в зависимые сущности

Ничего не делайте. ERwin автоматически производит миграцию внешних ключей при создании связи. Никогда не вводите внешние ключи самостоятельно.

Как войти в редактор Relationship

Убедитесь, что режим "Relationship" активен в меню Editor, а затем дважды щелкните по той связи, которую Вы хотите отредактировать.

Как задать кардинальность связи

Находясь в редакторе Relationship, нажмите одну из кнопок выбора в окне "Cardinality" для того, чтобы задать кардинальность связи. Если Вы нажали кнопку "Exactly", то необходимо ввести точное значение кардинальности в текстовое окно, расположенное рядом с названием кнопки.

Как войти в редактор Relationship Definition

Убедитесь, что режим "Relationship Definition" активен в меню Editor, а затем дважды щелкните по той связи, которую Вы хотите отредактировать.

Как откорректировать форму линии связи

Щелкните по одному из углов на линии и двигайте его, пока линия не станет более красивой.