Sortarea,
ordonarea, indexarea unei baze de date
Una dintre fazele cele mai importante
ale lucrului cu o baza de date este cea de sortare si ordonare
dupa un anumit criteriu. Aceasta faza poate usura foarte
mult lucru cu o baza de date in vederea gasirii unei informatii
sau grup de informatii. Lucrul este cu atat mai necesar deoarece
incarcarea datelor intr-o baza de date se face in mare
masura aleatoriu fara a se face o ordonare a actelor.
Sortarea unei tabele
se face cu ajutorul comenzii SORT. Ea se poate realiza la nivelul unui
camp sau la nivel de tabel. Pentru sortarea la nivelul unui camp
instructiunile de comanda care sunt necesare sunt:
USE client
SORT ON Nume_cl /A TO client1
La nivel de camp se observa ca dupa apelarea tabelei care se
doreste a se sorta se trece la introducerea liniei de comanda care
are mai multe caracteristici. Prima este ca dupa instructiunea
tipica SORT ON se va introduce numele campului care se va supune
procesului de sortare urmat de unul din cele doua moduri de sortare a
campului:
-
crescator comanda
simbolizata cu /A,
-
descrescator comanda simbolizata cu /D.
Urmeaza introducerea numelui nou al
tabelei in care se va trece rezultatul tabelei sortate. Rezulta deci
ca avem un avantaj ca prin folosirea acestei comenzi se gasesc
in calculator ambele tabele. Stergerea tabelului rezultat dupa
sortare se poate face cu seria de comenzi:
DELETE FILE client1
PACK
Tabelul initial
Sortarea
tabelului dupa mai multe campuri se face prin selectarea
succesiva a ordini dupa care sa se realizeze sortarea in modul
dorit. Liniile de comanda sunt:
USE client
SORT ON Nume_cl /A, Nr_f /A
TO client1
In aceasta situatie tabelul
fiind sortat ascendent dupa numele clientului si pentru acelasi
client in ordinea crescatoare dupa numarul de factura.
Figura 11.21 Sortarea tabelului client
dupa campul Nume_cl cu comanda SORT
Un
alt mod de sortare este cel dupa o anumita conditie. Liniile de
comanda folosite sunt:
USE client
SORT ON Nume_cl /A TO client1 FOR gigi
O alta
modalitate de ordonare a unei tabele se poate realiza cu ajutorul comenzii INDEX
care este o comanda de indexare a unui tabel. Pentru un tabel cu
dimensiuni mari comanda de sortare dureaza mult motiv pentru care se
recomanda sortarea prin indexare. Un alt dezavantaj al sortarii este
ca dupa orice introducere de date este necesara o noua
sortare care implica continuu ca spatiul folosit sa creasca
dublu fata de dimensiunile initiale. Comanda de indexare se
poate folosi numai pentru un camp. O modalitate eficienta de lucru este
si aceea de a defini la inceputul lucrului cu tabele la faza de creare a
tabelei o cheie de indexare pe criteriul dorit in acest moment apare un
fisier suplimentar cu extensia .cdx si acelasi
nume cu cel initial. Acest lucru face ca baza de date sa fie
indexata automat la introducerea datelor. Pentru buna functionare a
comenzii INDEX este necesara
setarea comenzii SET TALK la valoarea ON. Linia de comanda
este urmatoarea:
USE client
INDEX ON Nume_cl TO client1.idx
O alta
modalitate este cea de indexare dupa mai multe campuri a carei linii
de comanda sunt prezentate mai jos:
USE
client
INDEX
ON Nume_cl +Localit TO client1.idx UNIQUE
Indexarea se face
dupa nume client si localitate simultan fara a admite
inregistrari duble. Deoarece comanda nu stie sa lucreze in
paralel cu variabile text si numerice pentru a transforma o variabila
numerica in una text se va folosi instructiunea STR(Nr_f, 7).
O alta
modalitate este indexarea dupa un anumit criteriu dat prin intermediul
comenzii FOR. De exemplu se va face selectarea dupa criteriul Localiat
Timisoara. Liniile de comanda sunt:
USE
client
INDEX ON Nume_cl FOR Localit=Timisoara TO client1.idx
?? NDX(1) && Afiseaza primul fisier indexat
? RECOUNT() && Afiseaza
numarul de inregistrari indexate
CLOSE ALL
Se observa
aparitia fata de variantele anterioare a trei linii
suplimentare. Prima asa dupa cum se observa si in partea
dreapta din mesajul text de ajutor afiseaza numele primului
fisier indexat, operatie necesara pentru a determina apoi
numarul de inregistrari indexate in linia a patra din setul de instructiuni.
In final sunt inchise toate tabelele deschise in linia de instructiune
cinci.
OBS.
-
Indexarea dupa campuri
numerice multiple poate sa nu ofere acelasi rezultat dorit,
-
Probleme pot sa apara
si daca se uita sa se activeze un anumit tabel index si
se folosesc instructiuni care lucreaza numai cu tabelele index
active.