Sunteți pe pagina 1din 31

M.

Danubianu - Baze de date 1


BAZE DE DATE
CURS
Limbaje relationale. Algebra
relationala
Limbaje relaionale formale
Limbajele relationale : permit manipularea i regsirea datelor dintr-o
baz de date.
Modelul relaional accept limbaje de interogare simple care:
au fundamente formale puternice, bazate pe logic
permit optimizri multiple
Limbaj de interogare (fundamentate pe limbajele relationale) limbaj de
programare!
nu sunt limbaje complete - nu permit instruciuni de control al fluxului
programului.
nu sunt destinate pentru calcule complexe.
permit accesul uor i eficient la mulimi de date de dimensiuni mari.
Se bazeaz pe dou tipuri de mecanisme:
- algebric noile relaii se obin aplicnd operatori specializai asupra
uneia sau mai multor relaii din baza de date
- logic filtrele se obin cu ajutorul unor formule logice pe care
tuplurile rezultatului trebuie s le satisfac
La baza limbajelor de interogare reale (SQL, QBE) stau dou formalisme
matematice:
Algebra Relaional: are caracter operaional (procedural)
util pentru reprezentarea planurilor de execuie.
Calcul relaional: permite descrierea rezultatului ateptat (Non-operational,
neprocedural, declarativ)
Sunt limbaje formale, neprietenoase
nelegerea limbajelor relaionale este cheia nelegerii
SQL!
Caracteristici
Interogrile sunt aplicate instanelor unei relaii. Intrrile i
ieirile unei interogri sunt relaii.
Interogarea este evaluat utiliznd instane ale fiecrei
relaii de intrare i produce o instan a relaiei de ieire.
De regul numele cmpurilor din relaiile rezultat sunt motenite din
relaiile originale.
Personal
Cnp Nume Funcie Salar
056 Lupu Prof 6000000
456 Marinescu Assist 4000000
872 Ilea Conf 5500000
659 Stoica asist 3500000
ALGEBRA RELAIONAL
formalism propus de Codd
colecie de operatori care permit manipularea relaiilor.
utilizai pentru a specifica solicitrile de regsire a datelor
(principala operaie care se execut asupra datelor din bazele
de date= consultarea)
rezultatul aplicrii acestor operatori este tot o relaie
ieirea unei operaii poate fi intrare pentru o alt operaie
proprietatea de nchidere
permite combinarea expresiilor
Operatorii algebrei relaionale
D.p.d.v. al numrului de operatori asupra crora acioneaz
operatori unari: selecia, proiecia
operatori binari: reuniune, intersecie, diferen, diviziune, produs
cartezian, jonciune
d.p.d.v al tipului operatorilor:
operatori pe mulimi: reuniunea, intersecia, diferena i produsul cartezian
operatori relaionali specifici (iau n considrare caracterul de tuplu al
elementelor componente ale relaiilor) selecia, proiecia
d.p.d.v. al modului de implementare:
operatori fundamentali
operatori derivai
Redenumirea relaiilor i atributelor: redenumirea
Algebra Relaional
Proiecia ( ) terge coloanele nedorite din relaie.
Selecia ( ) Selecteaz o submulime a nregistrrilor dintr-o
relaie.
Produs cartezian ( x ) Permite combinarea a dou relaii.
Diferen ( - ) Tuplele din relaia 1, care nu sunt n relaia 2.
Reuniune ( ) Tuplele din relaia 1 i din relaia 2.
Operaiile:intersecie , join, diviziune i redenumire
nu sunt eseniale dar sunt foarte utile.
, ><, / ,
Deoarece fiecare operaie ntoarce o relaie, operaiile pot fi compuse.

Selecia(
p
)
Selecteaz rndurile care
satisfac o condiie (predicat)
de selecie.
Nu exist duplicate n instana
relaiei de ieire. (De ce?)
Schema rezultatului este
identic cu schema relaiei de
intrare.
Relaia rezultat poate fi
intrare pentru o alt operaie
algebric.
condiie de selecie (predicatul selectiv) - expresie care conine: nume
de cmpuri, constante i operatori relaionali sau logici
Evaluarea predicatului ntoarce o valoare logic de tipul TRUE sau
FALSE.
Exemplu
PERSONAL (cnp, nume, pren, funcie, loc_m, salar)
Cnp Nume Pren Funcie Loc_m Salar
056 Lupu Adriana Prof FIE 600
456 Marinescu Dana Assist FSE 400
872 Ilea Dan Conf FS 550
659 Stoica Ileana asist FIE 350

Care sunt persoanele cu salarii mai mari de 500 lei?

salar>500
( Personal )
Cnp Nume Pren Funcie Loc_m Salar
056 Lupu Adriana Prof FIE 600
872 Ilea Dan Conf FS 550

Proiecia(
list cmpuri
)
Genereaz o relaie care conine
doar acele cmpuri din lista de
proiecie
terge cmpurile care nu apar n
list.
Schema relaiei rezultat conine
exact cmpurile din lista de
proiecie, (au aceleai nume din
relaia original)

Operatorul de proiecie elimin duplicatele! (De ce????)


este o operaie costisitoare
SGBD-urile reale omit adesea eliminarea tuplelor duplicat
Exempu
S se realizeze o list cu salariile ntregului personal care
s conin numai detaliile: Cnp, Nume, Funcie, Salar.

cnp,nume,functie,salar,.
( Personal )
Cnp Nume Funcie Salar
056 Lupu Prof 600
456 Marinescu Assist 400
872 Ilea Conf 550
659 Stoica asist 350

Reuniunea (R S)
(Selecia tuplurilor distincte a dou relaii)
Reuniunea a dou relaii R i S cu i respectiv j tupluri
este obinut prin concatenarea lor ntr-o relaie cu
maxim (i+j) tupluri, tuplurile duble fiind eliminate.
Relaiile R i S trebuie s fie compatibile la reuniune.
acelai numr de cmpuri
cmpurile corespunztoare au acelai domeniu.
Ce schem va avea relaia rezultat?
Se poate utiliza i pentru adugarea de noi tuple ntr-o
relaie,
unul din operanzi va fi constituit din valorile
atributelor care se adaug, n ordinea n care apar ele
n relaia respectiv
posibilitatea compatibilizrii la reuniune a unor scheme
de relaie care nu sunt compatibile, dar n care exist
cmpuri comune?
Exemplu
StudC StudAII
Care sunt toi studenii specializrii Calculatoare i automatizri?
StudC StudAII
Intersecia(R S)
definete o relaie ce const n mulimea tuturor
tuplurilor care se afl att n relaia R ct i n relaia S.
cele dou relaii trebuie s fie compatibile la reuniune.
operator binar, comutativ , derivat.
poate fi exprimat ca o diferen, astfel:
RS =R-(R-S) = S-(S-R)
Exemplu 1
Ce produse care sunt n stoc
au mai fost comandate?
Exemplu 2
AVERSA SA 2935467
ELIANA 1198034
MICROPIC 2439873
OLPO SRL 1034567
Denumire CUI
Client_X1 Client_X2
Care sunt clientii comuni?
AVERSA SA 2935467
OLPO SRL 1034567
Denumire CUI
Client_X1
cui,denumire
Client_X2
5683456
2935467
2394560
1034567
CUI
ATAC SRL
AVERSA SA
IUPS
OLPO SRL
Denumire
Galati
021345627 Primaverii Bucuresti
Suceava
532567 N.Balcescu Suceava
Telefon Strada Localitate
Diferena R-S
(Selecia tuplelor carte apar numai ntr-o relaie)
Definete o relaie ce const n tuplurile care sunt n
relaia R, dar nu i n relaia S.
Relaiile R i S trebuie s fie compatibile la reuniune.
Operaie binar, necomutativ
Se poate utiliza pentru tergerea tuplurilor dintr-o
relaie.
Produsul cartezian
definete o relaie care reprezint o concatenare a fiecrui tuplu din
relaia R cu fiecare tuplu din relaia S.
Shema relaiei rezultat conine cte un cmp pentru fiecare cmp
din S1 i din R1,
Dac R i S sunt de grad m, respectiv n , i de cardinalitate i, respectiv j,
produsul cartezian al celor dou relaii RxS este o relaie de grad m+n i de
cardinalitate i*j.
Dac este posibil numele cmpurilor sunt motenite din relaiile originale
Dac cele dou relaii conin cmpuri cu acelai nume, denumirile acestora
conin ca prefix denumirea relaiei, pentru a menine unicitatea denumirilor
n cadrul unei relaii.
PRODUSE x DEPOZITE
Exemplu
S se gseasc toate
combinaiile posibile de
produse i depozite.
Jonciunea (JOIN, uniunea)
operaie binar care are ca rezultat o nou relaie n
care fiecare tuplu este o combinaie a unui tuplu din
prima relaie cu un tuplu din a doua relaie.
derivat a produsului cartezian
Exist diferite forme :
- theta- JOIN
- echi- JOIN
- natural JOIN (uniunea natural);
- outer JOIN (uniunea extern);
- semi JOIN (semi-uniunea).
Schema relaiei rezultat - aceeai ca la produsul cartezian
conine mai puine tupluri dect produsul cartezian- poate
fi calculat mai eficient
Theta JOIN R
p
S
definete o relaie care conine tuplurile ce satisfac
predicatul p din produsul cartezian al relaiilor R i S.
este echivalent cu efectuarea unei selecii asupra
produsului cartezian al celor dou relaii operand.
Predicatul p este de forma : R.a S.b
operator de comparare ( <,<=,>,>=, =)
Gradul operaiei de theta-uniune este suma gradelor
relaiilor operand R i S.
In cazul n care predicatul p conine numai egalitatea (=),
se folosete termenul de echi-uniune(echi-jonciune).
R
p
S=
p
(RxS)
Exemplu
-FACTURI( numar, codp, cantitate, data) i
-COMENZI (numar, data, cod_ben), cu urmtoarele instane:
Care sunt comenzile care au fost
onorate? (pentru care s-au emis facturi)
Facturi
facturi.numar=comenzi.numar
Comenzi
Natural Join R S
echi-uniune a dou relaii R i S pe toate atributele comune. O apariie a
fiecrui atribut comun este eliminat din rezultat.
Gradul este dat de suma gradelor relaiilor R i S, minus numrul atributelor
comune
COMENZI (numar, data, cod_ben),
BENEFICIARI (cod_ben, nume, adresa), cu urmtoarele instane
OUTER JOIN (Uniunea extern)
R 3 S (stnga) ; R 8 S (dreapta)
Uneori, la uniunea a dou relaii nu exist o valoare similar n
coloanele comune. Chiar n aceste condiii rndul respectiv poate s
apar n relaia rezultat, dac se utilizeaz operatorul de uniune
extern.
Uniunea extern stnga este o uniune n care tuplurile din relaia
R, care nu au valori similare n coloanele comune ale relaiei S,
sunt de asemenea incluse n relaia rezultant.
Uniunea extern dreapta pstreaz n relaia rezultant tuplurile din
relaia S care nu au valori similare n coloanele comune cu R.
Exist i operaia de uniune extern complet.
Valorile lips din relaie sunt stabilite la valoarea null.
Avantaj: pstreaz informaii care n alt tip de uniune ar fi fost
pierdute.
Fie relaiile din exemplul anterior . Prin aplicarea operatorului de uniune
extern (dreapta) se obine:
OJOIN COMENZI AND BENEFICIARI
Diviziunea
Nu este un operator primar, dar este util n exprimarea unor
interogri de tipul:
Gsii beneficiarii care au contractat toate serviciile
furnizate de o societate.
Fie 2 relaii: A cu 2 cmpuri, x i y;
B cu un singur cmp y:
A/B =
A/B conine toate tuplele x (beneficiarii) a..
pentru fiecare tuplu y (serviciu) din B, exist un
tuplu xy n A.
In general, x i y poate fi orice mulime de cmpuri; y
reprezint cmpurile din B, i x y reprezint mulimea
cmpurilor din A.
{ }
x x y A y B | ,
Exemple A/B
x y
s1 p1
s1 p2
s1 p3
s1 p4
s2 p1
s2 p2
s3 p2
s4 p2
s4 p4
A
y
p2
B1
y
p2
p4
B2
y
p1
p2
p4
B3
x
s1
s2
s3
s4
A/B1
x
s1
s4
A/B2
x
s1
A/B3
Exprimarea diviziunii cu ajutorul
operatorilor fundamentali
Ideea: A/B, calculeaz toate valorile x care
nu sunt descalificate de valori y din B.
O valoare x este descalificat dac prin
ataarea unei valori y din B, se obine
un tuplu xy care nu se gsete n A.
Valorile x descalificate sunt:
A/B:

x x
A B A (( ( ) ) )

x
A ( )
toate tuplele descalificate
A/B:
x
A ( )
x x
A B A (( ( ) ) )
Formularea interogrilor n algebra
relaional
Schema bazei de date folosit pentru exemplificare
Ageni (zona, cod, nume, adresa, telefon, manager, tip_ag)
Contracte (cod, tip_pr, tip_m, cant, index_v, index_n, act_idx)
Facturi ( cod, numr, data, tip_pr, pret, cant, val)
Tipuri (tip_pr, den)
Numele i adresa agenilor din zona ZAMCA?
Soluia 1:
V=
zona="ZAMCA"
( Agenti )
R=
nume,adresa
(V)
Soluia 2
R=
nume,adresa
(
zona="ZAMCA"
( Agenti ))
Care sunt agenii din zona central care au ncheiat
contracte?
V1=
cod
(AGENTI)
V2=
cod
(CONTRACTE)
V3= V1 V2 (codurile agenilor care au contracte)
V4= V3 AGENTI
V5=
zona="CENTRALA"
(V4 )

zona="CENTRALA"
(
cod
(AGENTI)
cod
(CONTRACTE)
AGENTI)

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