Sunteți pe pagina 1din 6

Introducere n teoria proiectrii bazelor de date relaionale. Dependene funcionale. Chei. Axiome. nchideri. Acoperiri. prof. dr. ing.

Mircea Petrescu
Ne referim la proiectarea conceptual i logic. O problem principal pentru o relaie alegerea schemei relaiei, din mai multe posibile. Ideea central n alegerea schemelor de relaie: dependena datelor. Dependena datelor este o restricie asupra relaiilor ri care pot constitui valoarea curent a unei scheme de relaie R. Exemplu de dependen: un atribut determin n mod unic un alt atribut, ca n cazul ADRESA=f(nume). Dependena funcional va fi reprezentat prin notaia specific NUMEADRES. Fie schema de relaie: FURNIZORI(Numef, Adresaf, Articol, Pret). Probleme aici: 1. redundan repetarea adresei; 2. inconsisten potenial (anomalii de actualizare); 3. anomalii de inserare; 4. anomalii de eliminare (invers cu 3)) dac eliminm toate articolele livrate de un furnizor, putem pierde urma adresei sale (ntruct perechea de atribute Articol, Numef formeaz o cheie a relaiei FURNIZORI). Problemele dispar dac relaia unic FURNIZORI este descompus n urmtoarele dou relaii: FD(Numef, Adresaf) FAP(Numef, Articol, Pret) Deci: FURNIZORIFD, FURNIZORIFAP. Prin descompunere nu mai exist problema redundanelor la adrese. Putem introduce adresa unui furnizor chiar dac la un moment dat nu livreaz nimic. Dezavantaj al descompunerii de mai sus: dac dorim adresele furnizorilor unui anumit articol, trebuie efectuat mai nti o jonciune, ceea ce este scump. Cu relaia unic FURNIZORI o selecie, apoi o proiecie. Analiznd o schem de relaie putem nelege dezavantajele ei (vezi restriciile de mai sus). O ntrebare fireasc: n ce mod efectum descompunerile, astfel nct acestea s fie eficiente (s conduc la scheme avantajoase). Dependenele funcionale Definiie. Fie schema de relaie R(A1, A2, ..., An) i submulimile de atribute X, Y astfel nct X, Y {A1, A2, ..., An}. Atunci X determin funcional Y, sau XY, dac oricare ar fi relaia r care constituie o valoare curent a schemei R, nu este posibil ca r s posede dou tupluri care s coincid prin valorile componentelor corespunztoare atributelor din X, dar s nu coincid prin valorile mai multor componente corespunztoare atributelor din Y. Singura cale de a gsi dependenele funcionale valabile pentru o schem R este analiza atent a nelesului (semnificaiei) fiecrui atribut al acesteia i a modului n care sunt atribuite valori atributelor. Baza de date de lucru Fie o baz de date simpl, cu relaiile ntreprinderi, Comenzi, Furnizori, avnd schemele: Intreprinderi=(Nume, Adresa, Balplati) Comenzi=(Nume, Articol, Cantitate) Furnizori=(Numef, Adresaf, Articol, Pret) Eventual, cu baza de date putem asocia numele CENIN (Central Industrial). Numele ntreprinderilor, furnizorilor sau altor atribute pot fi simbolice, dar pot avea, de exemplu, forma Nume=Imet (ntreprindere Metalurgic). O realizare (instan) a bazei de date poate fi urmtoarea: 1

Intreprinderi

Nume N1 N2 N3 N4 Nume N1 N1 N3 N4 N3 N3 Numef Nf1 Nf1 Nf1 Nf2 Nf2 Nf2 Nf2 Nf3 Nf3 Nf3

Adresa Ad1 Ad2 Ad3 Ad4 Articol Ar1 Ar2 Ar3 Ar4 Ar5 Ar6 Adresaf Adf1 Adf1 Adf1 Adf2 Adf2 Adf2 Adf2 Adf3 Adf3 Adf3

Balplati +Bp1 0 -Bp3 -Bp4 Cantitate Q1 Q2 Q3 Q4 Q5 Q6 Articol Ar1 Ar6 Ar5 Ar4 Ar7 Ar1 Ar2 Ar6 Ar4 Ar5 Pret P1 P2 P3 P4 P5 P6 P7 P8 P9 P10

Comenzi

Furnizori

n fond, dependenele funcionale sunt aseriuni care reprezint legturi din lumea real. Dependenele funcionale nu pot fi demonstrate, dar pot fi realizate de un SGBD proiectat n mod adecvat. Multe sisteme existente realizeaz dependene funcionale care rezult din faptul c o cheie determin celelalte atribute ale unei relaii. Exemplu s gsim dependenele funcionale n cazul BD de lucru CENIN. Presupunere fiecare ntreprindere are o adres unic, o balan de pli unic. Nu exit dou ntreprinderi cu acelai nume (dac apare o astfel de problem se rezolv prin introducerea unui element de distingere). Admitem atunci c: NUMEADRESA, BALPLATI n relaia INTREPRINDERI. De asemenea, NUME ARTICOLCANTITATE n relaia COMENZI. Not notaii XY pentru XY, A1A2...An pentru {A1A2...An}, unde Ai=atribute. Ultima dependen are la baz ipoteza c o ntreprindere nu face dou comenzi pentru acelai articol. O comand suplimentar se realizeaz adugnd cantitatea la comanda veche, n loc de a insera un tuplu nou. Altfel, de exemplu, n relaia COMENZI, IMET ar putea apare cu un tuplu nou, corespunznd unei comenzi de Tabl, cu o cantitate de 35Kg, dar nu ar putea apare cu un al doilea tuplu, pentru acelai articol, dar Cantitate = 25Kg, deoarece un astfel de tuplu exist, de la prima comand (n o relaie nu putem avea dou tupluri identice, relaia fiind de mulime). Dependene n relaia FURNIZORI: NUMEFADRESAF NUMEF ARTICOLPRET Dependene triviale: NUMENUME, NUME ARTICOLARTICOL. 2

Dependene netriviale, care deriv din cele gsite, de ex.: NUMEF ARTICOLADRESAF PRET. Implicaii logice ale dependenelor Fie R o schem de relaie, iar A, B, C atribute n R. tim c, de exemplu, AB i BC valabile n R. Se poate arta c, de asemenea, AC valabil n R (tranzitivitate). Fie F o mulime de dependene funcionale pentru R i fie XY o dependen funcional, valabil tot pentru schema R. Atunci, F implic logic XY, dac orice relaie r pentru R, care satisface dependenele din F, satisface i XY. nchiderea mulimii de dependene F, notat cu F+, se definete ca mulimea dependenelor funcionale implicate logic de F. Cnd F+=F, F este o familie complet de dependene. Exemplu: fie R=ABC, cu F={A, B, C}. Atunci, F+ conine toate dependenele XY, astfel nct: 1. X conine pe A, de exemplu ABCAB, ABBC sau AC. 2. X conine B dar nu A, iar Y nu conine A, de exemplu, BCB, BC, B. 3. XY este una din cele dou dependene CC sau C. Chei Cheia = mulime de atribute care determin n mod unic o entitate (deci concept similar cu cel de dependen funcional). Fie R o schem, cu A1A2...An mulimea de dependene F, iar X o submulime a A1A2...An. X este cheie unic dac: 1. XA1A2...An este n F+; 2. pentru nicio submulime YX, dependena funcional YA1A2...An nu face parte din F+. Condiia 2 de minimalitate. Pentru o relaie pot exista mai multe chei. Una din ele chei primar. Exemplu: pentru R=ABC din exemplul anterior, singura cheie este A. Cauza: AABC face parte din F+, dar nici un X care nu conine A nu determin funcional ABC. Exemplu: schema (ORA, STR, COD); dependene netriviale: ORA STRCOD, CODORA. Se verific uor c {ORA, STR} i {STR, COD} sunt, ambele, chei. Axiome pentru dependenele funcionale Pentru a gsi chei i pentru a nelege dependenele funcionale, n general, trebuie ca: a) s putem calcula F+ din F, sau, cel puin b) dac sunt date F i XY, s stabilim dac XY face parte din F+. Pentru a rezolva a) i b) ne sunt necesare reguli de inferen, care s ne nvee cum una sau mai multe dependene funcionale implic alte dependene. Fie U mulimea universal de atribute, iar F mulimea de dependene care include numai atribute din U. Un sistem complet i corect de reguli de inferen (axiomele lui Armstrong): A1) Dac YXU, atunci XY este implicat logic de F (reflexibilitate). De aici obinem dependene triviale. A2) Dac XY ine i dac ZU, atunci XZYZ ine (augmentare, amplificare). A3) Dac XY i YZ in, atunci XZ ine (tranzitivitate).

Exemplu: n schema {ORA, STR, COD} mulimea de atribute {STR, COD} era o cheie. Deci: STR CODORA STR COD. Demonstraie: 1. CODORA (prin ipotez). 2. STR CODORA STR (prin aplicare A2 pe 1). 3. ORA STRCOD (prin ipotez). 4. ORA STRORA STR COD (prin aplicare A2 pe 3). 5. STR CODORA STR COD (prin aplicare A3 de la 2 la 4). Alte reguli de inferen, care decurg din axiomele lui Armstrong: a) dac XY i XZ in, atunci XYZ ine (de fapt, XYZ!) (regula reuniunii); b) dac XY i WYZ in, atunci ine i XWZ (regula de pseudotranzitivitate); c) dac XY ine i dac ZY, atunci XZ ine (regula de descompunere). Demonstraie. a) XY este dat. Amplificm cu X i prin inferen obinem XXXY, sau XXY. De asemenea, XZ este dat; amplificm cu Y i XYZY sau XYYZ. Prin tranzitivitate (A3) rezult XYZ. b) XY este dat. Amplificm cu W i obinem XWYW. Dar WYZ, sau YWY, deci prin A3 rezult XWZ. c) XY este dat. Prin ipotez ZY, deci din A1 rezult YZ. Cu A3, din XY i YZ obinem XZ. Consecin important a regulilor de reuniune i descompunere: dac A1, A2, ..., An sunt atribute, atunci XA1A2...An ine (este valabil) dac i numai dac XAi ine pentru orice i. Fie U o mulime de atribute, X o submulime a lui U, F o mulime de dependene pe U. Definiie. nchidere a mulimii X, n raport cu F, notat cu X+, este mulimea atributelor A astfel nct XA poate fi dedus din F folosind axiomele Armstrong. Lem. Dependena funcional XY rezult din axiomele Armstrong dac i numai dac YX+. Demonstraie. Fie Y=A1A2...An. Facem ipoteza c YX+. Prin definiia lui X+, XAi este implicat de axiomele Armstrong pentru toi i. Dar cum Y=A1A2...An={A1A2An}, prin regula de reuniune rezult XY, deoarece XAi pentru orice i. Se poate arta (teoreme) c sistemul axiomelor lui Armstrong este att complet ct i corect. Complet dac sunt date dependenele funcionale din F, prin axiome deducem toate dependenele funcionale din F+. Corect folosind regulile de inferen reprezentate de axiomele Armstrong i plecnd din F, nu putem deduce dependenele funcionale care nu sunt n F+. Consecinele (demonstrabile, pe baza celor spuse mai sus): a) X+ a fost definit ca mulimea de atribute A, astfel nct XA decurge din F, folosind axiomele Armstrong. O definiie echivalent pentru X+ este: X+ este mulimea atributelor A astfel nct F implic logic pe XA. b) F+ a fost introdus ca mulimea dependenelor implicate logic de F. Se poate ns defini F+ ca mulimea dependenelor care decurg din F prin axiomele Armstrong. Calculul nchiderilor Algoritm. Intrare: U finit, F n U, XU. 4

Ieire: X+, nchiderea lui X n raport cu F. Metoda: se calculeaz o succesiune de mulimi de atribute, folosind axiomele; obinem X(0), X(1), ..., astfel nct: 1. X(0)=X 2. X(i+1)=X(i){A}, astfel nct: a) YZ n F, cu b) AZ c) YX(i) Deoarece X=X(0)X(1)...U, iar U este finit, trebuie ca n final s se ajung la un astfel de i, nct X(i+1)=X(i). Urmeaz atunci c X(i)=X(i+1)=X(i+2)=... i calculul se oprete. Se poate arta c, pentru aceast ultim valoare a lui i: X+=X(i). Exemplu. Fie F: ABC, DEG, CA, BEC, BCD, CGBD, ACDB, CEAG. Fie X=D. Avem: 1) X(0)=D; Y1=D, Z1=EG; X(1)=D{E}{G}={D, E, G}=DEG. 2) X(1)=DEG; Y1=D; Z1=EG; rezult imediat c X(1)=DEG=X(0) deci STOP. Aadar (D)+=DEG. Similar se poate arta c (CG)+=ABCDEG, (BE)+=ABCDEG, (BD)+=ABCDEG, etc. Acoperiri de mulimi de dependene Fie F, G mulimi de dependene funcionale. Dac F+=G+, spunem c F i G sunt echivalente. Dac F i G sunt echivalente, spunem c F acoper G (i G acoper F). Fie F, G. Pentru a stabili c F i G sunt echivalente (sau F=G), pentru fiecare dependen YZ din F se verific dac YZ este n G+, folosind algoritmul anterior pentru a calcula Y+ i pentru a verifica apoi dac ZY+ (potrivit axiomelor, dac ZY+, atunci YZ). Dac o dependen YZ din F nu este n G+, atunci sigur F+G+. Dac fiecare dependen din F este n G+, atunci fiecare depende VW din F+ este n G+; pentru a arta c VW este n G+, se demonstreaz c fiecare YZ din F este n G+, apoi c VW este n F+. Pentru a arta c fiecare dependen din G este, de asemenea, i n F+, se procedeaz n mod analog c F i G vor fi echivalente dac fiecare dependen fin F este i n G+, iar fiecare dependen din G este i n F+. Lem. Fiecare mulime de dependene funcionale F este acoperit de o mulime de dependene G, n care nicio parte dreapt nu conine mai mult de un atribut. Demonstraie. Fie G o mulime de dependene XA, astfel nct pentru o dependen XY n F, A este n Y. Atunci XA decurge din XY prin regula de descompunere. Aadar, GF+. Dar FG+, deoarece, dac Y=A1A2...An, atunci XY rezult din XA1, XA2, ..., XAn, prin regula de reuniune. Mulime minimal de dependene O mulime de dependene este minimal dac: 1) partea dreapt a fiecrei dependene din F conine un singur atribut; 2) pentru nicio dependen XA din F, mulimea F-{XA} nu este echivalent cu F; 3) pentru nicio dependen XA din F i pentru nicio submulime ZX, mulimea F{XA}{ZA} nu este echivalent cu F. 5

De fapt, condiia 2 garanteaz c nicio dependen din F nu este redundant, iar 3 c niciun atribut n nicio parte stng nu este redundant. Desigur, niciun atribut din dreapta nu este redundant, deoarece fiecare parte dreapt conine un singur atribut (condiia 1). Teorem. Fiecare mulime de dependene F este echivalent cu o mulime F`, care este minimal. Exemplu. Fie: ABC, DEG, CA, BEC, BCD, CGBD, ACDB, CEAG. n ultima lem a fost indicat la demonstraie un fel de algoritm pentru secionarea prilor drepte ale dependenelor funcionale. Aplicndu-l obinem: ABC, CA, BCD, ACDB, DE, DG, BEC, CGB, CGD, CEA, CEG. CGB i CEA sunt redundante. S artm, de exemplu, c CGB este redundant cu ACDB. Se vede c ACDB este echivalent cu CDB, deoarece CA. Aadar, s artm c CGB este redundant, fa de CDB. Pornind de la CDB, avem CGD, deci nlocuim pe D n CDB i obinem C(CG) B, sau CGB. Procednd astfel, se obine sistemul de dependene minimale din (a). Dac din F eliminm dependenele CEA, CGD i ACDB, obinem acoperirea minimal din (b). Observm c cele dou acoperiri minimale conin numere diferite de dependene. (a) (b) ABC, CA, BCD, CDB, DE, DG, BEC, CGD, CEG. ABC, CA, BCD, DE, DG, BEC, CGB, CEG.

S-ar putea să vă placă și