Ход работы:
Задание 1. Создать два одиночных индекса (idx-файлы) для таблицы Stuff (список должностей) и комплексный индекс (cdx-файл) для таблицы Persons (список сотрудников).
Последовательность действий для этого приведена ниже.
1. Смените текущую папку на созданную вами ранее папку.
2. Выполните в окне Command команду USE Stuff
3. Индексировать будем по полю ID. Выполните в окне Command команду
INDEX ON ID TO ID_Stuff.
4. Убедитесь, что записи в таблице расположены в соответствии с возрастанием значений поля ID и в папке образовался файл Id_stuff.idx. Если в окне с таблицей оперативно не обновился порядок строк, щелкните мышью в любом месте этого окна, чтобы оно стало активным.
5. Создадим еще один индекс по полю SUM, но при этом поставим на записи фильтр по суммам. Пусть в индекс попадут только записи с суммами, которые меньше 20000
(SUM < 20000.00). Выполните в окне Command команду
INDEX ON SUM TO SU_Stuff FOR SUM < 20000.00
6. Убедитесь, что записи в таблице расположены в соответствии с возрастанием значений поля SUM, записей с суммами больше или равными 20000 в таблице нет, в папке образовался файл SU_Stuff.idx. Если в окне с таблицей оперативно не обновился порядок строк, щелкните мышью в любом месте этого окна, чтобы оно стало активным.
7. Откроем в другой рабочей области таблицу Persons. Для этого перейдем в свободную (не занятую открытой таблицей) рабочую область, используя команду
SELECT 0
Откроем таблицу Persons с помощью команды
USE Persons
Если Visual FoxPro выдаст ошибку, значит, таблица в текущей папке не найдена, следует закрыть окно с ошибкой щелчком мышью по кнопке ОК и выполнить команду USE ?. В результате откроется окно для выбора файла. Найдите в папке файл Persons.dbf и щелкните по нему, а затем по кнопке ОК. При успешном открытии таблицы никакого сообщения не появится. Проверить, что таблица открылась, нужно, выполнив команду BROWSE. Окно с именем таблицы в заголовке появится на экране. 8. Один индекс создадим по полю NAME, а другой по полю ID. Для этого сначала выполним в окне Command команду
INDEX ON NAME TAG Names OF Persons
Здесь NAME - имя поля, по которому строится индекс, Names - имя индекса в cdx-файле, Persons - имя cdx-файла.
9. Убедитесь, что записи в таблице расположились в соответствии с возрастанием значений поля NAME и в папке образовался файл Persons.cdx. Если в окне с таблицей оперативно не обновился порядок строк, щелкните мышью в любом месте этого окна, чтобы оно стало активным.
10. Создадим индекс по полю ID. Для этого выполним в окне Command команду
INDEX ON ID TAG Ids OF Persons
Здесь ID - имя поля, по которому строится индекс, Ids - имя индекса в cdx-файле, Persons - имя cdx-файла.
11. Убедитесь, что записи в таблице расположились в соответствии с возрастанием значений поля ID. Если в окне с таблицей оперативно не обновился порядок строк, щелкните мышью в любом месте этого окна, чтобы оно стало активным.
12. Закроем обе таблицы, используя команду
CLOSE TABLES
Если вы выполнили успешно все шаги, перечисленные выше, у вас получатся две проиндексированные таблицы. В папке появятся файлы Id_stuff.idx, SU_Stuff.idx и Persons.cdx, содержащие индексы.
Задание 2. Опробуем использование индексов.
Выполните следующие действия.
1. Выполните в окне Command команду
USE Stuff INDEX Id_stuff
При успешном открытии таблицы никакого сообщения не появится. Проверить, что таблица открылась, нужно, выполнив команду BROWSE. Окно с именем таблицы в заголовке появится на экране.
3. Убедитесь, что записи отсортированы в порядке увеличения значения поля ID.
4. Закройте таблицу, используя команду
USE
5. Выполните в окне Command команду
USE Stuff INDEX SU_Stuff
6. Убедитесь, что записи в таблице расположены в соответствии с возрастанием значений поля SUM и записей с суммами больше или равными 20000 в таблице нет.
7. В другой рабочей области откроем таблицу Persons. Для этого перейдем в свободную (не занятую открытой таблицей) рабочую область, используя команду
SELECT 0
Откроем таблицу Persons посредством команды
USE Persons ORDER TAG Names
8. Убедитесь, что записи в таблице расположились в соответствии с возрастанием значений поля NAME.
9. Попробуем расположить записи в соответствии с другим индексом, хранящимся в этом же индексном cdx-файле. Для этого выполните команду
SET ORDER TO TAG Ids
10. Убедитесь, что записи в таблице расположились в соответствии с возрастанием значений поля ID. Если в окне с таблицей оперативно не обновился порядок строк, щелкните мышью в любом месте этого окна, чтобы оно стало активным. Закроем обе таблицы, используя команду
CLOSE TABLES
Задание 3. Создать первичный ключ для таблицы Persons с помощью конструктора таблиц.
Так как первичный ключ таблицы должен быть уникальным, для его создания можно использовать поле tabnum, содержащее табельные номера сотрудников. Выполните следующие действия.
Откройте окно конструктора таблиц для таблицы Persons. Для этого в окне проекта установите курсор на изменяемую таблицу и нажмите кнопку Modify (изменить) конструктора проекта.
В окне Table Designer (конструктор таблиц) перейдите на вкладку Indexes (индексы),
в поле Name (Имя) введите имя индекса TabPersons.
Из списка возможных типов индекса в поле Type выберите значение Primary (первичный).
Перейдите в поле Expression (Выражение) и введите выражение для индекса tabnum.
Установите переключатель столбца Order (Упорядочение) в значение По возрастанию.
Для завершения создания индекса нажмите кнопку OK.
Задание 4. Создать составной индекс для таблицы Persons с помощью конструктора таблиц.
Рассмотрим создание составного индекса для таблицы Persons, который будет упорядочивать данные в таблице по ФИО (name) и адресу (address). Выполните следующие действия.
Откройте окно Table Designer (конструктор таблиц) и перейдите на вкладку Indexes (индексы), в поле Name (Имя) введите имя индекса NAPersons.
Из списка возможных типов индекса в поле Type выберите значение Regular (обычный).
Для создания индекса нажмите кнопку построителя выражений для поля Expression (Выражение). В окне построителя создайте следующее выражение:
Name + address
Проверьте синтаксис выражения, воспользовавшись кнопкой Verify (Проверить) и закройте окно построителя выражений. Для завершения создания индекса нажмите кнопку OK.
