Особенности построения er модели при использовании erwin. Реферат: Моделирование в ERwin. Моделирование в ERwin

Лабораторная работа № 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.

Для установления связей между сущностями и создания внешних ключей ERWin предоставляет возможность разделения типов связей на несколько вариантов:

  • идентифицирующая связь - связь, определяющая однозначное соответствие экземпляра одной сущности единственному экземпляру связанной сущности и, как правило, описывает связь 1:1, но при реализации сцепленного первичного ключа может реализовывать связь один - ко - многим (1:JV);
  • неидентифицирующая связь - связь, реализующая тип связи один - ко - многим (1 :N), представляя внешний ключ в связанной сущности в качестве простого атрибута, на который могут быть наложены определенные дополнительные ограничения по сравнению с обычными информационными атрибутами;
  • множественная связь - связь, реализующая тип связи многие - ко - многим (Л Г:М), представляется только на уровне логической модели, иллюстрируя соединение между сущностями, но не создавая внешних ключей в связанных сущностей;
  • категоризационная - связь, обеспечивающая связывание сущности- общности с сущностями-категориями типом связи один - к - одному (1:1) и одновременно создающая внешний первичный ключ в сущностях-категориях, связанный с первичным ключом сущности-общности.

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

Инструментальное средство ERWin, при установлении связей между сущностями, определяет два вида сущностей:

  • родительская (Parent) - является базовой сущностью, первичный ключ которой может мигрировать в связанную сущность;
  • дочерняя (Child) - определяется сущностью, которая при установлении связи получает внешний ключ, формируемый из мигрирующего первичного ключа родительской сущности.

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

зине. В результате, сущность "Заказ" по отношению к сущности "Клиент" можно рассматривать в качестве дочерней, а сущность "Клиент" - родительской.

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

Рис. 3.15. Базовое описание связи в ERWin


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

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

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

Первая характеристика связи определяет ее тип (рис. 3.17): идентифицирующая или не идентифицирующая. При этом, выбирая соответствующий тип связи, разработчик имеет возможность (для не идентифицирующей связи) уточнять отсутствие экземпляра по родительской сущности, разрешая тем самым для внешнего ключа указывать пустое значение "NULL".

Рис. 3.16. Основные характеристики связи в РЖ Win


Обычно, при установлении не идентифицирующей связи параметр "Null Option" устанавливается в значение "Nulls Not Allowed" (NULL недопустим). Это определяется особенностями работы с данными, в соответствии с которыми дочерний экземпляр данных должен быть связан с родительским экземпляром. Но иногда бывают случаи, когда это не соблюдается. Как правило, такая ситуация возникает, когда объекты предметной области, объединяемые этой связью, являются равнозначными и невозможно однозначно определить первоочередность появления экземпляра той или иной сущности. Тогда устанавливается значение "Null Allowed" (NULL допускается), как это показано в примере (см. рис. 3.17).


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

для настройки. Объясняется это тем, что при установке идентифицирующей связи получаемый в дочерней сущности внешний ключ одновременно является первичным ключом, а правилами построения базы данных первичный ключ не может хранить пустого значения. Поэтому для полученного внешнего ключа устанавливается параметр "Null Not Allowed" (NULL недопустим).

Другой характеристикой, которая дает возможность переходить от связи один - к - одному к связи один - ко - многим и наоборот, является кардинальность. Установление кардинальности (мощности) связи в рамках свойств "Cardinality" и "Cardinality Value" задает правила наполнения экземплярами дочерней сущности (рис. 3.18). Предусматривается четыре варианта кардинальности, определяемые средством ERWin:

  • Zero, One or More (ноль, один или много) - для дочерней сущности возможно любое количество экземпляров, связанных с одним экземпляром родительской сущности, включая вариант отсутствия экземпляров;
  • (Р) One or More (один или много) - количество экземпляров дочерней сущности, связанных с одним экземпляром родительской сущности, может быть любым, но при создании экземпляра в родительской сущности в дочерней сущности экземпляры уже должны существовать, что требует установления параметра "Null Option" в значение "Nulls Allowed", разрешая хранение пустого значения "NULL" во внешнем ключе, полученном при установлении связи;
  • (Z) Zero or One (ноль или один) - определяется связь один - к - одному, разрешая существование не более одного экземпляра данных в дочерней сущности;
  • Cardinality Value (значение кардинальности) - указывает точное количество связанных экземпляров в дочерней сущности, что может быть реализовано только при варианте параметра "Null Option" в значении "Nulls Allowed", первичном создании экземпляров в дочерней сущности и последующим их увязыванием с экземпляром в родительской сущности.

В результате указания кардинальности (мощности) связи на модели в диаграмме будет отображено ее буквенно-цифровое обозначение. Если выбирается вариант кардинальности (мощности) в варианте "Один или много", то будет отображена литера "Р", в случае кардинальности "Ноль или один" - литера "Z", в случае указания точного числового значения - указанное значение, в других вариантах не будет отображаться никаких обозначений на модели.

Еще одна характеристика связи описывается в качестве основной - смысловое наполнение связи (рис. 3.19), обозначаемое глагольной формой.

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


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


Решение этих задач реализуется через механизм "Role Name", где разработчик указывает имя атрибута для внешнего ключа, как оно должно быть представлено в модели базы данных и, в итоге трансформации, в базе данных. Область "Role Name Info" содержит две колонки:

  • Migrated Attribute (мигрирующий атрибут) - показывает атрибут родительской сущности, который представляется внешним ключом в связанной дочерней сущности (изменению не подлежит);
  • Role Name (имя роли) - обозначает новое значение названия атрибута внешнего ключа, которое должно использоваться вместо имени мигрирующего атрибута.

Указание нужного названия атрибута в колонке "Role Name" приведет к переименованию атрибута внешнего ключа и последующего использования нового имени атрибута во всех элементах модели базы данных, где это будет необходимо.

Определение правил ссылочной целостности (рис. 3.21) является этапом физического моделирования базы данных. Связано это с тем, что отдельные правила для некоторых СУБД могут быть недоступны. Тем не менее, ERWin на этапе логического моделирования предоставляет возможность указать правила ссылочной целостности для формируемых связей. На этом этапе разработчику предлагается максимальный набор правил :

  • None (отсутствует) - правило, предполагающее любые действия пользователя без влияния на другие элементы базы данных;
  • No Action (без действия) - правило, предполагающее определенные разработчиком действия;
  • Restrict (запретить) правило, запрещающее выполнение операции над данными, если проверочное условие выполняется;
  • Cascade (каскадно) - правило, выполняющее последовательные действия над связанными данными в соответствии с действием, выполняемым над данными, к которым определено данное правило;
  • Set Null (установить NULL) - правило, устанавливающее значение NULL внешнему ключу для связанных экземпляров;
  • Set Default (установить умолчание) - правило, устанавливающее значение по умолчанию, определенное для внешнего ключа связанного экземпляра.

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


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


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

В результате выполнения этих действий в модели базы данных будет представление связи аналогично указанному выше примеру (см. рис. 3.22).

Связь категоризации бывает двух типов, один из которых необходимо определить при установлении этого типа связи (рис. 3.23). Для обозначения различий в типе связи категоризации обозначение графического элемента будет представляться с двумя чертами или одной чертой (табл. 3.1).




Для самой связи категоризации никакие прочие характеристики не определяются, и разработчику предоставляется только возможность просмотра структуры связи категоризации (рис. 3.24). Это описание дает возможность увидеть, какие сущности-категории определены подтипами (subtypes), а какая сущность-общность представлена надтипом (supertype).

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

Рис. 3.24. Описание связи категоризации в ЕИЧп

  • Подробное рассмотрение правил ссылочной целостности рассматривается в параграфе 3.2.

Рассмотрим цикл разработки на примере, приведенном в статье Кодда .
Коротко напомним содержательную сторону задачи. Ведется учет служащих. Для каждого служащего хранится информация о детях и о списке занимавшихся этим служащим должностей. Для должностей хранится информация по установленным должностным окладам.
Сначала создадим логический уровень модели. Для этого зададим режим отображения сущностей (Display/Entity Level). Создадим при помощи линейки инструментов сущности "служащий", "дети", "история работы", "история зарплаты". Будем именовать сущности на русском языке.
Выбрав каждую сущность, зададим для нее подробное описание на русском языке в редакторе "Entity Definition". Это описание появится в отчетах ERwin и может быть отображено на диаграмме.
Укажем связи между сущностями. Например, "служащий" связан идентифицирующей связью "является родителем" с сущностью "дети". Описание связи вводится в редакторе "Editor/Relationship".
Результат работы отображен на диаграмме ERwin (рис. 2).

Рис. 2. Диаграмма уровня сущности

Теперь перейдем в режим задания атрибутов (Display/Atribute Level). В редакторе "Entity/Attribute" зададим на русском языке имена ключевых и неключевых атрибутов. Заметим, что для дочерней сущности "дети" ключевой атрибут "номер служащего" не указывается вручную. ERwin обеспечивает его миграцию из родительской сущности. То же происходит с другими дочерними сущностями.
Для атрибута "имя" сущности "служащий" укажем, что он является альтернативным ключом (будем считать, что у всех служащих уникальные имена/фамилии). Для этого после имени атрибута поместим указатель AK1 в скобках.
Результат работы отображен на диаграмме ERwin (рис. 3) в нотации IDEF1X.

Рис. 3. Диаграмма уровня атрибутов в нотации IDEF1X

Вид той же диаграммы в нотации IE (Information Engineering) показан на рис.4.

Рис. 4. Диаграмма уровня атрибутов в нотации IE

Так как имена атрибутов и сущностей задавались нами на русском языке, для перехода к физическому уровню модели следует поставить им в соответствие идентификаторы таблиц, колонок и ограничений, удовлетворяющие правилам целевой СУБД (обычно это означает использование латинских букв, цифр и некоторых специальных символов).
В редакторе "Database Schema" указываем для каждой сущности соответствующее имя таблицы. Затем в редакторе "Attribute Definition" задаем имена колонок таблиц, соответствующие атрибутам сущностей. ERwin и здесь обеспечивает миграцию имен колонок в подчиненные таблицы.
На этом этапе можно воспользоваться и редактором "Extended Attributes" для определения расширенных атрибутов PowerBuilder (формата отображения, маски редактирования, правила контроля, выравнивания, заголовков и комментариев).
В редакторе "Relationship Definitions" указывается физическое имя связи, которое соответствует имени ограничения (constraint), создаваемого ERwin в базе данных.
Теперь все готово к созданию БД и нужно выбрать целевую СУБД (если этого не было сделано раньше). Выберем, например, Sybase System 10.
В редакторе SYBASE Database Schema задаем типы данных для колонок таблиц.
Диалог, в котором происходит выбор типа данных, приведен на рис.5.

Рис. 5. Определение физической модели

Теперь можно перейти к созданию базы данных. Для этого выполняется команда "Sybase schema generation". ERwin построит пакет SQL-предложений генерации базы данных. На рис.6 показан диалог выбора параметров генерации пакета для генерации БД. На рисунке видно, что может быть задан фильтр (генерация не всех таблиц), пакет SQL-предложений можно просмотреть (preview), распечатать, сохранить в файл (report), выполнить генерацию (generate).

Рис. 6. Выбор параметров генерации базы данных

Расширенные функции 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. Цель работы: освоение принципов подготовки физической модели данных для генерации системного каталога БД.

Соглашения

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

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

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

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

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

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

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