Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Ordonarea unei baze de date

foxpro


Ordonarea unei baze de date

O b.d. este ordonata dupa un anumit criteriu, daca fiecare înregistrare a acesteia respecta criteriul dat, în raport cu celelalte înregistrari. Criteriul de comparatie între doua înregistrari este format dintr-un operator relational mai mic("<") sau mai mare(">") care se aplica la doua valori ale unei expresii, fiecare corespunzând uneia dintre înregistrarile de comparat. Astfel compararea a doua înregistrari se reduce la compararea valorilor expresie respective.



Expresia poarta numele de cheie de ordonare.

În FoxPro exista doua metode de ordonare a unei b.d. si anume :

ordonarea propriu-zisa a b.d. prin schimbarea între ele a înregistrarilor, dupa un anumit algoritm, pâna când acestea sunt în ordinea dorita. În acest caz se obtine o noua b.d. care contine aceleasi înregistrari ca si cea de la care s-a pornit, dar în ordinea dorita.

indexarea unei b.d., aceasta însemnând crearea unui nou fisier care contine informatii cu privire la ordinea înregistrarilor în b.d. si în acest caz se obtine u 333f58d n fisier nou, fisierul index, dar acesta nu contine înregistrarile b.d. ci memoreaza numai ordinea acestora.

Sortarea bazelor de date

Se realizeaza cu comanda sort.

sintaxa : sort to <fisier> on <câmp1> [ /A | /D] [ /C]

[,<câmp2> [ /A | /D] [ /C] ...]

[ASCENDING | DESCENDING ]

[<domeniu>] [ FOR <expL1>] [ WHILE <expL2>]

[FIELDS <lista câmpuri>]

Comanda sorteaza b.d. activa creând o noua b.d. în care sunt depuse înregistrarile selectate în ordinea specificata. Baza de date noua va contine câmpurile specificate la clauza FIELDS, sau toate câmpurile, în cazul în care aceasta clauza lipseste. Noua b.d. va purta numele <fisier>, la care se adauga în mod implicit extensia .dbf (daca nu se specifica explicit alta).

Cheia de ordonare este data de câmpurile <câmp1>, <câmp2>,.... specificate dupa clauza ON . Clauzele /A si /D sunt asociate câmpului dupa care acestea urmeaza si specifica tipul de ordonare pentru câmpul respectiv: A - crescator si D - descrescator. Daca toate câmpurile din lista sunt egale pentru cele doua înregistrari care se compara , se pastreaza ordinea initiala din b.d.

Clauza / C se foloseste pentru câmpurile de tip sir de caractere pentru a face compararea acestor câmpuri insensibila la tipul literelor ( majuscule sau litere mici). Implicit , tipul literelor este luat în consideratie.

Pentru specificarea a doua clauze dupa un câmp, se folosesc constructiile /AC sau /DC.

Clauzele ASCENDING si DESCENDING sunt similare clauzelor    /A si /D , numai ca se refera la toate câmpurile din lista. În lipsa lor, ordinea implicita este ascending (crescatoare). Clauzele asociate câmpurilor ( /A, /D) au prioritate fata de clauzele ASCENDING si DESCENDING.

<domeniu>, FOR si WHILE selecteaza înregistrarile ce se vor ordona si vor fi trecute în noua b.d.

ex. :

use agenda

sort to ag_ord on nume /ac, prenume /dc

use ag_ord in 2

select 2

list

Indexarea bazelor de date

Indexarea unei b.d. presupune crearea unui fisier nou, numit fisier index asociat, în care se memoreaza ordinea înregistrarilor din b.d. Accesul la o anumita înregistrare se face prin intermediul fisierului index.

Fisierele index ce pot fi asociate unei b.d. pot fi de urmatoarele doua tipuri:

fisiere index simple (cu extensia .IDX), care contin o singura cheie de ordonare.

fisiere index compuse (cu extensia .CDX), care memoreaza mai multe chei de ordonare, numite etichete, una singura fiind activa la un moment date, si anume eticheta activa.

O b.d. poate avea mai multe fisiere index asociate, dar numai unul singur va fi activ la un moment dat, acesta fiind numit fisierul index activ. Ordinea în care este accesata b.d este data de fisierul index activ, iar daca acesta este compus, de eticheta activa din fisierul index respectiv.

Crearea unui fisier index este data de comanda index.

sintaxa : index on <expr> to <fisier.idx> | tag <nume eticheta> [of <fisier.cdx>]

[ for <exp L>]

[ ASCENDING | DESCENDING ]

[ UNIQUE ]

[ ADDITIVE ]

Cheia de ordonare (acum se numeste cheie de indexare) este specificata prin <expr>, aceasta continând câmpuri ale b.d. active.

Un fisier index compus poate contine mai multe chei de indexare, fiecare corespunzând unui criteriu de ordonare a b.d. Fiecare criteriu este identificat prin eticheta asociata, ce se specifica în interiorul comenzii index prin clauza tag, unde <nume eticheta> reprezinta numele etichetei respective.

Fisierele compuse sunt la rândul lor de doua tipuri:

structurale - sunt deschise si asociate automat b.d. odata cu deschiderea acesteia folosind comanda use. Aceste au acelasi nume cu b.d., extensia fiind .CDX si sunt create folosind clauza TAG, fara introducerea unui nume de fisier index cu clauza of

nestructurale - nu sunt deschise automat odata cu deschiderea b.d. Ele poarta alt nume decât al b.d., numele specificat în clauza OF: <fisier . cdx>

Clauza FOR determina ca numai înregistrarile care respecta <exp L> sa poata fi accesate prin fisierul index respectiv. ASCENDING sau DESCENDING se folosesc pentru a preciza modul de ordonare a b.d , asociat fisierului index.

Clauza UNIQUE - daca avem doua sau mai multe înregistrari cu aceeasi cheie de indexare, determina accesul doar la prima înregistrare si blocarea accesului la celelalte.

Clauza ADDITIVE - daca fisierul index compus exista, eticheta specificata va fi adaugata la celelalte etichete ale fisierului index.

O data cu deschiderea unei b.d. se pot deschide si o serie de fisiere index asociate b.d., incluzând clauza index în comanda use.

sintaxa : USE [ <fisier> | ? ]

...

[INDEX <lista fisierelor index> | ?

[ORDER [<exp N> | <fisier.idx> | [TAG ]<nume eticheta> [ OF <fisier. cdx>]

[ASCENDING | DESCENDING]]]]

...

La deschiderea b.d. <fisier> se vor deschide si fisierele index din <lista fisiere index>, care trebuie sa fie deja create. În specificarea acestor fisiere nu trebuie inclusa si extensia, daca nu exista pericol de confuzie, fisierele vor fi separate prin virgula.

Daca se înlocuieste lista de fisiere index cu ? se va afisa o fereastra de dialog de unde utilizatorul poate selecta aceste fisiere.

Daca nu se specifica clauza ORDER , primul fisier index din lista va fi cel activ. Daca acesta este fisier index compus, înregistrarile vor fi accesate în ordinea fizica din b.d.

Clauza ORDER determina fisierul index simplu ce va deveni activ sau eticheta dintr-un fisier index compus ce va deveni activa astfel :

prin ORDER <exp N>, unde expresia numerica reprezinta numarul de ordine al fisierului index simplu sau al etichetei din fisierul index compus. Numararea se face astfel: mai întâi se numara fisierele index simple, în ordinea în care apar în lista, apoi se numara etichetele din fisierul index structural, în ordinea definirii acestora iar ultimele se vor numara etichetele, în ordinea definirii lor, din fisierele index compuse , în ordinea aparitiei acestora în lista. Daca <exp N> este 0 se va folosi ordinea fizica a înregistrarilor din b.d.

prin ORDER <fisier.idx>, unde fisierul index simplu <fisier.idx> va deveni activ.

prin ORDER [ [TAG <nume eticheta>] [ OF <fisier. cdx>]], în care eticheta cu numele <nume eticheta> din fisierul index structural sau oricare alt fisier index compus va deveni activa. Daca se doreste selectarea unei etichete dintr-un fisier index compus nestructural si exista o eticheta cu acelasi nume în fisierul index structural, atunci se va folosi si clauza OF, în care <fisier. cdx> reprezinta fisierul în care gasim eticheta respectiva.

Clauzele ASCENDING si DESCENDING specifica ordinea crescatoare sau descrescatoare folosita pentru ordonarea    înregistrarilor.

Daca se doreste deschiderea unor fisiere pentru b.d. curenta ,dupa ce aceasta a fost deschisa, se foloseste comanda SET INDEX.

sintaxa : SET INDEX TO [<lista fisiere index> | ? ]

[ORDER <exp N> | <fisier.idx> | TAG <nume eticheta> [OF <fisier. cdx>]

[ASCENDNG | DESCENDING] ] [ ADITIVE ]

Se vor deschide toate fisierele index specificate în <lista fisiere index> sau selectate din fereastra de dialog deschisa de ?.

Noua lista de fisiere o va înlocui pe cea veche, daca nu se specifica clauza ADITIVE. În prezenta acesteia, noua lista se adauga la cea veche.

Forma SET INDEX TO închide toate fisierele index din zona de lucru curenta, exceptie facând fisierul index structurat.

Având deschise mai multe fisiere index simple sau compuse, pentru a selecta alt fisier index activ sau alta eticheta activa, se foloseste comanda SET ORDER

sintaxa : SET ORDER TO

[<expN1> | <fisier.idx> | [ TAG ]<nume eticheta> [ OF <fisier. cdx>]

[IN <expN2>]

[ASCENDING | DESCENDING ]

Clauza IN se foloseste atunci când comanda se refera la alta b.d. decât cea activa, aflata în zona de lucru <expN2>

Închiderea fisierelor index se face folosind comanda

CLOSE INDEX, care închide toate fisierele index deschise în zona de lucru curenta, în afara celui structural sau:

CLOSE ALL, USE, CLOSE DATABASES.

ex. :

use agenda

index on nume    to agenda1 && creeaza fisierul agenda1 - fisier index simplu cu cheia de indexare nume

Fisier index compus structurat cu cheile de indexare nume, prenume, numar de telefon

index on nume tag nume

index on prenume tag prenume

index on nr_telefon tag nr_telefon

set order to && stabileste indexul activ ca fiind prenumele


Document Info


Accesari: 4238
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )