Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мет1_FoxPro_2011.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
414.21 Кб
Скачать

4.2. Індексування баз даних.

Індексування БД суттєво прискорює пошук інформації в базі. Як і сортування, індексування забезпечує можливість доступу до записів БД у порядку зростання (спадання) значень ключового поля, але на відміну від сортування не змінює порядок фізичного розміщення записів початкової бази на магнітному диску.

Процес індексування полягає в тому, що для основної БД створюється додатковий індексний файл, записи якого містять одне, так зване, ключове поле. В цьому ключовому полі записуються номера записів, які визначають порядок зчитування даних основної бази.

Головна перевага індексування – майже незалежність часу пошуку від розміру БД.

Один файл БД може бути проіндексований по декілька полям і мати будь-яке число індексів (індексних файлів), яке обмежено тільки дисковою пам’яттю комп’ютера. Індексні файли містять інформацію про розташування записів файлу БД в алфавітному, хронологічному або числовому порядку для тих полів, по яким виконується індексування.

Індексійні файли займають певне місце на диску. Розмір індексного файлу можно порівняти з розміром дискового простору, який займає поле бази даних, но в якому проведено індексування.

У FoxPro можна створювати два типии індексних файлів:

- Звичайний індексний файл. Він має розширення IDX і містить один індексний ключ. Його звуть також одноіндексним файлом.

- Мультііндексний файл з розширенням CDX. Такий файл може зберігати зразу ж декілька індексних виразів і являє собою поєднання декілька простих індексних файлів.

Мультііндексні файли можуть бути двох типів:

- структурний мультііндексний файл з ім'ям, співпадаючим з іменем БД;

- звичайний індексний файл з довільним ім'ям.

Розглянемо створення тільки одноіндексних файлів. Щоб проіндексувати файл треба використати команду:

INDEX ON <вир.> TO < IDX – файл > [FOR < умова >]

<вир.> - індексний ключ вираз. Його довжина може досягати 100 символів для IDX – файлів. Ключ означає ім'я поля, по якому треба упорядкувати файл. Ключ може складатись з декілька полів. Для індексування по декілька символьним полям, значення цих полів з'єднуються за допомогою операції конкатенації (зчеплення), яка позначається знаком + (плюс).

FOR < умова > - ця опція встановлює режим відбору в індекс тільки тих записів бази даних, які відповідають заданій < умові >. Такий діючий як фільтр, індексний файл забезпечує включно швидкий доступ до потрібних даних.

Індексування на відміну від сортування не змінює порядок слідування записів у вихідній базі даних. У результаті індексування створюється додатковий файл з іменем, що задається в опції TO.

Розглянемо приклади.

Упорядкувати базу даних RETING.DBF за зростанням оцінок з вищої математики. Для цього треба створити індексний файл по полю ВМ1. Надамо йому ім'я RETBM1.IDX ( розширення .IDX можна не указувати):

USE RETING

INDEX ON BM1 TO RETBM1.IDX

LIST NZAL, BM1

Ці команди спочатку відкривають базу даних RETING.DBF, а потім створюють індексний файл RETBM1.IDX по ключовому полю BM1 командою INDEX ON BM1 TO RETBM1.IDX.

Індексний файл RETBM1.IDX містить значення ключового поля BM1 активної бази даних, що розташовані за зростанням

Команда LIST NZAL, BM1 виводить записи на екран у відповідності з індексним файлом:

Рис 4.2

Розглянемо приклад індексування бази даних по декільком символьним полям.

Упорядкувати базу даних SPISOK.DBF використовуючи зчеплення (конкатенація) трьох символьних полів PRIZV, NAME, POBAT: PRIZV+NAME+POBAT. Результатом зчеплення є приєднання послідовності символів другого поля до послідовності символів першого поля і потім приєднання до одержаної послідовності символів значення третього поля.. Надамо індексному файлу ім'я SP_PRIZV.IDX:

USE SPISOK

INDEX ON PRIZV+NAME+POBAT TO SP_PRIZV.IDX

LIST NGRUP, PRIZV, NAME, POBAT

Індексний файл містить значення зчеплення PRIZV+NAME+POBAT активної бази даних, що розташовані за зростанням. Команда LIST NGRUP, PRIZV, NAME, POBAT виводить записи у відповідності з індексним файлом:

Р ис 4.3

Як бачимо, використання зчеплення PRIZV+NAME+POBAT надало можливість упорядкувати записи спочатку за прізвищем, при однаковому прізвищі – за іменем, і при однаковому імені – за значенням по батькові.