227.71K
Category: informaticsinformatics

Индексирование

1.

Индексирование

2.

• Индексы в Foxpro - это отличное
средство поиска данных.
• Индексы предназначены также для
создания первичных ключей.
• Индекс – это не просто список
индексных полей, а индексное
выражение, при формировании
которого используются наименования
полей таблицы.

3.

Виды индексных файлов
• Автономный индекс – содержит
одиночный индексный элемент и не
зависит от других.
• Для создания используется команда:
Index on <выражение> tо <имя индекса>
• Для таблицы можно создать любое
количество автономных индексов, и
каждый из них будет храниться в отдельном
файле с расширением .idx.

4.

• Пример:
use table1
index on kod to index1
index on fio to index2
• В результате будут созданы два индексных
файла - index1.idx и index2.idx.

5.

Недостатки в использовании:
• При открытии таблицы нужно подключать
все автономные индексы, иначе возникают
проблемы – при модификации данных
неподключенные индексы не обновляются.
• Кроме того имена индексных файлов
обычно не несут информации о том, к
какой таблице они относятся. Поэтому
могут быть потеряны.

6.

• Более удобен в использовании составной
индекс, который может содержать в одном
файле с расширением .cdx несколько
индексных определений.
• Для создания используется команда:
Index on <выражение> tag <имя индекса>
• При создании индексного файла ему
присваивается такое же имя, что и имя
таблицы.

7.

• Пример:
use table1
index on kod tag index1
index on fio tag index2 addi
• Будет создан файл table1.cdx.
• Такой индексный файл подключается к
таблице автоматически при открытии
таблицы.
• Обновление всех индексных определений
происходит автоматически.
• Мы будем использовать только составные
индексы.

8.

Типы индексов в зависимости от
ключевого выражения
1. Простой индекс - строится по одному
полю.
2. Сложный индекс - строится по
нескольким полям или выражениям
от полей.

9.

Пусть таблица содержит данные:
tab_n
fio
otdel
data_r
pol oklad
1003
Семенов
Сбыта
1955
М
13000
1329
Волошина
Рекламы
1969
Ж
12500
987
Бричкин
Доставки
1954
М
12000
1445
Калашникова
Доставки
1979
Ж
10500

10.

Проиндексируем таблицу по
табельному номеру сотрудника:
tab_n
fio
otdel
data_r
pol
oklad
987
Бричкин
Доставки
1954
М
12000
1003
Семенов
Сбыта
1955
М
13000
1329
Волошина
Рекламы
1969
Ж
12500
1445
Калашникова Доставки
1979
Ж
10500

11.

Индексация по отделу и фамилии
сотрудника:
tab_n
fio
otdel
data_r
pol oklad
987
Бричкин
Доставки 1954
М
12000
1445
Калашникова
Доставки 1979
Ж
10500
1329
Волошина
Рекламы
1969
Ж
12500
1003
Семенов
Сбыта
1955
М
13000

12.

Виды индексов Visual FoxPro
Вид
индекса
Описание
Значение индексного выражения может
повторяться. Если несколько записей имеют
Regular одинаковое значение индексного выражения, то
каждое хранится отдельно и содержит ссылку на
связанную с ней запись.
Хранятся только неповторяющиеся значения
индексного выражения. Если несколько записей
Unique содержат одинаковое значение индексного
выражения, то будет храниться ссылка только на
первую из записей с одинаковым значением. Таблица
может иметь несколько таких индексов.

13.

Уникальный индекс, который не содержит
полей с пустыми значениями. Этот индекс
Candidate обладает всеми качествами первичного ключа и не
является им только по той причине, что таблица не
может содержать более одного первичного ключа
Primary
Уникальный индекс, который используется
для связи таблиц и определения условий
целостности данных. Поля, входящие в
первичный ключ не должны иметь пустые значения.
Таблица может иметь только один первичный ключ.

14.

Создание индексов

15.

1 способ - Создание индекса с помощью
конструктора таблиц
• Для этого используется вкладка Indexes
дизайнера таблиц.
1. В столбце Order определяют сортировку
по возрастанию или по убыванию
2. В столбце Name вводят имя индекса
3. В столбце Type выбирают тип индекса
4. В столбце Expression вводят
индексируемое выражение

16.

17.

5. В столбце Filter определяют выражение
фильтра
6. В столбце Collate определяют
последовательность сопоставления для
индексного тэга

18.

2 способ - Программный способ
Index on <выражение> tag <имя индекса>
Например:
Index on tab_n tag s1
Index on otdel+fio tag s2 addi
Для второго и всех последующих индексов
при создании добавляется слово addi
(добавить к имеющемуся тэгу)

19.

• Оба индекса будут сохранены в одном
файле с расширением .cdx.
• Если имя индексного файла не указано, то
автоматически имя будет такое же, как имя
самой таблицы.
Table1.dbf – имя таблицы
Table1.cdx – имя индексного файла

20.

Особенности построения
сложных индексов

21.

• В качестве индексного выражения может
выступать любая комбинация полей.
• Но нужно помнить, что поля, входящие в
ключевое выражение должны иметь
одинаковый тип или должны быть
приведены к одинаковому типу. Обычно
приводят к символьному типу.
• Для создания сложного индексного
выражения в конструкторе таблиц на
вкладке Indexes нажать кнопку […] рядом с
полем Expression.

22.

23.

• В результате будет запущен построитель
выражений, оснащенный множеством
операций.
Область
построения
выражения
Встроенные
функции
Foxpro
Список полей
Таблица
Переменные
памяти и
системные
переменные

24.

• Для создания выражений мы используем
разнообразные функции, назначение
которых нужно знать.
• Пример: дана таблица tovar

25.

• Структура таблицы:

26.

• Построить индекс по полям sklad и fio
• Построить индекс по полям sklad и dat_post
• Построить индекс по полям sklad и kol

27.

• Построить индекс по полям sklad, fio и naim
• Построить индекс по полям priz и dat_post
нельзя, так как нет функций, приводящих их
к одному типу. При сохранении выйдет
ошибка:

28.

• Функция str(x) – переводит число x в строку x.
• Функция dtoc(d) – переводит дату d в строку
d.
English     Русский Rules