Sunteți pe pagina 1din 18

CURS 4.

Operatorii modelului relaional


3.2 Operatorii modelului relaional
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
Modelul relaional ofer dou colecii de operatori pe relaii:
algebra relaional;
calcul relaional:
calcul relaional orientat pe tuplu;
calcul relaional orientat pe domeniu.
Algebra relaional este un limbaj procedural, pe cnd calculul relaional pe tupluri i calculul
relaional pe domenii sunt limbaje ne-procedurale
n acest curs va fi tratat doar cazul algebrei relaionale.
Algebra relaional este o colecie de operaii pe relaii, fiecare operaie avnd
drept operanzi una sau mai multe relaii, rezultatul fiind o alt relaie.
Exist mai multe criterii de grupare a operaiilor:
operaii de baz:
reuniunea;
diferena;
produsul cartezian etc.
operaii derivate:
intersecia;
diviziunea etc.
sau
operaii tradiionale pe mulimi (reuniune, intersecie, diviziune, produs
cartezian)
operaii relaionale speciale (selecia, proiecia, jonciunea, etc.)

Reuniunea
Reuniunea reprezint o operaie a algebrei relaionale definit pe dou relaii:
R1 i R2, ambele cu aceeai schem, n urma creia se construiete o nou relaie
R3, cu aceeai schem ca i R1 i R2 i avnd drept extensie tuplurile din R 1 i R2,
luate mpreun o singur dat.
Notaii: R1U R2
OR (R1, R2)
APPEND (R1, R2)
UNION (R1, R2)
Reprezentarea grafic

R3

R1

R2

Fig. 4.1. Reprezentarea grafic a operaiei de reuniune a dou relaii


Exemplu: Deoarece aplicaia AGENTIE IMOBILIARA luat ca exemplu n acest curs
nu conine dou relaii cu aceeai structur, pentru a putea exemplifica operaia de
reuniune se vor construi dou relaii ARHIVA_OFERTE i ARHIVA_CERERI
populate cu informaiile aferente ofertelor respectiv cererilor soluionate (s-au ales
doar patru atribute: id-ul ofertei sau a cererii, tipul operaiei(ofert sau cerere), cnp-ul
clientului, tipul soluionrii). Pentru a afla care sunt toate ofertele i cererile
soluionate, se realizeaz operaia de reuniune.
REZ:

ARHIVA_OFERTE:

ARHIVA_CERERI:

Fig. 4.2. Reuniunea relaiilor ARHIVA_OFERTE i ARHIVA_CERERI

Diferena
Diferena reprezint o operaie a algebrei relaionale definit pe dou relaii R 1
i R2, ambele cu o aceeai schem, n urma creia se construiete o nou relaie R 3,
cu schema identic cu R1 i R2, avnd drept extensie acele tupluri ale relaiei R 1 care
nu se regsesc n relaia R2.
Notaii: R1 R2
REMOVE (R1, R2)
MINUS (R1, R2)
Reprezentarea grafic:

R3

R1

R2

Fig. 4.3. Reprezentarea grafic a operaiei de diferen a dou relaii


Exemplu: Presupunnd c exist clieni care au nregistrri n ambele tabele (adic
au oferit imobil spre vnzare, dar i au achiziionat un alt imobil n acelai timp),
pentru a afla care au fost doar ofertanii de imobile, se aplic diferena dintre relaiile
ARHIVA_OFERTE i ARHIVA_CERERI.
REZ:

ARHIVA_OFERTE:

ARHIVA_CERERI:

Fig. 4.4. Diferena relaiilor ARHIVA_OFERTE i ARHIVA_CERERI

Produsul cartezian
Produsul cartezian reprezint o operaie a algebrei relaionale definit pe
dou relaii R1 i R2, n urma creia se construiete o nou relaie R 3, a crei schem
se obine prin concatenarea schemelor relaiilor R 1 i R2, avnd ca extensie toate
combinaiile tuplurilor din R1 cu cele din R2 (operaie laborioas).
Notaie: R1xR2
PRODUCT (R1, R2)
TIMES (R1, R2)
Reprezentarea grafic:
R3

R1

R2

Fig. 4.5. Reprezentarea grafic a produsului cartezian

Exemplu: Operaia de produs cartezian va fi exemplificat pe un exemplu


independent de aplicaia AGENIA IMOBILIAR considerat. Astfel:
TRANSPORT:

LOCALIT:

TARIFE:

Fig. 4.6. Produsul cartezian dintre relaiile LOCALIT i TARIFE

Proiecia
Proiecia reprezint o operaie a algebrei relaionale definit asupra unei relaii
R, n urma creia se construiete o nou relaie P, n care se gsesc acele atribute
din R specificate explicit n cadrul operaiei.
Prin operaie de proiecie se trece de la o relaie de grad n (are n coloane) la
o relaie de grad mai mic, p (p<n).
Notaie:

Ai , Aj ,..., Am ( R )

R[ Ai , A j ,..., Am ]

PROJECT ( R, Ai , A j ,..., Am )

Reprezentarea grafic:

R
Ai,Aj,...,Am

Fig. 4.7. Reprezentarea grafic a operaiei de proiecie


Exemplu: Pentru a obine o list cu numele i numerele de telefon ale
ofertanilor/cumprtorilor, se poate aplica operaia de proiecie a relaiei
DATE_PERSOANE asupra atributelor numele, nr_telefon

REZ:

numele,
nr_telefon

DATE_PERSOANA:

Fig. 4.8. Proiecia relaiei DATE_PERSOANA pe atributele numele, nr_telefon

Selecia
Selecia reprezint o operaie din algebra relaional definit asupra unei
relaii R, n urma creia se construiete o nou relaie S, cu aceeai schema ca R,
avnd extensia construit din acele tupluri din R care satisfac o condiie menionat
explicit n cadrul operaiei (se poate interpreta ca tiere orizontal: nu toate tuplurile
din R satisfac aceast condiie sau filtru).
Condiia precizat n cadrul operaiei de selecie se reprezint sub forma:

atribut, operator de comparaie, valoare

unde operator de comparaie poate fi unul din semnele <, <=, >=, > sau .
Notaie: condiie (R)
R [condiie]
RESTRICT (R, condiie)
Reprezentarea grafic:
S
condiie

Fig. 4.9. Reprezentarea grafic a operaiei de selecie


Exemplu: n cazul n care se dorete afiarea ofertelor/cererilor anterioare datei de
2006-07-03, se poate aplica operaia de selecie asupra relaiei CERERI_OFERTE,
dup cum se va vedea n figura 4.10.

OFERTE VECHI:

Fig. 4.10. Selecia efectuat asupra relaiei CERERI_OFERTE

Jonciunea
Jonciunea (joinul) reprezint o operaie a algebrei relaionale definit pe dou
relaii: R1 i R2, n urma creia se construiete o alt relaie R 3, prin concatenarea

unor tupluri din R1 cu tupluri din R2 care ndeplinesc o anumit condiie specificat
explicit n cadrul operaiei.
Notaie: R1
R2;
JOIN(R1,R2,condiie)
Reprezentarea grafic:
R3
atribut
atribut
din R1
din R2
Operator de comparaie

R1

R2

Fig. 4.11. Reprezentarea grafic a operaiei de jonciune


Condiia de concatenare din cadrul operaiei de jonciune este de forma:
atribut din R1

operator de comparaie

atribut din R2

n funcie de operatorul de comparaie din condiia de concatenare, joinul


poate fi de mai multe feluri, ns cel mai important este equijoinul:
atribut din R1= atribut din R2

Exemplu: Aplicnd operaia de equijoin relaiilor DATE_PERSOANE i FACTURI


pentru atributul cnp, se obin informaii referitoare la clienii care au ncheiat facturi.
Pentru a nu ncrca figura, pentru cele dou relaii s-au ales doar cteva atribute.

REZ

Fig. 4.12. Operaia de equijoin a relaiilor DATE_PERSOANA i FACTURI


Observaie: Operaia de jonciune se poate exprima cu ajutorul operaiilor de
produs cartezian i selecie, rezultatul unui join fiind asemenea cu cel al operaiei de
selecie asupra unui produs cartezian:
JOIN (R1, R2, condiie) = RESTRICT (PRODUCT (R1, R2), condiie).
Este indicat utilizarea joinului n locul produsului cartezian, de cte ori este posibil.
Tipuri de jonciuni
n funcie de
tipul condiiilor de conectare
modul de definire a schemei
extensia relaiei rezultate prin jonciune,
vom studia:
jonciunea natural
jonciunea extern
semijonciunea.

Jonciunea natural

Jonciunea natural este o operaie definit pe dou relaii R 1 i R2, n urma


creia se construiete o nou relaie R 3, a crei schem este obinut prin reuniunea
atributelor din relaiile R 1 i R2 (atributele cu aceleai nume se iau o singur dat) i
a crei extensie conine tuplurile obinute prin concatenarea tuplurilor din R 1 cu cele
din R2 care prezint aceleai valori pentru atributele cu aceleai nume.
Jonciunea natural elimin inconvenientul ce apare n cazul equijoinului i
anume: schema relaiei n cazul equijoinului conine toate atributele celor dou
relaii. Astfel, n relaia R3 a jonciunii naturale, atributele cu acelai nume vor aprea
o singur dat.
Reprezentarea grafic:
R3

R1

R2

Fig. 4.13. Reprezentarea grafic a operaiei de jonciune natural


Exemplul 1: Relund exemplul anterior, prin jonciunea natural se elimin atributul
repetitiv cnp.

REZ:

Fig. 4.14. Operaia de jonciune natural a relaiilor DATE_PERSOANA i


FACTURI

Exemplul 2: Dac se dorete aflarea denumirilor localitilor n care sunt oferte sau
cereri, cum n relaia CERERI_OFERTE se afl doar codul localitii respective iar n
relaia LOCALITATI este asociat fiecrui cod de localitate denumirea localitii,
trebuie s se realizeze o jonciune natural ntre aceste dou relaii. Astfel rezultatul
jonciunii va fi cel prezentat n figura 4.15.

REZ:

Fig. 4.15. Jonciunea natural a relaiilor CERERI_OFERTE i LOCALITATI

Jonciunea extern
Jonciunea extern este operaia definit pe dou relaii: R 1 i R2, n urma
creia se obine o nou relaie R3 prin joncionarea relaiilor R1 i R2. n relaia R3
apar i tuplurile din R 1 i R2 care nu au participat la join (atributul de jonciune cel
care are acelai nume i n relaia R 1 i n relaia R2 nu prezint aceleai valori).
Aceste tupluri sunt completate cu valoarea NULL.

Jonciunea extern elimin inconvenientul cauzat de jonciunea intern i


anume pierderea de tupluri (vezi figura 4.15; tuplul <44,oferta, 2661111246642, 200609-17, MM430, 133, 4, 50, nu> nu mai apare n relaia REZ, deoarece simbolul
MM430 corespunztoare atributului cod_loc din relaia CERERI_OFERTA nu
figureaz printre valorile atributului cu acelai nume din relaia LOCALITATI.
Reprezentarea grafic:
R3

R1

R2

Fig. 4.16. Reprezentarea grafic a operaiei de join extern


Exemplu: Jonciunea extern este o operaie care din punct de vedere al programrii
prezint inconvenientul manipulrii valorilor nule. n relaia REZ, judeului Braov nu i
s-a asignat o localitate, deci nici codul localitii.

REZ:

simbol_judet
simbol_judet

LOCALITATI:

JUDETE:

Fig. 4.17. Operaia de jonciune extern a relaiilor LOCALITI i JUDEE

Semijonciunea
Semijonciunea este o operaie definit pe dou relaii R1 i R2, n urma creia
se construiete o nou relaie R 3, a crei extensie conine tuplurile relaiei R 1 care
particip la jonciunea celor dou relaii, conservnd atributele relaiei R 1.
Notaie: R1 R2;
SEMIJOIN(R1, R2).
Reprezentarea grafic:

R3

R1

R2

Fig. 4.18. Reprezentarea grafic a operaiei de semijonciune


Exemplu: Semijonciunea urmtoare realizeaz lista localitilor care au referin n
relaia JUDETE.
REZ:

simbol_judet

LOCALITATI:

JUDETE:

Fig. 4.19. Operaia de semijonciune a relaiilor LOCALITATI i JUDETE


Observaia 1. Aceast operaie a fost introdus de P.A. Bernstein, fiind
necesar la optimizarea cererilor de date.
Observaia 2. Semijonciunea produce acelai rezultat ca operaia de proiecie
pe atributele din relaia R1 efectuat asupra jonciunii dintre R1 i R2
PROJECT (JOIN (R1, R2, condiia), A1, A2, A3)=SEMIJOIN (R1, R2).

Intersecia
Intersecia reprezint o operaie a algebrei relaionale definit pe dou relaii,
R1 i R2, ambele cu aceeai schem, n urma creia se construiete o nou relaie
R3, cu schema identic cu a operanzilor i cu extensia format din tuplurile comune
lui R1 i R2.
Notaie: R1R2
INTERSECT (R1, R2)

AND (R1, R2)


Reprezentarea grafic:
R3

R1

R2

Fig. 4.20. Reprezentarea grafic a operaiei de intersecie


Exemplu:
REZ:

ORASE:

MUNICIPII:

Fig. 4.21. Intersecia relaiilor ORASE i MUNICIPII


Observaie: Intersecia se poate exprima prin intermediul unor operaii de
baz. De aceea intersecia este o operaie derivat.
R1R2=R1-(R1-R2)
R1R2=R2-(R2-R1)

Diviziunea
Diviziunea reprezint o operaie a algebrei relaionale definit asupra unei
relaii R cu schema R(A1:D1, , Ap:Dk, , Ap+1:Di, , An:Dm), n urma creia se
construiete o nou relaie Q cu ajutorul unei relaii r cu schema r (A p+1:Dl, ,
An:Dm), relaia Q avnd schema: Q(A1:D1, , Ap:Dk).
Tuplurile relaiei Q concatenate cu tuplurile relaiei r permit obinerea tuplurilor
relaiei R.
Notaie: Rr
Division (R, r).
Reprezentarea grafic:

Fig. 4.22. Reprezentarea grafic a operaiei de diviziune


Exemplul se lasa ca exerciiu suplimentar.

Complementarea
Complementarea reprezint o operaie (adiional) a algebrei relaionale
definit asupra unei relaii R, n urma creia se construiete o nou relaie C, numit
complementarea relaiei R. Extensia relaiei C va conine ansamblul tuplurilor din
produsul cartezian al domeniilor asociate atributelor relaiei, care nu figureaz n
extensia relaiei considerate.
Notaii: R
NOT (R)
COMP(R)
Exemplu: Fie relaia: R(A1:D1, A2:D2), unde
A1 = culoare;
A2 = numr;
D1 = {Rou, Galben, Albastru}
D2 = {1, 2, 3}
reprezentat prin tabelul:
R:
A1:D1
A2.D2
Rou
1
Rou
2
Galben
3
a) relaia R
Complementarea relaiei R va fi relaia NOT (R) repezintat prin tabelul:
NOT (R):
A1:D1
A2:D2
Rou
3
Galben
1
Galben
2
Albastru
1
Albastru
2
Albastru
3
b) relaia not R
Fig. 4.24. Complementarea relaiei R

Observaie: Complementaritatea este puin utilizat, datorit rezultatului foarte


mare de tupluri.

Splitarea
Splitarea (spargerea) reprezint o operaie (adiional) a algebrei relaionale
definit asupra unei relaii R, n urma creia se construiesc dou relaii R 1 i R2 cu
aceeai schem cu R, relaii obinute pe baza unei condiii definite asupra atributelor
din R.
Extensia lui R1 conine tuplurile din R care verific condiia specificat, iar R 2
conine tuplurile din R care nu verific aceast condiie.
Exemplu: Considernd relaia R din figura 4.24 (a) i condiia A 2>2, operaia de
splitare a relaiei R produce relaiile R 1 i R2 reprezentate prin tabelele:
R1
A1:D1
A2: D 2
Galbe
3
n

R2
A1:D1
A2:D2
Rou
1
Rou
2
Figura 4.25. Rezultatul operaiei de splitare a relaiei R din figura 4.24
(a) pe baza condiiei A2>2

nchiderea tranzitiv
nchiderea tranzitiv este o operaie (adiional) a algebrei relaionale, definit
asupra unei relaii R, a crei schem conine dou atribute A1 i A2 cu acelai
domeniu asociat, operaie care const n adugarea la relaia R a tuplurilor care se
obin succesiv prin tranzitivitate: dac n R exist tuplurile: <a,b> i <b,c> se va
aduga la R tuplul <a,c>.
Notaie: (R)
R+
CLOSE(R)
Exemplu:

(R ) :

R:

a)

b)

Fig. 4.26. nchiderea tranzitiv a relaiei R

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