Структура процесса моделирования в ERwin

 

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

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

Процесс построения информационной модели состоит из следующих этапов:

1. создание логической модели данных:

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

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

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

5. определение не ключевых атрибутов сущностей;

6. переход к физическому описанию модели:

a. назначение соответствий имя сущности – имя таблицы, атрибут сущности – атрибут таблицы;

b. задание триггеров, хранимых процедур и ограничений;

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

Создание логической модели БД

 

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

Сущности и атрибуты

 

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

- атрибуты, составляющие первичный ключ;

- не ключевые атрибуты;

- тип сущности (независимая/зависимая).

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

- первичный ключ не должен принимать пустые (NULL) значения;

- первичный ключ не должен изменяться в течение времени;

- размер первичного ключа должен быть как можно меньшим.

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

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

 

Связи

 

Связь в 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-значения) или заданного значения по умолчанию.