Sunteți pe pagina 1din 37

T42

Operatorii modelului relational

Operatorii modelului relaional


din algebra relaional (AR);
din calculul relaional (CR).
orientat pe tuplu;
orientat pe domeniu.

Algebra relationala
Introdusa de EF Codd ca o colectie de operatori pe

relatii n care operatorii descriu tipuri de prelucrri


asupra relaiilor, operanzii sunt relaii, iar rezultatul
este, de asemenea, relaie.
Operatori de baza

Universali: reuniunea, diferena, produsul cartezian,


Specifici: proiecia, selecia i jonciunea

Operatori derivati: intersecia i diviziunea

D1

D2

D3

D4

Proiectia
Definit asupra unei relaii R, care const din

construirea unei noi relaii P, n care se regsesc


numai acele atribute din R specificate explicit n
cadrul operaiei.
Implica efectuarea unor tieturi verticale asupra lui R
i care pot avea ca efect apariia unor tupluri duplicate,
care se cer a fi eliminate.
Se trece de la o relaie de grad n la o relaie de grad p,
mai mic dect cel iniial (p < n), adic de la un spaiu
de n dimensiuni la unul cu mai puine dimensiuni,
ceea ce explic i numele de proiecie.

Proiectia
Ai,, Am (R)
R[Ai,..., Am]
PROJECT(R, Ai,..., Am)
R

Varsta,salariu

Nume

Varsta

Salariu

Varsta

Salariu

Ion

25

3000

25

3000

Mihai

30

2000

30

2000

Anca

25

3000

25

3000

Sofia

30

2000

30

2000

Mircea

30

2000

30

2000

Varsta

Salariu

25

3000

30

2000

Exemplu SQL
SELECT DISTINCT varsta, salariu FROM angajati;

D1 D2 D3 D4

Selectia
Reprezint operaia definit asupra unei relaii R, care

const din construirea unei relaii S, cu aceeai schem


ca R i a crei extensie este constituit din acele tupluri
din R care satisfac condiia menionat explicit n
cadrul operaiei.
Implic efectuarea de tieturi orizontale asupra relaiei
R, adic eliminarea unor tupluri ale relaiei.

Selectia
condiie (R)
R [condiie]
RESTRICT (R, condiie)
R
Nume

Varsta

Salariu

(salariu>2000 or nume=Mircea)

Ion

25

3000

Nume

Varsta

Salariu

Mihai

30

2000

Ion

25

3000

Anca

25

3000

Anca

25

3000

Sofia

30

2000

Mircea

30

2000

Mircea

30

2000

Exemplu SQL
SELECT DISTINCT nume, prenume FROM angajati

WHERE salariu>2000 or nume=Mircea

Produsul cartezian
Este o operaie definit pe dou relaii, R1 i R2.
Pe baza relaiilor R1 i R2 se construieste nou relaie,

R3, a crei schem se obine prin concatenarea


schemelor relaiilor R1 i R2 i a crei extensie cuprinde
toate combinaiile tuplurilor din R1 cu cele din R2.

Produsul cartezian
R1 x R2
PRODUCT (R1, R2)
TIMES (R1, R2)
Angajati
ID

Comenzi

Nume

NRC

Data

ID

Ion

01.01.11

Ion

07.01.11

Ion

08.01.11 3

Data

Ion

Mihai

01.01.11

Ion

08.01.11 2

Anca

07.01.11

Ion

09.01.11

Sofia

08.01.11

Mihai

01.01.11

Mirce
a

08.01.11

Mihai

07.01.11

09.01.11

4
5

ID

ID

N
R
C

Num
e

Angajati x Comenzi

Exemplu SQL
SELECT * FROM angajati, comenzi;
SELECT * FROM angajati cross join comenzi;

Jonctiune
Reprezint operaia definit pe dou relaii, R1 i R2,

care const din construirea unei noi relaii R3, prin


concatenarea unor tupluri din R1 cu tupluri din R2.
Se concateneaz acele tupluri din R1 i R2 care satisfac o
anumit condiie, specificat explicit n cadrul
operaiei.
Extensia relaiei R3 va conine combinaiile acelor
tupluri care satisfac condiia de concatenare.

Tipuri de jonctiuni
Interna (inner)
De egalitate
Naturala
De neegalitate
Externa (outer)
La stanga
La dreapta
Completa

Tipuri de jonctiuni

Jonctiunea de egalitate si
naturala
R1 R2
JOIN (R1, R2, condiie)
JOIN (R1, R2, condiie) = RESTRICT (PRODUCT (R1,

R2), condiie)

Jonctiunea de egalitate
Operaie definit pe dou relaii, R1 i R2, prin care este

construit o nou relaie, R3, a crei schem este


obinut prin reuniunea atributelor din relaiile
iniiale iar extensia acesteia conine tuplurile obinute
prin concatenarea tuplurilor din R1 cu tuplurile din R2
care au aceleai valori pentru atributele folosite in
conditia de jonctiune

Jonctiunea de egalitate
Angajati

Comenzi

Exemple SQL
SELECT * FROM angajati a, comenzi c where

a.id_ang=c.id_ang
SELECT * FROM angajati a join comenzi c on
a.id_ang=c.id_ang
SELECT * FROM angajati a join comenzi c
using(id_Ang)

Jonctiunea naturala
Presupune existenta unor atribute avand aceeasi

denumire in ambele relatii


SELECT * FROM angajati a natural join comenzi c

Jonctiunea externa
Operaie prin care din dou relaii, R1 i R2, se obine o

nou relaie, R3, prin jonciunea relaiilor R1 i R2,


relaie la care sunt adugate i tuplurile din R1 i R2 care
nu au participat la jonciune.
Aceste tupluri sunt completate n relaia R3 cu valori
NULL pentru atributele relaiei corespondente (R2,
respectiv R1).

Notatii
R1 R2
EXT-JOIN (R1, R2)

Jonctiunea la stanga

Jonctiunea la dreapta

Jonctiunea completa

Reuniunea
Este o operaie definit pe dou relaii, R1 i R2, ambele

cu aceeai schem. Operatorul de reuniune are funcia


de a construi o nou relaie R3, cu schema identic cu
R1 i R2, dar avnd ca extensie tuplurile din R1 i R2,
luate mpreun o singur dat.
R1 R2
OR (R1, R2)
APPEND (R1, R2)
UNION (R1, R2)

Exemplu

Diferenta
Este o operaie definit pe dou relaii, R1 i R2, ambele

cu aceeai schem. Operatorul de diferen are funcia


de a construi, pe baza relaiilor R1 i R2 o nou relaie,
R3, cu aceeai schem, dar cu extensia format din
acele tupluri relaiei R1 care nu se regsesc i n relaia
R2.
R1 R2
REMOVE (R1, R2)
MINUS (R1, R2)

Diferenta

DE CE NU?
DA

Intersectia
Reprezint o operaie definit pe dou relaii, R1 i R2

ambele cu aceeai schem, operaie care const din


construirea unei noi relaii, R3, cu schema identic cu
a relaiilor operand i cu extensia format din tuplurile
din R1 i R2.
R1 R2
INTERSECT (R1, R2)
AND (R1, R2)

Intersectia

Alti operatori
Diviziunea
Complementarea
Spargerea unei relaii
nchiderea tranzitiv

Calculul relational
Introdus, ca i algebra relaional de ctre E.F. Codd.
Este o adaptare a calculului cu predicate la domeniul

bazelor de date relaionale.


Se identifica o relaie cu un predicat. Pe baza unor
predicate (relaii) iniiale, prin aplicarea unor
operatori ai calculului cu predicate se pot defini noi
predicate (relaii).

Calculul relational orientat pe


tuplu
Cea mai simpl construcie a calculului relaional

poart numele de atom (sau formula atomic). Un


atom este constituit din termeni (constante, variabile
tuplu i operatori)
Pe baza atomilor i cu ajutorul unor operatori se pot
construi formule mai complexe.

Operatori
Conectivele (conectorii):
Conjuncia
Disjunctia
Negatia
Cuantificatorii
Cuantificatorul existenial
Cuantificatorul universal

Formule atomice din calculul


relaional orientat pe tuplu
Tip atom
R(v)

v[i] operator
comparaie w[j]

v[i] operator
comparaie k
sau
k operator
comparaie v[i]

Semnificaie termeni
R= numele unei
relaii
v = variabil tuplu
v,w = variabile tuplu
operator de
comparaie:
<,=,<=,>,>=,<>
v = variabil tuplu
operator comparaie:
<,=,<=,>, >=, <>,
k=

Semnificaie atom
v reprezint un tuplu
al relaiei R

Exemple
ORASE (s)
JUDETE (v)

a i-a component a
tuplului v se afl n
relaia operator
comparaie cu a j-a
componenta a
tuplului w
a i-a component a
tuplului v se afl n
relaia operator
comparaie cu k

s[2] = v[1]

s[3] > 50
sau
50 < s[3]

Calculul relaional orientat pe


domeniu
Utilizeaz n construciile sale aceiai operatori ca i

calculul relaional orientat pe tuplu, dar variabilele


care apar n aceste construcii sunt variabile domeniu,
adic variabile definite asupra domeniilor.