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




ORDONAREA UNEI BAZE DE DATE

Baze de date


ORDONAREA UNEI BAZE DE DATE

O b.d. este ordonata dupa un anumit vriteriu, daca fiecare înregistrare a acesteia respecta criteriu dat, în raport cu celelalte înregistrari. Criteriu 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 înregistr 818b13i 9;rile de comparat. Astfel, compararea a doua înregistrari se reduce la compararea valorilor expresiei 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 logaritm, 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 crearea unui nou fisier care contine informatii cu privire la ordinea înregistrarilor în b.d. si în acest caz se obtine un fisier nou, fisierul index, dar acesta nu contine înregistrarile b.d., ci numai memoreaza ordinea acestora.

14.1 SORTAREA BAZELOR DE DATE

Sortarea bayelor de date se realiyeaya cu comanda SORT.

sintaxa:    SORT TO <fisier> ON <câmp>[/A|/D][/C]…]

[,<câmp>[/A|/D][/C]…]

[ASCENDING|DESCENDING]

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

[FIELDS <lista cîmpuri>]

Comanda sorteaza b.d. activa creind 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 minuscule). 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.

Exemplu:

USE agenda

SORT TO ag_ord ON nume /ac, prenume /dc

USE ag_ord IN 2

SELECT 2

LIST

14.2 INDEXAREA BAZELOR DE DATE

Indexarea unei b.d. presupune crearea unui fisier nou, numit fisier index asociat, în care se înregistreaya ordinea înregistrarilor din b.d. Accesul la o anumita întrgistrare 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 dat 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 aceasta 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 executata de comanda INDEX.

sintaxa: INDEX ON <expr> TO <fisier.idx> TAG <nume eticheta> [OF <fisier.cdx>]

[FOR<expL>]

[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. Acestea au aceleasi 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 dechiderea b.d. Ele poarta alt nume decât cel al b.d., numele specificat în clauza OF: <fisier.cdx>.

Clauza FOR determina ca numai înregistrarile care respecta <expL> sa poata fi accesate prin fisierul index respectiv. ASCENDINDG 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.

Odata cu deschiderea 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[<expN> <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 ti extensia; daca nu exista pericol de confuzie, fisierele vor fi separate prin virgula. Dcaa se înlocuieste lista de fisiere cu ? se va afisa o ferestra 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<expN>, unde expresia numerica reprezinta numarul de ordine al fisierului index simplu sau al teichetei 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 de la fisierul index structural, în ordinea definirii acestora iar ultimile se vor numara etichetele, în ordinea definirii lor, din fisierele index compuse, în ordinea aparitiei acestora în lista. Daca <expN> 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 ASCENDIN 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> ?]

[OEDER<expN> <fisier.idx> TAG<nume eticheta>[OF<fisier.cdx>]

[ASCENDING 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 ADDITIVE. Î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:    SER ORDER TO

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

[IN<expN2>]

[ASCENDING DESCENDING]

Clauza IN se foloseste atunci când comanda se foloseste 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.

Exemplu:

USE agenda

INDEX ON nume TO agenda1 && creaza fisierul agenda1 – fisierul 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 numar de telefon TAG numar de telefon

SET ORDER TO 3 && stabileste indexul activ ca fiind prenumele


Document Info


Accesari: 691
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 )