Лабораторная работа 3

Сортировка и индексирование баз данных

Цели работы:

Краткие теоретические сведения

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

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

Индексирование баз данных

Важнейшим элементом любой СУБД является наличие средств ускоренного поиска данных. Этот механизм обычно реализуется введением так называемых индексных файлов с расширением idх и cdx. Один файл базы данных может быть проиндексирован по нескольким полям и иметь любое число индексов. Эти файлы содержат один элемент, так называемый индексный ключ. Этот ключ позволяет отсортировать записи данных в алфавитном, хронологическом или числовом порядке для поля, по которому выполнено индексирование. Допускается индексирование и по логическим полям.

Различают два типа индексных файлов:

  1. Простой индексный файл имеет расширение файла IDX и содержит один индексный ключ. Существуют также компактные простые индексные файлы, которые благодаря сжатию данных, занимают приблизительно в шесть раз меньше места по сравнению с обычным индексным файлом.
  2. Составной (мультииндексный) файл имеет расширение CDX и может осуществлять управление одновременно несколькими индексными ключами, хранящихся в индексном выражении. Отдельные ключи называются тегами. Каждый тег имеет свое имя.

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

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

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

Задание

  1. Выполните сортировку по одному полю базы данных, содержащей не менее 15 записей. Повторите сортировку для полей, содержащих разные типы данных (числовые, символьные, даты). Просмотрите результат сортировки в новой базе данных. Для символьных полей выполните сортировку с учетом регистра, без учета регистра.
  2. Выполните сортировку по 2–3 полям одновременно (например: по номеру отдела и табельному номеру).
  3. Выполните сортировку с переносом в результирующую базу данных части полей исходной.
  4. Просмотрите сгенерированные команды в окне Команды.
  5. Проиндексируйте базы данных, создав простые индексные файлы. Установите связь между базой данных и индексным файлом, объявив его активным. Выполните просмотр проиндексированной базы данных. Обратите внимание, что записи в исходной базе данных не перенумерованы.
  6. Выполните корректировку исходной базы данных. Убедитесь, что простой индекс не поддерживает упорядочение записей. Выполните переиндексацию базы данных. Проанализируйте результаты.
  7. Просмотрите сгенерированные команды в окне Команды.
  8. Постройте структурированный и обычный мультииндексные файлы, заранее продумав индексное выражение, содержащее в себе 2–3 поля.
  9. Выполните корректировку исходной базы данных. Проанализируйте результат.
  10. Просмотрите сгенерированные команды в окне "Команды".

Технология работы

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

Для того, чтобы рассортировать данные в базе данных, ее сначала нужно открыть в окне Вид. Далее – выбрать команду Базаñ Сортировка. FoxPro откроет диалоговое окно Сортировка, где пользователь определяет, по каким полям и в какой последовательности необходимо рассортировать записи базы данных (рис. 3.1).

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

Рис. 3.1. Диалоговое окно сортировки данных

Отсортированные данные записываются в новую базу данных, имя которой нужно задать, нажав в зоне Результат командную кнопку Сохранить.... Откроется уже знакомое диалоговое окно сохранения файла. В нем необходимо выбрать диск Х:\, директорию FOXPRO, ввести имя файла sort.dbf и нажать кнопку Сохранить.

Процедура сортировки начнется после нажатия на кнопку ОК в диалоговом окне Сортировка. После завершения сортировки откройте в пустой рабочей области окна Вид базу данных sort.dbf и выведите ее на просмотр в табличном режиме.

Индексирование базы данных

Перед индексированием исходную база данных нужно открыть. Далее следует выбрать команду Базаñ Настройка, что приведет к открытию диалогового окна Настройка базы. В зоне Индексы располагаются четыре командных кнопки: Добавить, Изменить, Беспорядок, Удалить – с помощью которых пользователь может работать с индексными файлами открытой базы данных. Справа от кнопок находится область, в которой располагается список открытых индексных файлов данной базы данных.

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

Рис. 3.2. Диалоговое окно открытия индексных файлов

Для создания нового индексного файла нужно выбрать кнопку Создать. В результате чего откроется диалоговое окно для создания индексного файла - Индекс (рис. 3.3).

В диалоговом окне Индекс вначале необходимо выбрать тип файла в области Выходной файл, например, для создания простого индексного файла нужно выбрать опцию Одинарный индекс (IDX). Далее необходимо выбрать диск Х:\, директорию FOXPRO и присвоить имя индексному файлу. Это можно сделать через уже знакомое диалоговое окно сохранения файла, вызвав его с помощью командной кнопки Сохранить как... или просто набрать имя в поле справа от кнопки.

Рис. 3.3. Диалоговое окно создания индексного файла

Вверху слева находится список полей базы данных, с которой в данный момент работает пользователь. Из данного списка нужно выбрать одно поле, по которому пользователь хочет произвести упорядочение записей. Далее нажать командную кнопку Добавить, в результате чего имя поля перенесется в область Ключ индекса со знаком á или â ( упорядочить по возрастанию или по убыванию).

При создании составного или составного структурированного индекса необходимо вначале выбрать соответствующий тип выходного файла, а затем войти через командную кнопку Ключ... в диалоговое окно Конструктор Выражений. В области INDEX ON: составляется индексное выражение в виде суммы полей одного типа или преобразованных в один тип с помощью функций (VAL(), DTOC(), STR(), CTOD()). После того, как составлено выражение, оно проверяется нажатием командной кнопки Проверить и при отсутствии ошибок подтверждается кнопкой ОК. Пользователь возвращается в диалоговое окно Индекс, где для индексного ключа выбирает порядок сортировки по возрастанию или по убыванию, присваивает имя тегу и нажимает командную кнопку Добавить. В результате чего индексное выражение заносится в область Ключ индекса.

Чтобы зафиксировать выбранные установки для данного индекса, нужно нажать в диалоговом окне Индекс командную кнопку ОК. В результате чего пользователь вернется в диалоговое окно Настройка базы, где в области списка индексов появится имя только что созданного индексного файла (рис. 3.4).

Рис. 3.4. Диалоговое окно настройки базы

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

Отчет по работе должен содержать на диске Х:\:

  1. Заполненные данными базы данных по проекту.
  2. Отсортированные базы данных.
  3. Индексные файлы ( *.idx, *.cdx ).

Контрольные вопросы

  1. Объяснить понятия: простой и структурированный индексы.
  2. Назвать различия операций сортировки и индексирования.
  3. Что означает выражение " сделать индекс активным"?
  4. Когда требуется операция переиндексирования баз данных?
  5. Описать правила составления выражения для индексирования по ключу, содержащему 2–3 поля.
  6. Объяснить понятия – тег, индексный ключ.