- •Лабораторная работа №6
- •5.1 Индексация
- •Создание индексов
- •Просмотр индексов с помощью набора команд в командном окне:
- •Вставка/удаление индексов интерактивным способом:
- •Пример использования индексов для ограничения целостности на уровне поля
- •Действия со свободными таблицами
- •5.2 Создание индексов в мультииндексных файлах
- •Создание индексов интерактивным способом Процедура indexes
- •Процедура index_vozm
- •Процедура candidatе
- •Процедура index_detl_proek_poski
- •Создание индексов командным способом Процедура индексации по разным типам данных
- •Процедура Vozm_poshk
- •Процедура Тype_index
- •Процедура dopoln_index
Действия со свободными таблицами
Создание свободной таблицы
1 СПОСОБ: File – New – Table – New file – окно Create – сохранить
2 СПОСОБ: набрать “Create” в командном окне. В результате появится ДО Create.
3 СПОСОБ: набрать в командном окне “Create <имя таблицы>”. В результате появится ДО Table Designer.
Включение свободной таблицы в контейнер.
1 СПОСОБ: В ДО Project Manager на вкладке All, либо на вкладке Data разукрупнить: Data, Databases, <имя контейнера> и для активной строки Tables нажать кнопку Add. В ДО Open выбрать таблицу и нажать Ok.
2 СПОСОБ: Если Ваш контейнер уже открыт, то в меню Database нужно выбрать команду Add Table. В ДО Open выбрать таблицу и нажать Ok. Ваша таблица будет добавлена в контейнер.
Исключение таблицы из контейнера.
1 СПОСОБ: в ДО Project Manager разукрупнить компоненты: Data, Databases, <имя вашего контейнера>, Tables. Выберите нужную таблицу и нажмите кнопку Remove.
2 СПОСОБ: если Ваш контейнер открыт, то:
выберите нужную таблицу
Database – Remove.
5.2 Создание индексов в мультииндексных файлах
Следует напомнить о типах индексов в мультииндексных файлах, приведенных в табл.5.1.
Таблица 5.1 Типы индексов в мультииндексных файлах
Primary |
Первичный ключ. ТБД может иметь только один первичный индекс,который позволяет вводить только уникальные значения поля. |
Candidatе |
Позволяет создавать несколько индексов с уникальными значениями для одной и той же ТБД. |
Regular |
(простой) Индекс может быть создан для любых значений поля. Таблица может иметь несколько индексов такого типа. |
Unique |
Уникальный индекс, который позволяет обрабатывать не совпадающие значения полей и обрабатывать одно значение из нескольких повторений. В версиях VFP (7.0, 8.0, 9.0) данный тип индекса не создается, но его можно иcпользовать из предыдущих версий VFP (3.0, 5.0). |
Для дальнейшей работы нам понадобится создать индексы. Описание создания индексов для таблиц Detl, Detl_n, Poshk_k, Poski_n, Proek представлено в табл.5.2, табл.5.3, табл.5.5, табл.5.7 и табл.5.8 соответственно. Описание способов интерактивного создания индексов в мультииндексных файлах для таблиц Poshk и Poski представлено в табл.5.4 и табл.5.6 соответственно.
В этих таблицах заполняются следующие колонки:
- Order Name - наименование индекса;
- Type - тип индекса;
- Expression - сюда вводится поле таблицы, для которого создается индекс;
- Filter - указывается ограничение (фильтр) по полю таблицы, заданного в колонке Expression, при выводе записей на экран;
- Collate – (по умолчанию стоит значение Machine) позволяет сортировать (упорядочивать) данные в таблице.
Таблица 5.2 Detl
Order Name |
Type |
Expression |
Filter |
Collate |
nomd_i |
Primary |
nomd |
|
|
Таблица 5.3 Detl_n
Order Name |
Type |
Expression |
Filter |
Collate |
Nomd_i |
Primary |
nomd |
|
|
Таблица 5.4 Poshk
Order Name |
Type |
Expression |
Filter |
Collate |
nomp_i |
Primary |
nomp |
|
|
STAT_I |
Regular |
stat |
|
|
STAT_IL |
Regular |
stat |
stat>10 |
|
GF_I |
Regular |
gord+famp |
|
|
GF_In |
Regular |
gord |
|
|
GF_In1 |
Regular |
famp+gord |
|
|
В таблице Poshk для 5-го и 6-го индексов теперь не используется тип индекса Unique из версий, предшествующих версии VFP 7.0. Он заменен на тип Regular.
Таблица 5.5 Poshk_k
Order Name |
Type |
Expression |
Filter |
Collate |
Nomp_i |
Primary |
nomp |
|
|
Таблица 5.6 Poski
Order Name |
Type |
Expression |
Filter |
Collate |
POSKI_I |
Regular |
nomp+nomd+nomr+DTOC(data) |
|
|
Таблица 5.7 Poski_n
Order Name |
Type |
Expression |
Filter |
Collate |
POSKI_I |
Regular |
nomp |
|
|
POSKI_D |
Regular |
nomd |
|
|
Таблица 5.8 Proek
Order Name |
Type |
Expression |
Filter |
Collate |
nomr_i |
Primary |
nomr |
|
|
Создадим два дополнительных числовых поля tel и fax в таблице poshk_n размерностью в 9 знаков, типом данных Character, и маской ввода ###-##-## и введем в них данные.
Правила ввода данных в эти поля: в конкретном поле нажать клавишу Ноme для установки курсора в начальной левой позиции поля и вводить 7 цифр подряд произвольно без дефиса (например, 1111111 для номера 111-11-11). Введем произвольные данные в поля tel и fax таким образом, чтобы они в каждом поле были записаны не по возрастанию.
Для этих полей создадим индексы на основании описания, представленного в табл.5.9.
Таблица 5.9 Poshk_n
Order Name |
Type |
Expression |
Filter |
Collate |
TEL_I |
Candidatе |
tel |
|
|
FAX_I |
Candidatе |
fax |
|
|
В таблице poshk_k добавляем еще два новых строковых поля firstname(ИМЯ) и lastname(ОТЧЕСТВО) размерностью 15 символов.
На предыдущих лабораторных работах мы узнали, как создавать процедуры. Приведем еще несколько примеров процедур для работы с таблицами, для которых созданы индексы.
Напомним, что для открытия мультииндексного файла таблицы, созданного интерактивным способом, в окне Сommand или в тексте процедуры пишется команда по следующему синтаксису:
Use <путь>\<имя ТБД>.dbf order <имя индексного файла>
Расширение .dbf указывать не обязательно.