of 22 /22
BD Algebra relationala 1 Algebra relationala

BD3 Algebra Relationala 2013

Embed Size (px)

Text of BD3 Algebra Relationala 2013

  • BD Algebra relationala 1

    Algebra relationala

  • 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 viDi. O relatie este reprezentata de orice subset al produsului cartezian al unuia sau mai multor domenii.

  • 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=, 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))

  • 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.

  • 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

  • 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()

    Expresiile booleene specificate in , fac parte din clase de forma:

    sau

    Algebra relationala 6BD

    sau

    unde,

    este numele unui atribut al relatiei definite; este data de unul din operatorii {=,=,#}, iar are interpretarea de constanta.

    Exemple:

    SD_NR=4(ANGAJAT)

    SSALARIU>4000(ANGAJAT)

  • 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(S(R))=S(S(R))

    O cascada de operatii SELECT se pot combina utilizind operatorul

    AND.

    S(S(...(S(R))..)=S.AND.

    .AND..AND. (R)

  • 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()

    Algebra relationala 8BD

    P()

    unde,

    P este simbolul utilizat pentru operatia PROJECT;

    reprezinta lista atributelor pastrate din relatiaspecificate prin .

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

    P(P(R))=P(R)

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

  • 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)

  • 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.

  • 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

  • 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.

  • 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>

  • Structura tipica a unei conditii join este: AND AND AND..AND unde, fiecare conditie este de forma [email protected], 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

  • 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 ,

    Algebra relationala 15BD

    2. se creeaza relatia ce include perechea atributelor ,

    pentru angajatii ce lucreaza la proiectul ce are numarul

    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)

  • 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 ]>< SSN=DEP_MANAGER(DEPARTAMENT)

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

    Similar pentru JOIN ADITIONAL DREPT

  • 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.

  • 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:

    F()

    unde,

    este o lista a atributelor relatiei specificate prin;

    se refera la o lista cu perechii ,.

    Algebra relationala 18BD

    se refera la o lista cu perechii ,.

    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.

  • 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)

  • 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 >< 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)

  • 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)

  • 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)