Similar presentations:
Индексирование
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.