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

Создание сущностей и атрибутов

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

Для внесения в модель сущности надо щелкнуть по кнопке сущности на палитре инструментов, а затем щелкнуть по нужному месту диаграммы. Кнопка Select при этом должна быть активной. На экране появится изображение сущности с именем, предлагаемым по умолчанию, например E/1. Повторные щелчки по диаграмме приведут к появлению на ней новых сущностей. Если палитра инструментов на экране отсутствует, то надо отметить пункт ERwin Toolbox в меню Windows. Для выхода из режима выбора графического объекта кнопку Select следует погасить.

Каждая сущность должна быть полностью определена с помощью окна Entity Editor, которое можно вызвать из контекстного меню сущности или из меню Edit. В поле Name вводится имя сущности, а в текстовом поле Definition вкладки Definition - описание сущности. Сущности должны именоваться существительным в единственном числе, например, СТУДЕНТ, а не СТУДЕНТЫ.

Вкладки Note, Note2, Note3, UDP (User Defined Properties - Свойства, определенные пользователем) служат для внесения дополнительных комментариев и определений к сущности. Так, например, на вкладке Note можно определить какое либо бизнес правило по отношению к сущности или диаграмме. На вкладке Note2 можно определить запросы, которые предусматриваются по отношению к этой сущности. Вкладка Note3 позволяет приводить примеры данных для сущности. На вкладке UDP указывается, для какой диаграммы заводится описание, какие типы данных будут использованы. Эти вкладки необходимо для создания документации к проекту.

Атрибуты сущностей определяются в окне Attribute Editor, которое можно вызвать из контекстного меню сущности или из меню Edit. При нажатии кнопки New появится окно New Attribute, где надо указать имя атрибута, имя соответствующего ему в физической модели поля и домен. Имена атрибутов должны быть в единственном числе и иметь четкое смысловое значение. Домен атрибута будет использоваться при определении типа данных поля на уровне физической модели. По умолчанию в системе определено 4 типа доменов: String, Number, Blob и Datetime. Можно создать новый домен с помощью диалога Domain Dictionary Editor меню Edit.

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

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

Согласно синтаксису IDEF1X имя атрибут должно быть уникально в рамках модели, а не только в рамках сущности. По умолчанию при попытке внесения уже существующего имени атрибута Erwin переименовывает его. Например, если атрибут Клиент существует в модели, то другой атрибут с таким же именем (в другой сущности) будет назван Клиент/1, Клиент/2 и т. д.

На практике такое переименование не всегда удобно, поэтому существует возможность отменить эту опцию. В диалоге Unique Name Option (Меню Option/Unique Name) можно задать следующие режимы именования атрибутов:

• Allow - позволить внесение одинаковых имен;

• Rename - переименовывать атрибуты (по умолчанию);

• Ask - запрашивать возможные действия каждый раз при внесении одно именных атрибутов. ERwin будет показывать на экране окно диалога Еdit Unique Name каждый раз, когда вводится неуникальное имя сущности или атрибута. В этом окне можно ввести другое имя или разрешить дублирование. При этом новое имя не проверяется на уникальность;

• Disallow - запретить внесение одинаковых имен. Если двойное имя обнаружено, то ERwin выдает на экран окно с сообщением, что ввод уникальных имен запрещается.

Создание ключей

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

Некоторые сущности могут иметь несколько атрибутов, претендующих на роль первичного ключа или так наз. потенциальные ключи. В таком случае в качестве первичного выбирается тот атрибут, который наиболее полно удовлетворять всем требованиям, предъявляемым к первичному ключу реляционной модели (уникальность, компактность, отсутствие нулевых значений, неизменность в течение всего времени существования сущности). Остальные потенциальные ключи можно определить как альтернативные (Alternate Kay). По этим атрибутам будет сгенерирован уникальный индекс. На диаграмме атрибуты альтернативных ключей обозначаются АК n,m, где n – порядковый номер ключа, m – порядковый номер атрибута в ключе.

Некоторые из не ключевых атрибутов сущности могут часто использоваться для доступа к записям и для повышения производительности системы полезно по ним создать неуникальные индексы. С этой целью такие атрибуты надо определить как инверсные входы (Inversion Entries). Инверсные входы обозначаются IE n,m, где n – порядковый номер входа, m – порядковый номер атрибута.

Поскольку каждый из ключей может состоять из одного или нескольких атрибутов, в ERwin принят термин "Ключевая группа". Создать несколько разновидностей ключей, т.е. ключевых групп, можно на вкладке Kay Group диалога Attribute Editor. Кнопка с многоточием, расположенная в правой верхней части вкладки вызывает окно Kay Group Editor. В верхней части окна находится список ключей, в котором вначале присутствует только одна строка для первичного ключа. В нижней части слева находится список атрибутов сущности.

Для создания новых ключевых групп надо кнопкой New вызвать диалог New Kay Group. Тип ключевой группы задается кнопками Alternate Kayили Inversion Entry.Каждая новь созданная ключевая группа должна содержать хотя бы один атрибут. Для включения атрибутов в состав ключевой группы надо в верхней части окна выделить ключевую группу, а в нижней части окна выделить нужный атрибут и с помощью кнопки перенести его в правую часть окна.

Теперь в окне Attribute Editor можно увидеть список всех атрибутов сущности с пометкой о вхождении каждого атрибута в ту или иную ключевую группу.

По умолчанию альтернативные ключи и инверсионные входы на диаграмме не помечаются. Для их отображения надо из контекстного меню диаграммы (на пустом месте) для пункта Display Options/Entities отметить пункт Alternate Key Designator.

Внешние ключи (Foreign Key) создаются ERWin автоматически при установлении связей.

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

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

Идентифицирующая связь устанавливается между родительской и дочерней (зависимой) сущностями. Зависимая сущность изображается на диаграмме прямоугольником со скругленными углами. При установлении такой связи атрибуты первичного ключа родительской сущности автоматически переносятся в состав первичного ключа дочерней сущности и помечаются как внешний ключ (FK). Эта операция называется миграцией атрибутов. Каждый экземпляр дочерней сущности должен иметь родителя, поэтому при генерации схемы БД атрибуты первичного ключа получат признак NOT NULL.

При установлении неидентифицирующей связи в дочерней (независимой) сущности могут присутствовать экземпляры, не имеющие родителя. Например, пусть на предприятии есть сотрудники, работающие в определенных отделах и не числящиеся в каком-либо отделе. Тогда между сущностями ОТДЕЛ (Номер отдела, Наименование отдела, Описание отдела) и СОТРУДНИК (Табельный номер, Номер отдела (FK), Фамилия, Имя, Дата рождения) следует установить неидентифицирующую связь. Первичный ключ родительской сущности мигрирует в состав не ключевых атрибутов дочерней сущности.

Связь М:М возможна только в логической модели. При переходе к физическому уровню автоматически создается связующая сущность. При этом первичные ключи связываемых сущностей мигрируют в связующую сущность, образуя в ней первичный ключ. В соответствии с логикой предметной области в связующую сущность часто приходится добавлять новые атрибуты. Например, для связи между сущностями ВРАЧ и ПАЦИЕНТ в связующую сущность на физическом уровне потребуется добавить дату визита. В логической схеме этот атрибут не отобразится.

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

Для создания связи следует щелкнуть по нужной кнопке в палитре инструментов, затем щелкнуть сначала по родительской, а затем по дочерней сущности. Идентифицирующая связь изображается сплошной линией с точкой на стороне М, не идентифицирующая – пунктирной с точкой, связь М:М – сплошной линией с точками на концах. Форму линии связи можно изменить перетаскиванием.

Редактирование связей

Для редактирования свойств связи надо из контекстного меню связи выбрать пункт Relationship Editor. Откроется окно редактора связи с таким же именем. Рассмотрим состав этого окна.

На вкладке General можно задать мощность, имя |и тип связи.

Каждая связь должна именоваться глаголом или глагольной формой. Например:

размещает выполняется

Создание логической модели данных - student2.ru Создание логической модели данных - student2.ru КЛИЕНТ · ЗАКАЗ · СОТРУДНИК

Имя связи указывается в окне Verb Phrase.

Для связи один-ко-многим идентифицирующей или не идентифицирующей достаточно указать имя, характеризующее отношение от родительской к дочерней сущности (Parent-to-Child). Для связи М:М следует указать еще имя связи Child - to – Parent.Например:

принимает

Создание логической модели данных - student2.ru ВРАЧ · · ПАЦИЕНТ

лечится у

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

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

Флажок Zero, One or More определяет общий случай, когда у одного родителя может быть любое число потомков, включая 0. На диаграмме такая связь никак не обозначается.

Флажок One or More –исключает нулевое значение. На диаграмме обозначается символом Р.

Символом Z – флажок Zero or One -помечается случай, когда одному родителю соответствуют 0 или 1 экземпляр потомков.

Флажок Exactlyпозволяет задать точное количество потомков одного родителя.

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

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

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

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

Имя роли (функциональное имя) – это синоним атрибута внешнего ключа, который показывает, какую роль играет атрибут в дочерней сущности. Например, пусть две сущности ОТДЕЛ (Номер отдела, Наименование отдела) и СОТРУДНИК (Табельный номер, Номер отдела (FK), Фамилия, …) связаны отношением 1:М. Внешнему ключу Номер отдела можно присвоить функциональное имя Где работает. Тогда полное имя внешнего ключа сущности СОТРУДНИК будет Где работает. Номер отдела. По умолчанию в списке атрибутов на диаграмме показывается только имя роли. Полное имя отобразится, если в пункте Display Option/Entities контекстного меню диаграммы включить опцию Rolename/Attribute.

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

Рассмотрим ситуацию, возникающую при обмене валюты, когда одна валюта обменивается на другую валюту. Пусть в БД определены две сущности: ВАЛЮТА и ПРОДАЖА ВАЛЮТЫ.

ВАЛЮТА ПРОДАЖА ВАЛЮТЫ

продается

Создание логической модели данных - student2.ru Создание логической модели данных - student2.ru Номер Имя валюты валюты
В1 Тугрик В2 Лира

·

Проданная.(FK) Купленная.(FK) Номер валюты. Номер валюты. В1 В2 В2 В1
 
  Создание логической модели данных - student2.ru
Создание логической модели данных - student2.ru

Создание логической модели данных - student2.ru ·

покупается

Здесь сущности ВАЛЮТА и ПРОДАЖА ВАЛЮТЫ связаны дважды и первичный ключ - Номер валюты должен дважды мигрировать в сущность ПРОДАЖА ВАЛЮТЫ. Поскольку одинаковые имена атрибутов в одной сущности не допустимы и, кроме того, эти атрибуты имеют разный смысл, необходимо для каждого из них задать функциональное имя.

Рассмотрим пример установления рекурсивной связи. Пусть в БД хранится информация об отделах организации – сущность ОТДЕЛ (Номер отдела, Наименование отдела), о сотрудниках и руководителе каждого из сотрудников – сущность СОТРУДНИК (Табельный номер, Номер отдела (FK), Табельный номер (руководителя сотрудника)). Здесь атрибут Табельный номер дважды фигурирует в сущности. Причем у руководителя (один табельный номер) в подчинении находится несколько сотрудников (множество табельных номеров). Каждый из подчиненных, в свою очередь, может являться руководителем нескольких сотрудников. Поэтому сущность СОТРУДНИК выступает как в роли родительской сущности, так и в роли дочерней сущности. Такая связь называется рекурсивной. При установлении такой связи атрибут Табельный номер должен мигрировать в состав не ключевых атрибутов сущности, ему обязательно должно присваиваться функциональное имя. Рекурсивная связь в таком случае обязательно должна быть не идентифицирующей, поскольку самым главным руководителем никто не руководит в данной организации и в записи о нем табельный номер руководителя отсутствует, т.е. у этой записи не будет родительской записи. Таким образом, атрибуты наших сущностей будут иметь следующие полные имена.

ОТДЕЛ (Номер отдела, Наименование отдела)

СОТРУДНИК (Табельный номер, Где работает. Номер отдела (FK), Руководитель. Табельный номер (FK)).

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

вкладке Rolename/RI Actionsредактора связи в полях окна RI Actions устанавливаются также правила ссылочной целостности, т.е. правила выполнения операций добавления, удаления и корректировки данных. На основании опций, установленных в логической модели, при генерации схемы данных будут сгенерированы триггеры, обеспечивающие заданные установки. Триггеры представляют собой программы, выполняемые всякий раз при выполнении операций Insert, Update или Delete. В ERwin по умолчанию установлены определенные правила ссылочной целостности, которыми можно пользоваться.

Наши рекомендации