Текст
                    INTRODUCERE
Objective
♦	sa initieze cititorul in bazele de date relationale $i sa il convinga de necesitatea folosirii lor pentru stocarea datelor;
♦	sa prezinte sistemul de gestiune a bazelor de date, ca mecanism de administrare a datelor stocate in bazele de date, alaturi de principalele functii ale acestuia;
♦	sa ilustreze arhitectura unui sistem cu baza de date;
♦	sa prezinte succint notiuni legate de scheme, instante $i independent fizica, respectiv logica a datelor;
♦	sa arate principalele limbaje folosite pentru manipularea bazelor de date;
♦	sa prezinte principalele functii ale administratorului bazei de date;
♦	sa evidentieze succint felul in care functioneaza un sistem de gestiune a bazelor de date;
♦	sa initieze cititorul in proiectarea unei baze de date $i in folosirea eficienta a unui sistem de gestiune pentru bazele de date;
♦	sa contureze principalele directii de lucru in domeniu: proiectarea bazei de date, programarea bazei de date, respectiv dezvoltarea sistemelor de gestiune a bazelor de date.
2 INTRODUCERE
Continut
I
1.1	Nevoia de baze de date.............................................2
1.2	BD, SGBD, SBD - generalitati..........................................4
1.3	SGBD - о privire mai	detaliata...................................... 13
1.4	Administratorul BD.................................................. 17
1.5	Avantajele folosirii	SGBD........................................... 18
Sumar....................................................................20
Exercitii....................................................................................21
J
1.1	Nevoia de baze de date
Lumea in care traim devine din ce in ce mai complexa. tn fiecare zi, noi informatii se adauga la volumul uria$ de cuno^tinte existente deja. S-a estimat ca totalul informatiei disponibile, indiferent de domeniul in care se inscrie ea (tehnic, stiintific, cultural, comercial etc.), se dubleaza la fiecare 5 ani. Probabil ca, in acest moment, acest lucru se intimpla chiar mai repede. Acest imens volum de cuno^tinte face imposibil ca о persoana sa perceapa о anumita zona informationala, chiar mica, in intregime. Tn plus, cautarea unei informatii ре о anumita tema devine din ce in ce mai greu de realizat. De aceea sistemele informationale computerizate au devenit esentiale pentru foarte multe domenii de activitate. Ele simplified administrarea informatiilor $i permit extragerea datelor dorite in timp util. Tn centrul unui astfel de sistem informatic, sta de obicei cel putin о baza de date, care stocheaza $i manipuleaza aceste informatii.
Tnainte de introducerea bazelor de date comerciale, fiecare program de aplicatie i$i manipula propriile fi^iere, care aveau format $i structure proprii. Datele erau de multe ori stocate redundant in aceste fi^iere $i, ca urmare, era greu de asigurat consistent lor. Pentru a se putea raspunde intrebarilor utilizatorilor erau necesare multe cautari, in fi^iere diferite, acestea facindu-se inefficient de cele mai multe ori. Programele erau dependente de structure datelor stocate, astfel ca aceasta structure era greu de modificat. Tn plus, era foarte greu de realizat restaurarea datelor Tntr-o stare consistent, Tn cazul unor erori.
De$i acum bazele de date au devenit un element central Tn toate sistemele de stocare $i regasire a informatiei, initial ele au aparut ca urmare a nevoii de a rezolva probleme mai simple, cum ar fi (1) pastrarea informatiilor generale, respectiv despre angajati, dintr-o institute sau companie, (2) rezervarea biletelor de avion $i (3) pastrarea Tnregistrarilor financiare din sistemul bancar. Aplicatiile din aceste domenii de activitate
1.1 Nevoia de baze de date 3
atit de diferite, au totu$i cTteva caracteristici esentiale comune: manipularea de cantitati mari de date, a caror structure este relativ simpla, iar operatiile efectuate asupra acestor date sint de asemenea simple $i se executa de foarte multe ori. Operatiile care pot fi realizate asupra datelor din baza de date sTnt inserarea, modificarea, $tergerea sau cautarea unor date particulare. Cea mai complexa operatie este navigatia prin baza de date, aceasta fiind о cautare care se propaga in interiorul bazei de date pTna la gasirea informatiei dorite.
tn aplicatiile specifice diverselor organizatii, in bazele de date se pastreaza informatii despre angajati (nume, prenume, CNP, adresa, salariu, impozite etc.), despre departamente (nume, cod, manager, angajati etc.), despre produsele gestionate (nume, pret, furnizor etc.), despre clienti (nume, adresa, contracte etc.) $.a.m.d. Operatiile efectuate pot extrage sau modifica informatii (despre angajati, produse, contracte, facturi etc.), pot afi$a diverse rapoarte specifice $.a.m.d.
Tn sistemele de rezervare a biletelor de avion, datele pot fi rezervari particulare, facute de catre un pasager pentru un anumit zbor (ele pot include $i informatii cum ar fi preferinte pentru un anumit loc sau tipul meniului), informatii despre zboruri (cum ar fi aeroporturile sursa, respectiv destinatie, orele de sosire $i piecare) sau informatii despre bilete (pret, taxe de serviciu, disponibilitate, oferte). Cautari specifice pot cere zborurile dintr-o anume perioada de timp, pentru о sursa $i о destinatie date, alaturi de informatii despre pretul biletelor $i disponibilitatea acestora. Modificari frecvente ale datelor se fac pentru rezervarea unui anumit zbor pentru un anumit pasager, alaturi de asignarea unui loc $i, eventual, a unor preferinte pentru mincarea servita in avion. Datele din baza de date pot fi accesate simultan de catre mai multi agenti de rezervari, la diverse momente de timp. Acest lucru trebuie sa fie posibil asigurindu-se evitarea aparitiei de situatii nedorite, cum ar fi efectuarea a doua rezervari pe acela^i loc sau pierderea de date in cazul defectarii sistemului de rezervare (Churcher, 2007).
Tn sistemul bancar este necesara pastrarea de informatii despre clienti, conturi, imprumuturi, legaturile dintre conturi $i clientii autorizati pentru fiecare cont $.a.m.d. Cererile de informatii se fac de obicei pentru a afla starea unui cont sau situatia unui Tmprumut. Modificarile cele mai frecvente includ depunerea sau retragerea de diverse sume de bani dintr-un anumit cont. Ca $i Tn cazul sistemelor de rezervare a biletelor de avion, mai multi casieri sau clienti pot sa efectueze simultan diverse operatii asupra datelor din baza de date. Executia diverselor operatii asupra datelor trebuie sa fie sigura, adica trebuie evitate Tn totalitate situatii de pierdere a efectului unei tranzactii Tn sistem - de exemplu, daca un client a extras о suma de bani de la un ATM, banca trebuie sa Tnregistreze debitul, chiar daca are loc imediat extragerii о problema tehnica. Invers, nu este acceptabil ca banca sa
4 INTRODUCERE
inregistreze debitul $i sa nu livreze banii, chiar daca are loc о defectiune tehnica intre cele doua operatii (Shasha $i Bonnet, 2003).
Efectuarea operatiilor descrise mai sus nu este simpla $i faptul ca bazele de date comerciale ale momentului reu^esc sa le realizeze cu succes se datoreaza celor peste 50 de ani de evolutie a acestui domeniu, care continua sa progreseze $i astazi. Bazele de date ci^tiga importanta continuu, pe masura ce din ce in ce mai multe date sint disponibile online. Astazi, acest domeniu se extinde in directii foarte variate cum ar fi bazele de date multimedia, bibliotecile digitale, bazele de date ^tiintifice pentru proiecte ca descifrarea genomului uman sau data mining-ul $i consolidarea proceselor de luare a deciziilor pe baza datelor obtinute astfel.
1.2	BD, SGBD, SBD - generalitati
Prin Baza de Date (BD) se intelege un ansamblu de date structurate operationale inrudite, care descriu un anumit sistem - din punctul de vedere al functionalitatii $i evolutiei sale - $i care sint memorate, pentru un interval de timp (de ordinul anilor), pe un suport permanent de informatie. Aceste date pot fi consultate prin intermediul unui sistem de gestiune a bazelor de date, care extrage raspunsuri pentru intrebarile (interogarile) pe care un utilizator sau un program i le adreseaza, prin intermediul unui limbaj specific (limbaj de interogare). Pentru a fi cu adevarat folositoare, datele dintr-o baza de date trebuie sa fie precise, complete $i organizate in a$a fel incit sa poata fi regasite la nevoie, in formatul don't (Zaniolo, 1997).
Principalele activitati care se executa cu privire la о baza de date sint crearea, о singura data, la inceputul existentei sale $i exploatarea sa, pe tot parcursul timpului sau de viata. Pe parcursul exploatarii sale, asupra unei baze de date se pot executa diverse operatii (Elmasri and Navathe, 2007):
*	mcarcarea BD cu date, dupa crearea sa;
*	accesul la date, care se face fie pentru adresarea de interogari, fie pentru inserarea, $tergerea sau modificarea unor inregistrari;
x mtretinerea bazei de date, care se ocupa cu colectarea $i refolosirea spatiilor goale din BD;
x reorganizarea BD, care presupune restructurarea BD $i modificarea strategiilor de acces la date;
x asigurarea protectiei §i securitatii datelor.
1.2 BD, SGBD, SBD - generalitati 5
Prin Sistem de Gestiune a Bazelor de Date (SGBD) se intelege un sistem software complex, care are rolul de a permite administrarea unei baze de date. El controleaza stocarea, managementul $i regasirea datelor dintr-o baza de date. SGBD-urile sint pachete de programe foarte complicate, care difera de alte clase de sisteme man de programe (cum sint sistemele de operare $i compilatoarele), prin doua caracterisitici esentiale (Ullman, 1988):
♦	abilitatea de a administra date persistente, adica date care sint stocate in baza de date, independent de procesele care le folosesc, pentru о perioada lunga de timp, SGBD-ul avind rolul de a gestiona aceste date conform cu cerintele utilizatorilor bazei de date;
♦	gestionarea de cantitati foarte mari de date, in mod eficient ($i un sistem de fi^iere gestioneaza cantitati mari de date, dar nu furnizeaza in general acces rapid la portiuni arbitrare de date). Eficienta este asigurata cu ajutorul unor structuri de date specifice pentru acces rapid la datele stocate in baza de date.
tn afara de aceste doua caracteristici fundamentale, SGBD-urile comerciale au $i alte capabilitati cum ar fi:
♦	abilitatea de a permite interogarea datelor (de a adresa intrebari privitoare la datele stocate in baza de date) sau modificarea acestora prin inserare, $tergere sau actualizare;
♦	suport pentru cel putin un model de date (o abstractizare prin intermediul careia utilizatorii pot vizualiza datele);
♦	suport pentru anumite limbaje de nivel malt care permit utilizatorului sa defineasca structura datelor, sa le acceseze $i sa le manipuleze in functie de cerinte;
♦	gestiunea tranzactiilor, care sa asigure acces concurent la datele din baza de date pentru mai multi utilizatori la un moment dat, fara a permite ca actiunile unui utilizator sa afecteze alti utilizatori sau ca simultaneitatea acceselor sa corupa accidental datele;
♦	controlul accesului, care se refera la abilitatea de a limita accesul la date pentru utilizatori neautorizati;
♦	elasticitatea, care este abilitatea de a reveni din situatii de eroare, fara a pierde date.
tn lumea reala, exista lucruri despre care vrem sa stocam date $i intre aceste lucruri sint valabile diverse asocieri. Ideea fundamentala din fundalul tuturor bazelor de date este aceea ca utilizatorul, fie el о persoana sau un program de aplicatie, nu trebuie sa se preocupe cu felul in care datele sint stocate fizic pe un suport extern de informatie. El poate manipula aceste date in termenii legaturilor care exista intre ele. SGBD-ul este acela care va efectua
6 INTRODUCERE
cererile utilizatorilor asupra datelor stocate fizic. Pentru a putea realiza acest lucru, un sistem de gestiune a bazelor de date are in componenta urmatoarele elementele definitorii:
1.	un limbaj de definire a datelor, care permite definirea scheme] fiecarei baze de date gestionate de catre SGBD-ul respectiv, conform cu modelul sau de date (exemplul 1.1). Schema conceptuala descrie continutul bazei de date, in termenii modelului de date folosit. De-a lungul evolutiei bazelor de date, modelele de date au devenit din ce in ce mai potrivite pentru modelarea cit mai naturala a lumii reale. Cele mai cunoscute modele de date sint urmatoarele: ierarhic, retea, relational $i obiect. Dintre acestea, modelul relational este cel mai folosit model de date, fiind intilnit in majoritatea aplicatiilor actuate cu baze de date. Principalele SGBD-uri comerciale, Oracle, DB2/IBM, SQL/Server $i MySQL, folosesc acest model de date.
Limbajul de definire a datelor este un limbaj declarativ, fiind practic о notatie pentru descrierea tipurilor entitatilor, respectiv a legaturilor dintre acestea, in termenii modelului de date folosit de catre SGBD-ul folosit pentru dezvoltarea aplicatiei. Cel mai folosit astfel de limbaj este SQL (Structured Query Language), care a fost creat in anii ’70 $i standardizat in 1986, ca SQL-86. De atunci au aparut mai multe versiuni ale acestui standard SQL-89, SQL-92, SQL: 1999, SQL:2003, SQL:2006 ?i SQL:2008. tn plus, exista diverse implementari ale acestor versiuni standard, mai mult sau mai putin compatibile cu ele, care sint folosite de catre SGBD-urile comerciale.
I I Wft	Definirea unei tabele care descrie cursele pe care le efectueaza о companie de aviatie, intr-un limbaj de tip SQL, respectiv a unui index al curselor dupa numarul lor (pentru a eficientiza cautarile) CREATE TABLE CURSE( nr_cursa INTEGER,
| Exemplu	data CHAR(6), nrjocuri INTEGER,
I 1>1	aeroport_plecare CHAR(3), aeroport_sosire CHAR(3)); CREATE INDEX FOR CURSE ON nr_cursa;
2.	un limbaj de interogare (manipulare) a datelor, care ofera utilizatorilor posibilitatea de a adresa interogari (query) asupra datelor din baza de date (fie direct, fie prin intermediul programelor de aplicatie), de a analiza aceste date $i de a le actualiza (update), in
1.2 BD, SGBD, SBD - generalitati 7
masura in care drepturile de acces permit acest lucru. Actualizarea datelor se poate face in sensul inserarii sau $tergerii de inregistrari, precum $i al modificarii unor inregistrari deja introduse in baza de date.
Observatie importanta!
Practic, limbajul de interogare este о parte a limbajului de manipulare a datelor, dar de multe ori cei doi termeni se folosesc ca sinonime, din motive de convenient a exprimarii.
Cele mai cunoscute limbaje de interogare conceptuale sint calculul relational $i algebra relationala. Calculul relational este un limbaj formal de interogare bazat pe logica matematica, interogarile in acest limbaj avind un inteles intuitiv $i precis. Algebra relationala este un alt limbaj formal de interogare, bazat pe о colectie de operatori pentru manipularea relatiilor. Cele doua limbaje sint echivalente ca putere de exprimare a interogarilor (Ullman, 1988).
Atunci cind un utilizator adreseaza о interogare asupra bazei de date, el о va descrie in termenii calculului relational, datorita facilitatii de exprimare in acest limbaj. Pentru a solutiona interogarea respectiva, SGBD-ul va transforma enuntul respectiv in termenii algebrei relationale, care ofera practic о “reteta” (procedural de raspuns la interogarea respectiva. Acest mecanism este valabil pentru orice operatie de manipulare a datelor (Date, 2000).
Limbajul SQL, pe linga partea pentru definirea datelor, include $i о components pentru manipularea datelor, in sensul inserarii, $tergerii, cautarii (regasirii) sau modificarii datelor stocatein BD (exemplul 1.2).
I I Wft | Exemplu I 1>2	Exemple de comenzi care pot fi adresate prin intermediul unui limbaj de manipulare a datelor •	interogare: gase§te toate zborurile de la aeroportul OTP la JFK din data de 1 mai 2008; •	actualizare: decrementeaza cu 2 numarul de locuri de la cursa 321 din 30 martie 2008; •	inserare: adauga in baza de date cursa 753 cu 350 locuri de la JFK la OTP din 20 decembrie 2008.
8 INTRODUCERE
3.	un mecanism tranzactional care sa asigure proprietatile ACID, pentru a se putea asigura integritatea datelor, intr-un regim de acces concurent al utilizatorilor $i in pofida eventualelor erori, de orice fel ar fi ele. tn contextul bazelor de date, notiunea de tranzactie se refera la о singura operatie logica efectuata asupra datelor. Proprietatile ACID (Atomicitate, Consistenta, Izolare §i Durabilitate) garanteaza faptul ca fiecare tranzactie din baza de date se executa intr-un mod robust.
J
Un exemplu de tranzactie este transferul de bani dintr-un cont in altul, chiar daca presupune mai multe operatii cum ar fi debitarea unui cont $i creditarea celuilalt. Pentru a evita unele dintre consecintele nedorite ale accesului simultan la baza de date, SGBD-ul asigura suport pentru atomicitate (o tranzactie se executa complet sau deloc), consistenta (tranzactiile trebuie sa prezerve constringerile de consistenta ale bazei de date - de exemplu, soldul unui cont bancar nu poate fi negativ), izolare (tranzactiile se executa una cite una), $i durabilitate (abilitatea de recuperare din eroare fara a pierde date).
4.	structuri de date de acces rapid, numite indeed, la datele stocate pe un suport permanent de informatie. Folosirea acestora asigura regasirea eficienta a datelor, deci un timp scurt de raspuns la interogarile utilzatorilor.
Adesea manipularea unei baze de date este facuta prin intermediul unui program de aplicatie, care, de obicei, face mai mult decit sa manipuleze pur $i simplu baza de date - de exemplu, el poate realiza sarcini computationale ordinare. tn cazul unui program folosit de catre о companie de aviatie pentru rezervari, acesta nu trebuie doar sa extraga numarul de locuri disponibile la о anumita cursa, dar trebuie sa faca $i alte operatii, cum ar fi sa tipareasca biletul, sa dialogheze cu utilizatorul etc.
Astfel, programele care manipuleaza bazele de date sint, in mod obi^nuit, scrise intr-un limbaj gazda (host language), care este folosit pentru orice prelucrare, mai putin cele specifice bazei de date. Comenzile limbajului de manipulare a datelor vor fi invocate prin intermediul limbajului gazda, prin mecanisme puse la dispozitie de catre compilatorul acestuia. Aceste mecanisme asigura realizarea prelucrarilor specifice bazei de date in mod eficient, folosind optimizari specifice.
1.2 BD, SGBD, SBD - generalitati 9
Observatie importanta!
tn limbajele de programare obi'snuite, declarative $i enunturile executabile fac parte dintr-un limbaj unic;
Tn bazele de date, de obicei, cele doua functii, declarative $i computationala, sint separate in doua limbaje diferite, unui pentru definirea datelor, iar celalalt pentru manipularea (interogarea) lor;
Motivatia consta in faptul ca, in timp ce intr-un program obi'snuit datele exista numai cit timp ruleaza programul respectiv, intr-o baza de date ele persista $i pot fi declarate pentru о perioada lunga de timp.
Sistemele de gestiune a bazelor de date au un rol esential in crearea unor sisteme pe mai multe niveluri numite Sisteme cu Baza de Date (SBD), in a caror arhitectura se regasesc urmatoarele elemente: baza de date fizica (practic, un sir de biti), SGBD-ul insusi, care permite manipularea acesteia intr-o forma abstracts, ca baza de date conceptuala, respectiv clientii, fie ei utilizatori finali, programatori de aplicatie sau administrator!' ai bazei de date, dupa cum se poate vedea in Figura 1.1.
Figura 1.1 Arhitectura unui Sistem cu Baza de Date (SBD)
Utilizatorii finali sint cei care interactioneaza cu baza de date fie direct, prin intermediul unui limbaj de interogare, fie apelind diverse programe de aplicatie. Programatorii de aplicatie dezvolta programe sense intr-un limbaj gazda, care include si un limbaj de manipulare a datelor. Este de don't ca programele de aplicatie sa acceseze datele prin intermediul schemelor externe, specifice fiecarei clase de utilizatori, pentru a nu compromite independent datelor.
Administrator!'!' bazei de date sint aceia care au rolul de a gestiona si controla operatiile efectuate in sistemul de baza de date. Pe linga aceste clase de utilizatori mai exista un grup important de specialist!' implicati in bazele de date: dezvoltatorii SGBD-urilor, care construiesc sistemele de gestiune a bazelor de date, conform atit cu cerintele teoriei bazelor de date relationale, cit si cu invatamintele privind bunele practici in domeniu.
Sistemele cu baze de date au imbunatatit procesul de dezvoltare a aplicatiilor care manipulau volume man' de date, furnizind о perspective
10 INTRODUCERE
unica, uniforma, in termeni independent! de structure, a datelor. Integrarea aplicatiilor a devenit mai u$oara datorita facilitatilor de partajare controlata $i capabilitatilor de nivel inalt ale limbajelor folosite. Integritatea datelor este mai bine controlata, ea fiind realizata de catre SGBD $i nu de catre programele de aplicatie. tn plus, intr-un sistem de gestiune a bazelor de date, exista un set de rutine bine pus la punct pentru formatarea datelor $i accesul la ele. Se evita astfel ca fiecare aplicatie in parte, sa-$i foloseasca propriile rutine, ceea ce ar crea potential pentru aparitia erorilor.
Tntre calculator care lucreaza cu biti $i utilizator, care lucreaza cu diverse concepte specifice aplicatie! de baza de date in cauza (cum ar fi angajat, cont bancar sau bilet de avion) exista mai multe niveluri de abstractiune, dupa cum se poate observa in Figure 1.2 (Ullman, 1988).
Figure 1.2 Niveluri de abstractiune intr-un SBD
Fiecare nivel de asbtractiune este caracterizat de о schema corespunzatoare, care este definita cu ajutorul unui limbaj specific: schemele externe specifice fiecare! clase de utilizatori se definesc cu ajutorul limbajului de definire a datelor, la fel ca $i schema conceptuala a bazei de date. Schema fizica se descrie cu ajutorul comenzilor SQL puse la dispozitie de catre sistemul de gestiune a bazelor de date folosit, ca extensie la limbajul SQL standard. Informatiile despre cele trei scheme sint pastrate in cataloage sistem. Schema fizica arata in ce fel sint stocate relatiile din schema conceptuala pe dispozitive externe, cum ar fi discurile sau benzile magnetice. tn plus, ea descrie indec^ii, ni$te structuri de date auxiliare, folosite pentru a mari viteza operatiilor de regasire a datelor.
Tn figure de mai sus este ilustrat un concept important din bazele de date, $i anume cel referitor la vederile (views) pe care diverse clase de utilizatori le au asupra unor portiuni limitate din baza de date conceptuala. Fiecare astfel de clasa de utilizatori, atunci cind lucreaza cu baza de date, are acces numai la datele de care are nevoie $i pe care este indreptatita sa le vada, celelate date fiindu-i ascunse, dupa cum se poare vedea din exemplul
1.2 BD, SGBD, SBD - generalitati 11
prezentat in Figura 1.3. Schemele externe permit ca accesul la date sa fie particularizat $i autorizat la nivelul fiecarei clase de utilizatori. Fiecare baza de date are о singura schema fizica, о singura schema conceptuala, dar poate avea mai multe scheme externe, cite una pentru fiecare clasa de utilizatori in parte. Fiecare schema externa contine una sau mai multe vederi (subscheme) - acestea sint, conceptual, tot relatii, numai ca ele nu exista in baza de date ca atare, ci sint calculate pe baze relatiilor stocate in baza de date, conform cu cerintele utilizatorilor acesteia.
Pe linga posibilitatea folosirii vederilor, arhitectura pe trei niveluri a sistemului de baza de date mai are un beneficiu important: permite asigurarea independentei datelor, in sensul ca programele de aplicatie sint izolate fata de schimbarile asupra felului in care datele sint stocate $i structurate. Astfel, schema conceptuala poate fi modificata fara a afecta subschemele $i fara a necesita modificarea programelor de aplicatie (independenta logica a datelor). Mai mult, schema fizica poate fi schimbata fara a altera schema conceptuala $i fara a necesita redefinirea subschemelor (independenta fizica a datelor). Desigur ca trebuie luat in considerare faptul ca, de$i la nivelul schemelor in cauza lucrurile nu se schimba, performantele diverselor operatii sau aplicatii se pot modifica semnificativ prin schimbarea modului de stocare a datelor pe suportul extern de informatie.
Figura 1.3 Vedere pentru un operator de rezervare bilete avion
Vedere operator rezervare
Pentru a preciza structura informatiilor dintr-o baza de date se folose^te schema (conceptuala a) bazei de date, care descrie atit entitatile continute in baza de date, cit $i legaturile dintre acestea. Schema unei baze de date se reprezinta intr-un mod specific modelului de date folosit de catre baza de date respective. Fiecare SGBD furnizeaza cel putin un model de date pentru a permite utilizatorilor sa vada informatiile continute in baza de date nu ca pe un $ir de biti (ceea ce sint de fapt ©), ci intr-un mod mai u$or de inteles. Un model de date arata care sint, din punct de vedere logic, legaturile interne dintre date, fara a se preocupa de ceea ce se va face cu aceste date sau de cine urmeaza sa le manipuleze.
12 INTRODUCERE
Cel mai folosit model de date in bazele de date comerciale de azi este Modelul Relational (MR), care permite reprezentarea tuturor datelor din baza de date prin intermediul unor tabele bidimensionale, numite relatii. Legaturile dintre aceste date sint reprezentate cu ajutorul unor valori comune pentru doua sau mai multe tabele. tn termenii modelului relational, schema unei relatii contine numele relatiei, numele fiecarui atribut (cimp) al datelor reprezentate de relatia respective, respectiv tipul acestora, dar nu include datele propriu-zise. Acestea se regasesc pe liniile fiecarei tabele in parte $i constituie instanta relatiei respective. Datele aflate curent in baza de date constituie instanta curenta a bazei de date.
De exemplu, fie UniBD, о baza de date despre studentii unei universitati, care participa la diverse cursuri, acestea avind loc in anumite sali $i fiind sustinute de catre profesori titulari pentru disciplined respective. Unele dintre relatiile bazei de date ar putea fi cele din Figura 1.4.
Studenti >
nr_matricol	nume	prenume	grupa	adresa	telefon	virsta	media_g	...
2350	Marin	Ana	1234	xyz w	535923	18	8.50	
2351	Popa	Ion	1234	xz yw	412456	20	7.25	
2352	Radu	Ina	1234	zyxw	324211	19	9.50	
2353	Toma	Dorin	1235	xyzw	232421	22	9.00	
Cursuri
cod_curs	denumire	domeniul	credite
uni1234312	BD	fundamental	6
uni2351345	SO	fundamental	8
uni4235211	IA	specialitate	5
Titulari
marca	nume	prenume	functie J	catedra	adresa	telefon	salariu
123	Marinescu	Ina	prof	INF	zxy X	535923	2345
124	Popescu	Ion	conf	FIZ	xz xy	412456	2045
125	Radulescu	Ana	lector	MAT	yxwz	324211	1456
Sali	Preda
cod_sala	denumire	capacitate
S123	Neumann	36
A111	Pascal	150
A131	Newton	120
marca	cod_curs
123	uni1234312
123	uni2351345
125	uni4235211
Figura 1.4 Exemplu de instanta a unei baze de date
1.3 SGBD - о privire mai detaliata 13
Alegerea relatiilor $i a atributelor nu este intotdeauna evidenta $i procesul de gasire al celei mai bune scheme pentru о baza de date (proiectarea conceptuala a bazei de date), de$i este adesea laborios, este foarte bine pus la punct, ca urmare a evolutiei bazelor de date relationale, care se intinde peste mai mult de о jumatate de secol.
0 baza de date relationala folose^te ca unic element de reprezentare a datelor relatia (tabela). De$i nu este evident, aceasta organizare a datelor sub forma de tabele este doar perspective oferita utilizatorului asupra bazei de date, tn spatele acesteia se gasesc structuri de date complexe, care permit un raspuns rapid pentru о larga varietate de interogari. Totu$i, utilizatorul nu trebuie sa se preocupe cu aceste detain de stocare, el avind posibilitatea sa-$i exprime interogarile intr-un limbaj de nivel inalt.
Cel mai folosit astfel de limbaj este SQL, iar un exemplu clasic de interogare pentru baza de date prezentata in Figure 1.4 este urmatorul: SELECT nume, prenume, grupa FROM Student! WHERE media_g>=9.50.
1.3 SGBD - о privire mai detaliata
Un sistem de gestiune a bazelor de date accepta comenzi SQL (care fie sint generate de о larga varietate de interfete utilizator, fie sint incluse in programe scrise in limbaje gazda), genereaza planuri de evaluare a acestor interogari, executa aceste planuri asupra bazei de date, dupa care intoarce raspunsurile. Mecanismul este simplu: atunci cind un utilizator adreseaza о interogare, ea este analizata sintactic $i semantic, iar rezultatul este trimis catre modulul de optimizare a interogarilor, care folose^te informatii despre cum sint datele stocate pentru a produce un plan efficient pentru evaluarea interogarii respective. Acest plan de executie se reprezinta ca un arbore care contine in noduri operatori ai algebrei relationale (notatie procedurala pentru descrierea operatiilor asupra datelor) $i care este adnotat cu diverse informatii: metodele de acces folosite pentru accesul la date, constringerile privind ordinea operatiilor etc.
Din punctul de vedere al unui sistem de gestiune a bazelor de date, un filler este о colectie de pagini sau о colectie de inregistrari. Managerul de indeed, fi$iere §i inregistrari are rolul de a gasi datele de care este nevoie pentru a evalua raspunsul la interogare. Ele sint aduse in memorie cu ajutorul managerului de buffer-e. Managerul de stocare este cel care gestioneaza efectiv spatiul pe disc, astfel ca toate operatiile SGBD-ului cu discul sint efectuate de catre acesta.
14 INTRODUCERE
A$a dupa cum am vazut mai sus, SGBD-ul trebuie sa asigure controlul concurentei §i recuperarea din eroare. Pentru a realiza aceste sarcini SGBD-ul planifica adecvat cererile utilizatorilor $i mentine fi^iere jurnal in care sint pastrate toate schimbarile asupra bazei de date.
Planificarea acceselor concurente la date se face astfel incit fiecare utilizator ignora faptul ca $i alti utilizatori acceseaza simultan acelea^i date. Aceasta posibilitate e cruciala in folosirea bazelor de date, deoarece acestea sint de obicei folosite concurent de catre un numar considerabil de utilizatori, care, pur $i simplu, nu ar putea sa gestioneze schimbarile aduse bazei de date de catre ceilalti utilizatori care acceseaza simultan acelea^i date.
SGBD-ul este acela care permite utilizatorilor sa-$i realizeze prelucrarile sau programele ca $i cum ele ar urma sa fie executate in izolare, unui dupa altul, intr-o ordine aleasa de catre sistem. De exemplu, daca un program depune bani intr-un cont, iar altul extrage bani din acela^i cont, fiecare dintre programe ar putea fi executat primul - ceea ce conteaza insa este ca pa^ii lor sa nu se intreteasa intr-un fel care sa conduca la interference intre cele doua programe.
Alegerea ordinii de executie a diverselor tranzactii se bazeaza pe un protocol de locking, acesta fiind un set de reguli care, chiar $i in prezenta intreteserii executiilor pallor unor tranzactii, asigura faptul ca efectul final este acela^i cu cel obtinut daca tranzactiile respective ar fi executate intr-o ordine seriala. Un lock (zavor) este un mecanism folosit pentru a controla accesul la date. Managerul de tranzactii trebuie sa asigure serializabilitatea executiei tuturor tranzactiilor din sistem. Poate face acest lucru folosind locking-ul (acesta fiind cel mai folosit mecanism pentru controlul concurentei in SGBD-urile comerciale) sau alti algoritmi specific' (care folosesc marci de timp, versiuni etc.). Gestionarea lock-urilor asupra datelor din baza de date este realizata de catre managerul de lock-uri, care pastreaza toate lock-urile existente la un moment dat intr-o tabela de lock-uri.
Managerul de recuperare din eroare este responsabil cu mentinerea fi$ierelor jurnal $i cu refacerea bazei de date intr-o stare consistenta, dupa producerea unor erori. Tranzactiile pot fi intrerupte pe parcursul executiei lor dintr-o varietate de motive, de exemplu dintr-o eroare hardware. SGBD-ul trebuie sa asigure faptul ca schimbarile produse in baza de date, de catre tranzactii care nu s-au incheiat cu succes, sint inlaturate din aceasta. Pentru a putea face acest lucru SGBD-ul mentine fi^iere jurnal pentru toate schimbarile asupra datelor din baza de date. Fiecare operatie de scriere in baza de date, trebuie sa fie scrisa in jurnal, inainte ca ea sa se produca efectiv in baza de date (Write Ahead Log - WAL). Altfel, in cazul producerii unor erori, ea ar putea fi pierduta definitiv.
1.3 SGBD - о privire mai detaliata 15
Fi^ierele jurnal sint folosite $i pentru a stoca toate schimbarile produse in baza de date de catre tranzactiile incheiate cu succes. Avind toate aceste informatii, managerul de recuperare poate reface baza de date intr-o stare consistenta, in care efectele tranzactiilor incheiate cu succes inainte de incident, se vor regasi in totalitate in baza de date, iar efectele celor incomplete vor fi pur $i simplu “$terse” (undo). Pentru a reduce timpul necesar recuperarii din eroare, anumite informatii pot fi trimise periodic, la anumite momente de timp (checkpoints), pe disc.
tn continuare, sint prezentate citeva scenarii care pot avea loc in interiorul unui sistem cu baza de date (Figura 1.5):
1. Scenario care modified schema bazei de date - acesta poate fi executat numai de catre un administrator al bazei de date. Pentru baza de date din exemplul anterior, administratorul ar putea decide ca ar fi necesara introducerea unei relatii noi Frecventeaza(nr_matricol, cod_curs, nota_curs), care sa arate pentru fiecare student ce cursuri freeventeaza $i ce note are la cursurile respective. О constringere privitoare la date ar putea fi ca notele pot sa ia valori de la 1 la 10. Efectele comenzii date in limbajul de definire a datelor se vor resimti de la nivelul indec^ilor $i al fi^ierelor cu date, pina la cel al metadatelor (informatii despre schema bazei de date, structura datelor $i constringerile asupra acestora);
2. Scenario care nu modified schema bazei de date - majoritatea operatiilor efectuate asupra unei baze de date se inscriu in aceasta categorie. Ele fie extrag date din baza de date, fie modifica instanta curenta (continutul curent) a bazei de date, prin intermediul unor comenzi in limbajul de manipulare a datelor. Exemple in acest sens pot fi: introducerea de noi studenti in baza de date, modificarea mediei generale pentru cei care su sustinut examene de marire a unor note, afi^area tuturor studentilor cu note peste о anumita medie, listarea situatiei notelor pentru studentii inscri^i la un anumit curs etc.
Sistemele de gestiune a bazelor de date prezinta, de obicei, о arhitectura de tip client-server, avind componentele majore de baze de date pe server, clientul fiind folosit pentru a se interfata cu utilizatorul. Trebuie remarcata $i tendinta de a deplasa cit mai multe prelucrari in partea de client, pentru a evita „gituirea” serviciilor oferite de catre server, in situatiile accesarii concurente a bazei de date de catre un numar considerabil de utilizatori la un moment dat. О alta tendinta prive^te construirea de arhitecturi client-server pe mai multe niveluri, in care intre server $i client sint intercalate unui sau mai multe server-e de aplicatii, care gestioneaza conexiunile la baza de date, tranzactiile, autorizarea etc.
16 INTRODUCERE
1.4 Administratorul BD 17
1.4	Administratorul BD
О baza de date dezvoltata pentru nevoi personale este intretinuta de catre persoana in cauza, care a creat-o $i care о folose^te. tn schimb, bazele de date ale organizatiilor sau companiilor sint mentinute de catre о persoana sau un grup de persoane, care constituie Administratorul Bazei de Date (Database Administrator - DBA) $i care este responsabil cu controlul general al sistemului de baze de date. Principalele sarcini ale administratorului bazei de date sint dupa cum urmeaza (Kroenke, 2004):
>	proiectarea schemelor conceptual, fizice §i externe ale bazei de date - DBA stabile^te continutul bazei de date $i modurile in care acesta va fi folosit de catre utilizatori. Tn functie de aceste informatii, DBA va proiecta schema conceptuala (care arata ce relatii vor fi stocate) $i cea fizica (care precizeaza cum vor fi relatiile respective stocate). Administratorul BD trebuie sa stabileasca $i schemele externe, conform cu cerintele utilizatorilor;
>	securitate §i autorizare - DBA trebuie sa dezvolte mecanisme care sa nu permita accesul neautorizat la date, pe baza folosirii drepturilor de acces $i a procedurilor de validare;
>	asigurarea disponibilitatii datelor §i recuperarea din eroare -DBA este responsabil cu asigurarea continuitatii in folosirea continutului nealterat al bazei de date, in cazul producerii de erori de orice fel. SGBD ofera suport pentru acest lucru, dar DBA trebuie sa realizeze copii back up periodic, sa mentina fi^iere jurnal pentru a facilita recuperarea din eroare $i sa asigure refacerea bazei de date intr-o stare consistenta dupa producerea unor defectiuni;
>	adaptarea bazei de date §i fmbunatatirea performantelor sale (DB tunning) - tinind cont de faptul ca nevoile utilizatorilor evolueaza in timp, in functie de schimbarile care se produc in segmentul din lumea reala, modelat cu ajutorul bazei de date respective, DBA este responsabil pentru modificarea bazei de date, in particular a schemelor, pentru a asigura conformitatea cu noile cerinte ale utilizatorilor. Tot DBA va monitoriza permanent performantele bazei de date $i va face schimbarile necesare pentru imbunatatirea permanenta a acestora.
Pentru a-$i indeplini atributiile, administratorul bazei de date folose^te diverse utilitare $i instrumente cum ar fi (Ullman, 1988) (Chao, 2006):
	rutine de mcarcare pentru crearea primei versiuni a bazei de date;
18 INTRODUCERE
	rutine de reorganizare §i/sau compactare pentru reorganizarea bazei de date atunci cind apar modifcari in schema conceptuala a bazei de date deja incarcate, respectiv eliminarea spatiilor goale rezultate in urma $tergerii de inregistrari din baza de date;
	rutine de jurnalizare, pentru a putea reface baza de date dupa incidente, cum ar fi defectarea suportului de memorare sau defectarea intregului sistem de calcul in timpul executiei unei tranzactii. Aceste rutine folosesc fi^iere jurnal, care pentru fiecare tranzactie contin: actiunea tranzactiei, imaginea bazei de date inainte, respectiv dupa actualizarea datelor corespunzatoare tranzactiei respective;
	rutine de back up, care realizeaza periodic, la intervale stabilite de catre DBA, copii ale bazei de date pe banda magnetica. Daca apar incidente in perioada dintre realizarea a doua copii back up, atunci, folosind ultima copie a bazei de date $i jurnalele, se poate reface baza de date in starea in care se afla in momentul producerii incidentului (forward recovery). Invers, daca se dore^te aducerea bazei de date in starea de acum, sa zicem, doua saptamini $i nu exista decit copia acesteia de acum о saptamina $i jurnalele pe ultimele doua saptamini, atunci se deruleaza inapoi activitatile pina la starea dorita (backward recovery);
	rutine de analiza statistica, care permit inregistrarea datelor statistice privind functionarea $i performantele SBD;
	dictionarul datelor, care contine informatii despre structurile de memorare folosite $i despre schemele bazei de date, interpretarile datelor stocate, elemente privind securitatea $i integritatea datelor, statistic' etc.
1.5	Avantajele folosirii SGBD
Folosirea sistemelor de gestiune a bazelor de date pentru administrarea datelor are citeva avantaje importante, care sint mentionate mai jos:
•	independent datelor: programatorii de aplicatie nu trebuie sa se preocupe cu felul in care sint reprezentate $i stocate datele la nivel fizic, deoarece SGBD-ul furnizeaza о vedere abstracts a acestora, ascunzind aceste detain;
•	acces eficient la date: un SGBD utilizeaza о larga varietate de tehnici sofisticate pentru a stoca $i regasi in mod eficient datele aflate pe dispozitivele externe de stocare;
1.5 Avantajele folosirii SGBD 19
•	integritatea §i securitatea datelor: daca datele sint accesate intotdeauna prin intermediul SGBD-ului, atunci acesta poate impune respectarea restrictiilor de integritate. tn plus, se poate asigura controlul accesului, care stabile^te ce date sint vizibile pentru diverse clase de utlizatori prin intermediul vederilor (views);
•	administrarea datelor: cind mai multi utilizatori partajeaza datele din baza de date, centralizarea administrarii acestora, daca este facuta corespunzator, poate oferi avantaje semnificative. Administratorii bazei de date, care au о buna cunoa^tere a naturii datelor respective $i a felului in care diversele clase de utilizatori folosesc aceste date, le pot organiza astfel incit sa minimizeze redundantele $i sa eficientizeze regasirile pe baza unor mecanisme eficiente de stocare;
•	acces concurent §i recuperare din eroare: un SGBD planifica accesele concurente la baza de date, astfel incit utilizatorii pot lucra ca $i cum datele ar fi accesate de catre un singur utilizator la un moment dat. tn plus, SGBD-ul protejeaza utilizatorii de efectele erorilor de orice fel;
•	timp redus pentru dezvoltarea aplicatiilor: un SGBD ofera suport pentru functii importante care sint comune mai multor aplicatii care acceseaza datele din baza de date. Acest suport, conjugat cu interfetele de nivel inalt pentru accesul la date, conduce la dezvoltarea rapida a aplicatiilor de baze de date. Acestea sint mult mai robuste decit aplicatiile de sine statatoare, deoarece multe sarcini importante sint lasate spre rezolvare in seama SGBD-ului.
Date fiind toate aceste avantaje, se pune desigur intrebarea daca exista situatii in care folosirea unui SGBD nu este potrivita, iar raspunsul este afirmativ. Un SGBD este un sistem software complex, care are perfomante optime pentru anumite activitati, cum ar fi rezolvarea unor interogari complexe sau administrarea unor cereri concurente.
Totu$i exista aplicatii specializate pentru care performantele oferite de catre SGBD-uri nu sint suficiente. Un exemplu ar putea fi aplicatiile de timp real, in care trebuie respectate anumite constringeri de timp sau in care anumite operatii trebuie efectuate foarte eficient. tn aceste cazuri solutia consta in scrierea de programe specifice cu performante adaptate cerintelor particulare ale aplicatiei. Un alt exemplu se refera la aplicatiile care au nevoie sa manipuleze datele in moduli care nu sint suportate de catre limbajul de interogare, cum ar fi analiza flexibila a datelor de tip text, pe care un SGBD relational nu о poate face.
20 INTRODUCERE
Atunci cind contextul nu este ambiguu, cei trei termeni, baza de date, sistem de gestiune a bazelor de date §i sistem cu baza de date se folosesc interschimbabil.
Observatie importanta!
Sumar
Ф tn lumea reala, in organizatii sau companii, exista lucruri despre care este necesar sa stocam date $i intre care exista diverse legaturi. Pentru a putea vorbi despre о baza de date, trebuie sa stocam atit datele respective, cit $i legaturile dintre ele. Ideea centrala a unei baze de date, este aceea ca utilizatorul, fie el о persoana sau un program de aplicatie nu trebuie sa se preocupe de felul in care datele sint stocate fizic. El va adresa cereri de manipulare a datelor, in termenii legaturilor dintre date, iar SGBD-ul va fi acela care va prelucra cererile asupra bazei de date fizice.
Ф Un SGBD are abilitatea de a oferi acces eficient la cantitati mari de date, care persista un timp indelungat. El ofera suport atit pentru limbaje de interogare puternice, cit $i pentru tranzactii durabile, care se executa concurent, intr-o maniera care pare atomica $i independenta de celelalte tranzactii din sistem.
J
Ф Sistemele de fi^iere sint inadecvate pe post de sisteme cu baza de date, deoarece nu permit realizarea de cautari sau modificari eficiente pentru portiuni arbitrare de date, de interogari complexe, de buffering controlat, in memoria principals, al datelor folosite $i nici executia atomica sau independenta a tranzactiilor.
Ф Cea mai mare parte a sistemelor de baze de date actuate se bazeaza pe modelul relational al datelor, care organizeaza informatia in tabele (relatii). Limbajul cel mai folosit in aceste sisteme este SQL.
Ф SGBD-urile prezinta de obicei о arhitectura de tip client-server, avind componentele majore de baze de date pe server, clientul fiind folosit pentru a se interfata cu utilizatorul.
Ф Tendintele actuate privind sistemele cu baze de date includ atit suport pentru obiecte multimedia de foarte mari dimensiuni, cum sint inregistrarile video sau imaginile (baze de date multimedia), cit $i
Exerci^ii 21
integrarea informatiilor din diverse surse diferite intr-o baza de date unica (baze de date federative).
Ф Limbajele pentru baze de date permit definirea structurii datelor, folosind un limbaj pentru definirea datelor $i modificarea sau interogarea acestora, folosind facilitate limbajului pentru manipularea datelor.
Ф Componentele majore ale unui SGBD sint managerul de stocare, procesorul de interogari $i managerul de tranzactii.
Ф Managerul de stocare este responsabil pentru stocarea datelor, a metadatelor (informatii despre schema bazei de date, structura datelor, constringeri), a indec^ilor (structuri de date care accelereaza accesul la date), $i a fi^ierelor jurnal (log-uri, care memoreaza schimbarile facute asupra bazei de date). Toate aceste informatii sint pastrate pe un suport extern de informatie. Managerul de buffer-e administreaza bufferele, prin care sint aduse portiuni de date de pe disc in memoria principals.
Ф Procesorul de interogari analizeaza interogarile, le optimizeaza prin selectarea unui plan de interogare $i executa acest plan asupra datelor stocate in baza de date fizica.
Ф Managerul de tranzactii este responsabil cu jurnalizarea schimbarilor asupra bazei de date, aceasta stind la baza recuperarii datelor in cazul aparitiei erorilor $i pentru executia tranzactiilor cu respectarea proprietatilor ACID (atomicitate, consistent, izolare, durabilitate).
J Exercitii
1.1	De ce este mai bine sa folosim о baza de date, decit sa stocam datele pur $i simplu, in fi^iere oarecare?
1.2	Care sint problemele pentru rezolvarea carora au fost create bazele de date $i ce au ele in comun?
1.3	Ce se intelege prin baza de date? Care sint principalele operatii executate in legatura cu о baza de date?
1.4	Ce este un SGBD $i care sint proprietatile esentiale, respectiv comerciale, ale acestuia?
1.5	Care sint elementele definitorii ale unui SGBD?
22 INTRODUCERE
1.6	De ce este nevoie de mai multe limbaje atunci cind lucram cu о baza de date $i care sint acestea?
1.7	La ce se refera notiunea de tranzactie $i ce proprietati trebuie sa aiba о tranzactie pentru a se asigura consistent datelor?
1.8	Care sint componentele unui sistem cu baza de date? Dar avantajele folosirii sistemelor de baze de date?
1.9	Ce legatura este intre schemele bazei de date $i independent datelor?
1.10	Ce sint vederile $i ce rol au ele?
1.11	Care este cel mai folosit model de date in bazele de date de astazi? Dar cel mai folosit limbaj de interogare?
1.12	Explicati succint modul de functionare al unui SGBD.
1.13	Ce rol are administratorul bazei de date $i ce unelte are el la dispozitie pentru a-$i indeplini acest rol?
1.14	Care sint principalele avantaje ale folosirii SGBD-urilor?
1.15	Care sint tendintele curente privind sistemele cu baze de date?
Exercitii 23