Sunteți pe pagina 1din 14

4.3.4.

Joncţiunea

După cum am văzut, produsul cartezian permite fuzionarea a două tabele într-una singură ce conţine
toate atributele şi liniile obţinute prin combinarea fiecărui tuplu dintr-o relaţia cu fiecare tuplu din
cealaltă.
Joncţiunea, spre deosebire de produsul cartezian care este o fuziune necondiţionată a două tabele,
este o fuziune a două relaţii care au o proprietate comună.
Fie două relaţii R1(A1, A2, …, An) şi R2(B1, B2, …, Bp) şi Ai şi Bj două atribute definite pe acelaşi
domeniu şi  (literea grecească teta) ansamblul operatorilor de comparaţie {=, <, >, ≤, ≥, } ce pot fi
aplicaţi celor două atribute Ai şi Bj.
Joncţiunea relaţiei R1, prin Ai cu relaţia R2, prin Bj notată

R1 (Ai  Bj) R2

este relaţia ale cărei tupluri sunt obţinute prin concatenarea fiecărui tuplu al relaţiei R1 cu tuplurile relaţiei
R2, pentru care este verificată condiţia  instituită între Ai şi Bj.
Se notează:

R1 (Ai  Bj) R2 = {t | t  R1  R2 şi t(Ai)  t(Bj)}.

Joncţiunea este echivalentă cu un produs cartezian urmat de o selecţie. Această joncţiune este
cunoscută în literatura de specialitate sub denumirea de theta-joncţiune.
În lucrul cu bazele de date relaţionale se utilizează cu precădere echi-joncţiunea, ce reprezintă un caz
particular al theta-joncţiunii, atunci când  este operatorul de egalitate „=”.
Se notează:

R1 (Ai = Bj) R2 = {t | t  R1  R2 şi t(Ai) = t(Bj)}.

Exemplu:
Theta – joncţiune

Pentru exemplificarea acestui operator se folosesc aceleaşi două tabele R1 şi R2. Rezultatul joncţiunii
(theta - joncţiunii) exprimată prin expresia

R ← JONCŢIUNE (R1, R2, R1.C1 > R2.C5),

este obţinut în 2 paşi, după cum se observă în figura următoare:


R1 R’  R1  R2
C1 C2 C3 C1 C2 R1.C3 R2.C C4 C5
3
100 AAA 500 100 AAA 500 500 BBB 300
200 AAB 750 100 AAA 500 300 BAA 250
400 ABA 250 100 AAA 500 400 BBA 300
500 BBB 700 100 AAA 500 700 AAA 500
900 ABB 400 100 AAA 500 900 ABB 400
200 AAB 750 500 BBB 300
R2 200 AAB 750 300 BAA 250
C3 C4 C5 200 AAB 750 400 BBA 300
500 BBB 300 200 AAB 750 700 AAA 500
300 BAA 250 200 AAB 750 900 ABB 400
400 BBA 300 400 ABA 250 500 BBB 300
700 AAA 500 400 ABA 250 300 BAA 250
900 ABB 400 400 ABA 250 400 BBA 300
400 ABA 250 700 AAA 500
400 ABA 250 900 ABB 400
500 BBB 700 500 BBB 300
500 BBB 700 300 BAA 250
500 BBB 700 400 BBA 300
500 BBB 700 700 AA 500
A
R = SELECŢIE (R’; C1 > C5) 500 BBB 700 900 ABB 400
C1 C2 R1.C3 R2.C3 C4 C5 900 ABB 400 500 BBB 300
400 ABA 250 500 BBB 30 900 ABB 400 300 BAA 250
0
400 ABA 250 300 BAA 25 900 ABB 400 400 BBA 300
0
400 ABA 250 400 BBA 30 900 ABB 400 700 AA 400
0 A
500 BBB 700 500 BBB 30 900 ABB 400 900 ABB 500
0
500 BBB 700 300 BAA 25
0
500 BBB 700 400 BBA 30
0
500 BBB 700 800 ABB 40
0
900 ABB 400 500 BBB 30
0
900 ABB 400 300 BAA 25
0
900 ABB 400 400 BBA 30
0
900 ABB 400 700 AAA 50
0
900 ABB 400 900 ABB 40
0

Exemplu:
Echi – joncţiune

Pentru a fi o echi–joncţiune, operatorul de comparaţie dintre cele două atribute este, în mod
obligatoriu, semnul de egalitate.

R ← JONCŢIUNE (R1, R2; R1.C1 = R2.C5)


R1 R’  R1  R2
C1 C2 C3 C1 C2 R1.C3 R2.C3 C4 C5
100 AAA 500 100 AAA 500 500 BBB 300
200 AAB 750 100 AAA 500 300 BAA 250
400 ABA 250 100 AAA 500 400 BBA 300
500 BBB 700 100 AAA 500 700 AAA 500
900 ABB 400 100 AAA 500 900 ABB 400
200 AAB 750 500 BBB 300
R2 200 AAB 750 300 BAA 250
C3 C4 C5 200 AAB 750 400 BBA 300
500 BBB 300 200 AAB 750 700 AAA 500
300 BAA 250 200 AAB 750 900 ABB 400
400 BBA 300 400 ABA 250 500 BBB 300
700 AAA 500 400 ABA 250 300 BAA 250
900 ABB 400 400 ABA 250 400 BBA 300
400 ABA 250 700 AA 500
A
400 ABA 250 900 ABB 400
500 BBB 700 500 BBB 300
500 BBB 700 300 BAA 250
500 BBB 700 400 BBA 300
500 BBB 700 700 AA 500
A
500 BBB 700 900 ABB 400
900 ABB 400 500 BBB 300
900 ABB 400 300 BAA 250
900 ABB 400 400 BBA 300
900 ABB 400 700 AA 400
A
900 ABB 400 900 ABB 500

R = SELECŢIE (R’; C1 = C5)


C1 C2 R1.C3 R2.C3 C4 C5
500 BBB 700 700 AA 500
A

Exemplu:
Joncţiune naturală

Joncţiunea naturală, pe lângă faptul că presupune ca operatorul de comparaţie să fie semnul de


egalitate, implică şi denumirea identică a atributelor de legătură între cele două tabele.

R ← JONCŢIUNE (R1, R2; R1.C3 = R2.C3) sau se poate folosi şi forma simplificată, datorită
faptului că ambele atribute au acelaşi nume

R ← JONCŢIUNE (R1, R2; C3)

Având în vedere că cele două atribute au acelaşi nume, se poate considera că tabela rezultat păstrează
numai unul dintre cele două atribute.
R1 R’  R1  R2
C1 C3 C1 C2 R1.C R2.C C4 C5
3 3
100 AA 500 10 AAA 500 500 BBB 300
A 0
200 AAB 750 10 AAA 500 300 BAA 250
0
400 ABA 250 10 AAA 500 400 BBA 300
0
500 BBB 700 10 AAA 500 700 AA 500
0 A
900 ABB 400 10 AAA 500 900 ABB 400
0
20 AAB 750 500 BBB 300
0
20 AAB 750 300 BAA 250
R2 0
C3 C4 C5 20 AAB 750 400 BBA 300
0
500 BBB 300 20 AAB 750 700 AA 500
0 A
300 BAA 250 20 AAB 750 900 ABB 400
0
400 BBA 300 40 ABA 250 500 BBB 300
0
700 AA 500 40 ABA 250 300 BAA 250
A 0
900 ABB 400 40 ABA 250 400 BBA 300
0
40 ABA 250 700 AA 500
0 A
40 ABA 250 900 ABB 400
0
50 BBB 700 500 BBB 300
0
50 BBB 700 300 BAA 250
0
50 BBB 700 400 BBA 300
0
50 BBB 700 700 AA 500
0 A
50 BBB 700 900 ABB 400
0
90 ABB 400 500 BBB 300
0
90 ABB 400 300 BAA 250
0
90 ABB 400 400 BBA 300
0
90 ABB 400 700 AA 400
0 A
90 ABB 400 900 ABB 500
0

R = SELECŢIE (R’; R1.C3 = R2.C3)


C1 C2 C2 C3 C4
10 AAA 500 BBB 300
0
50 BBB 700 AAA 500
0
90 ABB 400 BBA 300
0

Deoarece selecţia este un operator care se aplică doar unei singure tabele (operator unar), este
necesară fuzionarea tabelelor din care se doreşte extragerea datelor pentru obţinerea unei relaţii agregat, la
care se aplică predicatul suplimentar de selecţie. Fuzionarea tabelelor este posibilă numai prin joncţiune.
Prin joncţionarea tuturor relaţiilor dintr-o bază de date se poate ajunge la o relaţie universală
Exemplu:
Să se afle pentru fiecare student bursier ce tip de bursă primeşte şi care este valoarea acesteia.

Tabela STUDENT se joncţionează cu tabela BURSA pe baza atributului comun (numar matricol) iar
la tabela intermediară rezultată (R1), se aplică proiecţia pentru extragerea atributelor care ne interesează.

R1 ← JONCŢIUNE (STUDENT, BURSA, Numar matricol)


R2 ← PROIECŢIE (R1; nume, tip bursa,
suma incasata)

Exemplu:
Să se afle numele, facultate şi secţia studenţilor care stau în căminul Sportiv.

Soluţia 1. Numele, facultatea şi secţia sunt atributele tabelei STUDENT, dar pentru a afla numele
căminului, trebuie joncţionată (unită) acestă tabelă cu tabela STUDCAMIN după atributul de legătură
numar matricol. Pe această tabelă intermediară se aplică o selecţie urmată de o proiecţie.
R1 ← JONCŢIUNE (STUDENT, STUDCAMIN; Numar matricol)
R2 ← SELECŢIE (R1; nume camin = „Caminul Sportiv”)
R3 ← PROIECŢIE (R2; nume, facultate, sectia, nume camin)

Soluţia 2. Mai întâi se aplică selecţia asupra tabelei STUDCAMIN pentru a afla doar căminul
Caminul Sportiv, iar tabela intermediară se joncţionează cu STUDENT, după care urmează proiecţia.

R1 ← SELECŢIE (STUDCAMIN; nume camin = „Caminul Sportiv”)


R2 ← JONCŢIUNE (R1, STUDENT; Numar matricol)
R3 ← PROIECŢIE (R2; nume, facultate, sectia, nume camin)

Care dintre cele două variante este de preferat? A doua variantă este mai bună decât prima, deoarece
joncţiunea operează asupra a două tabele mai reduse ca dimensiuni (tabela STUDCAMIN deja a fost
filtrată prin aplicarea predicatului de selecţie). Diferenţa este cu atât mai vizibilă atunci când tabela
STUDENT conţine toţi studenţii dintr-o universitate. Iar dacă ne gândim că înaintea oricărei joncţiuni se
realizează produsul cartezian apare îndreptăţită amânarea joncţiunii, până când aceasta va opera asupra
unor tabele cu un număr cât mai mic de linii şi coloane.

Exemplu:
Care sunt cărţile scrise de Ionescu Gina?

Elementul de noutate în cazul acestui exemplu îl reprezintă faptul că se doreşte obţinerea unei
informaţii ce provine dintr-o relaţie (atributul titlu din tabela CARTE), pe baza unei condiţii aplicate altei
relaţii (atributul nume autor din tabela AUTOR), iar cele două relaţii nu sunt în raport de părinte – copil.
În asemenea situaţii se recomandă folosirea şi a altor relaţii intermediare, în cazul nostru tabela
AUTORCARTE, care conţine atribut de legătură atât pentru tabela AUTOR cât şi pentru tabela CARTE.

Soluţia 1. În prima fază de unesc toate cele trei tabele care vor fi parcure pentru a obţine
rezultatul dorit (CARTE, AUTORCARTE, AUTOR). Selecţia se aplică asupra relaţiei R3 care conţine
atributele tuturor celor trei tabele.

R1 ← JONCŢIUNE (CARTE, AUTORCARTE; cota carte)


R2 ← JONCŢIUNE (R1,AUTOR; cod autor)
R3 ← SELECŢIE (R2; nume autor = „Ionescu Gina”)
R4 ← PROIECŢIE (R3; titlu)

Soluţia 2. În cazul de faţă avem o abordare oarecum inversă celei din soluţia 1. De data aceasta
plecăm de la tabela AUTOR aplicându-se operatorul de selecţie pentru a obţine doar autorul Ionescu
Gina. În continuare, nu mergem cu toate atributele ci, în urma unei proiecţii, păstrăm doar atributul cod
autor (atribut de legătura cu tabela AUTORCARTE). La fel şi din relaţia R3 nu păstrăm decât atributul
cota carte pentru a putea face joncţiunea cu CARTE.

R1 ← SELECŢIE (AUTOR, nume autor = „Ionescu Gina”)


R2 ← PROIECŢIE (R1; cod autor)
R3 ← JONCŢIUNE (R2,AUTORCARTE; cod autor)
R4 ← PROIECŢIE (R3; Cota carte)
R5 ← JONCŢIUNE (R4, CARTE; cota carte)
R6 ← PROIECŢIE (R5; titlu)
Exemplu:
Să se afle numele studenţilor care au împrumutat cărţi din domeniul Informatică.

Şi în acest caz se doreşte obţinerea unei informaţii ce provine dintr-o tabelă (atributul nume din
tabela STUDENT) pe baza unei condiţii aplicate unei alte tabele iar între cele două tabele nu există
legătură părinte – copil. De această dată se foloseşte ca legătură tabela STUDCARTE (aceasta conţine
câmpuri de legătură pentru cele două tabele).

Soluţia 1. Se unesc mai întâi tabelele STUDENT, STUDCARTE şi CARTE pentru a se aplica
operatorul de selecţie asupra relaţiei rezultat R2, urmată de o proiecţie.

R1 ← JONCŢIUNE (STUDENT; STUDCARTE; numar matricol)


R2 ← JONCŢIUNE (R1, CARTE; cota carte)
R3 ← SELECŢIE (R2; domeniu = „Informatica”)
R4 ← PROIECŢIE (R3; nume)

Soluţia 2. Aplicând operatorul de selecţie asupra tabelei CARTE aflăm, mai întâi, doar cărţile din
domeniul Informatică şi după aceea realizăm joncţiunea cu celelalte două relaţii STUDCARTE şi
STUDENT. După prima joncţiune nu se păstrează toate atributele ci doar numar matricol (celelalte
atribute nu interesează în rezultatul final).

R1 ← SELECŢIE (CARTE; domeniu = „Informatica”)


R2 ← JONCŢIUNE (R1, STUDCARTE; cota carte)
R3 ← PROIECŢIE (R2; numar matricol)
R4 ← JONCŢIUNE (R3, STUDENT; numar matricol)
R5 ← PROIECŢIE (R4; nume)

Exemplu:
Să se afle numele şi secţia studenţilor facultăţii de Ştiinţe Economice care au împrumutat cartea Baze de
date în perioada 15-25 martie 2017.

Relaţia rezultat trebuie să conţină valori ale atributelor nume şi sectia din tabela STUDENT.
Predicatul de selecţie se aplică însă asupra tabelei CARTE (atributul titlu = „Baze de date”) şi asupra
tabelei STUDCARTE (atribut data imprumut> = 15/03/2017 şi data imprumut< = 25/03/2017).

Soluţia 1.
R1 ← SELECŢIE (CARTE; titlu = „Baze de date”)
R2 ← JONCŢIUNE (R1, STUD_CARTE; cota carte)
R3 ← SELECŢIE (R2; data_imprumut > = 15/03/2017
AND data_imprumut < = 25/03/2017)
R4 ← PROIECŢIE (R3; numar matricol)
R5 ← JONCŢIUNE (R4; STUDENT; numar matricol)
R6 ← SELECŢIE (R5; facultate = „Stiinte Economice”)
R7 ← PROIECŢIE (R6; nume, sectia)
Soluţia 2.

R1 ← SELECŢIE (STUDENT; facultate = „Stiinte Economice”)


R2 ← JONCŢIUNE (R1; STUDCARTE; numar matricol)
R3 ← SELECŢIE (R2; data_imprumut > = 15/03/2017
AND data_imprumut < = 25/03/2017)
R4 ← JONCŢIUNE (R3, CARTE; cota carte)
R5 ← SELECŢIE (R4; titlu = „Baze de date”)
R6 ← PROIECŢIE (R5; nume, sectia)

Soluţia 3.
R1 ← JONCŢIUNE (STUDENT, STUDCARTE; numar matricol)
R2 ← JONCŢIUNE (R1, CARTE; cota carte)
R3 ← SELECŢIE (R2; facultate = „Stiinte Economice”)
R4 ← SELECŢIE (R3; data_imprumut > = 15/03/2017
AND data_imprumut < = 25/03/2017)
R5 ← SELECŢIE (R4; titlu = „Baze de date”)
R6 ← PROIECŢIE (R7; nume, sectia)

Observaţie: Pot fi avute în vedere şi alte soluţii de rezolvare.

Exemplu:
De la ce secţii sunt studenţii care au împrumutat şi cartea Baze de date şi cartea Sisteme informatice de
gestiune?

Rezultatul conţine atributul sectia din tabela STUDENT, dar predicatul de selecţie se aplică asupra
tabelei CARTE.

Soluţia 1. Într-o relaţie (R4) aflăm secţia studenţilor care au împrumutat cartea Baze de date, în alta
(R8) aflăm secţia celor care au împrumutat cartea Sisteme informatice de gestiune iar apoi intersectăm
cele două relaţii (şi cartea…şi cartea…).

R1 ← SELECŢIE (CARTE; titlu = „Baze de date”)


R2 ← JONCŢIUNE (R1, STUD_CARTE; cota carte)
R3 ← JONCŢIUNE (R2, STUDENT; numar matricol)
R4 ← PROIECŢIE (R3; sectia)
R5 ← SELECŢIE (CARTE; titlu = „Sisteme informatice de gestiune”)
R6 ← JONCŢIUNE (R5, STUDCARTE; cota carte)
R7 ← JONCŢIUNE (R6, STUDENT; numar matricol)
R8 ← PROIECŢIE (R7; sectia)
R9 ← R4  R8
Soluţia 2. În cazul de faţă după ce aflăm secţiile studenţiilor care au împrumutat cele două cărţi, Baze
de date şi cartea Sisteme informatice de gestiune, realizăm o juncţiune a celor două relaţii (R3 şi R6)
folosind ca atribut de legătură sectia.

R1 ← SELECŢIE (CARTE; titlu = „Baze de date”)


R2 ← JONCŢIUNE (R1, STUD_CARTE; cota carte)
R3 ← JONCŢIUNE (R2, STUDENT; numar matricol)
R4 ← SELECŢIE (CARTE; titlu = „Sisteme informatice de gestiune”)
R5 ← JONCŢIUNE (R4, STUDCARTE; cota carte)
R6 ← JONCŢIUNE (R5, STUDENT; numar matricol)
R7 ← JONCŢIUNE (R3; R6; sectia)
R8 ← PROIECŢIE (R7, sectia)

Exemplu:
În ce cămin sunt cazaţi studenţii care au împrumutat cărţile Baze de date şi Sisteme informatice de
gestiune, dar nu au împrumutat cartea Economie politică?

Pentru a afla căminul în care sunt cazaţi studenţii care au împrumutat cărţile Baze de date şi Sisteme
informatice de gestiune aplicăm acelaşi raţionament ca la exemplul anterior, soluţia 1. În plus mai
folosim operatorul diferenţă cu relaţia ce conţine căminul în care sunt cazaţi studenţii care au împrumutat
cartea Drept penal.

R1 ← SELECŢIE (CARTE; titlu = „Baze de date”)


R2 ← JONCŢIUNE (R1, STUD_CARTE; cota carte)
R3 ← JONCŢIUNE (R2, STUDENT; numar matricol)
R4 ← JONCŢIUNE (R3, STUDCAMIN; numar matricol)
R5 ← PROIECŢIE (R4, nume camin)
R6 ← SELECŢIE (CARTE; titlu = „Sisteme informatice de gestiune”)
R7 ← JONCŢIUNE (R6, STUDCARTE; cota carte)
R8 ← JONCŢIUNE (R7, STUDENT; numar matricol)
R9 ← JONCŢIUNE (R8, STUDCAMIN; numar matricol)
R10 ← PROIECŢIE (R9; nume camin)
R11 ← SELECŢIE (CARTE; titlu = „Drept penal”)
R12 ← JONCŢIUNE (R11, STUDCARTE; cota carte)
R13 ← JONCŢIUNE (R12, STUDENT; numar matricol)
R14 ← JONCŢIUNE (R13, STUDCAMIN; numar matricol)
R15 ← PROIECŢIE (R14; nume camin)
R16 ← (R5  R10) – R15

Exemplu:
Să se afle numele studenţilor din judeţul Dâmboviţa care au bursa de merit şi excepţională.

Soluţia 1.
R1 ← SELECŢIE (LOCALITATE; judet=„Dambovita”)
R2 ← JONCŢIUNE (R1,STUDENT; cod localitate)
R3 ← JONCŢIUNE (R2, BURSA; numar matricol)
R4 ← SELECŢIE (R3; tip bursa=”Merit”)
R5 ← PROIECŢIE (R4; nume)
R6 ← SELECŢIE (R3; tip bursa=”Exceptionala”)
R7 ← PROIECŢIE (R5; nume)
R8 ← R5  R7

Soluţia 2.
R1 ← SELECŢIE (BURSA; tip bursa=”Merit” OR tip
bursa=”Exceptionala”)
R2 ← JONCŢIUNE (R1,STUDENT; numar matricol)
R3 ← JONCŢIUNE (R2, LOCALITATE; cod localitate)
R4 ← SELECŢIE (R3; judet=„Dambovita”)
R5 ← PROIECŢIE (R4; nume)

Exemplu:
Să se afle titlul cărţilor împrumutate în luna martie 2017 de către studenţii de la Facultatea de Ştiinţe
Economice.

Soluţia 1.
R1 ← JONCŢIUNE (STUDENT, STUDCARTE; numar matricol)
R2 ← JONCŢIUNE (R1, CARTE; cota carte)
R3 ← SELECŢIE (R2; facultate = „Stiinte Economice”)
R4 ← SELECŢIE (R3; data imprumut>=01/03/2017 and
data imprumut <=31/03/2017)
R5 ← PROIECŢIE (R4; titlu)

Soluţia 2.
R1 ← SELECŢIE (STUDCARTE; data imprumut>=01/03/2017 and
data imprumut <=31/03/2017)
R2 ← JONCŢIUNE (R1, STUDENT; numar matricol)
R3 ← SELECŢIE (R2; facultate = „Stiinte Economice”)
R4 ← JONCŢIUNE (R3, CARTE; cota carte)
R5 ← PROIECŢIE (R4; titlu)

Exemplu:
Să se afle numele studenţilor născuţi în perioada martie 1994 – martie 1996, care au împrumutat cărţi
care nu aparţin domeniilor Contabilitate sau Informatică.

Soluţia 1.
R1 ← JONCŢIUNE (STUDENT, STUDCARTE; numar matricol)
R2 ← JONCŢIUNE (R1, CARTE; cota carte)
R3 ← SELECŢIE (R2; data nasterii >= 01/03/1994 AND
data nasterii <= 31/03/1996)
R4 ← SELECŢIE (R3, domeniu ≠ „Contabilitate” and
domeniu ≠ „Informatica”)
R5 ← PROIECŢIE (R4; Nume)

Soluţia 2.
R1 ← SELECŢIE (STUDENT; data nasterii >= 01/03/1994 AND
data nasterii <= 31/03/1996)
R2 ← JONCŢIUNE (R1, STUDCARTE; numar matricol)
R3 ← JONCŢIUNE (R2, CARTE; cota carte)
R4 ← SELECŢIE (R3, domeniu ≠ „Contabilitate” AND
domeniu ≠ „Informatica”)
R5 ← PROIECŢIE (R4; Nume)

Soluţia 3.
R1 ← JONCŢIUNE (STUDENT, STUDCARTE; numar matricol)
R2 ← JONCŢIUNE (R1, CARTE; cota carte)
R3 ← SELECŢIE (R2; data nasterii >= 01/03/1994 AND
data nasterii <= 31/03/1996)
R4 ← SELECŢIE (R3, domeniu ≠ „Contabilitate”)
R5 ← PROIECŢIE (R4; Nume)
R6 ← SELECŢIE (R3, domeniu ≠ „Informatica”)
R7 ← PROIECŢIE (R6; Nume)
R8 ← R5  R7

Exemplu:
Să se afle numele autorilor de naţionalitate străină , ale căror cărţi au apărut în anii 2007, 2009 şi 2010
şi au fost imprumutate de studenţii din regiunea Moldova.

Soluţia 1.
R1 ← JONCŢIUNE (AUTOR, AUTORCARTE; cod autor)
R2 ← JONCŢIUNE (R1, CARTE; cota carte)
R3 ← JONCŢIUNE (R2, STUDCARTE; cota carte)
R4 ← JONCŢIUNE (R3, STUDENT; numar matricol)
R5 ← JONCŢIUNE (R4, LOCALITATE; cod localitate)
R6 ← SELECŢIE (R5; nationalitate ≠ „roman”)
R7 ← SELECŢIE (R6; an aparitie = 2007 OR an aparitie = 2009
OR an aparitie = 2010)
R8 ← SELECŢIE (R7; Regiune = „Moldova”)
R9 ← PROIECŢIE (R8; nume autor)

Soluţia 2.
R1 ← SELECŢIE (LOCALITATE; Regiune = „Moldova”)
R2 ← JONCŢIUNE (R1, STUDENT; cod localitate)
R3 ← JONCŢIUNE (R2, STUDCARTE; numar matricol)
R4 ← JONCŢIUNE (R3, CARTE; cota carte)
R5 ← SELECŢIE (R4; an aparitie = 2007 OR an aparitie = 2009
OR an aparitie = 2010)
R6 ← JONCŢIUNE (R5, AUTORCARTE; cota carte)
R7 ← JONCŢIUNE (R6, AUTOR; cod autor)
R8 ← SELECŢIE (R7; nationalitate ≠ „roman”)
R9 ← PROIECŢIE (R8; nume autor)
Soluţia 3.
R1 ← JONCŢIUNE (AUTOR, AUTORCARTE; cod autor)
R2 ← JONCŢIUNE (R1, CARTE; cota carte)
R3 ← JONCŢIUNE (R2, STUDCARTE; cota carte)
R4 ← JONCŢIUNE (R3, STUDENT; numar matricol)
R5 ← JONCŢIUNE (R4, LOCALITATE; cod localitate)
R6 ← SELECŢIE (R5; nationalitate ≠ „roman”)
R7 ← SELECŢIE (R6; Regiune = „Moldova”)

R8 ← SELECŢIE (R7; an aparitie = 2007)


R9 ← PROIECŢIE (R8; nume autor)
R10 ← SELECŢIE (R7; an aparitie = 2009)
R11 ← PROIECŢIE (R10; nume autor)
R12 ← SELECŢIE (R7; an aparitie = 2010)
R13 ← PROIECŢIE (R12; nume autor)
R14 ← R9  R11  R13

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