Методические указания по выполнению лабораторных работ по дисциплине "методологии и технологии проектирования информационных систем" - polpoz.ru o_O
Главная
Поиск по ключевым словам:
страница 1
Похожие работы
Название работы Кол-во страниц Размер
Методические указания к выполнению лабораторных и курсовых работ... 5 700.39kb.
Методические указания по выполнению лабораторных работ адсорбционная... 1 173.96kb.
Методические указания по выполнению практических работ для студентов... 1 170.1kb.
Пособие предназначено для студентов специальности 230105 Программное... 3 352.82kb.
Администрирование в информационных сетях: Методические указания к... 1 177.85kb.
Методические указания к выполнению лабораторных работ для студентов... 2 389.92kb.
Рабочая программа по дисциплине «Проектирование информационных систем»... 1 305.15kb.
Методические указания к выполнению курсовой работы по дисциплине... 1 310.23kb.
Проектирование информационных систем 1 115.81kb.
Учебно-методические указания к выполнению практических работ и рабочие... 2 211.31kb.
Методические рекомендации по выполнению лабораторных и практических... 1 188.57kb.
Задание № По курсовому проекту 1 46.68kb.
1. На доске выписаны n последовательных натуральных чисел 1 46.11kb.

Методические указания по выполнению лабораторных работ по дисциплине "методологии - страница №1/1


Методические указания по выполнению лабораторных работ по дисциплине

"МЕТОДОЛОГИИ И ТЕХНОЛОГИИ ПРОЕКТИРОВАНИЯ ИНФОРМАЦИОННЫХ СИСТЕМ"







Методические указания по выполнению лабораторных работ

работ по дисциплине

" МЕТОДОЛОГИИ И ТЕХНОЛОГИИ ПРОЕКТИРОВАНИЯ ИНФОРМАЦИОННЫХ СИСТЕМ "
Лабораторное занятие 10

Генерация схемы базы данных в Erwin
Учебные и воспитательные цели

Приобретение навыков в разработке информационных систем.

Продолжительность занятия – 90 мин.
Упражнение 1. Генерация схемы базы данных в ERwin
Генераторы и триггеры
В спроектированной модели имеются поля, специально введенные в качестве первичного ключа. Эти поля должны содержать уникальное для таблицы целое числовое значение, которое должно генерироваться автомати- чески.

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

Для создания генератора необходимо выполнить запрос CREATE GENERA- TOR, а для присвоения уникального значения первичному ключу — создать триггер типа BEFORE INSERT.

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



поля будет иметь вид

Пусть также имена триггеров образуются от имен таблиц с добавлением


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

Подобные SQL-запросы должны быть в сценарии создания базы после SQL- запросов создания таблиц CREATE TABLE для каждой таблицы, имеющей автоинкрементный ключ.




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

Перейдите в режим логической схемы и выберите пункт меню «Model | UDP Dictionary...». В диалоге свойств установите в списке «Class» объект «Attrib- ute». Создайте свойство с именем «generate_id» типа List и назначьте ему зна- чения по умолчанию «yes,~no» (рис. 5.94).

Рисунок 10.1 - Свойство generate_id — признак автоинкрементного поля


Теперь это пользовательское свойство будет видно у всех атрибутов модели, и значение его по умолчанию будет равно «nо». У генерируемых ключевых атрибутов поменяйте это значение на «yes».

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


дого автоинкрементного атрибута выбрать на странице «UDP» для свойства
«generate_id» значение «yes» в списке (рисунок 10.2).

Рисунок 10.2 - Установка значения свойства generate_id


Перечень ключевых автоинкрементных атрибутов приведен в таблице 10.1.


Таблица 10.1 - Ключевые автоинкрементные атрибуты


Сущность

Таблица

Ключевой атрибут

Единица оборудования

PART

код единицы оборудования

Индивидуальный план

PLAN

план

Класс

CLASS

код класса

Плановое занятие

PLANJ.ESSON

занятие

Физическое лицо

PERSON

код физ лица

Причина отмены

REASON

код отмены

Тема типового курса

THEME

код тем

Тип оборудования

PART_TYPE

код типа оборудования

Типовым курс

COURSE

курс

Учебное место

WORKPLACE

код учебного места

После того, как автоинкрементные атрибуты помечены, необходимо создать
шаблон и подключить его к указанным таблицам. Перейдите в режим физи-
ческой модели, выберите пункт меню «Database» и щелкните по закладке
«Pre & Post Script | Model-Level…» (рисунок 10.3).

Рисунок 10.3 - Страница Pre & Post Script


Эта страница практически совпадает с одноименной страницей редактора, рассмотренного ранее. Как и в том случае, нам следует создать скрипт и под- ключить его к таблице. На этот раз скрипт должен иметь тип «после генера- ции», так как он будет содержать запрос на создание триггера, а таблица, к которой этот триггер относится, должна уже существовать.

Щелкните по вкладке «General» и во фрейме «Generation Option» установи-
те переключатель (радиокнопку) в положение «Post-Creation».

Щелкните по вкладке «Code» и создайте новый скрипт, назвав его «Создание генератора». В окне «Code» наберите следующий текст (рисунок 10.4):


Убедитесь, что переключатель «Generation Option» стоит в положении


«Post-Creation» и нажмите кнопку «ОК».
Рисунок 10.4 - Новый скрипт с именем «Создание генератора»

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

Например, в предыдущем случае мы воспользовались макросом %Dia- gramProp(UDPName), извлекающим значение пользовательского свойства по имени этого свойства для диаграммы.

Точно так же, в последнем шаблоне имеется макрос %Att- Prop(generate_id). Этот макрос извлекает значение свойства «generateid», подключенное к атрибуту.

Как и в обычном языке программирования, в макроязыке ERwin име-
ются макросы-операторы цикла, условные операторы и операторы сравне-

ния. Например, для организации цикла - перебора всех атрибутов таблицы


служит макрос

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



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

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

«person_id».
И, наконец, в шаблоне имеется макроопределение %DBMSTriggerDelim, за- меняющееся при обработке шаблона в разделитель триггера — «!!». Это зна- чение, которое было проставлено в диалоге «Target Server» в поле «Trigger Delimiter».

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


геров. Например, часть сценария, относящаяся к таблице CLASS, выглядит


теперь следующим образом:

10.2 Хранимые процедуры
Механизм шаблонов очень удобен, когда при генерации схемы требу- ется повторить одну и ту же операцию для нескольких объектов модели, к примеру, создание однотипных хранимых процедур.

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


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

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

Имя процедуры мы также создадим из имени таблицы, добавив к нему пре-


фикс «upd_».
В отличие от предыдущей процедуры параметры здесь должны содержать и ключевое поле, по которому устанавливается условие в запросе UPDATE. Для той же таблицы PARTTYPE процедура выглядит так:

Процедура удаления содержит в качестве параметров только ключевые рек-


визиты:

Создание шаблонов и привязка их к таблице выполняется аналогично. Даль- нейший порядок работы не отличается от только что описанного порядка создания шаблонов триггеров.

Создайте три новых шаблона, назвав их «Вставка записи», «Изменение запи-
си» и «Удаление записи».
Введите текст шаблонов, приведенный ниже.


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


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


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


10.3 Индексы
Индексация - это механизм, использующийся в базах данных для по- вышения скорости извлечения данных, а также при обеспечении условия уникальности значений. При выполнении запроса сервер Interbase в первую очередь проверяет, существуют ли подходящие индексы у таблиц, участ- вующих в запросе. Затем он определяет, что будет эффективнее — использо- вать индексы или выполнить последовательный просмотр записей. Если сер- вер решает воспользоваться индексом, он находит в индексе необходимое ключевое значение и по ссылкам, связанным с этим значением, находит нуж- ные строки таблицы. Извлечение данных с помощью индекса быстрее, так

как индекс упорядочен и имеет небольшой размер.


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

Тем не менее, выигрыш скорости от применения индексов намного пе-
ревешивает эти недостатки.
Индексы создаются в следующих случаях:
1) колонка часто используется в условиях поиска;
2) колонка участвует в условиях соединения JOIN;
3) по колонке производится сортировка.
ERwin обладает широкими возможностями по созданию и управлению индексами в проектируемой модели. На логическом уровне индексы пред- ставлены ключевыми группами (Key Group) или ключами. При переходе к физической модели ключевые группы преобразуются в индексы.

Ключевые группы могут быть следующих типов:


1 Первичный ключ (Primary Key). Как уже говорилось выше, это атрибут или группа атрибутов, однозначно идентифицирующая экземпляр сущ- ности. Атрибуты первичного ключа на диаграмме находятся выше пер- вой горизонтальной линии в списке атрибутов. В одной сущности мо- жет оказаться несколько атрибутов или групп атрибутов, подходящих на роль первичного ключа. Такие претенденты называются «возмож- ными ключами» или «потенциальными ключами». Решение о выборе первичного ключа принадлежит разработчику и является непростой за- дачей. Как правило, главным критерием при таком выборе является простота и компактность ключа, то есть предпочтение отдается более коротким ключам, содержащим меньшее количество атрибутов.

2 Альтернативный ключ (Alternate Key) — это потенциальный ключ, не выбранный в качестве первичного. ERwin позволяет выделять атрибу- ты потенциальных ключей и при генерации схемы БД генерировать по этим группам отдельные уникальные индексы. Таким ключом в нашей


базе является, к примеру, атрибут «инвентарный номер» в сущности


«Единица оборудования».
3 Внешний ключ (Foreign Key). Создается в дочерней сущности при вне- сении в диаграмму связи и включает в себя мигрирующие атрибуты родительской сущности. На диаграмме обозначается символами (FK).

4 Инверсионные входы (Inversion Entry). Это атрибуты или группы атри- бутов, не определяющие экземпляр сущности уникальным образом, однако часто использующиеся для обращения к экземплярам сущно- сти.

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

Таблица 10.2 - Ключевые группы


Сущность

Атрибуты ключевой группы

Имя ключевой группы

Тип оборудования

наименование типа

Наименование типа

Физическое лицо

фамилия, имя

Фамилия

Плановое занятие

план, номер п/п

Номер занятия в плане

Типовым курс

название

Название курса

Тема типового курса

курс, номер темы

Номер темы в курсе

Индивидуальный план

план, номер темы

Номер темы в плане

Перейдите в режим логической модели и выберите пункт меню «Model| Key


Group ...» (рисунок 10.5).
Рисунок 10.5 - Редактор ключевых групп

Редактор ключевых групп (Key Groups) содержит элементы управления: Entity (сущность) - поле с выпадающим списком, в котором следует выбрать сущность для редактирования.

Окно с перечнем ключевых групп. Каждая группа представлена отдельной строкой, включающей в себя имя (Key Group), тип (Туре) и определение (Definition).

Справа над перечнем групп имеется флажок «Show FK Groups» (показывать группы внешних ключей), позволяющий включать режим вывода внешних ключей в перечне.

Кроме того, диалоговое окно редактора ключевых групп содержит следую-
щие закладки:
Note (примечание). Примечание к выбранной группе.


UDP (пользовательские свойства). Пользовательские свойства для выбран-
ной группы.
Выберите в списке сущность «Единица оборудования», как показано на пре-
дыдущем рисунке 10.5.
Нажмите кнопку «New» (рисунок 10.6).

Рисунок 10.6 - Диалог ввода новой ключевой группы


Введите имя ключевой группы в поле «Key Group» - «Инв. номер». В поле «Index» выводится генерируемое ERwin'oM имя индекса. Оставьте его без изменений.

Переключатель «Key Group Type» задает тип создаваемого ключа. Это может быть альтернативный ключ (Alternate Key) или инверсионный вход (Inversion Entry): Выберите альтернативный ключ и нажмите «ОК».

Вновь введенный альтернативный ключ появится в перечне ключей


(рисунок 10.7).
Перейдите на страницу «Members» (члены). Новый ключ пока не со- держит никаких атрибутов, поэтому правый список «Key Group Members» (члены ключевой группы) пуст. Выберите в левом списке атрибут «инвен- тарный номер » и переместите его в правый список при помощи кнопки со стрелкой (рисунок 10.8).
Рисунок 10.7 - Вновь введенный альтернативный ключ появится в перечне ключей

Рисунок 10.8 - Атрибут «инвентарный номер » перемещен в правый список


Таким же образом создайте ключевые группы для инверсионных вхо-


дов, приведенных в предыдущей таблице.
Теперь, для того, чтобы при генерации схемы базы генерировались все необходимые нам индексы, следует в диалоге генерации для объекта «Index»

установить все флажки (рисунок 10.9).

Рисунок 10.9 - Флажки группы «Create Index» диалога генерации схемы


Сгенерируйте SQL-скрипт создания базы данных и сохраните его в файл.











Для создания базы данных выполните следующие операции:


1) запустите программу IBConsole.
2) подключитесь к локальному серверу, дважды щелкнув мышкой по ветке дерева «Local Server». Введите имя пользователя SYSDBA и пароль MAS- TERKEY.

3) выберите пункт меню «Database | Create Database ...».


4) в диалоге создания базы укажите:
a) в поле «Alias» - «TEACHING»
b) в колонке таблицы «Filename» (имя файла) - «d:\ib\courses.gdb»
c) в колонке таблицы «Size» (размер) - 230
d) в поле «User Name» (имя пользователя) - «STUDENT»

e) в поле «Password» - «silver» или другой пароль, заданный вами при ре-


гистрации в поле Default Character Set выберите набор символов WIN
1251 в поле SQL Dialect - «1» Нажмите кнопку «ОК».
5) выберите пункт меню «Tools | Interactive SQL»
6) загрузите файл сценария (Query | Load Script)
7) выполните сценарий
Если все сделано правильно, после отработки скрипта программа выве-
дет сообщение «Script Completed Successfully» (Скрипт завершен успешно).
Разумеется, этот сценарий не является окончательным. Проектирова- ние клиент-серверной системы является творческим процессом, и никакая автоматизация не может заменить в нем человека. Поэтому, в ходе дальней- шей разработки нашего приложения мы еще будем изменять и дополнять сценарий создания базы данных. Общепринятой практикой является созда- ние двух сценариев - основного и дополнительного. Основной сценарий со- держит запросы создания большей части метаданных и обычно генерируется при помощи CASE-средств. Дополнительный сценарий содержит изменения и дополнения, появившиеся при разработке клиентских приложений - виды, хранимые процедуры.

Для создания базы сценарии выполняются по очереди, сначала основ-


ной сценарий, затем дополнительный сценарий.


Методика выполнения упражнения
Шаг 1. Откройте модель, полученную на упражнении 9, например, под име-
нем Lab_9_Petrov.er1.
Шаг 2. Сохраните модель, например, под именем Lab_10_Petrov.er1.
Шаг 3. Создайте генераторы и триггеры для рассматриваемой учебной моде-
ли по методике рассмотренной ранее (см. п. 10.1).
Шаг 4. Создайте хранимые процедуры для рассматриваемой учебной модели по методике рассмотренной ранее (см. п. 10.2).


Шаг 5. Создайте индексы для рассматриваемой учебной модели по методике рассмотренной ранее (см. п. 10.3).

Шаг 6. Сгенерируйте SQL-скрипт создания базы данных и сохраните его в файле.

Шаг 7. Повторно сохраните модель, например, под именем
Lab_10_Petrov.er1.
Шаг 8. Выполните индивидуальное задание по созданию генераторов и триг- геров, хранимые процедур и индексов для указанной предметной области (см. таблицу 3.4).

Шаг 9. Сгенерируйте SQL-скрипт создания базы данных для указанной предметной области и сохраните его в файле.

Содержание отчета
1. Результаты выполнения шагов 1 – 7 программы занятия.
2. Результаты выполнения индивидуального задания (шаг 8 - 9).


Контрольные вопросы
1. Как создать генераторы и триггеры для рассматриваемой учебной мо-
дели?
2. Как создать хранимые процедуры для рассматриваемой учебной моде-
ли?
3. Как создать индексы для рассматриваемой учебной модели?
4. Каково содержание сгенерированного SQL-скрипта создания базы дан-
ных для рассматриваемой учебной модели?
5. Каковы результаты выполнения индивидуального задания?


izumzum.ru