Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Болотская Методическое пособие по исползованию кодов обработки 2010

.pdf
Скачиваний:
15
Добавлен:
16.08.2013
Размер:
591.64 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ЯДЕРНЫЙ УНИВЕРСИТЕТ «МИФИ»

Т.М. Болотская, Б.А. Щукин

Методическое пособие по использованию кодов обработки

при выполнении лабораторных работ в СУБД D3 по курсу «Проектирование баз данных»

Москва 2010

УДК 004.065(07) ББК 32.973-018.2я7 Б 79

Болотская Т.М., Щукин Б.А. Методическое пособие по использованию ко-

дов обработки при выполнении лабораторных работ в СУБД D3 по курсу «Проектирование баз данных». М.: НИЯУ МИФИ, 2010. 28 с.

Рассмотрен один из основных вопросов проектирования баз данных в СУБД D3: использование кодов обработки в словарях файлов. Особое внимание уделено практическим моментам, связанным с инициализацией и сохранением результатов отработки кодов. В предлагаемом пособии приведен необходимый материал с примерами, что очень важно при практической работе на лабораторных занятиях.

Пособие предназначено для студентов НИЯУ МИФИ, изучающих курс «Проектирование баз данных» в течение восьмого и девятого семестров факультета

«К».

Рецензент канд. техн. наук, доц. А.В. Кузовкин

Рекомендовано к изданию редсоветом НИЯУ МИФИ

ISBN 978-5-7262-1309-5

© Национальный исследовательский

 

ядерный университет «МИФИ», 2010

Редактор М.В. Макарова

Подписано в печать 07.07.2010. Формат 60х84 1/16

Уч.-изд.л. 1,75. Печ.л. 1,75. Тираж 100 экз.

Изд. № 054-1 Заказ № 224

Национальный исследовательский ядерный университет «МИФИ». Типография НИЯУ МИФИ.

115409, Москва, Каширское ш., 31

О Г Л А В Л Е Н И Е

 

Введение ................................................................................................

4

1. Коды обработки, используемые в FDI ............................................

5

1.1. Коды обработки в атрибуте

 

«input conversion» FDI .............................................

6

1.2. Коды обработки в атрибуте

 

«correlative» FDI .........................................................

7

2. Коды обработки, используемые в ADI..........................................

10

2.1. Коды обработки в атрибуте

 

«input conversion» ADI...........................................

10

2.2. Коды обработки в атрибутах

 

«output conversion» и «correlative» ADI .......

12

2.3.Особенности работы с кодами в процессорах ACCESS и

UPDATE...............................................................................

14

Список рекомендуемой литературы..................................................

16

Приложение 1 ......................................................................................

17

Введение

В СУБД D3 для управления данными используются словари файлов. При этом многие вопросы преобразования данных, представления результатов, генерации ключей записей, поддержания ссылочной целостности при использовании основных процессоров СУБД D3 UPDATE и ACCESS решаются с помощью специальных кодов обработки СУБД D3, таких, как a (algebraic), t (translate), b (bridge), g (group extraction), call и др.

Для использования всех возможностей этих кодов нужно четко представлять порядок их отработки в основных процессорах СУБД D3 UPDATE и ACCESS, т.е. понимать что:

1)инициализация процессов, вызываемых кодами, происходит в разные моменты;

2)коды, используемые при определении атрибутов, т.е. в запи-

сях описания атрибутов (Attribute Defining Item - ADI),

влияют только на преобразование и представление данных перед выводом, вывод может производиться на экран дисплея, печать, во внешний (по отношению к базе данных) файл;

3) коды, используемые при определении файлов, т.е. в записях описания файлов (File Defining Item - FDI), влияют на сохранение записей в базе данных.

Рассмотрим более подробно особенности отработки кодов, помещенных в словари файлов СУБД D3 на примере базы данных, состоящей из двух связанных таблиц (файлов в терминологии D3): «Студенты» и «Группы». Все описания базы данных в терминах FDI и ADI и примеры запросов в UPDATE и ACCESS представлены в прил. 1.

4

1.Коды обработки, используемые в FDI

Всловаре любого файла базы данных, работающей под управлением СУБД D3, для каждой области данных этого файла создает-

ся отдельная запись описания файла (File Defining Item - FDI).

Если файл состоит из словаря и единственной области данных, то запись описания файла будет одна. В этом случае принято, что область данных файла носит имя файла. Например, если файл «Студенты» состоит из словаря и одной области данных, то словарь будет иметь имя «dict Студенты», а область данных – «Студенты». В этом случае в словаре «dict Студенты» будет создана запись описания файла с ключом «Студенты» (рис. 1).

DICT Студенты ‘Студенты’… dictionary-code d

input-conversion call Home

Рис. 1. Фрагмент записи описания файла «Студенты»

Обращение к области данных (<file.reference>) осуществля-

ется по имени Студенты, Студенты или просто Студенты.

Под одним словарем можно создать несколько областей данных. Например, пусть файл «Студенты» создан с несколькими облас-

тями данных: «Первокурсник», «Второкурсник», … В этом случае в словаре «dict Студенты» для каждой области данных будет создана собственная запись описания файла, каждая из которых будет иметь ключ, совпадающий с именем области, т.е. «Пер-

вокурсник», «Второкурсник», …

Обращение к областям данных осуществляется по именам

Студенты, Первокурсник, Студенты, Второкурсник …

Коды обработки, помещенные в FDI конкретной области данных, действуют только в этой области. На них реагирует только процессор UPDATE, в процессоре ACCESS эти коды просто игнорируются. Коды обработки в записи FDI помещаются только в ат-

рибуты «input conversion» и «correlative».

5

1.1.Коды обработки

в атрибуте «input conversion» FDI

Код, помещенный в «input conversion» FDI, срабатывает после вызова процессора UPDATE, т.е. непосредственно после выполнения команды:

u <file.reference> <Item_ID> <Список атрибутов>

перед появлением вызываемой записи на экране монитора.

В атрибуте «input conversion» FDI можно использовать только один код обработки, а именно «call», т.е. вызов подпрограммы. Рассмотрим использование этого кода на примере формирования значения по умолчанию.

Например, в записях области данных файла «Студенты» в поле №7 указывается место жительства студента. Предположим, что большая часть студентов живет в общежитии. Удобно, чтобы при формировании данных на студента значение «Общежитие» в поле №7 заносилось автоматически, то есть форма с данными на студента должна появляться на экране монитора с уже сформированным значением, котороелишь внекоторыхслучаяхнужнобудетизменять.

Для этого в FDI файла «Студенты», в атрибут «input conversion» (см. рис. 1) следует поставить код «call Home», где «Home» – имя подпрограммы, которая заносит значение «Общежитие» в поле № 7 (рис. 2).

001 sub Home(Item)

002 if access(16) then Item<7> = "Общежитие"

003 return

Рис. 2. Подпрограмма «Home»

Поясним текст этой подпрограммы. Она написана на языке встроенных процедур СУБД D3 FlashBasic. У всех процедур, вызываемых из FDI, единственный параметр – запись области данных файла в формате динамического массива. В данном случае параметр «Item» представляет запись области данных файла «Студенты».

Динамический массив СУБД D3 в общем случае предполагает использование трех целочисленных индексов «Item<i,j,k>», где

6

i – номер поля записи; j – номер значения поля; k – номер подзначения значения. Каждый из этих индексов априорно не ограничен каким-либо максимальным числом, отсюда в названии слово «динамический».

В тексте подпрограммы «Home» использована функция «access(16)», которая проверяет, формируется ли новая запись и, если «да», то полю № 7 динамического массива присваивается значение по умолчанию – «Общежитие».

Обратите внимание на атрибут «dictionary-code» (см. рис. 1) со значением «d», которое соответствует записи описания файла (FDI). Значение «a» соответствует записи описания атрибута

(ADI).

1.2.Коды обработки

в атрибуте «correlative» FDI

Код, помещенный в атрибут «correlative» FDI, срабатывает непосредственно перед занесением записи, сформированной или модифицированной UPDATE-процессором, в файл базы данных. Если используется код обработки «call», который вызывает подпрограмму, то в последней можно изменить любой элемент динамического массива, представляющего запись, и именно с этими изменениями запись будет помещена в файл базы данных.

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

Атрибут «correlative» FDI практически всегда нагружается несколькими кодами обработки при создании баз данных, управляемых СУБД D3. В рамках выполнения лабораторных работ обязательно должны быть использованы коды: «b», «id», «call».

На рис. 3 приведен фрагмент записи описания файла «Студенты» для атрибута «correlative». Из рисунка видно, что атрибут имеет несколько значений: сначала выполняется подпрограмма

7

«Проверка», затем присваивается ключ записи и только потом осуществляется связь по «мосту» с файлом «Группы».

DICT Студенты Студенты’

dictionary-code

d

call Проверка

correlative

 

ida1

 

bГруппы;6;3

Рис. 3. Фрагмент записи описания файла «Студенты»

Рассмотрим последовательно все эти коды.

Подпрограмма «Проверка» проверяет наличие значения в поле №6, в котором помещается идентификатор группы. Необходимость проверки вызвана тем, что в запись файла «Группы» по мосту передается идентификатор студента. Код подпрограммы представлен на рис. 4.

mybp 'Проверка' size = 259

01

sub(Item)

02

if Item<6> = "" then

03

execute "cls"

04

crt @(10,3):"Не указан ItemID группы!"

05

crt @(10,4):"Студент будет помещен в группу с

06

ItemID <Резерв>"

crt @(10,5):"Нажмите <Enter>!"

07

inkey

08

Item<6> = "Резерв"

09end

10return

Рис. 4. Подпрограмма «Проверка»

В подпрограмме «Проверка»:

оператор «execute» выполняет внешнюю программу, в данном случае «cls» – очистку экрана;

оператор «crt» выводит на экран заданные строки;

оператор «inkey» останавливает подпрограмму и ждет нажатия клавиши «Enter».

8

Код «ida1» (см. рис. 3) формирует ключ записи из значения поля № 1. Получение ключа записи из значения поля – не очень удобная практика, так как при формировании записи пользователь может ввести в поле № 1 значение, совпадающее с уже имеющимся ключом. В этом случае автоматически сформируется уникальный ключ, равный количеству секунд, начиная с полуночи. Более подробно о коде «id» можно узнать в электронном «help».

Код «bГруппы;6;3» (см. рис. 3) моделирует программный триггер, который срабатывает при сохранении записи файла «Студенты». Пользователи СУБД D3 называют его «мостом», с движением от файла «Студенты» к файлу «Группы». Параметр «6» – номер поля в записи файла «Студенты», в котором стоит идентификатор группы. Параметр «3» – номер поля в записи файла «Группы», в которое, в качестве текущего значения, будет введен идентификатор студента. Заметим, что если говорится, например, о записи файла «Студенты», то речь всегда идет об области данных файла.

На рис. 5 представлен пример срабатывания «моста».

Запись файла

Запись файла

Запись файла «Группы»

«Студенты»

«Группы» «ДО»

«ПОСЛЕ»

000

127

000

К06-221

000

К06-221

001

127

001

К06-221

001

К06-221

002

Миненок

002

22

002

22

003

Александр

003

121]123]125

003

121]123]125]127

004

Евгеньевич

 

 

 

 

005

7834

 

 

 

 

 

 

 

 

 

Рис. 5. Состояние записи файла «Группы» до и после сохранения записи файла «Студенты» с ItemID = 127

Код «b» (bridge) имеет несколько модификаций параметров. Более подробно об этом коде можно узнать в электронном «help».

9

2.Коды обработки, используемые в ADI

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

бута (Attribute Defining Item - ADI).

Атрибут в модели данных СУБД D3 – это функциональное преобразование значения поля, к которому привязывается атрибут. Запись описания атрибута как раз и определяет это функциональное преобразование с помощью кодов обработки. Так как поля записей в файлах СУБД D3 в общем случае – многозначные, то и атрибуты многозначны.

На большинство кодов обработки, помещенных в ADI, реагирует как процессор UPDATE, так и процессор ACCESS. Коды обработки в записи ADI помещаются в атрибуты «input conversion», «output conversion» и «correlative».

2.1.Коды обработки

в атрибуте «input conversion» ADI

Код, помещенный в атрибут «input conversion» записи описания атрибута, осуществляет преобразования значений, вводимых в поле области данных файла. Так как речь идет о вводе, то на эти коды непосредственно реагирует процессор UPDATE. Процессор ACCESS реагирует опосредованно.

Рассмотрим пример. В СУБД D3 «дата» имеет стандартное внутреннее и несколько внешних представлений. Во внутреннем представлении даты сохраняются в записях файлов базы данных, в полях динамических массивов. Во внешнем представлении даты вводятся в отведенное для них место на экране монитора, а выводятся в отчетах. Во внутреннем представлении дата – это строка цифр, представляющее десятичное число, причем нулю (0) соответствует дата 31 декабря 1967 года.

Пусть в поле № 5 записи области данных файла «Студенты» указывается день рождения студента. На рис. 6 видно, что в атрибут «input conversion» помещен код «d». Этот код инициализирует преобразование, пример которого представлен на рис. 7.

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]