2. Назначение, возможности и особенности программы eRwin
Программа ERwin предназначена для построения ИЛМ с использованием методологии IDEF1X и автоматической генерации соответствующей ДЛМ с учетом особенностей выбранной СУБД. Результатом генерации ДЛМ является схема БД, представленная на языке SQL, и созданные таблицы, входящие в БД. ERwin может генерировать ДЛМ для более чем 20 реляционных и нереляционных СУБД.
Для обозначения моделей данных ERwin использует терминологию, отличную от рассмотренной в лекциях: ИЛМ именуется логической (Logical) моделью, а ДЛМ - физической (Physical) моделью.
Создание БД с помощью ERwin начинается с построения логической модели. После описания логической модели проектировщик выбирает необходимую СУБД, и ERwin автоматически создает соответствующую физическую модель. На основе физической модели ERwin может сгенерировать схему БД на языке SQL и сформировать таблицы, образующие БД.
Этот процесс называется прямым проектированием (Forward Egineering) и обеспечивает масштабируемость: создав одну логическую модель, можно сгенерировать физические модели для любой СУБД, поддерживаемой программой ERwin.
С другой стороны, ERwin способен для существующей БД воссоздать физическую и логическую модели, т.е. обеспечить обратное проектирование (Reverse Engineering). На основе полученной логической модели можно сгенерировать физическую модель для другой СУБД и затем сформировать новую БД. Следовательно, ERwin позволяет решить задачу по переносу структуры БД с одной СУБД на другую.
Задание 1. Запустить программу ERwin из Windows NT командой Пуск |Программы | PLATINUM ERwin | PLATINUM ERwin.
Пояснения. После запуска программы ERwin появляется окно программы со строкой главного меню, панелью инструментов и рабочей областью, в которой находится палитра инструментов с кнопками.
Вид палитры инструментов (ERwin Toolbox) зависит от выбора логической или физической модели, который осуществляется с помощью списка, расположенного в правой части панели инструментов:
Для логической модели палитра инструментов имеет следующие кнопки:
- указатель элемента модели. Элементами модели являются сущности и связи;
- добавление сущности;
- добавление категориальной связи (используется для описания обобщенных объектов (сущностей);
- добавление текстового блока в модель;
- перемещение атрибутов внутри сущностей или между сущностями (способом drag&drop);
- добавление идентифицирующей связи;
- добавление связи M:N;
- добавление неидентифицирующей связи.
3. Использование программы eRwin
Рассмотрим в качестве предметной области предприятие, в структуре которого имеются отделы, и спроектируем БД для хранения сведений о служащих, работающих в отделах, и детях, имеющихся у служащих. Описание сущностей и связей между ними представлено ниже:
ОТДЕЛ
|
СЛУЖАЩИЙ |
РЕБЕНОК |
S Номер отдела (DepId) |
S Табельный номер (EmpId) |
S Имя (ChiName) |
D Название отдела (DepName) |
D ФИО (EmpName) |
S Дата рождения (Birthday) |
|
S Дата рождения (Birthday) |
|
D Оклад (Salary) |
| |
|
D Должность (Post) |
|
ОТДЕЛ
|
СЛУЖАЩИЙ |
РЕБЕНОК |
DepId, … |
EmpId, … |
ChiName, … |
На ER-диаграмме атрибут ChiName (Имя ребенка) подчеркнут штриховой линией, чтобы указать на то, что по имени можно идентифицировать ребенка, только "подчинив" его служащему-родителю, т.е. ребенок является зависимой сущностью по отношению к служащему. (Сделать сущность РЕБЕНОК независимой можно, если пронумеровать всех детей и использовать их номера для однозначной идентификации.)
Для использования программы ERwin связь объектов, показанную на ER-диаграмме, необходимо представить в соответствии с методологией IDEF1X (см. табл.1) так, как показано на рис.1.
Полученная диаграмма описывается средствами ERwin и помещается в файл с расширением ER1. После выбора СУБД программа ERwin формирует физическую модель БД как совокупность взаимосвязанных таблиц. Для последующего использования БД удобнее, чтобы имена таблиц и атрибутов записывались латинскими буквами, поскольку не все СУБД допускают работу с кириллицей. В табл.2 приведено соответствие между именами логической и физической моделей и указаны типы атрибутов.
ОТДЕЛ |
СЛУЖАЩИЙ |
РЕБЕНОК |
Номер отдела Р Название отдела |
Табельный номер Р ФИО Дата рождения Оклад Должность |
Имя Дата рождения |
Рис.1. Логическая модель.
Таблица 2
Имя |
Имя |
Тип | |||
сущности |
таблицы |
атрибута |
столбца |
атрибута |
столбца |
ОТДЕЛ |
Department |
Номер отдела |
DepId |
числовой |
Number |
Название отдела |
DepName |
строковый |
String | ||
СЛУЖАЩИЙ |
Employee |
Табельный номер |
EmpId |
числовой |
Number |
ФИО |
EmpName |
строковый |
String | ||
Дата рождения |
Birthday |
дата |
Datetime | ||
Оклад |
Salary |
числовой |
Number | ||
Должность |
Post |
строковый |
String | ||
РЕБЕНОК |
Children |
Имя |
ChiName |
строковый |
String |
Дата рождения |
Birthday |
дата |
Datetime |
Задание 2. Описать сущности, входящие в логическую модель, показанную на рис.1.
Порядок выполнения задания 2.
На панели инструментов задать режим создания логической модели (Logical).
Перейти к созданию новой модели, выбрав в главном меню команду File | New. В диалоговом окне ERwin Template Selection выбрать шаблон Blank Diagram и нажать кнопку ОК.
На палитре инструментов нажать кнопку
В рабочем поле диаграммы щелчком мыши разместить три сущности и после этого нажать кнопку на палитре инструментов.
Курсором мыши указать на первую сущность в рабочем поле диаграммы, щелкнуть правой кнопкой мыши и выбрать из локального меню команду Entity Editor, чтобы появилось одноименное диалоговое окно.
В области Name набрать имя сущности Department, которое будет использоваться в модели.
На закладке Definition в одноименной области набрать определение сущности (Отдел предприятия) и нажать кнопку ОК.
Щелкнуть правой кнопкой на сущности Department и выбрать из локального меню команду Attribute Editor для описания атрибутов сущности.
В одноименном диалоговом окне нажать кнопку New и в появившемся диалоговом окне New Attribute указать имя атрибута, имя соответствующего столбца в таблице БД и тип данных, хранящихся в столбце (домен): в области Attribute Name набрать Номер отдела, в области Column Name - DepId, в области Domain щелчком мыши выбрать числовой тип Number.
Нажать кнопку ОК для возврата в диалоговое окно Attribute Editor и на закладке General щелчком мыши установить признак Primary Key, чтобы отметить описанный атрибут как входящий в ключ сущности.
Описать атрибут Название отдела согласно табл.2, повторив пункты 9-10, но не включая этот атрибут в состав ключа сущности.
Нажать кнопку ОК в диалоговом окне Attribute Editor.
Чтобы имена атрибутов изображались кириллицей, нужно щелкнуть правой кнопкой мыши на сущности Department, выбрать из локального меню команду Object Font/Color, на закладке Text выделить мышью имена атрибутов и выбрать подходящий шрифт (например, PEW Report или Consultant). После изменения шрифта у всех имен нажать кнопку ОК.
Описать сущности СЛУЖАЩИЙ и РЕБЕНОК согласно табл.2, выполнив действия, указанные в пунктах 5-13, применительно к этим сущностям.
Примечание. Согласно принятым в IDEF1X соглашениям имя атрибута должно быть уникально в рамках модели. При попытке использовать уже описанное имя атрибута (например, Дата рождения в сущности РЕБЕНОК) ERwin формирует уникальное имя (Дата рождения/2). Отменить контроль уникальности имен атрибутов можно командой главного меню Option | Unique Name | Allow.
Задание 3. Задать связи между сущностями.
Порядок выполнения задания 3.
Соединить сущность ОТДЕЛ и СЛУЖАЩИЙ неидентифицирующей связью: на палитре инструментов нажать кнопку , щелкнуть мышью по сущностиОТДЕЛ, а затем по сущности СЛУЖАЩИЙ. Таким образом будет установлена связь "один ко многим". При этом ключ сущности-родителя появится среди атрибутов сущности-потомка и будет помечен как внешний ключ (FK).
Щелкнуть правой кнопкой мыши по связи и в локальном меню выбрать команду Relationship Editor, чтобы задать такие дополнительные характеристики связи, как имя связи (Verb Phrase) и мощность (Cardinality).
В диалоговом окне Relationship Editor в области Parent-to-Child задать имя связи со стороны сущности-родителя (состоит из), а в области Child-to-Parent - со стороны сущности-потомка (работает в).
Задать мощность связи, щелкнув мышью по радиокнопке One or More (P) в области Cardinality.
Задать обязательный класс принадлежности для сущности-потомка СЛУЖАЩИЙ, щелкнув в области Relationship Type по радиокнопке No Nulls (служащий обязательно работает в каком-либо отделе).
Примечание. Расположенная в области Relationship Type радиокнопка Nulls Allowed соответствует необязательному классу принадлежности сущности-потомка и разрешает использование пустых значений NULL в качестве значений внешнего ключа, задающего связь служащего с отделом. На диаграмме такая "необязательная" неидентифицирующая связь помечается белым ромбом со стороны сущности-родителя. В физической модели, формируемой программой ERwin, такой связи двух сущностей соответствуют две таблицы, в одной из которых в столбце внешнего ключа будут пустые значения. Если наличие пустых значений недопустимо, то связь 1:N для сущности-потомка с необязательным классом принадлежности лучше заменить связью N:M, чтобы в физической модели информация о связях конкретных экземпляров сущности-родителя и сущности-потомка хранилась в отдельной таблице.
Нажать кнопку ОК в диалоговом окне Relationship Editor и проверить, появились ли на диаграмме имя связи и обозначение мощности связи. Если эти характеристики отсутствуют, то для их отображения следует щелкнуть правой кнопкой мыши по любому свободному месту диаграммы, в локальном меню выбрать команду Display Options/Relationship и щелчком мыши отметить пункт Verb Phrase. Затем таким же способом отмечается в локальном меню пункт Cardinality. При необходимости изменить шрифт для имени связи.
Соединить сущности СЛУЖАЩИЙ и РЕБЕНОК идентифицирующей связью: на палитре инструментов нажать кнопку , щелкнуть мышью по сущностиСЛУЖАЩИЙ, а затем по сущности РЕБЕНОК. Таким образом будет установлена связь "один ко многим", сущность РЕБЕНОК будет изображена как зависимая, и ключ сущности-родителя появится среди атрибутов сущности-потомка, образующих ее ключ, и будет помечен как внешний ключ (FK).
Задать имя (имеет/принадлежит) и мощность (Р) связи так, как указано в п.2-4.
Задание 4. Сохранить модель в файле INFORM.ER1 на устройстве H командой File|Save As…
Задание 5. Ознакомиться с уровнями отображения диаграммы, вызвав локальное меню щелчком правой кнопки мыши; выбрать команду Display Level и уровень отображения: сущности (Entity), атрибуты (Attribute), первичный ключ (Primary Key), определение (Definition), иконки (Icon). Записать в отчет, как представлена на диаграмме сущность СЛУЖАЩИЙ при выборе каждого уровня отображения.
Задание 6. Сформировать физическую модель, раскрыв на панели инструментов расположенный справа список и выбрав из него тип модели Physical. Записать в отчет структуру физической модели (таблицы и их связи).
Задание 7. Адаптировать спроектированную базу данных для СУБД FoxPro.
Порядок выполнения задания 7.
В главном меню выбрать команду Server|Target Server, в появившемся диалоговом окне ознакомиться с перечнем СУБД (DBMS), поддерживаемых программой ERwin, затем щелчком мыши выбрать радиокнопку FoxPro и нажать кнопку ОК.
В ответ на запрос о преобразовании типов данных нажать кнопку Yes.
Щелкнуть правой кнопкой мыши по таблице Department и выбрать в локальном меню команду Column Editor для уточнения свойств столбцов таблицы.
В диалоговом окне Column Editor щелкнуть мышью по закладке FoxPro, чтобы адаптировать заданные в логической модели типы данных, хранящихся в столбцах, к особенностям СУБД FoxPro.
В области Column выделить столбец DepId и на закладке FoxPro задать тип Numeric(6,0), а затем выделить столбец DepName и задать тип Character(20).
Нажать кнопку ОК для сохранения изменений.
Выполнить п.3-6 для таблиц Employee и Children, выбрав самостоятельно размер и разрядность строковых и числовых столбцов.
Задание 8. Создать БД для выбранной СУБД командой главного меню Tasks | Forward Engineering /Schema Generation.
Пояснение. В появившемся диалоговом окне представлены режимы генерации объектов БД - таблиц, столбцов, индексов и т.д. Нажав кнопку Preview, можно вызвать окно, в котором отображаются операторы языка SQL, формируемые программой ERwin для создания БД и задающие схему БД. Записать в отчет схему БД на языке SQL.
Создание БД запускается нажатием кнопки Generate. При этом появляется диалоговое окно, предназначенное для установления связи с СУБД: из списка следует выбрать имя СУБД (FoxPro) и последовательно нажать кнопку Connect и Close. Процесс генерации схемы и создания БД демонстрируется в окне Generate Database Schema. После завершения процесса в активных диалоговых окнах последовательно нажать кнопки ОК, Close, ОК.
Задание 9. Найти на компьютере папку, в которую помещены таблицы БД Departme, Employee, Children, находящиеся в одноименных файлах с расширением DBF. Записать в отчет имя папок с моделью INFORM.ER1 и таблицами БД. Закрыть модель командой главного меню File | Close.
Задание 10.Получить у преподавателя вариант задания на проектирование БД, описать объекты и представить связь объектов в соответствии с методологиейIDEF1X.Записать в отчет полученную логическую модель.
Задание 11. Использовать программу ERwin для проектирования и создания БД, соответствующей варианту задания, выбрав СУБД FoxPro. Записать в отчет структуру сформированной физической модели БД, схему БД на языке SQL и имя папки с таблицами БД.