On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru








 

Глава 7 Сущности и Атрибуты: Возможности Повышенного Уровня Сложности

Содержание главы

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

В главах, посвященных основным понятиям ERwin, описывалась работа в редакторах Entity-Attribute, Entity Definition, Attribute Definition - ввод информации о сущностях и атрибутах Вашей диаграммы. Эта глава снова рассматривает редактор ЕА (Entity-Attribute) и показывает, как использовать его для записи информации об альтернативных ключах и Inversion Entry.

В этой главе Вы узнаете, как:

· Назначать атрибут альтернативным ключом.

· Присваивать имена ролей атрибутам внешнего ключа.

· Назначать атрибут Inversion Entry.

· Просматривать информацию SML.

Назначение альтернативных ключей

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

ERwin создает уникальный индекс для каждого альтернативного ключа. Информация об альтернативных ключах вводится в редакторе Entity-Attribute. См. Гл.3, Сущности и атрибуты в ERwin, разд. 'Создание новых сущностей'.

Как назначить атрибут или группу атрибутов альтернативным ключом

1. Войдите в редактор Entity-Attribute.

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

3. Введите '(АК1)', т.е. альтернативный ключ 1, после имени каждого атрибута, входящего в альтернативный ключ 1.

Например, если у Вас три атрибута вместе составляют альтернативный ключ, то каждый из них должен заканчиваться на '(АК1)', и все три будут по очереди проиндексированы вместе.

4. Нажмите 'ОК' для сохранения изменений.

У сущности может быть несколько альтернативных ключей. Они нумеруются последовательно - АК1, АК2, АК3 и т.д. Если атрибут - часть нескольких альтернативных ключей, отделите метки разных ключей, стоящие в скобках, запятыми (АК1, АК2).

 

Порядок создания альтернативных ключей

При генерации схемы индексы создаются в определенном порядке. Сначала создается индекс первичного ключа, затем индексы альтернативных ключей: АК1, АК2, АК3, затем индексы Inversion Entry: IE1, IE2, IE3 и т.д.

Как показать индикаторы альтернативных ключей
на Вашей диаграмме

1. Дайте команду 'Alternate Key' в меню Display.

Когда в меню рядом с 'Alternate Key' cтоит метка, то на диаграмме показываются (Акn). Если же метка не стоит, соглашения об альтернативных ключах не будут показаны.

Установите курсор в любое место диаграммы, где нет объектов, и нажмите правую кнопку мыши. Появится pop-up меню. Дайте команду 'Alternate Key' и отпустите кнопку мыши.

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

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

Например, в диаграмме Video Store первичный ключ сущности MOVIE - movie-numbER, уникальным образом определяет название каждого фильма таким образом, что даже если есть два фильма с одинаковыми названиями, каждый из них может быть идентифицирован как отдельный фильм. Когда атрибут movie-numbER мигрирует из сущности MOVIE в сущность MOVIE-COPY и становится в ней внешним ключом, то ему присваивается имя роли mastER-numbER, которое поясняет, что этот атрибут обозначает конкретную строку в master-таблице MOVIE, а не в child-таблице MOVIE-COPY. Атрибут movie-copy-numbER обозначает конкретную копию этого фильма в child- таблице MOVIE-COPY. Это означает, например, что если в прокате есть две копии фильма The Wizard of Oz, то mastER-numbER служит для определения названия фильма, а movie-copy-numbER - для определения каждой из двух имеющихся копий.

При рекурсивной связи, когда сущность связана сама с собой, один и тот же атрибут может быть и первичным, и внешним ключом, и имя роли помогает прояснить вторую роль атрибута. Например, если одна организация управляет другой, как это показано ниже, то атрибут organization-id, являющийся первичным ключом в сущности ORGANIZATION, может также служить и внешним ключом в рекурсивной связи. Для того, чтобы прояснить роль внешнего ключа, ему присваивается имя роли parent-org-id для того, чтобы обозначить управляющую организацию по отношению к конкретной дочерней организации. Например, если компания Logic Works будет управлять IBM, то атрибут parent-org-id будет обозначать Logic Works, а organization-id будет обозначать IBM.

Синтаксис имени роли

Имя роли состоит из трех частей: присваиваемое имя роли, точка-разграничитель и базовое имя. Имя роли присваивается атрибуту внешнего ключа в редакторе Relationship и Subtype Relationship. ERwin вставляет точку после имени роли, а затем ставит базовое имя атрибута. Базовое имя - это имя атрибута, которое мигрировало из родительской сщности в дочернюю. См. ниже в этой главе 'Присваивание имени роли'.

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

Когда Вы даете команду меню Display 'Rolename/Attribute', то ERwin показывает на экране и базовое имя и имя роли (см. рис.).

Как показать на экране или убрать имя роли
с присоединенным базовым именем

1. Дайте команду 'Rolename/Attribute' в меню Display для того, чтобы изменить режим показа имени роли (включить или выключить).

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

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

Присваивание имени роли

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

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

Когда ERwin откроет редактор, выберите внешний ключ из списка 'Foreign Key'. После этого введите имя роли в текстовое окно 'Role Name'. Старайтесь использовать имя роли, оисывающее роль атрибута в сущности. Например, имя роли renting-customER (см.рис.) четко обозначает роль конкретного клиента в сущности MOVIE-RENTAL-RECORD.

См. Гл.4, Связи в ERwin и соответствующие редакторы, разд. 'Работа в редакторе Relationship', а также гл.9, Связи: возможности повышенного уровня сложности, разд. 'Создание связи подтипов'.

Атрибут внешнего ключа наследует несколько характеристик от первичного ключа, включая базовое имя. См. Гл.9, Связи: возможности повышенного уровня сложности, разд. 'Задание режимов наследования'.

Как присвоить атрибуту имя роли

1. Выберите связь, соединенную с тем атрибутом, которому нужно присвоить имя роли. Установите курсор на линию связи и нажмите правую ккнопку мыши. Откроется pop-up меню Editor.

2. Дайте команду 'Relationship' меню Editor. Вы войдете в редактор Relationship или Subtype Relationship.

3. В списке 'Foreign Key' щелкните по тому атрибуту, которому Вы хотите присвоить имя роли.

4. Введите имя роли для выбранного атрибута в окно 'Role Name'. ERwin автоматически ставит точку после имени роли, перед базовым именем. Вы увидите запись формата имя роли.базовое имя, когда вернетесь в редактор после того, как присвоите имя роли или когда дадите команду меню Display 'Rolename/Attribute'.

5. Нажмите кнопку 'ОК' для сохранения нового имени роли и выхода в диаграмму. Вы также можете нажать 'Cancel' для выхода из редактора без сохранения имени роли.

Как изменить имя роли

1. Выберите связь, соединенную с тем атрибутом, которому нужно присвоить имя роли. Установите курсор на линию связи и нажмите правую ккнопку мыши. Откроется pop-up меню Editor.

2. Дайте команду 'Relationship' меню Editor. Вы войдете в редактор Relationship или Subtype Relationship.

3. В списке 'Foreign Key' щелкните по тому атрибуту, которому Вы хотите присвоить имя роли.

4. Отредактируйте имя роли для выбранного атрибута в окне 'Role Name'.

5. Нажмите кнопку 'ОК' для сохранения нового имени роли и выхода в диаграмму. Вы также можете нажать 'Cancel' для выхода из редактора без сохранения имени роли.

Как удалить имя роли

1. Выберите связь, соединенную с тем атрибутом, у которого нужно удалить имя роли. Установите курсор на линию связи и нажмите правую ккнопку мыши. Откроется pop-up меню Editor.

2. Дайте команду 'Relationship' меню Editor. Вы войдете в редактор Relationship или Subtype Relationship.

3. В списке 'Foreign Key' щелкните по тому атрибуту, у которого Вы хотите удалить имя роли.

4. Выделите (подсветите) имя роли для выбранного атрибута в окне 'Role Name'.

5. Нажмите клавишу DELETE.

6. Нажмите кнопку 'ОК' для сохранения нового имени роли и выхода в диаграмму. Вы также можете нажать 'Cancel' для выхода из редактора без сохранения имени роли.

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

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

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

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

В этом простом примере EMPLOYEE/SPOUSE EMPLOYEE, первичный ключ которого - employee-numbER, связан со SPOUSE и CHILD идентифицирующими связями. Миграция ключа приводит к тому, что ключ employee-numbER мигрирует в обе зависимые сущности. Сущность SPOUSE имеет также неидентифицирующую связь с сущностью CHILD. См. Гл. 9, Связи: возможности повышенного уровня сложности, разд. 'Задание неидентифицирующих связей', а также руководство по методам ERwin Methods Guide.

Исходя из правил миграции ключей в результате неидентифицирующих связей, принятых в ERwin, мы ожидаем, что атрибуты первичных ключей обоих сущностей - EMPLOYEE и SPOUSE - появятся под чертой в сущности CHILD. Однако в первичном ключе обоих сущностей присутствует employee-numbER. ERwin распознает, что значение employee-numbER одно и то же, независимо от того, переходит ли оно непосредственно от EMPLOYEE или непрямым образом через SPOUSE. Поэтому ERwin производит унификацию employee-numbER и помещает атрибут только по одному разу в каждую сущность CHILD.

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

Более подробная информация об унификации содержится в ERwin Methods Guide.

Назначение Inversion Entries

На основе атрибутов, назначенных альтернативными ключами, строятся индексы, дополняющие индексы, основанные на первичном ключе. Вы можете назначать также и атрибуты, которые будут участвовать в неуникальных индексах. Атрибуты, участвующие в неуникальных индексах, называются Inversion Entries. InvERsion Entry - это атрибут, который не определяет экземпляр сущности уникальным образом, но часто используется для обращения к экземплярам сущности. ERwin генерирует неуникальный индекс для каждого Inversion Entry.

Как задать Inversion Entry в ERwin

1. Войдите в редактор ЕА для той сущности, для которой Вы хотите создать Inversion Entry.

2. Добавьте к имени атрибута (атрибутов), которые будут составлять Inversion Entry под номером n, '(Ien)'. Например, если у Вас есть два атрибута, которые вместе составляют Inversion Entry, то каждый из них должен заканчиваться на '(IE1)'. Оба атрибута будут по очереди проиндексированы вместе как неуникальный индекс.

3. Нажмите 'ОК' для выхода с сохранением всех изменений.

У сущности может быть несколько разных Inversion Entry. Они будут нумероваться: IE1, IE2, IE3 и т.д. Если атрибут входит более чем в одно Inversion Entry, отделите их номера в скобках запятыми друг от друга: (IE1, IE2).

Как показать индикаторы Inversion Entry на Вашей диаграмме

Один и тот же режим демонстрации изображения контролирует изображение на диаграмме альтернативных ключей и Inversion Entries.

1. Дайте команду 'Alternate Key' в меню Display.

Когда в меню рядом с 'Alternate Key' cтоит метка, то на диаграмме показываются (IEn). Если же метка не стоит, соглашения об Inversion Entry не будут показаны.

Установите курсор в любое место диаграммы, где нет объектов, и нажмите правую кнопку мыши. Появится pop-up меню. Дайте команду 'Alternate Key' и отпустите кнопку мыши.

Порядок создания Inversion Entry

При генерации схемы индексы создаются в определенном порядке. Сначала создается индекс первичного ключа, затем индексы альтернативных ключей: АК1, АК2, АК3, затем индексы Inversion Entry: IE1, IE2, IE3 и т.д.

Назначение атрибута одновременно альтернативным ключом и Inversion Entry

Вероятно, что некоторые атрибуты сущности будут включены и в альтернативные ключи, и в Inversion Entry. В таком случае оба типа индикаторов будут стоять в одних скобках (например: '(АК1, IE1)', что означает: этот атрибут участвует в альтернативном ключе ?1 и в Inversion Entry ?1).

Использование редакторов SML Note

Что такое SML?

SML (Structured Modeling Language - язык структурного моделирования) - текстовый язык для определения моделей 'сущность-связь'. Он определяет модели в ERwin подобно тому, как SQL DDL (язык определения данных SQL - языка структурных запросов) определяет базы данных.

SML бывает полезно использовать в моделях, которые можно хранить и перносить в другие средства, которые поддерживают этот формат. ERwin поддерживает как импорт, так и экспорт файлов формата SML. См. Гл.19, Имопрт и экспорт без использования SQL, разд. 'Использование формата SML'.

ERwin поддерживает ввод информации, ориентированной на SML, в редакторах SML Note для сущностей, атрибутов и связей.

Как войти в редакторы SML Note

1. Дайте команду меню Option 'Preference...'.

2. Щелкните по окну 'Show SML' и нажмите 'ОК'.

3. Войдите в меню Report. Вы увидите в нем четыре дополнительных раздела, связанных с SML.

· Команда 'SML Report...' служит для экспорта файлов моделей в формате SML.

· Команды 'SML Entity Note...', 'SML Attribute Note', 'SML Relationship Note...' работают идентичным образом.

Вход в SML Notes

Редакторы SML Entity Note и SML Attribute Note (а также SML Relationship Note) работают идентичным образом.

Как войти в редакторы SML

1. Дайте команду: 'SML Entity', 'Attribute' или 'Report Note...' в меню Report.

Единственное отличие редакторов - в том, что Вы можете выбирать и присваивать notes только тому типу объектов, который поддерживается редактором: сущностям, атрибутам или связям. Редактор SML Attribute Note требует, чтобы у Вас была выбрана сущность, для того чтобы можно было из нее выбирать атрибуты. Редакторы Entity и Relationship предоставляют доступ ко всем объектам модели, относящимся к типу редактора.

Иллюстрации показывают, чем отличаются редакторы SML Note.

Как создать новые SML Notes

1. Находясь в любом из трех редакторов, нажмите кнопку 'New' для того, чтобы открыть новый note.

окне All Notes: появится число - идентификатор note. Число будет выделено цветом, чтобы показать, что текст, который будет вводиться в окно ввода Note, относится к этому note.

2. Введите в окно Note тот текст, который Вы хотите поместить в модель.

ML Notes совместно используются всеми тремя редакторами. Note, введенные в любом из трех редакторов, можно прочитать из всех редакторов. Все окна выбора можно просматривать, прокручивая их, если информация не помещается в область окна. Кроме того, размер окна ввода текста Note можно менять, а само окно можно переносить на любое удобное место.

· Пользуйтесь кнопками 'Attach' и 'Detach' для связывания note с объектами и для уничтожения имеющейся связи.

· Пользуйтесь кнопкой 'Delete' для удаления note из ERwin.

· Пользуйтесь кнопкой 'Exit' для выхода из редактора SML без сохранения изменений.

Как связывать SML Notes с объектами ERwin и уничтожать связи

1. Выберите сущность, атрибут или связь, пользуясь для этого окном выбора Entity, Entity-Attribute или Relationship.

2. Для того, чтобы связать note с объектом, выберите note из списка All Notes: и нажмите кнопку 'Attach'. ERwin изменяет колонку Attached Notes: таким образом, что в ней будет отражена новая связь note с объектом.

Для того, чтобы уничтожить связь, выберите note из списка Attached Notes: и нажмите на кнопку 'Detach'. ERwin удалит номер note из списка Attached Notes.

ERwin позволяет Вам связывать notes с любыми сущностями, связями и атрибутами, которые есть в списках в редакторах SML Note. Вы можете также связать несколько разных notes с одним объектом.

Как удалить SML Note

1. Выберите удаляемую SML Note из списка All Notes:.

2. Нажмите кнопку 'Delete' для того, чтобы удалить note.

Как выйти из редактора SML

Нажмите кнопку 'Exit'.

Краткое повторение главы 8

Как назначать альтернативные ключи сущности

Войдите в редактор ЕА для сущности и введите (АКn) после каждого атрибута, который входит в альтернативный ключ n. Если атрибут входит в несколько альтернативных ключей, то отделите их индикаторы друг от друга запятыми: (АК1, АК3). Контролируйте изображение на диаграмме индикатора ключа при помощи команды меню 'Alternate Key' меню Display.

Как назначать InvERsion Entries для сущности

Войдите в редактор ЕА для сущности и введите (IEn) после каждого атрибута, который входит в Inversion Entry n. Если атрибут входит в несколько Inversion Entry, то выполняйте то же правило, как для альтернативных ключей. Контролируйте изображение на диаграмме индикатора Inversion Entry при помощи команды меню 'Alternate Key' меню Display.

Как присвоить имя роли атрибуту внешнего ключа

Щелкните правой кнопкой мыши по линии связи или связи подтипов, соединенной с той сущностью, внешнему ключу которой Вы хотите присвоить имя роли. Дайте команду 'Relationship' в меню Editor. Выберите атрибут из списка в окне 'Foreign Key'. Введите имя роли в окно 'Role Name'. Нажмите кнопку 'ОК' для того, чтобы сохранить имя роли и вернуться в диаграмму. Поставьте метку рядом с названием режима 'Rolename/Attribute' в меню Display для того, чтобы имя роли появилось на диаграмме.

Как изменить или удалить имя роли для атрибута внешнего ключа

Щелкните правой кнопкой мыши по линии связи или связи подтипов, соединенной с той сущностью, атрибут внешнего ключа которой Вы хотите удалить или изменить. Дайте команду 'Relationship' в меню Editor. Выберите атрибут из списка в окне 'Foreign Key'. Измените или удалите имя роли в окне 'Role Name'. Нажмите кнопку 'ОК' для того, чтобы сохранить имя роли и вернуться в диаграмму.

Как унифицировать (объединить) два атрибута с одинаковыми именами, которые мигрировали в сущность

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

Как войти в редакторы SML Notes

Убедитесь, что режим 'Show SML' включен (в окне-диалоге Option Preferences), затем выберите редактор SML Note из меню Report.

Назад       Содержание       Вперёд