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

Adresa
Ad1
Ad2
Ad3
Ad4

Balplati
+Bp1
0
-Bp3
-Bp4

Comenzi

Nume
N1
N1
N3
N4
N3
N3

Articol
Ar1
Ar2
Ar3
Ar4
Ar5
Ar6

Cantitate
Q1
Q2
Q3
Q4
Q5
Q6

Furnizori

Numef
Nf1
Nf1
Nf1
Nf2
Nf2
Nf2
Nf2
Nf3
Nf3
Nf3

Adresaf
Adf1
Adf1
Adf1
Adf2
Adf2
Adf2
Adf2
Adf3
Adf3
Adf3

Articol
Ar1
Ar6
Ar5
Ar4
Ar7
Ar1
Ar2
Ar6
Ar4
Ar5

Pret
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10

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)

ABC, CA, BCD, CDB, DE, DG, BEC, CGD, CEG.

(b)

ABC, CA, BCD, DE, DG, BEC, CGB, CEG.

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