Sunteți pe pagina 1din 8

Limbaje utilizate n lucrul cu baze de date Limbajul de definire a datelor pentru modelul relaional

Schema unei baze de date relaionale este declarat utiliznd un limbaj de definire a datelor (LDD). Un LDD relaional este simplu. Fiecare relaie trebuie s fie declarat: atributele sale s fie definite, trebuie s fie specificat un domeniu pentru fiecare atribut i trebuie aleas o cheie. O abordare simpl, valabil pentru multe baze de date relaionale, este aceea prin care fiecrei relaii i se asociaz un fiier. Sunt posibile i alte abordri, dar necesit implementri mult mai complexe. Imaginile urmtoare prezint modalitatea de definire a atributelor unei noi relaii n ACCESS, precum i adugarea relaiei la baz.

Limbajul de manipulare a datelor pentru modelul relaional


Se cunosc foarte multe abordri n ceea ce privete limbajele de manipulare a datelor (LMD) organizate relaional. Cele mai multe dintre acestea sunt interactive, proiectate pentru folosirea conversaional de ctre un utilizator care ateapt un rspuns imediat. Exist patru sarcini de baz pe care trebuie s le realizeze un limbaj de manipulare a datelor: Inserarea datelor noi. tergerea datelor vechi. Actualizarea datelor. Consultarea datelor. Aceste funcii se regsesc ntr-o form sau alta n orice limbaj de manipulare a datelor. Complexitatea cea mai mare a operaiilor unui limbaj de manipulare a datelor se refer la ultima categorie de prelucrri: consultarea datelor. Inserarea, tergerea i actualizarea sunt, de obicei, operaii clare i sunt realizate de un utilizator experimentat (sau de un program de aplicaie), cunoscndu-se exact ce trebuie modificat i unde. Operaiile de consultare sau cerere de date (query), pe de alt parte, sunt deseori realizate de utilizatori care fie nu tiu de la nceput ce caut, fie i exprim cerinele ntr-un mod foarte complicat. Din aceast cauz, limbajele de manipulare a datelor sunt uneori numite limbaje de cereri (query languages). n cele ce urmeaz vom prezenta, prin intermediul unor exemple, trei abordri ale limbajului de cereri n modelul relaional: Algebra relaional. Calculul pe tupluri. Calculul pe domenii. Aceste trei limbaje s-au dovedit a fi echivalente, n sensul c orice cerere ce poate fi exprimat n unul din limbaje poate fi exprimat i n celelalte dou. Diferena const n facilitatea scrierii cererii respective.

Algebra Relaional Algebra Relaional furnizeaz instrumente pentru exprimarea procedural a cererilor de date. Const dintr-o colecie de operaii pe relaii, fiecare operaie avnd drept operanzi una sau mai multe relaii i producnd ca rezultat o alt relaie. E.F. Codd a introdus Algebra Relaional Standard, constituit din: 5 operaii de baz: o Reuniunea o Diferena o Produsul cartezian o Proiecia o Selecia 3 operaii derivate: o Jonciunea o Intersecia o Diviziunea. Ulterior, la Algebra Relaional Standard au fost adugate i alte operaii, aa-numitele operaii adiionale sau extensii ale Algebrei Relaionale Standard, cum ar fi: o Complementara o Splitarea o nchiderea tranzitiv. n cele ce urmeaz presupunem c relaia R are gradul r iar S are gradul s.

Reuniunea. Pentru dou relaii R i S se poate nota: R US, UNION(R,S), ADD(R,S). Reuniunea relaiilor R i S este mulimea tuplurilor care se gsesc n cel puin una din relaiile R sau S. Aceast operaie se poate aplica numai n cazul n care R i S au aceeai schem. Dac atributele au nume se cere ca, n plus, cele dou liste de nume s coincid i rezultatul va avea aceeai list de nume pentru atribute. Diferena. Pentru dou relaii R i S se poate nota: R-S, MINUS(R,S), REMOVE(R,S). Diferena relaiilor R i S este mulimea tuplurilor din R care nu sunt n S. Este necesar s fie ndeplinite aceleai condiii ca pentru reuniune. Produsul cartezian. Pentru dou relaii R i S se poate nota: RS, PRODUCT(R,S), TIMES(R,S). Produsul cartezian al relaiilor R i S este mulimea tuplurilor cu r+s componente, n care primele r componente reprezint un tuplu n R iar ultimele s componente reprezint un tuplu n S. Dac atributele au nume, lista numelor atributelor din rezultat este reuniunea disjunct a celor dou liste (folosind calificri sau redenumiri pentru atributele cu aceleai nume n cele dou relaii). Proiecia. Fie relaia R de grad r. Proiecia relaiei R dup atributele c 1, c2,, ck (k<=r) se noteaz c1, c2,, ck(R), PROJECT(R; c1, c2,, ck) i este mulimea tuplurilor de aritate k n care se pstreaz doar valorile corespunztoare atributelor menionate explicit n proiecie. Dac relaia R are asociate nume pentru atribute, acestea se pot pstra n relaia rezultat. Se observ c acesast operaie corespunde unor tieturi verticale n R. Selecia. Fie F o formul logic format din operanzi care sunt constante sau nume de componente n tupluri i operatori aritmetici i/sau logici. Selecia relaiei R n raport cu formula F se noteaz F(R), SELECT(R; F) i reprezint mulimea tuplurilor din R pentru care formula F devine adevrat. Relaia rezultat are pentru atribute aceleai nume ca i relaia R. Toate constantele care apar n F sunt incluse ntre apostrofuri.

Operaiile derivate se pot exprima n funcie de operaiile de baz. Utilizarea acestora permite o exprimare mai simpl a cererilor i, dac sunt bine implementate, obinerea unui rspuns mai rapid. Jonciunea. Este numit i uniune sau join. O -uniune a relaiilor R i S dup coloanele i i j, unde este un operator de comparaie este notat UNION(R,S; ij), JOIN(R,S; ij) sau R Xij S este constituit din mulimea tuplurilor produsului cartezian dintre R i S, pentru care a i-a component a lui R se afl n relaia cu a j-a component a lui S. Dac R i S au nume pentru atribute, n loc de i i j se pot folosi numele atributelor corespunztoare. Jonciunea este o operaie derivat deoarece se poate exprima cu ajutorul operaiilor de baz prin formula: R X ij S= i(r+j) (RS). Dac este operatorul =, operaia se numete echiuniune sau echijoin. Un caz particular de jonciune este jonciunea natural. Uniunea natural a relaiilor R i S, notat R X S, se aplic dac cele dou relaii au nume asociate atributelor i, n acest caz, se selecteaz din produsul cartezian al relaiilor R i S acele tupluri ce conin valori comune pentru cmpurile cu aceleai nume din cele dou relaii i apoi se elimin valorile din cmpurile lui S comune cu cele din R. Intersecia. Intersecia relaiilor R i S, notat RS, INTERSECT(R,S), AND(R,S), este constituit din mulimea tuplurilor care se gsesc n ambele relaii. Se aplic n condiiile specificate la reuniune. Intersecia se poate exprima prin operaiile de baz cu formula: RS=R-(R-S). Diviziunea. Fie relaiile R de aritate r i S de aritate s, cu r >s i S. Diviziunea sau ctul lui R prin S, notat RS, este mulimea tuplurilor a de aritate r-s astfel nct, pentru orice tuplu b al lui S, tuplul ab este n R. Dac atributele celor dou relaii au nume, atunci lista atributelor lui S trebuie s fie o submulime a listei atributelor lui R iar rezultatul are ca list de atribute diferena celor dou liste. Ctul se poate exprima prin operaiile de baz cu formula: RS= 1, 2,, r-s(R)- 1, 2,, r-s(1, 2,, r-s(R)S)-R).

Exemplul 1. Fie relaiile R i S, cu schemele i extensiile prezentate mai jos: R A a d c B b a b C c f d S D b d E g a F a f

n acest caz, rezultatele aplicrii operatorilor: reuniune, diferen, produs cartezian, proiecie, selecie i intersecie asupra relaiilor R i S (cu precizrile indicate pentru proiecie i selecie) sunt: RUS a d c b R-S a c b b c d

b a b g

c f d a

RS a a d d c c

A,C(R),
b b a a b b c c f f d d b d b d b d g a g a g a a f a f a f a d c c f d

B=b (R),
a c b b c d

RS d

Exemplul 2. Fie relaiile R i S, cu schemele i extensiile urmtoare: R A a a b e e a B b b c d d b C c e e c e d D d f f d f e S E c e F d f

n acest caz, ctul lui R prin S este: RS

RS

a e

b d

Exemplul 3. Fie relaiile R i S, cu schemele i extensiile de mai jos: R A 1 4 7 B 2 5 8 C 3 6 9 S D 3 6 E 1 2

n acest caz, jonciunea lui R cu S cu B<D este: R XB<D S

RS

A 1 1 4

B 2 2 5

C 3 3 6

D 3 6 6

E 1 2 2

Exemplul 4. Fie relaiile R i S, cu schemele i extensiile actuale: R A a d b c B b b b a C c c f d S B b b a C c c d D d e b

n acest caz, jonciunea natural a lui R cu S este: R XS

RS

A a a d d c

B b b b b a

C c c c c d

D d e d e b

Exemplul 5. Fie urmtoarea schem: Relaia ANGAJATI Nume cmp Marca Nume Prenume Initiala_tatalui Data_angajarii Relaia CHITANTE Nume cmp Numar_chitanta Tip Numr Text 20 Text 20 Text 1 Dat Tip Numr Cheie Da

Cheie Da

Data Total Avans Numar_cont Credit_card Tip_card Marca

Dat Numr Numr Text 9 Numr Text 2 Numr

S se scrie o cerere prin care s se obin un tabel cu urmtoarele date: Numar_chitanta, Data, Total, Marca, Nume, Prenume pentru toate chitanele exprimnd pli salariale efectuate nainte de luna martie 2005. n cazul acestei cereri, sunt necesari operatorii: Selecie, Proiecie i Jonciune. Cererea formulat se poate exprima, n limbajul algebrei relaionale, prin secvena: LIST JOIN(CHITANTE, ANGAJATI ) SELECT(Date&<3/1/05) PROJECT(Numar_chitanta, Data, Total_chitanta, Marca, Nume, Prenume)

6.2.2 SQL Unul dintre cele mai puternice limbaje structurate pentru interogarea bazelor de date relaionale l constituie SQL (Structured Query Language). Pe lng manipularea i regsirea datelor, limbajul permite efectuarea de operaii complexe privind actualizarea i administrarea bazelor de date. SQL este un limbaj neprocedural sau declarativ, deoarece utilizatorul lui descrie numai informaiile pe care vrea s le obin n urma interogrii, fr a fi nevoie s stabileasc modalitile de a ajunge la rezultatele dorite. n acelai timp, SQL nu poate fi considerat un limbaj de programare sau unul de sistem ci, mai curnd, face parte din categoria limbajelor de aplicaii, fiind orientat pe mulimi. Foarte frecvent, limbajul SQL este utilizat n administrarea bazelor de date client/server, aplicaia client fiind aceea care genereaz instruciunile SQL. Exist un anumit grad de standardizare a limbajului SQL, mai multe sisteme de gestiune a bazelor de date recunoscnd principalele instruciuni ale acestuia (de exemplu: Oracle, Access, Sybase etc.). Pe plan mondial, standardul n domeniu este considerat ANSI (American National Standards Institute) SQL care are n vedere att aspectele de definire, interogare, manipulare a datelor, procesare a tranzaciilor, ct i caracteristicile complexe privind integritatea informaiilor. Muli productori de sisteme de gestiune a bazelor de date furnizeaz propriile extensii ale limbajului SQL, asigurndu-i astfel exclusivitatea. Se cunosc n literatura de specialitate trei metode de baz privind implementarea limbajului SQL i anume: cea prin apelare direct (Direct Invocation) - const n introducerea instruciunilor SQL de la prompter; cea modular (Modul Language) - folosete anumite proceduri apelate de programele aplicaiei; cea de tip ncapsulat (Embedded SQL) - are n vedere instruciunile ncapsulate n codul de program, fiind de tip static i dinamic. n cazul exemplului 5 considerat mai sus, cererea SQL are forma: SELECT Numar_chitanta, Data, Total_chitanta, CHITANTE.Marca, Nume, Prenume FROM CHITANTE, ANGAJATI WHERE Date&<3/1/05 AND CHITANTE.Marca# ="ANGAJATI.Marca#" n Access, cererea SQL are forma:

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