Dependențe Funcționale

Curs
8/10 (2 voturi)
Domeniu: Calculatoare
Conține 1 fișier: doc
Pagini : 26 în total
Cuvinte : 11338
Mărime: 63.17KB (arhivat)
Cost: Gratis
Profesor îndrumător / Prezentat Profesorului: Cotelea Vitalie

Extras din document

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,YR. Vom spune că dependenţa funcţională XY este validă în relaţia r (sau relaţia r satisface dependenţa funcţională XY), 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ă XY 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ă XY 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ă XY, 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 XY, 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: AB; în relaţia r2: AB, BA; în relaţia r3: AB.

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

Dependențe Funcționale - Pagina 1
Dependențe Funcționale - Pagina 2
Dependențe Funcționale - Pagina 3
Dependențe Funcționale - Pagina 4
Dependențe Funcționale - Pagina 5
Dependențe Funcționale - Pagina 6
Dependențe Funcționale - Pagina 7
Dependențe Funcționale - Pagina 8
Dependențe Funcționale - Pagina 9
Dependențe Funcționale - Pagina 10
Dependențe Funcționale - Pagina 11
Dependențe Funcționale - Pagina 12
Dependențe Funcționale - Pagina 13
Dependențe Funcționale - Pagina 14
Dependențe Funcționale - Pagina 15
Dependențe Funcționale - Pagina 16
Dependențe Funcționale - Pagina 17
Dependențe Funcționale - Pagina 18
Dependențe Funcționale - Pagina 19
Dependențe Funcționale - Pagina 20
Dependențe Funcționale - Pagina 21
Dependențe Funcționale - Pagina 22
Dependențe Funcționale - Pagina 23
Dependențe Funcționale - Pagina 24
Dependențe Funcționale - Pagina 25
Dependențe Funcționale - Pagina 26

Conținut arhivă zip

  • Dependente Functionale.doc

Alții au mai descărcat și

Folosirea MySQL și PHP în Gestionarea unei Baze de Date pe Web

Introducere Conţinutul lucrării este dat de construcţia de legături dintre World Wide Web şi baze de date, dintre tehnologia veche şi cea nouă,...

Programarea Calculatoarelor și Algoritmi

Dev C++ este un mediu integrat de dezvoltare pentru limbajul de programare C/C++. Soft-ul este free si poate fi obtinut si instalat urmand...

Operatori Aritmetici C++

1. SCOPUL LUCRĂRII În această lucrare se vor studia următoarele: -Funcţii de citire / scriere: -Instrucţiunea de atribuire -Operatori...

Structuri de Date și Algoritmi

Curs 1 Structuri de date Structurile de date erau definite în limbajul C drept organizarea datelor primare. În limbajul C++, acestea reprezinta o...

Programarea Calculatoarelor

Lucrarea nr. 1 Determinarea experimentala a timpului de execuţie al unui program 1. Scopul lucrării - lucrarea prezintă aspecte legate de...

Probleme POO

/*Implementati o clasa pentru realizarea de operatii cu numere complexe, o functie friend care calculeaza distanta dintre 2 numere complexe si...

Progamarea Calculatoarelor - 2 -

Operatii de intrare / iesire în C . 1. Fisiere standard (fluxuri de intrare/iesire). În C nu sunt definite operatiile de intrare / iesire si nici...

Programarea Calculatoarelor - 3 -

5. Instructiuni. 5.1. Instructiunea expresie. O instructiune expresie se obtine punând terminatorul de instructiune (punct-virgula) dupa o...

Ai nevoie de altceva?