новая папка 2 / 75820
.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