Extras din curs
Proiectarea logică a bazei de date urmăreşte printre altele diminuarea redundanţei şi asigurarea securităţii datelor. Acest scop se poate atinge, dacă se cunosc a priori constrângerile ce pot fi aplicate asupra datelor. Dependenţele sunt constrângeri impuse datelor în baza de date. Ba mai mult, mulţimea de dependenţe este partea esenţială a schemei unei relaţii, deci şi a schemei bazei de date. Dependenţele funcţionale au fost primele constrângeri logice considerate în modelul relaţional. Ele formează cel mai simplu şi cel mai larg răspândit tip de dependenţe.
Prezentul capitol e consacrat regulilor de inferenţă, închiderilor şi diverselor forme de acoperiri ale dependenţelor funcţionale.
3.1. Noţiuni generale
Să considerăm relaţia orar din fig. 3.1.
orar PROFESOR DISCIPLINĂ ZI ORĂ GRUPĂ SALĂ
Petrescu Baze de date Luni 8:00 C941 402
Petrescu Baze de date Mierc. 14:30 C941 216
Petrescu Baze de date Mierc. 16:00 C941 216
Vasilache Progr.logică Luni 9:30 C941 404
Fig.3.1. Relaţia orar
Această relaţie arată care profesor predă disciplina dată, cărei grupe, în ce zi a săptămânii, la ce oră şi în ce sală. Atributele ce formează schema acestei relaţii nu pot primi orice valori. Atributele se află într-o interdependenţă. Aici, în particular, se suprapun asupra atributelor următoarele constrângeri:
(1) o disciplină este predată unei grupe de studiu de un singur profesor;
(2) profesorul, în ziua dată, la ora dată se găseşte într-o singură sală;
(3) în ziua dată, la ora dată, în sala dată se predă o singură disciplină.
Aceste constrângeri ce reflectă o interdependenţă între atribute sunt exemple de dependenţe funcţionale. Dependenţa funcţională este o generalizare a noţiunii de cheie.
Constrângerile de mai sus pot fi formulate:
(1) DISCIPLINĂ GRUPĂ determină funcţional PROFESOR sau, ce e echivalent PROFESOR e determinat funcţional de DISCIPLINĂ GRUPĂ;
(2) PROFESOR ZI ORĂ determină funcţional SALĂ;
(3) ZI ORĂ SALĂ determină funcţional DISCIPLINĂ;
şi notate respectiv:
(1) DISCIPLINĂ GRUPĂ PROFESOR;
(2) PROFESOR ZI ORA SALA;
(3) ZI ORA SALĂ DISCIPLINA.
Unica posibilitate de a determina dependenţele funcţionale constă într-o analiză cu luare-aminte a semanticii atributelor. În acest sens dependenţele sunt de fapt aserţiuni despre lumea reală. Ele nu pot fi demonstrate. Dar ele pot şi trebuie să fie susţinute de SGBD-uri. Majoritatea sistemelor susţin numai dependenţele funcţionale determinate de cheile relaţiei. Dar sunt şi sisteme ce susţin dependenţe funcţionale arbitrare.
Trebuie menţionat că declararea dependenţelor funcţionale într-o bază de date este o decizie pe care o ia numai proiectantul bazei de date. Odată declarate SGBD-ul va susţine aceste constrângeri. În afară de aceasta, după cum se va vedea în celelalte secţiuni, graţie dependenţelor, există o structură mai eficientă de păstrare a datelor. Dependenţele funcţionale vor servi la proiectarea schemelor bazelor de date cu anumite proprietăţi dezirabile.
Definiţia 3.1. Fie relaţia r cu schema R şi X,YR. Vom spune că dependenţa funcţională XY este validă în relaţia r (sau relaţia r satisface dependenţa funcţională XY), dacă, pentru orice două tupluri din r, fie t1 şi t2, din condiţia că tuplurile au X-valori identice, urmează că au şi Y-valori identice, adică t1[X]=t2[X]t1[Y]=t2[Y].
Dacă XY e validă în r(R), vom spune că X determină funcţional Y sau, că Y e determinat funcţional de X. În această definiţie (şi mai departe) simbolul "" notează "implică".
Deci dependenţa funcţională XY reprezintă o restricţie de integritate aplicată tuplurilor relaţiei r(R), în sensul că oricare două tupluri din r care prezintă o aceeaşi valoare pentru X trebuie să prezinte o aceeaşi valoare pentru Y.
Definiţia 3.1 poate fi interpretată şi în felul următor: relaţia r(R) satisface dependenţa funcţională XY, dacă relaţia Y(X=x(r)) conţine nu mai mult de un tuplu pentru orice valoare x a atributului X.
Partea stângă a dependenţei poartă numele de determinant, iar partea dreaptă a dependenţei poartă numele de determinat. Astfel în cadrul dependenţei XY, X este determinantul, iar Y determinatul.
Exemplul 3.1. Considerăm relaţiile din fig.3.2. În ele sunt valide următoarele dependenţe funcţionale. În relaţia r1: AB; în relaţia r2: AB, BA; în relaţia r3: AB.
r1 A B r2 A B r3 A B
a1 b1 a1 b1 a1 b1
a2 b2 a2 b4 a2 b4
a3 b1 a1 b1 a1 b1
a4 b1 a3 b2 a3 b2
a5 b2 a2 b4 a2 b4
a6 b2 a4 b3 a4 b4
Fig.3.2. Relaţiile r1, r2 şi r3.
Pentru a verifica dacă o dependenţă e validă într-o relaţie dată, se utilizează următorul algoritm.
Preview document
Conținut arhivă zip
- Dependente Functionale.doc