Лабораторна робота №4 (4г)
Тема роботи: Індексування файлів.
Мета роботи: одержати навички створення індексних файлів.
Теоретичні відомості
Одна з основних переваг використання комп'ютера для збереження інформації полягає в тому, що з його допомогою всі записи ( у відмінності від записів на папері) можна швидко і точно розташовувати у визначеному порядку. Це дозволяє легко узагальнювати й аналізувати інформацію. Навіть при невеликому обсязі діловодства комп'ютеризація дає відчутні результати.
У FOXPRO можна застосовувати два способи упорядкування файлів: сортування й індексування.
Сортування файлів.
При сортуванні файлу записи упорядковуються у відповідності зі значеннями якого-небудь конкретного поля, а потім копіюються в цій зміненій послідовності. Така обробка даних може зажадати значного часу. У процесі сортування створюється абсолютно новий файл.
Команда сортування в загальної формі:
-
Sort on ім'я_полю to ім'я_нового_файлу
Як ключ може бути використане будь-яке поле. Після завершення сортування видається повідомлення про кількість оброблених записів і завершення сортування.
Наприклад, для БД «Витрати»
№ |
DATA |
WHOM |
WHAT |
SUMMA |
1 |
15.09.99 |
Меблевий магазин |
письмовий стіл |
220.57 |
2 |
25.09.99 |
Електрокомпанії |
Включення електроен. |
45.87 |
3 |
27.09.99 |
Телекомсервіс |
Встановлення телефону |
870.67 |
4 |
29.09.99 |
Друкарні |
Бланки |
156.89 |
можна зробити сортування по полю WHAT:
SORT ON WHAT TO SORTRASH
У цьому випадку після завантаження файлу SORTRASH операція LIST видасть наступну таблицю
БД «SORTRASH»
№ |
DATA |
WHOM |
WHAT |
SUMMA |
|
||
1 |
29.09.99 |
Друкарні |
Бланки |
156.89 |
|
||
2 |
25.09.99 |
Електрокомпанії |
Включення електроен. |
45.87 |
|
||
3 |
27.09.99 |
Телекомсервіс |
Встановлення телефону |
870.67 |
|
870.67 |
|
4 |
15.09.99 |
Меблевий магазин |
письмовий стіл |
220.57 |
|
Можна відсортований файл видалити командою
-
DELETE FILE SORTRASH
або командою
-
ERASE SORTRASH
Сортування можливе не тільки по зростанню, але і по убуванню - додати у команду параметр DISCENDING:
SORT ON WHAT TO SORTRASH1 DISCENDING
Просте додавання записів у відсортований файл порушує порядок сортування записів. Для оптимізації роботи варто використовувати не сортування, а індексування.
Фільтрація даних.
FOXPRO дозволяє накладати фільтри на дані. Після накладення фільтра доступними стають тільки зазначені в умові команди дані.
SET FILTER TO [<умова>] дозволяє установити умови для усіх без винятку команд обробки даних.
Зняти обмеження можна командою
SET FILTER TO
(без параметрів)
Установлення фільтра починає діяти після команди SET , якщо зроблено хоч яке-небудь переміщення покажчика записів у файлі бази даних.
Приклад:
use kadr
set filter to fio= ’ІВ’
go top
list
Після виконання перерахованих команд доступними стають ті записи, у яких прізвище починається з Ів.
Цей блок команд аналогічний такому:
use kadr
list for fio=’Ів’
Послідовний пошук
При роботі з базою даних основною операцією є пошук запису, який має деяке значення. У СУКБД FOXPRO є команда, яка виконує послідовний перегляд файлу до необхідного запису. Після перебування такого запису робота команди припиняється і видається повідомлення про номер знайденого запису. Якщо такий запис не один, для подальшого пошуку використовують команду CONTINUE.
-
LOCATE FOR<умова>[<границі>][WHILE<умова>]
Наприклад:
USE Kadr
LOCATE FOR pol='ж'
CONTINUE
Корисно також використовувати стандартну функцію LOOKUP:
-
LOOKUP (<поле1>,<вир>,<поле2>)- шукає перше входження шуканого вираження в зазначеному полі 2 активної бази даних і повертає значення полю 1 з тієї ж бази
Наприклад:
USE Kadr
? LOOKUP (tab, ‘П', fam ), fam, RECNO()
98 ПОТАПОВ Д.П. 2
де <поле1>= tab =98, <вир>= П,<поле2>= fam= ПОТАПОВ Д.П., RECNO()=2
Послідовний пошук неефективний, тому краще використовувати швидкий пошук, в основі якого лежить двійковий пошук.