Важно отметить, что в этом примере объектное множество ТИП МАТЕРИАЛА представляет собой скорее концептуальный, чем физический объект. Это означает, что каждый элемент множества ТИП МАТЕРИАЛА обозначает именно тип, а не физический «кусок» материала. Такое понятие концептуального объекта, противопоставляемого физическому объекту, часто применяется при концептуальном моделировании данных. В некоторых случаях требуется моделировать отдельные объектные множества для физических объектов.
Теперь мы покажем, как отразить формирование бригад и назначение рабочих и бригадиров. На рис. 6.5 представлено отношение между объектными множествами ТИП БРИГАДЫ и ЗДАНИЕ. ТИП БРИГАДЫ - еще один пример концептуального объектного множества; то есть элементы множества ТИП БРИГАДЫ соответствуют не конкретным бригадам, а типам бригад, таким как бригада арматурщиков или бригада каменщиков. Отношение между зданием и типом бригады представляет конкретную бригаду — бригаду, назначенную выполнять на данном здании данный тип работ. Таким образом, мы можем рассматривать это отношение как объект, назвав его БРИГАДА.
Рис. 6.4. Моделирование отношений между зданиями и материалами: а — отношение между зданиями и материалами;
б — количество материала данного типа, использованного в здании
Рис. 6.5. Модель формирования бригад
Для каждой бригады как элемента объектного множества БРИГАДА выбираются дни работы. Например, бригаде штукатуров требуется несколько дней для того, чтобы оштукатурить данное здание. Таким образом, у нас есть отношение много-ко-многим, РАБОТАЕТ-ТОГДА-ТО, между объектами БРИГАДА и ДАТА.
На рис. 6.6 представлено распределение рабочих и бригадиров по бригадам. Обратите внимание, что отношение ЯВЛЯЕТСЯ-БРИГАДИРОМ имеет мощность один-ко-многим. Это связано с тем, что у бригады может быть только один бригадир, но при этом один и тот же человек может возглавлять несколько бригад.
Рис. 6.6. Назначение рабочих в бригады
На рис. 6.7 представлена объединенная диаграмма, представляющая полную модель данных для строительной компании «Премьер».
Рис. 6.7. Модель данных для строительной компании «Премьер"
Для создания концептуальной модели базы данных запустите программу Power Designer и выберите из меню File команду New. Откроется основное окно программы, которое содержит область отображения модели, меню, панель инструментов и панель элементов модели (рис. 6.8).
Прежде всего определим свойства создаваемой модели, которые используются для ее идентификации, описания и отображения в отчетах по модели. Для этого выполните команду Dictionary > Model Properties. Откроется окно диалога Model Properties (рис. 6.9). Задайте в нем наименование и идентификатор проекта, в рамках которого создается данная модель, а также наименование и идентификатор самой модели. Кроме этого, вы можете указать автора модели, используемый язык, версию модели, ввести краткое и подробное описание, аннотацию.
рис. 6.8 Основное окно Power Design
рис. 6.9 Определение свойств модели
Для создания сущности выберите на панели элементов значок с изображением прямоугольника, содержащего в верхней части горизонтальную линию, II перенесите его в область модели. Создастся прямоугольник для попои сущности, которая пока содержит только наименование. Для определения свойств сущности сделайте двойной щелчок на изображении прямоугольника. Откроется окно диалога Entity Properties. Перейдите на вкладку Definition и введите наименование, идентификатор и краткое описание сущности (рис. 6.10). Подробное описание вводится в поле редактирования на вкладке Description. При совместной разработке модели информационной системы вкладка Annotation может использоваться для замечаний и комментариев по поводу сущности. При нажатии на кнопку Attributes, расположенную на вкладке Description, открывается окно диалога ввода атрибутов сущности. Для определения бизнес-правил сущности щелкните на кнопке Rules и в открывшемся окне диалога выберите одно из ранее созданных правил.
рис. 6.10 Определение свойств сущности
Прежде чем перейти к непосредственному определению атрибутов сущности, познакомимся с созданием доменов. Домены являются аналогами пользовательских типов в реляционных базах данных и могут использоваться для указания типов атрибутов сущностей. Для создания домена выполните команду Model > Domains. Откроется окно диалога List of Domains, которое содержит таблицу со списком доменов модели (рис. 6.11).
Рассмотрим создание домена идентификаторов элементов списка, который будет использоваться при определении таких атрибутов, как WORKER_ID (идентификатор работника) или BLDG_ID (идентификатор здания). Тип данных создаваемого домена — четырехзначное число (фактически это подтип стандартного числового типа данных Number) и его значение по умолчанию равно нулю. Для создания нового домена щелкните на кнопке New и введите в столбцы Name и Code таблицы наименование и идентификатор домена. Для определения типа данных перейдите в столбец Data Type и щелкните на кнопке с многоточием, расположенной с правого края ячейки. Откроется окно диалога Standard Data Types, в котором можно выбрать требуемый тип из большого количества базовых типов данных. В данном случае необходимо выбрать тип Number и задать в поле Length длину 4.
рис. 6.11 Окно диалога со списком доменов
Для определения значения по умолчанию щелкните на кнопке Standard Checks. Откроется окно диалога Check Parameters (рис. 6.12). На отображаемой по умолчанию вкладке Standard Parameters в полях области Values определите минимальное и максимальное значения, а также значение по умолчанию. Здесь же вы можете задать формат, единицу измерения и список допустимых значений домена. Для определения бизнес-правил домена щелкните на кнопке Rules и выберите в открывшемся окне диалога одно из ранее созданных правил.
Рис. 6.12. Определение ограничений для домена
Для ввода подробного описания и аннотации щелкните в окне диалога List of Domains на кнопках Describe и Annotation соответственно. Для каждой из них будет открыто соответствующее окно диалога, содержащее поля для ввода текста.
Для определения атрибутов сущности откройте окно свойств и щелкните на вкладку Attributes. Откроется окно диалога ввода атрибутов сущности (рис. 6.13).
рис. 6.13 Определение атрибутов сущности
В таблице для каждого атрибута задаются имя, идентификатор и тип данных, который может быть одним из базовых типов пли доменом, созданным пользователем. В этой же таблице устанавливаются флаг идентифицирующего атрибута и признак запрета пустого значения. Для ввода относящихся к атрибуту ограничений щелкните на кнопке Check и задайте требуемые значения в окне диалога Check Parameters.
Для сущности WORKER первые три атрибута имеют идентификаторы WORKER_ID (идентификатор работника), NAME (имя) и HRLY_RATE (недельная зарплата) соответственно. Для атрибута WORKER_ID выберите из списка Domain созданный ранее домен IDENT. При этом автоматически определяются тип данных и значение по умолчанию. Атрибут WORKER_ID является идентифицирующим атрибутом, так как однозначно определяет работника, поэтому для него установите флаг в столбце I. Обратите внимание, что при этом автоматически устанавливается флаг запрета пустых значений.
Для атрибутов BLDG_TYPE (тип здания) и STATUS (статус) сущности BUILDING (здание) необходимо определить значения по умолчанию: 'Офис' и 1 соответственно. Кроме того, они имеют ограничения на значения атрибутов. Атрибут RLDG_TYPE может содержать только значения из множества ('Офис'. 'Склад'. 'Магаз. 'Жилой Дом') (рис. 6.14), а значение столбца STATUS может быть от 1 до 3.
Рис. 6.14. Определение списка допустимых значений
Для создания связи между двумя сущностями выполните следующие действия:
1. Выберите на панели элементов кнопку, на которой показаны два прямо- в угольника, соединенные линией.
2. Соедините линией две сущности.
В модели появляется связь между выбранными сущностями, которой по умолчанию присваивается имя Re1ation_n, где n — порядковый номер создаваемой связи
Для определения свойств созданной связи сделайте на ней двойной щелчок мышьи Откроется окно свойств связи (рис. 6.15), в верхней части которого расположен! графическое отображение связи и кнопки с наименованиями соединяемых. Введите в ноля Name, Code н Label наименование связи, ее идентификатор и крш кос описание. Затем задайте в области Cardinality тин связи между сущностями: один-к-одному, один-ко-многим, многие-к-одному или многие-ко-многим.