indexarea tabelelor

5
Indexarea tabelelor Când se doreşte operarea asupra înregistrărilor unui tabel într-o anumită ordine, se folosesc indecşii drept mecanisme de ordonare. Se pot crea şi utiliza mai multe chei index pentru acelaşi tabel şi se poate lucra cu înregistrările ordonate diferit funcţie de cerinţele aplicaţiei. Pe baza indecşilor se pot crea legături permanente între tabele care să ofere acces exact la înregistrările dorite. Un index în Visual FoxPro este un fişier care conţine pointeri ordonaţi în mod logic de către o cheie de indexare. Indexul nu schimbă ordinea fizică a înregistrărilor în tabel (fişierul .dbf). Tipuri de indexuri Indexuri normale (Regular) şi indexuri unice (Unique) In cazul unui index Regular, FoxPro memorează valoarea generată de expresia de index, pentru fiecare înregistrare a tabelului în index. Dacă mai multe înregistrări au aceeaşi expresie aceasta se memorează de mai multe ori cu pointeri separaţi pentru fiecare din înregistrări. Indexul de tip Unique include în index numai expresii unice. Dacă mai multe înregistrări generează aceeaşi valoare a expresiei de index, Unique o memorează doar pe prima întâlnită. Indexuri candidat (Candidate) şi index primar (Primary) Indexul candidat, crează un index unic, dar indexul include toate înregistrările din tabel. Indexurile Candidate nu permit repetarea valorilor expresiei pentru înregistrările tabelului. Un tabel independent poate avea un index Candidate, dar numai tabelele dintr-un container de baze de date pot avea un index primar (Primary) Un tabel poate avea mai multe câmpuri care identifică în mod unic fiecare înregistrare. Indexarea după fiecare din aceste câmpuri produce un index Candidate îndreptăţit la titlul de index primar. Cu toate acestea, un tabel poate avea un singur index primar. Acesta participă la stabilirea relaţiilor între fişiere, şi servesc ca valori de căutare în tabelele la care se face referire. 1

description

indexarea tabelelor

Transcript of indexarea tabelelor

Page 1: indexarea tabelelor

Indexarea tabelelor

Când se doreşte operarea asupra înregistrărilor unui tabel într-o anumită ordine, se folosesc indecşii drept mecanisme de ordonare. Se pot crea şi utiliza mai multe chei index pentru acelaşi tabel şi se poate lucra cu înregistrările ordonate diferit funcţie de cerinţele aplicaţiei. Pe baza indecşilor se pot crea legături permanente între tabele care să ofere acces exact la înregistrările dorite.

Un index în Visual FoxPro este un fişier care conţine pointeri ordonaţi în mod logic de către o cheie de indexare. Indexul nu schimbă ordinea fizică a înregistrărilor în tabel (fişierul .dbf).

Tipuri de indexuri

Indexuri normale (Regular) şi indexuri unice (Unique)In cazul unui index Regular, FoxPro memorează valoarea generată de expresia de index,

pentru fiecare înregistrare a tabelului în index. Dacă mai multe înregistrări au aceeaşi expresie aceasta se memorează de mai multe ori cu pointeri separaţi pentru fiecare din înregistrări.

Indexul de tip Unique include în index numai expresii unice. Dacă mai multe înregistrări generează aceeaşi valoare a expresiei de index, Unique o memorează doar pe prima întâlnită.

Indexuri candidat (Candidate) şi index primar (Primary)Indexul candidat, crează un index unic, dar indexul include toate înregistrările din tabel .

Indexurile Candidate nu permit repetarea valorilor expresiei pentru înregistrările tabelului.Un tabel independent poate avea un index Candidate, dar numai tabelele dintr-un container

de baze de date pot avea un index primar (Primary)Un tabel poate avea mai multe câmpuri care identifică în mod unic fiecare înregistrare.

Indexarea după fiecare din aceste câmpuri produce un index Candidate îndreptăţit la titlul de index primar. Cu toate acestea, un tabel poate avea un singur index primar. Acesta participă la stabilirea relaţiilor între fişiere, şi servesc ca valori de căutare în tabelele la care se face referire.

Crearea unui index

a) Crearea unei chei de index pentru un tabel- în Table Designer se alege fila Index şi se introduce informaţia referitoare la o singură

cheie de index. Se alege tipul de index Regular.Sau- se utilizează comanda INDEX, cu sintaxa următoare:

INDEX ON Expresie TO NumeIDX | TAG NumeTag [OF NumeCDX][FOR Conditie] [ASC | DESC] [UNIQUE | CANDIDATE]

Exemplu:OPEN DATABASE ParteneriUSE Clienti && se deschide tabelul Clienti

1

Page 2: indexarea tabelelor

INDEX ON address TAG addressINDEX ON company TAG company OF custcdx

b) Crearea unui fişier de indexImediat după crearea unei chei de index pentru un table (in Table Designer), Visual FoxPro

crează automat un fişier compus structural (.cdx) nou pentru a păstra cheia de index. Un astfel de fişier structural are următoarele caracteristici:

- se deschide automat atunci când se deschide tabelul;- poate conţine mai multe scenarii de ordonare, sau chei de index în acelaşi fişier index;- este actualizat atunci când se adaugă, se modifică sau se şterg înregistrări.

c) Crearea unui index primar sau candidat- în Table Designer se selectează fila Index şi se alege tipul de index Primary sau Candidate

d) Crearea unui index normal- în Table Designer se selectează fila Index şi se alege tipul de index Regularsau- se foloseşte comanda INDEX.Exemplu:USE Fa cturiINDEX ON cod_cli TAG codcli

e) Crearea indecşilor multipliIn timpul lucrului cu înregistrările unui tabel, înregistrările pot fi accesate în succesiuni

diferite. De exemplu se poate ordona tabelul Clienţi după persoana de contact, pentru a găsi uşor un nume, sau după localitate, pentru a crea etichete poştale sortate. Crearea unor chei de index suplimentare pentru un tabel- în Table Designer se selectează fila Index şi se introduc informaţiile referitoare la cheile de

index suplimentareAtunci când se crează o etichetă index fără a se indica numele unui fişier index, eticheta este

adăugată automat la fişierul index structural al tabelei. Exemplu:USE AngajaţiINDEX ON nume TAG numeINDEX ON prenume TAG prenume

Controlul ordinii de acces la înregistrări

După generarea cheilor de index pentru un tabel, datele acestuia pot fi accesate şi afişate în ordinea dorită prin simpla alegere a cheii de index potrivite. Pentru a alege o anumită cheie pe post de cheie de sortare a tabelului se va folosi comanda SET ORDER cu sintaxa :

2

Page 3: indexarea tabelelor

SET ORDER to nume_etichetăExemplu: USE AngajaţiSET ORDER TO numeBROWSESecventa de mai sus deschide o fereastră BROWSE care afişează înregistrările tabelului Angajaţi

în ordinea alfabetică a numelor.

Ştergerea unui index

Se poate renunţa la indecşii care nu mai sunt necesari, prin ştergerea etichetei din fişierul .cdx sau prin ştergerea fişierului .idx în cazul indecşilor independenţi.

a) ştergerea unei etichete din fişierul .cdx- în Table Designer se deschide fila Index, se selectează un index şi se şterge (pentru fişierele structurale, ale căror etichete apar în Table Designer)

Indexarea prin expresii

Performanţele unei aplicaţii se pot îmbunătăţi prin crearea unor indecşi bazaţi pe expresii. Acestea pot fi simple sau complexe, funcţie de sarcinile pe care trebuie să le îndeplinească.

a) Indexarea prin expresii simple Expresiile de index simple sunt indecşi bazaţi pe un singur câmp sau pe două sau mai multe

câmpuri de tip Character care, prin concatenare, formează o cheie multi-câmp.Exemplu: In tabelul Clienţi se poate crea un index pe baza expresiei: localitate + cod_cli.La o navigare prin tabelul sortat după această etichetă de index înregistrările

corespunzătoare clienţilor vor fi ordonate după localitate, apoi după codul alocat clientului.b) Folosirea valorilor null în cadrul expresiilor de index

Se pot crea indecşi pentru câmpurile care conţin valori null. Expresiile de index evaluate ca .NULL sunt inserate în fişierele .cdx înaintea valorilor non-null.

Filtrarea datelor

a) Filtrarea datelor prin intermediul unui index filtratNumărul înregistrărilor afişate poate fi limitat cu ajutorul unui index filtrat, care permite

accesul numai la înregistrările care verifică expresia filtrului.- în Table Designer se selectează fila Index şi se introduce o expresie de filtrare în cadrul

casetei Filter, pentru indexul care se doreşte filtrat;- se foloseşte clauza FOR a comenzii INDEXNotă: Clauza FOR a comenzii INDEX acţionează ca un filtru pentru tabel, astfel încât cheile

de index sunt create în fişierul de index doar pentru acele înregistrări care verifică expresia filtrului.Exemplu: USE Facturi

INDEX ON nrfact FOR nume="Agressione"

3

Page 4: indexarea tabelelor

Fereastra de navigare va afişa doar facturile emise către clientul al cărui nume este Agressione.

b) filtrarea temporară a datelorEste o metodă utilă pentru a specifica o condiţie temporară pe care înregistrările din tabel

trebuie să le îndeplinească pentru a fi accesibile.Se utilizează comanda SET FILTER, cu sintaxa:

SET FILTER TO [Conditie]Pentru a dezactiva filtrul din tabelul curent se lansează comanda SET FILTER TO fără nici o

expresie.Exemplu: USE Clienţi

SET FILTER TO localitate="Suceava"Notă: Comanda acceptă pe post de filtru orice expresie logică Visual FoxPro. După execuţia

comenzii, numai înregistrările care îndeplinesc condiţia de filtrare vor fi disponibile în tabel pentru orice comandă. Pentru fiecare tabel deschis se poate stabili un alt filtru.

4