Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Структурно-функциональный подход к проектированию информационных технологий и автоматизированных систем с использованием CASE-средств

..pdf
Скачиваний:
1
Добавлен:
12.11.2023
Размер:
3.01 Mб
Скачать

Внешний ключ

Когда создается отношение между объектами, ERwin автоматически передает первичный ключевой атрибут (s) родительского объекта, на объ- ект-потомок. Обозначение (FK) указывает имя переданного ключевого атрибута (внешний ключ). Эта пересылка происходит автоматически в физической модели.

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

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

Управление внешними ключами.

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

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

Нарисуйте связь между двумя сущностями или между сущностью и ею же самой (рекурсивная связь). Внешний ключ автоматически мигрирует.

Примечание: чтобы видеть автоматическую миграцию внешних ключей, нужно установить режим просмотра диаграммы Attribute (Format/Display Level); должны быть уже созданы атрибуты первичного ключа в родительской сущности.

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

Связи

Связь – это соотношение либо между двумя сущностями, либо между сущностью и этой же сущностью.

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

111

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

Если связь уже создана на диаграмме, то можно изменить ее тип в ре-

дакторе Relationshipsв закладке General.

Нулевые значения

По умолчанию для не идентифицирующей связи задается режим Nulls Allowed, что означает, что дочерняя сущность может существовать без родительской, и связь называется необязательной; No Nullsозначает, что существование дочерней сущности зависит от родительской, и связь называется обязательной. В случае необязательной связи (Nulls Allowed) на родительском конце не идентифицирующей связи ERwin ставит знак – ромбик.

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

Создание связи

1.Установите курсор на нужный инструмент и нажмите левую кнопку

мыши;

2.Щелкните по родительской, а затем по дочерней сущности. Примечание: если установить курсор на линию связи, нажать

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

Изменение типа связи

1.Войдите в редактор Relationships;

2.Нажмите нужную кнопку в окне Relationship Type(Identifying-

идентифицирующая, Non-identifying – не идентифицирующая). Примечание: рекурсивной связи в ERwin автоматически присваива-

ется тип Non-identifying, который изменить нельзя.

112

Работа в редакторе Relationships

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

внешнего ключа.

Закладка Rolename

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

Rolename.

Закладка General

Введите имя, которое идентифицирует связь, в окне Verb Phrase. Редактор Relationshipsпоказывает первые четыре строки глагольной фразы и позволяет вводить и просматривать даже большее число строк.

Примечание: для отображения на диаграмме глагольной фразы следует поставить метку в соответствующее меню (Format/Relationships Display/Verb Phrase).

Можно задать здесь тип связи Identifyingили Non-identifying. Cardinalityи Nullsслужат для мощности и режима нулевых значе-

ний для текущей связи.

Мощность связи служит для обозначения отношения числа экземпляров родительской сущности к числу экземпляров дочерней. Родительская сущность может связываться с дочерней одним из четырех способов. В IDEF1X мощность бинарных отношений (мощность связи) равна 1:n, где

nможет принимать значения:

0, 1 или более (Zero, one or More) – обозначается пустым местом. Каждая родительская сущность связана с 0, 1 или более экземпляров дочерней сущностей.

1 или более (One or More) – обозначается буквой Р. Каждая родительская сущность связана с 1 или более экземпляров дочерней.

0 или 1 (Zero or One) – обозначается буквой Z. Каждая родительская сущность связана с 0 или 1 экземпляром дочерней.

ровно n (Exactly), где n– некоторое число. Каждая родительская сущность связана с ровно n экземплярами дочерней.

Чтобы показать мощность связи следует дать команду Cardinalityв

меню (Format/Relationships Display).

Влияние удаления связи на внешний ключ

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

113

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

Использование имен ролей атрибутов

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

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

Имя роли состоит из трех частей: присваиваемое имя роли, точка – разграничитель и базовое имя. Имя роли присваивается атрибуту внешнего ключа в редакторе Relationshipsи Subtype Relationshipss. ERwin встав-

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

Изображение имен ролей на диаграмме

Для того чтобы показать на экране или убрать имя роли с присоединенным базовым именем, следует дать команду Rolename/Attribute(Format/Entity Display). Если режим Rolename/Attributeвключен, то ERwin

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

Понятие унификации

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

114

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

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

Перенос или копирование атрибута

1.Щелкнуть по инструменту управления атрибутами на Toolbox.

2.Выбрать один или несколько атрибутов исходной сущности. Можно

щелкнуть мышью для выбора одной сущности или нажать SHIFTили CTRLодновременно с кнопкой мыши для выбора нескольких атрибутов.

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

Примечание: при выборе рядом стоящих атрибутов нажимайте SHIFT-Click, а при выборе изолированных атрибутов – CTRL-Click. Чтобы вставить атрибут в конец первичного ключа или не ключевой области сущности, вставьте его на вторую с конца позицию, а затем перенесите последний атрибут так, чтобы он оказался над новым атрибутом.

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

Преобразование объектов

Transform – метод для создания и сохранения записей проектирования после изменения объектов или свойств в пределах проектного слоя (логический, физический уровни); изменение установки объектов от одного состояния до другого с целью нормализации, очистки, или денормализации модели.

Основные преимущества использования преобразования:

Автоматизация. ERwin упрощает очистку логической и физической моделей. Можно использовать мастеров (Wizard) для автомати-

115

ческого изменения приложения в проектном слое вместо ручного изменения.

Трассируемость (Traceability). ERwin поддерживает историю каждого объекта модели, созданного преобразованием. Можно проследить историю преобразованных объектов.

Сохранение объектных свойств. ERwin сохраняет свойства преоб-

разованных объектов. Вручную войти повторно нельзя.

Преобразование панели инструментов обеспечивает набор инструментальных средств для помощи в преобразовании. Тип модели и объекта, которые нужно преобразовать, доступны на панели инструментов Transforms(рис.3.23):

Рис. 3.23. Преобразование

Виды преобразований:

Many-to-Many Transform (преобразование отношения многие-ко- многим через дополнительную сущность)

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

Пример:

Рис. 3.24. Преобразование Many-to-Many

116

Supertype-Subtype Identity (замещение отношения супертип-подтип) При преобразовании можно задать имя преобразования (во втором

диалоговом окне).

Supertype-Subtype Roll-up (преобразование отношения супертипподтип в одну сущность - супертип)

При преобразовании можно задать имя преобразования и описание преобразования (во втором диалоговом окне).

Supertype-Subtype Roll-down (преобразование отношения супертипподтип в две сущности - подтипы)

При преобразовании можно задать имя преобразования и описание преобразования (во втором диалоговом окне).

Пример (рис. 3.25):

Рис. 3.25. Преобразование Supertype-Subtype

Vertical Partition (вертикальное разделение)

При преобразовании во втором диалоговом окне можно задать число производных сущностей (в окне Number Of Partitions). На 4-м шаге можно определить атрибуты, включаемые в производные сущности, для сущности. Сущность можно выбрать из списка Partition Name. Атрибуты можно переносить с помощью кнопок >(внести один атрибут в производную сущность), >>(внести все атрибуты в производную сущность).

Horizontal Partition (горизонтальное разделение)

При преобразовании на 4-м шаге можно задать имя преобразования и описание преобразования.

117

Пример (рис. 3.26):

Рис. 3.26. Преобразование Partition

Roll-down Denormalization (перенос атрибутов в дочернюю сущность)

Во втором диалоговом окне можно выбрать имя преобразования и описание преобразования;

Roll-up Denormalization (перенос атрибутов в родительскую сущность)

Во втором диалоговом окне можно выбрать имя преобразования и описание преобразования. В 3-ем диалоге в окне Number of recordsможно задать число повторяющихся записей.

Пример (рис. 3.27):

118

Рис. 3.27. Преобразование Denormalization

Column Denormalization (копирование атрибута в любую сущность) (рис. 3.28). До преобразования нужно выделить атрибут. При преобразовании во 2-м диалоговом окне можно указать имя и комментарий столбца. В 3-ем диалоговом окне следует выбрать таблицу, в которую атрибут будет включен. В 4-м диалоговом окне можно выбрать имя преобразования и описание преобразования.

Пример:

Column

Denormalization

Рис. 3.28. Преобразование Column Denormalization

При преобразовании Model Explorerкорректирует важную информацию под папкой Transform. Информация включает преобразованное имя и исходное и целевые объекты, включенные в преобразование.

При преобразовании исходные объекты будут удалены. Для изменения преобразования зайдите в Model Explorerи щелкните правой кнопкой мыши на Transform. Из контекстного меню выберите Deleteи затем - Resolve(в случае, если возврат к модели-источнику не нужно) или Reverse(для возврата к модели-источнику).

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

Порядок выполнения работы

1. Откройте модель My ERwin Model, сохраненную во второй лабо-

раторной работе. В инструментарии ERwin кликните определяющее средство (Identifying Relationship) отношения.

2.В окне диаграммы добавьте определяющее отношение между Customerи Order, щелкнув по объекту Customer, чтобы назначить объект-родитель. Затем щелкните по Order, чтобы определить его как объект-потомок.

3.В инструментарии ERwin кликните не определяющее(Nonidentifying) средство отношения. Для того, чтобы добавить не определяющееотношение между Orderи Product, щелкните по Order, а потом

119

по Product. Модель должна выглядеть подобно нижеприведенной модели: на рис. 3.29.

Рис. 3.29. Модель после внесения связей

4. Выровняйте и сгруппируйте объекты вашей диаграммы с помощью средств для выравнивания (Alignment Toolbar) как показано на рис. 3. 30.

Рис. 3.30. Выравнивание Align bottom

5. Добавьте теневой эффект к модели данных. Для этого откройте ок-

но Format Preferences, закладку Display. В полях Right и Bottom закладки

Shadow Offset установите значения 15.

6. Cвяжите внешние ключи с соответствующими именами ролей: Номер ключа клиентаи Номер телефона клиентадля определяющей связи (закладка Rolenameредактора Relationships). Включите отобра-

120

Соседние файлы в папке книги