Процедура генерации модели данных для СУБД InterBase Windows InterActive SQL

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Введение

ERwin имеет два уровня представления модели — логический и физический. По корректной физической модели ERwin может генерировать физическую схему (системный каталог или SQL -скрипт) для заданной СУБД.

Процесс генерации физической схемы БД из логической модели данных называется прямым проектированием (Forward Engineering). При генерации физической схемы ERwin включает триггеры ссылочной целостности, хранимые процедуры, индексы, ограничения и другие возможности, доступные при определении таблиц в выбранной СУБД.

ERwin способен по содержимому системного каталога воссоздать физическую и логическую модель данных (Reverse Engineering). На основе полученной логической модели можно сгенерировать физическую модель для другой СУБД.

Рассмотрим процедуру генерации модели данных для СУБД InterBase Windows InterActive SQL (WISQL).

1. Создание Б Д в СУБД InterBase

СУБД InterBase поддерживает как режим локальной машины, так и сервера. На практических занятиях будем использовать режим локальной машины.

Создание новой БД. Выберите в меню пункт File/Create Database. Появится диалог Create Database. Установите режим локальной машины (опция Local Engine). В поле Database укажите полное имя БД (с расширением. gdb), например, c: ibbd1. gdb. Для ввода имени пользователя (SYSDBA) и пароля (masterkey) используйте соответственно поля User Name и Password. Это пароль по умолчанию.

Замечание 1. Если возникает необходимость в создании на сервере нового пользователя, то необходимо выбрать пункт Task/User Security, в диалоговом окне Interbase Security, нажать кнопку Add User и выполнить конфигурация нового пользователя.

В поле Database Options введите следующую фразу:

DEFAULT CHARACTER SET WIN 1251.

Это необходимо для того, чтобы в нашей базе данных можно было сохранять строковые данные, содержащие символы кириллицы.

Нажмите кнопку ОК.

Мы создали БД под именем bd1. При этом программа ISQL сразу же подключилась к вновь созданной БД (в статусной строке окна программы появилось имя текущей активной БД).

В созданной БД пока отсутствует информация о структуре данных проектируемой информационной системы. Как ввести эту информацию в БД? Ниже рассматривается ряд способов решения этой задачи.

2. Создание объектов БД

2.1 Использование утилиты WISQL

проектирование данный windows сервер

Для создания объектов БД (доменов, таблиц, представлений, индексов и т. д.) можно использовать средства, предоставляемые утилитой WISQL.

Выполните соединение (если оно отсутствует) с вновь созданной БД (пункт File/Connect To Database), а затем с помощью операторов языка определения данных (CREATE, ALTER, DROP) создайте необходимые объекты БД.

Более подробно особенности работы с утилитой WISQL излагаются студентам на этапе изучения основ языка SQL [3].

В методических указаниях рассматриваются другие способы проектирования БД, основанные на получении основных результатов в ERwin и переносе их в среду InterBase.

2.2 Прямое проектирование

2.2. 1 Создание драйвера БД

Для доступа к БД на основе спецификации Open Database Connectivity, разработанной компанией Microsoft, используются драйверы ODBC. ERwin может подключиться к БД используя 32-разрядные драйверы ODBC.

При создании ODBC-драйвера выполните следующие действия [4]:

— откройте окно Панель управления (каскадный выбор в Windows: Пуск/Настройка/Панель управления) и щелкните левой кнопкой мыши по кнопке ODBC [32 bit];

— в появившемся диалоге ODBC Data Source Administrator щелкните мышью по кнопке ADD (закладка User DSN);

— в диалоге Create New Data Source выделите строку InterBase 5. X Driver by Visigenic [*. gdb] и нажмите кнопку Готово;

— в поле Data Source Name диалога InterBase ODBC Configuration введите имя вновь создаваемого драйвера (например, dr1);

— при необходимости поясните назначение драйвера в поле Description;

— в окне NetWork Protocol выберите сетевой протокол < local>, соответствующий режиму локальной машины;

— в поле DataBase укажите полный путь к вновь созданной БД (например, c: ibbd1. gdb);

— введите в полях UserName и Password имя пользователя и пароль;

— завершите процесс конфигурации драйвера (кнопка ОК).

После создания драйвера вновь появляется диалог ODBC Data Source Administrator, в списке которого можно найти имя сконфигурированного драйвера. Для просмотра параметров конфигурации выделенного драйвера нажмите на клавишу Configure.

2.2.2 Генерация системного каталога

Генерация системного каталога выполняется после создания физической модели информационной системы [5].

Для генерации системного каталога БД следует выбрать в ERwin пункт меню Tasks/Forward Engineer/Schema Generation или нажать на кнопку

на панели инструментов.

Появляется диалог Schema Generation (рис. 2. 1), позволяющий задать набор установок, определяющих, какие элементы должны войти в схему БД.

Для каждой логической схемы можно создать несколько таких наборов установок (опций). Текущий набор установок выбирается в списке Option Set, в верхней части диалогового окна.

Для создания нового набора установок нажмите клавишу New и введите имя создаваемого набора.

Закладки диалога Schema Generation

Options. Служит для задания опций генерации объектов БД — таблиц, колонок, индексов, представлений и т. д. Для задания опций генерации какого-либо объекта следует выбрать название объекта в левом списке закладки, после чего включить необходимые опции в правом списке.

В закладке Summary отображаются все опции, заданные в закладке Options.

Comment. Позволяет внести комментарий для каждого набора опций.

Кнопки диалога Schema Generation

Рис.

Filter. Вызывается фильтр таблиц. Здесь выбираются таблицы (сущности), которые должны войти в схему. Диалоговое окно фильтра состоит из двух списков, содержащих имена таблиц или сущностей, в зависимости от положения переключателя Display Names. В левом списке находятся имена таблиц, исключенные из схемы генерации, в правом — вошедшие в схему. Перемещение таблиц между списками осуществляется при помощи стандартных кнопок со строками. Относительное количество выбранных таблиц показано над правым списком в виде дроби, в знаменателе которой проставляется общее число таблиц в схеме. Эта же дробь выводится и в нижней части главного окна генератора схем.

Preview. Просмотр сгенерированного SQL-сценария БД. Диалог содержит стандартное текстовое окно и набор кнопок для редактирования, просмотра и печати текста сценария. В полученном сценарии присутствуют различные SQL-запросы:

CREATE TABLE — создание таблицы;

CREATE INDEX — создание индекса;

ALTER TABLE… ADD PRIMARI KEY — добавление первичного ключа;

ALTER TABLE… ADD FOREINGN KEY — добавление внешнего ключа и т. д.

Print. Вывод SQL-сценария на печать.

Report. Сохранение SQL-сценария (скрипта) в текстовом файле. Эти команды можно в дальнейшем редактировать текстовым редактором и выполнять при помощи соответствующей утилиты сервера.

Generate. Запуск процесса генерации физической схемы БД. В диалоге связи с БД необходимо ввести имя пользователя и пароль. В выпадающем списке Database следует выбрать имя ODBC-драйвера. После нажатия кнопки Connect появится диалог Generate Database Schema. По умолчанию в диалоге установлена опция Stop If Failure. Это означает, что при первой же ошибке выполнение скрипта прекращается. Щелкнув по кнопке Continue, можно продолжить выполнение. Кнопка Abort прерывает выполнение. При выключенной опции Stop If Failure скрипт будет выполняться, несмотря на встречающиеся ошибки.

Замечание 2. Перед выполнением этапа генерации физической схемы необходимо быть уверенным в том, что БД создана и «пуста». Если полной уверенности в этом нет, то рекомендуется выполнить в WISQL следующие действия:

— соединиться с БД (Connect to Database);

— удалить БД (Drop Database);

— создать БД (Create Database);

— отсоединиться от БД (Disconnect from Database);

— перейти в ERwin.

Разумеется, эту последовательность шагов можно выполнять лишь на этапе изучения методики прямого проектирования, то есть, когда нет необходимости сохранять объекты старой БД. При создании новой БД важно сохранить неизменным ее имя. Это позволит работать с одним и тем же ODBC-драйвером.

Замечание 3. После завершения генерации физической схемы ERwin остается подключенным к БД через ODBC-драйвер. Эту связь необходимо разорвать для обеспечения возможности просмотра объектов БД в среде WISQL:

— выберите в меню пункт Server/InterBase Connection;

— в появившемся диалоге Interbase/ODBC Connection щелкните мышью по клавише Disconnect, а затем — по клавише Close.

Итак, в созданную БД введена информация, касающаяся всех объектов разработанной в среде ERwin модели информационной системы. Эту информацию можно просмотреть, используя меню Metadata диалога InterBase Interactive SQL.

2.3 Script-файлы

2.3. 1 Создание и выполнение Script-файла

Текст сценария создания БД может быть оформлен в виде файла и затем выполнен в программе WISQL. Преимущество такого подхода очевидно в тех случаях, когда необходимо периодически выполнять повторяющиеся последовательности операторов.

Обычно средствами ERwin создается основа Script-файла, а затем она редактируется и дополняется с целью обеспечения возможности его запуска на выполнение.

Создание основы Script-файла:

— выберите в ERwin пункт Tasks/Forward Engineer и выделите в появившемся диалоге Schema Generation необходимые опции для генерации физической схемы;

— нажмите кнопку Report;

— сохраните файл на диске (имя сохраняемого файла имеет расширение. sql).

Дополнение основы Script-файла командами подключения к БД. Обычно редактирование Script-файла выполняется в текстовом редакторе. При редактировании в начале SQL-сценария необходимо написать команды подключения к БД (а иногда команды удаления старой версии БД и создания ее новой версии). Например:

CONNECT 'c: ibbd1. gdb' USER 'SYSDBA'

PASSWORD 'masterkey';

Смена вида разделителя SQL-операторов. Если в Script-файле присутствуют триггеры и хранимые процедуры, то необходимо включить в текст файла оператор SET TERM, предназначенный для смены вида разделителя.

Перед первым оператором CREATE TRIGGER или CREATE PROCEDURE устанавливают новый разделитель «!!», завершают им одно или несколько идущих подряд определений триггеров и хранимых процедур, а затем восстанавливают старый разделитель «; ». Например,

SET TERM!!;

< триггер 1>

END!

< триггер 2>

END!

< триггер N>

END!

SET TERM; !!

Запуск Script-файла на выполнение:

— запустите программу WISQL;

— создайте новую БД (File/Create Database);

— выберите пункт меню File/Ran an ISQL Script и укажите файл с текстом сценария.

Если все сделано правильно, после отработки скрипта программа выдает сообщение Script Completed Successfully (скрипт завершен успешно).

Подключитесь к созданной БД, а затем, используя команды меню Metadata, проведите анализ достигнутых результатов проектирования.

Обычно первый сценарий не является окончательным. Проектирование клиент-серверной системы является итерационным процессом. Поэтому, в ходе дальнейшей разработки системы требуется изменять и дополнять сценарий создания БД. При этом используются более сложные, но и, во многих случаях, более эффективные способы видоизменения SQL-сценария.

2.3.2 Использование свойств, определяемых пользователем, и шаблонов скриптов

2.3.2. 1 Создание пользовательских свойств и шаблонов для диаграммы

Рассмотрим другой вариант решения задачи дополнения основы Script-файла командами подключения к БД.

Создание пользовательских свойств. Сначала свяжем со схемой БД три пользовательских свойства, значения которых должны соответствовать имени файла БД, имени пользователя и пароля. Для этого воспользуемся реализованным в ERwin механизмом пользовательских свойств [6].

Рис.

Выберите пункт меню Edit/Diagram и перейдите на страницу UDP (рис. 2. 2).

Нажмите на кнопку, находящуюся в правом верхнем углу страницы и перейдите в редактор пользовательских свойств (рис. 2. 3).

В верхней части окна находится поле Class, в котором указано, для какого объекта диаграммы задаются пользовательские свойства. В данном случае этим объектом является сама диаграмма, поэтому в поле стоит Diagram.

Таблица пользовательских свойств содержит следующие поименованные колонки:

Рис.

Name — имя пользовательского свойства;

Type — тип пользовательского свойства;

Default — значение свойства по умолчанию;

Description — описание свойства, которое вводится для обеспечения читаемости диаграммы.

Для пользовательского свойства определены следующие типы данных:

Command — выполняемая строка. В качестве значения свойства этого типа можно задать команду, которая будет вызываться при нажатии на имя свойства (кнопка

в строке таблицы UDP);

Date — дата. Используется формат ММ/ДД/ГГ;

Int — целое число;

Real — действительное число;

Text — символьная строка;

List — список.

При обращении к свойству этого типа значение можно будет выбрать из стандартного выпадающего списка. Значения для этого списка следует задавать в колонке Default, перечислив их через запятую. Значение по умолчанию необходимо начать с символа «~».

Добавление нового свойства производится при помощи нажатия кнопки

, находящейся в первой колонке таблицы свойств.

Введите в эту таблицу три свойства текстового типа: IB_DBName, IB_UserName, IB_Password, а затем задайте значения этих свойств: c: ibbd1. gdb; SYSDBA; masterkey.

Создание шаблона для генерации команд подключения к БД. Воспользуемся тем, что ERwin позволяет назначить каждому объекту (в рассматриваемом случае — диаграмме) диаграммы специальные шаблоны, написанные на встроенном макроязыке.

Рис.

Выберите пункт меню Server/Interbase Schema Property. Диалоговое окно InterBase Schema Property Editor (редактор свойств схемы) содержит две страницы (рис. 2. 4):

Stored Procedure (хранимая процедура). Здесь схема связывается с шаблонами хранимых процедур, которые создаются при генерации схемы.

Pre & Post Script (сценарии «до» и «после генерации»). На этой странице создаются SQL-скрипты, которые ERwin выполняет перед или сразу же после генерации таблиц или схемы в целом.

Перейдите на страницу Pre & Post Script и нажмите на кнопку Schema Script Template (шаблон скрипта схемы). Чтобы добавить шаблон следует нажать кнопку New. Введите в диалоге имя шаблона «Подключение к БД».

Введенное имя шаблона появится в таблице, в колонке Script Template Name (рис. 2. 5).

Задайте тип скрипта (Pre_Schema Generation). В колонке Type указывается тип скрипта, а в колонке Code первая строка кода шаблона.

Текст шаблона вводится в окне Schema Script Template, которое представляет обычный текстовый редактор.

Перейдите в это окно и наберите следующий текст шаблона:

CONNECT '%DiagramProp (IB_DBName)'

USER '%DiagramProp (IB_DBName)'

PASSWORD '%DiagramProp (IB_Password)'

Встроенный макроязык, использующийся в ERwin, содержит около двухсот макрокоманд. В приведенном тексте шаблона мы воспользовались макросом %DiagramProp (UDP Name)', извлекающим значение пользовательского свойства по имени этого свойства диаграммы.

Рис.

Рис.

Процесс ввода текста шаблона можно упростить, если вызвать на экран вспомогательное окно Template Toolbox (кнопка Toolbox) (рис. 2. 6).

Использование макросов. В левой части этого окна находятся списки, содержащие имена макросов, относящихся к сущностям (Entity Macro), связям (Relationship Macro), атрибутам (Attribute Macro), ограничениям (Constrain Macro), а также макросы общего назначения (Miscellaneous Macro).

В центральной части, в окне Description выводится синтаксис выделенного макроса и пример его использования для фрагмента схемы, приведенного в правой части диалога.

Если щелкнуть дважды по выбранному имени макроса, то оно будет вставлено в то место редактируемого текста шаблона, где была оставлена отметка курсора.

Нажмите кнопку Close и вернитесь в редактор Schema Script Template Editor. В окне Schema Script Template будет виден фрагмент текста создаваемого шаблона, содержащей введенный макрос.

Рис.

После окончания редактирования шаблона нажмите кнопку ОК и вернитесь в редактор свойств схемы (рис. 2. 7).

Подключение шаблона к схеме. В верхней части диалогового окна имеется два списка — подключенных скриптов (Attached Script), и неподключенных скриптов (Unattached Script). Написанный нами шаблон появился в правом списке — неподключенных скриптов. Для того, чтобы он сработал при генерации, его необходимо подключить к схеме.

Выделите шаблон в правом списке и нажмите кнопку Attach (подключить).

Имя шаблона переместится в левый список, а в окне Script Template появится текст шаблона, который мы создали ранее (рис. 2. 8).

В окне, находящемся справа и озаглавленном Script Expansion выводится результат работы шаблона:

CONNECT 'c: ibbd1. gdb'

USER 'SYSDBA' PASSWORD 'masterkey';

В этом шаблоне извлекаются и раскрываются пользовательские свойства. В частности, %DiagramProp (IB_DBName) раскрывается в c: ibbd1. gdb, %DiagramProp (IB_UserName) — в SYSDBA, %DiagramProp (IB_Password) — в masterkey.

Нажмите на кнопку ОК.

Рис.

Проверка работоспособности скрипта. Сгенерируйте схему БД (Tasks/Forward Engineer/Schema Generation) и в окне предварительного просмотра (Preview) убедитесь в том, что в начале сценария добавились строки подключения к БД.

Замечание 4. Скрипт будет изменять содержание сценария только в том случае, когда на странице Options диалога Schema Generation будет установлен флажок для объекта Schema.

2.3.2. 2 Создание пользовательских свойств для обслуживания автоинкрементных полей таблиц

Генераторы и триггеры. Для реализации механизма обслуживания автоинкрементного поля необходимы два компонента: генератор уникального значения и триггер, который должен присваивать это значение при вставке новой записи в таблицу с автоинкрементным ключом.

Генераторы и триггеры создаются специальными запросами (CREATE GENERATOR и CREATE TRIGGER), которые должны быть расположены в сценарии создания БД после SQL-запросов создания таблиц (CREATE TABLE) для каждой таблицы, имеющей автоинкрементный ключ.

Запросы CREATE GENERATOR и CREATE TRIGGER могут быть созданы обычным способом в процессе редактирования текста сценария. Мы рассмотрим способ, основанный на использовании механизмов пользовательских свойств и шаблонов. Этот способ особенно эффективен при большом числе таблиц, содержащих автоинкрементные поля [6].

Создание признаков, идентифицирующих автоинкрементные атрибуты модели. Чтобы отличать таблицы, содержащие автоинкрементные атрибуты, создадим для соответствующих сущностей специальное пользовательское свойство, которое будет служить признаком.

Рис.

Перейдите в режим логической схемы и выберите пункт Edit/UDPs. В диалоге свойств установите в списке Class объект Attribute. Создайте свойство, например, с именем generate_id типа List и назначьте ему значения по умолчанию «yes, ~no» (рис. 2. 9).

Перейдите в редактор атрибутов модели (Edit/Attribute). Теперь значение «no» пользовательского свойства generate_id видно у всех атрибутов модели. Поменяйте это значение на «yes» у генерируемых автоинкрементных ключевых атрибутов (рис. 2. 10).

После того, как автоинкрементные атрибуты помечены, необходимо создать шаблон и подключить его к указанным таблицам.

SQL-запросы для создания генераторов и триггеров. Договоримся, что генераторы мы будем называть по имени поля с прибавлением строки «_gen». Например, если таблица PART_TYPE содержит поле equip_type_id, значение которого должен давать генератор, то имя этого генератора будет equip_type_id_gen. SQL-запрос на создание генератора для этого поля будет иметь вид: CREATE GENERATOR equip_type_id_gen;

Пусть также имена триггеров образуются от имен триггера для таблиц с добавлением «_GEN_ID». Тогда имя триггера для таблицы PART_TYPE будет PART_TYPE_GEN_ID, а запрос на создание триггера:

SET TERM!

CREATE TRIGGER PART_TYPE_GEN_ID FOR PART_TYPE

BEFOR INSERT AS

BEGIN

new. equip_type_id = gen_id (equip_type_id_gen, 1);

END!

Рис.

SET TERM; !!

Создание шаблона для обслуживания автоинкрементных полей таблиц. Для рассматриваемого примера механизм шаблонов очень удобен, так как при создании схемы БД необходимо генерировать однотипные скрипты, сопровождающие таблицы, содержащие автоинкрементные поля. На этот раз скрипт должен иметь тип «после генерации», так как он будет содержать запрос на создание триггера, а таблица, к которой этот триггер относится, должна уже существовать.

Перейдите в режим физической модели, выберите пункт Edit/Table и щелкните по закладке Pre & Post Script. Эта страница практически совпадает с одноименной страницей редактора, рассмотренного ранее (рис. 2. 7).

Щелкните по кнопке «Script Template» и перейдите в редактор шаблонов уже рассмотренный нами выше.

Создайте новый скрипт, назвав его «Создание генератора». В окне Table Script Template наберите следующий текст шаблона:

%For EachAtt (%TableName)

{

% if (% = = (%AttProp (generate_id), yes))

{CREATE GENERATOR % AttFiledName_gen;

SET TERM %DBMS TriggerDelim;

CREATE TRIGGER %TableName_GEN_ID FOR %TableName

BEGIN

new. %AttFiledName = gen_id (%AttFiledName_gen, 1);

END %DBMS TriggerDelim

SET TERM; %DBMS TriggerDelim

}

}

Замечание. Нажмите кнопку ОК. Имя созданного шаблона должно появиться в правом списке — списке неподключенных скриптов.

Анализ текста шаблона. Как и в обычном языке программирования в макроязыке ERwin имеются макросы — операторы цикла, условные операторы и операторы сравнения. Например, для организации цикла-перебора всех атрибутов таблицы служит макрос

%ForEachAtt (%TableName)

{}

Все находящееся в фигурных скобках, будет выполняться для каждого атрибута таблицы %TableName. Макрос %TableName при «раскрытии» шаблона разворачивается в имя таблицы, то есть таблицы (из списка таблиц), к которой данный шаблон подключен.

Условный макрос

% if (% = = (%AttProp (generate_id), yes))

{}

В качестве логического выражения в данном случае используется макрооператор сравнения % = =. Принцип работы приведенного фрагмента шаблона заключается в следующем: проверяется, равно ли у атрибута значение свойства generate_id = yes, и если равно, то выполняется все, что находится в фигурных скобках, то есть создается генератор и триггер.

Макрос %AttProp (generate_id) извлекает значение свойства «generate_id», подключенное к атрибуту, а %AttFiledName разворачивается в имя колонки таблицы, соответствующей атрибуту сущности.

И, наконец, в шаблоне имеется макроопределение %DBMS TriggerDelim, заменяющееся при обработке шаблона в разделитель триггера «!!». Эта последовательность символов была выбрана в диалоге TargetServer в поле Trigger Delimiter.

Подключение шаблона к таблицам. Вы можете выбрать шаблон и нажать на кнопку Attach, затем выбрать в выпадающем списке следующую таблицу и т. д.

Рис.

Однако, это можно сделать быстрее и удобнее, воспользовавшись просмотрщиком — браузером скриптов (рис. 2. 11). Для его вызова нажмите кнопку Script Browser.

Помимо списка шаблонов и двух окон — с текстом шаблона и результатом его развертывания — здесь имеются два списка таблиц модели. В новом списке находятся таблицы, к которым подключен выбранный шаблон, остальные таблицы находятся в правом списке. Перемещение таблиц между списками выполняется при помощи кнопок Attach и Detach. Выберите и переместите в левый список таблицы модели, к которым должен быть подключен шаблон.

Выйдите из редактора таблиц Interbase Table Editor и выполните генерацию схемы базы данных. Убедитесь, что после SQL-запросов создания таблиц CREATE TABLE появились строки создания генераторов и триггеров.

2.3.2. 3 Создание шаблонов для вставки, изменения и удаления записей

Хранимые процедуры. Для операций вставки, изменения и удаления записей можно использовать механизмы хранимых процедур. В отличие от триггера хранимая процедура не выполняется на какое-то событие, а вызывается из другой программы, которая передает на сервер имя хранимой процедуры. Хранимая процедура более гибка, чем триггер, поскольку может вызывать другие хранимые процедуры. Ей можно передавать параметры и она может возвращать параметры, значения и сообщения.

Для большинства таблиц модели, запрос на создание процедуры вставки записи имеет такой вид []:

SET TERM!!;

CREATE PROCEDURE < имя процедуры> (< параметр тип> ,<параметр тип>…) AS

BEGIN

INSERT INTO < имя таблицы> (< имя поля> ,<имя поля>…)

VALUES (<: параметр>, <: параметр>…);

END!

SET TERM; !!

SQL-выражение SET TERM устанавливает в качестве разделителя последовательность символов !!, точно также, как мы сделали это и для триггера, а по окончании процедуры возвращается старое значение разделителя — «; ».

Имя процедуры удобно образовать из имени таблицы, добавив перед ним префикс «ins_». Параметрами процедуры будут все поля таблицы, кроме автоинкрементного поля, значение которого генерируется триггером.

К примеру, для таблицы PART_TYPE (тип оборудования) имеющей поле equip_name (наименование типа) процедура вставки создается следующим запросом:

SET TERM!!;

CREATE PROCEDURE ins_part_type (equip_name CHAR (30))

AS

BEGIN

INSERT INTO PART_TYPE (equip_name)

VALUES (: equip_name);

END!

SET TERM; !!

Точно также процедура изменения записи таблицы должна иметь вид:

SET TERM!!;

CREATE PROCEDURE < имя процедуры> (< параметр тип>, < параметр тип>…)

AS

BEGIN

UPDATE < имя таблицы> SET

< имя поля> =<: параметр> ,

< имя поля> =<: параметр>…

WHERE < ключ>=<параметр>AND<ключ>=<параметр>… ;

END!

SET TERM; !!

Имя процедуры мы также создадим из имени таблицы, добавив к нему префикс «upd_».

В отличие от предыдущей процедуры параметры здесь должны содержать и ключевое поле, по которому ставится условие в запросе UPDATE. Для той же таблицы PART_TYPE (с ключевым полем equip_type_id) процедура выглядит так:

SET TERM!!;

CREATE PROCEDURE upd_part_type (equip_type_id SMALLINT, equip_name CHAR (30))

AS

BEGIN

UPDATE PART_TYPE SET

equip_name =: equip_name

WHERE equip_type_id =: equip_type_id;

END!

SET TERM; !!

Шаблоны хранимых процедур

Вставка записи

SET TERM %DBMSTriggerDelim;

CREATE PROCEDURE ins_%Lower (%TableName)

(%ForEachAtt (%TableName,',') {

%If (%Not (%AttIsPK)) {%AttFieldName %AttDataType }}

) AS BEGIN

INSERT INTO %TableName (%ForEachAtt () {

%ForEachAtt (%TableName,',') { %If (%Not (%AttIsPK)) {%AttFieldName

VALUES (%ForEachAtt (%TableName,',') {

%If (%Not (%AttIsPK)) {: %AttFieldName}});

} END%DBMSTriggerDelim

SET TERM; % DBMSTriggerDelim

Изменение записи

SET TERM %DBMSTriggerDelim;

CREATE PROCEDURE upd_%Lower (%TableName)

(%ForEachAtt (%TableName,',') {%AttFieldName %AttDataType})

AS BEGIN

UPDATE %TableName SET

%ForEachAtt (%TableName,',')

{%If (%Not (%AttIsPK)) {%AttFieldName=: %AttFieldName}}

WHERE

%ForEachAtt (%TableName,'and')

{If (%AttIsPK) {%AttFieldName=: %AttFieldName}};

END%DBMSTriggerDelim

SET TERM; %DBMSTriggerDelim

Удаление записи

SET TERM %DBMSTriggerDelim;

CREATE PROCEDURE del_%Lower (%TableName) (%ForEachAtt (%Tablename,',')

{%If (%AttIsPK){%AttFieldName %AttDataType}})

AS BEGIN

DELETE FROM %TableName

WHERE

%ForEachAtt (%Tablename,'and')

{%If (%AttIsPK) {%AttFieldName=: %AttFieldName}};

END%DBMSTriggerDelim

SET TERM; %DBMSTriggerDelim

Создание и подключение шаблонов к таблицам. ERwin не имеет встроенных шаблонов хранимых процедур, которые можно было бы использовать как основу при создании новой хранимой процедуры.

Рис.

Создание шаблонов и привязка их к таблицам выполняется в редакторе таблиц Table Editor. Вызовите редактор таблиц и перейдите на страницу Stored Procedure. Появится закладка Stored Procedure диалога Table Editor (рис. 2. 12).

Список Attached SP Template содержит имена процедур, связанных с проектируемой таблицей. Список Unattached SP Template содержит имена процедур, которые могут быть связаны с таблицей. Кнопки < Attach и Detach> служат для связывания и открепления процедуры от таблицы.

Перейдите в редактор шаблонов, нажав кнопку SP Template. Создайте три новых шаблона, назвав их «Вставка записи», «Изменение записи» и «Удаление записи». Введите тексты шаблонов, приведенных выше. Вернитесь в окно редактора таблиц и подключите вновь созданные шаблоны к соответствующим таблицам модели. Код шаблона показывается в окне SP Template, код процедуры — в окне SP Expansion.

3. Перенос структуры данных с одного сервера на другой

3.1 Обратное проектирование

Процесс генерации логической модели из физической базы данных называется обратным проектированием (Reverse Engineering). ERwin позволяет создать модель данных путем обратного проектирования имеющейся БД. После того как модель создана, можно перейти на другой сервер и произвести прямое проектирование структуры БД для другой СУБД.

Рис.

Для выполнения обратного проектирования следует выбрать пункт меню Tasks/Reverse Engineer. При этом возникает диалог ERwin Template Selection (рис. 3. 1), в котором нужно выбрать шаблон диаграммы, затем диалог выбора СУБД и, наконец, диалог задания опций обратного проектирования Reverse Engineering-Set Options (рис. 3. 2). В этом диалоге можно задать следующие опции:

Рис.

Группа Reverse Engineer From позволяет задать источник обратного проектирования — БД или SQL-скрипт. При помощи кнопки Browse можно выбрать текстовый файл, содержащий SQL-скрипт.

Группа Items to Reverse Engineer позволяет задать объекты, на основе которых будет создана модель. При помощи списка выбора Option Set, а также кнопок New, Update и Delete можно создавать и редактировать именованные конфигурации объектов БД, которые могут быть использованы многократно при других сеансах обратного проектирования. Этот механизм особенно удобно использовать в процессе изучения влияния выбора различных опций на результаты обратного проектирования.

Группа Reverse Engineer позволяет включить в модель системные объекты (окно выбора System Objects) и установить фильтр на извлекаемые таблицы по их владельцу.

Установка опции Primary Key в группе Infer означает, что ERwin будет генерировать первичные ключи на основе анализа индексов. Если включена опция Relations, ERwin будет устанавливать связи на основе имен колонок первичного ключа или индексов. Эти опции имеют смысл, только если связи не прописаны явно.

Группа Case Conversion позволяет задать опции конвертизации регистра при создании логических и физических моделей.

Рис.

Опция Import View Base Tables указывает, что ERwin будет устанавливать связи между представлениями и таблицами. Если опция включена или SQL-команда создания представления содержит сложные конструкции (например, агрегативные функции), колонки представления импортируются как определяемые пользователем.

После установки необходимых опций необходимо щелкнуть по кнопке Next, после чего появляется диалог связи с БД, устанавливается процесс обратного проектирования, во время которого появляется статус процесса в диалоге Reverse Engineer-Status. В результате процесса создается новая модель данных.

3.2 Синхронизация системного каталога БД и текущей модели

В процессе работы над проектом модель может изменяться и дополняться. С другой стороны, системный каталог БД может редактироваться другими проектировщиками. В результате спустя некоторое время после последнего сеанса обратного проектирования могут возникнуть расхождения между реальным состоянием системного каталога и моделью данных.

Для синхронизации системного каталога БД и текущей модели следует выбрать пункт меню Tasks/Complete Compare или нажать кнопку

на панели инструментов. Возникает диалог Complete Compare Set Options, который во многом похож на описанный выше диалог Reverse Engineer Set Options. Разница заключается в том, что в отличие от обратного проектирования сравнивать текущую модель можно не только с БД или SQL-скриптом, но и с другой моделью ERwin, хранящейся в файле.

После нажатия на кнопку Next диалога Complete Compare Set Options возникает диалог связи с БД, устанавливается сеанс связи с сервером и в диалоге Complete Compare Resolve Differences показывается текущее состояние модели (слева) и системного каталога СУБД (справа) (рис. 3. 3).

Линейка индикаторов, расположенная между двумя списками, в начале процесса синхронизации показывает наличие (изображены два квадрата разного цвета) или отсутствие (изображен прямоугольник) разницы между объектами сравниваемых структур.

Если выделить одну их строк состояния модели или системного каталога, та в правой части диалога активизируются кнопки, позволяющие задать один из режимов синхронизации:

EXPORT — экспорт объекта из модели в БД;

IMPORT — импорт объекта из БД в модель;

IGNORE — игнорирование различия между моделью и БД;

DELETE — удаление объекта из БД.

Разработчик должен выделить строку несоответствия сравниваемых структур и нажать одну из кнопок, которая, по его мнению, позволяет ликвидировать это несоответствие.

Рис.

Кнопки Match и UnMatch предназначены для связывания объектов модели и БД, имеющих разные имена. Например, в модели ERwin таблице CUSTOMER соответствует таблица CUST в БД. По умолчанию ERwin определяет, что это разные объекты, хотя по смыслу это одно и то же. Для того чтобы ERwin правильно провел синхронизацию, необходимо вручную связать эти две таблицы. Для связывания таблиц необходимо щелкнуть по кнопке Match, затем по таблице модели (левый список) и, наконец, по таблице БД (правый список). Кнопка UnMatch служит для отмены связывания таблиц.

Кнопка Report позволяет сгенерировать отчет о синхронизации, кнопка Preview вызывает диалог Preview SQL Commands, в котором показывается SQL-скрипт, выполняемый для проведения синхронизации.

После щелчка по кнопке Next возникает диалог Complete Compare Import Changes, в котором можно задать дополнительные опции синхронизации. касающиеся модификации модели (рис. 3. 4).

Группа Case Conversion of Logical Names позволяет задать регистр имен создаваемых в модели объектов.

Группа If Table to Import Exist in Model позволяет задать опции генерации схемы в случае, если таблица уже существует в модели. Может быть использована существующая таблица (Use Existing Table) либо создана дублирующая (Create Duplicate Table).

Опции Primary Keys, Relation и Import Base Tables имеют то же назначение, что и соответствующие опции диалога Reverse Engineer Set Options (см. выше).

Кнопка Start Import служит для запуска процесса импорта в модель.

Заключение

Процесс проектирования ИС подразумевает выполнение целого комплекса взаимоувязанных между собой специализированных инженерных и конструкторских работ различного тематического профиля (информатика, вычислительная техника, программирование, математика, экономика, строительство и т. п.), которые можно в соответствии со спецификой их исполнения условно разделить на следующие направления:

* инженерно-техническое проектирование, связанное с разработкой информационно-вычислительной среды и средств инженерного обеспечения системы;

* проработка проектных решений по созданию вычислительной, программной и информационной среды системы, в том числе осуществление математико-компьютерного моделирования информационно-длительных и коммуникационных процессов как для отдельных элементов системы, так и для системы в целом;

* проектирование инженерных коммуникаций и средств жизнеобеспечения системы — проектирование кабельной коммуникационной системы, проектирование систем энергоснабжения, вентиляции, освещения, охранной и пожарной сигнализации, архитектурно-строительное проектирование производственных помещений для персонала, разработка интерьеров помещений и т. д. ;

* технико-экономическое обоснование проектных решений, включающее определение, оптимизацию и обоснование технико-экономических показателей и характеристик проектируемой системы на основе заданных целевых критериев ее функционирования;

* проектная проработка вопросов технической поддержки эксплуатации системы после ее создания и ввода в действие, включающая обеспечение технической поддержки программно-технических средств системы в процессе эксплуатации;

* управление ходом выполнения самого процесса проектирования, обеспечивающее:

— определение состава и этапности проектных работ;

— обеспечение календарного планирования хода выполнения проектных работ в соответствии с их этапностью;

— планирование материальных и людских ресурсов, выделенных на реализацию проекта, увязка ресурсного планирования с календарным;

— контроль хода реализации проекта;

* разработка проектно-конструкторской документации на систему.

Объектно-ориентированное программирование нацелено на разработку крупных программных комплексов, разрабатываемых командой программистов (возможно, достаточно большой). Проектирование системы в целом, создание отдельных компонент и их объединение в конечный продукт при этом часто выполняется разными людьми, и нет ни одного специалиста, который знал бы о проекте всё.

Объектно-ориентированное проектирование состоит в описании структуры и поведения проектируемой системы, то есть, фактически, в ответе на два основных вопроса:

Список литературы

1. Уэнди Боггс, Майкл Боггс: UML и Rational Rose, 2008 г.

2. Материалы сайта www. interface. ru

3. Материалы сайта www. sql. ru

ПоказатьСвернуть
Заполнить форму текущей работой