Основы современных компьютерных технологий

         

Индексирование таблиц


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

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

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

В Visual FoxPro имеются различные варианты индексных файлов, в том числе и для поддержки предыдущих версий FoxPro. Будем использовать структурный индексный файл, который эффективен и прост в применении. Структурный индексный файл обеспечивает реализацию всех индексов одной таблицы и имеет имя, совпадающее с именем самой таблицы, и расширение cdx. Структурные индексные файлы открываются и закрываются одновременно с таблицами, что упрощает работу с ними.

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

260

В Visual FoxPro тип индексов задается при их создании с помощью Конструктора таблиц. Рассмотрим процедуру создания индекса. В диалоговом окне Table Designer (конструктор таблиц) выберем вкладку Indexes (индексы) (рис. 21.3).

Рис. 21.3. Вкладка Indexes


В поле Name (имя) задаем имя тега (индекса). Слева от имени индекса располагается переключатель, задающий направление упорядочения значений индексного выражения (по возрастанию или убыванию значений тега).

В поле Туре (тип) выберем из списка подходящий тип для устанавливаемого гега (табл. 21.3).

Поле Expression (выражение) позволяет ввести индексное выражение. В простейшем случае индексное выражение может состоять из одного поля. В более сложных случаях - это совокупность полей или выражение, включающее поля, переменные и функции как стандартные, так и пользовательские. Для формирования индексного выражения можно привлечь Конструктор выражений, вызываемый нажатием кнопки справа от поля ввода.

Поле Filter (фильтр) позволяет определить для индекса фильтр, служащий для ограничения формируемых значений индекса. Результат выражения, используемого в фильтре должен иметь логический тип.

Пример. Создание индекса, являющегося первичным ключом таблицы.

Рассмотрим формирование первичного ключа для таблицы T_ZAGR. Первичный ключ здесь является составным и представляет собой выражение FIO+ Predm+STR(Gruppa). В подобных выражениях все компоненты должны быть одного типа. Поэтому следует использовать

261



Таблица 21.3

Типы индексов (тегов)

Тип тега Описание
Regular Значение индексного выражения записывается для каждой записи таблицы. При наличии одного и того же значения для нескольких записей в индексном файле будет указатель на каждую из них. При просмотре таблицы такие записи появляются в порядке их ввода.
Unique Значение индексного выражения записывается только для первой из повторяющихся записей и только на нее в индексном файле есть указатель. При просмотре таблицы видна только одна (первая) из записей с одинаковым значением индексного выражения.
Candidate Создается уникальный индекс, не содержащий полей с пустыми значениями. Он является кандидатом на роль первичного ключа, но не является таковым, так как в таблице может быть только один первичный ключ.
Primary Один из индексов, удовлетворяющий требованиям индекса типа Candidate, может быть выбран в качестве первичного (Primary) ключа. Используется для связывания таблиц и определения условий целостности данных.
<


/p> стандартную функцию STR(), преобразующую числовые значения в символьные. Для создания индекса выполним следующие действия.

  • Откроем окно Конструктора таблиц для таблицы T_ZAGR. Для этого в окне Конструктора БД установим курсор на таблицу, щелчком правой кнопкой мыши вызовем всплывающее меню и выполним команду Modify (модифицировать).


  • В диалоговом окне Конструктора таблиц выберем вкладку Indexes (индексы).


  • В поле Name (имя) открывшегося диалогового окна введем имя индекса i_zagr.


  • В списке возможных типов индекса в поле Туре (тип) выберем Primary.


  • В поле Expression (выражение) введем выражение для индекса i_zagr.


  • Установим переключатель Order (порядок) в положение по возрастанию (рис. 21.3).


  • Нажмем ОК.


  • Аналогично можно проиндексировать остальные таблицы БД Bdu (табл. 21.4).

    Таблица 21.4

    Индексные выражения для индексов БД Bdu

    Таблица Имя тега Индексное выражение
    T_ZAGR i_zagr FIO+ Predm-i-STR(Gruppa)
    T_PREP i_prep FIO
    T_STAG i_stag Stag
    T_DOLGN i_dolgn Dolgn
    В остальных таблицах можно использовать простые индексные выражения, состоящие из одного поля.

    262

    260 :: 261 :: 262 :: Содержание


    Содержание раздела