- •Лабораторная работа №6
- •5.1 Индексация
- •Создание индексов
- •Просмотр индексов с помощью набора команд в командном окне:
- •Вставка/удаление индексов интерактивным способом:
- •Пример использования индексов для ограничения целостности на уровне поля
- •Действия со свободными таблицами
- •5.2 Создание индексов в мультииндексных файлах
- •Создание индексов интерактивным способом Процедура indexes
- •Процедура index_vozm
- •Процедура candidatе
- •Процедура index_detl_proek_poski
- •Создание индексов командным способом Процедура индексации по разным типам данных
- •Процедура Vozm_poshk
- •Процедура Тype_index
- •Процедура dopoln_index
Процедура Vozm_poshk
Vozm_poshk.prg
* Возможности поставщиков
CLEAR && очистить экран
CLOSE ALL && закрыть все файлы
USE poski && использовать ТБД poski
COPY fields nomp,nomd to vozm && копировать поля в новый файл vozm
? "Неиндексированный файл"
USE vozm && использовать vozm
DISPLAY all && отобразить все записи
WAIT
* Создание индексного файла vozm_p по полям nomp и nomd
INDEX ON nomp+nomd TO vozm_p COMPACT && индексация по nomp, а внутри по nomd
* Создание индексного файла vozm_d по полям nomd и nomp
INDEX ON nomd+nomp TO vozm_d COMPACT && индексация по nomd, а внутри по nomp
? "Индекс nomp+nomd"
USE vozm INDEX vozm_p && открыть vozm с индексом vozm_p
DISPLAY all && отбразить все записи
WAIT
? "Индекс nomd+nomp"
USE vozm INDEX vozm_d && открать vozm с индексом vozm_d
DISPLAY all && отобразить все записи
WAIT
RETURN && перевод из командного режима СУБД в свободный
Также можно приводить индексы разных типов к одному при помощи функций преобразования.
В этой программе на дисплей сначала выводится результат индексации таблиц по номеру поставщика, а внутри него по количеству. Затем ниже выводится результат индексации сначала по количеству, а затем по номеру поставщика.
Процедура Тype_index
Тype_index.prg
* Приведение индексов разных типов к одному типу
CLEAR && очистить экран
CLOSE ALL && закрыть все файлы
USE poski && использовать ТБД poski
* Создание индексного файла ppnk по полям nomp и kolw.
* Команда STR(kolw,4) для преобразования численного выражения в символьную строку
INDEX ON nomp+STR(kolw,4) TO ppnk compact
DISPLAY all && отобразить все записи
WAIT
* Создание индексного файла pnk по полям kolw и nomp.
* Команда VAL(substr(nomp,2,1)) для преобразования символьного выражения в численное.
* Команда substr(nomp,2,1) выделяет, начиная со второго символа, один строковый символ в значениях поля nomp
INDEX ON kolw+VAL(substr(nomp,2,1)) TO pnk compact
DISPLAY all
WAIT
Процедура dopoln_index
dopoln_index.prg
*Дополнительные индексы*
CLEAR
CLOSE tables all
? "1.Создание простого индекса по полю famp"
USE poshk
INDEX ON famp TO Poshk_f compact
list
WAIT
clear
? "2.Создание простого индекса по полю gord"
INDEX ON gord TO poshk_g compact
LIST
WAIT
clear
? "3.Создание составного индекса по простому выражению"
USE poshk exclusive
INDEX ON famp TAG tagfamp
SET ORDER TO tagfamp
LIST
WAIT
clear
? "4.Создание составного индекса по составному выражению"
Use poski exclusive
INDEX ON nomp+nomd+nomr+DTOC(data)Tag Poski_in
DISPLAY all
WAIT
CLEAR
? "5.Создание составного индекса с преобразованием типов данных:"
? "Мы преобразуем numeric в character"
USE poski EXCLUSIVE
INDEX ON nomp+STR(kolw,4) TAG Poski_nk
DISPLAY all
WAIT
CLEAR
? "6.Создание составного индекса с преобразованием типов данных:"
? "Мы преобразуем character в numeric"
USE poski EXCLUSIVE
INDEX ON kolw+VAL(nomp) TAG Poski_kn
DISPLAY all
WAIT
CLEAR
RETURN
