SORTAREA SI INDEXAREA TABELELOR DE DATE TEORIE SI EXEMPLE Sortarea tabelelor de date Definitie Operatia de sortare a unei tabele inseamna rearanjarea inregistrarilor tabelei conform unui.
Download ReportTranscript SORTAREA SI INDEXAREA TABELELOR DE DATE TEORIE SI EXEMPLE Sortarea tabelelor de date Definitie Operatia de sortare a unei tabele inseamna rearanjarea inregistrarilor tabelei conform unui.
SORTAREA SI INDEXAREA TABELELOR DE DATE
TEORIE SI EXEMPLE
Sortarea tabelelor de date
Definitie
Operatia de sortare a unei tabele inseamna rearanjarea inregistrarilor tabelei conform unui criteriu, informatia trecandu-se intr-o noua baza.
In multe situatii este necesar ca informatia din tabelele de date sa fie sortata.
In FoxPro exista doua modalitati de aranjare intr-o ordine a inregistrarilor tabelei de date, pe baza unui criteriu: 1.
2.
Aranjarea fizica a inregistrarilor, operatie care corespunde cu sortarea tabelei; Aranjarea logica a inregistrarilor, indexarea tabelei de date.
Comanda de sortare este: SORT TO
[,
] In urma comenzii se sorteaza tabela de date activa in tabela
Exemplu:
[/A | /D | ] [/C]
precizeaza modalitatea de sortare dupa campul respectiv; A ascendent; D descendent; C pentru campurile de tip caracter (pentru a nu se face diferenta la sortare intre litere mari si litere mici).
ASCENDING | DESCENDING
ASCENDING | DESCENDING – se utilizeaza in lipsa clauzelor /A /D /C, cand se doreste sortarea crescatoare/ descrescatoare in raport cu toate campurile precizate. Implicit sortarea se considera crescatoare dupa campurile specificate;
-
FIELDS
FIELDS
Exemplu:
Fie tabela STOC.dbf:
Cod
100 120 110 125 125
Denumire
Otel inox Otel carbon Fier beton Fi 10 Fier beton Fi 15 Fier beton Fi 15
UM
T T Kg Kg Kg use stoc sort to stoc_s on cod, pret /D use stoc_s list
Cantitate
1,24 2,35 120 200 250
Pret
1000000 950000 2000 2300 2500
In urma sortarii se obtine tabelul:
Cod 100 110 120 125 125 Denumire Otel inox Fier beton Fi 10 Otel carbon Fier beton Fi 15 Fier beton Fi 15 UM T Kg T Kg Kg Cantitate 1,24 120 2,35 250 200 Pret 1000000 2000 950000 2500 2300
OBSERVATII:
sortarea tabelelor de date ocupa spatiu de memorie si timp pentru aranjarea fizica a informatiei; sortarea duplica datele; sortarea se face numai dupa campuri ale tabelei de date nu se pot folosi expresii cu campuri ale tabelei.
Evitarea acestor neajunsuri se face folosind
Indexarea tabelelor de date
Definitie
Indexarea unei tabele de date presupune crearea unui fisier nou, numit
fisier index
, in care se memoreaza ordinea inregistrarilor din tabela de date.
Daca dorim sa indexam tabela
stoc.dbf
dupa COD se va forma fisierul index din tabelul urmator: Nr. inregistrare 1 3 2 4 5 Cheie (COD) 100 110 120 125 125
Fisierul index creat este dependent de tabela de date. Exista doua tipuri de fisiere index:
Fisiere index simple,
au extensia .IDX si contin o singura cheie (criteriu) de ordonare.
au extensia .CDX, pot contine mai multe chei (criterii) de ordonare numite
etichete
; la un moment dat numai o eticheta poate fi activa.
Fisierele index compuse sunt de doua tipuri:
Fisiere index structurale
– fisierele index asociate tabelei au acelasi nume cu tabela, se inchid si se deschid odata cu tabela si orice actualizare a tabelei atrage dupa sine si actualizarea fisierelor index.
Fisiere index nestructurale
– au nume diferit de cel al tabelei de date si sunt gestionate prin comenzi explicite.
Cu fisierele index se pot face urmatoarele operatii:
Creare index;
Deschidere;
Inchidere;
Activare; Actualizare; Stergere .
Crearea unui
fisier index
simplu se face cu comanda:
INDEX ON <
<
[
- specifica criteriul dupa care se face ordonarea;
- reprezinta numele fisierului index;
UNIQUE
- se utilizeaza pentru a specifica prima dintre inregistrarile care au aceeasi cheie de indexare;
FOR
-selecteaza inregistrarile tabelei care formeaza indexul;
ASCENDING/DESCENDING
- indica sensul ordonarii;
Crearea unui
fisier index compus
se face cu comanda:
[
TAG
- precizeaza eticheta din fisierul compus asociata criteriului de ordonare dat de
OF
- reprezinta numele fisierului compus nestructural
FOR
-selecteaza inregistrarile tabelei care formeaza indexul;
UNIQUE
- se utilizeaza pentru a specifica prima dintre inregistrarile care au aceeasi cheie de indexare;
DESCENDING/ASCENDING - indica sensul ordonarii;
Activarea unui fisier index
Se poate face in mai multe moduri: La deschiderea tabelei de date pentru
fisiere index simplu
se foloseste comanda: 1 Pentru fisierele index compus comanda este:
Activarea fisierului index simplu sau a unei etichete cu comanda:
Activarea fisierelor index se mai poate face si prin precizarea ordinii lor cu comanda:
USE
Exemplu:
USE stoc INDEX ON cod TO stoc_c INDEX ON cod TO stoc_d USE USE stoc INDEX stoc_c, stoc_d -indexul activ este stoc_c; -comanda este echivalenta cu: USE stoc INDEX stoc_c, stoc_d ORDER 1 USE stoc INDEX stoc_c, stoc_d ORDER 2 - indexul activ este stoc_d.
USE
Exemplu:
USE stoc INDEX ON cod TAG stoc_c - se creeaza fisierul structural stoc cu eticheta (reperul) stoc_c INDEX ON cod TAG stoc_c OF stoc_x - se creeaza fisierul nestructural stoc_x ce contine eticheta stoc_c USE stoc INDEX stoc_x ORDER TAG stoc_c - eticheta activa este stoc_c; USE stoc INDEX stoc_x ORDER TAG stoc_c - se activeaza eticheta stoc_c a fisierului index nestructural stoc_x; USE stoc INDEX stoc, stoc_x ORDER TAG stoc_c OF stoc_x - se activeaza eticheta stoc_c a lui stoc_x.
SET INDEX TO
SET INDEX TO stoc, stoc_x ORDER TAG stoc_c OF stoc_x
SET ORDER TO
Actualizarea fisierelor index se face automat pentru fisierele index sau etichetele active, iar actualizarea celorlalte fisiere se poate face cu comanda:
REINDEX
Exemplu:
USE stoc INDEX stoc_c, stoc_d REINDEX
Stergerea fisierelor index
DELETE FILE
Exemplu:
DELETE FILE stoc_c.idx
DELETE TAG stoc_c DELETE TAG stoc_c OF stoc_x
Conversii intre tipurile de fisiere index
Transformarea indexului simplu in eticheta a unui fisier index compus: COPY INDEXES
Transformarea inversa se face cu comanda: COPY TAG
Exemplu:
Use stoc Index on pret to stoc_p Index on cantitate to stoc_can Copy indexes stoc_p, stoc_can - se face transformarea in stoc.cdx; Copy indexes ALL TO stoc_x - se face copierea in fisierul nestructural stoc_x; Index on denumire Tag stoc_d Copy tag stoc_d to stoc_d - componenta stoc_d din stoc.cdx devine: Fisier index simplu stoc_d.idx.