|
РБД_Лаб_2021. Распределенные базы данных
Лабораторная работа №5 РАЗРАБОТКА МОДЕЛИ ДАННЫХ В СИСТЕМЕ АВТОМАТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ ERWIN
Цель работы. Получение навыков построения моделей баз данных в среде Erwin, автоматического создания схем баз данных в СУБД Oracle (Forward Engineer) и проведения реинжиниринга (Reverse Engineer). 5.1 КРАТКАЯ ТЕОРИЯ 5.1.1. Назначение программного продукта ERwin ERwin – CASE-средство проектирования баз данных фирмы Computer Associates (CA). ERwin сочетает графический интерфейс Windows, инструменты для построения ER-диаграмм, редакторы для создания логического и физического описания модели данных и прозрачную поддержку ведущих реляционных СУБД.
ERwin не привязан к технологии какой-либо конкретной фирмы, поставляющей СУБД или средства разработки. Он поддерживает различные серверы баз данных и настольные СУБД, а также может обращаться к базе данных через интерфейс ODBC (речь идет только о реляционных СУБД).
ERwin можно использовать совместно с некоторыми популярными средствами разработки клиентских частей приложений. Кроме того, ERwin поддерживает работу в среде групповой разработки ModelMart.
Процесс моделирования в ERwin базируется на методологии проектирования реляционных баз данных IDEF1X. Данная методология была разработана для ВВС США и теперь широко используется в правительственных учреждениях и частных компаниях как в самих США, так и далеко за их пределами. Она определяет стандарты терминологии и графического изображения типовых элементов на ER-диаграммах. Некоторые обозначения могут несколько расходиться с традиционными, принятыми в ER-модели, хотя в ERwin существует возможность выбора традиционной нотации. (При изложении материала используется нотация IDEF1X.)
В данном параграфе рассмотрен процесс создания модели в ERwin, описаны основные элементы интерфейса. 5.1.2. Структура процесса моделирования в ERwin В ERwin используются два уровня представления модели данных: логический и физический (что соответствует концептуальному и логическому уровням, принятым в теории БД). На логическом уровне не рассматривается использование конкретной СУБД, не определяются типы данных (например, целое или вещественное число) и индексы для таблиц. Целевая СУБД, имена объектов и типы данных, индексы составляют второй (физический) уровень модели ERwin.
ERwin предоставляет возможность создавать и управлять двумя различными уровнями представления одной диаграммы (модели), равно как и иметь много вариантов отображения на каждом уровне.
Процесс построения информационной модели состоит из следующих этапов:
создание логической модели данных: определение сущностей; определение зависимостей между сущностями; задание первичных и альтернативных ключей; определение не ключевых атрибутов сущностей; переход к физическому описанию модели:
назначение соответствий имя сущности – имя таблицы, атрибут сущности – атрибут таблицы; задание триггеров, хранимых процедур и ограничений;
генерация базы данных.
5.1.3. Создание логической модели БД С точки зрения пользователя ERwin, процесс создания логической модели данных заключается в визуальном редактировании ER-диаграммы. Диаграмма ERwin строится из трех основных графических примитивов: сущностей, атрибутов и связей. 5.1.4. Сущности и атрибуты На диаграмме сущность изображается прямоугольником. В зависимости от режима представления диаграммы прямоугольник может содержать имя сущности, ее описание, список ее атрибутов и другие сведения. Основная информация, описывающая сущность, включает:
атрибуты, составляющие первичный ключ; не ключевые атрибуты; тип сущности (независимая/зависимая).
Первичный ключ – это атрибут или набор атрибутов, уникально идентифицирующий экземпляр сущности. Если несколько наборов атрибутов могут уникально идентифицировать сущность, то выбор одного из них осуществляется разработчиком на основании анализа предметной области и учета следующих требований к первичному ключу:
первичный ключ не должен принимать пустые (NULL) значения; первичный ключ не должен изменяться в течение времени; размер первичного ключа должен быть как можно меньшим.
Если разработчик считает, что какой-либо из оставшихся наборов будет часто использоваться для доступа к сущности, он может объявить его альтернативным ключом.
Если экземпляры сущности могут быть уникально идентифицированы без определения ее связей с другими сущностями, она называется независимой. В противном случае сущность называют зависимой. Зависимая сущность отображается в ERwin прямоугольником с закругленными углами. 5.1.5. Связи Связь в ERwin трактуется как функциональная зависимость между двумя сущностями (в частности, возможна связь сущности с самой собой).
Если рассматривать диаграмму как графическое представление правил предметной области, то сущности являются существительными, а связи – глаголами. Например, между сущностями ОТДЕЛ и СОТРУДНИК существует связь "состоит из" (ОТДЕЛ состоит из СОТРУДНИКОВ).
В ERwin связи представлены пятью основными элементами информации:
тип связи; родительская и дочерняя (зависимая) сущности; мощность связи; допустимость пустых (null) значений; требования по обеспечению ссылочной целостности.
ERwin поддерживает следующие основные типы связей: идентифицирующая, неидентифицирующая, полная категория, неполная категория, многие-ко-многим.
Связь называется идентифицирующей, если экземпляр дочерней сущности идентифицируется через ее связь с родительской сущностью. Атрибуты, составляющие первичный ключ родительской сущности, при этом входят в первичный ключ дочерней сущности. Дочерняя сущность при идентифицирующей связи всегда является зависимой.
Связь называется неидентифицирующей, если экземпляр дочерней сущности идентифицируется иначе, чем через связь с родительской сущностью. Атрибуты, составляющие первичный ключ родительской сущности, при этом входят в состав неключевых атрибутов дочерней сущности.
Идентифицирующая связь изображается сплошной линией; неидентифицирующая – пунктирной линией. Линии заканчиваются точкой со стороны дочерней сущности.
При определении связи происходит миграция атрибутов первичного ключа родительской сущности в соответствующую область атрибутов дочерней сущности. Поэтому такие атрибуты не вводятся вручную.
Поскольку атрибуты первичного ключа родительской сущности по умолчанию мигрируют со своими именами, ERwin считает, что в зависимой сущности атрибуты внешнего ключа появляются только один раз. Чтобы избежать этого ограничения, ERwin позволяет ввести для них роли, т.е. новые имена, под которыми мигрирующие атрибуты будут представлены в дочерней сущности. В случае неоднократной миграции атрибута такое переименование необходимо.
Зависимая сущность может наследовать один и тот же атрибут от более чем одной родительской сущности или от одной и той же родительской сущности через несколько связей! (пример: между сущностями СДЕЛКА и ВАЛЮТА может быть две связи, порождающие в сущности СДЕЛКА два внешних ключа: Купленная валюта и Проданная валюта).
Ситуация, когда экземпляру одной сущности соответствует один или несколько экземпляров второй сущности, а экземпляру второй сущности соответствует один или несколько экземпляров первой сущности, отражается в логической модели связью многие-ко-многим между данными сущностями. На диаграмме связь изображается сплошной линией с точками на концах. Например, для заключения сделки в некоторой фирме клиент обращается к любому из свободных сотрудников этой фирмы. В то же время сотрудник фирмы может обслуживать нескольких клиентов. Поэтому тип связи между сущностями КЛИЕНТ и СОТРУДНИК должен быть многие-ко-многим.
Обратите внимание, что связь типа многие-ко-многим возможна только на логическом уровне! Преобразование связи данного типа производится созданием сущности связи (инструмент в выпадающем меню свойств связи). Связей многие-ко-многим рекомендуется избегать. В рассмотренном примере (КЛИЕНТ – СОТРУДНИК) этого можно добиться, если ввести дополнительную сущность СДЕЛКА.
Мощность связи представляет собой отношение количества экземпляров родительской сущности к соответствующему количеству экземпляров дочерней сущности. Мощность связи определяется только для идентифицирующих и неидентифицирующих связей и записывается как 1 :N. В соответствии с методологией IDEF1X ERwin предоставляет 4 варианта для N, которые изображаются дополнительным символом у дочерней сущности: 0 ,1 или больше (по умолчанию)
1 или больше
0 или 1
ровно N (3) Допустимость пустых (NULL) значений в неидентифицирующих связях ERwin изображает пустым ромбиком на дуге связи со стороны родительской сущности.
В целях контроля ссылочной целостности (под ссылочной целостностью в ERwin понимается обеспечение требования, согласно которому значения внешнего ключа экземпляра дочерней сущности должны соответствовать значениям первичного ключа в родительской сущности) для каждой связи могут быть заданы требования по обработке операций INSERT/UPDATE/DELETE для родительской и дочерней сущности. ERwin предоставляет следующие варианты обработки этих событий:
отсутствие проверки; проверка допустимости; запрет операции; каскадное выполнение операции (DELETE/UPDATE); установка пустого (NULL-значения) или заданного значения по умолчанию.
5.1.6. Создание физической модели и генерация схемы БД На уровне физической модели сущности соответствует таблица в реальной СУБД, атрибуту – колонка таблицы, связи – внешний ключ (если для связи задавалось имя роли, то оно соответствует имени колонки внешнего ключа в дочерней таблице), первичным и альтернативным ключам – уникальные индексы, а инверсным входам – неуникальные.
ERwin автоматически присваивает имена элементов логической модели элементам физической схемы исходя из приведенных выше соотношений. Таким образом, разработчику нет необходимости проделывать это вручную. Однако если модель разрабатывалась на русском языке, то имена таблиц, колонок и индексов необходимо задать на английском языке. При этом сами имена сущностей, атрибутов, связей и ролей могут оставаться без изменения.
Для каждой колонки разработчик должен указать тип данных, возможность пустых значений, значения по умолчанию и т.п. в зависимости от используемой СУБД.
Последним шагом на этапе создания физической модели данных является написание триггеров и хранимых процедур. Этот шаг является необязательным, так как в ERwin существуют библиотеки готовых шаблонов триггеров и хранимых процедур. Но при желании разработчик может вносить в них свои изменения.
Для инициации процесса создания схемы в конкретной БД необходимо переключится в режим физической модели и в меню выбрать пункт Tools -> Forward Engineer (рис. 5.1).
Рис. 5.1 – Запуск инжиниринга (формирование скрипта) В появившемся окне (рис. 5.2) нажать кнопку Generate... (установки по умолчанию подходят для обычной генерации “с нуля”).
Рис. 5.2 – Формирование SQL скрипта
Далее указать пользователя/пароль и алиас БД, куда будет осуществлена загрузка новой схемы (рис. 5.3).
Рис. 5.3 – Подключение к базе данных На рис. 5.3 в качестве примера использован пользователь STUDENT. При выполнении задания необходимо создать своего пользователя с именем в формате: LAB5-КУРС-ГРУППА-БРИГАДА.
Пользователь должен быть уже создан перед началом инжиниринга. 5.1.7. Интерфейс ERwin Рассмотрим основные элементы интерфейса Erwin.
Основные инструменты создания модели доступны как из меню, так и через верхнюю линейку панели инструментов. Назначение ее элементов приведено в табл. 5.1.
Нижняя линейка предназначена для настройки параметров отображения диаграммы и играет вспомогательную роль. При помощи элементов данной линейки пользователь имеет возможность устанавливать различные шрифты, менять размер, стиль и цвета символов, выбирать цвета заливки и основных линий.
Таблица 5.1
Верхняя линейка панели инструментов
Элемент линейки
| Назначение элемента
|
| Создание, открытие и сохранение модели
|
| Выбор уровня отображения модели: уровень сущностей, уровень атрибутов и уровень описаний
|
| Изменение масштаба
|
| Генерация схемы БД, синхронизация схемы БД с моделью и выбор сервера СУБД
|
| Переключение между физической и логической моделями
|
Кроме основной панели инструментов, в ERwin предусмотрена дополнительная перемещаемая панель инструментов (рис. 5.4)
Рис. 5.4 – Панель управления С ее помощью создаются независимые и зависимые сущности, идентифицирующие и неидентифицирующие связи, полные и неполные категории, связи многие-ко-многим и текстовые элементы.
Например, для того чтобы создать новую сущность, пользователь нажимает кнопку на панели управления, устанавливает указатель мыши в то место на диаграмме, где он хотел бы расположить новую сущность, и один раз нажимает левую клавишу мыши. Или для задания идентифицирующей связи между сущностями пользователь нажимает кнопку, устанавливает указатель мыши сначала на родительскую сущность и один раз нажимает левую клавишу мыши, а затем – на дочернюю сущность и вновь нажимает клавишу мыши.
При переключении на уровень физической модели облик данной панели меняется: вместо кнопки создания категорийной связи появляется кнопка создания представления (view) таблицы, а вместо кнопки создания связи многие-ко-многим – кнопка задания связи между таблицей и представлением. Кнопка создания сущности на физическом уровне носит название кнопки создания независимой таблицы.
Как логическая, так и физическая модель содержат несколько уровней отображения (названия для физической модели заключены в круглые скобки):
Уровень "сущности" ("таблицы") – внутри прямоугольников отображается имя сущности (для логической модели) или имя таблицы (для физического представления модели); служит для удобства обзора большой диаграммы или размещения прямоугольников сущностей на диаграмме. Уровень "атрибуты" ("колонки"). При переходе от предметной области к модели требуется вводить информацию о том, что составляет сущность. Эта информация вводится путем задания атрибутов (на физическом уровне – колонок таблиц). В этом режиме прямоугольник-сущность делится линией на две части: в верхней части отображаются атрибуты (колонки), составляющие первичный ключ, а в нижней – остальные атрибуты. Уровень "описание сущности" ("комментарии") служит для презентации диаграммы другим людям. Уровень "первичные ключи" – внутри прямоугольников-сущностей показываются только атрибуты/колонки, составляющие первичный ключ. Уровень "пиктограммы". Для презентационных целей каждой таблице может быть поставлена в соответствие пиктограмма. На уровне физической модели заменяется уровнем упорядочения.
Переключение между уровнями отображения производится при помощи кнопок панели инструментов или всплывающего меню, возникающего при нажатии правой клавиши мыши на пустом месте диаграммы.
Все объекты, представленные на диаграмме, могут редактироваться средствами, принятыми в Windows: группировка, копирование, удаление, перемещение, использование системного буфера. Нажатие клавиши мыши над сущностью приводит к появлению окна одного из многочисленных редакторов ERwin, среди которых:
редактор сущностей в целом (определение сущности, дополнительная информация, триггеры, индексы, характеристики таблицы, хранимые процедуры, связанные с таблицей); редактор атрибутов (определение атрибутов, колонки таблицы в физическом представлении модели, репозитарий средства 4GL, например, расширенные атрибуты в PowerBuilder).
5.2 ЗАДАНИЯ К РАБОТЕ И ПОРЯДОК ВЫПОЛНЕНИЯ Задание 1. Разработать логическую модель данных по предложенной предметной области.
Порядок выполнения задания 1.
1. В гипотетическом пункте обмена валют создается локальная информационная система (ИС), призванная автоматизировать процесс учета сделок купли-продажи валюты. Создаваемая система должна обеспечить ввод, хранение и поиск информации о сделках, совершенных в данном пункте обмена. Каждой сделке присваивается уникальный цифровой код. Информация о сделке должна включать дату и время сделки, суммы покупаемой и продаваемой валюты, фамилию, имя, отчество и номер паспорта клиента, а также фамилию, инициалы и учетный номер личного дела кассира в отделе кадров. Система должна позволять вычислить денежный оборот за один или несколько дней, а также осуществлять поиск информации о сделках по номеру паспорта клиента. Задача состоит в проектировании структуры базы данных разрабатываемой автоматизированной ИС и автоматическом создании схемы БД в СУБД Oracle.
2. Создание модели начинается с нажатия кнопки New на панели инструментов. В появившемся окне необходимо выбрать третий тип модели Logical/Physical (рис. 5.5).
Рис. 5.5 – Создание модели Задание 2. Провести обратный инжиниринг.
Порядок выполнения задания 2.
1. Для получения логической и физической модели БД на основе уже существующей базы данных необходимо создать новую пустую модель (по образцу из задания 1) и провести для нее обратный инжиниринг из уже созданной БД о студентах, университетах и преподавателях (из схемы своего пользователя).
2. Выбрать в меню Tools -> Reverse Engineer и указать, что будут экспортироваться логическая и физическая модели (рис. 5.6). Рис. 5.6 – Обратный инжениринг, создание подключения
3. После этого следует нажать кнопку Next и указать, что будут экспортироваться объекты из схемы конкретного пользователя (которого вы впоследствии укажете) (рис. 5.7).
4. Далее следует нажать кнопку Next и указать имя пользователя, пароль и алиас БД, откуда будет проводиться обратный инжениринг. Рис. 5.7 – Обратный инжениринг настройка 5.3 СОДЕРЖАНИЕ ОТЧЁТА Готовится один отчёт на бригаду в печатном виде. Он должен содержать следующие разделы:
- задание;
- описание процесса проектирования логической и физической моделей данных (приводятся так же копии экрана);
- описание процесса обратного инженеринга (приводятся также копии экрана).
Приём отчёта осуществляется в индивидуальном порядке. Ответы на контрольные вопросы даются устно. 5.4 КОНТРОЛЬНЫЕ ВОПРОСЫ
Рассказать, для чего предназначен Erwin, и описать его основные функции. Рассказать, что представляет собой обратный инжиниринг и для каких целей его можно использовать.
|
|
|