October 30, 2017
Elemente ale modelului relaţional U mulţime de atribute: U = {A 1, A 2,..., A n }; dom(a i ) - domeniul valorilor atributului A i ; Definim uplu peste U ca fiind funcţia: ϕ : U dom(a i ) a.i. ϕ(a i ) dom(a i ), 1 i n 1 i n Fie valorile v i astfel încât v i = ϕ(a i ). Notăm cu {A 1 : v 1, A 2 : v 2,..., A n : v n } asocierea dintre atributele existente în U şi valorile acestora. In cazul în care sunt considerate mulţimi ordonate (de forma (A 1, A 2,..., A n )), notaţia va fi de forma: (v 1, v 2,..., v n ).
Elemente ale modelului relaţional Consideram mulţimea ordonată (A 1, A 2,... A n ). Pentru orice uplu ϕ, există vectorul (v 1, v 2,... v n ) a.i. ϕ(a i ) = v i, 1 i n. Pentru un vector (v 1, v 2,... v n ) cu v i dom(a i ), 1 i n există un uplu ϕ a.i. ϕ(a i ) = v i. In practică este considerată o anumită ordonare a atributelor.
Elemente ale modelului relaţional O mulţime de uple peste U se numeşte relaţie şi se notează cu r. r poate varia în timp dar nu şi în structură. Exemplu: r = {(v 11, v 12,... v 1n ), (v 21, v 22,... v 2n ),..., (v m1, v m2,... v mn )}. Structura relaţiei se va nota cu R[U] unde R se numeşte numele relaţiei iar U este mulţimea de atribute corespunzătoare. Notaţii echivalente R(U), R(A 1, A 2,..., A n), R[A 1, A 2,..., A n]. R[U] se mai numeşte şi schemă de relaţie. Prin r construit peste R[U] ne referim la tabela r ce corespunde schemei R[U]. Ex: R[U] poate fi: studenti(id int, nume varchar2(10), bursa int)
Elemente ale modelului relaţional In practică, o relaţie r poate fi reprezentată printr-o matrice: r : A 1 A 2... A n v 11 v 12... v 1n............ v m1 v m2... v mn unde (v i1, v i2,..., v in ) este un uplu din r, 1 i m şi v ij dom(a j ), 1 j n, 1 i m Vom nota cu t i linia cu numarul i din matrice: t i = (v i1, v i2,..., v in )
Elemente ale modelului relaţional O mulţime finită D de scheme de relaţie se numeşte schemă de baze de date. Formal, D = {R 1 [U 1 ],..., R h [U h ]} unde R i [U i ] este o schemă de relaţie, 1 i h. O bază de date peste D este o corespondenţă ce asociază fiecărei scheme de relaţie din D o relaţie. Exemplu: r 1, r 2,... r h este o bază de date peste D = {R 1 [U 1 ],..., R h [U h ]}. Considerând D ca fiind ordonată D = (R 1 [U 1 ],..., R h [U h ]), putem nota baza de date sub forma (r 1, r 2,... r h )
Operaţii Asupra unei mulţimi de relaţii putem efectua o serie de operaţii. Există două categorii de operatori: Operatori din teoria mulţimilor: Reuniunea( ), Intersecţia ( ), Diferenţa( ), Produsul Cartezian( ) Operatori specifici algebrei relaţionale: Proiecţia (π), Selecţia(σ), Redenumirea(ρ), Joinul Natural( ), θ-joinul, equijoinul, Semijoinul( şi ), Antijoinul( ), Divizarea( ), Joinul la Stânga ( ), Joinul la Dreapta( ), Joinul Exterior( )
Operaţii pe mulţimi de tuple - Reuniunea: În cazul operaţiilor pe mulţimi (cu excepţia Produsului Cartezian), acestea se realizează între două relaţii r 1 şi r 2 care sunt NEAPĂRAT construite peste aceeaşi mulţime de atribute. Reuniunea a două relaţii r 1 şi r 2, ambele peste R[U], este o relaţie notată cu r 1 r 2 definită astfel: r 1 r 2 = {t t = uplu, t r 1 sau t r 2 } În practică, acest lucru se realizează utilizând cuvântul cheie UNION. Studenţii din anii 1 şi 3 sunt selectaţi de interogarea: SELECT * FROM studenti WHERE an=1 UNION SELECT * FROM studenti WHERE an=3;
Operaţii pe mulţimi de tuple - Diferenţa: Diferenţa a două relaţii r 1 şi r 2, ambele peste R[U], este o relaţie notată cu r 1 r 2 definită astfel: r 1 r 2 = {t t = uplu, t r 1 şi t r 2 } În practică, acest lucru se realizează utilizând cuvântul cheie MINUS. Pentru a-i selecta pe studenţii din anul 2 fără bursă, putem să îi selectăm pe toţi studenţii din anul 2 şi apoi să îi eliminăm pe cei cu bursa: SELECT * FROM studenti WHERE an=2 MINUS SELECT * FROM studenti WHERE bursa IS NOT NULL; Se observa ca, la fel ca in cazul reuniunii, cele doua multimi de tuple peste care s-a facut diferenta sunt construite peste aceeasi multime de atribute.
Operaţii pe mulţimi de tuple - Intersecţia: Intersecţia a două relaţii r 1 şi r 2, ambele peste R[U], este o relaţie notată cu r 1 r 2 definită astfel: r 1 r 2 = {t t = uplu, t r 1 şi t r 2 } În practică, acest lucru se realizează utilizând cuvântul cheie INTERSECT. Putem afla care studenţi din anul 2 au bursa rulând: SELECT * FROM studenti WHERE an=2 INTERSECT SELECT * FROM studenti WHERE bursa IS NOT NULL; Operatorul de intersecţie poate fi obţinut din ceilalţi doi: r 1 r 2 = r 1 (r 1 r 2 )
Operaţii pe mulţimi de tuple - Produsul Cartezian: Produsul cartezian a două relaţii r 1 definită peste R 1 [U 1 ] şi r 2 definită peste R 2 [U 2 ] cu U 1 U 2 = este o relaţie notată cu r 1 r 2 definită astfel: r 1 r 2 = {t t = uplu peste U 1 U 2, t[u 1 ] r 1 şi t[u 2 ] r 2 } De aceasta dată, cele două relaţii nu trebuie să fie peste aceeaşi mulţime de atribute. Rezultatul va fi o nouă relaţie peste o mulţime de atribute formată din atributele relaţiilor iniţiale. Operaţia de proiecţie t[x] va avea ca rezultat o nou u uplu care este construit din t dar luând doar valorile asociate atributelor din X (care sunt şi în U). Se mai notează cu π X [t].
Operaţii pe mulţimi de tuple - Produsul Cartezian: Dacă un atribut s-ar repeta, el va fi identificat diferit. Spre exemplu, chiar dacă tabelele note şi cursuri au un acelaşi atribut (id curs), nu se face nici o sincronizare după acesta ci se vor crea două atribute diferite: note.id curs respectiv cursuri.id curs. Produsul cartezian între aceste tabele, în practică, se obţine executând interogarea: SELECT * FROM cursuri, note;
Operaţiile pe mulţimi aveau ca elemente tuplele. Uneori aceste tuple nu sunt compatibile (de exemplu nu putem reuni o relaţie peste R 1 [U 1 ] cu una peste R 2 [U 2 ] dacă U 1 U 2 ). Pentru a opera asupra atributelor ce definesc tuplele din rezultat, avem nevoie de o serie de operatori specifici algebrei relaţionale.
Operaţii în algebra relaţională - Proiecţia: π Considerăm: R[U] = schemă de relaţie; X U; t = uplu peste R[U] (t r). Se numeşte proiecţia lui t relativă la X şi notată cu π X [t], restricţia lui t la mulţimea de atribute X. (Uneori vom scrie t[x]) Exemplu: Dacă U = (A 1, A 2,..., A n ) atunci t = (v 1, v 2,..., v n ). Considerăm X = (A i1, A i2,..., A ik ), 1 i 1 < i 2 <... < i k n. atunci π X [t] = (v i1, v i2,..., v ik );
Operaţii în algebra relaţională - Proiecţia: π Dacă r este o relaţie peste R[U] şi X U, atunci proiecţia lui r relativă la X este π X [r] = {π X [t] t r} Exemplu: Dacă U = (A 1, A 2,..., A n ) atunci r = {(v 11, v 12,... v 1n ), (v 21, v 22,... v 2n ),..., (v m1, v m2,... v mn )}. Considerăm X = (A i1, A i2,..., A ik ), 1 i 1 < i 2 <... < i k n. atunci π X [r] = {(v 1i1, v 1i2,... v 1ik ), (v 2i1,... v 2ik ),..., (v mi1,... v mik )} In practica, proiectia se realizeaza selectand doar anumite campuri alte tabelei (anumite atribute): SELECT nume, prenume FROM studenti;
Operaţii în algebra relaţională - Proiecţia: π Ca si exemplu, vom scrie o interogare care sa returneze toate persoanele care trec pragul Facultatii (studenti si profesori): SELECT nume, prenume FROM studenti UNION SELECT nume, prenume FROM profesori; In cazul in care campurile cele doua campuri (nume, prenume) din cele doua tabele au acelasi tip (de exemplu nume este de tip VARCHAR2(10) in ambele tabele), interogarea va afisa toate persoanele ce trec pragul Facultatii. Observatie: Pentru a modifica tipul nume din tabela profesori la VARCHAR2(10) executati comanda: ALTER TABLE profesori MODIFY nume VARCHAR2(10);
Operaţii în algebra relaţională - Selecţia: σ Fie r o relaţie peste R[U]. Considerăm pentru început expresiile elementare de selecţie: AϕB, Aϕc, cϕb, unde A, B U şi c este o constantă. Dacă ϕ 1 şi ϕ 2 sunt expresii de selecţie (elementare sau nu), atunci următoarele sunt expresii de selecţie: (ϕ 1 ), ϕ 1 ϕ 2, ϕ 1 ϕ 2, (ϕ 1 ϕ 2 ), (ϕ 1 ϕ 2 ).
Operaţii în algebra relaţională - Selecţia: σ Fie θ o expresie de selecţie. Atunci: când θ = AϕB, t satisface θ dacă π A [t] ϕ π B [t], când θ = Aϕc, t satisface θ dacă π A [t] ϕ c, când θ = cϕb, t satisface θ dacă c ϕ π B [t], când θ = ϕ 1 ϕ 2, t satisface θ dacă t satisface atât pe ϕ 1 cât şi pe ϕ 2, când θ = ϕ 1 ϕ 2, t satisface θ dacă t satisface măcar pe unul dintre ϕ 1 şi ϕ 2. Dacă θ este o expresie de selecţie atunci selecţia se notează cu σ θ (r) şi este definită ca: σ θ (r) = {t t = tuplu peste R[U], t satisface θ}
Operaţii în algebra relaţională - Selecţia: σ In SQL, selectia se obtine utilizand o formula logica ce are rolul de a selecta doar anumite randuri. De exemplu: SELECT * FROM studenti WHERE an=2 and bursa IS NULL; In acest exemplu, ϕ 1 este AN = 2, ϕ 2 este bursa IS NULL, ϕ = ϕ 1 ϕ 2 si r este multimea de randuri din tabela studenti. Rezultatul este multimea studentilor din anul 2 care nu au bursa.
Operaţii în algebra relaţională - Redenumirea: ρ Operatorul de redenumire are rolul de a schimba numele unui atribut cu alt nume. Formal, daca dorim sa schimbam atributul A 1 in A 1 vom utiliza scrierea ρ A 1 /A (r). Restul atributelor peste care 1 a fost construit r vor ramane neschimbate. In SQL, redenumirea se realizeaza prin utilizarea cuvantului AS: Exemplu: SELECT bursa * 1.25 AS BursaNoua FROM studenti; SELECT bursa + bursa/4 AS BursaNoua FROM studenti; Daca nu am redenumi atributul nou obtinut, cele doua relatii ar fi considerate diferite (in prima numele atributului ar fi bursa * 1.25, iar in a doua ar fi fost bursa + bursa/4 ) - ATENTIE cand introduceti exercitii.
Operaţii în algebra relaţională - Join natural: Considerăm: r 1 relaţie peste R 1 [U 1 ]; r 2 relaţie peste R 2 [U 2 ]; Se numeşte Join natural a relaţiilor r 1 si r 2, relaţia r 1 r 2 peste U 1 U 2 definită prin: r 1 r 2 = {t t uplu peste U 1 U 2, t[u i ] r i, i = 1, 2} Dacă R este un nume pentru relaţia peste U 1 U 2 atunci r 1 r 2 este definită peste R[U 1 U 2 ] Pentru simplitate vom nota U 1 U 2 cu U 1 U 2.
Operaţii în algebra relaţională - Join natural: Exemplu: Fie R 1 [A, B, C, D], si R 2 [C, D, E] si r 1, r 2 a.i.: A B C D C D E 0 1 0 0 1 1 0 r 1 : 1 1 0 0 1 1 1 r 0 0 1 0 2 : 0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 0 1 Atunci: r 1 r 2 : A B C D E 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1
Operaţii în algebra relaţională - Join natural: Urmatoarea interogare identifica cui apartine fiecare nota din tabelul note. Joinul se face dupa campul nr matricol intre tabelele studenti si note: SELECT nume, valoare FROM studenti NATURAL JOIN note; SELECT nume, valoare FROM studenti JOIN note ON studenti.nr matricol = note.nr matricol; Se poate observa ca daca din produsul cartezian am elimina acele cazuri in care campul nr matricol nu este identic in ambele tabele, am obtine, de fapt, acelasi rezultat. Din acest motiv, joinul de mai sus poate fi scris si sub forma: SELECT nume, valoare FROM studenti,note WHERE studenti.nr matricol = note.nr matricol;
Proprietăţi ale Joinului natural (r 1 r 2 )[U 1 ] r 1 (r 2 r 1 )[U 2 ] r 2 Dacă X = U 1 U 2 şi: r 1 = {t 1 t 1 r 1, t 2 r 2 a.i. t 1 [X] = t 2 [X]} şi r 1 = r 1 r 1, r 2 = {t 2 t 2 r 2, t 1 r 1 a.i. t 1 [X] = t 2 [X]} şi r 2 = r 2 r 2, atunci: r 1 r 2 = r 1 r 2, (r 1 r 2 )[U 1 ] = r 1, (r 2 r 1 )[U 2 ] = r 2. Dacă r 1 r 1, r 2 r 2 şi r 1 r 2 = r 1 r 2 atunci r 1 r 1 si r 2 r 2 Dacă U 1 U 2 = atunci r 1 r 2 = r 1 r 2.
Extindere Join natural Fie r i relaţie peste R i [U i ], i = 1, h atunci: r 1 r 2... r h = {t t uplu peste U 1,... U h, a.i. t[u i ] r i, i = 1, h} Notaţii echivalente: r 1 r 2... r h r i, i = 1, h r i, i = 1, h Operaţia join este asociativă.
Operaţii în algebra relaţională - θ-join, equijoin Fie r i peste R i [U i ], i = 1, 2 cu A α1, A α2,... A αk U 1 şi B β1, B β2,... B βk U 2 şi θ i : dom(a αi ) dom(b βi ) {true, false}, i = 1, k θ-joinul a două relaţii r 1 şi r 2, notat cu r 1 θ r 2, este definit prin: r 1 θ r 2 = {(t 1, t 2 ) t 1 r 1, t 2 r 2, t 1 [A αi ]θ i t 2 [B βi ], i = 1, k} unde θ = (A α1 θ 1 B β1 ) (A α2 θ 2 B β2 )... (A αk θ k B βk ) Daca θ i este operatorul de egalitate, atunci θ-joinul se mai numeste si equijoin.
Operaţii în algebra relaţională - θ-join, equijoin Observaţie: un join oarecare cu condiţia TRUE pentru orice combinatie de tuple este un produs cartezian: r 1 true r 2 = r 1 r 2 Observatie2: Joinul oarecare poate fi considerat ca fiind o filtrare dupa anumite criterii ale rezultatelor unui produs cartezian: r 1 θ r 2 = σ θ (r 1 r 2 ) Exemplu SQL: SELECT s.nume, p.nume FROM studenti s, profesori p WHERE s.nume > p.nume;
Operaţii în algebra relaţională - Semijoin: şi Operatia de semijoin stang selecteaza acele randuri din relatia aflata in partea stanga ( ) care au corespondent (in sensul joinului natural) in relatia din partea dreapta. Formal, definim semijoinul stang a doua relatii r 1 peste R 1 [U 1 ] si r 2 peste R 2 [U 2 ] ca fiind: r 1 r 2 = π U1 (r 1 r 2 ) Deja intalnit la proprietatile Joinului natural sub denumrea r 1. Semijoinul drept este definit similar dar preluand liniile din relatia aflata in dreapta (doar cele ce au corespondent in relatia din stanga).
Operaţii în algebra relaţională - Antijoin: Tuplele ramase din relatia din stanga (care nu au fost preluate de semijoinul stang), formeaza rezultatul operatorului Antijoin. Formal, definim antijoinul a doua relatii r 1 peste R 1 [U 1 ] si r 2 peste R 2 [U 2 ] ca fiind: r 1 r 2 = r 1 π U1 (r 1 r 2 )... r 1
Operaţii în algebra relaţională - Joinul la Stânga: Fie r 1 si r 2 doua relatii in care nu toate tuplele din r 1 au un corespondent in r 2. Operatia Join la Stanga a celor doua relatii r 1 si r 2 este reuniunea dintre tuplele existente in r 1 r 2 si tuplele din r 1 ce nu sunt utilizate in join dar care au fost completate cu valoarea NULL pentru atributele din U 2. r 1 r 2 = r 1 r 2 UNION π U1 U 2 (r 1 (r 1 r 2 )) Joinul la Dreapta este definit similar, de aceasta data preluand liniile ce nu au folosit in Joinul natural din tabela din dreapta (r 2 ).
Operaţii în algebra relaţională - Joinul Extern: Operatia de Join exterior cuprinde toate liniile din Joinul la Stanga si din Joinul la Dreapta. r 1 r 2 = (r 1 r 2 ) (r 1 r 2 )
Operaţii în algebra relaţională - Joinul Extern: Cateva exemple (atentie la egalitate) SELECT * FROM studenti LEFT JOIN profesori ON studenti.prenume = profesori.prenume; (Toti studentii si asociati cu profesorii cu acelasi prenume cand e cazul) SELECT * FROM studenti RIGHT JOIN profesori ON studenti.prenume = profesori.prenume; (Unii studenti care sunt asociati cu profesorii avand acelasi prenume impreuna cu restul profesorilor) SELECT * FROM studenti FULL JOIN profesori ON studenti.prenume = profesori.prenume; (Studentii si profesorii si asocierile intre ei daca exista)
: 1. Pentru r 1, r 2 exemplificate la Joinul natural, construiti restul tipurilor de Join studiate. 2. Utilizand schema de baze de date de la laborator, scrieti in algebra relationala urmatoarele: Cursurile din facultate impreuna cu numele profilor ce le tin. Numele si prenumele studentilor din anul 1 si care au bursa mai mare de 300 ron. Prenumele studentilor care au acelasi nume de familie ca macar unul din profesori. Numele si prenumele studentilor, cursurile pe care le-au urmat si notele pe care le-au obtinut. Scrieti interogarile SQL asociate formulelor din algebra relationala scrise mai sus.
Notatii (alternative) operatori alg. relationala Proiectia (r 1 [U]): π U (r 1 ) Join natural (r 1 r 2 ): r 1 r 2 Join oarecare: r 1 θ r 2 Selectia : σ θ (r 1 ) [obs: r 1 θ r 2 = σ θ (r 1 r 2 )] Join la stanga: r 1 L r 2 Join la dreapta: r 1 R r 2 Full outer join : r 1 r 2 Redenumirea: Daca r este definit peste B 1, B 2,..., B n si vrem sa redenumim numele atributelor, vom folosi operatorul de redenumire ρ : r = ρ(r 1 ) A1,A 2,...,A n - redenumirea atributelor lui r in A 1, A 2,..., A n
Proprietăţi ale dependenţelor funcţionale Fie X, Y U. Vom nota o dependenţă funcţională cu X Y. O relaţie r peste U satisface dependenţa funcţională X Y dacă: ( t 1, t 2 )(t 1, t 2 r)[t 1 [X] = t 2 [X] t 1 [Y ] = t 2 [Y ]] X = avem Y dacă ( t 1, t 2 )(t 1, t 2 r)[t 1 [Y ] = t 2 [Y ]] Y = atunci orice r peste U avem că X Dacă r satisface X Y, atunci există o funcţie ϕ : r[x] r[y ] definită prin ϕ(t) = t [Y ], unde t r şi t [X] = t r[x]. Dacă r satisface X Y spunem că X determină funcţional pe Y în r.
Proprietăţi ale dependenţelor funcţionale Proprietăţi ale dependenţelor funcţionale FD1. (Reflexivitate) Dacă Y X, atunci r satisface X Y, r U. FD2. (Extensie) Dacă r satisface X Y şi Z W, atunci r satisface XW Y Z. FD3. (Tranzitivitate) Dacă r satisface X Y şi Y Z, atunci r satisface X Z. FD4. (Pseudotranzitivitate) Dacă r satisface X Y şi Y W Z, atunci r satisface XW Z.
Proprietăţi ale dependenţelor funcţionale Proprietăţi ale dependenţelor funcţionale FD5. (Uniune) Dacă r satisface X Y şi X Z, atunci r satisface X Y Z. FD6. (Descompunere) Dacă r satisface X Y Z, atunci r satisface X Y şi X Z. FD7. (Proiectabilitate) Dacă r peste U satisface X Y şi X Z U, atunci r[z] satisface X Y Z FD8. (Proiectabilitate inversă) Dacă X Y este satisfacută de o proiecţie a lui r, atunci X Y este satisfacută de r.
Proprietăţi ale dependenţelor funcţionale - consecinţă şi acoperire Dacă Σ este o mulţime de dependenţe funcţionale peste U atunci spunem că X Y este consecinţă din Σ dacă orice relaţie ce satisface toate consecinţele din Σ satisface şi X Y. Notaţie: Σ = X Y Fie Σ = {X Y Σ = X Y }. Fie Σ 1 = mulţime de dependenţe funcţionale. Σ 1 constituie o acoperire pentru Σ dacă Σ 1 = Σ.
Proprietăţi ale dependenţelor funcţionale Proprietăţi ale dependenţelor funcţionale Propoziţie Pentru orice mulţime Σ de dependenţe funcţionale există o acoperire Σ 1 pentru Σ, astfel încat toate dependenţele din Σ 1 sunt de forma X A, A fiind un atribut din U. Propoziţie Σ = X Y dacă şi numai dacă Σ = X B j pentru j = 1, h, unde Y = B 1... B h.
Proprietăţi ale dependenţelor funcţionale Reguli de deducere Fie R o mulţime de formule de deducere pentru dependenţe funcţionale şi Σ o mulţime de dependenţe funcţionale. Spunem că X Y este o demonstraţie în Σ utilizând regulile R şi vom nota Σ R X Y, dacă există şirul σ 1, σ 2,..., σ n, astfel încât: σ n = X Y şi pentru i = 1, n, σ i Σ sau există în R o regulă de forma σ j1,σ j2,...σ jk σ i, unde j 1, j 2,..., j k < i.
Proprietăţi ale dependenţelor funcţionale Reguli de deducere Conform proprietăţilor FD1-FD5 putem defini regulile: FD1f: Y X X Y FD4f: X Y, Y W Z XW Z FD2f: X Y, Z W XW Y Z FD5f: X Y, X Z X Y Z FD3f: X Y, Y Z X Y Z X Z FD6f: X Y, X Y Z X Z Propoziţie Regulile FD4f, FD5f, FD6f se exprimă cu ajutorul regulilor FD1f, FD2f, FD3f. Notăm cu R 1 = {FD1f, FD2f, FD3f}, şi cu R 2 = R 1 {FD4f, FD5f, FD6f}
Proprietăţi ale dependenţelor funcţionale Propoziţie Regulile FD4f, FD5f, FD6f se exprimă cu ajutorul regulilor FD1f, FD2f, FD3f. Idei de demonstratie: FD4f:Se aplica FD2f pentru X Y si W W iar din rezultat si din Y W Z prin FD3f se obtine rezultatul; FD5f: Se aplica FD2f pentru X Y si X X si la fel pentru X Z si Y Y apoi FD3f (tranzitivitatea) intre rezultate; FD6f: din FD1f avem ca Y Z Y si Y Z Z si din FD3f rezulta X Y si X Z
Proprietăţi ale dependenţelor funcţionale Axiomele lui Armstrong Armstrong a definit (în Dependency structures of database relationships Proc. IFIP 74, Amsterdam, 580-583) următoarele reguli de inferenţa (numite Axiomele lui Armstrong): A1: A 1...A n A i, i = 1, n A2: A 1,...A m B 1,...B r A 1...A m B j, j = 1, r A 1,...A m B j, j=1,r A 1...A m B 1,...B r A3: A 1,...A m B 1,...B r, B 1,...B r C 1,...C p A 1...A m C 1,...C p unde A i, B j, C k sunt atribute. Notăm R A = {A1, A2, A3}. Obs: regula A3 este de fapt FD3f (tranzitivitatea).
Proprietăţi ale dependenţelor funcţionale Propoziţie Regulile din R 1 se exprimă prin cele din R A şi invers. Notatie: Σ + R = {X Y Σ R X Y } Propoziţie Fie R 1 si R 2 doua multimi de reguli astfel incat R 1 se exprima prin R 2 si invers. Atunci Σ+ = Σ + pentru orice multime Σ de R 1 R 2 dependente functionale. Consecinta: Σ + R 1 = Σ + R A
Proprietăţi ale dependenţelor funcţionale Fie X U si R o multime de reguli de inferenta. Notam cu X + R = {A Σ R X A} Lema Σ R X Y daca si numai daca Y X + R 1.
Proprietăţi ale dependenţelor funcţionale Lema Fie Σ o multime de dependente functionale si σ : X Y o dependenta functionala astfel incat Σ R1 X Y. Atunci exista o relatie r σ ce satisface toate dependentele functionale din Σ si r σ nu satisface X Y. Theorem Fie Σ o multime de dependente functionale. Atunci exista o relatie r 0 ce satisface exact elementele lui Σ + R 1, adica: r 0 satisface τ, τ Σ + R 1 r 0 nu satisface γ, γ Σ + R 1 si
Definiţii şi observaţii Proprietăţi şi reguli de inferenţă Exemplu Presupunem că persoana cu CNP = 1 a fost admisă la două facultăţi şi are permis de conducere pentru categoriile A şi B: r : CNP Admis la facult. Are permis categ. 1 Informatică A 1 Matematică B Deşi anumite rânduri nu sunt scrise în tabelă, putem să intuim că persoana cu CNP = 1 a dat la Facultatea de Informatică şi are permis de conducerea categoria B. Deci, deşi în r nu există t-uplul 1,Informatica,B, ar trebui să existe şi el (pentru că poate fi dedus din cele existente). Care alt t-uplu mai poate fi dedus?
Definiţii şi observaţii Proprietăţi şi reguli de inferenţă Exemplu r : CNP Admis la facult. Are permis categ. 1 Informatică A 1 Matematică B 1 Informatică B 1 Matematică A t-uplele marcate cu roşu ar putea lipsi, ele fiind redundante deoarece pot fi obţinute din primele două t-uple. Prin intermediul dependenţelor funcţionale pot afla la care coloane pot renunţa astfel încât să le pot reface ulterior. Prin intermediul dependenţelor multivaluate pot afla la care linii pot renunţa astfel încât să le pot reface ulterior.
Definiţii şi observaţii Proprietăţi şi reguli de inferenţă - definiţie Fie X, Y U. O dependenţă multivaluată este notată cu X Y. Definition Relaţia r peste U satisface dependenţa multivaluată X Y dacă pentru oricare două tuple t 1, t 2 r şi t 1 [X] = t 2 [X], există tuplele t 3 şi t 4 din r, astfel încât: t 3 [X] = t 1 [X], t 3 [Y ] = t 1 [Y ], t 3 [Z] = t 2 [Z]; t 4 [X] = t 2 [X], t 4 [Y ] = t 2 [Y ], t 4 [Z] = t 1 [Z] unde Z = U XY (Z mai este denumită şi rest).
Definiţii şi observaţii Proprietăţi şi reguli de inferenţă Exemplul 2 (mai formal) r : A B C D a 1 b 1 c 1 d 1 t 1 t 1 a 1 b 2 c 2 d 2 t 2 a 1 b 1 c 1 d 2 t 3 t 2 a 1 b 2 c 2 d 1 t 4 a 2 b 3 c 1 d 1 a 2 b 3 c 1 d 2 t 1, t 4 t 2, t 3 Intrebare: cum alegem t 3, t 4? r satisface A BC Deoarece atunci când t 1 [A] = t 2 [A] avem că: t 3 [A] = t 1 [A], t 3 [BC] = t 1 [BC], t 3 [D] = t 2 [D] şi t 4 [A] = t 2 [A], t 4 [BC] = t 2 [BC], t 4 [D] = t 1 [D]
Definiţii şi observaţii Proprietăţi şi reguli de inferenţă Definiţie echivalentă Relaţia r peste U satisface dependenţa multivaluată X Y, dacă pentru orice t 1, t 2 r cu t 1 [X] = t 2 [X] avem că M Y (t 1 [XZ]) = M Y (t 2 [XZ]) unde M Y (t[xz]) = {t [Y ] t r, t [XZ] = t[xz]} = valorile lui Y din diferite tuple in care XZ sunt egale (cu XZ-ul din parametru). A B C D a 1 b 1 c 1 d 1 = t 1 a 1 b 2 c 2 d 2 = t 2 r : a 1 b 1 c 1 d 2 a 1 b 2 c 2 d 1 a 2 b 3 c 1 d 1 a 2 b 3 c 1 d 2 M Y (t 1 [AD]) = M Y (t 2 [AD]) = {(b 1, c 1 ), (b 2, c 2 )}
Definiţii şi observaţii Proprietăţi şi reguli de inferenţă Observaţii Dacă r satisface dependenţa funcţională X Y, atunci pentru orice t r, avem M Y (t[xz]) = {t[y ]}. Dacă r satisface dependenţa funcţională X Y, atunci r satisface şi dependenţa multivaluată X Y. Dacă r satisface dependenţa multivaluată X Y, atunci putem defini o funcţie ψ : r[x] P(r[Y ]), prin ψ(t[x]) = M Y (t[xz]), t r (returneaza valorile diferite din proiectia pe Y). Când r satisface X Y, atunci ψ : r[x] r[y ] (deoarece valorile pe Y nu sunt diferite in cadrul dependentei functionale).
Definiţii şi observaţii Proprietăţi şi reguli de inferenţă Proprietăţi ale dependenţelor multivaluate MVD0 (Complementariere) Fie X, Y, Z U, asfel încât XY Z = U şi Y Z X. Dacă r satisface X Y, atunci r satisface X Z. MVD1 (Reflexivitate) Dacă Y X, atunci orice relaţie r satisface X Y. MVD2 (Extensie) Fie Z W şi r satisface X Y. Atunci r satisface XW Y Z MVD3 (Tranzitivitate) Dacă r satisface X Y şi Y Z, atunci r satisface X Z Y
Definiţii şi observaţii Proprietăţi şi reguli de inferenţă X Y MVD0 1 2 4 3 6 5 7 Z 8 U
Definiţii şi observaţii Proprietăţi şi reguli de inferenţă X 2 3 MVD1 1 Y U
Definiţii şi observaţii Proprietăţi şi reguli de inferenţă MVD2 X 1 3 2 4 6 7 5 9 8 Y 10 11 Z 12 W U
Definiţii şi observaţii Proprietăţi şi reguli de inferenţă Proprietăţi ale dependenţelor multivaluate MVD4 (Pseudotranzitivitate) Dacă r satisface X Y şi Y W Z, atunci r satisface şi XW Z Y W. MVD5 (Uniune) Dacă r satisface X Y şi X Z atunci r satisface X Y Z. MVD6 (Descompunere) Dacă r satisface X Y şi X Z, atunci r satisface X Y Z, X Y Z, X Z Y
Definiţii şi observaţii Proprietăţi şi reguli de inferenţă Proprietăţi mixte ale dependenţelor multivaluate FD-MVD1. Dacă r satisface X Y, atunci r satisface şi X Y. FD-MVD2. Dacă r satisface X Z şi Y Z, cu Z Z şi Y Z =, atunci r satisface X Z. FD-MVD3. Dacă r satisface X Y şi XY Z, atunci r satisface X Z Y.
Definiţii şi observaţii Proprietăţi şi reguli de inferenţă Reguli de inferenţă MVD0f: XY Z=U, Y Z X, X Y X Z MVD1f: MVD2f: MVD3f: MVD4f: Y X X Y Z W, X Y XW Y Z X Y, Y Z X Z Y X Y,Y W Z XW Z Y W
Definiţii şi observaţii Proprietăţi şi reguli de inferenţă Reguli de inferenţă MVD5f: X Y, X Z X Y Z MVD6f: X Y, X Z X Y Z, X Y Z, X Z Y FD-MVD1f: FD-MVD2f: FD-MVD3f: X Y X Y X Z, Y Z, Z Z, Y Z= X Z X Y, XY Z X Z Y
Definiţii şi observaţii Proprietăţi şi reguli de inferenţă Propoziţie Fie R o multime de reguli valide si γ o regula α 1,α 2,...α k β, astfel incat {α 1,... α k } R β, atunci si regula γ este valida. Propoziţie Fie R F M = {FD1f FD3f 1, MVD0f MVD3f, FD MVD1f FD MVD3f }. Avem: FD MVD3f se exprima cu celelalte regulid din R F M si F D MVD2f se exprima prin celelalte reguli din R F M. Propoziţie Regulile MVD4f MVD6f se exprima cu ajutorul regulilor MVD0f MVD3f 1 cele de la dependente functionale
Definiţii şi observaţii Proprietăţi şi reguli de inferenţă Theorem Fie Σ o multime de dependente functionale sau multivaluate si X o submultime de atribute. Atunci exista o partitie a lui U X notata prin Y 1... Y k, astfel incat pentru Z U X avem Σ RF M X Z daca si numai daca Z este reuniunea unui numar de multimi din partitia {Y 1,... Y k } Definition Pentru Σ o multime de dependente functionale sau multivaluate si X o submultime de atribute, numim baza de dependenta pentru X cu privire la Σ partitia B(Σ, X) = {{A 1 }... {A h }, Y 1... Y k }, unde X = A 1,... A h, iar Y 1,... Y k este partitia construita in teorema precedenta.
Definiţii şi observaţii Proprietăţi şi reguli de inferenţă Observatii Avem Σ RF M X Z daca si numai daca Z este o reuniune de elemente din partitia B(Σ, X). Fie XΣ = {A Σ R F M X A}. Atunci pentru orice A XΣ avem {A} B(Σ, X).