Algebra RELATIONALA-Curs 1 Decembrie

Embed Size (px)

Citation preview

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