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




Limbaje relationale de manipulare a datelor

sql


Limbaje relationale de manipulare a datelor

Limbajele relationale de manipulare a datelor sunt de o mare varietate, caracterizarea lor numai în raport de caracteristicile functionale, ca în cazul limbajelor relationale de definire a datelor nefiind suficienta.



O caracteristica importanta a limbajelor de manipulare o reprezinta modul de lucru cu datele. Toate limbajele relationale de manipulare a datelor recurg la o tratare asamblista a datelor, unitatea de informatie cu care se lucreaza fiind relatia. Unele SGBDR utilizeaza, pe lâanga limbaje relationale de manipulare si limbaje nerelationale, care realizeaza o tratare a datelor la nivel de tuplu, maniera de lucru obisnuita a limbajelor de programare generale.

Manipularea datelor la nivel de relatie ofera o serie de avantaje, precum: posibilitatea gestionarii automate a tuplurilor duplicate, posibilitatea utilizarii paralelismului în manipularea unor volume mari de date. Aceste avantaje se pierd atunci cand se realizeaza comunicarea între un limbaj relational de manipulare a datelor si un limbaj de programare precum COBOL, C, Assembler etc., întrucat comunicarea este posibila numai tuplu cu tuplu, si nu ansamblu cu ansamblu. Se apeleaza, de obicei, la o asemenea comunicare în scopul extinderii posibilitatilor de prelucrare a datelor din baza, peste nivelul facil 24324i811y itatilor oferite de limbajele relationale de manipulare a datelor.

Solutia utilizata cel mai frecvent este de a se integra comenzile unui limbaj relational de manipulare a datelor, de exemplu SQL într-un limbaj de programare general. Aceasta integrare reclama utilizarea unui precompilator, care sa analizeze sursa programului, sa recunoasca comenzile limbajului relational si sa le înlocuiasca prin comenzi CALL. Modulul precompilat este ulterior compilat si executat. Executarea sa presupune apelul SGBDR pentru efectuarea actiunilor solicitate prin comenzile CALL si transferul tuplurilor de la/în program in/din baza de date.

Din punct de vedere al setului de operatori relationali pe care îi implementeaza, limbajele relationale de manipulare a datelor se pot clasifica în:

Limbaje relationale de manipulare a datelor care au la baza calculul relational pe tuplu, precum limbajul ALPHA (propus de E. F. Codd) si limbajul QUEL (utilizat de sistemul INGRES);

Limbaje relationale de manipulare a datelor care au la baza calculul relational pe domeniu, precum limbajele FQL si QBE;

Limbaje relationale de manipulare a datelor care au la baza algebra relationala numite si limbaje relationale algebrice, precum limbajul ISBL;

Limbaje relationale de manipulare a datelor care au la baza mappingul (limbaje intermediare) precum SQL.

Limbajele mentionate mai sus difera prin modul în care sunt precizate datele care trebuie cautate, inserate, modificate sau sterse, si anume:

Limbajele bazate pe calculul relational, precum si cele bazate pe mapping sunt neprocedurale (declarative), în sensul ca datele sunt precizate prin intermediul proprietatilor pe care le prezinta, dupa modelul expresiilor bine formate din calculul relational;

Limbajele bazate pe algebra relationala sunt procedurale, în sensul ca este precizata procedura de obtinere a datelor, dupa modelul expresiilor din algebra relationala.

Putem considera, de exemplu relatia ORASE, cu schema:

ORASE (COD, DENUMIRE, NRLOC)

si cererea de cautare a oraselor cu peste 500.000 locuitori.

Cererea se poate formula în limbajul QUEL prin comanda:

RANGE OF O IS ORAsE

RETRIEVE O. COD, O. DENUMIRE, O. NRLOC

WHERE (O. NRLOC>500000)

Constructia sintactica a comenzii RETRIEVE urmareste modelul expresiei bine formate:

ECR=

Expresia ECR reprezinta o expresie din calculul relational orientat pe tuplu care exprima datele cautate. Expresia din algebra relationala exprimata de catre comanda mentionata este:

EAR=sNRLOC> ORASE

Limbajele relationale de manipulare a datelor trebuie sa ofere o serie de facilitati pentru prelucrarea datelor din relatiile bazei de date, si anume facilitati de interogare, inserare, modificare si stergere.

Interogarea bazei de date reprezinta principala functie a unui limbaj relational de manipulare a datelor. Din aceasta cauza, limbajele de manipulare mai sunt cunoscute si sub numele de limbaje de interogare relationale.

Un limbaj relational de manipulare a datelor trebuie sa fie complet, în sensul ca orice relatie derivabila din modelul datelor sa poata fi derivata printr-o singura instructiune (comanda) a limbajului, fara specificarea modului de accesare a tuplurilor individuale. Codd a aratat ca algebra relationala si calculul relational sunt complet relationale, putand fi folosite drept etalon în aprecierea limbajelor relationale de manipulare a datelor.

Un limbaj este deci complet relational daca poseda expresivitatea calculului relational sau algebrei relationale, chiar si atunci cand sunt înlaturate toate facilitatile de ciclare si recursivitate de care dispune.

Limbajul SQL este complet relational, deoarece permite realizarea tuturor operatiilor algebrei relationale. Astfel, comenzila din Figura 2.2.3 ilustreaza modul în care limbajul SQL permite exprimarea operatiilor de reuniune (C1), intersectie (C2), join (C3), produs cartezian (C4), proiectie si selectie (C5).

(Select * From P)

Union

(Select * From S)

a)  Comanda C1

Select A1, A2, A3 From P, S

Where P.A3=S.A3

d) Comanda C4

(Select Cod From P)

Intersect

(Select Cod From S)

b)Comanda C2

Select A1, A2 From P

Where A3="D"

e) Comanda C5

Select Nume, Varsta From S, P

where

An_nastere > 1960

c) Comanda C3

Figura 2.2.3 Comenzi SQL

În vederea interogarii bazei de date, limbajele relationale de manipulare a datelor dispun de o serie de comenzi, precum:

comenzi pentru interogarea relatiilor de baza.

Datele interogate se pot afla într-una sau mai multe relatii de baza. În acest din urma caz este necesara utilizarea cheilor externe, pentru trecerea de la o relatie la alta, în cursul interogarii.

Sa consideram, de exemplu relatiile de baza din Figura 2.2.4.

PROFESORI:

Identp: D1

Numep: D2

Gradp: D3

STUDENTI:

Idents: D1

Numes: D2

Titluabs: D3

PS

Identp: D1

Idents: D1

Curs: D4

Figura 2.2.4 Schemele relatiilor: PROFESORI, STUDENTI, PS

Sa presupunem urmatoarele cereri de date:

C1: Obtinerea identificatorilor profesorilor care instruiesc studentul S1

C2: Obtinerea numelor profesorilor care predau cursul CURS1 sau CURS2.

Cererea C1 se poate exprima în limbajul de manipulare a datelor QUEL, bazat pe calculul relational astfel:

RANGE OF R IS PS

RETRIEVE R.Identp

WHERE (R.Idents= S1'

Pentru exprimarea unei cereri într-un limbaj bazat pe algebra relationala este necesar sa se identifice operatiile prin care sa se poata obtine relatia raspuns la respectiva cerere.

Pentru cererea C1, aceste operatii sunt:

R1=sIdents= S1'(PS)

X=PIdentp R1)

Cererea C2 se poate exprima în limbajul de manipulare a datelor QUEL, bazat pe calculul relational astfel:

RANGE OF P IS PROFESORI

RANGE OF R IS PS

RETRIEVE P.Numep

WHERE (R.Identp=P. Identp)

AND ((R.Curs= CURS1') OR (R. Curs='CURS2'))

Obtinerea raspunsului la cererea C2 presupune realizarea urmatoarelor operatii ale algebrei relationale:

X1 s(Curs='CURS1') (Curs='CURS2')(PS)

X2=PIdentp(X1)

X3=X2><PROFESORI

X=PNumep(X3)

Pentru realizarea actualizarii datelor din baza de date, limbajele relationale de manipulare a datelor dispun de o serie de comenzi, precum:

- comenzi pentru actualizarea relatiilor de baza (inserarea, modificarea si stergerea datelor). Aceste comenzi permit, adaugarea, modificarea si stergerea tuplurilor dintr-o relatie.

Putem considera, de exemplu relatia de baza ANGAJATI, cu schema:

ANGAJATI(Nume,Compartiment, Salariu, Varsta, Sef).

Modificarea salariului corespunzator angajatului cu numele Ionescu în sensul diminuarii cu 10 se poate realiza prin comanda QUEL:

RANGE OF A IS ANGAJATI

REPLACE A (Salariu=0.9*A.Salariu)

WHERE A. Nume = Ionescu

iar stergerea datelor referitoare ia angajatul "Popescu" se poate realiza cu ajutorul comenzii QUEL:

RANGE OF A IS ANGAJATI

DELETE A

WHERE A.Nume= Popescu

Inserarea unui tuplu în aceasta relatie este:

INSERT INTO ANGAJATI

VALUES ( Georgescu Financiar Popescu

Limbajele de manipulare a datelor au o serie de caracteristici calitative:

1. Puterea selectiva. Se refera la posibilitatile de selectare a datelor, conform anumitor criterii (conditii) de selectie.

2. Usurinta de învatare si utilizare. Sunt determinate, în primul rand de gradul de proceduralitate al limbajului relational de manipulare a datelor.

Limbajele bazate pe calculul relational sunt neprocedurale (declarative), ceea ce faciliteaza învatarea si utilizarea lor, cererile fiind exprimate într-un mod natural, prin intermediul proprietatilor datelor care se doresc a fi obtinute, respectiv actualizate. Limbajele relationale bazate pe algebra relationala (limbaje relationale algebrice) sunt procedurale (algoritmice), precizand operatiile algebrei relationale prin care se obtine actualizarea datelor.

În scopul sustinerii procesului de învatare si utilizare a limbajelor relationale de manipulare a datelor, multe sisteme relationale dispun de o serie de primitive de programare grafica a cererilor de date.

Trebuie mentionat, în acest context limbajul QBE, limbaj relational de manipulare a datelor bazat pe calculul relational orientat pe domeniu. Limbajul QBE permite programarea cererilor de date prin utilizarea unor machete de relatii. Utilizatorul formuleaza cererile de date prin completarea spatiilor goale din cadrul machetelor.

Sa consideram, de exemplu COMPARTIMENTE, cu schema:

COMPARTIMENTE (COD, DEN, NRANG)

Pentru aflarea denumirii compartimentelor, utilizatorul va completa macheta conform Figurii 2.2.5, unde P are semnificatia comenzii de afisare-PRINT.

COMPARTIMENTE

COD

DEN

NRANG

P.

Figura 2.2.5 Cererea de regasire a denumirilor de compartimente

Trebuie subliniat faptul ca limbajul QBE ofera numeroase facilitati de realizare a regasirilor calificate, a regasirilor efectuate concomitent pe mai multe relatii, a utilizarii negatiei, operatorilor aritmetici, functiilor etc.

3. Utilizarea limbajului natural pentru exprimarea cererilor de manipulare si în primul rand a celor de interogare a bazei de date s-a bucurat de un extrem de mare interes în randul cercetatorilor si producatorilor de sisteme relationale.

Din realizarile obtinute în aceasta directie, se pot mentiona sistemul RANDEZVOUS, în care pe baza unui dialog dintre sistem si utilizatori se pot formula de catre utilizatori cereri neambigue. De asemenea, trebuie mentionat sistemul TIS care utilizeaza un limbaj de interogare pseudonatural, denumit QEURY, bazat pe concepte ale inteligentei artificiale.

Pentru utilizarea limbajului natural, ca limbaj de manipulare a datelor, este necesar sa existe în cadrul SGBDR un 'frontend', care sa asigure translatarea cererilor din limbaj natural în comenzi ale unui limbaj relational de manipulare a datelor recunoscut de sistem. Realizarea unui asemenea frontend reprezinta o sarcina extrem de dificila, care nu a putut fi îndeplinita decat partial, fie pentru fragmente de lexic extrem de limitate, fie pentru constructii de limbaj cu o flexibilitate redusa.

Eficacitatea utilizarii. Este influentata de posibilitatile de optimizare a cererilor de date pe care le ofera sistemul relational, astfel încat executia comenzilor sa fie cat mai eficienta. În acest sens, se afirma adesea ca limbajele bazate pe calculul relational sunt superioare limbajelor relationale algebrice, întrucat acestea din urma impun ordinea în care sa fie executate operatiile, în timp ce limbajele bazate pe calculul relational lasa compilatorului sau interpretorului sarcina sa determine cea mai eficienta ordine de executie a operatiilor. Pentru a se profita din plin de neproceduralitatea limbajelor bazate pe calculul relational este necesar ca sistemul sa se realizeze, odata cu translatarea cererilor din calculul relational în algebra relationala si optimizarea acestor cereri, urmand ca dupa aceea sa treaca la executarea lor.


Document Info


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