Общие принципы работы в erwin. Логическая и физическая модели в erwin data modeler Erwin создание логической модели

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

● тип связи (идентифицирующая, неидентифицирующая, полная/неполная категория, неспецифическая связь);

● родительская сущность;

● дочерняя (зависимая) сущность;

● мощность связи (cardinality);

● допустимость пустых (null) значений.

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

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

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

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

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

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

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

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

· допустимость пустых (NULL) значений в не идентифицирующих связях ERwin изображает пустым ромбиком на дуге связи со стороны родительской сущности.

Имя связи на логическом уровне представляет собой глагол, связывающий сущности. Физическое имя связи (которое может отличаться от логического) для ERWin означает имя ограничения или индекса. Для отображения имени связи выберите опцию в меню: Format/Relationship Display/Verb phrase.

Некоторые сущности определяют целую категорию объектов одного типа. В ERwin в таком случае создается сущность для определения категории и для каждого элемента категории, а затем вводится для них связь категоризации. Родительская сущность категории называется супертипом, а дочерние - подтипом.

Например, сущность «входящий документ» может быть как запросом, так и распоряжением. Первые и вторые имеют различные, частично пересекающиеся наборы атрибутов (минимальное пересечение подтипов составляет первичный ключ). Общая часть этих атрибутов, включая первичный ключ, помещается в сущность-супертип «входящий документ». Различная часть (например, данные о содержании, отправителе) помещается в сущности-подтипы.

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

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

Рисунок 1.4 - Пример неполного множества категорий

Рисунок 1.5 - Пример полного множества категорий

3. Сущность может быть общей сущностью в любом количестве отношений категоризации.

4. Атрибуты первичного ключа сущности-категории должны совпадать с атрибутами первичного ключа общей сущности.

5. Все экземпляры сущности-категории имеют одно и то же значение дискриминатора, и все экземпляры других категорий должны иметь другие значения дискриминатора (см. рис. 4 и рис.5).

Роли.

Имя роли (функциональное имя) – это синоним атрибута внешнего ключа, который показывает, какую роль играет атрибут в дочерней сущности. По умолчанию в списке атрибутов показываются только имя роли. Для отображения полного имени атрибута (как функционального имени, так и имени роли) следует в контекстном меню выбрать пункт Format/ Entity Display и затем включить опцию Rolename/Attribute. Полное имя показывается как функциональное имя и базовое имя, разделенные точкой. Имя роли задается на вкладке Rolename диалогового окна Relationship. Это окно вызывается двойным щелчком мыши по линии связи.

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

Представления.

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

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

· тип связи (идентифицирующая, неидентифицирующая, полная/неполная категория, неспецифическая связь);

· родительская сущность;

· дочерняя (зависимая) сущность;

· мощность связи (cardinality);

· допустимость пустых (null) значений.

Связь называется идентифицирующей, если экземпляр дочерней сущности идентифицируется через ее связь с родительской сущностью. Атрибуты, составляющие первичный ключ родительской сущности, при этом входят в первичный ключ дочерней сущности. Дочерняя сущность при идентифицирующей связи всегда является зависимой.
Связь называется неидентифицирующей, если экземпляр дочерней сущности идентифицируется иначе, чем через связь с родительской сущностью. Атрибуты, составляющие первичный ключ родительской сущности, при этом входят в состав неключевых атрибутов дочерней сущности.
Для определения связей ERwin выбирается тип связи, затем мышью указывается родительская и дочерняя сущность. Идентифицирующая связь изображается сплошной линией; неидентифицирующая - пунктирной линией. Линии заканчиваются точкой со стороны дочерней сущности.
При определении связи происходит миграция атрибутов первичного ключа родительской сущности в соответствующую область атрибутов дочерней сущности. Поэтому такие атрибуты не вводятся вручную.
Атрибуты первичного ключа родительской сущности по умолчанию мигрируют со своими именами. ERwin позволяет ввести для них роли, т.е. новые имена, под которыми мигрирующие атрибуты будут представлены в дочерней сущности. В случае неоднократной миграции атрибута такое переименование необходимо. Например, сущность "посредническая сделка" имеет атрибут "код предприятия-продавца" и "код предприятия-покупателя". В данном случае первичный ключ сущности "предприятие" ("код предприятия") имеет две роли в дочерней сущности.
На физическом уровне имя роли - это имя колонки внешнего ключа в дочерней таблице.
Мощность связи представляет собой отношение количества экземпляров родительской сущности к соответствующему количеству экземпляров дочерней сущности. Для любой связи, кроме неспецифической, эта связь записывается как 1:n.
ERwin в соответствии с методологией IDEF1X предоставляет 4 варианта для n, которые изображаются дополнительным символом у дочерней сущности: ноль, один или больше (по умолчанию); ноль или один; ровно N, где N - конкретное число.
Допустимость пустых (NULL) значений в неидентифицирующих связей ERwin изображает пустым ромбиком на дуге связи со стороны родительской сущности.
Обозначения мощности соответственно ноль, один или больше, один или больше, ноль или один в нотации IE приведены на рис. 1.

Рис.1. Обозначения мощности связи в нотации IE

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

Лабораторна рОбота №3. Моделирование баз данных средствами Erwin

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

Основные сведения

Система ERwin поддерживает прямое и обратное моделирование баз данных. При прямом моделировании схема базы данных описывается в прямом виде с использованием диаграммы сущность-связь. Сущности на диаграмме представляются прямоугольниками. Каждый прямоугольник может иметь различные визуальные атрибуты. Каждой сущности должно быть присвоено уникальное имя. Имена сущностей необходимо задавать в единственном числе. Это определяется тем, что система всегда оперирует отдельными экземплярами сущности. При этом отдельные экземпляры сущности рассматриваются как объекты, а сущности – как класс объектов. Если сущности были описаны при моделировании в BPwin, то их можно просто импортировать в ERwin. Пример диаграммы с созданными сущностями приведен на рисунке.

Рисунок 4 - Пример диаграммы с созданными сущностями

Построение моделей в 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 (диаграмма в целом, сущность, атрибут и т.д.) и тип данных. Для внесения нового свойства следует щелкнуть в таблице по кнопке и внести имя, тип данных, значение по умолчанию и определение.

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

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

Рисунок 5 - Создание нового домена Рисунок 6 - Указание свойств нового домена

Рисунок 7 - Значение по умолчанию для нового домена

Рисунок 8 - Использование домена для указания типа данных атрибуту.

Для описания атрибутов следует, щелкнув правой кнопкой по сущности, выбрать в появившемся меню пункт 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

После указания всем атрибутам формата данных необходимо созданную логическую модель преобразовать в физическую. Для этого необходимо в Tools выбрать Derive New Model , где в качестве Target Databases выберите ODBC/Generic (для использования в СУБД MySQL) см. Рисунок 9. Наша модель (см Рисунок 4) будет преобразована к виду см.Рисунок 11.

Рисунок 9 - Преобразование логической модели в физическую

Рисунок 10 - Физическая модель с указанием формата данных.

Рисунок 11 - Генерация кода SQL

Задание

1. Выполните построение диаграммы с заданными сущностями (прямое моделирование) для заданной предметной области.

2. Задайте атрибуты для каждой определенной сущности. При задании атрибутов используйте домены.

3. Введите связи между сущностями. Присвойте связям уникальные имена.

4. Используя СУБД MYSQL, решите прямую генерацию базы данных для проектируемой информационной.

5. Отчет должен содержать концептуальную модель и физическую базу данных в СУБД MYSQL.

Контрольные вопросы

1. В чем состоит различие логического и физического уровней представления моделей данных с помощью ERwin?

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

3. Какие основные компоненты содержат модели данных, представленные по методологии IDEF1X?


Перечень типов данных, поддерживаемых СУБД необходимо уточнить у производителя

Соглашения

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

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

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

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

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

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

· Запись типа 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 с.