SISTEMUL DE GESTIUNE AL BAZELOR DE DATE - … si algebra... · 1.2. Sistemul de Gestiune al Bazei...
Transcript of SISTEMUL DE GESTIUNE AL BAZELOR DE DATE - … si algebra... · 1.2. Sistemul de Gestiune al Bazei...
CAPITOLUL 1. CONCEPTE PRIVIND BAZELE DE DATE ŞI
SISTEMUL DE GESTIUNE AL BAZELOR DE DATE
1.1. Conceptul de bază de date
Utilizarea calculatoarelor electronice în activitatea practică din organizaţii impune elaborarea
unor sisteme informatice în conformitate cu cerinţele solicitate de utilizatorii lor. Aplicaţiile
informatice din domeniul economic au de regulă un volum relativ mare de date, care se
organizează cel mai bine în baze de date. De altfel, există o părere unanimă a specialiştilor că
bazele de date reprezintă unul dintre cele mai moderne şi mai eficiente mijloace de stocare şi
gestiune modernă a datelor referitoare la un anumit domeniu particular (de exemplu: evidenţa
resurselor umane, evidenţa livrărilor de mărfuri, evidenţa mijloacelor fixe etc.).
Baza de date poate fi definită ca o colecţie de date, referitoare la un domeniu de activitate
particular, în care proprietăţile datelor precum şi relaţiile semantice dintre date sunt specificate
utilizând concepte propuse de un anumit model. Un model se poate defini ca o reprezentare
abstractă a informaţiei şi, eventual, a operatorilor pentru manipularea informaţiei. Conceptul de
model de date este esenţial, opţiunea pentru o anume bază de date fiind făcută pornind de la
modelul care va sta la baza ei.
În literatura de specialitate există mai multe definiţii date bazei de date, fiecare definiţie
evidenţiind anumite elemente, astfel:
C. Delobel a definit baza de date drept un „ansamblu structurat de date înregistrate pe
suporturi accesibile calculatorului pentru a satisface simultan mai mulţi utilizatori de o
manieră selectivă şi într-un timp oportun”.
G. Gardarin precizează: „pentru ca un ansamblu de date independente să fie o bază de
date, trebuie să fie interogabile prin conţinut, după orice criteriu precum şi să fie posibilă
regăsirea structurii datelor”.
În timp au fost definite mai multe modele de date care au reprezentat punctul de pornire în
organizarea bazelor de date. Amintim următoarele modele:
- modelul ierarhic;
- modelul reţea;
- modelul relaţional;
- modelul relaţional-obiectual;
- modelul orientat obiect.
Aceste modele au o serie de particularităţi, aşa cum rezultă din figura 1.1.
Model ierarhic
Se particularizează prin reprezentarea
datelor sub formă arborescentă
descendentă. Una dintre caracteristici
este imposibilitatea de a separa nivelul
logic de cel fizic.
Model reţea
Este o extensie a modelului ierarhic.
Prezintă în plus conexiunea dintre
elemente (legături transversale).
Model relaţional
Reprezentarea datelor se realizează prin
tabele având două coordonate: linii şi
coloane. Fiecare tabel descrie o entitate
din lumea reală. Modelul permite
reprezentarea asocierilor dintre aceste
entităţi.
Model orientat obiect
Reprezentarea datelor se face sub formă
de obiecte. Un obiect încorporează atât
date cât şi comportamente (prelucrări).
Figura 1.1 Particularităţile modelelor de date
Grupul de normalizare ANSI/X3/SPARC a stabilit trei niveluri de descriere a datelor în cazul
unei baze de date:
Nivelul extern – care descrie viziunea particulară (view) a unui utilizator sau grup de
utilizatori asupra bazei de date (este vorba de acea parte a bazei de date pentru care
utilizatorul are acces). În consecinţă, pot fi definite mai multe scheme externe fiecare
reprezentând un subansamblu de date accesibile unui utilizator;
Nivelul conceptual - corespunde unei structurări semantice a datelor descriind lumea
reală, fără a lua în considerare restricţii specifice implementării bazei de date pe un
anumit calculator. Cu alte cuvinte, corespunde unei viziuni a datelor independente de
aplicaţiile individuale şi de modul în care datele sunt stocate;
Nivelul fizic (intern) care corespunde unei structuri de stocare a datelor pe suporturi
(organizare şi mod de acces fizic). Acest nivel este responsabil de organizarea fizică a
fişierelor la nivelul memoriei externe precum şi de utilizarea unei metode de acces la
date cât mai eficiente.
Pentru o bază de date se pot defini mai multe niveluri (scheme) externe, un nivel conceptual şi un
nivel fizic (intern).
Fiecare nivel de abstractizare este protejat la modificările în structura din nivelul inferior.
Nivelurile de abstractizare menţionate asigură independenţa datelor, autorizează manipularea
datelor, garantează integritatea datelor şi optimizează accesul la date.
Independenţa datelor poate fi:
- independenţă logică - care protejează modificările în structura logică de date;
- independenţă fizică - care protejează modificările în structura fizică de date.
Asigurarea independenţei datelor este unul dintre beneficiile importante aduse de sistemele de
gestiune a bazelor de date.
Utilizatorii unei baze de date pot fi:
- Utilizatorii finali – toate persoanele care au acces doar la interfaţa oferită de SGBD şi/sau
execută aplicaţii;
- Programatorii de aplicaţii - specialiştii care proiectează şi realizează aplicaţiile ce
interacţionează cu SGBD-ul;
- Administratorul bazei de date - este un utilizator privilegiat care:
Cunoaşte schemele logice/fizice;
Răspunde de problemele de securitate ale bazei de date, stabileşte şi acordă
autorizările privind accesul şi drepturile utilizatorilor în baza de date;
Asigură disponibilitatea datelor şi, la nevoie, recuperarea datelor;
Monitorizează parametrii bazei de date şi adaptează baza de date în funcţie de
cerinţele nou apărute.
1.2. Sistemul de Gestiune al Bazei de Date
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.
1.3. Modelul relaţional
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.
PRODUSE
COD PRODUS DENUMIRE
PRODUS
UM PRET
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
Atribute
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:
Furnizori (CodFz, NumeFz, Localitate, Telefon, ContBancar)
cheia primară cheia candidat
Facturi (NrFact, DataFact, DataScad, CodFz)
cheia primară cheie externă
Figura 1.3. Reprezentarea modelului relaţional detaliat
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).
Elemente de algebră relaţională
Algebra relaţională oferă un ansamblu de operatori permiţând operarea asupra conceptelor
modelului relaţional. Rezultatul obţinut prin utilizarea operatorilor algebrei relaţionale este un
tabel virtual. Având în vedere fundamentele matematice ale modelului relaţional, algebra
relaţională utilizează operatori clasici de manipulare a ansamblurilor de date (reuniune,
intersecţie, diferenţă, produs cartezian) şi introduce operatori proprii bazelor de date (selecţie,
proiecţie, compunere, diviziune).
Operatorii algebrei relaţionale se definesc şi utilizează după cum urmează:
a) Operatori de asamblare
Reuniunea
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
Tabelul Transferări (S)
Matricola Nume Media
230 Pop Geta 9,15
190 Marin Dana 8,25
Tabelul FinalStudenţi (T= R U S)
Matricola Nume Media
110 Dan Ion 8,75
111 Denilescu Ana 9,25
230 Pop Geta 9,15
190 Marin Dana 8,25
Intersecţia
Intersecţia a două tabele R şi S (R ∩ S) prezentând aceeaşi structură, unde R prezintă m tupluri
iar S prezintă n tupluri generează relaţia T (cu aceeaşi structură) conţinând tuplurile identice din
R şi S.
T= (R ∩ S)
Tabelul Bursieri (R)
Matricola Nume Media
110 Dan Ion 8,75
111 Denilescu Ana 9,25
112 Toma Ene 8,80
Tabelul Căminişti (S)
Matricola Nume Media
110 Dan Ion 8,75
111 Denilescu Ana 9,25
130 Ionescu Angela 8,15
127 Manea Ion 8,30
Tabelul BursieriCăminişti (T= R ∩ S)
Matricola Nume Media
110 Dan Ion 8,75
111 Denilescu Ana 9,25
Diferenţa
Diferenţa a două tabele (relaţii) R şi S prezentând aceeaşi structură conduce la obţinerea
tabelului (relaţiei) T conţinând tuplurile lui R care nu se regăsesc în S.
T= (R – S)
Tabelul BursieriNecăminişti (T= R - S)
Matricola Nume Media
112 Toma Ene 8,80
Produs Cartezian
Produsul cartezian al tabelelor R şi S conduce la obţinerea unui tabel T stocând mulţimea
perechilor obţinute din concatenarea înregistrărilor lui R şi S:
T= (R x S)
Tabelul Căminişti (R)
Matricola Nume Media
110 Dan Ion 8,75
111 Denilescu Ana 9,25
Tabelul Camere (S)
Camin Camera
C1 1
C1 2
C2 1
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
Operatorul de proiecţie aplicat asupra tabelului R conţinând m atribute conduce la obţinerea
rtabelului T cu acelaşi număr de tupluri ca şi R, dar cu un număr redus de atribute.
T = ∏ (R; A,B) unde A şi B sunt atribute aparţinând lui R.
Dacă se doreşte obţinerea listei conţinând numele studenţilor transferaţi se aplică operatorul de
proiecţie astfel:
T= ∏ (Transferări, Nume)
Tabelul Transferări (R)
Matricola Nume Media
230 Pop Geta 9,15
190 Marin Dana 8,25
T= ∏ (Transferări, Nume)
Nume
Pop Geta
Marin Dana
Selecţia
Aplicarea operatorului de selecţie asupra tabelului R generează tabelul T prezentând aceeaşi
structură cu R dar conţinând doar tuplurile ce corespund unei condiţii precizate:
T= Sel (R; <condiţie>)
Dacă se doresc informaţii despre studenţii căminişti având medii peste 8,50 operatorul de selecţie
va fi:
T = Sel (Căminişti; Media>8,50)
Tabelul Căminişti (R)
Matricola Nume Media
110 Dan Ion 8,75
111 Denilescu Ana 9,25
130 Ionescu Angela 8,15
127 Manea Ion 8,30
T = Sel (Căminişti; Media>8,50)
Matricola Nume Media
110 Dan Ion 8,75
111 Denilescu Ana 9,25
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
T= Join (Căminişti, CamereStudenţi; Căminişti. Matricola=CamereStudenţi.Matricola)
Matricola Nume Media Cămin Camera
110 Dan Ion 8,75 C1 1
111 Denilescu Ana 9,25 C2 10
Diviziunea
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