Documente Academic
Documente Profesional
Documente Cultură
Gestiunea şi accesul la baza de date sunt asigurate de un ansamblu de programe care formează
sistemul de gestiune al bazei de date (SGBD).
Sistemul de gestiune al bazei de date se defineşte ca un instrument de asamblare, codificare,
aranjare, protecţie şi regăsire a datelor în bazele de date. In acelaşi timp, SGBD mai poate fi
definit ca un ansamblu de programe speciale cu ajutorul cărora se creează, actualizează,
interoghează şi protejează o bază de date.
Principalele avantaje oferite de SGBD pot fi sintetizate astfel:
- independenţa datelor: aplicaţiile nu sunt afectate de detalii, şi implicit modificările,
de reprezentare şi stocare a datelor;
- coerenţa datelor prin implementarea unor reguli explicite sau implicite (restricţii de
integritate) pe care datele trebuie să le respecte de-a lungul evoluţiei lor;
- asigurarea gestiunii tranzacţiilor: o tranzacţie este o secvenţă atomică de acţiuni
asupra bazei de date (citire/scriere). O tranzacţie executată asigură aducerea bazei
de date într-o stare consistentă. După orice modificare în baza de date sunt
verificate toate regulile de coerenţă asupra tuturor datelor;
- asigurarea confidenţialităţii datelor: fiecare utilizator cu drept de acces la baza de
date are definite anumite drepturi;
- limitarea redundanţei datelor (dublarea memorării unor date este controlată);
- acces eficient la date: SGBD-ul utilizează metode sofisticate de stocare şi acces la
date asigurând optimizarea accesului la date;
- integritatea şi securitatea datelor asigurate prin implementarea restricţiilor de
integritate şi a controalelor de acces la date;
- acces concurent la date;
- stochează un volum mare de date;
- oferă facilităţi de gestiune a meta-datelor prin intermediul dicţionarului de date1.
Meta-datele privesc datele referitoare la: schema bazei de date (în cazul SGBD-
urilor relaţionale spre exemplu privesc relaţii, atribute, restricţii, view-uri), view-
uri, utilizatori (identificarea şi drepturile utilizatorilor) şi sistemul în ansamblu
(informaţii statistice);
- timp redus pentru realizarea aplicaţiilor;
- administrarea uniformă a datelor asigurată de către administratorul bazei de date;
- recuperarea şi restaurarea datelor: SGBD-ul oferă facilităţi de restaurare a bazei de
date în cazul afectării parţiale sau totale a conţinutului acesteia.
SGBD-ul trebuie să asigure două funcţii de bază şi anume: descrierea bazei de date şi
manipularea bazei de date. Descrierea bazei de date se realizează prin intermediul limbajului de
1
Meta-datele pot fi definite ca date care descriu date. Tot ceea ce descrie baza de date, prin opoziţie cu conţinutul
bazei de date, sunt meta-date. Spre exemplu: nume de coloane, nume de utilizatori etc.
descriere a datelor (LDD). Manipularea bazei de date se realizează prin intermediul limbajului
de manipulare a datelor (LMD) care dispune de două componente: limbajul de interogare şi
limbajul de actualizare a bazei de date.
Modelul relaţional a fost elaborat de E. F. Codd în 1970. Este un model simplu şi intuitiv bazat
pe o viziune tabelară asupra datelor. Întregul model relaţional are la bază teoria matematică a
relaţiilor şi algebra relaţională.
În cele ce urmează se prezentă în sinteză principalele concepte specifice modelului relaţional.
O relaţie (tabel) este un subansamblu al produsului cartezian de n domenii (un domeniu este un
ansamblu de valori) conform următoarei formule:
R (D1 x D2 x D3 x … x Dn)
Exemplu:
Entităţii din lumea reală numită PRODUSE îi va corespunde relaţia (tabelul) PRODUSE
definită prin produsul cartezian al domeniilor, CODPRODUS, DENUMIREPRODUS, UM,
PRET,
adică:
CODPRODUS x DENUMIREPRODUS x UM x PRET
Relaţia este reprezentată sub forma unui tablou dezvoltat pe linii şi coloane (de unde şi
denumirea de tabel). Relaţia este formată dintr-un ansamblu de n-tupluri. Fiecare tuplu
reprezintă un rând în cadrul tabelului. Fiecare coloană corespunde unui atribut, descriind o
caracteristică a entităţii din lumea reală, aşa cum rezultă din figura 1.2.
Atribute
PRODUSE
COD PRODUS DENUMIRE UM PRET
PRODUS
100 P1 Buc 4
300 P2 Kg 6,5
200 P3 Mc 7
150 P4 Buc 1,5
700 P5 Kg 2
domeniu tuplu
Figura 1.2. Structura relaţiei PRODUSE
Conform modelului relaţional, în cadrul unei relaţii se utilizează următoarele concepte:
Atributul (câmpul) – o variabilă care ia valori într-un anumit domeniu. Aceste valori corespund
unor caracteristici ale lumii reale.
Tuplul – totalitatea valorilor atributelor de pe o linie dintr-un tabel. Tuplul se mai numeşte şi
înregistrare.
Cardinalitatea relaţiei este egală cu numărul de linii sau tupluri conţinute de un tabel.
Cheia primară - câmpul (grupul de câmpuri) cu valori unice şi nenule ce serveşte la
identificarea înregistrărilor unui tabel. Orice relaţie (tabel) are o cheie primară. În exemplul
prezentat în figura 1.2., cheia primară este atributul COD PRODUS.
Cheia candidat - un câmp (altul decât cheia primară) ce îndeplineşte condiţiile necesare cheii
primare. Dintre cheile candidate se va alege, de fapt, cheia primară.
Cheia externă - câmpul (grup de câmpuri) ce serveşte la realizarea legăturii cu alt tabel în care
acesta este cheie primară. Valorile asociate atributului cu rol de cheie externă pot fi duplicate sau
nule.
Exemplu: Se consideră o bază de date formată din tabelele Furnizori şi Facturi, a căror structură
este reprezentată în modelul de mai jos:
La baza definirii legăturilor dintre tabele stă conceptul de restricţie de integritate referenţială
(Referential Integrity), care presupune că valorile unei chei externe trebuie să se regăseacă
printre valorile cheii primare corespondente sau să fie nule. Aşa cum se poate observa în
exemplul anterior (figura 1.3) între relaţiile Furnizori şi Facturi s-a definit o legătură pe baza
câmpului comun CodFz cu implementarea conceptului de restricţie de integritate referenţială
(valorile atributului cu rol de cheie externă CodFz din tabelul Facturi se regăsesc în domeniul
cheii primare corespondente CodFz din tabelul Furnizori).
Operatorul de reuniune crează un nou tabel T plecând de la două tabele R (conţinând m tupluri)
şi S (conţinând n tupluri) prezentând aceeaşi structură. Rezultatul, tabelul T prezintă aceeaşi
structură cu a tabelelor sursă dar conţine m+n tupluri:
T= R U S
Tabelul Studenţi (R)
Matricola Nume Media
110 Dan Ion 8,75
111 Denilescu Ana 9,25
Intersecţia
T= (R ∩ S)
Tabelul Bursieri (R)
Matricola Nume Media
110 Dan Ion 8,75
111 Denilescu Ana 9,25
112 Toma Ene 8,80
Diferenţa
Tabelul Repartiţii T= (R x S)
Matricola Nume Medie Cămin Camera
110 Dan Ion 8,75 C1 1
110 Dan Ion 8,75 C1 2
110 Dan Ion 8,75 C2 1
111 Denilescu Ana 9,25 C1 1
111 Denilescu Ana 9,25 C1 2
111 Denilescu Ana 9,25 C2 1
Operatori unari
Proiecţia
T= ∏ (Transferări, Nume)
Nume
Pop Geta
Marin Dana
Selecţia
Operatori de extensie
Compunerea (Join)
Compunerea a două tabele R şi S, după valorile egale ale unui atribut comun A, conduce la
obţinerea unui tabel T ale cărei tupluri s-au format prin produsul cartezian al tuplurilor din R şi S
prezentând valori egale pe atributul de compunere A.
Tabelul Căminişti
Matricola Nume Media
110 Dan Ion 8,75
111 Denilescu Ana 9,25
Tabelul CamereStudenţi
Camin Camera Matricola
C1 1 110
C2 10 111
Fiind date tabelele R (cu schema r) şi S (cu schema s), aplicarea operatorului de diviziune va
genera tabelul (R S) de grad r-s ale cărui tupluri concatenate cu tuplurile lui S vor genera
tupluri aparţinând lui R.
Exemplu:
Fie tabelul R din exemplul anterior:
Matricola Nume Media Cămin Camera
110 Dan Ion 8,75 C1 1
111 Denilescu Ana 9,25 C2 10
Prin aplicarea operatorului diviziune prin tabelul Căminişti se va genera tabelul Camere:
Tabelul Căminişti (S)
Matricola Nume Media
110 Dan Ion 8,75
111 Denilescu Ana 9,25
Tabelul Camere (R S)
Cămin Camera
C1 1
C2 10
Livrare
Cod_Fz Den_Marfa PretFact
100 Portocale 5
100 Banane 3
101 Portocale 4.8
102 Kiwi 6
2.1. Dependenţe funcţionale
Se consideră relaţia R(X,Y,Z), unde X,Y,Z sunt atributele acesteia (simple sau compuse). Fie
xi,yi,zi valorile atributelor X,Y şi Z [Dollinger].
Spunem că există o dependenţă multivaloare a atributului Z faţă de Y, notată Y→→Z, dacă
pentru orice valori x1, x2, y, z1 şi z2, x1≠x2, z1≠z2, astfel încât tuplurile (x1,y,z1) şi (x2,y,z2) fac
parte din relaţia R, atunci şi tuplurile (x1,y,z2) şi (x2,y,z1) fac parte din relaţia R.
Din simetria definiţiei rezultă că dependenţa multivaloare Y→→Z implică dependenţa
multivaloare Y→→X.
De exemplu, în relaţia R(Serie_Facultate, NrMatricolStudent, NumeProfesor) există
dependenţe multivaloare, deoarece la seria unei facultăţi sunt înscrişi mai mulţi studenţi, care
studiază cu mai mulţi profesori la materii diferite. Dacă fiecare student studiază cu toţi profesorii,
atunci există următoarele dependenţe multivaloare:
Serie_Facultate →→ NrMatricolStudent
Serie_Facultate →→ NumeProfesor
În mod practic, dacă există tuplurile (EAM_SeriaA, NrMatricol1, Profesor_Info) şi
(EAM,_SeriaA, NrMatricol2, Profesor_Mate) atunci vor exista şi tuplurile (EAM_SeriaA,
NrMatricol1, Profesor_Mate) şi (EAM_SeriaA, NrMatricol2, Profesor_Info).
În general dependenţele multivaloare sunt mai dificil de identificat şi mai rar întâlnite în practică,
fapt ce ne determină să nu insistăm mai mult asupra lor.
2.3 Formele normale
Teoria clasică a normalizării este construită în jurul a cinci forme normale. E.F.Codd, părintele
modelului relaţional, a definit iniţial trei forme normale [Fotache]: FN1, FN2 şi FN3. Apoi,
forma normală Boyce-Codd, numită astfel după numele celor doi specialişti în domeniu, s-a dorit
a fi o formă generalizată a FN2 şi FN3. Aceste patru forme normale sunt asociate dependenţelor
funcţionale.
Formele normale 4 şi 5 (FN4, FN5), asociate în literatura de specialitate cu numele cercetătorului
Fagin, se bazează pe dependenţele multivaloare.
Mulţi specialişti consideră că pentru elaborarea unei baze de date relaţionale sunt suficient de
parcurs primele trei forme normale. Plecând de la acestă prezumţie, în continuare vom prezenta
doar primele trei forme normale (FN1, FN2 FN3).
Forma normală 1 (FN1) – O relaţie (tabel) este în prima formă normală dacă toate atributele
sale sunt atomice (elementare, care nu se mai pot descompune) şi nerepetitive. Un atribut este
considerat elementar atunci când descompunerea lui nu prezintă interes pentru aplicaţia ce se va
dezvolta.
Exemplu: Fie tabelul Furnizor (CodFz, DenFz, Adresa)
Tabelul Furnizor nu respectă FN1 dacă există cerinţe privind gruparea furnizorilor după
localităţi, deoarece este mult mai greu să extragi această informaţie dintr-o adresă completă.
Forma normală 2 (FN2). O relaţie este în cea de-a doua formă normală dacă respectă FN1 şi
orice atribut non-cheie este total dependent faţă de cheia primară a relaţiei.
Exemplu:
Fie tabelul Marfuri_Facturi (NrFact, CodMarfa, DenMarfa, UM, Calitate, CantFact).
NrFact CodMarfa DenMarfa UM Calitate CantFact
10 100 Portocale kg 1 70
10 200 Kiwi kg 1 90
11 400 Pomelo buc 2 50
11 100 Portocale kg 1 100
--------- --------------- ---------------- ---- ----------- ---------------
Exemplu:
Fie tabelul Facturi_Furnizori (NrFact, DataFact, CodFz, DenFz, Localitate)
Proiectarea unei baze de date relaţionale prin normalizare se poate realiza prin:
descompunerea tabelului relaţional iniţial în mai multe tabele, utilizând formele normale
(FN1, FN2, FN3, FN4, FN5);
descompunerea tabelului relaţional iniţial în mai multe tabele, utilizând matricea
dependenţelor funcţionale sau graful dependenţelor.
EXEMPLU:
O societate comercială doreşte să-şi informatizeze activitatea de aprovizionare cu mărfuri de la
furnizori. Furnizorii societăţii, se identifică printr-un cod unic, nume, localitate, telefon şi cont
bancar.
Aprovizionarea cu mărfuri se realizează în baza facturilor primite de la furnizori, fiecare Factură
identificându-se printr-un număr unic, dată factură, data scadenţei, codul, denumirea, contul
bancar al furnizorului, codul, denumirea şi contul clientului, codul, denumirea, unitatea de
măsură, cantitatea şi preţul mărfurilor facturate, valoarea acestora, valoare TVA şi valoarea
totală a facturii. Pentru fiecare zi de întârziere (faţă de data scadenţei) a plăţii facturii, furnizorii
percep o penalizare de 1% din valoarea totală a facturii.
Nomenclatorul mărfurilor include referinţe la codul de marfă, denumire marfă, unitatea de
măsură şi calitate. Nomenclatorul va conţine maxim 100 de mărfuri distincte ale căror unităţi de
măsură sunt exprimate în kg, buc, litri.
Plata facturii se realizează printr-o Chitanţă, conform facturii emise, în care se precizează
numărul chitanţei, data chitanţei, suma plătită, denumirea şi contul emitentului, denumirea şi
contul beneficiarului (furnizorului). Societatea plăteşte cu un astfel de document o singură
factură.
Se cere să se proiecteze baza de date relaţională prin normalizare utilizând matricea
dependenţelor funcţionale.
În acest scop s-au parcurs paşii următori (descrişi în cadrul metodologic de proiectare a
modelului relaţional prin normalizare):
1. Inventarierea atributelor. Pe baza informaţiilor referitoare la activitatea de aprovizionare cu
mărfuri de la furnizori, se poate întocmi dicţionarul de atribute:
Nr. Atribut Semnificaţie
Crt.
1. CodFz Cod Furnizor
2. CodBenef Cod Beneficiar
3. NumeFz Nume Furnizor
4. Localitate Localitate Furnizor
5. Telefon Telefon Furnizor
6. ContBancar Cont Bancar Furnizor
7. NrFact Număr Factură
8. DataFact Data Facturii
9. DataScad Data Scadenţă Factură
10. CantitateFact Cantitate Facturată
11. PretFact Pret Facturare
12. CotaTVA Cota TVA
13 Valoaremarfa Valoare Marfă Facturată
14. TVA Valoare TVA
15. ValoareFactura Valore Totală Factură
16. CodMarfa Cod Marfă
17. DenMarfa Denumire Marfă
18. UM Unitate de Măsură
19. Calitate Calitate Marfă
20. Nrchit Număr Chitanţă
21. DataChit Data Chitanţă
22. SumaPl Suma Plătită
23. TotalSumePl Sume Totale Plătite
24. Penalizare Penalizare Factură
25 Nr_zile-intarz Nr. Zile de Întârziere
Dicţionarul de date (DD): CodFz, NumeFz, Localitatea, ContBancar, Telefon, NrFact, DataFact,
DataScad, CantitateFact, PretFact, CotaTVA, CodMarfa, DenMarfa, UM, Calitate, NrChit,
DataChit, SumaPl.