Sunteți pe pagina 1din 4

Limbaje de manipulare a datelor relaţionale

Limbajul de manipulare a datelor (LMD) este o parte importantă a unui sistem de gestiune a
bazelor de date. Prin intermediul unui limbaj de manipulare a datelor se interoghează baza de
date. De aceea LMD mai este denumit uneori şi limbaj de interogare a bazei de date, dar LMD
realizează şi inserţia de noi înregistrări în baza de date, ştergerea, modificarea înregistrărilor
din baza de date. De asemenea LMD relaţionale reale includ şi facilităţi de efectuare de
calcule aritmetice sau diverse funcţii asupra atributelor tuplelor, de asociere a unor alte nume
(alias) atributelor relaţiilor sau de grupare (agregare) a tuplelor relaţiilor şi executarea unor
operaţii cum ar fi de numărare, însumare, medie, minimum, maximum, calculul abaterii
standard etc. LMD relaţionale se împart în două mari categorii funcţie de formalismele
abstracte, prin care se exprimă interogările, ce stau la baza acestor limbaje. Formalismele au
fost propuse de către Codd ca referinţe ce cuprind facilităţile minime pe care trebuie să le aibă
orice LMD pentru a fi considerat limbaj relaţional complet. Cele două categorii sunt:
- LMD algebrice, bazate pe algebra relaţională- relaţiile sunt privite ca mulţimi asupra
cărora sunt aplicate operatori specifici mulţimilor sau specifici tuplelor ce compun
relaţiile;
- LMD bazate pe calcul relaţional- se specifică mulţimea tuplelor constituente prin
enumerarea tuturor tuplelor care au anumite proprietăţi comune (îndeplinesc o
annnumită condiţie). Aceste limbaje se împart în două categorii funcţie de natura
entităţilor asupra căruia acţionează: tuple sau domenii de atribute. Astfel avem:
o limbaje bazate de calculul relaţional al tuplelor (CRT);
o limbaje bazate pe calculul relaţional al domeniilor (CRD).
Limbajele bazate pe algebra relaţională, pe calculul relaţional al domeniilor sau pe calculul
relaţional al domeniilor sunt echivalente din punct de vedere al puterii de expresie, adică orice
interogare exprimată într-unul din cele trei formalisme poate fi exprimată echivalent (are
acelaşi rezultat) în celelalte două.
Limbajele bazate pe algebra relaţională, pe calculul relaţional al domeniilor sau pe calculul
relaţional al domeniilor sunt limaje relaţionale abstracte ce nu sunt implementate ca atare în
nici un sistem de gestiune a bazelor de date.Ele servesc drept referinţă pentru evaluarea
limbajelor existente în sistemele de gestiune a bazelor de date actuale care au implementat
limbaje derivate din formalismele abstracte.
Cele mai reprezentative limbaje din fiecare categorie sunt:
ISBL ( Informarion System Base Language) este limbaj de interogare bazat pe algebra
relaţională.
QUEL este limbajul bazat pe calculul relaţional al tuplelor. Acesta este limbajul de interogare
al SGBD-ului INGRES dezvoltat în cadrul Universităţii Berkeley California.
QBE ( Query By Example) limba bazat pe calculul relaţional al domeniilor. A fost dezvoltat
de către firma IBM.
Există şi o serie de limbaje care mixează formalismele abstracte între care unul din cel mai
cunoscut care este acum folosit de majoritatea SGBD-urilor se numeşte SQL.

Limbaje bazate pe algebra relaţională


Aceste limbaje consideră relaţiile ca nişte mulţimi asupra cărora operează nişte operatori
pentru a formula interogările. Aceste limbaje sunt considerate de tip procedural deoarece
interogările sunt secvenţe de operatori prin care se specifică în mod explicit modul de obţinere
a relaţiei rezultat.
Operatorii algebrei relaţionale sunt operatori unari (care acţionează asupra unei singure relaţii)
sau binari ( care acţionează asupra a două relaţii). Aceşti oeratori se pot clasifica în două
categorii:
- operatori pe mulţimi- acţionează asupra relaţiilor văzute ca mulţimi de elemente fără a
considera carecterul de tuplă a elementelor relaţiilor;
- operatori relaţionali speciali ce iau în considerare carecterul de tuplă al relaţiilor.
Operaţiile pe mulţimi sunt reuniunea, intersecţia, diferenţa şi produsul cartezian. Pentru
reuniune, intersecţie şi diferenţă cele două relaţii trebuie să fie compatibile, adică să aibă
acelaşi grad iar atributele să aibă domeniile derivate din acelaşi tip de date.
Reuniunea a două relaţii A şi B, notată A ∪ B , este o relaţie R care conţine toate tuplele cu
proprietatea că aparţin relaţiei A sau relaţiei B.
Intersecţia a două relaţii A şi B, notată A ∩ B , este o relaţie R ce conţine tuplele că aparţin
atât relaţiei A cât şi relaţiei B;
Diferenţa a două relaţii A şi B, notată A − B , este o relaţie R care conţine tuplele cu
proprietatea că aparţin relaţiei A şi nu aparţin relaţiei B.
Produsul cartezian a două relaţii A şi B, notat A × B , A fiind de gradul m şi B de gradul n,
este o relaţie de grad m + n , care conţine toate tuplele obţinute prin concatenarea fiecărei
tuple din relaţia A cu fiecare tuplă din relaţia B.
Operatorii relaţionali speciali sunt selecţia, proiecţia, cuplarea, diviziunea.
Selecţia datorită unui predicat P al unei relaţii A, notată σ P ( A) , este o relaţie R care conţine
toate tuplele din relaţia A cu proprietatea că satisfac predicatul P. Selecţia este un operator
unar. Predicatul P este o formulă care poate fi formată din:
- operanzi care sunt nume de atribute sau constante;
- operatori de comparaţie ( =,<,>,!=,<=,>=) sau operatori logici (&,|,!).
Exemple:
Sectia _ I = σ coddept=1 ( Salariati ) , este o selecţie după atributul coddept (codul
departamentului) din relaţia Salariati care conţine doar salariaţii ce au codul departamenului
egal cu unu.
muncitori _ 1 = σ coddept =1& functia = muncitor (Salariati ) selecţia din relaţia Salariati a angajaţilor care
au coddept egal cu unu şi funcţia de muncitor. Mai simplu dacă relaţia Sectia_I există această
selecţie se poate scrie:
muncitori _ 1 = σ functia = muncitor (Salariati _ I )
Proiecţia, pe atributele A1 , A2 ,..., An , a unei relaţii B de grad m > n , ce conţine atributele
A1 , A2 ,..., An , notată π A1, A 2,... An (B ) , este o relaţie R de grad n obţinută din relaţia B prin
eliminarea din aceasta a atributelor ce nu sunt specificate în lista de proiecţie, reordonarea
atributelor în ardinea specificată de lista atributelor şi eliminarea tuplelor duplicat.
Proiecţia este de asemenea un operator unar ce se oplică unei singure relaţii.
Exemplu:
σ marca,nume, prenume (Salariati ) este o proiecţie asupra relaţiei Salariaţi care conţine numai
atributele marca, nume şi prenume.
Cuplarea (JOIN) este un operator binar ce acţionează asupra a două relaţii A şi B. Fie X un
atribut al relaţiei A şi B un atribut al relaţiei B care au domenii compatibile şi θ un operator
de comparaţie (=, !=, <, >, <=, >= ). Numim o θ -cuplare a relaţiilor A şi B după atributele X
şi Y, notată A ← → B , o relaţie R care conţine acele cuple ale produsului cartezian
XθY

A × B cu proprietatea că valorile x şi y ale atributelor X şi Y sunt în relaţia xθy . Cu alte


cuvinte operatorul de cuplare a două relaţii combină cele două relaţii pe baza unor atribute
comune. Dacă operatorul θ este operatorul de egalitate, atunci operaţia se numeşte
echicuplare (equijoin).
Cuplarea naturală a două relaţii, notată A ↔ B , având atributele X din A şi Y din B cu
domenii compatibile se obţine prin efectuarea produsului cartezian dintre A şi B, apoi se
aplică selecţia din A × B acele tuple pentru care atributul X este egal cu Y. Se efecuează o
proiecţie pentru a elimina coloana corespunzătoare atributului Y.
Prin urmare diferenţa între echicuplare şi cuplarea naturală este aceea că echicuplarea conţine
două coloane cu valori identice şi de asemenea poate conţine tuple duplicat.
Remarcă. Operatorul de cuplare este echivalentul aplicării operaorilor produs cartezian şi
selecţie A ← → B = σ XθY ( A × B )
XθY

Exemplu.
Să se afişeze salariaţii din firmă şi departamentele la care aceştia lucrează.
Presupunând că avem relaţiile Salariaţi(marca, nume, prenume, coddept, functie, datan,
dataang, salariu) şi relaţia Dept(cod,denumire) avem
Salariati _ dept = Salariati ←  → Dept
coddept = cod

Diviziunea relaţiei A de grad m, prin relaţia B de grad n, notată A ÷ B , este o relaţie de grad
m-n, formată din mulţimea tuplelor r cu proprietatea că pentru orice tuplă b din B există o
tuplă a în A egală cu rezultatul concatenării tuplelor r şi b. Mulţimea atributelor relaţiei B
trebuie să fie o submulţime a mulţimii atributelor relaţiei A. Relaţia R va conţine doar acele
atribute din relaţia A care nu apar în relaţia B. O tuplă din relaţia A este reţinută în urma
relaţiei de diviziune numai dacă este legată de o tuplă din B printr-o relaţie predefinită.
Exemplu
Fie relaţiile Furnizor(codf,nume,adresa,oras,judet)
Produs(codp, denumire, um)
Oferta(codp, codf,cantitate, pret)
Se cere să se determine codul produselor (codp),cantitatea şi preţul pentru produsele care au
fost oferite de furnizori din oraşul Ploieşti
Acest lucru se realizează printr-o operaţie de diviziune a relaţiei Oferta cu o proiecţie a
selecţiei din relaţia Furnizor denumită Furnizor_PL ce cuprinde codul pentru acei furnizori ce
au atributul oras=Ploiesti
Furnizor _ PL = π codf (σ oras = Ploiesti (Furnizor ))
prod _ cod = Oferte ÷ Furnizor _ PL

Aplicaţii ale algebrei relaţionale la formularea interogărilor


Se prezintă câteva exemple mai complicate pentru a ilustra modul în care prin algebra
relaţională este folosită la formularea interogărilor. De regulă soluţia nu este unică, orice
introgare poate fi exprimată prin mai multe secvenţe echivalente posibile. Este de dorit ca
secvenţa sş fie optimă din punct de vedere al volumului de calcul şi al consumului de
memorie.
Pentru exemplificare considerăm relaţiile:
Facultate(cod, denumire,adresa);
Profesori(id, codf,nume,prenume, functie,disciplina);
Studenti(cods,nume,prenume,codf,incadrare,an);
Note(codprof,codstud,nota).
Aplicaţia 1. Numele profesorilor cu care studiază studentul Ionescu;
T = π cods (σ nume = Ionescu (Studenti ))
T1 = π codprof (Note ←  → T )
codstud = cods

(
R = π nume , prenume profesori ← → T1
id = codprof
)
Aplicaţia 2. Numele studenţilor la care predă profesorul Popescu;
Aplicaţia 3. Numele studenţilor şi notele celor care au obţinut o notă la "Baze de date" mai
mare decât studentul Ionescu;
Aplicaţia 4. Numele studenţilor de la zi care sunt restanţieri şi disciplinele la care au luat
aceste note.

S-ar putea să vă placă și