Sunteți pe pagina 1din 13

Operaiuni n modelul relaional. Introducere n algebra relaional prof. dr. ing.

Mircea Petrescu
Limbaj de interogare = limbaj n care un utilizator solicit informaii din baza de date (BD). De obicei, limbajele de interogare sunt de nivel mai nalt dect limbajele standard de programare. Limbajele de interogare sunt procedurale sau ne-procedurale. n limbajele procedurale utilizatorul indic sistemului succesiunea de operaii asupra BD pentru a determina rezultatul dorit. n limbajele ne-procedurale, utilizatorul descrie rezultatul dorit, fr a indica procedura prin care acesta este obinut. Cele mai multe sisteme relaionale de BD folosesc un limbaj de interogare n care sunt prezente elemente ale ambelor abordri, att procedural, ct i ne-procedural. Limbaje foarte cunoscute: SQL, QBE, Datalog. n cele care urmeaz o introducere n limbajele fundamentale sau pure, respectiv algebra relaional i calculul relaional; sunt limbaje matematice, formale, ambele asociate cu modelul relaional de date. Algebra relaional este un limbaj procedural, pe cnd calculul relaional pe tupluri i calculul relaional pe domenii sunt limbaje ne-procedurale. Ambele familii de limbaje sunt concise i formale, fr a poseda cadrul sintactic al limbajelor comerciale de interogare; algebra relaional i calculul relaional sunt ns limbaje care pun n eviden foarte bine tehnicile principale folosite n procesul gsirii i extragerii informaiei din BD. Desigur, un limbaj complet destinat manipulrii BD nu este limitat la operaiuni de interogare, ci ndeplinete i funciuni de modificare a coninutului bazei de date. Astfel de funciuni const n inserarea i eliminarea de tupluri n executarea unor comenzi de modificare a tuplurilor .a. nainte de a prezenta operaiunile principale din algebra relaional, vom formula cteva observaii privind unele modele de date, n contextul de aici. n abordarea obiectual, pentru definirea (sau descrierea) datelor este folosit limbajul LDO (Limbaj de definire a obiectelor = ODL = Object Definition Language). S comparm, pe scurt, abordrile modelelor entitate-asociere, obiectual i relaional privind operaiunile asupra datelor: - n modelul EA nu se precizeaz, de obicei, o metod specific pentru manipularea datelor; - n LDO, deci n modelul obiectual, sunt folosite metode prin care se pot efectua orice operaii asupra datelor; - n modelul relaional, aa cum vom vedea, se folosete o familie standard de operaii asupra datelor. Observaia principal st n faptul c n abordarea relaional familia de operaii menionat nu este complet din punct de vedere Turing. Cu alte cuvinte, exist operaiuni asupra informaiilor dintro BD, care nu pot fi exprimate n algebra relaional, dar pot fi exprimate n metode LDO codificate n limbaje obinuite ca C++. Remarcm c acesta nu este rezultatul unei slbiciuni a algebrei relaionale sau a modelului relaional n general. Avantajul restrngerii lrgimii (spaiului) ocupat de operaiile relaionale const n posibilitatea de a optimiza frazele de interogare formulate ntr-un limbaj de programare de nivel foarte nalt, aa cum este SQL. Elemente de algebr relaional Aa cum s-a afirmat anterior, algebra relaional este unul din cele dou limbaje formale de interogare ale modelului relaional. Algebra relaional ofer mijloace puternice de a construi relaii noi din alte relaii date. Atunci cnd relaiile date sunt reprezentate de informaii memorate, relaiile construite cu mijloacele algebrei pot fi rspunsuri la fraze de interogare asupra acestor informaii.

Orice algebr permite construirea de expresii prin aplicarea unor operatori asupra unor operanzi atomici sau asupra altor expresii algebrice. Adesea, pentru a grupa operatorii i operanzii sunt folosite paranteze. n algebra relaional, operanzii sunt: a) variabile, care reprezint relaii; b) constante, care sunt relaii finite. n algebra relaional clasic toi operanzii i toate rezultatele expresiilor sunt mulimi. Vom grupa operaiile din algebra relaional tradiional (sau clasic) n patru clase: a) operaiunile specifice teoriei mulimilor (reuniune, intersecie, diferen), dar aplicate asupra relaiilor; b) operaiunile care ndeprteaz pri ale unei relaii (selecie, proiecie); c) operaiunile care combin tuplurile a dou relaii (produs cartezian, jonciune) d) operaiunea prin care sunt atribuite nume noi atributelor relaiei i/sau relaiei. O proprietate fundamental n algebra relaional const n faptul c fiecare operator accept nstanele unei (sau a dou) relaii n calitate de argumente i ntoarce ca rezultat o alt nstan de relaie. Aceast proprietate permite folosirea compus (compunerea) operatorilor pentru a forma fraze de interogare complexe. O astfel de fraz de interogare corespunde unei expresii algebrice relaionale, care se definete recursiv ca fiind o relaie, un operator algebric unar aplicat unei singure expresii, sau ca un operator algebric binar aplicat la dou expresii. Operaiuni pe mulimi aplicate relaiilor Reuniunea Fie r, s relaii. Reuniunea este t r s, unde t = { tupluri ti, a. . ti r, ti r }. Condiii: r, s au mulimi identice de atribute, cu aceleai domenii de valori. Exemplu: r nume Vlad Ionescu Raluca Cernat nume Raluca Cernat Dan Teodoru adres Str. Paris 20, Bucureti Str. Horia 45, Cluj adres Str. Horia 45, Cluj Str. Lung 38, Braov gen M F gen F M datanaterii 23/4/1942 15/6/1955 datanaterii 15/6/1955 8/11/1962

Rezultatul reuniunii t = r s: t nume Vlad Ionescu Raluca Cernat Dan Teodoru adres Str. Paris 20, Bucureti Str. Horia 45, Cluj Str. Lung 38, Braov gen M F M datanaterii 23/4/1942 15/6/1955 8/11/1962

Intersecia t = r s, unde t = { tupluri ti, a. . ti r ti s }. Rezultatul interseciei t = r s: nume t Raluca Cernat adres Str. Horia 45, Cluj 2 gen F datanaterii 15/6/1955

Diferena t = r s, unde t = { tupluri ti, a. . ti r ti s }. t = s r, unde t = { tupluri ti, a. . ti s ti r }. Observm c r s s r. Exemple: rs sr Proiecia Fie relaia r cu atributele A1, A2, ..., An. Fie, de asemenea, atributele A1, A2, ..., Ak, a. . { A1, A2, ..., Ak } { A1, A2, ..., An }. Atunci, proiecia relaiei r pe atributele A1, A2, ..., Ak (sau pe coloanele acestor atribute), notat cu A1, A2, ..., Ak (r), este relaia obinut din r prin extragerea coloanelor atributelor A1, A2, ..., Ak. Exemplu expresia nume, datanaterii(s) conduce la rezultatul: nume datanaterii Raluca Cernat 15/6/1955 Dan Teodoru 8/11/1962 Not. Proiecia se poate defini formal ca fiind relaia: i1,i2, ..., ik = { tupluri ti, a. . ti = (a1, a2, ..., ak), iar n r tuplul (b1, b2, ..., bn), aj = bj pentru j = 1... k } Mai sus aj, respectiv bj, sunt valori ale atributelor corespunztoare din mulimile { A1, A2, ..., Ak } i, evident, { A1, A2, ..., An }. Simbolurile i1, i2, etc. Reprezint coloane din r. Selecia Prin definiie, operaiunea de selecie aplicat unei relaii r, notat cu F(r), const n extragerea lui r a acelor tupluri care ndeplinesc clauza (formula) F. Schema relaiei obinute este aceeai cu schema relaiei r, atributele fiind aranjate prin convenie n aceeai ordine. Operanzii coninui n clauza F sunt constante sau atribute din schema relaiei r. Operatorii sunt fie operatori aritmetici uzuali (de comparaie), fie operatori logici. Exemplu: datanaterii 23/4/1962 datanaterii > 15/6/1955(t), unde relaia t a fost calculat prin reuniune ntrun exemplu precedent. Rezultat: nume Vlad Ionescu Dan Teodoru Produsul cartezian Fie relaiile r i s de ariti R1, R2. Fie n r i s tuplurile (ri1, ri2, ..., riK1), respectiv (si1, si2, ..., sik2). Formal, produsul cartezian t = r s al relaiilor r i s se definete prin: 3 adres Str. Paris 20, Bucureti Str. Lung 38, Braov gen M M datanaterii 23/4/1942 8/11/1962 nume Vlad Ionescu nume Dan Teodoru adres Str. Paris 20, Bucureti adres Str. Lung 38, Braov gen M gen M datanaterii 23/4/1942 datanaterii 8/11/1962

t = { tupluri ti, a. . ti = (ri1ri2...riK1si1si2...siK2), cu (ri1ri2...riK1) r i (si1si2...siK2) s }. Exemplu: r A a A a a B b B b b C c C c c s D d D d d E e e E e F f f F f

rs

Observaie: numrul de tupluri ale produsului cartezian este produsul numerelor de tupluri ale relaiilor r i s. Consecine privind timpul de execuie i memoria ocupat. Situaie particular cea n care relaiile operand au atribute comune. Exemplu: r A a A a a B b B b b C c r.C c c s C q c s.C q c q c D e e D e E f f E f

rs

Observm c n relaia rezultat, numele atributelor comune sunt completate cu numele relaiilor din care provin (r.C, s.C). Jonciunea teta Jonciunea teta este o operaie compus, care implic efectuarea unui produs cartezian i a unei selecii. Fie relaiile r i s, precum i o clauz F care conine ca operanzi constante i atribute din schemele relaiilor, iar ca operatori operatorii aritmetici uzuali i operatorii logici. Notaia folosit r >< s pentru reprezentarea operaiei jonciune teta este . Conform definiiei, jonciunea teta F este efectuat n urmtoarea ordine: a) se calculeaz produsul cartezian r s; b) din relaia rezultat sunt extrase prin selecie tuplurile care satisfac clauza F. Exemplu:

r >< s B<
s B b /2 D d E e

Fie relaiile r i s definite ca mai jos: A B C r a b c

Produsul cartezian: A rs a a Selecia: B<(r s) A a

r.B b b r.B b

C c c C c

s.B b /2 b /2 s.B /2 /2

D d d D

E e e E

Firete, n cazul relaiilor mai ample pot s apar clauze mai complexe ca cea din exemplul precedent.

Jonciunea natural
Fie relaiile r i s ale cror scheme conin un numr de atribute comune. Jonciunea natural, notat cu simbolul r >< s , se calculeaz n dou etape: a) mai inti, este determinat produsul cartezian r s; b) apoi, asupra produsului cartezian obinut, este efectuat o operaiune de selecie, prin extragerea tuplurilor care conin acelai valori ale atributelor comune din schemele relaiilor incidente r i s; c) n final, sunt eliminate coloanele redundante rezultate. Exemplu: r >< s r A a B b r.B b b r.B b C c C c c C c s B b s.B b b s.B b D d d D d E e D d E e e E e E e

Produsul cartezian: A rs a a Selecia: r.B=s.B(r s) A a

Rezultatul final eliminm una din coloanele redundante r.B sau s.B: A B C D a b c d Iat un exemplu mai apropiat de realitate: 5

ARHITECT

Nume Clin Sandu Nume Sandu Mihai

Adres Str. Lung Str. Alb Adres Str. Alb Str. Nou

DataNaterii 5.5.70 15.10.72 Domeniul Civile Industriale

CONSTRUCTOR

Evident c jonciunea natural ARHITECT >< CONSTRUCTOR ne conduce la tuplul (Sandu, Str. Alb, 15.10.72, Civile), care se refer la arhitectul Sandu, care conduce sau efectueaz n acelai timp i lucrri de construcii. Rmn ns tuplurile dangling (Clin, Str. Lung, 5.5.70) din relaia ARHITECT i (Mihai, Str. Nou, Industriale) din relaia CONSTRUCTOR, a cror informaie poate fi pierdut prin efectuarea operaiunii de jonciune natural. Pentru a evita aceast situaie se realizeaz o jonciune natural extern complet: ARHITECT NATURAL FULL OUTER JOIN CONSTRUCTOR = Nume Adres DataNaterii Domeniul Sandu Str. Alb 15.10.72 Civile Clin Str. Lung 5.5.70 NULL Mihai Str. Nou NULL Industriale Desigur, se pot efectua, asemntor, operaiunile de jonciune natural extern stnga i dreapta.

Semijonciunea
Prin definiie, semijonciunea relaiilor r i s, notat r >< s , este proiecia jonciunii naturale a celor dou relaii pe atributele din r: r >< s = R (r >< s ) . O formul echivalent pentru realizarea acestei operaiuni este r >< s = r >< RS (s) . n general, semijonciunea nu este simetric, deci r >< s s >< r .

Jonciunea extern
Fie relaiile r i s cu schemele R(A, B, C, D), S(A, B, E, F): A B C D r s a b c d m n p q Jonciunea natural: A.R rs a a m m Evident c r >< s = B.R b b n n A a C c c p p B b D d d q q C c A.S a u a u D d A a u B.S b v b v E e B b v E e x e x F f E e x F f y f y F f y

Observm ns c tuplurile (m, n, p, q) din r i (u, v, x, y) din s se pierd n urma operaiei r >< s , ceea ce ar putea produce dificulti n exploatarea BD (de exemplu, dac r >< s este o vedere). Astfel de tupluri se numesc tupluri dangling. Dac ele nu sunt considerate se pierde din informaie. Pentru a rezolva problema se introduce operaiunea de jonciune extern complet, care se efectueaz ca mai jos: 6

r NATURAL FULL OUTER JOIN s = A a m u

B b n v

C c p NULL

D d q NULL

E e NULL x

F f NULL y

Dac se urmrete s nu se piard numai tuplurile dangling ale uneia din relaiile r sau s, se introduce operaiunile de jonciune extern stng, respectiv dreapt: r NATURAL LEFT OUTER JOIN s = A B a b m n r NATURAL RIGHT OUTER JOIN s = A B a b u v C c p C c NULL D d q D d NULL E e NULL E e x F f NULL F f y

Notaia folosit mai sus pentru operatori aparine standardului SQL2.

Redenumirea schemelor de relaie


Fie schema de relaie R, cu atributele { A1, A2, ..., An }. Pentru a schimba numele schemei din R n S, dar cu aceleai atribute, folosim operatorul , cu sintaxa (n algebra relaional): S ( A1 , A2 ,..., An ) ( R ) . Rezultatul este exact aceeai relaie, dar cu numele S. Operaiuni relaionale pe multiset-uri (pungi)

Multiset = mulime n care se admit apariii multiple ale unor elemente. Mulimile convenionale nu conin duplicate. n practic, relaiile sunt multiset-uri, adic unele tupluri apar de mai multe ori ntr-o relaie. Exemplu: A B 1 2 3 4 3 4 Necesitatea multiset-urilor
Primele SGBD care au folosit modelul relaional au coninut limbaje de interogare bazate pe algebra relaional. Aceste sisteme tratau relaiile ca multiset-uri, nu ca mulimi convenionale, din raiuni de eficien. Cu alte cuvinte, dac utilizatorul nu cerea explicit ca tuplurile duplicat (prezente n realitate) s fie condensate n unul singur, relaiile rezultate puteau conine duplicate. Exemplu: A B C 1 2 9 3 4 5 3 4 7 3 4 1 1 2 6

Dac se execut proiecia A, B (r ) a relaiei r pe atributele A i B obinem: A B 1 2 3 4 3 4 3 4 1 2 n ipoteza c se dorete ca rezultatul proieciei s fie o relaie (mulime) convenional, relaia de mai sus trebuie prelucrat n continuare, n scopul eliminrii duplicatelor. Aceast operaie reclam un interval de timp suplimentar. n ipoteza c se admit multiset-uri ca rezultate, operaia de proiecie se efectueaz mai repede, deoarece nu este necesar ca fiecare tuplu s fie comparat cu alte tupluri generate prin proiecie. Mai remarcm un alt aspect al admiterii multiset-urilor. Dac operaia de proiecie a relaiei r de mai sus este efectuat n scopul de a calcula ulterior un agregat de exemplu valoarea medie a unui atribut fie el B, vom obine 8:3 n cazul n care condensm tuplurile duplicat, respectiv 16:5 = 3,2 dac admitem ca rezultat multisetul.

Reuniunea multiset-urilor
Exemplu: A r 1 3 3 rs A 1 3 3 1 1 3 4 B 2 4 4 B 2 4 4 2 2 4 5 s A 1 1 3 4 B 2 2 4 5

Aadar, dac un tuplu t este prezent de m ori n r i de n ori n s, va fi prezent de m+n ori n r s.

Intersecia multiseturilor
Exemplu pentru r i s de mai sus avem: A B n acest caz, tuplul t apare de min(m,n) ori n relaia obinut rs prin intersecie. 1 2 3 4

Diferena multiset-urilor
Exemplu pentru aceleai relaii r i s de mai sus: A B rs 3 4 n acest caz, dac tuplul t apare de m ori n r si de n ori n s, n relaia diferen el va fi prezent de max(0, m-n) ori. Cu alte cuvinte, dac t apare n r de mai multe ori ca n s, atunci el va fi prezent n 8

r-s de un numr de ori egal cu diferena ntre numrul apariiilor sale n r i numrul de apariii din s. Dac t apare n s cel puin de acelai numr de ori ca n r, atunci acest tuplu nu va fi deloc prezent n r-s. n fapt, putem spune c fiecare apariie a tuplului t n s va anihila o apariie n r.

Proiecia multiset-urilor
Operaiunea a fost deja prezentat.

Selecia pe multiset-uri
Exemplu pentru relaia s definit astfel: A B s 1 2 1 2 3 4 4 5

B 4 (s )

A 3 4

B 4 5

Produsul multiset-urilor
Se efectueaz exact ca produsul cartezian al relaiilor convenionale, prin concatenare repetat. A r.B s.B A B B C r s rs 1 2 4 5 1 2 4 3 4 6 7 1 2 6 3 4 6 7 1 2 6 3 4 4 3 4 6 3 4 6 3 4 4 3 4 6 3 4 6 C 5 7 7 5 7 7 5 7 7

Jonciunea multiset-urilor
n cazul jonciunii naturale pentru r i s de mai sus obinem: r >< s A B C 3 4 5

r >< s r.B < s.B

A 1 1 1 3 3 3 3

r.B 2 2 2 4 4 4 4

s.B 4 6 6 6 6 6 6

C 5 7 7 7 7 7 7
9

Operatori extini ai algebrei relaionale

Majoritatea limbajelor de interogare moderne se bazeaz pe definiiile operaiunilor relaionale, precum i pe cele privind tratarea multiset-urilor. Totodat, n practica actual, limbaje de interogare ca SQL permit efectuarea unor operaii suplimentare, importante n aplicaii. Dintre acestea, menionm: 1. Operatorul pentru eliminarea duplicatelor transform un multiset ntr-o mulime , eliminnd toate copiile fiecrui tuplu, n afar de una. 2. Operatori de agregare ca suma sau media nu aparin algebrei relaionale. Aceti operatori sunt folosii de operatorul de grupare. Operatorii de agregare se aplic atributelor (coloanelor) unei relaii; de exemplu, suma unei coloane conduce la valaorea unui numr care este suma tuturor valorilor de coloan. 3. Gruparea tuplurilor se realizeaz tinnd seama de valoarea unui atribut sau de valorile mai multor atribute din tuplurile respective. Ca urmare, mulimea tuplurilor unei relaii este partiionat n grupuri. n continuare, coloanelor fiecrui grup li se poate aplica operaia de agregare, ceea ce permite s fie formulate interogri care nu se pot exprima n algebra relaional clasic. Operatorul de grupare, notat cu , combin efectele gruprii i agregrii. 4. Operatorul de sortare transform o relaie ntr-o list de tupluri, sortate potrivit valorii unuia sau mai multor atribute. Operatorul trebuie folosit numai ca un pas final al unei successiuni de operaiuni, deoarece ali operatori algebrici relaionali se aplic numai mulimilor sau multiset-urilor, dar niciodat listelor. 5. Proiecia extins amplific funciile operatorului . n forma s-a generalizat, operatorul , n afar de proiectarea unor coloane, conduce la efectuarea de calcule asupra coloanelor din relaia-argument, avnd ca efect producerea unor coloane noi. 6. Operatorul de jonciune estern este o variant a operatorului convenional, care permite evitarea pierderii tuplurilor dangling. n rezultatul jonciunii externe, tuplurile dangling sunt completate (padded) cu valori nule, astfel nct s poate fi reprezentate n ieire. Operatori de agregare Operatori standard: SUM produce suma unei coloane cu valori numerice. AVG produce valoarea medie a unei coloane cu valori numerice. MIN, MAX produce cea mai mic, respectiv cea mai mare valoare dintr-o coloan cu valori numerice. Dac se aplic unei coloane cu valori reprezentate de iruri de caractere, aceti operatori produc prima sau ultima valoare din punct de vedere lexicografic (alfabetic). COUNT d numrul de valori (nu neaprat distincte) dintr-o coloan. Aplicat oricrui atribut al unei relaii, operatorul d numrul de tupluri ale relaiei, incluznd duplicatele. Exemplu fie relaia r definit astfel: A B r 1 2 3 4 3 4 1 2 1. 2. 3. 4. SUM(B) = 2+4+4+2 = 12 AVG(A) = (1+3+3+1)/4 = 2 MIN(B) = 2 MAX(A) = 3 10

5. COUNT(A) = 4 Gruparea Uneori utilizatorul unei baze de date nu dorete s efectueze o simpl mediere sau alt operaiune de agregare pe o coloan ntreag. Adesea se urmrete studiul tuplurilor unei relaii n grupuri, constituite innd seama de valoarea unora din atribute, iar agregarea se face numai n interiorul fiecrui grup. Exemplu o BD bancar, cu o relaie care conine valorile sumelor retrase de clienii bncii: Nume client Valoare retras Ionescu 5000 Barbu 8000 Ionescu 3000 Vlad 2500 Barbu 1500 Prin operaia de grupare se obine: Nume client Valoare retras Ionescu 5000 Ionescu 3000 Barbu 8000 Barbu 1500 Vlad 2500 folosind operatorul de grupare , cu argumentul NumeClient de exemplu (pe NumeClient), cu o sintax adecvat.

Apoi se poate aplica operatorul de agregare SUM n mod independent fiecrui grup: SUM(ValoareRetras, pe grupul Ionescu), cu o sintax adecvat (SQL are comenzi bine cunoscute). n cele ce urmeaz se descrie modul n care lucreaz operatorul de grupare. Operatorul de grupare Prin acest operator se pot grupa tuplurile unei relaii sau/i se pot agrega unele coloane ale acesteia. n cazul gruprii, agregarea se efectueaz n interiorul grupurilor. Fie relaia r. Sintaxa operatorului de grupare este L(r) unde L este o list de elemente. Fiecare din elemenentele din list paote fi: a) atributul din relaia r cruia i se aplic operatorul; este denumit atribut de grupare; b) un operator de agregare aplicat unui atribut al relaiei. Rezultatului acestei agregri trebuie s i se dea un nume, corespunztor atributului pe care se face agregarea i care se numete atribut agregat. n acest scop, operaiunii de agregare i se asociaz o sgeat i un nou nume. Evaluarea (calculul) expresiei relaionale L(r) ntoarce o relaie, care se construiete aa cum se arat n continuare: 1. se partiioneaz tuplurile din r n grupuri. Fiecare grup este format din toate tuplurile pentru care atributele de grupare din lista L li se asociaz valori particulare. Dac nu exist atribute de grupare, ntreaga relaie r este un grup. 2. pentru fiecare grup se construiete un tuplu format din: a) valorile atributelor de grupare pentru acel grup i b) agregrile pe toate tuplurile acelui grup, pentru atributele agregate din lista L. Exemplu: fie relaia r cu numele Edificiu definit astfel: Edificiu(NumeEdificiu, Anul, Arhitect). 11

Dac dorim primul an n care un arhitect a conceput un edificiu, referindu-ne ns doar la acei arhiteci care au realizat cel puin trei edificii, formulm expresia de interogare: Arhitect, MIN(Anul)minAnul, COUNT(NumeEdificiu)cneNumeEdificiu (Edificii) n expresia de mai sus se efectueaz mai nti o operaie de grupare, folosind Arhitect ca atribut de grupare. Evident c pentru fiecare grup obinut trebuie s calculm agregatul MIN(Anul). De asemenea, pentru a decide care grup satisface condiia potrivit creia Arhitect-ul a realizat cel puin trei edificii, trebuie s fie calculat, de asemenea, agregatul COUNT(NumeEdificiu) pentru fiecare grup. n expresia de grupare formulat mai sus, primele dou coloane alre rezultatului sunt necesare pentru rezultatul interogrii. A treia coloan este un atribut auxiliar, denumit cne, necesar pentru a determina dac un arhitect a realizat cel puin trei edificii. Prin urmare, vom continua expresia algebric ce corespunde interogrii selectnd cazurile cu cneNumeEdificiu 3 i apoi efectund o proiecie pe primele dou coloane. Mai jos este prezentat arborele sintactic al interogrii: Arhitect,minAnul cneNumeEdificiu3 Arhitect, MIN(Anul)minAnul, COUNT(NumeEdificiu)cneNumeEdificiu Edificii Arhitect NumeEdificiu Doicescu Politehnica Antonescu Primria Doicescu Opera ------------------------ ----------------------------------Antonescu Facultatea de Drept Doicescu Restaurantul Bneasa ------------------------ ----------------------------------Antonescu Banca de investiii Doicescu Centrala Banu Marta ------------------------ ----------------------------------Dac facem grupare pe Arhitect obinem (Arhitect): Arhitect NumeEdificiu Antonescu Primria Antonescu Facultatea de Drept Antonescu Banca de investiii Doicescu Politehnica Doicescu Opera Doicescu Centrala Banu Marta Doicescu Restaurantul Bneasa ------------------------ ----------------------------------Anul 1968 1928 1959 ------------------1936 1938 ------------------1937 1938 ------------------Anul 1928 1936 1937 1968 1959 1938 1938 -------------------

Dac pe relaia de mai sus aplicm operatorul de agregare COUNT pe NumeEdificiu va numra edificiile realizate de fiecare arhitect i MIN pe Anul ia anul cel mai mic vom obine n locul fiecrui grup de tupluri doar un un singur tuplu, cu valorile agregate (Arhitect, COUNT(...), MIN(...)): Arhitect COUNT(...) MIN(...) Antonescu 3 1928 Doicescu 4 1938 12

i apoi, prin lista L, se pot da nume noi ultimelor dou coloane, etc. Extinderea operatorului de proiecie Algebra relaional clasic: L(r), unde L este lista de atribute a relaiei r. n proiecia extins, notat tot cu L(r), lista L poate conine urmtoarele elemente: 1. un singur atribut din r. 2. o expresie xy, unde x i y sunt nume de atribute. Semnul expresiei xy: atributul x din r, pe care se face proiecia, primete numele nou y n rezultat. 3. O expresie Ez, unde E este o expresie care conine atribute din r, constante, operatori aritmetici, iar z este un nume nou, care se asociaz atributului rezultat din calculul expresiei E. De exemplu: a+bx n L semnific nsumarea valorilor atributelor a i b, iar sumei i se d numele x. Dac c i d sunt atribute iruri de caractere expresia c||de semnific o concatenare ntre c i d, iar rezultatului i se d numele e. Rezultatul proieciei se calculeaz lund n considerare fiecare tuplu din r, pe rnd. n final, se obine o nou relaie, a crei schem este format de nume ale atributelor din r, precum i de nume noi, obinute prin redenumire. Fiecare tuplu din r d un tuplu n rezultat. Tuplurile duplicat din r dau tupluri n rezultat. Menionm ns c rezultatul poate conine tupluri duplicate chiar i n cazul n care r nu a anulat astfel de tupluri. Exemple:
r

A 1 2 3 A 1 2 3 3

B 0 4 5 B 0 4 5 5

C 3 6 1 C 3 6 1 7

A,B+Cx

A 1 2 3 x -1 2 2 2

x 3 10 6 y 3 2 -4 2

B-Ax,C-By

Operatorul de sortare Notaia: L(r), unde r este o relaie, iar L o list care conine unele din atributele schemei de relaie r. Expresia L(r), prin evaluare, conduce la sortarea tuplurilor din r n ordinea n care atributele considerate pentru sortare sunt prezente n lista L. Dac lista L are forma A1, A2, ..., An, atunci tuplurile din r vor fi mai nti sortate potrivit valorilor atributului A1 (numerice sau lexicografice). Legturile sunt rupte potrivit cu valorile atributului A2; tuplurile care conin aceleai valori pentru A1 i A2 sunt ordonate dup valorile atributului A3 .a.m.d. Legturile care rmn dup ce a fost condenat atributul An pot fi ordonate arbitrar. Mai sus legturi este traducerea de la ties. n contextul acestei traduceri, ties ar putea s nsemne tupluri.

13

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