Documente Academic
Documente Profesional
Documente Cultură
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.
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
(
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.