Создание и установка индексных файлов с помощью команд.

Создать индексный файл можно с помощью команды:

Index on (идентификатор выражения) to <имя ind файла>

TAG <имя тега> [of <cdx-файл>]

FOR (условие)

COMPACT

DESCENDING

UNIQUE

ADDITIVE

NOOPTIMIZE

Индексное выражение – имя поля (или полей), по значениям которых надо строить индекс

При построении сложного индекса имена полей перечисляются через знак «+»

- Если сложный индекс построен по числовым полям, то индекс строится по сумме значений полей.

- Если индекс строится по символьным полям, то индекс строится сначала по значению 1 поля, при повторяющихся значениях 1 поля, по значению второго поля при повторяющемся значении 2 по значению третьего поля и т.д.

Длина идентификатора выражения не должна превышать 254 символа.

TO <idx-файл> указатель имени одноиндексного файла

TAG <имя тега> OF <cdx-файл> указатель имени тега в мультииндексном файле

- По полям разных типов, сначала значения полей приводится к одному типу, как правило символьному, а затем строится индекс.

TO <idx-файл> имя одноиндексного файла

TAG <имя тега> [OF <cdx-файл>] указатель имени тега в мультииндексном файле.

Если используется опция [OF<cdx-файл>], то создаваемый тег помещается в указанный мультииндексный файл, если требуемый мультииндексный файл отсутствует, то будет построен структурный мультииндексный файл.

Если опция [OF <cdx-файл>] опущена, то созданный тег будет помещен в текущий мультииндексный файл.

Ключевые слова:

FOR (условие) устанавливает режим отбора в индекс тех записей таблицы, которые удовлетворяют условию

DESCENDING строит индекс по убыванию. По умолчанию установлено ACCENDING (используется только в мультииндексных файлах) для одноиндексного необходима установка SET COLLATE

UNIQUE строит уникальный индекс (из всех повторяющихся записей в индекс попадает одна).

ADDITIVE вновь создаваемый индексный файл не закрывает открытые к этому времени индексные файлы.

Если опция опущена, то созданный индексный файл становится главным.

NOOPTIMIZE отключает используемые технологии RUSHMORE для ускоренного доступа к данным.

Открыть или установить индексный файл можно только после открытия соответствующей ему таблицы. В противном случае будет выдано сообщение об ошибке.

Команда установки индексного файла:

SET INDEX TO (список индексных файлов)

ORDER <выражение №> <ind-файл>

TAG <> OF <cdx> ASCENDENG

ADDITIVE

Для закрытия всех инд. файлов надо выполнить команду

SET INDEX TO или CLOSE INDEX

Для каждой таблицы одновременно может быть открыто несколько индексов, но текущим (активным) будет один.

По умолчанию принять, что текущим будет тот, который стоит первым в команде SET INDEX TO.

Чтобы сделать текущим любой другой надо дать команду

SET ORDER TO <выражение 1> <idx>

TAG <> OF <> IN <выражение 2> <выражение C>

Значение опций:

<выражение 1> задает текущий индекс по его порядковому номеру в мультииндексном файле.

<idx-файл> делает текущим одноиндексный файл.

TAG <имя тега> OF <cdx> делает текущим по имени тега из указанного мультииндексного файла.

IN <выражение 2> указывает номер рабочей области, в которой находится индексный файл. Опция используется в случае, если таблица открыта в одной рабочей области, а индексный файл в другой.

Текущим индекс можно сделать в приложении в диалоговой панели TABLE DESIGNER, переместив строку описания нужного индекса на первое место.

Перестройка индексных файлов

При внесении изменений в большие таблицы тратится много времени, т.к. при внесении каждого изменения заново перестраиваются все открытые индексные файлы.

Для экономии времени индексные файлы закрывают и вносят изменения в таблицу. Однако в этом случае возникает несоответствие между обновленной таблицей и индексными файлами.

Для устранения указанного несоответствия необходимо заново перестраивать индексные файлы следующим образом:

-открыть все индексные файлы, принадлежащие измененной таблице и подать команду

REINDEX

Команду действует на все индексные файлы открытые в текущей рабочей области.

Переиндексировать можно так же, подав команду из главного меню TABLE → Rebuild Index.

Лекция 8.

Тема:“Управление данными в БД”

План лекции:

1. Сортировка данных

2. Поиск данных

3. Фильтрация данных

Сортировка данных.

Сортировать данные в таблице в FoxPro можно двумя способами:

1. в соответствии с индексом

2. с помощью команды SORT

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

Чтобы посмотреть данные в отсортированном виде нужным нам способом достаточно сделать текущим соответствующий индекс, затем вывести данные на экран.

Если сортировать данные нужно по полю, для которого нет индексного файла, пользуются командой

SORT TO <имя файла> OF <имя поля>

ASCENDING

DISCENDING

For (условие)

FIELDS (список полей)

Опция FIELDS указывает, какие поля поместить во вновь созданный файл.

При использовании этой команды на диске дополнительно сохраняется отсортированный файл. Эта команда используется редко, т.к. дополнительный файл занимает достаточно много места на диске и для его создания необходимо дополнительное время

Поиск данных.

В FoxPro существует две методики поиска:

– метод последовательного перебора

– метод деления пополам

Для каждой методики поиска предусмотрена своя команда.

Первую методику поиска использует команда LOCATE FOR <условие>

В условии поиска пишется имя поля для поиска значения, далее указывается один из логических знаков (<, >, <=, >=, =) и само искомое значение.

Если искомое значение имеет символьный тип, то оно указывается в двойных кавычках. Если искомое значение имеет тип даты, то оно указывается в апострофах. Числовое значение значками не выделяется.

Если поиск закончился успешно, то курсор устанавливается на найденной записи.

Вывести запись на экран можно командой DISPLAY или BROWSE.

Для поиска следующей записи удовлетворяющей этому условию надо выполнить команду CONTINUE.

Если таблица имеет индексный файл по искомому полю, можно воспользоваться вторым методом поиска, для этого необходимо подать команду

SEEK <искомое значение>

или

FIND <искомое значение>

В этих командах не нужно указывать условие, а только значение, которое необходимо найти.

Фильтрация данных.

Если таблица большая, то работать с ней неудобно. Поэтому производят фильтрацию данных, т.е. выборку и предъявление на экран группы записей, отвечающих определенным требованиям.

Существует 2 вида фильтрации:

– ограничение на количество строк

– ограничение на количество полей

Для установки фильтра данных используют команду

SET FILTER TO <выр L>

В опции выражение L указывают имя поля и его значение, по которому надо выполнить фильтрацию.

Для восстановления первоначального вида таблицы команду пишут без опций.

Чтобы вывести не все поля нужно выполнить команду SET FIELDS TO (список полей).

Лекция 9.

Тема:“Создание взаимосвязей”

План лекции:

1. Понятие рабочей области

2. Установление взаимосвязи в приложении с помощью команд

3. Создание связей с помощью меню

4. Работа с данными в связанных таблицах.

Понятие рабочей области.

В современных системах баз данных допускается одновременная работа с несколькими таблицами. При этом каждая таблица помещается в свою рабочую область и между таблицами могут быть установлены взаимосвязи.

Указатели записей во взаимосвязанных таблицах будут двигаться синхронно.

В старшей (родительской) таблице указатель перемещается произвольно, в дочерней таблице указатель перемещается в соответствии с перемещением в старшей.

Если таблица имеет первичный ключ, то она может быть родительской, если имеет внешний ключ, то может быть дочерней. В один и тот же момент одна и та же таблица может быть дочерней к одной таблице и родительской к другой. Допускается подключать к одной старшей таблице несколько младших.

Перед установлением связей надо выполнить следующие условия:

– Все таблицы должны быть открыты, причем каждая в своей области.

– Все таблицы попарно должны иметь общее поле (хотя бы одно)

– Для общего поля должен быть построен индекс.

Каждая таблица вместе со своими индексными файлами открывается в отдельной рабочей области. Рабочие области имеют порядковые номера.

Первые десять рабочих областей имеют однобуквенные имена от A до J.

В FoxPro некоторые команды не могут обрабатывать порядковые имена рабочих областей, поэтому при открытии табличного файла рабочей области можно присваивать псевдоним ALIAS.

Желательно в качестве псевдонима присваивать осмысленное сочетание из 3 -4 букв.

В любой момент времени может быть открыто много рабочих областей, но главной будет одна.

Для назначения текущей рабочей области используют команду

SELECT <номер рабочей области или псевдоним>

Для доступа к полям таблицы следует указывать псевдоним рабочей области, в которой открыта таблица, затем точка и потом имя нужного поля.

Наши рекомендации