![](/user_photo/2706_HbeT2.jpg)
- •Лабораторная работа №6
- •5.1 Индексация
- •Создание индексов
- •Просмотр индексов с помощью набора команд в командном окне:
- •Вставка/удаление индексов интерактивным способом:
- •Пример использования индексов для ограничения целостности на уровне поля
- •Действия со свободными таблицами
- •5.2 Создание индексов в мультииндексных файлах
- •Создание индексов интерактивным способом Процедура indexes
- •Процедура index_vozm
- •Процедура candidatе
- •Процедура index_detl_proek_poski
- •Создание индексов командным способом Процедура индексации по разным типам данных
- •Процедура Vozm_poshk
- •Процедура Тype_index
- •Процедура dopoln_index
Процедура index_vozm
В качестве примера открытия мультииндексных файлов, созданных командным способом, рассмотрим процедуру index_vozm.prg. В этой процедуре производится индексирование таблицы vozm в первом случае сначала по номеру поставщика, потом по номеру детали, во втором случае - сначала по номеру детали, затем по номеру поставщика.
index_vozm.prg
* Индексирование файла vozm
CLEAR
USE vozm && использовать vozm
* Индексирование по коду поставщика, а внутри по коду детали
INDEX ON nomp + nomd TO vozm_p COMPACT
* Индексирование по коду детали, а внутри по коду поставщика
INDEX ON nomd + nomp TO vozm_d COMPACT
* Отображение результата индексирования по полям nomp+nomd
USE vozm INDEX vozm_p && открытие индекса vozm_p
CLEAR && очистка экрана
LIST && отображение записей
WAIT
* Отображение результата индексирования по полям nomd+nomp
USE vozm INDEX vozm_d &&Открытие индекса vozm_d
CLEAR && очистка экрана
LIST && отображение записей
WAIT
RETURN && перевод из командного режима СУБД в свободный
Процедура candidatе
В этой процедуре производится индексация полей tel и fax таблицы poshk_k с типом индекса candidatе.
candidatе.prg
*ключ-кандидат
CLOSE TABLES ALL
CLEAR
? "Выполнение индексированного файла poshk_k"
? "Индексирование по первичному ключу-кандидату - телефону"
USE poshk_k order tel_i
LIST
WAIT
CLEAR
? "Выполнение индексированного файла poshk_k"
? "Индексирование по первичному ключу-кандидату - факсу"
SET ORDER TO 2 && use poshk_k order fax_i
LIST
WAIT
CLEAR
SET ORDER TO && закрыть все индексные файлы
RETURN
Процедура index_detl_proek_poski
index_detl_proek_poski.prg
*Просмотр индексов
CLOSE TABLES ALL
CLEAR
? "Выполнение индексированного файла detl"
? "Индексирование по первичному ключу - коду детали"
USE detl ORDER nomd_i
DISPLAY All
WAIT
CLEAR
? "Выполнение индексированного файла proek"
? "Индексирование по первичному ключу-коду разработчика проекта"
USE proek ORDER nomr_i
DISPLAY All
WAIT
CLEAR
? "Выполнение индексированного файла poski"
? "Индексирование по составному ключу"
USE poski ORDER poski_i
DISPLAY All
WAIT
CLEAR
? "Закрытие индексов"
SET ORDER TO
RETURN
Создание индексов командным способом Процедура индексации по разным типам данных
Можно индексировать таблицы, создавая индексы через команды, вводимые в процедуре. Обратите внимание на то, что индексация произошла по коду поставщика, а уже после - по количеству.
Nomp_kolw.prg
* Индексирование по коду поставщика и внутри - по количеству
CLOSE ALL && закрыть все файлы
USE poski && использовать ТБД poski
* Создание индекса с именем poski_kol по полям nomp и kolw.
* Команда STR(kolw,4) для перевода числового выражения в символьное
INDEX ON nomp+STR(kolw,4) TO poski_kol
BROWSE && просмотр
В следующей процедуре на дисплей отображаются все записи из таблицы vozm. Далее производится индексация сначала по номеру поставщика, затем - по номеру детали, результат индексации выводится на дисплей. Далее производится индексация сначала по номеру детали, затем - по номеру поставщика, результат индексации выводится на дисплей.