Sunteți pe pagina 1din 15

Baze de date

Curs 8
SQL (IV)
Algebra relaional

Baze de date Microsoft Access

Selecia

XP

Selecia aplicat unei tabele R1 genereaz o nou tabel R2


avnd aceeai structur ca i R1, dar care conine doar tuplurile
ce ndeplinesc condiia specificat de selecie.
Cardinalitatea relaiei rezultat R2 este mai mic sau egal cu
cardinalitatea relaiei R1, n timp ce gradul relaiei este egal cu
al relaiei surs. Notaia specific pentru selecie este
R2 = SELECTC (R1), unde
R1 este tabelul (relaia) de baza asupra creia se aplica
selecia
C este condiia ce se refer la atributele lui R2
R2 este tabelul (relaia) rezultat, alctuit din tuplurile lui R1
care ndeplinesc condiia C;

Microsoft Office Access 2010

Realizarea operatorilor relaionali


n SQL Selecia

XP

Societate

SELECT * FROM Societate WHERE LocalitateSocietate="Bucuresti"

SELECT LocalitateSocietate=Bucuresti (Societate)

Microsoft Office Access 2010

Proiecia

XP

Proiecia este o operaie unar ce returneaz tuplurile ce


conin un subset al atributelor tabelei surs. Proiecia aplicat
asupra unei tabele R1 genereaz o tabel R2 ce va avea
gradul mai mic dect R1 dar cu acelai numr de tupluri
(cardinalitate). Notaia specific pentru proiecie este
R2=PROIECTIEL (R2), unde:
R1 este tabelul (relaia) surs asupra creia se aplic
proiecia ;
L este subsetul de atribute (dintre atributele lui R2) ;
R2 este tabelul (relaia) rezultat, alctuit din tuplurile lui R2
cuprinznd doar atributele din lista L;

Microsoft Office Access 2010

Realizarea operatorilor relaionali


n SQL Proiecia

XP

SELECT Oras
FROM Studenti

Microsoft Office Access 2010

Intersecia

XP

Intersecia a dou relaii compatibile (avnd aceeai


structur) este tot o relaie ce conine doar
nregistrrile comune (identice) pentru cele dou
tabele. Cardinalitatea relaiei obinute n urma
interseciei a dou tabele este mai mic sau cel
puin egal cu minimul cardinalitilor celor dou
tabele. Gradul relaiei R3 este egal cu gradul relaiei
R1 i respectiv al relaiei R2.
SELECT *
FROM Studenti
WHERE CodStudent
IN (SELECT CodStudent
FROM Doctoranzi)
Microsoft Office Access 2007

Algebra relaional - Compunerea

XP

SELECT NrCredit, DataCredit, valoareCredit,


Perioada_luni, Min_durata, Max_durata, TipCredit
FROM Credit, TipCredit
WHERE Perioada_luni>=Min_durata AND
Perioada_luni<=Max_durata;
Microsoft Office Access 2010

Algebra relaional - Compunerea

XP

Compunerea a dou tabele R1 i R2 este o tabel R3 ce


combin tuplurile celor dou tabele surs, fiind alese doar
acelea care ndeplinesc o anumit condiie specificat n
cadrul compunerii. Gradul relaiei (numrul de coloane)
obinute ca urmare a compunerii a dou relaii este egal cu
suma gradelor relaiilor surs.
Notaia specific pentru compunere este R3=R1 JOINC R2,
unde
R1 i R2 sunt tabelele (relaiile) de baz asupra crora se
aplic compunerea;
C este condiia care poate s conin operatori logici i
aritmetici precum i agregri de date.
R3 este tabelul (relaia) rezultat, alctuit din tuplurile
produsului cartezian R2 X R3 care ndeplinesc condiia C.
Microsoft Office Access 2010

Algebra relaional - Echicompunerea

XP

Este compunerea pentru care condiia este alctuit numai din


egaliti, putnd conine una sau mai multe egaliti. n cazul
echicompunerii, n tabela rezultat apar dou cmpuri ce au valori
identice.
Gradul relaiei (numrul de coloane) obinute ca rezultat al
echicompunerii este egal cu suma gradelor celor doua relaii
surs.
Cardinalitatea (numrul de tupluri ale relaiei rezultat) este mai
mic sau egal cu produsul cardinalitilor tabelelor surs.

Microsoft Office Access 2007

Compunerea natural

XP

Compunerea natural este echicompunerea a dou tabele,


pentru care exist cel puin cte cmp avnd acelai nume i tip,
n care din rezultat se elimin cmpurile identice.
Gradul relaiei obinute ca rezultat al compunerii naturale este
mai mic dect suma gradelor celor doua relaii surs, deoarece
sunt eliminate cmpurile identice.
Cardinalitatea (reprezint numrul de tupluri) relaiei rezultat
este mai mic sau egal dect produsul cardinalitilor tabelelor
surs.

Microsoft Office Access 2007

10

Compunerea extern

XP

Compunerea extern este o echicompunere dar care, spre


deosebire de aceasta, afieaz i tuplurile care nu au
corespondent n cadrul celor dou tabele surs
R1
A
a
b
a

R1 OUTER JOIN B=D R2

R2
B
1
3
2

OUTER JOIN B=D

C
x
z
x

D
1
2
6

A
a
b
a
NULL

B
1
3
2
NULL

InscrieriCurs

C
x
NULL
z
x

D
1
NULL
2
6

InscrieriCurs

Cursuri
Cursuri

Cursuri LEFT JOIN InscrieriCurs

Microsoft Office Access 2010

Cursuri RIGHT JOIN InscrieriCurs

11

Algebra relaional - Diviziunea

XP

Diviziunea presupune mprirea unei tabele (R1), denumit


demprit, la o tabela denumit mpritor (R2) rezultnd o alt
tabela (R3) denumit ct, astfel nct orice tuplu al tabelei ct
(R3) trebuie s se regseasc n cadrul tuplurilor tabelei
demprit (R1) n combinaie cu fiecare tuplu din tabela
mpritor (R2). Pentru a putea s aib sens diviziunea, tabela
mpritor (R2) trebuie s aib ca atribute un subset al
atributelor tabelei demprit (R1). Gradul tabelei ct (R3) este
egal cu diferena gradelor tabelelor demprit (R1) i mpritor
(R2).
R1

A
a
b
a
d

Microsoft Office Access 2007

B
1
2
2
3

C
x
y
x
x

R2

B
1
2

R1 R2
A
a

C
x

12

R1
A
a
b
a
d

Diviziunea

B
1
2
2
3

R2

C
x
y
x
x

R1 R2

B
1
2

A
a

C
x

XP

R2
B
1
2

Varianta 1

R1
A
a
b
a
d

B
1
2
2
3

C
x
y
x
x

S1=SELECTB=1 (R1)

C
x
y
x
x

S2= SELECTB=2 (R1)

A
a

B
1

T1=PROI A,C (S1)

C
x

A
a

R1
A
a
b
a
d

B
1
2
2
3

R1
A
a
b
a
d

B
1
2
2
3

C
x
y
x
x

S=R1 JOIN R1.B=R2.B R2

R2
JOIN R1.B=R2.B

Varianta 2

B
1
2

A
b
a

A
a
b
a

B
1
2
2

C
x
y
x

B
2
2

C
x

T1

A
b
a

C
x

C
y
x

T=PROI A,C (S)


A
a
b
a

C
x
y
x

Numarul de
tupluri din R2

W=GROUP A,C,COUNT(*) (T)


A
a
b

C
x
y

Count
2
1

R1 R2=SELECT Count=2 (W)


A
a

Microsoft Office Access 2010

A
a

T2=PROI A,C (S2)

C
y
x

T2=R1 R2

C
x

R1 R2

13

Algebra relaionala - Diviziunea

XP

Identificarea profesorilor care predau toate cursurile din tabelul


Disciplina
C=Profesor : Disciplina
:

=
P=Disciplina X C

Microsoft Office Access 2010

14

Algebra relaionala - Diviziunea

XP

C=Profesor : Disciplina
:

SELECT CodProfesor
FROM Profesor INNER JOIN Disciplina ON
Profesor.CodDisciplina = Disciplina.CodDisciplina
GROUP BY CodProfesor
HAVING Count(Profesor.CodDisciplina) =
(SELECT Count(.CodDisciplina)
FROM Disciplina
Microsoft Office Access 2010

15

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