Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы по ERwin.doc
Скачиваний:
8
Добавлен:
24.09.2019
Размер:
679.94 Кб
Скачать

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

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

Как уже упоминалось выше, различают зависимые и независимые сущности. Мы задали в разделе II для сущности «Учебное место» собственный уни­кальный ключ «код учебного места». Таким образом, сущность «Учебное место» является независимой сущностью и связана с сущностью «Класс» неидентифи­цирующей связью.

Для того, чтобы проставить эту связь на диаграмме, щелкните указателем мыши по кнопке «Nonldentifying Relationship» (неидентифицирующая связь) в па­литре инструментов, затем щелкните по очереди по прямоугольникам сущностей «Класс» и «Учебное место» на диаграмме. Между этими сущностями появится пунктирная линия неидентифицирующей связи. Посреди линии связи проставля­ется генерируемая по умолчанию глагольная фраза - «R/1».

Заметьте, что на уровне атрибутов у сущно­сти «Учебное место» добавился атрибут первичного ключа от сущности «Класс» и помечен буквами «FK». Говорят, что атрибут «мигрировал», a FK (foreign key) означает, что атрибут является частью внешнего ключа (рисунок 3.1). Для иден­тифицирующей связи внешний ключ всегда входит в первичный ключ дочерней сущности, для неидентифицирующей не входит.

Назначьте связи глагольную фразу (пункт «Relationship Properties... » (свойства отношений) контекстного ме­ню. Общий вид окна редактора связей показан на рисунке 3.2.

Редактор связей похож на остальные редакторы объектов ER-диаграмм. В верхней части окна находится выпадающий список, содержащий полное назва­ние связи. В нашем случае осмысленная глагольная фраза для связи еще не опре­делена, поэтому в этом поле значится «Класс R/1 Учебное место». Здесь же нахо­дятся две кнопки «New...» и «Delete», с помощью которых можно добавить на схеме новую связь или удалить существующую.

Рисунок 3.1 - Миграция атрибутов

Рисунок 3.2 - Общий вид окна редактора связей

Далее в редакторе имеется пять страницы с закладками: Закладка «General» (общие свойства).

Здесь задаются основные свойства связи - глагольная фраза, тип и степень связи. Область, озаглавленная «Verb Phrase» (глагольная фраза) содержит два поля, в которых вводится глагольная фраза, характеризующая связь. ERwin позволяет за­дать фразу для прямого и обратного направления связи: Parent-To-Child (Родительская-Дочерняя сущность) и Child-To-Parent (Дочерняя-Родительская сущ­ность). Если для связи заданы прямая и обратная глагольные фразы, то они изоб­ражаются на диаграмме через символ «/». По умолчанию генерируется только прямая глагольная фраза (для направления «Parent-To-Child»). Щелкните указате­лем мыши по полю «Parent-To-Child» и введите с клавиатуры фразу «состоит из». Степень связи задается в области, озаглавленной «Cardinality». Переключатель позволяет выбрать одну из следующих степеней связи:

  1. «Zero, One or More» (ноль, один или более) - каждый экземпляр родительской сущности связан с нулем, одним или более экземпляров дочерней сущности. Говоря «связан с нулем экземпляров», мы имеем в виду, что ро­дительский экземпляр может быть не связан ни с одним экземпляром до­черней сущности.

  2. «One or More (P)» (один или более) - каждый экземпляр родительской сущности связан с одним или более экземпляром дочерней сущности.

  3. «Zero or One (Z)» (ноль или один) - каждый экземпляр родительской сущно­сти связан с нулем экземпляров или с одним экземпляром дочерней сущно­сти.

«Exactly» (точно) - каждый экземпляр родительской сущности связан с за­ данным количеством экземпляров дочерней сущности. Рядом находится по­ле, где необходимо ввести это количество.

Тип связи выбирается в области «Relationship Type». Связь может быть иденти­фицирующая (Identifying) и неидентифицирующая (Non-Identifying). Кроме того, для неидентифицирующей связи задается обязательность (Nulls), которая показы­вает, может ли атрибут внешнего ключа принимать значение NULL в таблице БД. Это свойство используется потом при генерации физической схемы базы данных. В нашем примере, так как при анализе предметной области мы выяснили, что учебное место не может существовать отдельно от класса, установите этот пе­реключатель в позицию «No Nulls». Тем самым накладывается условие, что у су­ществующего экземпляра рабочего места всегда должна быть ссылка на класс, в который оно входит.

Закладка «Definition» (определение).

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

Закладка «Rolename» (Имя роли)

Имя роли (rolename) - это дополнительная характеристика, которая может при­сваиваться мигрирующему атрибуту первичного ключа.

Это особенно удобно в тех случаях, когда сущность связана со многими другими сущностями или сама с собой «циклической» связью. Тогда, если задать имя роли мигрирующему атрибуту, то в дочерней сущности он будет изображаться под этим именем. Например, если присвоить имя роли «включающий класс» атрибуту «код класса», набрав его в поле «Rolename», то после окончания редактирования связи имя мигрировавшего атрибута «код класса» изменится на «включающий класс», а если включить режим Rolename/Attribute», то - «включающий класс, код класса». Режим показа ролей переключается в контекстном меню диаграммы (рисунок 3.3).

Рисунок 3.3 - Контекстное меню диаграммы для отображения мигрирующих атрибутов сущностей

Закладка «RI Actions» (Установки ссылочной целостности)

Закладка предназначена для задания параметров ссылочной целостности проек­тируемой базы данных.

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

Существуют следующие виды действий или правил, определяемых в логической модели:

  1. RESTRICT - запрет удаления, вставки или изменения экземпляра сущности

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

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

  4. SET DEFAULT - то же самое, что и в предыдущем случае, только вместо значения NULL присваивается значение по умолчанию.

  5. NONE - никаких действий не предпринимается.

Эти правила задаются на вставку, удаление и изменение экземпляра как родитель­ской, так и дочерней сущности. Таким образом, каждая связь должна обладать на­бором из шести правил, которые вводятся в поля, объединенные общим заголов­ком «RI Actions». При добавлении связи в диаграмму ERwin по умолчанию уста­навливает для нее набор правил, которые можно редактировать в диалоге «Model Properties» (Свойства модели) на вкладке «RI Defaults»(в главном меню команда «Model» => «Model Properties»).

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

Каждый тип связи имеет, в зависимости от вида действия, свой набор допустимых правил, приведенный в таблице 4.1.

Таблица 4.1 - Набор допустимых правил для различных типах связей

Вид действия

Тип связи (Relationship Type)

Идентифици­рующая (Identifying)

Неидентифици­рующая (Non-Identifying, Nulls Allowed)

Неидентифици­рующая (Non-Identifying, No Nulls)

Категориаль­ная связь (Subtype)

Child Delete (удаление дочернего объекта)

RESTRICT, CASCADE, NONE

RESTRICT, CASCADE, NONE

RESTRICT, CASCADE, NONE SET NULL, SET DEFAULT

RESTRICT, CASCADE, NONE SET DEFAULT

Child Insert (вставка дочернего объекта)

RESTRICT, CASCADE, NONE

RESTRICT, CASCADE, NONE

RESTRICT, CASCADE, NONE SET NULL, SET DEFAULT

RESTRICT, CASCADE, NONE SET DEFAULT

Child Up­date (изменение дочернего объекта)

RESTRICT, CASCADE, NONE

RESTRICT, CASCADE, NONE

RESTRICT, CASCADE, NONE SET NULL, SET DE­FAULT

RESTRICT, CASCADE,

N6NE SET DEFAULT

Parent De­lete (удаление родитель­ского объ­екта)

RESTRICT, CASCADE, NONE

RESTRICT, CASCADE, NONE

RESTRICT, CASCADE, NONE SET NULL, SET DEFAULT

RESTRICT, CASCADE, NONE SET DEFAULT

Parent Insert (вставка родитель­ского объ­екта)

RESTRICT, CASCADE, NONE

RESTRICT, CASCADE, NONE

RESTRICT, CASCADE, NONE SET NULL, SET DEFAULT

RESTRICT, CASCADE. NONE SET DEFAULT

Parent Up­date (изменение родитель­ского объ­екта)

RESTRICT, CASCADE, NONE

RESTRICT, CASCADE, NONE

RESTRICT, CASCADE, NONE SET NULL, SET DEFAULT

RESTRICT, CASCADE, NONE SET DEFAULT

Рисунок 3.4 - Закладка «RI Defaults» диалогового окна «Model Properties»

Установки для связи «Класс - Учебное место», присвоенные по умолчанию, за­прещают вставку и изменение экземпляра дочерней сущности, а также удаление и изменение родительской сущности. Это означает, что не допускается удаление или изменение класса, если в нем имеются учебные места, а также ввод учебного места без указания класса или со ссылкой на несуществующий класс. Тем самым мы выполнили условие, по которому учебное место может существовать только в составе класса.

Закладка «UDP» (Параметры устанавливаемые пользователем)

Закладка - UDP, как и у предыдущих объектов диаграммы, позволяет присвоить связи свой набор пользовательских свойств.

Итак, мы создали неидентифицнрующую связь между сущностями «Класс» и «Учебное место» с условием «No Nulls». Очевидно, связь того же типа должна существовать между сущностями «Тип оборудования» и «Единица оборудова­ния», так как единица оборудования обязательно должна иметь тип. Внесите эту связь в диаграмму, выполнив те же действия, что и в предыдущем случае. Вызо­вите редактор связей и измените глагольную фразу на «описывает», остальные установки связи оставьте неизменными. Обратите внимание, что атрибут «код ти­па оборудования» мигрировал в состав неключевых атрибутов сущности «Учеб­ное место».

Рассмотрим теперь связь между сущностями «Учебное место» и «Единица обору­дования». Как мы выяснили при обследовании предметной области, единицы оборудования образуют некий фонд комплектующих, часть из которых установ­лена в учебные места. Другая часть комплектующих может находиться на складе, быть неисправной и дожидаться списания и т. п., то есть существовать отдельно от учебного места. Таким образом, сущности «Учебное место» и «Единица обо­рудования» не зависят друг от друга, и должны быть ассоциированы неидентифицирующей связью.

Выберите неидентифицирующую связь в палитре инструментов и внесите ее в диаграмму, выбрав «Учебное место» в качестве родительской сущности, а «Единицу оборудования» - дочерней. В редакторе связи измените глагольную фразу «Parent-to-Child» на «состоит из». Неидентифицирующая связь имеет две разновидности - допускающая значения NULL (Nulls Allowed) и не допускающая (No Nulls). По умолчанию выбирается разновидность «Nulls Allowed», оставьте это без изменений. Такая установка означает, что у экземпляра сущности «Едини­ца оборудования» поля внешнего ключа могут иметь нулевое значение, то есть отсутствовать указание на экземпляр «Учебного места». Таким образом, единица оборудования может существовать «сама по себе».

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

Рисунок 3.5 - ER-диаграмма после установки связей

В зависимости от типа, связи изображаются на диаграмме по-разному. Графиче­ское изображение зависит и от принятой методологии построения диаграммы. Например, в нотации IDEF1X, используемой в этом примере, принято изображе­ние связей, показанное на рисунке 3.6.

Рисунок 3.6 - Изображение связей в нотации IDEF1X

Помимо типа связи, на диаграмме могут отображаться и установки ссылочной це­лостности (в контекстном меню диаграммы пункт «Relationship Display» => «Referential Integrity»).

Обозначение ссылочной целостности на схеме представляет собой две алфавит­ные группы, разделенные символом двоеточия «:». Первый символ обозначает действие, к которому относится правило целостности: D -удаление (delete), I -вставка (insert), U - изменение (update).

Вторая группа обозначает правило: R - RESTRICT, С - CASCADE, SN - SET NULL, SD - SET DEFAULT. Таким образом, запрет удаления обозначается D:R, a установка NULL при изменении - U:SN. Обозначения проставляются у родитель­ского или дочернего конца связи, в зависимости от того, к какой сущности они относятся.

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