Реферат: Методические рекомендации и задания для лабораторных работ по дисциплине Вычислительные системы
Важнейшим элементом любой системы управления базами данных является наличие средств ускоренного поиска данных, поскольку поиск - самая распространенная операция в системах обработки данных. Этот механизм реализуется введением т.н. индексных файлов. Они имеют расширение IDX.
Индексирование БД вводится для ускорения операции поиска данных. Для этой же цели можно применять сортировку БД по нужному поисковому ключу, но каждая сортировка создает новую БД размером с исходную. Реальные БД имеют большой размер и многократная их сортировка оказывается технически нереализуемой.
Индексные файлы занимают принципиально меньший объем, поэтому для больших БД необходима именно индексация, поскольку в неупорядоченной базе поиск длится долго, а сортировка невозможна из-за ограничений в дисковой памяти. Если файл проиндексирован, команды DISPLAY,BROWSE,SKIP,REPLACE и все другие, связанные с движением в файле базы данных, перемещают указатель записей в соответствии с индексом, а не с физическим порядком расположения записей. В частности, команды GO TOP и GO BOTTOM устанавливают указатель записей не на первую и последнюю физические записи, а на начальную и конечную записи индексного файла соответственно. Один файл БД может быть проиндексирован по нескольким полям и иметь любое число индексов. Такие файлы не содержат сами записи, а содержат только указание на порядок их расположения в файле БД для того поля, по которому осуществлена индексация. Например, при индексации поля авторов в алфавитном порядке в индексном файле будут содержаться записи такого типа 1 - 3 справа номера записей в файле БД в поле AVT,
2 - 1 слева номера записей в индексном файле
3 - 5 для поля AVT и аналогично для других полей.
Размер индексного файла сравним с объемом дискового пространства, занимаемого полем базы данных, по которому было произведено индексирование. Т.о. если база проиндексирована по всем полям, суммарный размер всех индексных файлов будет близок к размеру всей БД. При наличии многих индексов замедляются операции ввода и редактирования БД, т.к. при дополнении БД новой записью автоматически должны быть отредактированы все индексные файлы.
Индексирование выполняется следующей командой
INDEX ON <выражение> TO <IDX-файл> [COMPACT] [ADDITIVE]
Предпоследняя опция создает компактный индексный файл, поэтому ею всегда надо пользоваться, это ускоряет поиск. Последняя опция обеспечивает сохранность уже созданных индексных файлов при открытии новых. По умолчанию вновь создаваемые индексы закрывают ранее открытые индексы для текущей БД.
Индексированная база из текущей создается :
USE BD1
INDEX ON AVT TO BD2 - из базы BD1 создана индексированная по фамилиям база BD2 с расширением .IDX
Можно сделать ограниченную индексацию
INDEX ON AVT TO BD3 FOR STEL=112
После создания индексированной базой можно пользоваться след. образом: при открытии базы:
USE BD1 INDEX BD2 или
USE BD1
SET INDEX TO BD2
При корректировке записей БД индексированные файлы автоматически изменяются, поэтому при активизации БД нужно указывать все имеющиеся уже созданные индексированные файлы:
SET INDEX TO BD2,BD3 и т.д. сколько есть файлов .IDX
Отменаиндексации: SET INDEX TO или SET ORDER TO 0
Активным является только первый из указанных индексов. По нему индексируется база. Переключиться на другой индекс можно командой SET ORDER TO N - где N порядковый номер индексированного файла в последнем списке (SET INDEX TO ...). Можно сделать иначе - заново задать команду SET INDEX TO ... где нужный индекс должен быть у первого в списке индексного файла.
В индексированном файле быстрый поиск нужной записи может осуществляться командой
SEEK 'Попов' для строкового поля
SEEK 25 для числового
SEEK D где D=ctod('22.03.94') для даты
После каждой команды SEEK нужно дать команду DISPLAY для индикации результатов поиска. Пример.
USE BD
INDEX ON AVT TO BD1
INDEX ON VOZVR TO BD2