С.В. Горин, А.Ю. Тандоев
АлконсСофт , тел.: (095) 362-5138, 918-1380
- Место ERwin в информационном моделировании
- Отображение логического и физического уровня модели данных в ERwin
- Компоненты диаграммы ERwin и основные виды представлений диаграммы
- Инструменты для создания модели в ERwin
- Идентификация сущностей. Сущности в ERwin
- Связи (relationships) в ERwin
- Графическое редактирование модели
- Реализация ссылочной целостности с помощью ERwin
- Хранение информации в модели ERwin
- Пример разработки модели в ERwin
- Обратное проектирование (Reverse engineering)
- Синхронизация с базой данных
- Интерфейсы к СУБД
- Поддержка средств 4GL
- Программирование триггеров и процедур
- Правила и начальные значения
- Домены
- Генерация отчетов
- Настройка режимов отображения
В условиях рынка все большее число компаний осознают преимущества использования информационных систем (ИС). В некоторых случаях ИС - это не только набор услуг, но и важнейший компонент бизнеса, как, например, система резервирования билетов или средства предоставления финансовой информации. Чтобы получить выгоду от использования информационной системы, ее следует создавать в короткие сроки и с уменьшенными затратами. Информационная система должна быть легко сопровождаемой и управляемой. Создание информационной системы предприятия - достаточно сложный и многоступенчатый процесс, который, весьма часто, содержит фазу информационного моделирования. Информационная модель - это спецификация структуры данных и бизнес правил (правил предметной области).
Информационное моделирование
В данной статье мы рассмотрим некоторые аспекты информационного моделирования и его автоматизации с использованием CASE-средства ERwin 2.0 фирмы LogicWorks.
ERwin - средство разработки структуры базы данных (БД). ERwin сочетает графический интерфейс Windows, инструменты для построения ER-диаграмм, редакторы для создания логического и физического описания модели данных и прозрачную поддержку ведущих реляционных СУБД и настольных баз данных. С помощью ERwin можно создавать или проводить обратное проектирование (реинжиниринг) баз данных.
С начала 1995 года распространяется версия 2.0, в которой реализован ряд новых функций:
- прямое подключение к базе данных: создание структуры базы данных непосредственно из ERwin, восстановление модели существующей БД;
- переход от одной целевой базы данных к другой с использованием взаимооднозначных соответствий особенностей СУБД;
- поддержка "настольных" (desktop) СУБД;
- управление физическими характеристиками хранения данных (для Oracle и Sybase - табличным пространством и сегментами соответственно);
- разбиение диаграммы на функционально законченные части - логические области;
- хранимые наборы параметров отображения для построения отчетов и диаграмм;
- процедуры и триггеры описываются при построении модели и автоматически создаются в БД при генерации;
- технология "drag and drop" для манипулирования атрибутами;
- возможность хранения диаграммы в целевой базе данных или в DBF файлах;
- поддержка системы контроля версий PVCS фирмы Intersolv;
- шрифтовое и цветовое выделение.
Реализация моделирования в ERwin базируется на теории реляционных баз данных и на методологии IDEF1X.
Методология IDEF1X была разработана для ВВС США и теперь используется, в частности, в правительственных, аэрокосмических и финансовых учреждениях, а также в большом числе частных компаний.
Методология IDEF1X определяет стандарты терминологии, используемой при информационном моделировании, и графического изображения типовых элементов на диаграммах.
Возможны две точки зрения на информационную модель и, соответственно, два уровня модели. Первый - логический (точка зрения пользователя) - описывает данные, задействованные в бизнесе предприятия. Второй - физический - определяет представление информации в БД. ERwin объединяет их в единую диаграмму, имеющую несколько уровней представления 1).
Реляционные базы данных
В реляционной модели все данные представляются как факты о сущностях и связях. Например, система резервирования билетов содержит информацию о сущностях "пассажир" и "рейс". Между сущностями определяются функциональные связи. Продолжая пример, между сущностями "пассажир" и "рейс" определяется связь "перевозит" ("рейс" "перевозит" много "пассажиров").
Сущность - это, например, человек, место, вещь, событие, концепция, о которых хранится информация. Сущности именуются обычно существительными, такими как "покупатель", "компьютер", "служащий", "продажа".
Более точно, сущность - это множество индивидуальных объектов - экземпляров, причем все эти объекты являются различными.
Связь - это функциональная зависимость между сущностями. Например, "служащий" совершает "продажи".
Каждая сущность обладает атрибутами. Атрибут - это свойство объекта, характеризующее его экземпляр. Сущность "служащий" может иметь атрибуты "имя", "дата рождения" и т.д.
Общепринятым видом графического изображения реляционной модели данных является ER-диаграмма. На такой диаграмме сущности (таблицы) изображаются прямоугольниками, возможно, соединенными между собой линиями (связями). Такое графическое представление облегчает восприятие структуры базы данных по сравнению с текстовым описанием.
Сущности и атрибуты в реляционной модели
Таблицы в реляционной СУБД состоят из строк данных, однородных по своей природе. Другими словами, каждая строка таблицы описывает один экземпляр некоторой сущности, причем набор атрибутов каждого экземпляра постоянен.
Предположим, в базе данных хранится информация о служащих. Таблица "покупатель" содержит 3 колонки и 4 строки:
Имя | Адрес | Идент. карты |
---|---|---|
Сидоров | 1 улица 8 марта | 444444 |
Иванов | 2 улица 8 марта | 222222 |
Петров | 3 улица 8 марта | 333333 |
Павлов | 4 улица 8 марта | 111111 |
Имя таблицы и имена ее колонок составляют структуру таблицы: customer (name, address, card_id). В реляционной модели все значения данных являются атомарными, т.е. нельзя в клетке таблицы хранить список значений.
Таблицы в реляционной модели соответствуют (не обязательно совпадают по имени) сущностям, а колонки - атрибутам.
Связи в реляционной модели
Если между некоторыми сущностями существует связь, то факты из одной сущности ссылаются, или некоторым образом связаны, с фактами из другой сущности. Поддержание непротиворечивости функциональных зависимостей между сущностями называется ссылочной целостностью. Поскольку связи содержатся "внутри" реляционной модели, реализация ссылочной целостности может выполняться как приложением, так и самой СУБД (с помощью механизмов декларативной ссылочной целостности, триггеров).
Проектирование модели в ERwin наглядно представляет ограничения ссылочной целостности в независимом от СУБД виде. В то же время для выбранной целевой СУБД ERwin автоматически генерирует нужные элементы ссылочной целостности - внешние и альтернативные ключи, триггеры, ограничения.
Моделирование в ERwin
Место ERwin в информационном моделировании
Процесс построения информационной модели состоит из следующих шагов:
- определение сущностей;
- определение зависимостей между сущностями;
- задание первичных и альтернативных ключей;
- определение атрибутов сущностей;
- приведение модели к требуемому уровню нормальной формы;
- переход к физическому описанию модели:назначение соответствий имя сущности - имя таблицы, атрибут сущности - атрибут таблицы; задание триггеров, процедур и ограничений;
- генерация базы данных.
ERwin создает визуальное представление (модель данных) для решаемой задачи. Это представление может использоваться для детального анализа, уточнения и распространения как части документации, необходимой в цикле разработки. Однако ERwin далеко не только инструмент для рисования. ERwin автоматически создает базу данных (таблицы, индексы, хранимые процедуры, триггеры для обеспечения ссылочной целостности и другие объекты, необходимые для управления данными).
Отображение логического и физического уровня модели данных в ERwin
В ERwin существуют два уровня представления и моделирования - логический и физический2). Логический уровень означает прямое отображение фактов из реальной жизни. Например, люди, столы, отделы, собаки и компьютеры являются реальными объектами. Они именуются на естественном языке, с любыми разделителями слов (пробелы, запятые и т.д.). На логическом уровне не рассматривается использование конкретной СУБД, не определяются типы данных (например, целое или вещественное число) и не определяются индексы для таблиц.
Целевая СУБД, имена объектов и типы данных, индексы составляют второй (физический) уровень модели ERwin.
ERwin предоставляет возможности создавать и управлять этими двумя различными уровнями представления одной диаграммы (модели), равно как и иметь много вариантов отображения на каждом уровне.
Компоненты диаграммы ERwin и основные виды представлений диаграммы
Диаграмма ERwin строится из трех основных блоков - сущностей, атрибутов и связей. Если рассматривать диаграмму как графическое представление правил предметной области, то сущности являются существительными, а связи - глаголами.
Выбор между логическим и физическим уровнем отображения осуществляется через линейку инструментов или меню. Внутри каждого из этих уровней есть следующие режимы отображения:
- Режим "сущности" - внутри прямоугольников отображается имя сущности (для логической модели) или имя таблицы (для физического представления модели); служит для удобства обзора большой диаграммы или размещения прямоугольников сущностей на диаграмме.
- Режим "определение сущности" служит для презентации диаграммы другим людям.
- Режим "атрибуты". При переходе от предметной области к модели требуется вводить информацию о том, что составляет сущность. Эта информация вводится путем задания атрибутов (на физическом уровне - колонок таблиц). В этом режиме прямоугольник-сущность делится линией на две части - в верхней части отображаются атрибуты (колонки), составляющие первичный ключ, а в нижней - остальные атрибуты. Этот режим является основным при проектировании на логическом и физическом уровнях.
- Режим "первичные ключи" - внутри прямоугольников - сущностей показываются только атрибуты/колонки, составляющие первичный ключ.
- Режим "пиктограммы". Для презентационных целей каждой таблице может быть поставлена в соответствие пиктограмма (bitmap).
- Режим "показ глагольной фразы". На дугах связей показываются глагольные фразы, связывающие сущности (для логического уровня) или имена внешних ключей (для физического уровня).
Диаграмма может занимать более чем один экран и более чем один лист при печати. Для обзора модели предусмотрены, кроме прокруток экрана, режимы уменьшения изображения в два и четыре раза.
Инструменты для создания модели в ERwin
Основные инструменты создания модели доступны как из меню, так и через окно инструментов. С их помощью создаются независимые и зависимые сущности, идентифицирующие и неидентифицирующие связи, полные и неполные категории, неспецифические связи и текстовые элементы.
Нажатием мыши над сущностью производится вход в один из многочисленных редакторов ERwin:
- редакторы, связанные с сущностью в целом (определение сущности, дополнительная информация, триггеры, индексы, характеристики таблицы, хранимые процедуры, связанные с таблицей);
- редакторы атрибутов (определение атрибутов, колонки таблицы в физическом представлении модели, репозитарий средства 4GL, например, расширенные атрибуты в PowerBuilder 3).
Идентификация сущностей. Сущности в ERwin
На диаграмме сущность изображается прямоугольником. В зависимости от режима представления диаграммы прямоугольник может содержать имя сущности, ее описание, список ее атрибутов и другие сведения.
Горизонтальная линия прямоугольника разделяет атрибуты сущности на два набора - атрибуты, составляющие первичный ключ в верхней части, и прочие (не входящие в первичных ключ) - в нижней части.
Сущность представляет собой множество реальных или абстрактных объектов, например: люди, места, события, факты, которые имеют общие характеристики. Сущность - это логическое понятие. Сущности соответствует таблица в реальной СУБД. В ERwin сущность визуально представляет три основных вида информации:
- атрибуты, составляющие первичный ключ;
- неключевые атрибуты;
- тип сущности (независимая/зависимая).
Первичный ключ - это атрибут или набор атрибутов, уникально идентифицирующий экземпляр сущности. Если несколько наборов атрибутов могут уникально идентифицировать сущность, то выбор одного из них осуществляется разработчиком на основании анализа предметной области.
Для каждого первичного ключа ERwin создает при генерации структуры БД уникальный индекс.
Экземпляры независимой сущности могут быть уникально идентифицированы без определения ее связей с другими сущностями; зависимая сущность, наоборот, не может быть уникально идентифицирована без определения ее связей с другими сущностями. Зависимая сущность отображается в ERwin прямоугольником с закругленными углами.
Связи (relationships) в ERwin
Связь - это функциональная зависимость между двумя сущностями (в частности, возможна связь сущности с самой собой). Например, важно знать фамилию сотрудника, и не менее важно знать, в каком отделе он работает. Таким образом, между сущностями "отдел" и "сотрудник" существует связь "состоит из" (отдел состоит из сотрудников). Связь - это понятие логического уровня, которому соответствует внешний ключ на физическом уровне. В ERwin связи представлены пятью основными элементами информации:
- тип связи (идентифицирующая, неидентифицирующая, полная/неполная категория, неспецифическая связь);
- родительская сущность;
- дочерняя (зависимая) сущность;
- мощность связи (cardinality);
- допустимость пустых (null) значений.
Связь называется идентифицирующей, если экземпляр дочерней сущности идентифицируется через ее связь с родительской сущностью. Атрибуты, составляющие первичный ключ родительской сущности, при этом входят в первичный ключ дочерней сущности. Дочерняя сущность при идентифицирующей связи всегда является зависимой.
Связь называется неидентифицирующей, если экземпляр дочерней сущности идентифицируется иначе, чем через связь с родительской сущностью. Атрибуты, составляющие первичный ключ родительской сущности, при этом входят в состав неключевых атрибутов дочерней сущности.
Для определения связей ERwin выбирается тип связи, затем мышью указывается родительская и дочерняя сущность. Идентифицирующая связь изображается сплошной линией; неидентифицирующая - пунктирной линией. Линии заканчиваются точкой со стороны дочерней сущности.
При определении связи происходит миграция атрибутов первичного ключа родительской сущности в соответствующую область атрибутов дочерней сущности. Поэтому такие атрибуты не вводятся вручную.
Атрибуты первичного ключа родительской сущности по умолчанию мигрируют со своими именами. ERwin позволяет ввести для них роли, т.е. новые имена, под которыми мигрирующие атрибуты будут представлены в дочерней сущности. В случае неоднократной миграции атрибута такое переименование необходимо. Например, сущность "посредническая сделка" имеет атрибут "код предприятия-продавца" и "код предприятия-покупателя". В данном случае первичный ключ сущности "предприятие" ("код предприятия") имеет две роли в дочерней сущности.
На физическом уровне имя роли - это имя колонки внешнего ключа в дочерней таблице.
Мощность связи представляет собой отношение количества экземпляров родительской сущности к соответствующему количеству экземпляров дочерней сущности. Для любой связи, кроме неспецифической, эта связь записывается как 1:n. ERwin, в соответствии с методологией IDEF1X, предоставляет 4 варианта для n, которые изображаются дополнительным символом у дочерней сущности:
- ноль, один или больше (по умолчанию);
- один или больше (изображается буквой "P");
- ноль или один (изображается буквой "Z");
- ровно N, где N - конкретное число
(изображается числом N).
Допустимость пустых (NULL) значений в неидентифицирующих связях ERwin изображает пустым ромбиком на дуге связи со стороны родительской сущности.
Имя связи на логическом уровне представляет собой "глагол", связывающий сущности. Физическое имя связи (которое может отличаться от логического) для ERwin означает имя ограничения (constraint) или индекса.
Графическое редактирование модели
Все объекты модели ERwin могут редактироваться средствами, принятыми в Windows, - группировка, копирование, удаление, перемещение, использование системного буфера. Установка цветов и шрифтов осуществляется в удобных диалогах.
Альтернативные ключи
Альтернативный ключ - это атрибут (или группа атрибутов), несовпадающий с первичным ключом и уникально идентифицирующий экземпляр сущности. Например, для сущности служащий (идентификатор служащего, фамилия. имя, отчество) группа атрибутов "фамилия", "имя", "отчество" может являться альтернативным ключом (в предположении, что на предприятии не работают полные тезки).
Для альтернативного ключа, как и для первичного, ERwin автоматически создает индексы при генерации БД.
Инвертированные индексы
Атрибуты, составляющие альтернативный ключ, однозначно (уникально) идентифицируют экземпляры сущности. В ERwin можно также составлять группы атрибутов, которые не идентифицируют уникально экземпляры сущности, но часто используются для доступа к данным. Для каждой такой группы атрибутов ERwin создает неуникальные индексы.
Одни и те же атрибуты сущности могут входить в несколько различных групп ключей.
Унификация атрибутов
Зависимая сущность может наследовать один и тот же внешний ключ от более чем одной родительской сущности, или от одной и той же родительской сущности через несколько связей. Если не введены различные роли для такого множественного наследования, ERwin считает, что в зависимой сущности атрибуты внешнего ключа появляются только один раз.
Унификация - это объединение двух или более групп атрибутов внешних ключей в один внешний ключ (группу атрибутов), в предположении, что значения одноименных атрибутов в дочерней сущности всегда одинаковы.
Рассмотрим пример: сущность "сотрудник" имеет первичный ключ "код сотрудника" и связан идентифицирующей связью с сущностями "супруга" и "дети". При этом происходит миграция первичного ключа в зависимые сущности. В свою очередь, сущность "супруга" связана неидентифицирующей связью с сущностью "дети". Имеются два пути миграции ключа, однако в сущности "дети" атрибут "код сотрудника" появляется один раз в качестве элемента первичного ключа.
Существуют случаи, когда унификация атрибутов дает неверный с точки зрения предметной области результат. Для отмены унификации для атрибутов вводятся имена ролей.
Связи категоризации
Некоторые сущности определяют целую категорию объектов одного типа. В ERwin в таком случае создается сущность для определения категории и для каждого элемента категории, а затем вводится для них связь категоризации. Родительская сущность категории называется супертипом, а дочерние - подтипом.
Например, сущность "сотрудник" может содержать данные как о штатных работниках, так и о временно нанятых. Первые и вторые имеют различные, частично пересекающиеся наборы атрибутов (минимальное пересечение подтипов составляет первичный ключ). Общая часть этих атрибутов, включая первичный ключ, помещается в сущность-супертип "сотрудник".
Различная часть (например, данные почасовой оплаты для временных работников и данные о зарплате и отпуске для штатных работников) помещается в сущности-подтипы.
В сущности-супертипе вводится атрибут-дискриминатор, позволяющий различать конкретные экземпляры сущности - подтипа.
В зависимости от того, все ли возможные сущности-подтипы включены в модель, категорийная связь является полной или неполной. Продолжая пример, если супертип может содержать данные об уволенных сотрудниках, то эта связь - неполной категоризации, так как для него не существует записи в сущностях - подтипах.
В ERwin полная категория изображается окружностью с двумя подчеркиваниями, а неполная - окружностью с одним подчеркиванием.
Реализация ссылочной целостности с помощью ERwin
Ссылочная целостность - это обеспечение требования, чтобы значения внешнего ключа экземпляра дочерней сущности соответствовали значениям первичного ключа в родительской сущности. Ссылочная целостность может контролироваться при всех операциях, изменяющих данные (INSERT/UPDATE/DELETE). Средства контроля ссылочной целостности в ERwin включают автоматическую генерацию триггеров и использование механизмов декларативной ссылочной целостности (для тех СУБД, которые поддерживают данные механизмы).
Для каждой связи на логическом уровне могут быть заданы требования по обработке операций INSERT/UPDATE/DELETE для родительской и дочерней сущности. ERwin представляет следующие варианты обработки этих событий:
- отсутствие проверки;
- проверка допустимости;
- запрет операции;
- каскадное выполнение операции (DELETE/UPDATE);
- установка пустого (NULL-значения) или заданного значения по умолчанию.
В соответствии с выбранным вариантом ERwin автоматически создает необходимые триггеры на диалекте SQL целевой СУБД. При этом ERwin пользуется библиотекой шаблонов триггеров, которые можно модифицировать.
Хранение информации в модели ERwin
Обычно модели ERwin сохраняются на диске в виде файла. Имеется возможность хранить модель в целевой СУБД. Для этого с помощью самого ERwin в целевой СУБД создается метабаза ERwin. В этой базе данных сохраняется информация модели. В частном случае базой данных могут быть и dBase-файлы, с которыми ERwin работает через ODBC.
Пример разработки модели в ERwin
Рассмотрим цикл разработки на примере, приведенном в статье Кодда (1).
Коротко напомним содержательную сторону задачи: ведется учет служащих; для каждого служащего хранится информация о детях и о списке занимавшихся этим служащим должностей; для должностей хранится информация по установленным должностным окладам.
Сначала создадим логический уровень модели. Для этого зададим режим отображения сущностей (Display/Entity Level). Создадим при помощи линейки инструментов сущности "служащий", "дети", "история работы", "история зарплаты". Будем именовать сущности на русском языке.
Выбрав каждую сущность, зададим для нее подробное описание на русском языке в редакторе "Entity Definition". Это описание появится в отчетах ERwin и может быть отображено на диаграмме.
Укажем связи между сущностями. Например, "служащий" связан идентифицирующей связью, "является родителем", с сущностью "дети". Описание связи вводится в редакторе "Editor/Relationship".
Рисунок 1.
Диаграмма уровня сущности
Результат работы отображен на диаграмме ERwin (Рис. 1).
Теперь перейдем в режим задания атрибутов (Display/Atribute Level). В редакторе "Entity/Attribute" зададим на русском языке имена ключевых и неключевых атрибутов. Заметим, что для дочерней сущности "дети" ключевой атрибут "номер служащего" не указывается вручную. ERwin обеспечивает его миграцию из родительской сущности. То же происходит с другими дочерними сущностями.
Для атрибута "имя" сущности "служащий" укажем, что он является альтернативным ключом (будем считать, что у всех служащих уникальные имена/фамилии). Для этого после имени атрибута поместим указатель AK1 в скобках.
Рисунок 2.
Диаграмма уровня атрибутов
Результат работы отображен на диаграмме ERwin (Рис. 2).
Так как имена атрибутов и сущностей задавались нами на русском языке, для перехода к физическому уровню модели следует поставить им в соответствие идентификаторы таблиц, колонок и ограничений, удовлетворяющие правилам целевой СУБД (обычно это означает использование латинских букв, цифр и некоторых специальных символов).
В редакторе "Database Schema" указываем для каждой сущности соответствующее имя таблицы. Затем в редакторе "Attribute Definition" задаем имена колонок таблиц, соответствующие атрибутам сущностей. ERwin и здесь обеспечивает миграцию имен колонок в подчиненные таблицы.
На этом этапе можно воспользоваться и редактором "Extended Attributes" для определения расширенных атрибутов PowerBuilder (формата отображения, маски редактирования, правила контроля, выравнивания, заголовков и комментариев).
В редакторе "Relationship Definitions" указывается физическое имя связи, которое соответствует имени ограничения (constraint), создаваемого ERwin в базе данных.
Теперь все готово к созданию БД и нужно выбрать целевую СУБД (если этого не было сделано раньше). Выберем, например, Sybase System 10.
В редакторе SYBASE Database Schema задаем типы данных для колонок таблиц.
Диалог, в котором происходит выбор типа данных, приведен на Рис. 3.
Рисунок 3.
Определение физической модели
Теперь можно перейти к созданию базы данных. Для этого выполняется команда "Sybase schema generation". ERwin построит пакет SQL-предложений генерации базы данных. На Рис. 4 показан диалог выбора параметров генерации пакета для генерации БД. На рисунке видно, что может быть задан фильтр (генерация не всех таблиц), пакет SQL-предложений можно просмотреть (preview), распечатать, сохранить в файл (report), выполнить генерацию (generate).
Рисунок 4.
Выбор параметров генерации базы данных
Расширенные функции ERwin
Обратное проектирование (Reverse engineering)
Обратное проектирование, то есть восстановление информационной модели по существующей базе данных, используется при выборе оптимальной платформы (rightsizing) для существующей настольной (desktop) базы данных или базы данных на mainframe, а также при расширении (или модификации) существующей структуры, которая была построена без необходимой сопроводительной документации. После завершения процесса восстановления модели ERwin автоматически "раскладывает" таблицы на диаграмме. Теперь можно выполнять модификации уже с использованием логической схемы - добавлять сущности, атрибуты, комментарии, связи и т.д. По завершении изменений одна команда - синхронизировать модель с базой данных - актуализирует все проведенные изменения.
Построение модели может быть выполнено как на основании данных каталога базы данных, так и на основании пакета операторов SQL, с помощью которого была создана база данных.
Синхронизация с базой данных
В процессе разработки информационной системы может возникнуть ситуация, когда структура базы данных и информационная модель не соответствуют друг другу. ERwin предоставляет возможность привести их в соответствие.
Для этого предусмотрена функция синхронизации с базой данных. После подключения к СУБД предлагается список несоответствий между существующей структурой данных и моделью. Например, если в базе данных создана новая таблица, то ERwin предложит провести включение ее в модель. Если в модель добавлена новая таблица, ERwin предложит создать ее в реальной базе данных. Аналогично, при добавлении колонок в базе данных или в модели ERwin предлагает провести соответствующие операции по синхронизации. Процедура выбора синхронизируемых таблиц показана на Рис. 5.
Рисунок 5.
Выбор синхронизируемых таблиц
ERwin "знает" о таких особенностях хранения данных в отдельных СУБД как сегменты (в Sybase) и табличное пространство (в Oracle). Информация о физическом размещении может быть включена в модель и использована при прямом и обратном проектировании.
Интерфейсы к СУБД
ERwin поддерживает прямой интерфейс с основными СУБД: DB2, Informix, Ingres, NetWare SQL, ORACLE, Progress, Rdb, SQL/400, SQLBase, SQL Server, Sybase System 10, Watcom SQL.
ERwin поддерживает также настольные (desktop) СУБД: Microsoft Access, FoxPro, Clipper, dBASE III, dBASE IV и Paradox.
Отметим, что поддерживаются как самые современные, так и предыдущие версии основных СУБД. Например, для Sybase поддерживается System 10 и версия 4.2; для Oracle - 7 и 6; SQLBase - 6 и 5; Watcom - 4 и 3; Informix - 6 и 5; Access - 2.0 и 1.1 (Рис. 6).
Рисунок 6.
Выбор СУБД для создания модели
Проектирование на физическом уровне выполняется в терминах той базы данных, которую предполагается использовать в системе. Важно, что ERwin "известны" соответствия между возможностями СУБД различных производителей, вследствие чего возможна конвертация физической схемы, спроектированной для одной СУБД, в другую. Например, если при описании ссылочной целостности указана опция "on delete cascade", а СУБД не поддерживает такой режим, ERwin сгенерирует соответствующий триггер.
Для создания физической структуры БД может быть запрошена генерация DDL-скрипта (data definition language). При этом используется диалект SQL для выбранного типа и версии сервера. Хотя сгенерированный код не нуждается в модификации, имеется возможность его сохранить в файл или распечатать.
Поддержка средств 4GL
ERwin выпускается в нескольких различных редакциях, ориентированных на наиболее распространенные средства разработки 4GL. В числе поддерживаемых средств - PowerBuidler фирмы Powersoft, SQL Windows фирмы Gupta, Visual Basic фирмы Microsoft, Oracle*CASE фирмы Oracle.
Средства двунаправленного взаимодействия ERwin c базой данных обеспечивают управление информацией, ориентированной как на серверную, так и на клиентскую часть. Например, для PowerBuilder можно просматривать/редактировать расширенные атрибуты в редакторах ERwin.
Ориентация ERwin на средства 4GL позволяет задать для будущих приложений большинство параметров, непосредственно связанных с базой данных, уже на стадии проектирования информационной модели.
Покажем принципы организации такого взаимодействия на примере PowerBuilder.
PowerBuilder создает в базе данных несколько внутренних таблиц для хранения своего репозитария (расширенных атрибутов для datawindow). Использование расширенных атрибутов гарантирует сохранение стиля отображения одних и тех же колонок базы данных для всех приложений, создаваемых рабочей группой. В расширенных атрибутах задаются такие параметры, как формат отображения, стиль редактирования, выражение проверки на корректность, начальное значение, выравнивание, ширина и высота элемента отображения, метка для формы редактирования, заголовок для табличного отображения.
Для расширенных атрибутов допустимы те же операции синхронизации, что и для всей модели, то есть описания могут быть загружены в базу данных и, наоборот, созданные из среды PowerBuilder описания расширенных атрибутов могут быть загружены из базы данных в ERwin для модификации.
Пример определения расширенных атрибутов показан на Рис. 7.
Рисунок 7.
Задание расширенных атрибутов PowerBuilder
Программирование триггеров и процедур
ERwin реализует собственный макроязык для подготовки прототипов триггеров и процедур. Схема использования прототипов заключается в подготовке шаблона для различных типов триггеров (например, триггер, реализующий логику каскадного удаления - ON DELETE CASCADE). Базовые шаблоны встроены в ERwin, но пользователь может определить свои собственные шаблоны и использовать их вместо стандартных.
Макроязык шаблонов реализует большое количество макросимволов, ссылающихся на различные объекты базы данных, например:
%Action - расширяется в UPDATE/ INSERT/DELETE;
%ForEachAtt(<таблица>,<разделитель>)
{<код макрокоманды>} - циклическое
выполнение группы операторов над каждым атрибутом таблицы;
%ForEachEntity() { } - циклическое
выполнение функций над всеми таблицами;
%If, %else - операторы условного
управления.
Например, шаблон триггера для реализации поддержки on delete cascade:
%Action /*ERwin Builtin %Datetime*/ /* %Parent %VerbPhrase %Child ON PARENT DELETE CASCADE*/ delete %Child from %Child,deleted where /* %%JoinFKPK(%Child,deleted," = "," and") */ %JoinFKPK(%Child,deleted," = "," and")
В модели, приведенной выше для связи positions - salary_track будет сгенерирован следующий прототип триггера:
DELETE /* ERwin Builtin Fri Jun 02 17:12:09 1995 */ /* positions приносила доход salary_track ON PARENT DELETE CASCADE */ delete salary_track from salary_track, deleted where /* %%JoinFKPK(%Child,deleted, " = "," and") */ salary_track.empl_id = # deleted.empl_id
Все макрофункции, которые могут использоваться в триггерах, могут использоваться также и в процедурах. Существенно, что процедуры, как и триггеры, связываются с таблицей.
Такой подход позволяет полностью исключить хаотичное внесение изменений в базу данных, так как модель в ERwin описывает все аспекты базы, в том числе обеспечиваемые триггерами.
Правила и начальные значения
В ERwin поддерживаются два типа правил (проверок допустимости значений) и начальных (по умолчанию) значений. Правило и умолчание может быть указано для проверки со стороны клиента (например, в PowerBuilder) и со стороны сервера.
При задании правила или умолчания для клиентской части эти атрибуты переносятся в репозитарий средства 4GL.
На Рис. 8 показан диалог для задания значений по умолчанию, устанавливаемых в PowerBuilder. Заметьте, что в одном и том же диалоге задаются умолчания, подставляемые как на стороне клиента, так и на стороне сервера (в данном случае - Sybase).
Рисунок 8.
Определение умолчания для PowerBuilder
Домены
Часто используемые комбинации свойств можно поименовать. Такая комбинация свойств, называемая доменом, может наследоваться. Например, можно определить домен "Дата" для отображения всех колонок с датами в приложении в одном стиле, домен "Дата рождения ребенка" наследует все атрибуты от домена "Дата" и вносит дополнительный атрибут - цвет отображения.
Пример определения домена показан на Рис. 9.
Рисунок 9.
Определение домена
Назначение доменов для сервера аналогично назначению доменов для клиента. Различие заключается в том, что правила и начальные значения для сервера определяются в генерации схемы базы данных, а аналогичные атрибуты для клиента - сохраняются в репозитарии средства 4GL.
Другое назначение доменов для сервера - определение пользовательских типов данных. Пользовательскому типу данных ставится в соответствие тип, "известный" СУБД. При выполнении синхронизации с базой данных для СУБД, поддерживающих пользовательские типы, выполняется соответствующие команды. Например, для Sybase выполняется команда:
sp_addtype person_name, "char(64)", "NOT NULL"
Генерация отчетов
По завершении работы над информационной моделью, как правило, распечатываются логический и физический уровни диаграммы, а также отчет по соответствиям сущность-таблица, атрибут-имя колонки, сущность-атрибуты. Диаграмма физической модели является необходимым, почти достаточным и очень удобным материалом для разработчиков программ. Дополнительная информация для группы разработчиков прикладных программ содержится в отчете "имена таблиц и колонок", который может быть легко построен с помощью ERwin. Выбор режима построения отчета показан на Рис. 10.
Рисунок 10.
Варианты выдачи отчета
Сгенерированный отчет может быть сохранен на диск (колонки разделяются запятыми, выравниваются или разделяются табуляцией), или передан в текстовый процессор (или электронную таблицу) через интерфейс DDE.
Настройка режимов отображения
Диаграммы информационных моделей современных информационных систем обычно весьма велики, вследствие чего работать со всей диаграммой достаточно сложно как на стадии проектирования информационной модели, так и при разработчикам прикладного программного обеспечения. ERwin дает возможность работать не со всей диаграммой, а с логически законченной группой сущностей, называемой предметной областью (Subject Area). Переключение отображения с одной предметной области на другую производится выбором из раскрывающегося списка.
Например, рассмотрим информационную модель для некоторого абстрактного предприятия. В информационной системе задействованы бухгалтерия, склад, кадры. В этом рассмотренные в первом примере сущности (сотрудник, история работы, доход) могут быть выделены в отдельную предметную область "кадры".
Такой подход обладает рядом важных преимуществ. Во-первых, группа разработчиков программного обеспечения снабжается диаграммой той предметной области, с которой она работает. Во-вторых, при разработке информационной модели проектировщик может удалить с экрана уже спроектированные блоки, чтобы они не загромождали диаграмму. В-третьих, использование предметных областей стимулирует структурный подход к разработке информационной модели, то есть выделение логических блоков с последующей их детальной разработкой.
Уровень детализации диаграммы информационной модели может изменяться проектировщиком. Например, могут отображаться только имена сущностей (таблиц), может быть включено/выключено отображение мощности связи, может быть включено/выключено отображение альтернативных ключей, может отображаться физическая или концептуальная модель. Для удобства проектировщика предусмотрена возможность присвоить имя группе параметров отображения. Определенные пользователем имена показываются на экране в виде закладок, что обеспечивает переключение с одного режима отображения на другой одним щелчком мыши.
Проектировщик информационной модели имеет возможности использовать цветовое и шрифтовое выделение для различных компонентов диаграммы. Выделение может быть выполнено как для всей модели (например, все внешние ключи отображать синим цветом), так и для отдельного компонента (одна таблица, все атрибуты таблицы, один атрибут таблицы, одна связь и т.д.). Использование цветового и шрифтового выделения на диаграмме информационной модели делает ее более наглядной и позволяет проектировщику обратить внимание читателей диаграммы на ее отдельные элементы.
Заключение
Применение ERwin существенно повышает эффективность деятельности разработчиков информационных систем. Перечислим кратко основные получаемые преимущества:
- существенное повышение скорости разработки за счет мощного редактора диаграмм, автоматической генерации базы данных, автоматической подготовки документации;
- нет необходимости ручной подготовки SQL-предложений для создания базы данных;
- возможность легко внесить изменения в модель при разработке и расширении системы;
- возможность автоматической подготовки отчетов по базе данных; важно, что эти отчеты всегда в точности соответствуют реальной структуре БД;
- разработчики прикладного программного обеспечения снабжены удобными в работе диаграммами;
- тесная интеграция со средствами 4GL позволяет уже на стадии информационного моделирования задавать отображение данных в приложениях;
- обратное проектирование позволяет документировать и вносить изменения в существующие информационные системы;
- поддержка однопользовательских СУБД позволяет использовать для персональных систем современные технологии, что значительно упрощает переход от настольных систем к системам в технологии клиент-сервер (upsizing).
Список литературы
[1] Кодд Е.Ф. Реляционная модель данных для больших совместно используемых банков данных. СУБД # 1, 1995, с. 145-160.
[2] Chen P.P. The Entity-Relationship Model: Toward a Unified View of Data. ACM Transactions on Database Systems, vol.1., # 1, 1976.
[3] Горин С.В., Тандоев А.Ю. Среда разработки приложений PowerBuilder. DBMS/Russian Edition, # 1, 1995.
[4] Тандоев А.Ю. Архитектура продуктов клиент-сервер фирмы Sybase. СУБД # 1, 1995, с. 62-69.
1) Использована терминология продукта ERwin для концептуальной и физической модели данных
2) Термин "логический уровень" в ERwin соответствует концептуальной модели.
3) Расширенные атрибуты в PowerBuilder - это параметры отображения колонки БД при появлении ее в прикладной программе. К расширенным атрибутам относится, например, выравнивание, маска редактирования, заголовок колонки в таблице, метка в шаблоне для ввода и т.д.