Болотская Методическое пособие по исползованию кодов обработки 2010
.pdfФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ЯДЕРНЫЙ УНИВЕРСИТЕТ «МИФИ»
Т.М. Болотская, Б.А. Щукин
Методическое пособие по использованию кодов обработки
при выполнении лабораторных работ в СУБД 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