Главная страница
Навигация по странице:

  • 1.1 Уровни логической модели

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

  • 1.3 Виды связей

  • 1.4 Правила ссылочной целостности

  • 1.5 Типы сущностей и иерархия наследования

  • программа. 1 ПРОГРАММА ERWIN. 1 программа erwin


    Скачать 0.52 Mb.
    Название1 программа erwin
    Анкорпрограмма
    Дата02.11.2020
    Размер0.52 Mb.
    Формат файлаdocx
    Имя файла1 ПРОГРАММА ERWIN.docx
    ТипПрограмма
    #147404
    страница1 из 4
      1   2   3   4


    1 ПРОГРАММА ERWIN
    После запуска программы ERwin 4.1 на экране появится запрос о создании новой модели или открытии уже существующей. Необходимо выбрать «Сreate a new model». Для подтверждения своего выбора нажмите «ОK». Далее предлагается выбрать тип будущей модели и тип сервера, для которого будет генерироваться база данных (рисунок 1.1). В качестве примера работы с программой выбран тип модели – «Logical/Physical», а тип сервера – «FoxPro».

    Рисунок 1.1 – Установка типа модели
    Основное окно программы ERwin изображено на рисунке 1.2. По умолчанию при запуске программы исходная модель получает имя «Model», ее рабочая область – имя «Main Subject Area» (главное подмножество объектов) и сохраняется как хранимое отображение
    «Display1».

    Для переключения между логическим и физическим уровнями слева на панели инструментов имеется выпадающий список
    («Logical/Physical»). Изменение уровня просмотра модели осуществляется с помощью группы кнопок: уровень сущностей, уровень атрибутов, уровень определений.

    Для непосредственной работы с элементами модели имеется палитра инструментов View->Toolbars->Toolbox.


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

    Палитра инструментов выглядит различно на разных уровнях отображения модели (рисунок 1.3).

    Рисунок 1.3 – Панель инструментов на логическом уровне
    На логическом уровне палитра инструментов имеет (слева направо):

    • кнопку указателя (режим мыши). В этом режиме можно установить фокус на каком-либо объекте модели;

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

    • кнопку категории. Категория, или категориальная связь,  специальный тип связи между сущностями. Для установления категориальной связи нужно щелкнуть левой кнопкой мыши по кнопке категории, затем один раз щелкнуть по сущности-родовому предку, затем – по сущности-потомку;

    • кнопки создания связей: идентифицирующую, «многие-ко-многим» и неидентифицирующую.

    На физическом уровне палитра инструментов (рисунок 1.4)
    имеет:

    • вместо кнопки категорий кнопку внесения представлений (view);

    • вместо кнопки связи «многие-ко-многим» кнопку связей представления.



    Рисунок 1.4 – Панель инструментов на физическом уровне
    Для создания моделей данных в ERwin можно использовать две нотации: IDEF1X и IE (Information Engineering). Переключение между нотациями можно сделать в закладке Notation диалога «Model/Model properties». В данной работе используется нотация IDEF1X (рисунок 1.5).

    Рисунок 1.5 – Выбор используемой нотации

    ERwin имеет несколько уровней отображения диаграммы:

    • уровень сущностей;

    • уровень атрибутов;

    • уровень определений;

    • уровень первичных ключей;

    • уровень иконок.

    Переключиться между первыми тремя уровнями можно с использованием кнопок панели инструментов. Переключиться на другие уровни отображения можно при помощи контекстного меню, которое появляется, если «кликнуть» по любому месту диаграммы, не занятому объектами модели. В контекстном меню следует выбрать пункт
    «Display Level» и затем необходимый уровень отображения. ERwin позволяет связать с сущностью большую и малую иконки. При переключении на уровень иконок показывается большая иконка. Для отображения малой иконки следует выбрать в контекстном меню пункт
    «Display Options/Entities» и в каскадном меню включить опцию
    «Entity Icon».
    1.1 Уровни логической модели
    Различают три уровня логической модели, отличающихся по глубине представления информации о данных:

    • диаграмма «сущность-связь» (Entity Relationship Diagram (ERD));

    • модель данных, основанная на ключах (Key Based model (KB));

    • полная атрибутивная модель (Fully Attributed model (FA)).

    Описание уровней логических моделей представлено в таблице 1.
    Таблица 1 – Уровни логической модели

    Уровни

    Описание

    Диаграмма «сущность-связь»

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

    Модель
    данных,
    основанная на ключах

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

    Полная атрибутивная модель

    Наиболее детальное представление структуры данных: представляет данные в третьей нормальной форме и включает все сущности, атрибуты и связи

    1.2 Сущности и атрибуты
    Основные компоненты диаграммы ERwin – это сущности, атрибуты и связи. Каждая сущность является множеством подобных индивидуальных объектов, называемых экземплярами. Каждый экземпляр индивидуален и должен отличаться от всех остальных экземпляров. Атрибут выражает определенное свойство объекта. С точки зрения базы данных (физическая модель) сущности соответствует таблица, экземпляру сущности – строка в таблице, а атрибуту – колонка таблицы.

    Построение модели данных предполагает определение сущностей и атрибутов, т.е. необходимо определить, какая информация будет храниться в конкретной сущности или атрибуте. Сущность можно определить как объект, событие или концепцию, информация о которых должна сохраняться. Сущности должны иметь наименование с четким смысловым значением. Фактически имя сущности дается по имени ее экземпляра. Примером может быть сущность «Заказчик» (но не
    «Заказчики»!) с атрибутами «Номер заказчика», «Фамилия заказчика» и «Адрес заказчика». На уровне физической модели ей может соответствовать таблица «Customer» с колонками «Customer_number», «Customer_name» и «Customer_address».

    Для внесения сущности в модель необходимо убедиться, что вы находитесь на уровне логической модели, и «кликнуть» по кнопке сущности на панели инструментов (ERwin Toolbox), затем «кликнуть» по тому месту на диаграмме, где необходимо расположить новую сущность. Щелкнув правой кнопкой мыши по сущности и выбрав из всплывающего меню пункт «Entity Editor…», можно вызвать диалог «Entity Editor», в котором определяются имя, описание и комментарии сущности.

    Каждая сущность должна быть полностью определена с помощью текстового описания в закладке «Definition». Закладки «Note», «Note 2», «Note 3» (в прежних версиях «Query» и «Sample»), «UDP» (User
    Defined Properties) служат для внесения дополнительных комментариев и определений к сущности (таблица 2).

    Для определения UDP служит диалог «User-Defined Property
    Editor» (меню «Edit/UDPs…»). В нем необходимо указать вид объекта, для которого заводится UDP (диаграмма в целом, сущность, атрибут и т.д.), и тип данных. Для внесения нового свойства следует щелкнуть в таблице по кнопке, на которой изображен знак «+», и внести имя, тип данных, значение по умолчанию и определение. ERwin поддерживает для UDP шесть типов данных, в том числе List – список (при задании списка значения следует разделять запятой, значение по умолчанию выделяется символом «

    »), Command – команда – выполняемая строка. Значение свойств, определяемых пользователем, задается в закладке UDP диалога «Entity Editor».
    Таблица 2 – Назначение закладок

    Наименование

    Описание

    Definition

    Используется для ввода определения сущности

    Note

    Можно ввести полезное замечание, описывающее какое-либо бизнес-правило или соглашение по организации диаграммы

    Note 2

    Можно задокументировать некоторые возможные запросы, которые, как ожидается, будут использоваться по отношению к сущности в БД

    Note 3

    Позволяет вводить примеры данных для сущности
    (в произвольной форме)

    Icon

    Каждой сущности можно поставить в соответствие изображение, которое будет отображаться в режиме просмотра модели на уровне иконок


    Атрибут или группа атрибутов, которые идентифицируют сущность, называется первичным ключом. Для описания атрибутов следует, «кликнув» правой кнопкой по сущности, выбрать в появившемся меню пункт «Attribute Editor». Появляется диалог «Attribute Editor». Если щелкнуть по кнопке «New…», то в появившемся диалоге «New
    Attribute» можно указать имя атрибута, имя соответствующей ему в физической модели колонки и домен. Домен атрибута будет использоваться при определении типа колонки на уровне физической модели. Для атрибутов первичного ключа в закладке «General» диалога «Attribute Editor» необходимо сделать пометку в окне выбора «Primary Key».

    Закладка «Definition» позволяет записывать определения отдельных атрибутов. Определения атрибутов можно также сгенерировать как часть схемы (CREATE COMMENT on entity_name.attribute_name). Закладка «Note» позволяет добавлять замечания об одном или нескольких атрибутах сущности, которые не вошли в определения. Закладка «UDP» служит для задания значений свойств, определяемых пользователем. Предварительно эти свойства должны быть внесены в диалог «User-Defined Property Editor» как свойства атрибутов.

    При установлении связей между сущностями атрибуты первичного ключа родительской сущности мигрируют в качестве внешних ключей в дочернюю сущность. Кнопка «Migrate…» диалога «Attribute Editor» вызывает диалог «Migrate Attribute Property», в котором можно задать свойства, сохраняемые при миграции.

    Для большей наглядности диаграммы каждый атрибут можно связать с иконкой. При помощи списка выбора «Icon» в закладке
    «General» можно связать иконку с атрибутом.

    Для отображения иконки атрибута следует выбрать в контекстном меню пункт «Display Options/Entities» и в каскадном меню включить опцию «Attribute Icon».

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

    Каждый атрибут должен быть определен (закладка «Definition»), при этом следует избегать циклических определений, например, когда термин 1 определяется через термин 2, термин 2 – через термин 3, а термин 3, в свою очередь, – через термин 1. Иногда определение атрибута легче дать через описание области значения. Например, «оценка школьника» – это число, принимающее значения 2, 3, 4 и 5.

    Часто приходится создавать производные атрибуты, то есть атрибуты, значение которых можно вычислять из других атрибутов. Примером производного атрибута может служить «Возраст сотрудника», который может быть вычислен из атрибута «Дата рождения сотрудника». Такой атрибут может привести к конфликтам; действительно, если вовремя не обновить значение атрибута «Возраст сотрудника», он может противоречить значению атрибута «Дата рождения сотрудника». Производные атрибуты – ошибка нормализации, однако их вводят для повышения производительности системы.
    1.3 Виды связей
    Связь является логическим соотношением между сущностями. Каждая связь должна именоваться глаголом или глагольной фразой (рисунок 1.6).


    Рисунок 1.6 – Имя связи
    Имя связи выражает некоторое ограничение или бизнес-правило и облегчает чтение диаграммы, например:

    • каждый КЛИЕНТ <размещает> ЗАКАЗы;

    • каждый ЗАКАЗ <выполняется> СОТРУДНИКом.

    Связь показывает, какие именно заказы разместил клиент и какой именно сотрудник выполняет заказ. По умолчанию имя связи на диаграмме не показывается. Для отображения имени следует в контекстном меню, которое появляется, если щелкнуть левой кнопкой мыши по любому месту диаграммы, не занятому объектами модели, выбрать пункт «Display Options/Relationship» и затем включить опцию «Verb Phrase».

    На логическом уровне можно установить идентифицирующую связь «один-ко-многим», связь «многие-ко-многим» и неидентифицирующую связь «один-ко-многим» (соответственно это кнопки слева направо в палитре инструментов).

    Связь «многие-ко-многим» (рисунок 1.7) возможна только на уровне логической модели данных. Такая связь обозначается сплошной линией с двумя точками на концах.

    Рисунок 1.7 – Связь «многие-ко-многим»
    Для внесения связи следует установить курсор на кнопке с изображением сплошной линии с двумя точками на концах в палитре инструментов, щелкнуть сначала по одной, а затем по другой сущности.

    Связь «многие-ко-многим» должна именоваться двумя фразами – в обе стороны. Это облегчает чтение диаграммы.

    При переходе к физическому уровню ERwin автоматически преобразует связь «многие-ко-многим», добавляя новую таблицу и устанавливая две новые связи «один-ко-многим» от старых к новой таблице. При этом имя новой таблице автоматически присваивается как «Имя1_Имя2».

    В IDEF1X различают зависимые и независимые сущности. Тип сущности определяется ее связью с другими сущностями. Идентифицирующая связь устанавливается между независимой (родительский конец связи) и зависимой (дочерний конец связи) сущностями. Когда рисуется идентифицирующая связь (рисунок 1.8), ERwin автоматически преобразует дочернюю сущность в зависимую.


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

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

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

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

    Рисунок 1.9 – Неидентифицирующая связь
    Для создания новой связи следует:

    • установить курсор на нужной кнопке в палитре инструментов (идентифицирующая или неидентифицирующая связь) и нажать левую кнопку мыши;

    • щелкнуть сначала по родительской, а затем по дочерней сущности.

    Для редактирования свойств связи следует «кликнуть» правой кнопкой мыши по связи и выбрать в контекстном меню пункт «Relationship Editor». В закладке «General» появившегося диалога можно задать мощность, имя и тип связи.

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

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

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

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

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

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

    По умолчанию символ, обозначающий мощность связи, не показывается на диаграмме. Для отображения имени следует в контекстном меню (которое появляется, если щелкнуть левой кнопкой мыши по любому месту диаграммы, не занятому объектами модели) выбрать пункт «Stored Display Settings/Logical» и затем включить опцию «Cardinality» (рисунок 1.10).

    Имя связи («Verb Phrase») – фраза, характеризующая отношение между родительской и дочерней сущностями. Для связи «один-ко-многим», идентифицирующей или неидентифицирующей, достаточно указать имя, характеризующее отношение родительской к дочерней сущности («Parent-to-Child»). Для связи «многие-ко-многим» следует указывать имена как «Parent-to-Child», так и «Child-to-Parent».

    Возможна связь двух типов: идентифицирующая и неидентифицирующая.

    Рисунок 1.10 – Мощность связи
    Для неидентифицирующей связи можно указать обязательность («Nulls»). В случае обязательной связи («No Nulls») при генерации схемы БД атрибут внешнего ключа получит признак «Not Null», несмотря на то, что внешний ключ не войдет в состав первичного ключа дочерней сущности.

    В случае необязательной связи («Nulls Allowed») внешний ключ может принимать значение «Null». Необязательная неидентифицирующая связь помечается прозрачным ромбом со стороны родительской сущности. В закладке «Definition» можно дать более полное определение связи для того, чтобы в дальнейшем иметь возможность на него ссылаться.

    В закладке «Role name/RI Actions» можно задать имя роли и правила ссылочной целостности. Имя роли (функциональное имя) – это синоним атрибута внешнего ключа, который показывает, какую роль играет атрибут в дочерней сущности.

    По умолчанию в списке атрибутов показывается только имя роли. Для отображения полного имени атрибута (как функционального имени, так и имени роли) следует в контекстном меню, которое появляется, если щелкнуть левой кнопкой мыши по любому месту диаграммы, не занятому объектами модели, выбрать пункт «Display Options/Entities» и затем включить опцию «Rolename/Attribute».

    Полное имя показывается как функциональное имя и базовое имя, разделенные точкой.

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

    Другим примером обязательности присвоения имен ролей являются рекурсивные связи (иногда их называют «рыболовный крючок» – fish hook), когда одна и та же сущность является и родительской и дочерней одновременно. При задании рекурсивной связи атрибут должен мигрировать в качестве внешнего ключа в состав неключевых атрибутов той же сущности. Атрибут не может появиться дважды в одной сущности под одним именем, поэтому обязательно должен получить имя роли. Рекурсивная связь может быть только неидентифицирующей.

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

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

    Если атрибут мигрирует в качестве внешнего ключа более чем на один уровень, то на первом уровне отображается полное имя внешнего ключа (имя роли + базовое имя атрибута), на втором и более – только имя роли.
    1.4 Правила ссылочной целостности
    Правила ссылочной целостности (Referential Integrity (RI)) – логические конструкции, которые выражают бизнес-правила использования данных и представляют собой правила вставки, замены и удаления.

    При генерации схемы БД на основе опций логической модели, задаваемых в закладке «Rolename/RI Actions», будут сгенерированы правила декларативной ссылочной целостности, которые должны быть предписаны для каждой связи, и триггеры, обеспечивающие ссылочную целостность. Триггеры представляют собой программы, выполняемые всякий раз при выполнении команд вставки, замены или удаления (Insert, Update или Delete).

    Правила удаления управляют тем, что будет происходить в БД при удалении строки. Аналогично правила вставки и обновления управляют тем, что будет происходить с БД, если строки изменяются или добавляются.

    ERwin автоматически присваивает каждой связи значение ссылочной целостности, устанавливаемой по умолчанию, прежде чем добавить ее в диаграмму. Режимы RI, присваиваемые ERwin по умолчанию, могут быть изменены в редакторе «Referential Integrity Default», который вызывается, если щелкнуть по кнопке «RI Defaults…» диалога «Target Server» (меню Server->Target->Server…).
    1.5 Типы сущностей и иерархия наследования
    Как было указано выше, связи определяют, является ли сущность независимой или зависимой. Различают несколько типов зависимых сущностей:

    • характеристическая – зависимая дочерняя сущность, которая связана только с одной родительской и по смыслу хранит информацию о характеристиках родительской сущности;

    • ассоциативная – сущность, связанная с несколькими родительскими сущностями, содержащая информацию о связях сущностей;

    • именующая – частный случай ассоциативной сущности, не имеющей собственных атрибутов (только атрибуты родительских сущностей, мигрировавших в качестве внешнего ключа);

    • категориальная – дочерняя сущность в иерархии наследования.

    Иерархия наследования (или иерархия категорий) представляет собой особый тип объединения сущностей, которые разделяют общие характеристики.

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

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

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


    Рисунок 1.11 – Иерархия наследования (полная категория)
    Если категория еще не выстроена полностью и в родовом предке могут существовать экземпляры, которые не имеют соответствующих экземпляров в потомках, то такая категория будет неполной (рису-
    нок 1.12).

    Рисунок 1.12 – Иерархия наследования (неполная категория)
    Полная категория помечается кружком с двумя горизонтальными чертами, неполная – кружком с одной чертой. Возможна комбинация полной и неполной категорий (рисунок 1.13).

    Рисунок 1.13 – Иерархия наследования (комбинация полной
    и неполной категорий)
    Для создания категориальной связи следует:

    • установить курсор на кнопке с изображением кружка и двух горизонтальных черт в палитре инструментов и нажать левую кнопку мыши;

    • щелкнуть сначала по родовому предку, а затем по потомку.

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

    Для редактирования категорий нужно щелкнуть правой кнопкой мыши по символу категории и выбрать в контекстном меню пункт «Subtype Relationship Editor…». В диалоге «Subtype Relationship» можно указать атрибут – дискриминатор категории (список «Discriminator Attribute Choice») и тип категории – полная/неполная (радиокнопки «Complete/Incomplete»).

    Рассмотрим возможные стадии построения иерархии наследования.

    1. Перенос общих атрибутов в сущность «родовой предок».
      В случае обнаружения совпадающих по смыслу атрибутов следует создать новую сущность «родовой предок» и перенести в нее общие атрибуты.

    2. Создание неполной структуры категорий. Создается категориальная связь от новой сущности – родового предка к старым сущностям – потомкам. Новая сущность дополняется атрибутом-дискримина-тором категории.

    3. Создание полной структуры категорий. Проводится дополнительный поиск сущностей, имеющих общие по смыслу атрибуты с родовым предком. Общие атрибуты переносятся в сущность «родовой предок», и категория преобразуется в полную (признак полной категории устанавливается в диалоге «Subtype Relationship»).

    4. Комбинации полной и неполной структур категорий. При необходимости создание иерархии категорий можно продолжить. Для каждого потомка может найтись сущность с общими атрибутами, тогда сущность «потомок» становится родовым предком для новых потомков, и т.д.

      1   2   3   4


    написать администратору сайта