Статьи про Windows, Антивирусы, Лицензионный софт
Базы данных и Microsoft Visio
Наверное, каждый разработчик согласится с тем, что одна из самых рутинных стадий работы над проектом – разработка сопроводительной документации. Самой же рутинной частью в разработке документации является необходимость синхронизировать ее с проектом, т. е. сделать так, чтобы изменения в проекте своевременно и адекватно отражались в документации. Для решения подобных задач подойдет Microsoft Visio – прекрасное средство создания различных схем и диаграмм.
Многие знают, что с помощью Visio можно создавать также и модели будущих баз данных. Но наверняка не все знают, что Visio может подключаться ко многим серверам баз данных и отображать структуру БД, реализованных на сервере, и уж тем более не все знают о том, что в некоторых случаях Visio можно использовать в качестве клиента баз данных. Рассмотрим работу Visio с базами данных на простом примере. Пусть на сервере БД (в нашем случае это будет Microsoft SQL Server 2000) реализована база данных, построенная на основе следующей модели:
Пример
База данных содержит список сотрудников некоторого предприятия, список отделов, а также информацию о начальниках отделов и сотрудниках, работающих в том или ином отделе. Из схемы очевидно, что первичным ключом для списка сотрудников является специальное поле «Id», а первичным ключом списка отделов – поле «Номер», содержащее номер отдела. В качестве первичного ключа списка сотрудников можно было бы использовать и поле «ИНН», поскольку значение этого поля уникально для каждого сотрудника, но это может быть неудобно, так как в нашей БД ИНН оно хранится в виде строки из 12 символов.
Рассматриваемая модель базы данных обладает довольно гибким набором ограничений: один и тот же сотрудник может возглавлять несколько отделов, каждый сотрудник может работать в нескольких отделах или не работать ни в одном, отдел может не иметь сотрудников, за исключением начальника. Поскольку у каждого отдела должен быть начальник, при реализации базы данных мы вносим поле «Начальник» в таблицу «Отделы» (это поле будет внешним ключом, связывающим таблицу «Отделы» с таблицей «Сотрудники»). Таблица «Сотр_Отд», описывающая принадлежность рядовых сотрудников к отделам, содержит поля, соответствующие отношениями внешнего ключа таблицы «Сотрудники» и «Отделы». Создадим такую базу данных в СУБД MS SQL. Посмотрим, что Microsoft Visio может сделать для нашей базы данных. Запустим Microsoft Visio и откроем новый документ, воспользовавшись командой меню File->New->Database->Database Model Diagram. Будет создана заготовка документа для разработки модели базы данных.
Наша следующая задача – перенести структуру созданной нами базы данных в Visio. Для этого воспользуемся пунктом меню Database->Reverse Engineer. Эта команда запускает мастер Reverse Engineer Wizard. Первая страница этого мастера позволяет выбрать драйвер для связи с сервером баз данных и установить параметры источника данных ODBC (имя сервера, базу данных на сервере и т.п.). Microsoft Visio поддерживает ряд СУБД: MS Access, Oracle, DB2, Informix, Sybase кроме упомянутого MS SQL Server. Кроме того, можно установить связь с сервером баз данных, используя стандартный драйвер ODBC или средства OLE DB. После того, как мы создали необходимый источник данных, переходим на следующую страницу мастера. При этом программа может затребовать пароль и логин для регистрации на сервере.
На новой странице мастера нам предлагается выбрать категории объектов базы данных для отображения в модели. По умолчанию выделены все возможные типы объектов базы данных.
Следующая страница мастера позволяет выбрать конкретные таблицы базы данных. В нашем случае это три таблицы из описанной выше БД. По умолчанию на этой странице мастера не выбран ни один объект, и мы можем выбирать либо отдельные таблицы, либо все имеющиеся таблицы базы данных при помощи кнопки Select All.
Поскольку наша база данных не содержит ни триггеров, ни хранимых процедур, мы можем завершить работу мастера на этом этапе, нажав кнопку Finish. Остальные страницы мастера позволяют нам выбрать другие объекты базы данных (если таковые имеются) и настроить некоторые дополнительные опции. После завершения работы мастера Reverse Engineer Wizard Visio автоматически создаст модель базы данных, используя для отображения объектов имеющиеся графические примитивы.
Как видим, созданная модель отражает информацию о первичных и внешних ключах таблиц, а также о дополнительных индексах (к коим относится поле «ИНН» в таблице «Сотрудники»). Жирным шрифтом выделены поля, не допускающие неопределенных значений. Таблицы нашей базы данных содержат только такие поля. В начале статьи говорилось о том, что Visio позволяет не только создавать сопроводительные материалы к проектам баз данных, но и синхронизировать их. Допустим, что в процессе проектирования базы данных мы решили добавить в таблицу «Сотрудники» новое поле – «Страховое свидетельство», содержащее номер свидетельства пенсионного страхования сотрудника. После добавления нового поля в таблицу базы данных на серверее Microsoft SQL мы сможем обновить модель базы данных в Microsoft Visio при помощи команды меню Database->Refresh Model. Эта команда запустит мастер Refresh Model Wizard, на первой странице которого нам будет предложено выбрать источник данных. Воспользуемся источником, который мы создали при построении исходной модели. Дальше, после проверки состояния базы данных, будет выведено окно мастера, содержащее описание найденных расхождений между базой данных и ее моделью в Visio.
В этом окне мы сможем выбрать дальнейшие действия – оставить модель без изменений или обновить ее, устранив расхождения с базой данных. Выбираем пункт Refresh Model (обновить модель). Теперь можно завершить работу мастера и убедится, что модель базы данных, созданная Visio, отражает внесенные изменения.
Сгенерированная нами в Microsoft Visio модель базы данных предоставляет не только «картинку». Visio делает доступной большое количество информации о базе данных, например SQL-типы данных и свойства полей таблиц.
Если бы возможности Visio ограничивались лишь автоматической генерацией и синхронизацией моделей баз данных, этот продукт все равно оставался бы отличным средством разработки сопроводительной документации. Но Visio способен на большее. Рассмотрим механизмы более тесной интеграции Microsoft Visio и баз данных, позволяющие редактировать базы данных с помощью Visio. В окне редактирования Visio выделяем таблицу «Сотрудники». Далее с помощью команды меню Tools->Macros->Visio Extras->Link to Database запускаем программу-надстройку Link to Database (связь с базой данных). В этой программе нам необходимо выбрать источник данных ODBC для связи с базой данных и таблицу базы данных для связи с объектом модели Visio (естественно, это будет таблица «Сотрудники»).
После этого в контекстном меню таблицы «Cотрудники» в Microsoft Visio появляются новые пункты: Select Database Record (выбрать запись из базы данных), Refresh Shape Properties (обновить свойства объекта), Update Database Record (обновить запись в базе данных) и Delete Shape and Record (удалить объект и запись). Такую же процедуру можно проделать и для других таблиц модели. Откроем контекстное меню Microsoft Visio для таблицы «Сотрудники» и выберем команду Select Database Record. На экране появится окно, позволяющее выбрать запись из таблицы. После того как мы выберем запись, ее можно будет просматривать и редактировать в Microsoft Visio при помощи команды Costume Properties для соответствующего объекта Visio.
Кнопка Define в окне Costume Properties позволяет редактировать выбранную запись и даже добавлять новые записи в таблицу.
Таким образом, Microsoft Visio можно использовать в качестве клиентской программы для работы с базой данных. Конечно, такой способ взаимодействия с БД нельзя назвать самым удобным, но иногда он может пригодиться. С помощью надстройки Link to Database мы можем добавлять новые таблицы в базу данных. Нажмите кнопку New в окне надстройки. Будет открыто новое окно, в котором можно указать имя новой таблицы и определить ее поля.
Это может показаться странным, но таблица, добавленная в базу данных с помощью Microsoft Visio, не отображается автоматически в модели БД, созданной в Visio. Новую таблицу в базы данных можно внести в модель, созданную в Visio, при помощи уже упоминавшейся команды Database->Refresh Model. При этом новая таблица сначала добавляется в специальное окно Tables and Views, а чтобы увидеть ее на схеме, соответствующий значок нужно перетащить из окна Tables and Views в главное окно программы. Тенденция интеграции Microsoft Visio с программными продуктами, для которых Visio позволяет создавать специализированные диаграммы, представляется весьма перспективной. Можно ожидать, что в будущих версиях Visio соответствующие возможности будут расширены.




