программа. 1 ПРОГРАММА ERWIN. 1 программа erwin
Скачать 0.52 Mb.
|
1.6 Ключи Каждый экземпляр должен быть уникален и отличаться от других атрибутов. Первичный ключ (primary key) – это атрибут или группа атрибутов, однозначно идентифицирующие экземпляр сущности. Атрибуты первичного ключа на диаграмме не требуют специального обозначения – это те атрибуты, которые находятся в списке атрибутов выше горизонтальной линии. При внесении нового атрибута в диалоге «Attribute Editor» для того, чтобы сделать его атрибутом первичного ключа, нужно включить флажок «Primary Key» в нижней части закладки «General». На диаграмме неключевой атрибут можно внести в состав первичного ключа, воспользовавшись режимом переноса атрибутов (кнопка в палитре инструментов). Выбор первичного ключа может оказаться непростой задачей, решение которой может повлиять на эффективность будущей ИС. В одной сущности могут оказаться несколько атрибутов или набор атрибутов, претендующих на роль первичного ключа. Такие претенденты называются потенциальными ключами (candidate key). Ключи могут быть сложными, т.е. содержащими несколько атрибутов. Сложные первичные ключи не требуют специального обозначения – это список атрибутов выше горизонтальной линии. Для того чтобы стать первичным, потенциальный ключ должен удовлетворять ряду требований: уникальность, т.е. два экземпляра не должны иметь одинаковых значений возможного ключа; компактность, т.е. сложный возможный ключ не должен содержать ни одного атрибута, удаление которого не приводило бы к утрате уникальности. При выборе первичного ключа предпочтение должно отдаваться более простым ключам, т.е. ключам, содержащим меньшее количество атрибутов. Атрибуты ключа не должны содержать нулевых значений. Если для обеспечения уникальности необходимо дополнить потенциальный ключ дополнительными атрибутами, то они не должны содержать нулевых значений. Значение атрибутов ключа не должно меняться в течение всего времени существования экземпляра сущности. Каждая сущность должна иметь, по крайней мере, один потенциальный ключ. Многие сущности имеют только один потенциальный ключ. Такой ключ становится первичным. Некоторые сущности могут иметь более одного возможного ключа. Тогда один из них становится первичным, а остальные альтернативными ключами. Альтернативный ключ (alternate key) – это потенциальный ключ, не ставший первичным. ERwin позволяет выделить атрибуты альтернативных ключей, и по умолчанию в дальнейшем при генерации схемы БД по этим атрибутам будет генерироваться уникальный индекс. При работе информационной системы (ИС) часто бывает необходимо обеспечить доступ к нескольким экземплярам сущности, объединенным каким-либо одним признаком. Для повышения производительности в этом случае используются неуникальные индексы. ERwin позволяет на уровне логической модели назначить атрибуты, которые будут участвовать в неуникальных индексах. Атрибуты, участвующие в неуникальных индексах, называются «Inversion Entries» (инверсионные входы). «Inversion Entry» – это атрибут или группа атрибутов, которые не определяют экземпляр сущности уникальным образом, но часто используются для обращения к экземплярам сущности. ERwin генерирует неуникальный индекс для каждого «Inversion Entry». Создать альтернативные ключи и инверсионные входы можно в закладке «Key Group» диалога «Attribute Editor». Если щелкнуть по кнопке со знаком (…), расположенной в правой верхней части закладки, вызывается диалог «Key Group Editor». В верхней части диалога находится список ключей, в нижней – список атрибутов, доступных для включения в состав ключа (слева), и список ключевых атрибутов. Каждый вновь созданный ключ должен иметь хотя бы один атрибут. Для включения атрибута в состав ключа следует выделить его в левом списке и щелкнуть по кнопке со стрелкой. Для создания нового ключа следует щелкнуть по кнопке «New…». Появляется диалог «New Key Group». Имя нового ключа присваивается автоматически («Alternate Key N» для альтернативного ключа и «Inversion Entry N» для инверсионного входа, где N – порядковый номер ключа). Каждому ключу соответствует индекс, имя которого также присваивается автоматически («XAKNENTITY» для альтернативного ключа и «XIENENTITY» для инверсионного входа, где N – порядковый номер ключа, ENTITY – имя сущности). Имена ключа и индекса при желании можно изменить вручную. На диаграмме (рисунок 1.14) атрибуты альтернативных ключей обозначаются как (AKn.m), где n – порядковый номер ключа, m – порядковый номер атрибута в ключе. Когда альтернативный ключ содержит несколько атрибутов, (AKn.m) ставится после каждого. На рисунке атрибуты «Фамилия», «Имя», «Отчество» и «Дата рождения» входят в альтернативный ключ №1 (АК1), Номер паспорта составляет альтернативный ключ №2 (АК2). Инверсионные входы обозначаются как (IEn.m), где n – порядковый номер входа, m – порядковый номер атрибута. Инверсионный вход IE1 (атрибут «Должность») позволяет выбрать всех сотрудников, занимающих одинаковую должность, IE2 (атрибуты «Город» и «Улица») – всех сотрудников, живущих на одной улице, IE3 (атрибут «Номер комнаты») – всех сотрудников, работающих в одной комнате, а IE4 (атрибут «Дата рождения») – всех сотрудников, родившихся в один день. Если один атрибут входит в состав нескольких ключей, ключи перечисляются в скобках через запятую (атрибут «Дата рождения» входит в состав АК1 и IE4). По умолчанию номера альтернативных ключей и инверсионных входов рядом с именем атрибута на диаграмме не показываются. Для отображения номера следует в контекстном меню, которое появляется, если щелкнуть левой кнопкой мыши по любому месту диаграммы, не занятому объектами модели, выбрать пункт «Display Options/Entities» и затем включить опцию «Alternate Key Designator (AK)». Внешние ключи («Foreign Key») создаются автоматически, когда связь соединяет сущности: связь образует ссылку на атрибуты первичного ключа в дочерней сущности, и эти атрибуты образуют внешний ключ в дочерней сущности (миграция ключа). Атрибуты внешнего ключа обозначаются символом (FK) после своего имени. Зависимая сущность может иметь один и тот же внешний ключ из нескольких родительских сущностей. Сущность может также получить один и тот же внешний ключ несколько раз от одного и того же родителя через несколько разных связей. Когда ERwin обнаруживает одно из этих событий, он распознает, что два атрибута одинаковы, и помещает атрибут внешнего ключа в зависимой сущности только один раз. Хотя в закладке «Key Group» диалога «Attribute Editor» этот атрибут будет входить в два внешних ключа, на диаграмме он показывается только один раз. Это комбинирование или объединение идентичных атрибутов называется унификацией. Рисунок 1.14 – Сущность «Сотрудник» с изображением ключей Унификация производится, поскольку правила нормализации запрещают существование в одной сущности двух атрибутов с одинаковыми именами. Когда унификация нежелательна (например, когда два атрибута имеют одинаковые имена, но на самом деле они отличаются по смыслу, и необходимо, чтобы это отличие отражалось в диаграмме), нужно использовать имена ролей атрибутов внешнего ключа. 1.7 Нормализация данных Нормализация – процесс проверки и реорганизации сущностей и атрибутов с целью удовлетворения требований к реляционной модели данных. Нормализация позволяет быть уверенным, что каждый атрибут определен для своей сущности, значительно сократить объем памяти для хранения информации и устранить аномалии в организации хранения данных. В результате проведения нормализации должна быть создана структура данных, при которой информация о каждом факте хранится только в одном месте. Процесс нормализации сводится к последовательному приведению структуры данных к нормальным формам – формализованным требованиям к организации данных. Известны шесть нормальных форм: первая нормальная форма (1NF); вторая нормальная форма (2NF); третья нормальная форма (3NF); нормальная форма Бойса-Кодда (усиленная 3NF); четвертая нормальная форма (4NF); пятая нормальная форма (5NF). На практике обычно ограничиваются приведением данных к третьей нормальной форме (полная атрибутивная модель, FA). Нормальные формы основаны на понятии функциональной зависимости (в дальнейшем будет использоваться термин «зависимость»). 1.8 Домены Домены можно определить как совокупность значений, из которых берутся значения атрибутов. Каждый атрибут может быть определен только на одном домене, но на каждом домене может быть определено множество атрибутов. В понятие домена входит не только тип данных, но и область значений данных. В ERwin домен может быть определен только один раз и использоваться как в логической, так и в физической модели. Для создания домена в логической модели служит диалог «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. С его помощью можно выбрать в списке домен и по методу drag&drop перенести его в какую-либо сущность. В ней будет создан новый атрибут с именем, которое следует задать в окне «Name Inherited by Attribute» диалога «Domain Dictionary Editor». Если значение поля не задано, по умолчанию принимается имя домена. 2 ЛАБОРАТОРНЫЙ ПРАКТИКУМ Постановка задачи В качестве примера проектирования рассмотрена работа предприятия, занимающегося обучением работе на компьютере. По результатам обследования предприятия можно обозначить несколько объектных областей: материальное обеспечение процесса обучения – здесь можно выделить несколько сущностей: класс, учебное место, единица оборудования и тип оборудования; методическое обеспечение процесса обучения: типовой курс, тема типового курса, индивидуальный план и плановое занятие; учебный процесс: учебный день, академический час и занятие в классе; персонал и учащиеся: преподаватель и учащиеся. Рассмотрим для примера сущности, входящие в объектную область «материальное обеспечение процесса обучения». Для этого на предприятии оборудован специализированный класс. Предприятие расширяется и готовит еще несколько учебных классов. Таким образом, в проектируемом приложении должна быть предусмотрена возможность одновременной работы с несколькими учебными классами. Учебный класс характеризуется следующими параметрами: адрес (полный почтовой адрес); номер корпуса (часть классов может находиться в учебных комплексах, состоящих из нескольких корпусов); номер аудитории (произвольная символьная информация, как и номер корпуса); телефон (номер телефона, установленного в классе, может содержать цифры и символы «-», «(» и «)»). Учебный класс представляет собой совокупность учебных мест. Оптимальное число учебных мест в классе – около десяти. Это связано с принятой на предприятии индивидуально-групповой методикой обучения. Каждое учебное место представляет собой персональный компьютер. В классе учебному месту присвоен номер. Кроме того, учебное место имеет несколько характеристик, связанных с тем, что компьютеры объединены в локальную сеть: имя рабочей станции (строковая характеристика, задается при установке операционной системы на компьютер); IP-адрес (в качестве основного сетевого протокола на предприятии принят протокол ТСР/IP, причем динамическое присвоение адресов проксисервером может не использоваться, в этом случае необходимо хранить информацию об IP-адресах. IP-адрес строка вида «999.999.999.999», состоящая из трехзначных цифровых групп, разделенных точками). Кроме того, к учебному классу может относиться дополнительное оборудование, например, сетевое. Класс снабжен также хотя бы одним сетевым принтером, который может быть подключен к любому рабочему месту, но обслуживает весь класс. Характеристикой типа оборудования будем считать наименование оборудования. Учебный класс на протяжении длительного времени комплектовался компьютерами, приобретавшимися в разное время для нужд других отделов предприятия и попадавшими в класс по мере их модернизации. Для поддержания учебных мест в рабочем состоянии имеется некоторый фонд запасных частей и комплектующих. Комплектующие учебных мест (единицы оборудования) могут быть самыми разными (например, стол и стул). Таким образом, целесообразно рассматривать отдельно, как сущность, тип оборудования, который будет характеризовать каждый экземпляр. Каждая единица оборудования может обладать инвентарным номером и некоторым набором присущих данному типу заводских характеристик. Единица оборудования может находиться в резерве, то есть не быть установленной в учебное место. Кроме того, она может быть вообще неисправна и подлежать списанию, то есть обладать некоторой характеристикой «исправности». Если единица оборудования установлена в учебное место, то необходимо хранить дату установки. 2.1 Лабораторная работа №1. Создание уровней модели и сущностей, входящих в объектную область Цель работы: создание уровней модели и сущностей для заданной объектной области. Задачи работы: освоить приемы построения сущностей. Содержание работы: знакомство с программой ERwin; создание нового хранимого отображения; создание сущностей. Пример выполнения лабораторной работы Начинаем проектирование логической модели с уровня сущностей. Выберите пункт главного меню «Format/Stored Display Settings». На экране появится окно редактора хранимых отображений (рису- нок 2.1). Рисунок 2.1 – Редактор хранимых отображений В верхней части окна находится список хранимых отображений модели. В настоящее время оно содержит только одно отображение, которое создается по умолчанию – «Display1». В нижней части окна имеется несколько вкладок для задания свойств отображения модели: General – общие свойства отображения. В поле «Author» (автор) вводится имя автора хранимого отображения. «Logical Model» (логическая модель) – хранимое отображение будет использоваться только на логическом уровне модели. «Display Shadows» (показывать тени) – прямоугольники сущности будут изображаться на экране с тенью. Внизу, в рамке «Relationships lines» (линии связей) устанавливается способ изображения линий связи между сущностями; Logical – логический уровень. Установкой переключателя «Display Level» (уровень отображения) в положение «Entity» задается, что на экране будут показаны только сущности, без атрибутов. Расшифруем остальные уровни отображений: «Attribute» – атрибуты, «Definition» – определение, «Primary Key» – первичный ключ, «Icon» – иконка. Установите флажок «Verb Phrase» (глагольная фраза), чтобы на схеме отображались глагольные фразы, именующие связи между сущностями. Остальные флажки без изменений; Physical задаются свойства отображения физического уровня модели. Так как пока будем заниматься логическим уровнем, эти установки остаются без изменений; Definition–можно ввести описание хранимого отображения; UDP здесь реализован механизм «свойств, определяемых пользователем». Суть этого механизма в том, что каждому из объектов модели может быть присвоено любое число дополнительных свойств, которые создает сам пользователь. Эти свойства могут быть различных типов: числовой, текст, дата и список. К значениям свойств можно обращаться при генерации отчетов и сценариев. То, что вы задавали с помощью редактора отображений, относится к отображению «Display1», переименуйте его в «Уровень сущностей», нажав кнопку «Rename». Рисунок 2.2 – Необходимые установки Создайте еще одно отображение под названием «Уровень атрибутов» со следующими свойствами на странице «Logical»: «Display Level» – Attribute, Relationship Option – выделите все пункты, «Entity Option» – выберите все пункты, кроме четвертого, восьмого и девятого (рисунок 2.2). Теперь у диаграммы определены два отображения с разной степенью детализации, и для перехода из режима сущностей в режим атрибутов достаточно щелкнуть по соответствующей закладке в нижней части схемы (рисунок 2.3). Рисунок 2.3 – Закладки хранимых отображений Для сохранения построенной модели выберите пункт главного меню «File/Save» или «File/Save as». Выделите в палитре инструментов кнопку сущности, щелкнув по ней указателем мыши. Затем щелкните по чистой области диаграммы. На поле диаграммы появится прямоугольник, изображающий новую сущность, с автоматически сгенерированным именем «Е/1». Разумеется, это имя можно изменить, например, на имя «Class». Это можно сделать сразу же после вставки сущности в диаграмму, так как ее имя в этот момент находится в режиме редактирования. Введите с клавиатуры имя сущности «Class» и нажмите клавишу Enter. Точно таким же образом вставьте в диаграмму еще три сущности – «Учебное место» «Workplace», «Тип оборудования» «Type_equipment» и «Единица оборудования» «Equipment» (рисунок 2.4). Рисунок 2.4 – Сущности объектной области «Материальное обеспечение» Вставленные в диаграмму сущности можно перемещать или удалять. Каждая из сущностей, как и всякий объект ER-диаграммы, обладает контекстным меню. Для вызова контекстного меню необходимо щелкнуть по прямоугольнику сущности правой кнопкой мыши. Первый пункт в контекстом меню «Entity Properties…» вызывает редактор сущности, позволяющий изменять свойства выбранной сущности (рисунок 2.5). Рисунок 2.5 – Редактор сущности В верхней части окна редактора (см. рисунок 2.5) находится список всех сущностей, имеющихся на диаграмме («Entity»). С его помощью можно выбрать сущность, свойства которой необходимо посмотреть или изменить. Далее имеется поле «Name», в котором высвечивается имя сущности; его можно редактировать. Ниже в окне редактора находится ряд закладок: «Definition» (определение). На этой странице вводится определение сущности; «Note», «Note2», «Note3» (примечание) используются для ввода произвольного текста, связанного с сущностью, например, образцы данных и запросы; «UDP» (определяемые пользователем свойства) – механизм поль-зовательских свойств, совпадает с вышеописанным при определении хранимых отображений диаграммы; «Icon» (иконка). Для наглядности каждой сущности может быть присвоена иконка, которая выводится рядом с ее названием. Помимо маленькой иконки («Small Icon»), в целях презентации можно присвоить сущности и более крупный рисунок («Large Icon»). Чтобы перейти в режим показа иконок, щелкните правой кнопкой мыши по свободному полю диаграммы и в контекстном меню выберите пункт «Entity Display/Entity Icon»; «History» (история) – дата создания сущности и возможность пользователю прокомментировать ее. |