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

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

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

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

Закладка Definition используется для ввода определения сущности. Эти определения полезны как на логическом уровне, поскольку позволяют по­нять, что это за объект, так и на физическом уровне, поскольку их можно экспортировать как часть схемы и использовать в реальной БД (CREATE COMMENT on entity_name).

Закладка Note позволяет добавлять дополнительные замечания о сущно­сти, которые не были отражены в определении, введенном в закладке Definition. Здесь можно ввести полезное замечание, описывающее какое-либо бизнес-правило или соглашение по организации диаграммы.

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

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

В закладке Icon каждой сущности можно поставить в соответствие изо­бражение, которое будет отображаться в режиме просмотра модели на уровне иконок. В этой закладке можно задать как большую иконку, которая будет отображаться на уровне Icon, так и малую иконку, которая будет отображаться на всех уровнях просмотра модели. Для связы­вания изображения с сущностью необходимо в диалоге ERwin Icon Editor щелкнуть по кнопке Import и вы­брать соответствующий файл формата bmp. После выбора иконки она ото­бражается в закладке Icon диалога Entity Editor.

Использование свойств, определяемых пользователем (UDP), аналогич­но их использованию в BPwin. Для определения UDP служит диалог User-Defined Property Editor (вызывается из меню Edit/UDPs). В нем необходимо указать вид объекта, для которого заводится UDP (диаграмма в целом, сущность, атрибут и так далее) и тип данных. Для внесения нового свой­ства следует щелкнуть в таблице по кнопке [+] и внести имя, тип данных, значение по умолчанию и определение.

ERwin поддерживает для UDP шесть типов данных:

• Date. Дата. Используется формат MM/DD/YY. Для выбора значения даты можно использовать контекстный календарь;

• Int. Целое число;

• Real. Действительное число;

• Text. Строка (ASCII);

• List. Список. При задании списка в диалоге User-Defined Property Editor значения следует разделять запятой, значение по умолчанию выделяется символом "~" ;

• Command. Команда - выполняемая строка.

Значение свойств, определяемых пользователем, задается в закладке UDP диалога Entity Editor.

Для описания атрибутов следует, "кликнув" правой кнопкой по сущности, выбрать в появившемся меню пункт Attribute Editor. Появляется диалог Attribute Editor.

Если щелкнуть по кнопке New, то в появившемся диалоге New Attribute можно указать имя атрибута, имя соответствующей ему в физи­ческой модели колонки и домен. Домен атрибута будет использоваться при определении типа колонки на уровне физической модели

Каждому домену соответствует стандартная иконка, однако можно им­портировать и дополнительные изображения. Кнопка [...] справа от списка выбора Icon вызывает диалог ERwin Icon Editor, щелкнув по кнопке Import, можно добавить в список необходимую иконку.

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

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

На практике такое переименование не всегда удобно, поэтому существу­ет возможность отменить эту опцию. В диалоге Unique Name Option (меню Option/Unique Name) можно задать следующие режимы имено­вания атрибутов:

• Allow - позволить внесение одинаковых имен;

• Rename - переименовывать атрибуты (по умолчанию);

• Ask - запрашивать возможные действия каждый раз при внесении одно­именных атрибутов. ERwin будет показывать на экране окно-диалог Edit Unique Name каждый раз, когда вводится неуникальное имя сущности или атрибута. В диалоге Edit Unique Name можно ввести другое имя или разрешить дублирование. При этом новое имя не проверяется на уни­кальность;

• Disallow - запретить внесение одинаковых имен. Если двойное имя об­наружено, то ERwm выдает на экран окно с сообщением, что ввод не­уникальных имен запрещается.

Каждый атрибут должен быть определен (закладка Definition), при этом следует избегать циклических определений, например, когда термин 1 опре­деляется через термин 2, термин 2 - через термин 3, а термин 3 в свою оче­редь - через термин 1.

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

При переносе атрибутов внутри и между сущностями можно воспользо­ваться техникой drag&drop, выбрав кнопку в палитре инструментов.

Связи

Связь является логическим соотношением между сущностями. Каждая связь должна именоваться глаголом или глагольной фразой (Relationship Verb Phrases). Имя связи выражает некоторое ограничение или бизнес-правило и облегчает чтение диаграммы. Для отображения имени следует в контекстном меню, которое появляется, если щелкнуть левой кнопкой мыши по любому месту диаграммы, не занятому объектами модели, выбрать пункт Display Options/Relationship и затем включить опцию Verb Phrase.

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

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

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

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

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

Для создания новой связи следует:

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

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

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

Для редактирования свойств связи следует "кликнуть" правой кнопкой мыши по связи и выбрать на контекстном меню пункт Relationship Editor.

В закладке General появившегося диалога можно задать мощность, имя и тип связи.

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

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

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

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

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

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

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

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

Тип связи (идентифицирующая/неидентифицирующая). Для неидентифи­цирующей связи можно указать обязательность (Nulls). В случае обязатель­ной связи (No Nulls) при генерации схемы БД атрибут внешнего ключа получит признак NOT NULL, несмотря на то, что внешний ключ не войдет в состав первичного ключа дочерней сущности. В случае необязательной связи (Nulls Allowed) внешний ключ может принимать значение NULL. Необязательная неидентифицирующая связь помечается прозрачным ром­бом со стороны родительской сущности.

В закладке Definition можно дать более полное определение связи для того, чтобы в дальнейшем иметь возможность на него ссылаться.

В закладке Rolename/RI Actions можно задать имя роли и правила ссы­лочной целостности.

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

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

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

Если атрибут мигрирует в качестве внешнего ключа более чем на один уровень, то на первом уровне отображается полное имя внешнего ключа (имя роли + базовое имя атрибута), на втором и более - только имя роли.

Правила ссылочной целостности (referential integrity (RI) - логические конструкции, которые выражают бизнес-правила использования данных и представляют собой правила вставки, замены и удаления. При генерации схемы БД на основе опций логической модели, задаваемых в закладке Rolename/RI Actions, будут сгенерированы правила декларативной ссылоч­ной целостности, которые должны быть предписаны для каждой связи, и триггеры, обеспечивающие ссылочную целостность. Триггеры представляют собой программы, выполняемые всякий раз при выполнении команд встав­ки, замены или удаления (INSERT, UPDATE или DELETE).

В этом случае возможно установление правила установки в нуль - SET NULL. При удале­нии отдела атрибут внешнего ключа сущностиСотрудник - Где работает. Номер отдела примет значение NULL. Это означает, что при удалении от­дела сотрудник остается работать в организации не будучи приписан к ка­кому-либо отделу и информация о нем сохраняется.

Возможна установка трех правил удаления (если таковые поддер­живаются СУБД):

SET NULL - при удалении атрибуту внешнего ключа присваивается значение NULL.

SET DEFAULT - при удалении атрибуту внешнего ключа присваивается значение по умолчанию.

NONE - при удалении значение атрибута внешнего ключа не меняется.

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

ERwin автоматически присваивает каждой связи значение ссылочной целостности, устанавливаемой по умолчанию, прежде чем добавить ее в диаграмму. Режимы RI, присваиваемые ERwin по умолчанию, могут быть изменены в редакторе Referential Integrity Default, который вызывается, если щелкнуть по кнопке RI Defaults диалога Target Server (меню Server/Target Server).

Связь "многие-ко-многим" возможна только на уровне логической модели данных. Связь "многие-ко-многим" должна именоваться двумя фразами - в обе стороны. Это облегчает чтение диаграм­мы.

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








Дата добавления: 2016-05-16; просмотров: 2169;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.013 сек.