Компьютеры Windows Интернет

Типы связей в erwin. Общие принципы работы в erwin. Построение моделей в ERwin

Лабораторная работа № 5

Цель работы:

Задание:

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

Знакомство с пользовательским интерфейсом

· Загрузите программу Erwin.

· В появившемся диалоговом окне установите переключатель Crеаte а New Model. На экране появится диалог Create Model – Select Template, гденеобходимо выбрать уровень моделирования.

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

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

· Установите переключательLogical/Physical для создания модели с логическим и физическим уровнями.

· В полях DataBase и Version указывается тип и версия сервера, для которого создается модель. Выберите в списке Access, 2000. Нажмите кнопку ОК .

· На экране появится основное окно программы.

В верхней части окна находится титульная строка, в которой указано название программы, наименование модели, наименование подмножества (Subject Area) и хранимого отображения (Stored Display). Основную часть пространства программы занимает рабочая область, в которой создается ER-диаграмма.

Для переключения между логическим и физическим уровнями на панели инструментов имеется список (рис 1.1).

Помимо этого списка, на панели инструментов имеются кнопки (см. табл. 1.1).

Таблица 1.1.

Кнопки, расположенные на панели инструментов программы Erwin

Кнопка Назначение
Создание, открытие, сохранение и печать модели
Вызов диалога Report Browser для генерации отчетов
Изменение уровня просмотра модели: уровень сущностей, уровень атрибутов, уровень определений
Изменение масштаба просмотра модели
Генерация схемы БД, выравнивание схемы с моделью и выбор сервера (доступны только на уровне физической модели)
Переключение между областями модели Subject Area


Для непосредственной работы с элементами модели в программе имеется палитра инструментов (Erwin Toolbox), представляющая собой «плавающее окошко» (рис. 1.2). При необходимости палитру инструментов можно убирать с экрана и вызывать нажатием комбинации клавиш «CTRL-T».

Рис. 1.2. Палитра инструментов на логическом уровне

Внесение в модель сущностей

На данном этапе необходимо внести в модель следующие сущности, выявленные в результате анализа предметной области (поставка товара в соответствии с договорами): покупатель, договор, накладная, товар, склад.

· Выберите на панели инструментов (ERwin Toolbox) кнопку Сущность ,щелкнув по ней указателем мыши. Затем щелкните мышкой по тому месту на диаграмме, где необходимо расположить новую сущность. На поле диаграммы появится прямоугольник, изображающий новую сущность, с автоматически сгенерированным именем «Е/1».

· Введите с клавиатуры имя сущности «Покупатель » и нажмите Enter .

· Точно таким же образом вставьте в диаграмму еще четыре сущности: договор, накладная, товар, склад.

· Щелкнув правой кнопкой мыши по сущности и выбрав из контекстного меню пункт Entity Properties , можно вызвать редактор сущностей Entities (рис. 1.6), который позволяет изменять свойства выбранной сущности. Редактор сущностей также можно вызвать через главное меню: Model | Entities.



Рис. 1.6. Редактор сущности

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

Ниже в окне редактора находится ряд закладок:

Definition (определение) – на этой странице вводится определение сущности.

Note, Note2, Note3 (примечание) – используются для ввода произвольного текста, связанного с сущностью, например, образцы данных и запросы.

UDP – определяемые пользователем свойства.

Icon (иконка) – для наглядности каждой сущности может быть присвоена иконка, которая выводится рядом с ее названием.

· Для каждой сущности введите определение Definition.

Ключевые группы

· Вызовите редактор ключевых групп Key Groups, щелкнув правой кнопкой мыши по сущности Покупатель и выбрав из контекстного меню пункт Key Groups . Редактор ключевых групп также можно вызвать через главное меню: Model | Key Groups.

Редактор ключевых групп содержит элементы управления:

Entity – поле с выпадающим списком, в котором следует выбрать сущность для редактирования.

Окно с перечнем ключевых групп. Каждая группа представлена отдельной строкой, включающей в себя имя (Key Group), тип (Type) и определение (Definition).

Кроме того, диалоговое окно редактора ключевых групп содержит следующие закладки:

ü Members (члены). Задаются члены ключевых групп и их порядок следования в группе.

ü General (общие установки). Переключатели, позволяющие задавать тип ключевой группы. Для первичного и внешнего ключа эти группы недоступны.

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

ü Note (примечание). Примечание к выбранной группе.

ü UDP (пользовательские свойства).

· Нажмите кнопку New .

· В окне New Key Group в поле Key Group введите имя ключевой группы – ИНН . В поле Index выводится генерируемое программой Erwin имя индекса. Оставьте его без изменений.

· Переключатель Key Group Type задает тип создаваемого ключа. Это может быть альтернативный ключ (Alternate Key) или инверсный вход (Inversion Entry). Выберите Alternate Key и нажмите ОК . Вновь введенный альтернативный ключ появится в перечне ключей.



Перейдите на закладку Members . Новый ключ пока не содержит никаких атрибутов, поэтому правый список Key Group Members (члены ключевой группы) пуст. Выберите в левом списке атрибут ИНН и переместите его в правый список при помощи кнопки со стрелкой (см. рис. 1.8).

Рис. 1.8. Редактор ключевых групп

· Таким же образом создайте ключевые группы для инверсных входов, приведенных в табл. 1.3.

Лабораторная работа № 6

Задание правил декларативной ссылочной целостности

· Находясь на логическом уровне модели данных, выделите связь «заключает» между сущностями Покупатель и Договор, щелкнув по ней указателем мыши. Затем нажмите правую кнопку мыши и в контекстном меню выберите пункт Relationship Properties (редактор связей).

· В окне редактора связей Relationship перейдите на вкладку RI Actions . Ознакомьтесь с правилами ссылочной целостности для связи «Покупатель – Договор», присвоенными по умолчанию. Данные установки запрещают вставку и изменение экземпляра дочерней сущности, а также удаление и изменение родительской сущности. Это означает, что не допускается удаление или изменение покупателя, если в базе данных имеются заключенные с ним договоры, а также ввод договора без указания покупателя или со ссылкой на несуществующего покупателя. Тем самым мы выполнили условие, по которому договор может существовать только для конкретного покупателя.

· Проанализируйте установленные правила ссылочной целостности для всех остальных связей.

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

Нормализация данных

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

· Создайте сущность Телефон, содержащую следующие атрибуты: КОД_ТЕЛ (первичный ключ, тип – number) и ТЕЛ (тип – string).

· Свяжите сущности Покупатель и Телефон идентифицирующей связью. Установите мощность связи – One or More (P) и введите имя связи – имеет.

Выбор сервера

· Выполните команду Database | Choose Database .

· В диалоговом окне Erwin/ERX – Target Server необходимо задать тип сервера – Access и его версию – 2000 . Кроме того, здесь указывается используемый по умолчанию тип данных и условие NULL для вновь созданных колонок. Некоторые опции данного диалогового окна зависят от выбранного типа сервера.

· После выбора сервера нажмите кнопку ОК .

Денормализация данных

На модели имеются две связи типа «многие-ко-многим»: Товар – Договор и Товар – Накладная, которые должны быть разрешены на физическом уровне. Результат разрешения данных связей представлен в табл. 2.1.

Таблица 2.1.

Результат разрешения связей «многие-ко-многим»

Разрешение связей «многие-ко-многим» осуществляется автоматически при переходе на физический уровень, либо с помощью специального мастера Many Relationship Transform Wizard .

· Для вызова данного мастера выделите связь «Товар – Договор», щелкнув по ней указателем мыши. Затем нажмите правую кнопку мыши и в контекстном меню выберите пункт Create Association Table (создать ассоциативную таблицу). На экране появится первый диалог мастера, содержащий текст о его назначении.

· Введите в поле Table Name (имя таблицы) – Поставка_План . В поле Table Comment (комментарии к таблице) введите текст: Сведения о поставках товара по договору.

· На модели появилась новая таблица Поставка_План, связанная идентифицирующей связью с таблицами Товар и Договор.

· Новую таблицу необходимо дополнить тремя колонками (см. табл. 2.1). Для этого выделите таблицу Поставка_План , щелкнув по ней указателем мыши. Затем нажмите правую кнопку мыши и в контекстном меню выберите пункт Columns (редактор колонок). Работа с данным редактором аналогична работе с редактором атрибутов.

· Самостоятельно введите три новых колонки в соответствии с табл. 2.1.

· Рассмотренным выше способом (с использованием мастера) преобразуйте связь «Товар – Накладная» и дополните полученную ассоциативную таблицу Отгрузка двумя колонками согласно табл. 2.1.

Задание правил валидации

Задание списка допустимых значений

В соответствии с рассматриваемой предметной областью для поля СТАВКА_НДС таблицы Товар зададим список допустимых значений: 0, 10 и 18 %.

Columns.

· В окне редактора в поле Column – СТАВКА_НДС .

· Перейдите на закладку выбранной СУБД – Access .

· Valid .

· В диалоге Validation Rules щелкните по кнопке New .

· В диалоге New Validation Rule вполе Logical введите имя правила – Проверка ставки НДС . Нажмите кнопку ОК .

· Перейдите на закладку General . В группе Type установите опцию Valid Value List .

· В поле Valid Value в первой строке введите 0. Во вторую и третью строки введите значения: 10 и 18.

· Проверьте, чтобы в верхней части окна редактора Validation Rules появилась строчка: Проверка ставки НДС (Validation Name) IN (0, 10, 18) (Validation Rule).

· Нажмите ОК. В окне редактора Columns на закладке Access в поле Valid появилось наименование созданного правила – «Проверка ставки НДС».

Задание значений, присваиваемых по умолчанию

Создадим правило, согласно которому в поле ДАТА_ДОГ таблицы Договор будет по умолчанию подставляться значение текущей даты.

· Вызовите контекстное меню таблицы Договор и выберите пункт Columns.

· В окне редактора в поле Column выберите колонку, для которой будет задаваться правило– ДАТА_ДОГ .

· На закладке Access щелкните по кнопке, расположенной справа от раскрывающегося списка Default .

· В диалоговом окне Default/Initial Values щелкните по кнопке New .

· В диалоге New Default Value вполе Logical введите имя правила – Текущая дата . Нажмите кнопку ОК .

· На закладке Access в поле Server Value – Access Default введите Date() (функцию, получающую значение текущей даты).

· Нажмите ОК. В окне редактора Columns на закладке Access в поле Default появилось наименование созданного правила – «Текущая дата».

· Установите это же правило для поля ДАТА_ОТГР таблицы Накладная. Для этого в окне редактора колонок Column выделите поле ДАТА_ОТГР и на закладке Access в поле Default из раскрывающегося списка выберитеправилоТекущая дата.

Задание правил проверки вводимых значений

Создадим правило проверки вводимых значений для поля ЦЕНА таблицы Товар, согласно которому данное поле не может иметь значения, меньшие 0.

· Вызовите контекстное меню таблицы Товар и выберите пункт Columns.

· В окне редактора в поле Column выберите колонку, для которой будет задаваться правило– ЦЕНА .

· На закладке Access щелкните по кнопке, расположенной справа от раскрывающегося списка Valid .

· В диалоге Validation Rules щелкните по кнопке New .

· В диалоге New Validation Rule вполе Logical введите имя правила – Проверка цены . Нажмите кнопку ОК .

· Перейдите на закладку General . В группе Type установите опцию Min/Max .

· В поле Min введите 1. Кроме нижней границы диапазона значений здесь также можно задать и верхнюю границу (Max ).

· В верхней части окна редактора Validation Rules в списке правил валидации добавилось вновь созданное: Проверка цены >=1.

· Нажмите кнопку ОК .

Лабораторная работа № 7

Расчет размера базы данных

Цель работы:

Освоить методику расчета размера базы данных, реализованную в Erwin.

Лабораторная работа № 8

Создание отчетов в Erwin

Цель работы:

· изучение видов отчетов;

· освоение процедуры создания отчетов

Лабораторная работа № 5

Основы работы в Erwin. Построение логической модели данных

Цель работы:

· овладение навыками работы в Erwin;

· построение логической модели заданной предметной области.

Задание:

Построить логическую информационную модель поставки товаров в соответствии с договорами средствами Erwin.

Лабораторная работа №4. Определение связей между сущностями в ERwin

Как отмечалось в упражнении 3, для построения логической модели дан - ных, прежде всего, необходимо определить набор сущностей и задать связи меж- ду ними. На упражнении 3 была создана диаграмма, содержащая четыре сущно - сти (рисунок 4.1). Методику определения связи между ними мы рассмотрим на текущем упражнении.

https://pandia.ru/text/78/177/images/image002_182.gif" width="123" height="128 src=">ется генерируемая по умолчанию глагольная фраза - «R/1» (рисунок 4.2).

Рисунок 4.2 - Неидентифицирующая связь

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

сущности, для неидентифицирующей не входит.

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

Шаг 4. Назначьте связи глагольную фразу. Для этого выделите связь, щелкнув по ней указателем мыши, затем нажмите правую кнопку мыши и в контекстном ме - ню выберите пункт «Relationship Properties… » (свойства отношений).

Общий вид окна редактора связей показан на рисунке 4.4.

Базы данных" href="/text/category/bazi_dannih/" rel="bookmark">базы данных . В нашем примере, так как при анализе предметной области мы выяснили, что учебное место не может существовать отдельно от класса, установите этот пе - реключатель в позицию «No Nulls». Тем самым накладывается условие, что у су- ществующего экземпляра рабочего места всегда должна быть ссылка на класс, в который оно входит.

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

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

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

Имя роли (rolename) - это дополнительная характеристика, которая может при-

сваиваться мигрирующему атрибуту первичного ключа (рисунок 4.5).

https://pandia.ru/text/78/177/images/image006_79.gif" width="358" height="221 src=">

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

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

Закладка предназначена для задания параметров ссылочной целостности проек-

тируемой базы данных (рисунок 4.7).

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

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

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

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

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

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

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

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

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

щемся путем выбора из главного меню команды «Model» Server» и, далее, подко-

манды «Model Properties» (рисунок 4.9).

https://pandia.ru/text/78/177/images/image009_57.gif" width="227" height="289 src=">

Рисунок 4.9 – Порядок вызова диалогового окна «Model Properties»

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

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

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

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

действия

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

Идентифици-

Неидентифици-

рующая (Non- Identifying, Nulls

Неидентифици-

рующая (Non- Identifying, No

ная связь

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

CASCADE, NONE SET NULL,

CASCADE, NONE SET DEFAULT

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

CASCADE, NONE SET NULL,

CASCADE, NONE SET DEFAULT

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

CASCADE, NONE SET

NULL, SET DE - FAULT

CASCADE, N6NE SET

(удаление родитель - ского объ- екта)

CASCADE, NONE SET

CASCADE, NONE SET

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

CASCADE, NONE SET NULL,

CASCADE. NONE SET DEFAULT

(изменение родитель - ского объ - екта)

CASCADE, NONE SET

CASCADE, NONE SET


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

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

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

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

Итак, мы создали неидентифицнрующую связь между сущностями «Класс» и

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

Рисунок 4.10 – Атрибут «код типа оборудования» мигрировал в состав неключевых атрибутов сущности «Учебное место»

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

Шаг 5. Выберите неидентифицирующую связь в палитре инструментов и внесите ее в диаграмму, выбрав «Учебное место» в качестве родительской сущности, а

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

отсутствовать указание на экземпляр «Учебного места». Таким образом, единица оборудования может существовать «сама по себе».

После установки связей диаграмма на уровне сущностей будет иметь вид, пока-

https://pandia.ru/text/78/177/images/image012_32.gif" width="556" height="327 src=">ние связей, показанное на рисунке 4.12.

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

Помимо типа связи, на диаграмме могут отображаться и установки ссылочной це-

лостности - для этого необходимо выбрать в контекстном меню диаграммы пункт

«Relationship Display» и подпункт «Referential Integrity» (Шаг 6. ).

Алфавит" href="/text/category/alfavit/" rel="bookmark">алфавит- ные группы, разделенные символом двоеточия «:». Первый символ обозначает действие, к которому относится правило целостности: D - удаление (delete), I - вставка (insert), U - изменение (update).

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

глядит так, как показано на рисунке 4.14.

Рисунок 4.14 - ER-диаграмма с включенными установками ссылочной целостности

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

Шаг 7. На вкладке «Уровень сущностей» сохраните модель, например, под име-

нем Lab_4_Petrov. er1.

Шаг 8. Выполните индивидуальное задание по определению связей между сущ-

ностями в ERwin для указанной предметной области (см. таблица 3.4).

1. Результаты выполнения шагов 1 – 7 программы занятия.

2. Результаты выполнения индивидуального задания.

Контрольные вопросы

1. Как различают зависимые и независимые сущности на диаграмме ERwin?

2. Какая связь между сущностями называется неидентифицирующей?

3. Что такое физическая и логическая модель данных?

4. Какая связь между сущностями называется идентифицирующей?

5. Поясните смысл утверждения о том, что некоторый атрибут «мигрировал»?

6. Что обозначает символика «FK» на диаграмме ERwin?

7. Какими возможностями обладает редактора связей?

8. Каково изображение связей в нотации IDEF1X?

9. Как производится обозначение ссылочной целостности на диаграмме

10.Какие связи между сущностями были использованы при выполнении инди-

видуального задания?

Создание современных информационных систем представляет собой сложнейшую задачу, решение которой требует применения специальных методик и инструментов. Неудивительно, что в последнее время среди системных аналитиков и разработчиков значительно вырос интерес к CASE (Computer-Aided Software/System Engineering) - технологиям и инструментальным CASE-средствам, позволяющим максимально систематизировать и автоматизировать все этапы разработки программного обеспечения.

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

Книга написана на основе личного опыта автора, полученного при разработке информационных систем, чтении лекций и проведении практических занятий по CASE-технологиям и CASE-средствам в Учебном центре компании "Интерфейс Ltd." Она адресована специалистам в области информационных технологий: системным аналитикам, руководителям проектов, разработчикам - и может быть также полезна для студентов и аспирантов, изучающих основы системного анализа и проектирования информационных систем.

Книга:

Связь является логическим соотношением между сущностями. Каждая связь должна именоваться глаголом или глагольной фразой (Relationship Verb Phrases) (рис. 2.20). Имя связи выражает некоторое ограничение или бизнес-правило и облегчает чтение диаграммы, например:

Каждый КЛИЕНТ <размещает> ЗАКАЗы;

Каждый ЗАКАЗ <выполняется> СОТРУДНИКом.

Рис. 2.20. Имя связи - Relationship Verb Phrases

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

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

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

Рис. 2.21. Идентифицирующая связь между независимой и зависимой таблицей

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

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

Рис. 2.22. Неидентифицирующая связь

Экземпляр сущности Сотрудник может существовать безотносительно к какому-либо экземпляру сущности Отдел, т. е. сотрудник может работать в организации, не числясь в каком-либо отделе.

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

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

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

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

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

В палитре инструментов кнопка

Соответствует идентифицирующей связи, кнопка

Связи многие-ко-многим и кнопка

Соответствуют неидентифицирующей связи.

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

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

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

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

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

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

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

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

Рис. 2.23. Диалог Relationship Editor

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

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

Рис. 2.24. Обозначения мощности

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

Рис. 2.25. Закладка Rolename/RI Actions диалога Relationship Editor

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

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

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

Рис. 2.26. Имена ролей внешних ключей

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

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

Рис. 2.27. Случай обязательности имен ролей

Другим примером обязательности присвоения имен ролей являются рекурсивные связи (иногда их называют "рыболовный крючок" - fish hook), когда одна и та же сущность является и родительской и дочерней одновременно. При задании рекурсивной связи атрибут должен мигрировать в качестве внешнего ключа в состав неключевых атрибутов той же сущности. Атрибут не может появиться дважды в одной сущности под одним именем, поэтому обязательно должен получить имя роли. На рис. 2.26 сущность Сотрудник содержит атрибут первичного ключа Табельный номер. Информация о руководителе сотрудника содержится в той же сущности, поскольку руководитель работает в той же организации. Чтобы сослаться на руководителя сотрудника следует создать рекурсивную связь (на рис. 2.26 связь руководит/подчиняется) и присвоить имя роли ("Руководитель"). Заметим, что рекурсивная связь может быть только неидентифицирующей. В противном случае внешний ключ должен был бы войти в состав первичного ключа и получить при генерации схемы признак NOT NULL. Это сделало бы невозможным построение иерархии - у дерева подчиненности должен быть корень - сотрудник, который никому не подчиняется в рамках данной организации.

Связь руководит/подчиняется на рис. 2.26 позволяет хранить древовидную иерархию подчиненности сотрудников. Такой вид рекурсивной связи называется иерархической рекурсией (hierarchical recursion) и задает связь, когда руководитель (экземпляр родительской сущности) может иметь множество подчиненных (экземпляров дочерней сущности), но подчиненный имеет только одного руководителя (рис. 2.28).

Иерархическая рекурсия Сетевая рекурсия


Рис. 2.28. Подчиненность экземпляров сущности в иерархической и сетевой рекурсии

Другим видом рекурсии является сетевая рекурсия (network recursion), когда руководитель может иметь множество подчиненных и, наоборот, подчиненный может иметь множество руководителей. Сетевая рекурсия задает паутину отношений между экземплярами родительской и дочерней сущностей. Это случай, когда сущность находится сама с собой в связи многие-ко-многим. Для разрешения связи многие-ко-многим необходимо создать новую сущность (подробно связь многие-ко-многим будет рассмотрена ниже).

Рис. 2.29. Пример реализации сетевой рекурсии

На рис. 2.29 рассмотрен пример реализации сетевой рекурсии. Структура моделирует родственные отношения между членами семьи любой сложности. Атрибут Тип отношения может принимать значения "отец-сын", "мать-дочь", "дед-внук", "свекровь-невестка", "тесть-зять" и т. д. Поскольку родственное отношение связывает всегда двух людей, от сущности Родственник к. сущности Родственное отношение установлены две идентифицирующие связи с именами ролей "Старший" и "Младший". Каждый член семьи может быть в родственных отношениях с любым другим членом семьи, более того, одну и ту же пару родственников могут связывать разные типы родственных отношений.

Если атрибут мигрирует в качестве внешнего ключа более чем на один уровень, то на первом уровне отображается полное имя внешнего ключа (имя роли + базовое имя атрибута), на втором и более - только имя роли. На рис. 2.30 изображена структура данных, которая содержит сущность Команда, сущность Игрок, в которой хранится информация об игроках каждой команды, и сущность Гол, содержащая информацию и голах, которые забивает каждый игрок. Атрибут внешнего ключа Номер команды сущности Игрок имеет имя роли "В какой команде играет".

Рис. 2.30. Миграция имен ролей

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

Правила ссылочной целостности (referential integrity, RI) - логические конструкции, которые выражают бизнес-правила использования данных и представляют собой правила вставки, замены и удаления. При генерации схемы БД на основе опций логической модели, задаваемых в закладке Rolename/RI Actions, будут сгенерированы правила декларативной ссылочной целостности, которые должны быть предписаны для каждой связи, и триггеры, обеспечивающие ссылочную целостность. Триггеры представляют собой программы, выполняемые всякий раз при выполнении команд вставки, замены или удаления (INSERT, UPDATE или DELETE). На рис. 2.30 существует идентифицирующая связь между сущностями Команда и Игрок. Что будет, если удалить команду? Экземпляр сущности Игрок не может существовать без команды (атрибут первичного ключа В какой команде играет. Номер команды не может принимать значение NULL), следовательно, нужно либо запретить удаление команды, пока в ней числится хотя бы один игрок (для удаления команды сначала нужно удалить всех игроков), либо сразу удалять вместе с командой всех ее игроков. Такие правила удаления называются "ограничение" и "каскад" (Parent RESTRICT и Parent CASCADE, см. рис. 2.25). Заметим, что сущности Игрок и Гол, в свою очередь, тоже связаны идентифицирующей связью и в случае удаления каскадом команды будут удалены все игроки команды и все голы, которые они забивали. Выполнение команды на удаление одной строки реально может привести к удалению тысячи строк в БД, поэтому использовать правило удаления каскадом следует с осторожностью. В том случае, если установлено правило ограничения удаления, при попытке выполнить удаление команды, в которой есть хотя бы один игрок, сервер реляционной СУБД возвратит ошибку.

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

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

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

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

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

Задать мощность связи между сущностями Команда и Игрок, равную "One or more" - 1 или более (тип Р). Предполагается, что установлена идентифицирующая связь.

Присвоить действие RI-триггера "Parent Insert-CASCADE" для того, чтобы при создании новой строки в таблице Команда автоматически создавалась хотя бы одна строка в дочерней таблице Игрок.

Присвоить связи действие RI-триггера "Parent Delete-CASCADE" для того, чтобы при удалении строки из таблицы Команда соответствующая строка или строки из таблицы Игрок тоже удалялись.

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

Таблица 2.4. Значения RI, присваиваемые в ERwin no умолчанию, а также возможные оежимы для каждого типа связи

Идентифицирующая связь Неидентифицирующая связь (Nulls Allowed) Неидентифицирующая связь (No Nulls) Категориальная связь
Child Delete Возможные режимы RESTRICT, CASCADE, NONE RESTRICT, CASCADE, NONE, SET NULL, SET DEFAULT RESTRICT, CASCADE,
NONE
Child Delete Режимы по умолчанию NONE NONE NONE NONE
Child Insert Возможные режимы RESTRICT, CASCADE, RESTRICT, CASCADE, NONE, SET DEFAULT RESTRICT, CASCADE,
NONE NONE
Child Insert Режимы по умолчанию RESTRICT SET NULL RESTRICT RESTRICT
Child Update Возможные режимы RESTRICT, CASCADE, NONE RESTRICT, CASCADE, NONE, SET NULL,SET DEFAULT RESTRICT, CASCADE, NONE, SET DEFAULT RESTRICT, CASCADE, NONE
Child Update Режимы по умолчанию RESTRICT SET NULL RESTRICT RESTRICT
Parent Delete Возможные режимы RESTRICT, CASCADE, NONE RESTRICT, CASCADE, NONE, SET NULL,SET DEFAULT RESTRICT, CASCADE, NONE, SET DEFAULT RESTRICT, CASCADE,
NONE
Parent Delete Режимы по умолчанию RESTRICT SET NULL RESTRICT CASCADE
Parent Insert Возможные режимы RESTRICT, CASCADE, NONE RESTRICT, CASCADE, NONE, SET NULL,SET DEFAULT RESTRICT, CASCADE, NONE, SET DEFAULT RESTRICT, CASCADE, NONE
Parent Insert Режимы по умолчанию NONE NONE NONE NONE
Parent Update Возможные режимы RESTRICT, CASCADE, NONE RESTRICT, CASCADE, NONE, SET NULL,SET DEFAULT RESTRICT, CASCADE, NONE, SET DEFAULT RESTRICT, CASCADE, NONE
Parent Update Режимы по умолчанию RESTRICT SET NULL RESTRICT CASCADE

Связь многие-ко-многим возможна только на уровне логической модели данных. На рис. 2.31 вверху показан пример связи многие-ко-многим. Врач может принимать много пациентов, пациент может лечиться у нескольких врачей. Такая связь обозначается сплошной линией с двумя точками на концах.

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

win производит миграцию ключей через эти связи.

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

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

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

При создании диаграммы, хотя Вам, может быть, и хочется добавить ключевые атрибуты в сущность, когда Вы ее создаете, ER

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

Чтобы облегчить проектирование базы данных, ER

win позволяет задать режим Unique Key, который можно использовать для того, чтобы предупредить Вас о создании атрибута, который может автоматически мигрировать через связь, или запретить Вам создание таких атрибутов. Кроме того, если Вы удаляете связь, ER win автоматически удаляет соответствующие внешние ключи из дочерних сущностей. См. Гл.11, Документирование правил, разд. "Обеспечение уникальности имен сущностей и атрибутов".

Как создать внешние ключи

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

Чтобы видеть автоматическую миграцию внешних ключей,

нужно установить режим просмотра диаграммы Attribute Display. У Вас должны быть уже созданы атрибуты первичного ключа в родительской сущности.

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

1. Щелкните правой кнопкой мыши по соединительной линии связи - Вы войдете в меню Relationship.

2. Дайте команду "Relationship" для входа в редактор Relationship.

Задание режимов наследования атрибутов

win производит миграцию атрибута первичного ключа, то по умолчанию внешний ключ, который появляется в дочерней сущности, наследует имя, но не наследует определение атрибута первичного ключа. Если Вы хотите, чтобы определение атрибута первичного ключа тоже мигрировало в дочернюю сущность, Вам нужно изменить режимы наследования - Attribute Inheritance Option - которые ER win устанавливает по умолчанию. Для того, чтобы изменить режим наследования по отношению к мигрирующим ключам, дайте команду "Attribute Inheritance..." в меню Option. Вы войдете в окно-диалог Attribute Inheritance Option.

В этом диалоге можно установить три режима. По умолчанию установлен режим "No Inheritance", а Вы можете изменить его на "Full Inheritance" или "Restricted Inheritance", нажимая соответствующую кнопку, а затем - "ОК" для сохранения нового режима.

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

1. Дайте команду "Attribute Inheritance..." из меню Option.

2. Нажмите на одну из кнопок в окне "Inheritance of Primary Key Definitions" для того, чтобы задать нужный Вам режим наследования атрибута:

"Full Inheritance" - определения атрибутов первичного ключа мигрируют во внешний ключ для всех новых и уже созданных связей текущей диаграммы.

"Restricted Inheritance" - определения атрибутов первичного ключа мигрируют во внешний ключ для всех новых cвязей, но это не распространяется на уже созданные связи текущей диаграммы.

"No Inheritance" - миграция определений атрибутов запрещается для всех связей текущей диаграммы. Это тот режим, который установлен по умолчанию.

Задание неидентифицирующих связей

Идентифицирующей связью

называется связь, которая добавляет признаки идентичности в дочернюю сущность путем миграции ключей родительской сущности в область ключевых атрибутов дочерней и таким образом делая дочернюю сущность зависимой от родительской в смысле своей идентичности. Например, когда атрибут movie-numb ER мигрирует из сущности MOVIE в MOVIE-COPY на диаграмме MOVIES.ER1, токаждый экземпляр MOVIE-COPY зависит и от movie-numb ER, и от movie-copy-numb ER, которые уникальным образом его определяют (ни один из этих двух атрибутов не может сам по себе уникальным образом определить конкретную копию фильма).

Можно задать также и такую связь, которая не ставит дочернюю сущность в зависимость от родительской. Этот тип связи называется неидентифицирующей связью . В ER

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

На рисунке ниже показано, как изображаются в ER

win идентифицирующие, неидентифицирующие и необязательные неидентифицирующие связи, и обобщаются различия между этими связями.

Если связь уже создана на диаграмме, то Вы можете изменить ее тип в редакторе Relationship.

Как изменить тип связи

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

2. Дайте команду "Relationship" в меню Editor для входа в редактор Relationship.

3. Нажмите нужную кнопку в окне Relationship Type (Identifying - идентифицирующая, Non-Identifying - неидентифицирующая).

4. Нажмите "ОК" для того, чтобы зафиксировать изменения. ER

win изменяет линию связи на диаграмме в соответствии с новым типом.

Рекурсивной связи в

ER win автоматически присваивается тип Non-Identifiyng. Изменить его нельзя.

Разрешить или не разрешить нулевые значения?

Когда Вы рисуете неидентифицирующую связь, Вам нужно решить, могут ли атрибуты внешнего ключа, наследуемые от родителя, принимать значение NULL или нет. По умолчанию для неидентифицирующей связи задается режим "Nulls Allowed", что означает, что дочерняя сущность может существовать без родительской, и связь называется необязательной. "No Nulls" означает, что существование дочерней сущности зависит от родительской, и связь называется обязательной. В случае необязательной связи (Nulls Allowed) на родительском конце неидентифицирующей связи ER

win ставит знак - ромбик.

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

См. руководство по методам ER

win Methods Guide , Гл.3, "Обзор языка", разд. "Идентифицирующие и неидентифицирующие связи".

По умолчанию для неидентифицирующей связи установлен

режим "Nulls Allowed", т.е. значения NULL для внешних ключе

1. Учебные вопросы

  1. Разработка реляционной модели данных в ERwin .
  2. Нормализация физической модели данных в ERwin .

2. План занятия

  1. Контроль знаний путем тестирования (тест ИСЭ005).
  2. Импорт сущностей в ERwin.
  3. Разработка логической и физической моделей данных в ERwin с использованием методологии IDEF1Х.
  4. Нормализация физической модели данных в ERwin.
  1. Выполнить импорт сущностей в ER win, используя файл Данные _ИС_Имя. bpх, и на основании полученного множества сущностей разработать логическую модель данных.

Замечание: Если имена сущностей и атрибутов были созданы на кириллице (по-русски), следует их переписать латинскими символами.

  1. Создать логическую и физическую модели данных, используя инструменты ERwin.

  2. в своей папке ИСЭ .
  3. Нормализацию физической модели следует проводить путем разрешения связей МНОГИЕ-КО-МНОГИМ с помощью кнопки Many to Many Transform панели инструментов ER win Transform Toolbar.
  4. Результаты работы сохранить в файле
    Модель_данных_ИС_Имя_IDEF1Х.er1 в своей папке ИСЭ .

ПРИМЕР логической модели, а также нормализованной физической модели данных, выполненной в IDEF1X-технологии приведен в .

4. Технологический процесс выполнения заданий

4.1. Технологический процесс создания моделей данных

4.1.1. Методология создания моделей (методология IDEF1X)

Методология IDEF1X используется CASE-средством ERwin для построения логической и физической моделей данных информационной системы.

ERwin имеет простой и понятный пользовательский интерфейс для построения логической и физической моделей данных, обрабатываемых системой. В логической модели допустимо создавать связи МНОГИЕ-КО-МНОГИМ между сущностями, причем имя атрибута (Attribute Name ) будет именем атрибута в логической модели, а имя столбца (Column Name ), если оно задано, будет именем атрибута в физической модели.

В любой из этих моделей можно автоматически преобразовать связь МНОГИЕ-КО-МНОГИМ к связи ОДИН-КО-МНОГИМ.

В результате будет создана подчиненная таблица, развязывающая связь МНОГИЕ-КО-МНОГИМ. Эта таблица будет содержать внедренный составной ключ (FK) с внедренными из главных таблиц атрибутами и соответствующими им типами данных. Если нужно изменить тип данных, это следует делать вручную.

Процесс создания модели предполагает следующие этапы:

  1. Создание новой модели можно производить из окна Computer Associates ERwin или нажать кнопку создания модели. В обоих случаях на экран будет выведено диалоговое окно Create Model – Select Template (рис. 5.1).
  1. В окне Create Model - Select Template следует выбрать опцию, определяющую возможности создавать модели данных определенного типа: Logical (можно создавать только Логическую модель ), Physical (можно создавать только Физическую модель ) или Logical/Physical (можно параллельно создавать обе модели: и Логическую , и Физическую ). Чтобы иметь больше возможностей, целесообразно выбрать последний вариант – Logical/Physical .
  2. В группе Target Database из списка, предложенного в поле Database , выбрать систему управления базами данных (СУБД) – SQL Server , а в поле Version нужную версию – 2000 .
  3. В появившемся окне < Main Subject Area > / Display] выбрать из списка тип создаваемой модели: Logical или Physical (рис. 5.2).

В панели инструментов ERwin Toolbox содержатся кнопки, позволяющие добавлять в модель данных и редактировать ее отдельные фрагменты:

Select (редактирование выбранного объекта модели),

Entity (добавление сущности),

Many - to - many Relationship (связь Многие-ко-Многим),

Identifying Relationship (идентифицирующая связь),

Non-identifying Relationship (неидентифицирующая связь).

4.1.2. Технологический процесс создания логической модели данных

В процессе создания модели сущности могут быть внедрены путем импорта из словаря сущностей, разработанного в BPwin, или путем создания с помощью кнопки Entity на панели инструментов.

Импорт сущностей в ERwin

Замечания

  • Экспорт и импорт сущностей можно производить только один раз.
  • После проведения импорта сущностей из BPwin флажки Exchange with ERwin и кнопки Update и Delete в диалоговом окне Entity and Attribute Dictionary Editor становятся тусклыми. Это происходит потому, что нельзя изменять сущности и атрибуты, которые BPwin использует совместно c ERwin.

  1. Создание новых сущностей.
    • Нажать кнопку добавления сущностей Entity и щелкнуть мышью в пределах окна модели.
    • Вписать имя сущности и нажать Enter, после чего вписать имя атрибута сущности.
    • Для выбора нужного шрифта выполнить п.п. 1.9–1.12.
  2. Добавление новых атрибутов.
    • В контекстном меню сущности выбрать команду Attributes … и в появившемся окне (рис. 5.4) нажать кнопку New.
    • В окне New Attributes (рис. 5.6) вписать имя атрибута в поле Attribute Name .
    • Установить тип данных каждого атрибута для каждой сущности: Текстовый (String), Числовой (Number), Дата/время (Datetime) или поле МЕМО (B inary L arge Ob ject, Blob) (рис. 5.5 или рис. 5.6) .
    • Определить ключевые атрибуты, установив флажок Primary Key в окне Attributes (рис. 5.5) после выделения нужного атрибута в поле Attribute.

Установка связей между сущностями

  1. Установка связи МНОГИЕ-КО-МНОГИМ:
    • В панели инструментов Erwin Toolbox нажать кнопку Many-to-many Relationship .
    • Последовательно щелкнуть левой клавишей мыши на именах сущностей, между которыми требуется создать связь (рис. 5.7).

  1. Установка идентифицирующей связи ОДИН-КО-МНОГИМ:
    • В панели инструментов Erwin Toolbox нажать кнопку Identifying Relationship.
    • ключевого ключевого атрибута подчиненной сущности (FK) , находящейся на стороне МНОГО (рис. 5.8).
    • В подчиненной сущности формируется составной ключ.

  1. Установка неидентифицирующей связи ОДИН-КО-МНОГИМ:
    • В панели инструментов Erwin Toolbox нажать кнопку Non-identifying Relationship .
    • Последовательно щелкнуть левой клавишей мыши на именах сущностей, между которыми требуется создать связь. Результатом создания связи будет внедрение ключевого атрибута главной сущности в качестве неключевого атрибута подчиненной сущности (FK) , находящейся на стороне МНОГО (рис. 5.9).

4.1.3. Технологический процесс создания физической модели данных

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

  1. В физической модели проверить типы данных и установленные между таблицами связи.

4.2. Технологический процесс нормализации физической модели данных (методология IDEF1X)

  1. В окне Computer Associates ERwin – }