Transcript
Page 1: BD3 Algebra Relationala 2013

BD Algebra relationala 1

Algebra relationala

Page 2: BD3 Algebra Relationala 2013

Modelul relational al datelor si algebra relationalaModelul relational al datelor si algebra relationala

� In terminologia relationala, un rind al tabelei este denumit nn--upluuplu, o coloana poarta denumirea de atributatribut iar tabela se numeste relatierelatie. Tipul datelor descriind tipul valorilor ce pot apare in fiecare coloana este numit si domeniudomeniu. Un domeniudomeniu D este reprezentat de un set de valori atomice.

� Este foarte util sa se specifice pentru un domeniu un nume relevant pentru interpretarea valorilor datelor, ca de exemplu pentru relatia aferenta entitatilor student, numele relatiei poate fi asignat la valoarea STUDENT, iar atributele sale ca in exemplul de mai jos:

NUMENUME :Setul numelor persoanelor

Algebra relationala 2BD

NUMENUME :Setul numelor persoanelor

NR_TELNR_TEL :Numarul de telefon reprezentat pe 8 digiti

DEP_NRDEP_NR :Numarul departamentului la care studentul studiaza

� Conceptul matematic ce acopera modelul relational este produsul cartezian al listei domeniilor. Un domeniu este un simplu set de valori ca de exemplu setul intregilor. Produsul cartezian al domeniilor D1,D2,...Dn sau D1xD2,x..xDn este setul tuturor n_uplurilor (v1,v2,...,vn) in care vi∈Di. O relatie este reprezentata de orice subset al produsului cartezian al unuia sau mai multor domenii.

Page 3: BD3 Algebra Relationala 2013

� O schema relatie R data prin R(A1,A2,...,An) reprezinta un set al atributelor Ai. Fiecare atribut Ai joaca rolul numelui acelui domeniu Di in relatia R. Di este domeniul lui Ai si se noteaza dom(Ai). O schema relatie este utilizata pentru descrierea relatiei R, unde R este numele relatiei. Se defineste gradul relatiei ca fiind numarul atributelor n ale schemei relatiei. Fie de exemplu o schema relatie de grad 7, ce descrie studentii intr-o universitate:

STUDENT(Nume, SSN, Telefon, Adresa_stabila, Adresa_flotanta, Virsta, Directie_specializare)

� O relatie r(sau relatie instanta) a unei relatii R(A1,A2,...,An) notata prin r(R), se reprezinta ca un set al n-uplurilor ti, asa ca r=(t1,t2,...,tm). Fiecare n-uplu t este o lista ordonata de n valori

Algebra relationala 3BD

prin r(R), se reprezinta ca un set al n-uplurilor ti, asa ca r=(t1,t2,...,tm). Fiecare n-uplu t este o lista ordonata de n valori t=<v1,v2,...,vn>, unde fiecare valoare vi pentru i=1,n este un element al dom(Ai) sau o valoare speciala nula. Se utilizeaza de asemenea in mod curent termenii relatie intensiva pentru R respectiv relatie extensiva pentru relatia instanta r(R).

� Se poate da pentru o relatie urmatoarea definitie:

O relatie r(R) este un subset al produsului cartezian al domeniilor ce defineste R

r(R)⊂ (dom(A1),dom(A2),...,dom(An))

Page 4: BD3 Algebra Relationala 2013

� Produsul cartezian contine toate combinatiile domeniilor. Deci, notind numarul valorilor sau cardinalitatea domeniului D prin [D], sipresupunind ca toate domeniile sint finite, numarul total al n-uplurilorin produsul cartezian va fi dat de

[dom(A1)]*[dom(A2)]*....*[dom(An)]

Caracteristici ale relatiilor

� ordinea n-uplurilor intr-o relatie. Se spune despre doua relatii in care ordinea atributelor este diferita ca sint identice.

� ordonarea valorilor intr-un n-uplu. Un n-uplu este o lista ordonata de n valori. Desi, la nivel logic ordinea atributelor si valorile lor nu esteimportanta, trebuie mentinuta corespondenta intre atribute si valori.

Algebra relationala 4BD

importanta, trebuie mentinuta corespondenta intre atribute si valori. O relatie r a schemei relatiei R=(A1,A2,...,An) este un set finit de n-upluri r=(t1,t2,...,tm) unde fiecare n-uplu ti are forma data de R, cu D o reuniune a domeniilor atributelor, D=dom(A1)∪dom(A2) ∪....∪dom(An). In aceasta definitie t(Ai) este o valoare din dom(Ai) pentru i=1,n.

� valorile intr-un n-uplu. Fiecare valoare in n-uplu este o valoareatomica ce nu poate fi divizata in fragmente. Daca sint atribute care nu au valori aplicabile la anumite n-upluri, atunci va fi reprezentatade o valoare speciala numita atributul null.

�� interpretareainterpretarea uneiunei relatiirelatii. O schema relatie poate fi interpretata ca o declaratie sau un tip de asertiune.

Page 5: BD3 Algebra Relationala 2013

� Se defineste schema bazei de date relationale S ca un set al schemei relatiilor S=[R1,R2,...,Rm] impreuna cu un set al restrictiilorde integritate. Se defineste instanta unei baze de date relationale caun set al relatiilor instanta [r1,r2,...,rm]. Se da mai jos, schema bazeide date relationale COMPANIE, avind relatiile ANGAJAT, DEPARTAMENT, LOC_DEP, PROIECT, LUCREAZA_LA, INTRETINUT.

� ANGAJAT (Nume, Ini, Pren, Ssn, Dat_Na, Adr, Sex, Salariu, Sssn, D_Nr)

� DEPARTAMENT(Dep_Nume, Dep_Nr, Dep_Manager,

Algebra relationala 5BD

� DEPARTAMENT(Dep_Nume, Dep_Nr, Dep_Manager, Dat_Inc_Manager)

� LOC_DEP(Dep_Nr, Dep_Loc )

� PROIECT(P_Nume, P_Nr, P_Loc, Dep_Nr)

� LUCREAZA_LA(A_Ssn, P-Nr , Ore)

� INTRETINUT(A_Ssn , C_Nume, Sex, Data_N, Relatie)

Obs: Nu am insistat pe includerea in schema a tuturor atributelor, ci pemodelarea schemei conform modelului relational

Page 6: BD3 Algebra Relationala 2013

Operatia SELECTOperatia SELECT

� Relatia ce rezulta dupa operatia SELECT contine aceleasi atribute cu relatia initiala, asupra careia se face operatia. Se poate spune ca in general operatia SELECT are urmatoarea sintaxa:

S<conditie selectie>(<nume relatie>)

Expresiile booleene specificate in <conditie selectie>, fac parte din clase de forma:

<nume atribut> <operator relational> <valoare constanta>

sau

Algebra relationala 6BD

sau

<nume atribut_1> <operator relational> <nume atribut_2>

unde,

<nume atribut> este numele unui atribut al relatiei definite; <operator relational> este data de unul din operatorii {=,<,<=,>,>=,#}, iar <valoare constanta> are interpretarea de constanta.

Exemple:

� SD_NR=4(ANGAJAT)

� SSALARIU>4000(ANGAJAT)

Page 7: BD3 Algebra Relationala 2013

� S(D_NR=3 .AND. SALARIU>4000) .OR. (D_NR=4)(ANGAJAT)Semnificatia operatiilor booleene este:

� (cond1 .AND. cond2) adevarata daca ambele conditii sint adevarate,

altfel falsa.

� (cond1 .OR. cond2) este adevarata daca fie conditia 1, fie conditia 2

este adevarata.

� (.NOT. cond) este adevarata atunci cind conditia este falsa.

� Faptul ca operatia se aplica la o singura relatie face ca operatia de

selectie sa fie unara. Operatia se aplica la fiecare n_uplu individual,

iar gradul relatiei rezultante in urma unei operatii SELECT este egal

Algebra relationala 7BD

iar gradul relatiei rezultante in urma unei operatii SELECT este egal

cu gradul (ordinul) relatiei initiale R. Operatia SELECT este

comutativacomutativa adica

� S<cond1>(S<cond2>(R))=S<cond2>(S<cond1>(R))

O cascada de operatii SELECT se pot combina utilizind operatorul

AND.

S<cond1>(S<cond2>(...(S<condn>(R))..)=S<cond1>.AND.<cond2>

.AND.…………….AND. <condn>(R)

Page 8: BD3 Algebra Relationala 2013

Operatia PROJECTOperatia PROJECT

Daca se considera o relatie similara cu o tabela atunci operatiaSELECT selecteaza acele rinduri din tabela ce corespund conditiei de selectie.

Operatia PROJECT este utilizata pentru a selecta numai acele coloanece corespund listei atributelor specificate. Se presupune ca se doresteobtinerea pentru angajatii companiei a numelui si prenumelui.

P(NUME, PREN)(ANGAJAT)

� Se observa ca forma generala a unei operatii PROJECT este

P<lista atribute>(<nume relatie>)

Algebra relationala 8BD

P<lista atribute>(<nume relatie>)

unde,

P este simbolul utilizat pentru operatia PROJECT;

<lista atribute> reprezinta lista atributelor pastrate din relatiaspecificate prin <nume relatie>.

� Operatia PROJECT nu este in general comutativa. Aplicarea uneisuccesiuni de operatii PROJECT, daca succesiunea este valida, este echivalenta cu o singura operatie PROJECT.

P<lista1>(P<lista2>(R))=P<lista1>(R)

Obs: Operatia este valida numai daca lista2 contine toate atributele din lista1

Page 9: BD3 Algebra Relationala 2013

Combinatii Select Project

� Se considera ca exemplu, obtinerea relatiei ce contine numele, prenumele si salariul angajatilor ce lucreaza in departamentul 3. Pentru aceasta este necesara aplicarea atit a operatiei SELECT cat si a operatiei PROJECT. Aplicarea pe rand a operatiilor SELECT siPROJECT duce la crearea unei relatii intermediare notata in exemplul de mai jos REL1.

REL1= SD_NR=3(ANGAJAT)

REZULTAT = PNUME,PREN,SALARIU(REL1)

� Oalta, cea a utilizarii unei operatii compuse, asigura obtinerea

Algebra relationala 9BD

� Oalta, cea a utilizarii unei operatii compuse, asigura obtinerearelatiei rezultat fara o relatie intermediara.

REZULTAT = PNUME,PREN,SALARIU(SD_NR=3(ANGAJAT))

� Aplicarea secventelor complexe de operatii poate rezolva siproblema redenumirii atributelor in relatiile intermediare. Astfel, redenumirea atributelor in relatia rezultat se exemplifica in urmatorulexemplu

TEMP = SD_NR=5(ANGAJAT)

REZ(P_NUME,U_NUME,SALARIU) = PNUME,PREN,SALARIU(TEMP)

Page 10: BD3 Algebra Relationala 2013

Setul teoretic al operatiilor

� Prin setul teoretic se inteleg operatiile standard cum sunt

REUNIUNE, INTERSECTIE, DIFERENTA. Operatiile din aceasta

categorie se aplica asupra a doua relatii, deci fac parte din categoria

operatiilor binare. Ca exemplu, se presupune ca se doreste lista

numerelor de cod (Social Security Number) a tuturor angajatilor ce

lucreaza in departamentul 3 sau sunt supervizori angajati ai

departamentului 3. O modalitate de realizare este data mai jos:

REL1= S (ANGAJAT)

Algebra relationala 10BD

REL1= SD_NR=3(ANGAJAT)

REL2 = PSSN(REL1)

REL3(Ssn) = PSSSN(REL1)

REZ = REL2 ∪ REL3

� Aplicarea operatiei REUNIUNE asupra unei baze de date relationale

nu este posibila intotdeauna. Referitor la operatiile de mai sus este

necesar ca cele doua relatii sa aiba acelasi tip de n-upluri conditie

numita si compatibilitateacompatibilitatea reuniuniireuniunii.

Page 11: BD3 Algebra Relationala 2013

� Se spune ca doua relatii R(A1,A2,...An) si S(A1,A2,...,An) sint

compatibile reuniunii daca au acelasi grad n, si daca dom(Ai) este

identic cu dom(Bi) pentru 1<=i<=n. Altfel spus, cele doua relatii au

acelasi numar de atribute si atributele caracterizeaza acelasi

domeniu.

� Fie doua relatii R si S. Se pot defini operatiile teoretice pe cele doua

relatii astfel:

REUNIUNEA este operatia al carei rezultat include toate n-uplurile

Algebra relationala 11BD

� REUNIUNEA este operatia al carei rezultat include toate n-uplurile

ce sint fie in R, fie in S, fie in ambele relatii R si S. In rezultat se

elimina n-uplurile duplicat, relatia rezultanta se noteaza prin R∪S.

� INTERSECTIA este operatia ce asociaza relatiei R∩S acele n-upluri

ce sint continute atat in relatia R cat si in relatia S.

� DIFERENTA notata R\S contine toate n-uplurile ce se gasesc in

relatia R si nu se gasesc in relatia S.

Page 12: BD3 Algebra Relationala 2013

� Rezultatul produsului cartezian intre relatiile R(A1,A2,..,An) si

S(B1,B2,...,Bm) este o relatie Q(A1,A2,..,An,B1,B2,..,Bm) avind m+n

atribute in ordinea specificata. In relatia rezultata se combina un

n-uplu al relatiei R cu fiecare n-uplu al relatiei S, asa ca, daca R are

nr n-upluri si S are ns n-upluri, atunci Q=RxS va avea nr*ns n-upluri.

Ca exemplu, se considera cerinta de obtinere pentru fiecare

angajata de sex feminin lista numelor persoanelor pe care le are in

intretinere. O posibilitate este:

� REL1 = S (ANGAJAT)

Algebra relationala 12BD

� REL1 = SSEX='F'(ANGAJAT)

� REL2 = PNUME,PREN,SSN(REL1)

� REL3 = REL2 x INTRETINUT (produs cartezian)

� REL4 = SSSN=A_SSN(REL3)

� REZ = PNUME,PREN,C_NUME(REL4)

� REL3 este rezultatul aplicarii produsului cartezian intre REL2 si

relatia INTRETINUT.

Page 13: BD3 Algebra Relationala 2013

Operatia JOIN

Operatia JOIN este utilizata pentru combinarea n-uplurilor din douarelatii intr-o singura relatie. Este una din operatiile specifice bazelor de date relationale ce implica mai mult de o relatie, permitind construireade noi relatii pe baza celor existente.

Se considera ca se doreste sa se obtina numele managerului fiecaruidepartament. Pentru aceasta este necesara combinarea n-uplurilorANGAJAT cu n-uplurile DEPARTAMENT si selectarea acelora pentrucare atributele Ssn si Dep_manager au valori egale. Aceasta poate fi realizata prin utilizarea operatiei JOIN, astfel:

REL1 = DEPARTAMENT >< DEP_MANAGER=SSNANGAJAT

Algebra relationala 13BD

REL1 = DEPARTAMENT >< DEP_MANAGER=SSNANGAJAT

REZ = PDEP_NUME,NUME,PREN(REL1)

In concluzie operatia JOIN intre doua relatii R(A1,A2,..,An) siS(B1,B2,..,Bm) are structura

R><<cond join>S

avind ca rezultat o relatie Q cu n+m atribute Q(A1,A2,..,An,B1,..Bm) in aceasta ordine, fiind similara cu produsul cartezian dar, sintretinute numai acele n-upluri ce satisfac suplimentar conditia de join.

Page 14: BD3 Algebra Relationala 2013

Structura tipica a unei conditii join este:<conditie> AND <conditie> AND <conditie> AND..AND <conditie>unde, fiecare conditie este de forma Ai@Bi, cu Ai atribut al relatiei R si

Bi atribut al relatiei S. Sigur ca aceasta conditie nu poate fi adevarata decit daca atributele Ai si Bi reprezinta acelasidomeniu. Operatia notata simbolic @ esta asimilata cu una din operatiile {=,<,<=,>=,>,#}. Se precizeaza faptul ca n-uplurile la care atributele JOIN sunt nulle nu apar la rezultat.

Cele mai obisnuite operatii JOIN invoca numai conditii de egalitate, motiv pentru care operatia se va numi EQUIJOIN. In aceasta situatie se

Algebra relationala 14BD

motiv pentru care operatia se va numi EQUIJOIN. In aceasta situatie se pot obtine in rezultat mai multe perechi de atribute care au aceeasivaloare ca urmare a indeplinirii egalitatii. Intrucit relatia obtinuta estesuperflua, o noua operatie a fost introdusa, operatie numita siNATURAL JOIN care elimina al doilea atribut din conditia de egalitate. Pentru NATURAL JOIN se va lista numele atributelor comune intrecare avem conditia de egalitate.

Se cere obtinerea informatiilor despre proiecte impreuna cu cele ale departamentelor ce le coordoneaza:

PROIECT_DEPART = PROIECT >< (DEP_NR)DEPARTAMENT

Page 15: BD3 Algebra Relationala 2013

O operatie ceruta des in baze de date este DIVISION, operatie ce

doreste sa dea raspuns la intrebari de tipul "care este numele

angajatilor ce lucreaza la aceleasi proiecte ca si angajatul Popescu

Vasile ?". Pentru rezolvare se procedeaza astfel:

1. se determina lista proiectelor la care lucreaza Popescu Vasile,

obtinand o noua relatie REL2

REL1 = SNUME='POPESCU' .AND. PREN='VASILE'(ANGAJAT)

REL2 = PP_NR(LUCREAZA_LA * A_SSN=SSNREL1)

2. se creeaza relatia ce include perechea atributelor <P_NR, A_SSN>,

Algebra relationala 15BD

2. se creeaza relatia ce include perechea atributelor <P_NR, A_SSN>,

pentru angajatii ce lucreaza la proiectul ce are numarul <P_NR>

REL3 = PP_NR,A_SSN(LUCREAZA-LA)

3. in final se aplica relatia DIVISION la doua relatii, ce va identifica

angajatii doriti.

REL4(SSN) = REL3+REL2

REZ = PNUME,PREN(REL4 * ANGAJAT)

Page 16: BD3 Algebra Relationala 2013

JOIN aditional

� Operatia JOIN se aplica doar la n-uplurile ce satisfac conditia de join. Ca exemplu, la NATURAL JOIN intre relatiile R si S, toate n-uplurile pentru care atribute cu nume identic din cele doua relatii sunt egale apar in rezultat, iar n-uplurile din cele doua relatii ce nu satisfac conditia sint eliminate din rezultat. Sunt situatii in care se doreste ca rezultatul sa contina toate n-uplurile unei relatii. Pentru aceasta a fost introdus un set de operatii numit si JOIN ADITIONAL pentru pastrarea tuturor n-uplurilor din R , S sau din ambele. De exemplu, pentru a obtine lista ce contine toti angajati si la cei care

Algebra relationala 16BD

exemplu, pentru a obtine lista ce contine toti angajati si la cei care sunt manageri si departamentul ;a care sunt manageri se poate aplica o operatie JOIN ADITIONAL STING (LEFT OUTER JOIN), operatie cu simbulul ]><, care va retine fiecare n-uplu din prima relatie sau relatia stinga R, iar acolo unde conditiile join nu sunt adevarate atributele lui S in rezultat au valori nule.

REL1 = (ANGAJAT) ]>< SSN=DEP_MANAGER(DEPARTAMENT)

REZ = PNUME,INI,PREN,DEP_NUME(REL1)

� Similar pentru JOIN ADITIONAL DREPT

Page 17: BD3 Algebra Relationala 2013

Functii

� Operatiile discutate nu pot obtine rezultate ale functiilor matematice

efectuate asupra colectiilor de valori din baza de date (operatii

asupra valorilor unui atribut in toate n-uplurile relatiei). De exemplu,

o cerere care sa furnizeze suma salariilor tuturor angajatilor.

� Functii agregat:

Principalele functii oferite de algebra relationala sunt: SUM, AVERAGE,

MAX, MIN, COUNT. SUM si AVERAGE se pot aplica numai atributelor

cu domeniu numeric, MAX, MIN numai atributelor cu domeniu ce poate

Algebra relationala 17BD

cu domeniu numeric, MAX, MIN numai atributelor cu domeniu ce poate

fi ordonat, pe cind functia COUNT se poate aplica pentru atribute cu

orice domeniu. Oricare din aceste functii se iau in calcul toate n-uplurile

unei relatii.

� Functii de grup:

� Se aplica independent pentru n-uplurile apartinand unor grupuri de

n-upluri.

Page 18: BD3 Algebra Relationala 2013

Ca exemplu, aplicarea functiilor pe grupul angajatilor care lucreaza in cadrul aceluiasi departament, identificati prin valoarea atributului D_nrca atribute de grupare

� O operatie de tip functie de grup se scrie:

<grupul atributelor>F<lista functii>(<nume relatie>)

unde,

� <grupul atributelor> este o lista a atributelor relatiei specificate prin<nume relatie>;

<lista functii> se refera la o lista cu perechii <functie>,<atribut>.

Algebra relationala 18BD

� <lista functii> se refera la o lista cu perechii <functie>,<atribut>.

Obs:

� Daca atributele de grupare lipsesc functiile se aplica pe intreagarelatie obtinand o relatie ce contine un singur n-uplu si un numar de atribute egal cu numarul functiilor invocate.

� Atunci cand sunt precizate atribute de grupare relatia rezultat are un numar de atribute dat de suma dintre numarul atributelor de gruparesi numarul de functii invocate si un n umar de n-uluri egal cu numarul valorilor distincte ale atributelor de grupare.

Page 19: BD3 Algebra Relationala 2013

Exemple:

� Se considera baza de date COMPANIE la care se doreste sa se obtina pentru fiecare departament, numarul angajatilor si media salariilor angajatilor pe departament. Relatia rezultata are atributele D_NR, NUMAR_ANGAJATI, MEDIE_SALARIU obtinute prin aplicarea functiilor COUNT si AVERAGE in conjunctie cu atributul de grupare.

R(D_NR, NUMAR_ANGAJATI, MEDIE_SALARIU) =

F (ANGAJAT)

Algebra relationala 19BD

D_NRFCOUNT SSN, AVERAGE SALARIU(ANGAJAT)

� Daca in schimb nu se specifica atributele de grup atunci functia se

aplica la toate n-uplurile relatiei, obtinind o relatie cu un singur

n-uplu:

FCOUNT SSN, AVERAGE SALARIU(ANGAJAT)

Page 20: BD3 Algebra Relationala 2013

Exemple

Ex.1. Sa se gaseasca adresa tuturor angajatilor ce lucreaza pentru departamentul 'Cercetare,.

CERCET_DEPART = SDEP_NUME='Cercetare'(DEPARTAMENT)

CERCET_DEPART_ANGAJAT = (CERCET_DEPART ><

D_NR=DEP_NR ANGAJAT)

REZ = PNUME,INI,PREN,ADR(CERCET_DEPART_ANGAJAT)

Ex.2. Pentru fiecare proiect localizat in 'Bucuresti', se cere lista numarului proiectului, numarul departamentului coodornator, numele managerului departamentului, adresa si data sa de nastere.

Algebra relationala 20BD

numele managerului departamentului, adresa si data sa de nastere.

BUC_PROIECT = SP_LOC='BUCURESTI'(PROIECT)

COORD_DEP = (BUC_PROIECT >< DEP_NR=DEP_NRDEPARTAMENT)

PROIECT_DEP_MANAGER = (COORD_DEP ><

DEP_MANAGER=SSNANGAJAT)

REZ = PP_NR,DEP_NR,NUME,INI,PREN,ADR,DAT_NA(PROIECT_DEP_MANAGER)

Page 21: BD3 Algebra Relationala 2013

Ex.3. Sa se gaseasca numele angajatilor care lucreaza la toate proiectele controlate de departamentul cu numarul 5.

DEP5_PROIECT(P_NR) = PP_NR(SDEP_NR=5(PROIECT)

ANG_PROIECT(SSN,P_NR) = PA_SSN,P_NR(LUCREAZA_LA)

REZ1 = ANG_PROIECT + DEP5_PROIECT

REZ = PNUME,INI,PREN(REZ1*ANGAJAT)

Ex.4. Sa se gaseasca lista tuturor angajatilor care au in intretinere doua sau mai multe persoane. In mod strict aceasta nu poate fi rezolvata prin operatii ale algebrei relationale. Pentru aceasta se utilizeaza

Algebra relationala 21BD

prin operatii ale algebrei relationale. Pentru aceasta se utilizeaza functia COUNT ce nu face parte din operatiile algebrei relationale. In formularea de mai jos s-a presupus ca persoanele in intretinerea unui anumit angajat au nume distincte.

REL1(SSN,NR_DE_INTRETINUTI) = A_SSN F

COUNTC_NUME(INTRETINUT)

REL1 = SNR_DE_INTRETINUTI>2(REL1)

REZ = P NUME,INI,PREN (REL1 * ANGAJAT)

Page 22: BD3 Algebra Relationala 2013

Ex.5. Sa se gaseasca lista numelor angajatilor care nu au persoane in intretinere.

REL1 = PSSN (ANGAJAT)

ANG_CU_INTRETINUT = PA_SSN(INTRETINUT)

ANG_FARA_INTRETINUT = (REL1 - ANG_CU_INTRETINUT)

REZ = PNUME,INI,PREN(ANG_FARA_INTRETINUT * ANGAJAT)

Ex.6. Sa se gaseasca lista managerilor care au cel putin o persoana in intretinere.

REL1(SSN) = PDEP_MANAGER(DEPARTAMENT)

Algebra relationala 22BD

REL1(SSN) = PDEP_MANAGER(DEPARTAMENT)

ANG_CU_INTRETINUT = PA_SSN(INTRETINUT)

MANAGER_CU_INTRETINUT = (REL1 II ANG_CU_INTRETINUT)

REZ = PNUME,INI,PREN(MANAGER_CU_INTRETINUT * ANGAJAT)


Recommended