Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект НВ Батин 2007.pdf
Скачиваний:
115
Добавлен:
15.06.2014
Размер:
800.45 Кб
Скачать

4СИСТЕМА АВТОМАТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ БАЗ ДАННЫХ ERwin

4.1Назначение системы ERWin. Основные этапы проектирования базы данных с использованием ERWin

Пакет программ ERWin (AllFusion ERWin Data Modeler) предназначен для автоматизированного проектирования баз данных.

Процесс проектирования БД в ERWin включает следующие основные эта-

пы:

построение модели данных, т.е. описание данных в соответствии с определенной методологией (т.е. по определенному стандарту, в соответствии с определенными правилами);

генерация БД (на основе построенной модели) в формате выбранной СУБД.

Для построения модели данных в Erwin могут использоваться две методологии: IDEF1X и IE. В данном пособии рассматривается применение методологии IDEF1X, основанной на использовании ER-моделей.

Модель данных в ERWin может строиться на двух уровнях: логическом (Logical) и физическом (Physical). Построение логической модели соответствует этапу инфологического проектирования (см. подраздел 1.1). Построение физической модели соответствует этапам даталогического и физического проектирования.

Логическая модель данных не связана с конкретной СУБД. На этапе построения логической модели выполняются следующие основные действия:

указание объектов (сущностей) предметной области;

описание связей между объектами.

указание ключевых атрибутов (первичных и альтернативных ключей);

описание неключевых атрибутов объектов.

Физическая модель данных строится по правилам конкретной СУБД. Система ERWin позволяет строить модели данных по правилам фактически всех СУБД, распространенных в настоящее время.

Как правило, сначала строится логическая модель, затем – физическая. На основе физической модели ERwin может сгенерировать ЬД в формате выбранной СУБД или соответствующий код на языке SQL.

Процесс проектирования БД, начиная с построения ее модели и кончая генерацией БД в формате выбранной СУБД, называется прямым проектирова-

нием (Forward Engineering).

Важной дополнительной возможностью системы ERWin является возмож-

ность обратного проектирования (Reverse Engineering) – автоматическое по-

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

43

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

внесение изменений в структуру существующей БД;

перенос структуры БД из одной СУБД в другую.

4.2 Основные элементы интерфейса ERWin

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

Палитра инструментов ERWin выглядит по-разному в зависимости от уровня модели данных. На логическом уровне палитра инструментов содержит следующие кнопки:

кнопка указателя – для выбора объектов модели;

кнопка добавления сущности – для добавления сущностей в модель. Чтобы добавить в модель новую сущность, требуется щелкнуть левой кнопкой мыши по кнопке добавления сущности, затем щелкнуть один раз по свободному пространству на модели. Для редактирования сущностей (или других объектов модели) необходимо выбрать кнопку указателя;

кнопка категории. Категория, или категориальная связь - специальный тип связи между сущностями, рассматриваемый ниже. Для установления категориальной связи нужно щелкнуть левой кнопкой мыши по кнопке категории, затем один раз щелкнуть по сущности-родителю, затем – по сущности-потомку;

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

кнопка перемещения атрибутов внутри сущностей и между ними. Атрибуты могут быть перемещены способом drag&drop;

кнопка создания связей: идентифицирующей, “многие ко многим”, и неидентифицирующей (эти виды связей рассматриваются ниже).

На физическом уровне палитра инструментов не содержит кнопки категории и кнопки связи “многие ко многим”.

Как указано выше, для создания моделей данных в ERwin можно исполь-

зовать две методологии: IDEF1X или IE (Information Engineering). Для выбора методологии используется закладка Methodology диалогового окна

Preferences (меню Options).

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

44

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

4.3 Создание логической модели данных

4.3.1 Уровни логической модели

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

диаграмма сущность-связь (Entity Relationship Diagram) - представляет собой модель данных верхнего уровня. Она включает сущности и взаимосвязи между ними;

модель данных, основанная на ключах (Key Based model) - более подробное представление данных. Она включает описание всех сущностей и первичных ключей;

полная атрибутивная модель (Fully Attributed model) - наиболее детальное представление структуры данных: представляет данные в третьей нормальной форме и включает все сущности, атрибуты и связи.

4.3.2 Сущности и атрибуты

Основные компоненты модели данных в ERwin – это сущности (объекты), атрибуты и связи. Каждая сущность является множеством подобных индивидуальных объектов, называемых экземплярами. Каждый экземпляр индивидуален и должен отличаться от всех остальных экземпляров. Атрибут выражает определенное свойство объекта. С точки зрения БД (физическая модель) сущности соответствует таблица, экземпляру сущности – строка в таблице, а атрибуту – колонка таблицы.

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

Номер заказчика, Фамилия заказчика и Адрес заказчика. На уровне физической модели ей может соответствовать таблица Customer с колонками Customer_number, Customer_name и Customer_address.

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

45

Каждая сущность должна быть полностью описана с помощью текстового описания в закладке Definition. Закладки Note, Note 2, Note 3, UDP (User Defined Properties) служат для внесения дополнительных комментариев и описаний сущности: Закладка Icon позволяет каждой сущности поставить в соответствие изображение, которое будет отображаться в режиме просмотра модели на уровне пиктограмм.

Примечание – Закладка User Defined Properties и диалоговое окно User-Defined Property Editor (меню Edit/UDPs…) служат для достаточно сложных операций с сущностями, не рассматриваемых в данном пособии.

Атрибут или группа атрибутов, которые идентифицируют сущность, называется первичным ключом. Для описания атрибутов следует, щелкнув правой кнопкой по сущности, выбрать в появившемся меню пункт Attribute Editor. Появляется диалог Attribute Editor. Если щелкнуть по кнопке New, то в появившемся диалоге New Attribute можно указать имя атрибута, имя соответствующей ему в физической модели колонки и домен. Домен атрибута будет использоваться при определении типа колонки на уровне физической модели. Для атрибутов первичного ключа в закладке General диалога Attribute Editor необходимо сделать отметку в окне Primary Key.

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

Для большей наглядности диаграммы каждый атрибут можно связать с пиктограммой. Для этого используется список выбора Icon в закладке General.

Для отображения пиктограммы атрибута следует выбрать в контекстном меню пункт Display Options/Entities и включить опцию Attribute Icon.

Очень важно дать атрибуту правильное имя. Атрибуты следует именовать в единственном числе. Согласно синтаксису IDEF1X имя атрибута должно быть уникально в рамках модели (а не только в рамках сущности).

4.3.3 Связи

Связь является логическим соотношением между сущностями. Каждая связь должна именоваться глаголом или глагольной фразой (см. рисунок 4.1).

Рисунок 4.1 – Имя связи

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

46

выбрать пункт Display Options/Relationship и затем включить опцию Verb Phrase.

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

впалитре инструментов). Ниже эти виды связей рассматриваются подробно.

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

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

Экземпляр зависимой сущности определяется только через отношение к родительской сущности. При установлении идентифицирующей связи атрибуты первичного ключа родительской сущности автоматически переносятся в состав первичного ключа дочерней сущности. Эта операция дополнения атрибутов дочерней сущности при создании связи называется миграцией атрибутов. В дочерней сущности новые атрибуты помечаются как внешний ключ – (FK, Foreign Key).

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

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

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

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

47

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

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

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

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

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

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

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

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

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

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

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

4.3.3.3Тип связи (идентифицирующая/неидентифицирующая). Для не-

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

48

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

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

4.3.3.4Имя роли (функциональное имя) – это синоним атрибута внешне-

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

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

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

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

Другим видом рекурсии является сетевая рекурсия, когда экземпляр родительской сущности может иметь множество экземпляров дочерней сущности и, наоборот, экземпляр дочерней сущности может иметь множество экземпляров родительской сущности. Это случай, когда сущность находится сама с собой в связи “многие ко многим”. Если атрибут мигрирует в качестве внешнего ключа более, чем на один уровень, то на первом уровне отображается полное имя внешнего ключа (имя роли + базовое имя атрибута), на втором и более – только имя роли.

4.3.3.5Правила ссылочной целостности (referential integrity (RI)) – ло-

гические конструкции, которые выражают правила использования данных и представляют собой правила вставки, замены и удаления. При генерации схемы БД на основе опций логической модели, задаваемых в закладке Rolename/RI Actions, будут сгенерированы правила декларативной ссылочной целостности, которые должны быть предписаны для каждой связи, и триггеры, обеспечивающие ссылочную целостность. Триггеры представляют собой программы, выполняемые всякий раз при выполнении команд вставки, замены или удале-

ния (INSERT, UPDATE или DELETE).

49

Правила удаления управляют тем, что будет происходить в БД при удалении строки. Аналогично правила вставки и обновления управляют тем, что будет происходить с БД, если строки изменяются или добавляются.

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

4.3.3.6 Связь “многие ко многим” (рисунок 4.4) возможна только на уровне логической модели данных. Такая связь обозначается сплошной линией с двумя точками на концах.

Рисунок 4.4 - Связь “многие ко многим”

Для внесения связи “многие ко многим” следует установить курсор на кнопке с изображением сплошной линии с двумя точками на концах в палитре инструментов, затем щелкнуть сначала по одной, затем - по другой сущности.

Связь “многие ко многим” должна именоваться двумя фразами – в обе стороны. Это облегчает чтение диаграммы.

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

4.3.4 Типы сущностей и иерархия наследования

Как было указано выше, связи определяют, является ли сущность независимой или зависимой. В ERWin различают несколько типов зависимых сущностей:

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

ассоциативная - сущность, связанная с несколькими родительскими сущностями. Такая сущность содержит информацию о связях сущностей;

именующая - частный случай ассоциативной сущности, не имеющей собственных атрибутов (только атрибуты родительских сущностей, мигрировавших в качестве внешнего ключа);

категориальная - дочерняя сущность в иерархии наследования.

Иерархия наследования (или иерархия категорий) представляет собой

особый тип объединения сущностей, имеющих общие характеристики.

50

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

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

Иерархии категорий делятся на два типа – полные и неполные. В полной категории (рисунок 4.5) одному экземпляру родового предка обязательно соответствует экземпляр в каком-либо потомке.

Рисунок 4.5 - Иерархия наследования. Полная категория

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

Рисунок 4.6 - Иерархия наследования. Неполная категория

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

51

Рисунок 4.7 - Иерархия наследования. Комбинация полной и неполной категорий

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

установить курсор на кнопке с изображением кружка и двух горизонтальных черт в палитре инструментов и нажать левую кнопку мыши;

щелкнуть сначала по родовому предку, а затем по потомку;

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

Для редактирования категорий щелкнуть правой кнопкой мыши по символу категории и выбрать в контекстном меню пункт Subtype Relationship Editor…. В диалоге Subtype Relationship можно указать атрибут – дискриминатор категории (список Discriminator Attribute Choice) и тип категории – полная/неполная (переключатели Complete/Incomplete).

4.3.5Ключи

4.3.5.1 Первичный ключ (primary key) – это атрибут или группа атрибутов, однозначно идентифицирующая экземпляр сущности. Атрибуты первичного ключа на диаграмме не требуют специального обозначения – это те атрибуты, которые находятся в списке атрибутов выше горизонтальной линии. При внесении нового атрибута в диалоге Attribute Editor для того, чтобы сделать его атрибутом первичного ключа, нужно включить флажок Primary Key в нижней части закладки General. На диаграмме неключевой атрибут можно внести в состав первичного ключа, воспользовавшись кнопкой переноса атрибутов в палитре инструментов.

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

ми (candidate key).

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

52

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

4.3.5.2 Альтернативные ключи и инверсионные входы. Каждая сущ-

ность должна иметь, по крайней мере, один потенциальный ключ. Многие сущности имеют только один потенциальный ключ. Такой ключ становится первичным. Некоторые сущности могут иметь более одного возможного ключа. Тогда один из них становится первичным, а остальные альтернативными ключами. Альтернативный ключ (Alternate Key) – это потенциальный ключ, не ставший первичным. ERWin позволяет указывать атрибуты в качестве альтернативных ключей, и по умолчанию в дальнейшем при генерации схемы БД по этим атрибутам будет генерироваться уникальный индекс.

При работе с БД часто бывает необходимо обеспечить доступ к нескольким экземплярам сущности, объединенных каким-либо одним признаком. Для повышения производительности в этом случае используются неуникальные индексы. ERWin позволяет на уровне логической модели назначить атрибуты, которые будут участвовать в неуникальных индексах. Атрибуты, участвующие в неуникальных индексах, называются Inversion Entries (инверсионные входы). Inversion Entry – это атрибут или группа атрибутов, которые не определяют экземпляр сущности уникальным образом, но часто используются для обращения к экземплярам сущности. ERWin генерирует неуникальный индекс для каждого инверсионного входа.

Создать альтернативные ключи и инверсионные входы можно в закладке Key Group диалога Attribute Editor. Если щелкнуть по кнопке со знаком (…), расположенной в правой верхней части закладки, вызывается диалог Key Group Editor. В верхней части диалога находится список ключей, в нижней – список атрибутов, доступных для включения в состав ключа (слева), и список ключевых атрибутов. Каждый вновь созданный ключ должен иметь хотя бы один атрибут. Для включения атрибута в состав ключа следует выделить его в левом списке и щелкнуть по кнопке со стрелкой.

Для создания нового ключа следует щелкнуть по кнопке New. Появляется диалог New Key Group. Имя нового ключа присваивается автоматически (“Alternate Key Nдля альтернативного ключа и Inversion Entry Nдля инверсионного входа, где N – порядковый номер ключа).

Каждому ключу соответствует индекс, имя которого также присваивается автоматически (с отметкой AK для альтернативного ключа и IE для инверсионного входа). Имена ключей можно изменять вручную.

53

Рисунок 4.8 - Сущность «Сотрудник» с обозначениями ключей

В примере, приведенном на рисунке 4.8, атрибуты, представляющие собой альтернативные ключи, обозначаются как (AKn.m), где n – порядковый номер ключа, m – порядковый номер атрибута в ключе. Когда альтернативный ключ содержит несколько атрибутов, отметка (AKn.m) ставится после каждого из них. На рисунке 4.8 атрибуты Фамилия, Имя, Отчество и Дата рождения вхо-

дят в альтернативный ключ 1 (АК1), Номер паспорта составляет альтернативный ключ 2 (АК2). Инверсионные входы обозначаются как (IEn.m), где n – порядковый номер входа, m – порядковый номер атрибута. Инверсионный вход IE1 (атрибут Должность) позволяет выбрать всех сотрудников, занимающих одинаковую должность, IE2 (атрибуты Город и Улица) – всех сотрудников, живущих на одной улице, IE3 (атрибут Номер комнаты) – всех сотрудников, работающих в одной комнате, а IE4 (атрибут Дата рождения) – всех сотрудников, родившихся в один день. Если один атрибут входит в состав нескольких ключей, ключи перечисляются в скобках через запятую (атрибут Дата рождения входит в состав АК1 и IE4). По умолчанию номера альтернативных ключей и инверсионных входов рядом с именем атрибута на диаграмме не показываются. Для отображения номера следует в контекстном меню выбрать пункт Display Options/Entities и затем включить опцию Alternate Key Designator (AK).

4.3.5.3 Внешние ключи (Foreign Key) создаются автоматически, когда связь соединяет сущности: связь образует ссылку на атрибуты первичного ключа в дочерней сущности, и эти атрибуты образуют внешний ключ в дочерней сущности (миграция ключа). Атрибуты внешнего ключа обозначаются символом (FK) после своего имени.

Зависимая сущность может иметь один и тот же внешний ключ от нескольких родительских сущностей. Сущность может также получить один и тот же внешний ключ несколько раз от одной и той же родительской сущности через несколько разных связей. Если ERWin обнаруживает одно из этих событий, он распознает, что два атрибута одинаковы, и помещает атрибут внешнего ключа в зависимую сущность только один раз. Хотя в закладке Key Group диалога Attribute Editor этот атрибут будет входить в два внешних ключа, на диа-

54

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

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

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

4.3.6 Домены

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

Для создания домена в логической модели служит диалог Domain Dictionary Editor. Его можно вызвать из меню Edit/Domain Dictionary или с помощью кнопки, расположенной в верхней левой части закладки General диалога Attribute Editor. Для создания нового домена в диалоге Domain Dictionary Editor

следует:

щелкнуть по кнопке New. Появляется диалог New Domain;

выбрать родительский домен из списка Domain Parent. Новый домен можно создать на основе уже созданного пользователем домена либо на основе изначально существующего. По умолчанию ERWin имеет четыре предопределенных домена (String, Number, Blob, Datetime). Новый домен наследует все свойства родительского домена. Эти свойства в дальнейшем можно изменить;

набрать имя домена в поле Logical Name. Можно также указать имя домена для модели физического уровня в поле Physical Name. Если физическое имя не указано, по умолчанию оно принимает значение логического имени;

щелкнуть по кнопке ОК.

Вдиалоге Domain Dictionary Editor можно связать домен с пиктограммой,

скоторой он будет отображаться в списке доменов (Domain Icon), и пиктограммой, с которой атрибут, определенный на домене, будет отображаться в модели (Icon Inherited by Attribute).

ERWin имеет специальный инструмент для создания новых атрибутов в модели с использованием описаний доменов - Independent Attribute Browser. Этот диалог вызывается (и скрывается) нажатием комбинации клавиш CTRL+B. С его помощью можно выбрать в списке домен и перенести его в ка- кую-либо сущность. В ней будет создан новый атрибут с именем, которое сле-

дует задать в окне Name Inherited by Attribute диалога Domain Dictionary Editor. Если имя поля не задано, по умолчанию используется имя домена.

55

Соседние файлы в предмете Проектирование баз данных