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 Report

Transcript 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 ON

[/A | /D | ] [/C]

[,

[/A | /D | ] [/C] ] [ ASCENDING | DESCENDING ] [< domeniu >] [

FIELDS

] 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;

- - precizeaza ce inregistrari se sorteaza;

FIELDS

 FIELDS - precizeaza ce campuri va contine tabela sortata.

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

Tabela sortata :

Tabela indexata:

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.

Indexarea tabelelor de date

Exemplu

Definitie

Indexarea unei tabele de date presupune crearea unui fisier nou, numit

fisier index

, in care se memoreaza ordinea inregistrarilor din tabela de date.

Operatii

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

Tabela

stoc.

dbf

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.

Comanda

Fisiere index compuse ,

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.

Comanda

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 <

expresie_cheie > TO

<

fisier_index

> [ FOR

] [ UNIQUE ]

[

DESCENDING/ASCENDING ]

- 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:

INDEX ON TAG [ OF ] [ FOR

] [ UNIQUE ]

[

DESCENDING/ASCENDING ]

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:

2

 Activarea fisierului index simplu sau a unei etichete cu comanda:

3

 Activarea fisierelor index se mai poate face si prin precizarea ordinii lor cu comanda:

4

USE INDEX [ORDER ] Clauza ORDER (daca este prezenta) precizeaza care fisier din este activ. Exemplu:

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 INDEX ORDER TAG este numele unui fisier (structural sau nestructural).

Exemplu:

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 ORDER //TAG [OF ]

Exemplu:

SET INDEX TO stoc, stoc_x ORDER TAG stoc_c OF stoc_x

SET ORDER TO // TAG [OF ]

Actualizarea fisierelor index se face automat pentru fisierele index sau etichetele active, iar actualizarea celorlalte fisiere se poate face cu comanda:

REINDEX

Exemplu:

Exemplu:

USE stoc INDEX stoc_c, stoc_d REINDEX

Stergerea fisierelor index

DELETE FILE - pentru stergerea fisierelor index simplu; DELETE TAG [of ]

Exemplu:

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 / ALL [TO ] Fisierele specificate in se transforma in etichete ale fisierului structural implicit sau nestructural precizat.

Transformarea inversa se face cu comanda: COPY TAG [OF ] TO

Exemplu:

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.