Algebra RELATIONALACurs 1 decembrie 2011
Algebra relationala poate fi definita ca un set de operatori ce prelucreaza relatii, in scopul obtinerii altor relatii. Operatorii de baza se pot grupa in: A)operatori binari sau operatorii de asamblare sunt operatorii care primesc la intrare doua relatii si genereaza la iesire o singura relatie:reuniunea, intersectia, diferenta, produsul cartezian B)operatori unari se aplic asupra unei rela ii i genereaz o alt rela ie. Din aceast clas fac parte proiec ia i selec ia. C) Operatorii de extensie sunt :compunerea si diviziunea
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 R RELATIA S
RELATIA T(RUS)
A a1 a2
B b1 b2
A a3 a4
B b3 b4
A a1 a2 a3 a4
B b1 b2 b3 b4
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 T
A a1 a2
B b1 b2
A a1 a3
B b1 b3
A a1
B b1
Diferenta 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.
Relatia R
Relatia S
Relatia T
A
B
C
a1 b1 c1 a2 b2 c2
A a3 a4 a5 a6
B b3 b4 b5 b6
C c3 c4 c5 c6
A a1 a2
B b1 b2
C c1 c2
Produsul cartezian a dou rela ii R i S (RxS) este o rela ie T stocnd mul imea perechilor ob inute prin concatenarea nregistr rilor apar innd lui R cu cele apar innd lui S. Relatia R Relatia S Relatia T
A a1 a2
B b1 b2
C c1 c2
D d1 d2
A a1 a1 a2 a2
B b1 b1 b2 b2
C c1 c2 c1 c2
D d1 d2 d1 d2
Operatorii de extensie sunt: compunerea si diviziunea
Compunerea condi ional (Join) a dou rela ii R1 i R2 dup calificatorul multiatribut Q este rela ia E ale c rei tupluri sunt cele ale produsului cartezian R1 x R2 care satisfac calificatorul Q. n func ie de calificatorul Q se disting mai multe tipuri de compuneri: dac Q este de forma Ai = Bj , se nume te echicompunere; dac Q este de forma Ai Bj : unde = < , , > , , se nume te compunere, i poate fi exprimat n func ie de operatorii de baz ; dac Q este de forma Ai = Aj se nume te autocompunere. Compunerea natural este o echicompunere pe R1 i R2 dup toate atributele avnd acela i nume n R1 i R2, urmat de o proiec ie care permite conservarea unuia dintre aceste atribute, egale ca nume.
Relatia R1
Relatia R2
Rela ia T JOIN(R1,R2;Bi = Bj)
A B C a1 b1 c1
B b1 b1
D d1 d2
A B C a1 b1 c1 a1 b1 c1
D d1 d2
Diviziunea rela iei R1 (A1, A2 An) de grad (p+m) prin rela ia R2 (Ap+1, , Am) de grad m este rela ia 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 RS
Relatia R
Relatia S
A a1 a2 a3
B b1 b2 b3
C c1 c2 c3
D d1 d2 d3
E e1 e2 e3
C c1 c2 c3
D d1 d2 d3
E A e1 a1 e2 a2 e3 a3
B b1 b2 b3
Operatorii unari 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) Rela ia R1
A a1 a2 a3
B b1 b2 b3
C c1 c2 c3
D d1 d2 d3
A a1 a2 a3
B b1 b2 b3
Prin intermediul proiec iei, dintr-un tabel cu un anumit num r de coloane se ob ine unul cu un num r mai mic de coloane.
Selec ia rela iei R fa de criteriul Q este rela ia R1 cu aceea i structur ca i R, ale c rei tupluri satisfac criteriul specificat. R1 SELECTIE(R;A=a2 OR A=a3)
Relatia R
Rela ia R1
A a1 a2 a3
B b1 b2 b3
A a2 a3
B b2 b3
Realizarea operatorilor rela ionali n SQL Operatori binari Tabele pentru exemplificare
Reuniunea: CLIENTI411 U CLIENTI419Cu 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 F r eliminarea duplicatelor: CodC Nume Oras 1 A Iasi 2 B Cluj 3 C Cluj 1 A Ia i 4 D Cluj Realizare SQL: SELECT * FROM CLIENTI411 UNION ALL SELECT * FROM CLIENTI419
Intersec ia: CLIENTI411CodC Nume Oras 1 A Iasi
CLIENTI419
Realizare SQL: SELECT CLIENTI411.* FROM CLIENTI411 INNER JOIN CLIENTI419 ON CLIENTI411.CODC=CLIENTI419.CODC; Sau SELECT CLIENTI411.* FROM CLIENTI411, CLIENTI419 WHERE CLIENTI411.CODC=CLIENTI419.CODC Sau SELECT CLIENTI411.* FROM CLIENTI411 WHERE CODC IN (SELECT CODC FROM CLIENTI419)
Diferenta: CLIENTI411 - CLIENTI419CodC Nume Oras
2 3
B C
Cluj Cluj
Realizare SQL: SELECT CLIENTI411.* FROM CLIENTI411 LEFT JOIN CLIENTI419 ON CLIENTI411.CODC=CLIENTI419.CODC WHERE CLIENTI419.CODC IS NULL
Sau SELECT CLIENTI411.* FROM CLIENTI411 WHERE CODC NOT IN (SELECT CODC FROM CLIENTI419)
Produs Cartezian CLIENTI419 X PRODUSENUME A D A D DENPROD P1 P1 P2 P2
Realizare SQL: SELECT NUME, DENPROD FROM CLIENTI419, PRODUSE
Operatorii unari PROIECTIE (CLIENTI419; CodC, Nume)CodC Nume
1 4
A D
Realizare SQL: SELECT CodC, Nume FROM Clienti419
SELECTIE (CLIENTI411; Oras=Cluj)CodC Nume Oras 2 B Cluj 3 C Cluj
Realizare SQL:SELECT Clienti411.* FROM Clienti411 WHERE Oras=CLUJ
Operatorii de extensie Compunere (CLIENTI419, FACTURI ; CLIENTI419.CODC=FACTURI.CODC )CLIENTI419.CODC NUME ORAS 2 3 B C CLUJ CLUJ NRF 100 101 VALOARE 12.000.000,00 lei 13.000.000,00 lei FACTURI.CODC 2 3
Realizare SQL:SELECT * FROM CLIENTI419 INNER JOIN FACTURI ON CLIENTI419.CODC=FACTURI.CODC
Compunere condi ionat Clauza LEFT OUTER JOIN, conserv toate nregistr rile tabelei din stngaSELECT * FROM T1 LEFT OUTER JOIN T2 ON T1.A1 = T2.A3;T1 A110 20
A215 25
T2
A310 15
A4AA BB
REZULTAT
A110 20
A215 25
A310 NULL
A4AA NULL
Clauza RIGHT OUTER JOIN, conserv toate linile tabelei din dreaptaSELECT * FROM T1 RIGHT OUTER JOIN T2 ON T1.A1 = T2.A3;T1 A110 20
A215 25
T2
A310 15
A4AA BB
RZULTAT
A110 NULL
A215 NULL
A310 15
A4AA BB
Diviziunea este operatorul rela ional a c rei realizare n SQL este destul de dificil . Pentru a identifica clien ii care au cump rat ac iuni la ambele societ i avnd codul CABU i ADME va trebui s realiz m diviziunea tabelului Tranzac ie la tabelul ce con ine ca nregistr ri cele dou coduri de societ i