- •Лабораторные работы по изучению основных функций пакета eRwin.
- •Построение моделей в Erwin
- •Создание сущности.
- •Для построения логической модели данных, прежде всего, необходимо определить набор сущностей и задать связи между ними.
- •Создание доменов.
- •Создание атрибутов.
- •Создание связи.
- •Определение атрибутов и связей между сущностями, входящими в объектные области «Методическое обеспечение», «Учебный процесс», «Персонал и учащиеся» и «Занятия в классе».
- •2. Задайте остальные связи для сущностей этой области.
- •Р исунок 4.2 - Диаграмма объектной области «Методическое обеспечение»
- •Создайте сущности для объектной области «Учебный процесс». Сущности, относящиеся к этой области, приведены в таблице 4.3.
Создание связи.
Как отмечалось ранее, для построения логической модели данных, прежде всего, необходимо определить набор сущностей и задать связи между ними.
Как уже упоминалось выше, различают зависимые и независимые сущности. Мы задали в разделе 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». Переключатель позволяет выбрать одну из следующих степеней связи:
«Zero, One or More» (ноль, один или более) - каждый экземпляр родительской сущности связан с нулем, одним или более экземпляров дочерней сущности. Говоря «связан с нулем экземпляров», мы имеем в виду, что родительский экземпляр может быть не связан ни с одним экземпляром дочерней сущности.
«One or More (P)» (один или более) - каждый экземпляр родительской сущности связан с одним или более экземпляром дочерней сущности.
«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» (Установки ссылочной целостности)
Закладка предназначена для задания параметров ссылочной целостности проектируемой базы данных.
Установки ссылочной целостности — это логические конструкции, которые выражают бизнес-правила использования данных. Они определяют, какие действия должна выполнить СУБД при удалении, вставке или изменении строки таблицы (экземпляра сущности). Заданные таким образом действия могут использоваться впоследствии при автоматической генерации триггеров, поддерживающих целостность данных.
Существуют следующие виды действий или правил, определяемых в логической модели:
RESTRICT - запрет удаления, вставки или изменения экземпляра сущности
CASCADE - при удалении экземпляра родительской сущности удаление всех экземпляров дочерней сущности, ссылающихся на удаляемый родительский экземпляр.
SET NULL - при удалении экземпляра родительской сущности атрибутам внешнего ключа всех экземпляров дочерней сущности, присваивается значение NULL.
SET DEFAULT - то же самое, что и в предыдущем случае, только вместо значения NULL присваивается значение по умолчанию.
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 Update (изменение дочернего объекта) |
RESTRICT, CASCADE, NONE |
RESTRICT, CASCADE, NONE |
RESTRICT, CASCADE, NONE SET NULL, SET DEFAULT |
RESTRICT, CASCADE, N6NE SET DEFAULT |
Parent Delete (удаление родительского объекта) |
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 Update (изменение родительского объекта) |
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. Обозначения проставляются у родительского или дочернего конца связи, в зависимости от того, к какой сущности они относятся.
На диаграмме теперь определена одна из четырех объектных областей, которых мы выделили - материальное обеспечение процесса обучения.