Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Индексирование баз данных в СУБД Fox Pro

Читайте также:
  1. P3.1.2.3 Проверка закона Кулона - Регистрация и анализ данных с помощью CASSY
  2. а будет мне позволено отметить, что сопряженное со многими трудностями описание стран и народов, подданных Его Величества, сделано обстоятельно и со всем старанием.
  3. А также информационного обеспечения по системе Кодирования и формату данных
  4. А.2 Приложение данных
  5. адание 4. Исправьте схему данных.
  6. адание 5. Создайте формы для ввода данных.
  7. ак проектируются базы данных сейчас

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

Если файл проиндексирован, команды (DISPLAY, EDIT, BROWSE, SKIP, REPLACE), связанные с движением в базе данных, перемещают указатель записей в соответствии с индексом, а не с физическим порядком расположения записей. Так, команды

GO TOP и GO BOTTOM

устанавливают указатель записей не на первую (номер 1) и последнюю физические запись, а на начальную и конечную записи индекса соответственно.

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

Аппарат индексирования является важнейшим инструментом любой реляционной СУБД. И хотя практически все действия над данными могут быть осуществлены и без участия индексов, совершенно немыслимо их игнорирование при создании реальных информационных систем.

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

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

В FoxPro можно создать два типа индексных файлов:

Обычный индексный файл. Он имеет расширение имени IDX и содержит один индексный ключ. Его можно также назвать одноиндексным файлом.

Мультииндексный файл с расширением имени CDX. Такой файл может хранить сразу несколько индексных выражений и является по существу соединением нескольких простых индексных файлов. Каждый отдельный индекс в нем будем словом "тег", взятым непосредственно из технической документации (TAG - этикетка).

Каждый тег имеет свое имя. Мультииндексные файлы могут быть двух видов:

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

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

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

• INDEX ON <выр> ТО <IDХ-файл>/ТАG <имя тега> [OF <СDХ-файл>] [FOR <условие>] [DESCENDING] [UNIQUE] [ADDITIVE]

Опции команды:

<выр> - индексный ключ-выражение. Его длина может достигать

100 символов для IDX-файлов и 240 для CDX-файлов. Чаще всего ключ это имя поля, по которому нужно* упорядочить файл. Однако, ключ может быть и составным - из нескольких полей. Он может быть и функцией полей и переменных.

ТО <IDХ-файл> - дает имя одноиндексному файлу.

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

Если в команде присутствует фраза OF <CDX-файл>, то мультииндексный файл получит указанное имя. Если нет, то будет создан структурный мультииндексный файл с именем, совпадающим с именем базы данных. Команда может использоваться как для создания нового мультииндексного файла, так и для дополнения уже существующего CDX-файла новым тегом.

FOR <условие> - эта опция является важным расширением команды индексирования.

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

CDX-файлов. Для IDX-файлов индексирование всегда осуществляется по возрастанию, однако параметр DESCENDING можно включить в команды открытия индексов любого типа, независимо от того, какой закон был указан в команде индексирования. По умолчанию индексирование" выполняется по возрастанию.

UNIQUE - означает, что, если в базе данных встречаются записи с одинаковым значением ключа, все такие записи, кроме первой, игнорируются (не включаются в индекс). Этим процессом можно управлять также с помощью команды SET UNIQUE TO.

ADDITIVE - вновь создаваемые индексные файлы не закроют уже открытые к этому моменту. По умолчанию вновь создаваемые индексы закрывают все ранее открытые индексы для текущей базы данных.

 

Пусть открыта база KADR.DBF. Ниже приведены три команды создания индексных файлов по полю FAM. В первом случае создается одноиндексный файл KADR_FAM.IDX, во втором -мультииндексный файл _KADR.CDX с тегом FAM, в третьем структурный мультииндексный файл KADR.CDX с тегом FAM.

INDEX ON Fam TO kadrfam.idx INDEX ON fam TAG fam OF _kadr.cdx INDEX ON fam TAG fam

Расширение имен индексных файлов можно не указывать. Здесь они приведены только для наглядности. Рассмотрим несколько примеров индексирования. Пример. Пусть мы хотим упорядочить базу KADR в порядке возрастания табельных номеров. Тогда необходимо создать индексный файл по полю TAB. Назовем его KADRTAB.IDX.

USE kadr

INDEX ON tab TO kadrtab

LIST tab, fam

Record # TAB FAM

3 6 КУЛАКОВА М.И.

1 13 СИДОРОВ П.С.

7 54 ЯКОВЛЕВ А. И.

2 98 ПОТАПОВ Д.П.

4 234 ПОПОВ А.А.

6 468 МИРОНОВ Р.И.

5 890 РОМАНОВА М.С.

Как видно, команда LIST показала записи именно в желаемом, а не в фактическом порядке. Файл базы KADR.DBF никакому изменению не подвергся, но всеми перемещениями указателя записей управляет теперь индексный файл K.ADRTAB.IDX.

Пример. Рассмотрим включение FOR-условия в команду индексирования. Пусть требуется создать индексный файл K.ADRPOL.IDX, содержащий ссылки только на те записи базы KADR.DBF, которые соответствуют всем мужчинам (ро1='М'), причем упорядоченные в алфавитном порядке фамилий.

USE kadr

INDEX ON fam TO kadrpol FOR pol='M'

LIST FAM, POL

Record # FAM POL

 

6 МИРОНОВ Р.И. М

4 ПОПОВ А.А. М

2 ПОТАПОВ Д.П. М

1 СИДОРОВ П.С. М

7 ЯКОВЛЕВ А.И. М

Видим, что содержание и порядок предъявления записей из базы KADR.DBF отвечают желаемым.

Если порядок предъявления фамилий безразличен и. по ним не предполагается поиск, ключевое поле (в данном случае FAM) можно опустить, заменив его пробелом в команде индексирования

INDEX ON ' 'TO kadrpol FOR pol='M' COMPACT

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

Если индексный файл был уже создан, его нужно открыть при внесении новых записей или редактировании старых (если затрагиваются индексные поля) и, конечно, если предполагается индексный поиск.

Индексные файлы могут быть открыты совместно с открытием своей базы данных командой:

• USE <DBFName> [IN <область>] [ALIAS <псевдоним>]

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

Команда SET INDEX TO без параметра закрывает все индексные файлы, кроме структурного, для текущей базы. Такое же действие осуществляет команда

CLOSE INDEX


Дата добавления: 2015-08-02; просмотров: 174 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
В некоторых коммерческих системах индексные файлы организованы в виде инвертированных списков, которые используются для доступа по вторичному ключу.| Ускоренный поиск

mybiblioteka.su - 2015-2024 год. (0.011 сек.)