Треба зробити програмний файл

Упорядкування записів БД

 

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

У FoxPro є дві можливості упорядкувати записи в БД:

- Сортування БД;

- Індексування.

Сортування БД

Процесс упорядкування записів БД за зростанням або спаданням значення деякого поля називається сортуванням.

Поле бази даних, по якому здійснюється сортування, називається ключовим.

У результаті сортування створюється новий файл БД, в якому записи перезаписуються із активного файлу в порядку зростання (спадання) значень ключового поля.

Сортування БД може виконуватись по декільком ключам.

Сортування дозволяє скоротити час пошуку інформації в БД по заданому значенню ключового поля. Формат команди:

 

SORT TO < ім’я нової БД > [ASCENDING/DESCENDING]

ON <поле 1> [/A][/D][,<поле 2>[/A][/D][/C]…]

[<область дії>] [FOR <умова>] [WHILE <умoва>]

[FIELDS <список полів>]

Команда створює з активної БД новий файл, в якому записи розташовані за зростанням (/А) або спаданням (/D) значень одного або декількох ключових полів(<поле 1>, <поле 2>, …)

Якщо ключ /D не задано, за замовчуванням виконується сортування за зростанням значень ключового поля.

Ключ /C використовується, коли при сортуванні не відрізняються великі і маленькі літери.

Треба пам'ятати, що сортування символьних даних з кирилицею виконується тільки в русіфікованих версіях. Ключ /C допускається поєднувати з іншими ключами, наприклад, /DC.

Порядок записів полів після слова ON є суттєвим і визначається їх пріоритетом. Для організації складного сортування допускається водночас використовувати до 10 полів.

Опції ASCENDING/DESCENDING означають що сортування буде виконуватись за зростанням/спаданням (за замовчуванням діє ASCENDING). Використання опції DESCENDING надає можливість поміняти значення ключів /A для кожного з полів на протилежне.

Новий файл утворюється з усіх або вказаних полів (якщо вказано опцію FIELDS <список полів>) всіх записів із <області дії>, що задовольняють умови, задані опціями FOR або WHILE.

Для подальшого використання відсортованого файлу треба не забути відкрити його командою USE.

Приклад.

Зробити сортування файлу даних BONET.DBF по ключовим полям: VAR за спаданням і VIR – за алфавітом в командному вікні

 

Треба зробити програмний файл

CLEAR &&Очищення екрану

USE STUD

SORT TO BONET_SORT ON VAR /D VIR FIELDS VIR,VAR

USE BONET_SORT &&Відкриття нової відсортованої БД

GOTOP &&Перехід на початок відсортованого файлу

BROWS NOEDTT &&Перегляд відсортованого файлу

 

!! ! ! Вставка результату

Рис. 5.1

Треба пам'ятати, що:

- створення відсортованих файлів даних по окремим ключовим полям приводить до значних витрат дискового простору;

- команда сортування для баз значних розмірів виконується повільно.

На практиці слід віддавати перевагу індексуванню баз даних, тому що індексація враховує перелічені вище недоліки.

 

Індексування БД

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Приклад1.

Упорядкувати базу даних BONET.DBF в порядку