ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ЯДЕРНЫЙ УНИВЕРСИТЕТ «МИФИ»
Т.М. Болотская, Б.А. Щук...
7 downloads
266 Views
354KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ЯДЕРНЫЙ УНИВЕРСИТЕТ «МИФИ»
Т.М. Болотская, Б.А. Щукин
Методическое пособие по использованию кодов обработки при выполнении лабораторных работ в СУБД 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. Фрагмент записи описания файла «Студенты»
Обращение к области данных () осуществляется по имени Студенты, Студенты или просто Студенты. Под одним словарем можно создать несколько областей данных. Например, пусть файл «Студенты» создан с несколькими областями данных: «Первокурсник», «Второкурсник», … В этом случае в словаре «dict Студенты» для каждой области данных будет создана собственная запись описания файла, каждая из которых будет иметь ключ, совпадающий с именем области, т.е. «Первокурсник», «Второкурсник», … Обращение к областям данных осуществляется по именам Студенты, Первокурсник, Студенты, Второкурсник … Коды обработки, помещенные в FDI конкретной области данных, действуют только в этой области. На них реагирует только процессор UPDATE, в процессоре ACCESS эти коды просто игнорируются. Коды обработки в записи FDI помещаются только в атрибуты «input conversion» и «correlative». 5
1.1.
Коды обработки в атрибуте «input conversion» FDI
Код, помещенный в «input conversion» FDI, срабатывает после вызова процессора UPDATE, т.е. непосредственно после выполнения команды: u <Список атрибутов>
перед появлением вызываемой записи на экране монитора. В атрибуте «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», где 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 … correlative call Проверка 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):"Студент будет помещен в группу с ItemID <Резерв>" 06 crt @(10,5):"Нажмите <Enter>!" 07 inkey 08 Item<6> = "Резерв" 09 end 10 return Рис. 4. Подпрограмма «Проверка»
В подпрограмме «Проверка»: • оператор «execute» выполняет внешнюю программу, в данном случае «cls» – очистку экрана; • оператор «crt» выводит на экран заданные строки; • оператор «inkey» останавливает подпрограмму и ждет нажатия клавиши «Enter». 8
Код «ida1» (см. рис. 3) формирует ключ записи из значения поля № 1. Получение ключа записи из значения поля – не очень удобная практика, так как при формировании записи пользователь может ввести в поле № 1 значение, совпадающее с уже имеющимся ключом. В этом случае автоматически сформируется уникальный ключ, равный количеству секунд, начиная с полуночи. Более подробно о коде «id» можно узнать в электронном «help». Код «bГруппы;6;3» (см. рис. 3) моделирует программный триггер, который срабатывает при сохранении записи файла «Студенты». Пользователи СУБД D3 называют его «мостом», с движением от файла «Студенты» к файлу «Группы». Параметр «6» – номер поля в записи файла «Студенты», в котором стоит идентификатор группы. Параметр «3» – номер поля в записи файла «Группы», в которое, в качестве текущего значения, будет введен идентификатор студента. Заметим, что если говорится, например, о записи файла «Студенты», то речь всегда идет об области данных файла. На рис. 5 представлен пример срабатывания «моста». Запись файла «Студенты» 000 001 002 003 004 005 …
127 127 Миненок Александр Евгеньевич 7834
Запись файла «Группы» «ДО» 000 001 002 003
К06-221 К06-221 22 121]123]125
Запись файла «Группы» «ПОСЛЕ» 000 001 002 003
К06-221 К06-221 22 121]123]125]127
Рис. 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
DICT Студенты ‘День_рождения’… dictionary-code a attribute-count 5 … input-conversion d Рис. 6. Фрагмент записи описания атрибута «День_рождения» файла «Студенты»
Вводится в анкету студента 10/06/93
Значение поля Item<5> 9293
Рис. 7. Преобразование при вводе на примере даты
Декларируется, что в атрибуте «input conversion» могут использоваться многие коды. Их можно просмотреть при формировании записи описания атрибута средствами UPDATE-процессора, установив курсор на атрибут «input conversion» и нажав «F1». При выполнении лабораторных работ реально используются только три кода: «d», «x» и «call». Код обработки «x» показывает, что декларируемый атрибут вычисляемый, т.е. его приходится вычислять каждый раз при обращении к нему в процессорах UPDATE и ACCESS. При вызове вычисляемого атрибута в процессоре UPDATE просмотреть его можно, но изменить нельзя – курсор не устанавливается на соответствующее значение. Очень часто на одном и том же поле приходится объявлять несколько атрибутов. Для примера рассмотрим поле № 3 записи файла «Группы». В этом поле хранятся номера зачеток студентов, входящих в группу, которые можно преобразовать с помощью вычисляемых атрибутов в другие характеристики студента. Все эти атрибуты в «input conversion» должны иметь код «x». Код обработки «call» используется при определении атрибутов, требующих оригинального ввода или модификации данных средствами UPDATE-процессора. Нестандартное преобразование, представленное вызываемой подпрограммой, инициируется после ввода данных и нажатия клавиши <Enter>, когда подпрограмме передается введенное значение. 11
Заметим, что когда в ADI вызывается подпрограмма, то ей всегда в качестве параметра передается текущее значение поля, в то время как в FDI в качестве параметра передается вся запись в формате динамического массива.
2.2.
Коды обработки в атрибутах «output conversion» и «correlative» ADI
Список кодов обработки для этих атрибутов абсолютно одинаков. Решение вопроса о том, в какой атрибут поместить код, зависит исключительно от порядка выполнения соответствующих процессов. Атрибут «output conversion» записи описания атрибута отвечает за постпроцессорную обработку данных, а атрибут «correlative» – за предпроцессорную. Для UPDATE-процессора это означает, что процессы, инициируемые кодами обработки в атрибуте «output conversion», идут после окончания процессов, инициируемых кодами обработки в атрибуте «correlative». Например, код, вычисляющий средний возраст студенческой группы (в днях), должен быть помещен в атрибут «correlative», а представление полученного числа – в «output conversion». Для ACCESS-процессора ситуация более сложная, рассмотрим ее на примере атрибутов «Возраст» и «Dob» (День_рождения). Рассмотрим сначала атрибут «Возраст». Этот атрибут определяется на поле № 5 файла «Студенты» с помощью следующего алгебраического выражения: a;(d – 5)/”365” где «a;» – код алгебраического выражения; «d» – текущая дата во внутреннем представлении; цифра 5 представляет не саму себя (это не литерал, это номер поля), а значение поля № 5. Литерал ”365” представляет число дней в году. Рассмотрим команду для ACCESS-процессора, выполняющую сортировку файла «Студенты» по возрасту: :sort Студенты by Возраст 12
Если алгебраический код будет помещен в атрибут «correlative», то файл будет отсортирован по возрастанию возраста студента. Преобразование даты рождения в возраст будет производиться до выполнения сортировки. Если алгебраический код будет помещен в атрибут «output conversion», то файл будет отсортирован по убыванию возраста, так как фактическая сортировка будет производиться по дате рождения. Преобразование даты рождения в возраст будет производиться после сортировки. Результаты представлены в прил. 1. Рассмотрим теперь атрибут «Dob». Этот атрибут также определен на поле № 5 файла «Студенты», но в запись его определения включен атрибут «input conversion» со значением «d». Рассмотрим команду для ACCESS-процессора, выполняющую сортировку файла «Студенты» по дням рождения: :sort Студенты by Dob Если код «d2/» (преобразование даты во внешний вид) будет помещен в атрибут «output conversion», то файл будет отсортирован по дате рождения. Если при этом усложнить задачу и ограничить студентов по возрасту: :sort Студенты by Dob if Dob >= 01.01.90 то ACCESS-процессор обработает этот запрос абсолютно правильно, преобразовав константу «01.01.90» во внутреннее представление. Если код «d2/» помещен в атрибут «correlative», то файл будет отсортирован в соответствии с лексикографическим порядком строк формата dd/mm/yy. Очевидно, что последний результат никакого отношения к упорядочению по датам рождения не имеет. Результаты выполнения различных запросов можно посмотреть в прил. 1.
13
2.3.
Особенности работы с кодами в процессорах ACCESS и UPDATE
Обработка атрибутов, определенных над пустыми полями. В СУБД D3 любое поле записи файла может иметь несколько значений. Соответственно, и атрибут, определенный на этом поле, должен иметь ровно такое же количество значений. Это не зависит от вида функционального преобразования, определенного в атрибуте с помощью кодов обработки. Это положение справедливо как для процессора ACCESS, так и для процессора UPDATE, кроме одного случая – пустого поля. Для пустого поля процессор ACCESS всегда дает пустое значение атрибута, а процессор UPDATE – значение атрибута для однозначного поля, принимая пустоту за значение. Отсюда вывод: никогда не определяйте атрибутов с кодами обработки над пустыми полями. Эту ошибку очень часто допускают студенты, раздавая номера полей для вычисляемых атрибутов. Рассмотрим пример (рис. 8, 9, 10), определяя атрибут с кодом обработки «a;s(3 = 3)» в «correlative» над разными полями записи файла «Группы». Это функциональное преобразование подсчитывает количество значений в многозначном поле № 3. Запись файла «Группы» 000 001 002 003
К06-221 К06-221 22 121]123]125]127
// ключ записи (Item_ID) // код группы // код кафедры // номера зачеток студентов
Рис.8. Запись из области данных файла «Группы»
Номера полей: 1 Значения атрибута: 4
3 4 3 2 1
4 4
Рис. 9. Значения атрибута с кодом обработки «a;s(3 = 3)» в «correlative», определенного над разными полями записи файла «Группы», вычисленные в процессоре UPDATE 14
Номера полей: Значения атрибута:
1 4
3 4 3 2 1
4
Рис. 10. Значения атрибута с кодом обработки «a;s(3 = 3)» в «correlative», определенного над разными полями записи файла «Группы», вычисленные в процессоре ACCESS
Вычисленные значения (см. рис. 9, 10) полностью совпадают, кроме поля № 4, которого нет в записи (см. рис. 8). Из рисунков также видно, что принципиально однозначный атрибут «Количество студентов в группе» нельзя определять на многозначном поле. В данном случае поле № 1 – код группы – однозначное; именно на нем получается правильное значение вычисляемого атрибута. Обработка ассоциаций с вычисляемыми атрибутами. На рис. 11 показан экран процессора UPDATE,отрабатывающего команду :u Группы ‘K06-221’ Ngr Dep QtySt Nz Fio Ph Home Группы 'К06-221' size = 176 Группа К06-221 Кафедра 22 В группе 4 студентов: Зачетка Фамилия_Имя Телефон 121 Щукина Анна 8 916 235-34-56 123 Черняева Александра 8 916 333-45-67 125 Буздавина Мария 8 916 375-23-92 127 Миненок Александр 8 903 234-12-34
Место_жител Москва Москва Общежитие Общежитие
Рис. 11. Запись файла «Группы» с ассоциацией вычисляемых атрибутов в процессоре UPDATE
Атрибуты • Nz – Зачетка • Fio – Фамилия_Имя • Ph - Телефон • Home – Место_жительства 15
// // // //
control dependent dependent dependent
определенные на поле № 3, образуют ассоциацию, которая кодируется так, как показано на рис. 12. attribute-name: attribute-count: structure:
Nz 3 c;
Fio 3 d;3
Ph 3 d;3
Home 3 d;3
Рис. 12. Кодировка ассоциации для атрибутов, определяемых на одном и том же поле
Такая кодировка, поддерживаемая процессором UPDATE (см. рис. 11), не поддерживается процессором ACCESS (рис. 13): :list Группы ‘K06-221’ Ngr Dep QtySt Nz Fio Ph Home Группа Кафедра В группе Зачетка
К06-221 22 4 студентов: 121 123 125
127
[405] 1 items listed out of 1 items. Рис. 13. Запись файла «Группы» с ассоциацией вычисляемых атрибутов в процессоре ACCESS
Для процессора ACCESS в подобном случае надо определить дополнительные вычисляемые атрибуты, не связывая их в ассоциацию. В прил. 1 приведены все описания и примеры работы в процессорах ACCESS и UPDATE.
Список рекомендуемой литературы 1. СУБД D3 для пользователей, http://www.infologic.com 2. Roberts J. Calling BASIC from AP Dictionaries. PICKWORD, July/August, 1993. 3. Vaskevitch D., Two Steps Forward, One Step Back, BYTE, May 1992. 16
Приложение 1 Демонстрационная база данных, работающая под управлением СУБД D3, представлена двумя файлами «Студенты» и «Группы». Файл «Студенты» создан командой: :create-file Студенты 1 1 Запись описания файла (FDI) «Студенты» находится в словаре файла «dict Студенты», она определяется командой :ud Студенты DICT Студенты 'Студенты' size = 145 dictionary-code d base 1583 modulo 1 structure retrieval-lock update-lock output-conversion correlative call Проверка ida1 bГруппы;6;3 attribute-type L column-width 10 input-conversion call Home macro Nz Fa Im Ot Dob Ngr Home Ph output-macro Nz ФИО Dob Ngr Home Ph
Записи описания атрибутов (FDI) файла «Студенты» также находятся в словаре файла. Их можно последовательно определять, задав одну команду: :ud Студенты Nz Fa Im Ot Dob Ngr Home Ph В этой последовательности эти атрибуты перечислены в «macro» FDI, т.е. это атрибуты «по умолчанию» для UPDATE процессора macro
Nz Fa Im Ot Dob Ngr Home Ph
17
Запись описания атрибута «Nz» (номер зачетки): DICT Студенты 'Nz' size = 48 dictionary-code a attribute-count 1 substitute-header Зач structure output-conversion correlative attribute-type r column-width 3 input-conversion
Запись описания атрибута «Fa» (фамилия студента): DICT Студенты 'Fa' size = 49 dictionary-code a attribute-count 2 substitute-header Фамилия structure output-conversion correlative attribute-type l column-width 10 input-conversion
Запись описания атрибута «Im» (имя студента): DICT Студенты 'Im' size = 44 dictionary-code a attribute-count 3 substitute-header Имя structure output-conversion correlative attribute-type l column-width 7 input-conversion
Запись описания атрибута «Ot» (отчество студента): DICT Студенты 'Ot' size = 50 dictionary-code a attribute-count 4 substitute-header Отчество 18
structure output-conversion correlative attribute-type column-width input-conversion
l 10
Запись описания атрибута «Dob» (день рождения студента): DICT Студенты 'Dob' size = 55 dictionary-code a attribute-count 5 substitute-header ДеньРо structure output-conversion d0 correlative attribute-type l column-width 7 input-conversion d
Запись описания атрибута «Ngr» (группа студента): DICT Студенты 'Ngr' size = 48 dictionary-code a attribute-count 6 substitute-header Группа structure output-conversion correlative attribute-type l column-width 7 input-conversion
Запись описания атрибута «Home» (место жительства студента): DICT Студенты 'Home' size = 47 dictionary-code a attribute-count 7 substitute-header Живет structure output-conversion correlative attribute-type l column-width 10 input-conversion 19
Запись описания атрибута «Ph» (телефон студента): DICT Студенты 'Ph' size = 68 dictionary-code a attribute-count 8 substitute-header Телефон structure output-conversion ml(# ### ###-##-##) correlative attribute-type l column-width 15 input-conversion
Для ACCESS процессора атрибуты «по умолчанию» задаются в «output-macro» FDI: output-macro
Nz ФИО Dob Ngr Home Ph
Здесь только один новый атрибут «ФИО» (фамилия, имя, отчество студента): DICT Студенты 'ФИО' size = 88 dictionary-code a attribute-count 2 substitute-header Фамилия_ИО structure output-conversion a;2:" ":3(t1,1):".":4(t1,1):"." correlative attribute-type l column-width 15 input-conversion x
Файл «Группы» создан командой: :create-file Группы 1 1 Запись описания файла (FDI) «Группы» находится в словаре файла «dict Группы», она определяется командой :ud Группы DICT Группы 'Группы' size = 116 dictionary-code D attribute-count 6710 substitute-header 1 20
structure output-conversion correlative attribute-type column-width input-conversion macro output-macro
ida1 L 10 Ngr Dep QtySt Nz Fio Ph Home Ngr Dep QtyA NzA FioA PhA HomeA
Записи описания атрибутов (FDI) файла «Группы» также находятся в словаре файла. Их можно последовательно определять, задав одну команду: :ud Группы Ngr Dep QtySt Nz Fio Ph Home Запись описания атрибута «Ngr» (номер группы): DICT Группы 'Ngr' dictionary-code attribute-count substitute-header structure output-conversion correlative attribute-type column-width input-conversion
size = 48 a 1 Группа
l 7
Запись описания атрибута «Dep» (номер кафедры): DICT Группы 'Dep' dictionary-code attribute-count substitute-header structure output-conversion correlative attribute-type column-width input-conversion
size = 49 a 2 Кафедра
r 7
Запись описания вычисляемого атрибута «QtySt» (количество студентов в группе): DICT Группы 'QtySt' size = 78 dictionary-code a 21
attribute-count substitute-header structure output-conversion correlative attribute-type column-width input-conversion
1 В группе a;s(3=3):" студента:" l 8 x
Запись описания атрибута «Nz» (номер зачетки студента, входящего в группу): DICT Группы 'Nz' size = 50 dictionary-code a attribute-count 3 substitute-header Зачетка structure c; output-conversion correlative attribute-type r column-width 7 input-conversion
Запись описания вычисляемого атрибута «Fio» (фамилия и имя студента, входящего в группу): DICT Группы 'Fio' dictionary-code attribute-count substitute-header structure output-conversion correlative attribute-type column-width input-conversion
size = 102 a 3 Фамилия Имя d;3 a; 3(tСтуденты;x;;2) :" ":3(tСтуденты;x;;3) l 20 x
Запись описания вычисляемого атрибута «Ph» (телефон студента, входящего в группу): DICT Группы 'Ph' size = 90 dictionary-code a attribute-count 3 22
substitute-header structure output-conversion correlative attribute-type column-width input-conversion
Телефон d;3 ml(# ### ###-##-##) tСтуденты;x1;;8 l 17 x
Запись описания вычисляемого атрибута «Home» (место жительства студента, входящего в группу): DICT Группы 'Home' size = 81 dictionary-code a attribute-count 3 substitute-header Место жительства structure d;3 output-conversion tСтуденты;x;;7 correlative attribute-type l column-width 16 input-conversion x
Для ACCESS процессора атрибуты «по умолчанию» задаются в «output-macro» FDI: output-macro
Ngr Dep QtyA NzA FioA PhA HomeA
Новые атрибуты помечены буквой «А». По существу они определяются старыми записями описания атрибутов, но для ACCESS процессора существенно снять ассоциативную зависимость с вычисляемых атрибутов, определяемых на одном поле. DICT Группы 'QtyA' size = 62 dictionary-code a attribute-count 1 substitute-header КолСтуд structure output-conversion a;s(3=3) correlative attribute-type r column-width 7 input-conversion x
23
DICT Группы 'NzA' dictionary-code attribute-count substitute-header structure output-conversion correlative attribute-type column-width input-conversion
size = 49 a 3 Зачетка
r 7
DICT Группы 'FioA' size = 139 dictionary-code a attribute-count 3 substitute-header Фамилия И.О. structure output-conversion a; 3(tСтуденты;x;;2): " ":3(tСтуденты;x;;3)(t1,1): ".":3(tСтуденты;x;;4)(t1,1):"." correlative attribute-type l column-width 14 input-conversion x DICT Группы 'PhA' dictionary-code attribute-count substitute-header structure output-conversion correlative attribute-type column-width input-conversion
size = 88 a 3 Телефон ml(# ### ###-##-##) tСтуденты;x1;;8 l 15 x
DICT Группы 'HomeA' size = 79 dictionary-code a attribute-count 3 substitute-header Место жительства structure output-conversion tСтуденты;x;;7 correlative attribute-type l column-width 16 input-conversion x 24
Ввод данных в файл «Студенты» с помощью форм UPDATE процессора осуществляется с помощью команды: :u Студенты Зачетка Фамилия Имя Отчество Родился Группа Живет Телефон
123 Черняева Александра Валентиновна 03/07/90 К06-221 Москва 8 916 333-45-67 8 903 121-56-32
Студенты
'123' size = 94 filed
Физическое распределение данных по полям записи файла «Студенты» можно просмотреть с помощью команды: :li Студенты 123 000 001 002 003 004 005 006 007 008
123 123 Черняева Александра Валентиновна 8220 К06-221 Москва 89163334567]89031215632
// // // // // // // // //
Ключ записи Номер зачетки Фамилия Имя Отчество День рождения Группа Место жительства Телефоны
[405] 1 items listed out of 1 items.
Полный отчет по файлу «Студенты», выполненный средствами ACCESS процессора: :list Студенты id-supp Зач Фамилия_ИО... ДеньРо 121 Щукина А.Б. 02 Aug 123 Черняева А.В. 03 Jul 125 Буздавина М.А. 22 Apr 127 Миненок А.Е. 12 Jun
Группа. Живет... Телефон..... К06-221 Москва 8 916 235-34-56 К06-221 Москва 8 916 333-45-67 8 903 121-56-32 К06-221 Общежитие 8 916 375-23-92 К06-221 Общежитие 8 903 234-12-34
[405] 4 items listed out of 4 items. 25
Запрос по файлу «Студенты», «Кто имеет телефон с кодом 903?»: :list Студенты if Ph = ^903]
Зач Фамилия_ИО... ДеньРо 123 Черняева А.В. 03 Jul 127 Миненок А.Е.
12 Jun
Группа. Живет... Телефон..... К06-221 Москва 8 916 333-45-67 8 903 121-56-32 К06-221 Общежитие 8 903 234-12-34
[405] 2 items listed out of 4 items.
Упорядочить файл «Студенты» по дате рождения – атрибут «Dob» (чтобы увидеть действительный порядок в «outputconversion» код «d0» был заменен на «d2/»): :sort Студенты by Dob Зач 127 125 123
Фамилия_ИО... Миненок А.Е. Буздавина М.А. Черняева А.В.
121 Щукина А.Б.
ДеньРо 12/06/89 22/04/90 03/07/90
Группа. К06-221 К06-221 К06-221
Живет... Общежитие Общежитие Москва
02/08/90 К06-221 Москва
Телефон..... 8 903 234-12-34 8 916 375-23-92 8 916 333-45-67 8 903 121-56-32 8 916 235-34-56
[405] 4 items listed out of 4 items.
Упорядочить файл «Студенты» по дате рождения – атрибут «Dob» (код «d2/» из «output-conversion» перемещен в «correlative»; объясните результат): :sort Студенты by Dob Зач 121 123 127 125
Фамилия_ИО... Щукина А.Б. Черняева А.В. Миненок А.Е. Буздавина М.А.
ДеньРо 02/08/90 03/07/90 12/06/89 22/04/90
Группа. К06-221 К06-221 К06-221 К06-221
Живет... Москва Москва Общежитие Общежитие
[405] 4 items listed out of 4 items.
26
Телефон..... 8 916 235-34-56 8 916 333-45-67 8 903 234-12-34 8 916 375-23-92 8 903 121-56-32
Ввод данных в файл «Группы» с помощью форм UPDATE процессора осуществляется с помощью команды: :u Группы Ngr Dep Группа Кафедра Группы
К06-221 22 'К06-221' size 28 filed.
Данные по студентам, а именно номера зачеток студентов, передаются в файл по мосту. Корректировка данных в файле «Группы» с помощью форм UPDATE процессора осуществляется с помощью команды: :u Группы ‘К06-221’ Группа К06-221 Кафедра 22 В группе 4 студента: Зачетка Фамилия_Имя 121 Щукина Анна 123 Черняева Александра 125 Буздавина Мария 127 Миненок Александр
Телефон 8 916 235-34-56 8 916 333-45-67 8 916 375-23-92 8 903 234-12-34
Место_жител Москва Москва Общежитие Общежитие
Физическое распределение данных по полям записи файла «Группы» можно просмотреть с помощью команды: :li Группы К06-221 000 001 002 003
К06-221 К06-221 22 121]123]125]127
[405] 1 items listed out of 1 items.
Полный отчет по файлу «Группы», выполненный средствами ACCESS процессора: :list Группы id-supp Группа. Кафедра КолСтуд Зачетка Фамилия И.О... К06-221 22 5 121 Щукина А.Б. 123 Черняева А.В. 125 Буздавина М.А. 127 Миненок А.Е. 27
Место_жител Москва Москва Общежитие Общежитие