Transcript
  • Algebra RELATIONALACurs nr. 9

  • Algebra relaional cuprinde un ansamblu de operatori ce actioneaza pe relaii (tabele surs) i produc noi relaii (tabele rezultat). Clasificarea operatorilor se poate face n funcie de modul de aplicabilitate, deosebind astfel: A. Operatorii generali pe mulimi sunt :Reuniune;Intersecie;Diferen;Produs cartezian. B. Operatorii specifici pe relaii sunt:Selecie;Proiecie;Compunere;Diviziune.

  • O alt clasificare a operatorilor se bazeaz pe numrul de tabele cerute de acel operator. Astfel, deosebim operatorii binari care se aplic pentru cel puin dou tabele, operatori unari pentru a cror aplicare este nevoie de cel puin o tabel,operatorii de extensie.Operatorii binari sunt :Reuniune;Intersecie;Diferen;Produs cartezian;Operatorii de extensie sunt:Compunere;Diviziune.Operatori unari sunt:Selecie;Proiecie.

  • REUNIUNEA a doua relatii R si S, cu aceeasi structura, unde R este formata din n tupluri, iar S din m tupluri, are ca rezultat o a treia relatie T, avand aceeasi structura cu a relatiilor sursa si continand n+m tupluri. RELATIA T(RUS)

    RELATIA S

    RELATIA R

    ABa1b1a2b2

    ABa3b3a4b4

    ABa1b1a2b2a3b3a4b4

  • INTERSECTIA a doua relatii R si S avand aceeasi structura, este o relatie T continand tuplurile identice ce apartin atat lui R cat si lui S.

    RELATIA R RELATIA S RELATIA TDiferenta a doua relatii R si S avand aceeasi structura (R-S) este o relatie T ce contine multimea tuplurilor apartinand lui R, dar neapartinand lui S.

    ABa1b1a2b2

    ABa1b1a3b3

    ABa1b1

  • Relatia R Relatia S Relatia T

    ABCa1b1c1a2b2c2

    ABCa3b3c3a4b4c4a5b5c5a6b6c6

    ABCa1b1c1a2b2c2

  • Produsul cartezian a dou relaii R i S (RxS) este o relaie T stocnd mulimea perechilor obinute prin concatenarea nregistrrilor aparinnd lui R cu cele aparinnd lui S. Relatia R Relatia S Relatia T

    ABa1b1a2b2

    CDc1d1c2d2

    ABCDa1b1c1d1a1b1c2d2a2b2c1d1a2b2c2d2

  • Proiectia. Din relatia R se obtine o alta relatie R1, care va contine o submultime din atributele initiale din R, fara tupluri duplicate. Numarul de atribute din R1 este mai mic dect numarul de atribute din R.

  • Relatia R R1 (R;A,B) Relaia R1

    Prin intermediul proieciei, dintr-un tabel cu un anumit numr de coloane se obine unul cu un numr mai mic de coloane, dar cu acelasi numar de inregistrari

    ABCDa1b1c1d1a2b2c2d2a3b3c3d3

    ABa1b1a2b2a3b3

  • Selecia relaiei R fa de criteriul Q este relaia R1 cu aceeai structur ca i R, ale crei tupluri satisfac criteriul specificat. R1 SELECTIE(R;A=a2 OR A=a3) Relatia RRelaia R1

    ABa1b1a2b2a3b3

    ABa2b2a3b3

  • CompunereaCompunerea 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 obinute ca urmare a compunerii a dou relaii este egal cu suma gradelor relaiilor surs. n funcie de natura condiiilor, compunerea cunoate mai multe cazuri particulare : echicompunerea;compunerea natural;compunerea extern.

  • EchicompunereaEste 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 obinute ca rezultat al echicompunerii este egal cu suma gradelor celor doua relaii surs.

  • Compunerea naturalCompunerea natural este echicompunerea a dou tabele, pentru care exist cel puin cte un cmp avnd acelai nume i tip i n care, din rezultat, se elimin cmpurile identice. Gradul relaiei obinute ca rezultat al compunerii naturale este mai mic dect suma gradelor celor dou relaii surs, deoarece sunt eliminate cmpurile identice.

  • Compunerea externCompunerea extern este o echicompunere care, spre deosebire de aceasta, afieaz i tuplurile care nu au corespondent n cadrul celor dou tabele surs. Compunerea extern poate s fie la stnga i n acest caz se vor afia toate tuplurile din primul tabel, pentru cele care nu au corespondent se completeaz cu NULL valoarea atributelor lips, iar din al doilea tabel se vor afia doar tuplurile care au corespondent n primul tabel. Compunerea extern la dreapta presupune acelai mecanism, cu deosebirea c se vor afia toate tuplurile din tabelul doi chiar dac au sau nu corespondent iar din tabelul unu se vor afia doar tuplurile ce au corespondent.

  • Diviziunea relaiei R1 (A1, A2 An) de grad (p+m) prin relaia R2 (Ap+1, , Am) de grad m este relaia E (A1, A2, , Ap) de grad p, format din toate tuplurile care, concatenate cu fiecare tuplu din R2, dau totdeauna un tuplu din R1 (E = R1 R2).

    Relatia RSRelatia RRelatia S

    ABCDEa1b1c1d1e1a2b2c2d2e2a3b3c3d3e3

    CDEc1d1e1c2d2e2c3d3e3

    ABa1b1a2b2a3c3

  • Realizarea operatorilor relaionali n SQL Operatori binariTabele pentru exemplificare

  • Reuniunea: CLIENTI411 U CLIENTI419

    Cu eliminarea duplicatelor:

    CodC

    Nume

    Oras

    1

    A

    Iasi

    2

    B

    Cluj

    3

    C

    Cluj

    4

    D

    Cluj

    Realizare SQL:

    SELECT * FROM CLIENTI411

    UNION

    SELECT * FROM CLIENTI419;

    Fr eliminarea duplicatelor:

    CodC

    Nume

    Oras

    1

    A

    Iasi

    2

    B

    Cluj

    3

    C

    Cluj

    1

    A

    Iai

    4

    D

    Cluj

    Realizare SQL:

    SELECT * FROM CLIENTI411

    UNION ALL

    SELECT * FROM CLIENTI419;

  • Intersecia: CLIENTI411 CLIENTI419

  • Diferenta: CLIENTI411 - CLIENTI419

  • Produs CartezianCLIENTI419 X PRODUSE

  • PROIECTIE (CLIENTI419; CodC, Nume)

    Realizare SQL:SELECT CodC, Nume FROM Clienti419 ;

  • SELECTIE (CLIENTI411; Oras=Cluj)

    Realizare SQL:SELECT Clienti411.* FROM Clienti411WHERE Oras=CLUJ ;

  • Compunere (CLIENTI419, FACTURI ; CLIENTI419.CODC=FACTURI.CODC )

    Realizare SQL:SELECT * FROM CLIENTI411 INNER JOIN FACTURI ON CLIENTI419.CODC=FACTURI.CODC ;

  • Compunere condiionatClauza LEFT OUTER JOIN, conserv toate nregistrrile tabelei din stnga

  • Clauza RIGHT OUTER JOIN, conserv toate linile tabelei din dreapta

  • Diviziunea este operatorul relaional a crui realizare n SQL este destul de dificil. Pentru a identifica clienii care au cumprat aciuni la ambele societi avnd codul CABU i ADME va trebui s realizm diviziunea tabelului Tranzacie la tabelul ce conine ca nregistrri cele dou coduri de societi

    PRIOECTIE CodSocietate (Societate)

    Tranzactie

    SELECT CodClientCumparatorFROM Tranzactie, SocietateWHERE Tranzactie.CodSocietate=Societate.CodSocietateGROUP BY CodClientCumparatorHAVING Count(Tranzactie.CodSocietate)=(SELECT COUNT(CodSocietate) FROM Societate);

    Tranzactie PRIOECT CodSocietate (Societate)