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




Operatii specifice bazelor de date

Informatica


Operatii cu datele dintr-un tabel al bazei de date



Exploatarea unui tabel consta în:

Operatii de actualizare (adaugarea unei noi înregistrari, stergerea unei înregistrari sau modificarea valorilor unor câmpuri din înregistrari).

Operatii de consultare (interogare) prin care se pot obtine informatii din tabel. Aceste operatii presupun si operatii de cautare a anumitor înregistrari (trebuie sa precizeze criteriul de cautare si modul de afisare a informatiilor).

Exploatarea unui tabel se poate face:

Secvential, adica în ordinea fizica a înregistrarilor (ordinea în care au fost scrise în tabel).

În acces direct, adica în ordinea logica a înregistrarilor (ordinea data de valoarea crescatoare sau descrescatoare a unui câmp din tabel). Ordonarea logica se face prin crearea unui fisier numit fisier de index care memoreaza ordinea logica a înregistrarilor.

Sortarea este operatia de ordonare fizica a înregistrarilor dintr-un tabel. Prin aceasta operatie se creeaza un nou tabel în care înregistrarile sunt scrise conform criteriului de ordonare precizat.

Indexarea este operatia de ordonare logica a înregistrarilor dintr-un tabel. Prin aceasta operatie se creeaza un fisier special asociat tabelului, numit fisier de index, care se exploateaza împreuna cu tabelul. El are doua câmpuri: unul care contine valoarea câmpului folosit pentru indexare (care determina ordonarea) numit si cheie de indexare si un câmp cu numarul înregistrarii din tabel în care se gaseste câmpul.

Indiferent de modul în care este exploatat tabelul, algoritmul de exploatare cuprinde urmatorii pasi: deschiderea tabelului, prelucrarea si închiderea.

Tabelul este memorat într-un fisier de date care are acelasi nume ca si tabelul si extensia .dbf. Pentru a putea prelucra înregistrarile dintr-un tabel, trebui deschis fisierul care îl contine.

use <nume_fisier>

Dupa ce s-au terminat de prelucrat înregistrarile din tabel, fisierul trebuie închis.

Operatiile puse la dispozitie de Visual FoxPro pentru administrarea datelor dintr-un tabel al bazei de date pot fi grupate astfel:

Crearea unui tabel

crearea structurii tabelului,

manipularea structurii tabelului;

Exploatarea unui tabel în acces secvential

localizarea înregistrarilor prin parcurgere secventiala a înregistrarilor din tabel,

actualizarea tabelului,

controlarea accesului la înregistrari,

consultarea tabelului;

Exploatarea unui tabel în acces direct

crearea si administrarea fisierelor index,

localizarea înregistrarilor dupa valoarea unei chei.

1.1 Crearea tabelului

Un tabel poate fi creat în interiorul unei baze de date ca tabel al bazei de date sau în afara ei ca tabel liber.

Crearea unui tabel se face în doua etape:

crearea structurii tabelului,

introducerea datelor în tabel, conform structurii definite.

La definirea structurii tabelului poate fi definit si indexul structural

compus (poate contine mai multe chei de indexare numite etichete index -tag). Extensia sa este .cdx. Este actualizat automat dupa fiecare operatie de actualizare a tabelului. Indecsii pot fi:

Primary - cheia primara. Se poate folosi numai în cazul în care tabelul se gaseste într-o baza de date. Numai un singur index poate fi folosit pentru cheia primara.

Candidate - cheia candidat. Este o cheie care poate deveni cheie primara deoarece nu contine valori duplicate si nici valori nule. si ea este utila numai in baza de date.

Unique - cheia unica. Este o cheie care se considera ca nu contine valori duplicate. Daca exista doua înregistrari cu aceeasi valoare a cheii unice, va fi vizibila logic numai prima dintre ele, chiar daca fizic exista amândoua.

Regular - cheia obisnuita.

Folosind indexarea puteti:

sa ordonati înregistrarile afisate în tabel,

sa ordonati valorile duble introduse într-un câmp,

sa definiti relatii între tabele.

Crearea structurii tabelului

Prin definirea structurii:

interactiv - structura se defineste prin intermediul controalelor din fereastra document a generatorului de tabele Table Designer; deschiderea ferestrei:

create<nume_tabel>

folosind limbajul de comanda

create table <nume_tabel> (<nume_câmp1> <tip1> (<latime1> [,<poz_zec1>] <nume_câmp2> <tip2> (<latime2> [,<poz_zec2>] ..]

unde <nume_tabel> este numele tabelului care se creeaza si a carui structura se defineste prin precizarea pentru fiecare câmp a numelui sau, a tipului, a dimensiunii si a numarului de pozitii din partea fractionara.

Prin preluarea structurii dintr-un alt tabel:

dintr-un tabel de structura. Tabelul de structura este un tabel în care se pastreaza structura unui alt tabel(proprietatile câmpurilor)

create <nume_tabel1> from <nume_tabel2>

unde <nume_tabel1> este numele tabelului a carui structura se creeaza prin preluarea structurii din tabelul de structura care are numele <nume_tabel2>.

dintr-un tabel deschis.

copy structure to <nume_tabel> [fields <lista_nume_câmpuri>]

unde <nume_tabel> este numele tabelului care se creeaza si a carui structura se preia din tabelul deschis în acel moment; se pot prelua toate câmpurile sau numai câmpurile precizate în lista clauzei fields.

Manipularea structurii tabelului

Afisarea structurii tabelului

display | list structure [to printer | to file <nume_fisier>] [no console]

deosebirea dintre cele doua comenzi consta în modul în care se face afisarea, display structure afiseaza în regim paginat (dupa fiecare pagina se asteapta confirmarea utilizatorului pentru a continua afisarea), iar comanda list structure deruleaza pe ecran toata informatia.

Implicit afisarea se face pe ecran, explicit se poate face la imprimanta sa într-un fisier, sau numai la unul dintre acestea, îmbinându-se iesirea catre ecran (adverbul no console).

Modificarea structurii tabelului

Se poate modifica structura unui tabel deschis în prealabil folosind comanda:

modify structure

Se deschide caseta de dialog Table Designer si se pot face urmatoarele modificari:

inserare de câmpuri noi,

stergere de câmpuri,

modificarea caracteristicilor unui câmp.

Copierea structurii tabelului

Se poate copia structura tabelului deschis:

într-un tabel de structura. Acest tabel are o structura predefinita. El contine 11 câmpuri, ctte un câmp pentru fiecare proprietate a câmpului.

copy to <nume_tabel> structure extended

unde <nume_tabel> este numele tabelului în care se va pastra structura.

într-un tabel precizat prin <nume_tabel> Pot fi copiate toate câmpurile din structura sau numai o parte din ele.

copy structure to <nume_tabel> [fields <lista_nume_câmpuri>]

Manipularea si controlarea câmpurilor dintr-un tabel

  1. Prin intermediul comenzilor set se poate controla accesul la câmpuri:

controlul accesului la câmpuri poate fi activat (on) sau inhibat (off) cu comanda:

set fields on|off

Valoarea implicita este off.

se pot preciza câmpurile la care utilizatorul poate avea acces:

set fields to [<lista_câmpuri> | all]

  1. Prin intermediul functiilor se pot obtine informatii despre câmpuri:

numele câmpului dintr-o pozitie precizata se obtine cu functia field(<n>), unde <n> este numarul de ordine al câmpului;

numarul de câmpuri din tabel se obtine cu functia fcount();

lungimea unui câmp din tabel se obtine cu functia fsize(<nume_câmp>);

dimensiunea înregistrarii din tabel se obtine cu functia recsize().

1.2 Pozitionarea pe o înregistrare din tabel

La un moment dat exista o singura înregistrare care poate fi prelucrata. Ea se numeste înregistrarea curenta. Numarul înregistrarii curente se pastreaza în contorul de înregistrare. El se mai numeste indicator de înregistrare sau pointer de înregistrare.

1.2.1 Pozitionarea dupa numarul înregistrarii

comanda goto sau go pozitioneaza pointerul de înregistrare pe o anumita înregistrare din tabel, precizata prin numarul sau.

goto | go <n> | top |bottom

unde <n> reprezinta numarul înregistrarii, top prima înregistrare, iar bottom ultima înregistrare.

comanda skip pozitioneaza pointerul de înregistrare peste un anumit numar de înregistrari, relativ fata de înregistrarea curenta.

skip[<n>]

Daca n>0 se face saltul peste n înregistrari înainte, daca n<0 se face saltul înapoi. În cazul în care n lipseste, saltul se face la înregistrarea urmatoare.

1.2.2 Pozitionarea dupa un criteriu logic de cautare

comanda locate pozitioneaza pointerul de înregistrare pe o înregistrare care îndeplineste conditia specificata

locate for <cond_1> [<domeniu>] [while <cond_2>]

Daca nu se gaseste nici o înregistrare care sa îndeplineasca conditia de la clauza for, pointerul va fi pozitionat dupa ultima înregistrare, marcajul eof. Domeniul de actiune implicit al comenzii este all, explicit comanda putând actiona pe anumite înregistrari precizate de <domeniu>sau prin clauza while.

comanda continue continua procesul de cautare definit de ultima comanda locate. Comanda continue se foloseste numai împreuna cu comanda locate.

1.2.3 Controlarea pozitionarii în tabel

Prin intermediul functiilor se pot obtine informatii despre înregistrarile din tabel:

reccount() - numarul de înregistrari din tabel;

recno() - numarul înregistrarii curente;

eof() - furnizeaza un rezultat logic .T. daca pointerul este pozitionat pe ultima înregistrare din tabel;

bof() - furnizeaza un rezultat logic .T. daca pointerul este pozitionat pe prima înregistrare din tabel;

found() - furnizeaza un rezultat logic .T. daca a avut succes operatia de cautare.

1.3 Actualizarea tabelului

Presupune trei tipuri de operatii:

adaugarea de noi înregistrari,

stergerea unei înregistrari,

modificarea câmpurilor dintr-o înregistrare.

1.3.1. Adaugarea de noi înregistrari

  1. Adaugare la sfârsitul tabelului:

de la tastatura

append - se deschide o fereastra de editare de tip Edit. La sfârsitul fisierului este adaugata o înregistrare vida, care se completeaza. Operatia de adaugare se termina când se închide fereastra.

prin adaugarea unei înregistrari vide

append blank - la sfârsitul tabelului se adauga o înregistrare vida ce urmeaza a fi completata ulterior.

dintr-un alt tabel

append from<nume_tabel>[fields <lista_câmpuri>][for<cond>]

Adauga înregistrarile din tabelul <nume_tabel> sau numai anumite câmpuri, precizate la clauza fields. Clauza for permitând de asemenea adaugarea înregistrarilor care îndeplinesc conditia <cond>.

  1. Inserare în interiorul tabelului:

insert [before][blank]

Implicit se insereaza o înregistrare vida dupa înregistrarea curenta si se deschide fereastra de editare pentru a completa valorile câmpurilor. Explicit, inserarea se poate face înaintea înregistrarii curente, folosind clauza before, sau se poate insera numai o înregistrare vida folosind clauza blank.

1.3.2. stergerea înregistrarilor

stergerea logica - nu înseamna eliminarea lor fizica, ci numai marcarea pentru stergere.

delete [domeniu] [for <cond_1>] [while <cond_2>]

Implicit este stearsa logic înregistrarea curenta. Explicit poate fi sters logic un grup de înregistrari precizat prin <domeniu> sau clauzele for sau while.

refacerea înregistrarilor sterse logic

recall [domeniu] [for <cond_1>] [while <cond_2>]

stergerea fizica - eliminarea fizica din tabel a înregistrarilor marcate logic pentru stergere.

pack

stergerea fizica a tuturor înregistrarilor - elimina toate înregistrarile, pastrând numai structura tabelului.

zap

Controlarea operatiei de stergere se poate face prin:

comanda care stabileste cum pot fi folosite înregistrarile sterse logic:

set deleted on off

unde on înseamna ca înregistrarile sterse logic nu pot fi folosite de comenzile care au în sintaxa clauzele for si while.

functia care testeaza daca înregistrarea curenta este marcata logic pentru stergere:

deleted

1.3.3. Modificarea înregistrarilor

prin valori precizate

replace<camp_1>with<expr_1>[additive] [,<camp_2> with <expr_2>[additive].][<domeniu>] [for <cond_1>] [while <cond_2>]

interactiv, de la tastatura

browse | edit[fields<lista_campuri>] [<domeniu>] [for<cond_1>][while<cond_2>][font<nume_font> [, <n>]] [style<nume_stil>] [freeze<nume_camp>] [last|noinit] [noappend] [nodelete] [noedit|nomodify] [title <nume_t>] [normal] [partition <m>] [lpartition] [nolink] [ledit] [redit] [valid][f] <cond_3> [error<mesaj>]] [when<cond_4>] [width <p>]

1.3.4. Controlarea accesului la înregistrari

Indexarea tabelelor

Pentru a putea exploata un tabel în acces direct, trebuzie organizat astfel încât sa aveti acces direct la o înregistrare în functie de valoarea unui câmp sau a unor câmpuri care vor forma cheia de acces. Solutia este de ordonare logica a înregistrarilor prin intermediul fisierelor index.

Visual FoxPro permite crearea a doua tipuri de fisiere de index:

index simplu care contine o singura cheie de indexare într-un fisier

index compus care contine mai multe chei de indexare într-un fisier

Crearea unui index

Daca indexul compus structural se creaza împreuna cu tabelul, ceilalti indecsi se creaza dupa ce a fost creat tabelul, prin comanda:

index on <expresie_index> to <nume_fisier.idx> | tag <nume_eticheta> [for <cond_1>] [ascending | descending]

Deschiderea unui index

În afara de indexul compus, care se deschide automat la deschiderea tabelului, ceilalti indecsi trebuie deschisi fie prin optiunea Open - File,   fie folosind una din comenzile:

la deschiderea tabelului

use <nume_tabel> index <lista_fisiere.inx>

order <nume_fisier.idx>|tag <nume_eticheta> of <nume_fisier.cdx>

[ascending|descending]

dupa deschiderea tabelului

set index to <lista_fisiere.idx>[ascending|descending][additive]

order <nume_fisier>| tag <nume_eticheta> of <nume_fisier.cdx>


Document Info


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