Александр Науменко, Компания АлконсCофт
Введение
Продукт S-Designor фирмы Powersoft адресован разработчикам информационных
систем. Это графический инструмент для проектирования структуры реляционных баз данных. S-
Designor реализует популярную методологию информационного моделирования, основанную на
представлении информационных объектов и взаимосвязей между ними в виде ER-диаграммы
("сущность-связь"). Используемая в S-Designor нотация - IE (Information Engineering).
В S-Designer эффективно реализована связь как со множеством современных СУБД, так и со
средствами разработки приложений. По завершении разработки модели данных S-Designor
генерирует пакеты SQL-предложений для широкого набора СУБД, включая Oracle, Ingres,
Informix, Sybase, RDB, SQL Server, DB2, AS/400, SQLBase, Access и Paradox. Имеется
встроенный ISQL. Для поддерживаемых СУБД автоматически генерируются триггеры,
обеспечивающие ссылочную целостность. Предусмотрена возможность редактировать хранимые
процедуры непосредственно при подготовке физической модели. Для обеспечения сопровождения
существующих систем S-Designor позволяет проводить восстановление модели по структуре
базы данных (БД). В течение всего цикла разработки модели данных ( Рис. 1) с помощью S-
Designor могут быть получены разнообразные отчеты по модели.
На этапе проектирования модели данных S-Designor дает возможность определить элементы
пользовательского интерфейса будущих приложений, работающих с проектируемой базой данных.
Это достигается редактированием репозиториев систем 4GL. В качестве средств разработки
поддерживается PowerBuilder [4], TeamWindows,
Progress, Uniface и другие.
S-Designor работает в среде Microsoft Windows и Windows NT. Для
его использования достаточно компьютера с процессором 386SX и объемом памяти от 4
мегабайт. В S-Designor присутствуют элементы, характерные для программ редактирования -
линейка инструментов, интерфейс " drag-and-drop", импорт/экспорт графических файлов,
инструменты для создания стандартных графических элементов, управление цветом и шрифтовым
выделением.
При работе с S-Designor сразу заметны очень высокая скорость отрисовки диаграммы и
эффективная реализация интерфейса к СУБД.
Развитые средства быстрого редактирования объектов модели и достаточно полный набор средств
управления расположением объектов на диаграмме - характерные черты, делающие S-
Designor особенно привлекательным.
Цикл разработки в S-Designor
При проектировании в S-Designor используется двухуровневый подход [2,
3]. Первый уровень - концептуальная модель данных (ER-диаграмма). Второй уровень -
физическая модель данных. При переходе на второй уровень S-Designor автоматически
генерирует соответствующую физическую модель данных для заданной СУБД, учитывая специфику
последней.
Концепция S-Designor - реализация классической теории информационного моделирования,
включающей четкое разделение между концептуальной моделью данных (представление объектов
реального мира и их взаимосвязи) и физической (отображение этих объектов в терминах, близких к
физическому представлению). Например, связи многие ко многим. Согласно теории информационного
моделирования и проектирования баз данных, такая связь при реализации должна быть
детализирована добавлением третьей уточняющей таблицы. S-Designor позволяет
представлять такие связи на концептуальном уровне модели. При генерации физической модели
S-Designor автоматически добавляет промежуточную таблицу, таким образом детализируя эту связь.
Рис. 1. Цикл разработки в S-Designor
Особенность реализации цикла разработки в S-Designor заключается в том, что он позволяет
выполнять "сквозное проектирование". Это значит, что разработав концептуальная модель можно
автоматически сгенерировать физическую и после этого выполнить генерацию структуры БД. При
обратном проектировании последовательность действий прямо противоположная. Можно получить
физическую модель на основе структуры БД и после этого автоматически сгенерировать
концептуальную модель. Разумеется на каждом этапе можно вносить изменения в модели
концептуального и физического уровней.
Часто возникает вопрос: "Если генерация физической модели из концептуальной и концептуальной
модели из физической выполняется автоматически, надо ли каждый раз корректировать модель
соответствующего уровня"? Ответ - нет. S-Designor четко отслеживает соответствие между
концептуальным и физическим уровнем и "помнит" не только изменения в структуре объектов модели
(уточнения связей, выполненные при переходе на физический уровень), но и их расположение на ER-
диаграмме. При генерации этим "учетом изменений" можно управлять. Таким образом,
автоматическая генерация - процесс, выполняемый в S-Designor очень эффективно и
качественно.
Последовательность проектирования модели данных в S- Designor
Процесс построения информационной модели данных состоит из следующих шагов:
Миграция выполняется на физическом уровне (Рис.3. Результат автоматического преобразования в физическую модель).
Необходимость построения физической модели как отдельного шага проектирования объясняется
требованием приведения описания сущностей и связей, определенных на стадии построения
концептуальной модели, к физической структуре с учетом специфики целевой СУБД. При генерации
физической модели из концептуальной сущности становятся таблицами, атрибуты - колонками, для
альтернативных ключей генерируются уникальные индексы, а идентификаторы становятся
первичными ключами.
При генерации физической модели S-Designor, если это необходимо, детализирует связи.
Связь "многие ко многим" порождает новую таблицу. Таким образом обеспечивается автоматическая
нормализация модели. Идентификаторы сущностей, участвующих в связи, мигрируют в новую
таблицу. Первичный ключ в зависимой таблице составляет теперь сумму атрибутов первичных
ключей родительских таблиц. При уточнении иерархической рекурсивной связи S-Designor
автоматически добавляет новую колонку, являющуюся внешним ключом, которую при
необходимости можно переименовать.
Для управления уникальностью строк и ускорения доступа к данным могут назначаться индексы. Для
первичных и внешних ключей индексы формируются автоматически.
На Рис.3 показан результат автоматического преобразования
концептуальной модели данных в физическую. Заметим, что на данном уровне уже нет различий
между идентифицирующими и неидентифицирующими связями, так как в физической структуре
данных такие типы связей действительно неразличимы, поскольку, реализуются одними и теми же
общими механизмами СУБД.
Наиболее примечательные возможности S-Designor
Чем хорош и примечателен S-Designor? В первую очередь тем, что это - профессиональное
средство информационного моделирования и разработки структур данных. Помимо "широко
известных" функций для CASE-средств такого уровня добавлены мощные средства групповой
разработки и генерация приложений для целевых средств разработки. Примечателен S-
Designor тем, что концептуально целостно построен и имеет строгую практическую
направленность. Ниже освещены некоторые наиболее интересные возможности S-Designor.
Данная возможность позволяет проектировать структуру данных и выполнять генерацию SQL-
предложений не подключаясь к SQL-серверу. Генерация пакета SQL-предложений выполняется в
обычный текстовый файл. На основании содержимого файла можно выполнить обратное
проектирование - создать модель данных. Практическая польза - своеобразная "отладка" модели
данных. Это дает возможность лишний раз убедиться в правильности действий, предполагаемых
выполнить с реальной структурой БД. Поскольку, в данном случае нет необходимости подключаться
к серверу БД - проектирование можно выполнять автономно. Например, в домашних условиях, если у
Вас дома нет SQL-сервера.
Данный заголовок поддерживается в S-Designor специальным образом и служит не только
для того, чтобы как-то приукрасить модель. Заголовок содержит идентифицирующую информацию,
которая также хранится в центральном словаре данных и используется как при организации
групповой разработки модели данных, так и в других целях.
Реализованная в S-Designor типизация данных - средство достижения универсальности типов
данных, используемых в модели. На уровне концептуальной модели разработчик оперирует с
внутренними типами данных S-Designor. Эти типы данных представлены достаточно
широким набором и, что важно, независимы от целевой СУБД. При переходе на физический уровень
эти типы данных заменяются типами данных целевой СУБД. Правила соответствия универсальных
типов данных и целевых определяются во внешнем текстовом файле, доступном для редактирования.
В нем же определяются все правила кодирования SQL-предложений для конкретной СУБД.
Соответствие типов данных и конструкции SQL-предложений для конкретной СУБД можно
переопределять, хотя такая необходимость возникает крайне редко.
Интересно и очень эффективно реализован механизм модификации структуры данных на основе
архивной копии модели данных. Архивная копия - сохраненная в специальном формате модель
данных.
Суть механизма заключается в следующем. После окончания проектирования первой редакции
модели данных, ее можно заархивировать. При изменении модели данных, эти изменения необходимо
внести и в структуру таблиц базы данных. Если к этому моменту в таблицах уже есть данные, их
желательно сохранить. В S-Designor для этого необходимо только выполнить команду
"Модифицировать БД". В результате, на основе архивной копии S-Designor
автоматически модифицирует структуру таблиц БД, сохранив данные в таблицах вне
зависимости от типа изменений.
При выполнении модификации структуры таблиц БД S-Designor, во-первых, выбирает
наиболее эффективную стратегию модификации структуры объектов БД (по возможности наименьшим
количеством операторов), а, во-вторых, сохраняет данные в таблицах (создает временную
таблицу, перегружает в нее данные из модифицируемой таблицы, модифицирует таблицу, возвращает
данные в модифицированную таблицу). Процессом модификации структуры таблиц БД можно
управлять, поскольку, имеется возможность сгенерировать пакет SQL-предложений, выполняющий
данную модификацию.
Примечательно также то, что S-Designor очень "чувствителен" к изменениям модели данных.
Даже такое, на первый взгляд, незначительное изменение как допустимость значений null для
отдельной колонки будет "опознано" и структура данных будет автоматически модифицирована. На
pис.4 приведен пример пакета SQL-предложений, выполняющий
модификацию структуры таблицы hourly_employee при изменении допустимости значения
null для колонки hours_per_week(первоначально было null, модифицировано на
not null).
Рис. 4. Пример пакета SQL-предложений, модифицирующего структуру базы данных
При разработке информационных систем со сложной структурой данных эффективно использовать
представления (View). Цель создания представлений - структурировать и в итоге упростить
построение сложных запросов к базе данных.
Эффективность средств проектирования представлений заключается в том, что для разного уровня
сложности представлений в S-Designor можно использовать наиболее подходящие для этого
конструкторы. Для быстрого проектирования наиболее простых представлений, например
эквисоединения двух таблиц, достаточно, выделив необходимые таблицы, выполнить команду
"построить представление". Для более сложных представлений можно использовать графический
конструктор запросов (аналогичный конструктору в PowerBuilder [4]).
И, наконец, при необходимости можно использовать конструктор для создания представления на
языке SQL.
Данная возможность связана с тем, что проектирование в S-Designor можно выполнять в
свободном порядке. Например, проектировать сначала сущности и связи, потом атрибуты сущностей.
Такой подход в ряде случаев удобен и возможен потому, что S-Designor ведет общий словарь
данных, используемых в модели. При проверке правильности структуры объектов (в основном
сущностей и взаимосвязей между ними), S-Designor формирует протокол об ошибках, в
котором содержится полная идентификация ошибок в модели данных.
Вычисление размера БД выполняется на основе указанного предполагаемого количества строк в
таблицах. Данная возможность является достаточно важной, так как позволяет уже на этапе
проектирования оценить необходимый объем внешней памяти на сервере. Соответственно, легко
вычислить, какой объем внешней памяти потребуется через определенное время, скажем через год.
Для этого, зная предполагаемые темпы роста объема данных, можно спрогнозировать примерное
количество записей в таблицах БД к этому времени и выполнить автоматический расчет.
S-Designor, как и большинство аналогичных средств такого класса позволяет готовить
отчеты по структуре данных модели. Цель подготовки отчетов - документирование разработанной
модели данных. Можно создать любое количество стилей отчетов и после этого генерировать отчеты
согласно выбранному стилю. Пример использования различных стилей - краткий и полный отчеты по
модели. Подготовленный отчет можно напечатать или сохранить в формате, например, текстового
процессора Microsoft Word. Впоследствии, отчет можно отредактировать средствами
Microsoft Word. В отчет может быть включено графическое изображение модели данных,
расположенной как на отдельных страницах, так и смасштабированной так, чтобы вся модель
размещалась на одной странице. Отчет можно произвольным образом настраивать. Например,
включать или исключать различные элементы отчетов, автоматическое формирование оглавления,
переопределять содержимое заголовка и подвала страницы.
Привлекательность подготовки отчетов в S-Designor заключается в том, что разработчики
данного продукта предоставили не только средства подготовки отчетов по модели данных, но и
тщательно продуманную стартовую структуру отчетов. В результате подготовка отчетов в S-
Designor выполняется автоматически и не требует никаких дополнительных действий.
S-Designor поддерживает широкий спектр средств разработки 4GL. Поддержка средств
разработки 4GL заключается в том, что на этапе проектирования модели данных обеспечивается
возможность проектировать отображение элементов объектов, связанных с базой данных. Данную
возможность проиллюстрируем на примере интеграции S-Designor со средством разработки
приложений PowerBuilder фирмы PowerSoft [4].
При создании окон данных (DataWindow) в PowerBuilder элементы окна отображаются
согласно расширенным атрибутам, назначенным этим элементам. Либо действуют установки по
умолчанию, если элементам окна расширенные атрибуты не назначены. Таким образом, расширенные
атрибуты - это спецификации, которые управляют изображением DataWindow при его
конструировании. Поэтому, использование расширенных атрибутов на этапе проектирования модели
данных позволяет значительно ускорить разработку отдельных объектов в приложении, например,
подготовку окон данных и стандартизовать пользовательский интерфейс.
Расширенные атрибуты хранятся в репозитории средств разработки. Для PowerBuilder
репозиторий представлен пятью таблицами, которые создает PowerBuilder в целевой БД при
первом подключении к ней.
Это таблицы:
- содержит управляющую информацию, связанную с
общим оформлением DataWindow (общие форматы отображения данных,
заголовки колонок таблицы и так далее).
В качестве расширенных атрибутов можно использовать выпадающие списки (окна данных типа Drop
Down DataWindow). Можно создать ряд окон данных, например, для словарей. После этого
необходимым колонкам таблиц в модели данных назначить стиль редактирования - Drop Down
DataWindow, где этими окнами данных будут спроектированные ранее окна данных для словарей.
После этого всегда, когда будет проектироваться основное DataWindow, в котором какие-либо
колонки должны быть представлены в виде выпадающих списков, содержащих данные словарей, - это
будет делаться автоматически.
Значительно ускорить разработку приложений позволяет использование доменов. В терминах
модели данных домен - именованный набор атрибутов объекта, который можно назначить колонке
таблицы. Набор атрибутов домена логически делится на две части. Первую часть
составляют расширенные атрибуты. Они используются при разработке приложений. Вторую -
правила и ограничения, связанные с физической структурой таблиц БД. Можно определить,
например, домен My_Date_Code для типа данных date и назначить его на колонки
таблиц, имеющие такой тип данных. Таким образом, один раз сконструировав необходимый
именованный набор атрибутов его можно многократно использовать и централизованно
редактировать. При импорте расширенных атрибутов в репозиторий средств разработки S-
Designor разложит "сам" эти атрибуты для тех колонок, на которые назначен домен
My_Date_Code. Пример конструирования домена My_Date_Code. приведен на pис.5
Рис. 5. Конструктор домена расширенных атрибутов
Современная версия S-Designor позволяет автоматически генерировать приложения.
Приложения генерируются в интерфейсе MDI (многодокументный интерфейс). Обеспечивается
возможностью генерации связанных окон данных (master-detail). Приложения генерируются на основе
template, который поставляется с S-Designor. Окна данных в приложении генерируются
согласно выбранным таблицам модели данных. Для генерации приложения достаточно указать только
ряд необходимых параметров, таких как имя библиотеки в которой будет сохранено приложение,
источник данных в терминах ODBC, с которым будет работать приложение, имя библиотеки,
содержащей template, а также некоторые другие параметры.
Имеется возможность автоматически генерировать запросы (Query) как объекты в терминах целевых
средств разработки на основе представлений (View).
При разработке крупных корпоративных систем особое значение приобретает организация групповой
разработки общей модели данных. При этом, каждый разработчик разрабатывает "свою" часть
общей модели. Для обеспечения эффективности такой работы необходимо хранение модели данных в
месте, доступном для каждого разработчика, и механизмы, поддерживающие актуализацию модели,
оперативное внесение изменений и контроль доступа к модели данных. S-Designor обеспечивает все
необходимые для этого возможности.
Принцип организации коллективной разработки в S-Designor - использование
централизованного словаря метабазы, который хранит модели данных, и обеспечение доступа к нему.
Для организации работы со словарем и управления коллективной разработкой предназначена
отдельная компонента - S-Designor Dictionary. Компонента служит для создания и
администрирования централизованного словаря.
Словарь метабазы - это ряд таблиц, которые создаются на SQL-сервере из среды S-Designor
Dictionary. Технология работы с централизованным словарем метабазы построена на двух
ключевых понятиях: Consolidation (консолидация/слияние модели с моделью в словаре) и Extraction
(операция извлечения модели данных из словаря).
Перед тем, как внести изменения в модель данных необходимо выполнить операцию Extraction. По
этой операции модель данных либо извлекается из словаря и загружается в S-Designor, либо
сохраняется в файл. По операции Consolidation выполняется консолидация метаданных измененной
модели с метаданными в словаре. Так вносятся изменения в модель в словаре.
Консолидировать можно всю модель целиком и отдельные подмодели. Консолидация выполняется по
следующим правилам. Сначала проверяются полномочия выполняющего операцию консолидации.
При конфликтных ситуациях, например, если после последней операции Extraction объект модели был
изменен - S-Designor предлагает вариант принятия решения. После консолидации можно
сразу выполнить операцию Extraction для того, чтобы получить гарантированно актуальную модель в
файле.
Начало работы с централизованным словарем - это создание словаря администратором и регистрация
пользователей, которые будут работать с центральным словарем. После этого администратор создает
первый проект - только он имеет право это делать и назначает пользователям полномочия доступа к
моделям и подмоделям данных.
Права доступа делятся на следующие группы:
ADMI - | пользователи данной группы могут выполнять любые действия со словарем и с хранимыми в нем моделями. |
Upgrade - | пользователи данной группы могут оперировать со своими моделями и подмоделями с атрибутом Public. |
Read-only - | пользователи данной группы могут только читать информацию из словаря. |
Lock - | пользователи данной группы в данный момент не имеют никаких полномочий. |
Рис. 6. Консолидация модели данных с моделью в словаре
Возможные режимы консолидации в S-Designor:
Consolidate - | консолидировать модель с моделью в словаре. |
Simulate - | имитировать консолидацию без внесения реальных изменений в словарь метабазы. |
Create - | создать проект или модель в словаре. |
Replace - | заменить существующую модель. Данный режим эффективно использовать в случае, если консолидируемая модель значительно отличается от модели в словаре. |
Рис. 7. Список моделей проекта
Создав проект, администратор назначает пользователям полномочия, например, на отдельные
подмодели. Полномочия действуют в момент консолидации. Модели или подмодели, на которые
пользователи не имеют полномочий, недоступны для редактирования.
Реализуя функцию управления доступом для моделей и подмоделей данных, S-Designor
обеспечивает возможность руководителю проекта контролировать все изменения, которые влияют на
проект в целом. При этом, модель данных всегда доступна, актуальна и гарантированно целостна.
Заключение
В заключении хочется отметить, что стройное концептуальное построение S-Designor
выгодно отличает его от CASE-средств такого класса. Богатство возможностей и простота
использования S-Designor позволяет эффективно использовать его как для разработки
моделей данных небольших информационных систем, так и для разработки моделей данных больших
корпоративных систем. Возможно, именно поэтому на рынке CASE-средств информационного
моделирования S-Designor занимает все более прочную позицию. Список литературы
Александр Науменко
AlconsSoft
tel: +7 (095) 362-5138, 918-1380
e-mail: alcons@glas.apc.org