- •Лабораторная работа №6
- •5.1 Индексация
- •Создание индексов
- •Просмотр индексов с помощью набора команд в командном окне:
- •Вставка/удаление индексов интерактивным способом:
- •Пример использования индексов для ограничения целостности на уровне поля
- •Действия со свободными таблицами
- •5.2 Создание индексов в мультииндексных файлах
- •Создание индексов интерактивным способом Процедура indexes
- •Процедура index_vozm
- •Процедура candidatе
- •Процедура index_detl_proek_poski
- •Создание индексов командным способом Процедура индексации по разным типам данных
- •Процедура Vozm_poshk
- •Процедура Тype_index
- •Процедура dopoln_index
Создание индексов интерактивным способом Процедура indexes
В этой процедуре производится работа с индексами различных типов, созданных интерактивным способом в таблице poshk. Процедура сохраняется под именем indexes.
*Файл indexes.prg
*Просмотр индексов
CLEAR
CLOSE TABLES ALL
? "Выполнение индексированного файла poshk"
? "Индексирование по первичному ключу - коду поставщика"
USE poshk ORDER nomp_i && Использование ТБД poshk с индексом nomp_i
LIST
WAIT
set ORDER TO 2 && Перейти ко второму индексу
CLEAR
? "Второй индекс. Индексирование по полю stat"
LIST
WAIT
set ORDER to 3 && Перейти к третьему индексу
CLEAR
? "Индексирование по полю stat с фильтром>10"
LIST
WAIT
set ORDER to 4
CLEAR
? "Индексирование по полям gord+famp"
LIST
WAIT
set ORDER to 5
CLEAR
? "Индексирование по полю gord"
LIST
WAIT
set ORDER to 6
CLEAR
? "Индексирование по полям famp+gord "
LIST
WAIT
CLEAR
? "Закрытие индексов"
WAIT
SET ORDER TO
CLEAR
RETURN
Рассмотрим подробнее результат индексации таблицы по каждому из созданных индексов для этой таблицы.
Индекс nomp_i (Primary) по полю nomp. В результате выполнения индексации по первичному ключу, заданному для номера поставщика, на экран выведется таблица (если вы работаете командным способом) или данные (если вы запускаете процедуру на выполнение), в которой записи отсортированы по номеру поставщика.
Индекс STAT_I (Regular) по полю stat. В результате индексации по второму индексу на экран выведется таблица или данные, где записи будут отсортированы по статусу поставщика.
Индекс STAT_IL (Regular) по полю stat, но с заданным фильтром stat>10.
В результате индексации по третьему индексу на экран выведется таблица или данные, где записи будут отсортированы по статусу поставщика, значение которого (статуса) превышает 10.
Индекс GF_I (Regular) составной по полям gord+famp.
В результате индексации по четвертому индексу на экран выведется таблица или данные, где записи будут отсортированы по городу поставщика, а затем по фамилии поставщика, причем подряд будут идти две записи с городом «КИЕВ».
Индекс GF_In (Regular) по полю gord.
В результате индексации по пятому индексу на экран выведутся таблица или данные, где все записи названий городов будут отсортированы в алфавитном порядке, причем подряд будут идти две записи с городом «КИЕВ».
Индекс GF_In1 (Regular) составной по полям famp+gord.
В результате индексации по шестому индексу на экран выведется таблица или данные, где записи будут отсортированы по фамилии поставщика, а затем внутри списка фамилий - по городу.
Для наглядности используем окно Command, куда необходимо ввести следующий текст:
USE D:\BAZA\Poshk.dbf
Set order to 1 * Что означает: передача управления главному индексу
Эту же команду можно заменить командой с указанием имени индекса, вместо его номера:
Set order to nomp_i
BROWSE
Set order to 2
BROWSE
Set order to 3
BROWSE
Set order to 4
BROWSE
Set order to 5
BROWSE
Set order to 6
BROWSE
Далее меняем фамилию «ПЕТРОВ» в городе «МОСКВА» на фамилию «МЕДВЕДЕВ».
REINDEX
Снова индексируем по шестому индексу.
Set order to 6
BROWSE
Мы видим, что порядок записей поменялся. Для восстановления прежнего состояния файла заменяем фамилию «МЕДВЕДЕВ» в городе «МОСКВА» на фамилию «ПЕТРОВ».