Curs 1 – BAZE DE DATE
Bibliografie:
1. Gavin Powell, Beginning Database Design, Wiley Publishing, Inc. , 2006, www.wiley.com.
2. Muscalagiu Ionel, Petras Teodora - Baze de date. SGBD.-ul Visual Foxpro,
Editura Mirton, 2003.
3. Octavian Bâscă – Baze de date, Editura ALL, 1998.
4. Grupul BDASEIG- Baze de date. Fundamente teoretice şi practice, Editura
Infomega, 2002.
5. MSDN Microsoft – Documentaţia pentru Microsoft Access, Sql Server.
6. Codd, E.F. – A Relational Model of Data for Large Shared Data Banks–
Communication of ACM, 13,6, 1970.
STRUCTURA CURSULUI :
I. Fundamentele bazelor de date C1-C3.
II. Prezentarea unui SGBD –ului Microsoft Access + Visual Basic.
III. Servere pentru baze de date-: SQL Server.
Scop:- înţelegerea principalelor concepte legate de baze de date.
- proiectarea, operarea şi utilizarea bazelor de date.
- proiectarea şi realizarea aplicatiilor informatice folosind baze de date.
I . Introducere în baze de date. Concepte ale bazelor de date.
Cea mai importantă aplicaţie a calculatoarelor zilelor noastre o constituie memorarea şi
prelucrarea informaţiilor . Acest lucru se face folosind sisteme special dedicate prelucrării datelor
numite sisteme de gestiune a bazelor de date , sisteme ce operează cu baze de date . Ele
reprezintă un domeniu de interes foarte important din aria ştiinţei computerelor .
O bază de date este o colecţie de date păstrate în memoria externă , date păstrate şi accesate
prin intermediul computerelor şi a sistemelor de gestiune a bazelor de date. Bazele de date sunt
păstrate de diverse organizaţii sau întreprinderi în scopul regăsirii cât mai rapide a datelor, pentru
monitorizare, supervizare sau planificare .
O agendă de telefon este un bun exemplu de bază de date. Ea conţine date relevante pentru o
anumită persoană (numele, adresa, numărul de telefon). Culoarea telefonului unei persoane este o
informaţie irelevantă şi ea nu este conţinută în această bază de date. Foarte multe baze de date se
axează pe domeniul economic, dar există şi baze de date cu scopuri ştiinţifice, militare, etc. Pentru a
răspunde cerinţelor actuale, bazele de date conţin pe lângă date de tip text sau numeric şi alte tipuri
cum ar fi imaginile, sunetele şi elementele multimedia.
Operaţiile asupra bazelor de date se fac prin intermediul unui pachet de programe numit sistem
de gestiune al bazei de date ( SGBD) . Acest SGBD se ocupă de modelarea datelor ( alegerea
modelelor de memorie folosite) , permire accesarea datelor , regăsirea acestora .
Din punct de vedere al sistemului de operare baza de date este formată din fişiere diverse
(datele propriu-zise , fişiere auxiliare ).
Arhitectura unei baze de date
Datele din baza de date sunt păstrate conform unui model de organizare, utilizatorului fiindu-I
accesibile şi vizibile acele date conform unui model . Pentru a putea fi gestionate, datele unei b.d
sunt descrise cu ajutorul unui limbaj specializat ce foloseşte structuri de date . Astfel se obţin mai
multe structuri ale bazei de date
Un sistem de baze de date poate fi văzut (structurat )din patru puncte de vedere numite nivele:
conceptual, extern, logic şi fizic.
a. Nivelul conceptual
Este un nivel fundamental deoarece descrie într-un mod natural şi fără ambiguităţi sistemul
ce urmează a fi modelat. Dacă o persoană este familiară cu un anumit sistem, atunci ea poate realiza
designul acestuia fără a mai comunica cu alte persoane. În caz contrar, trebuie consultate mai multe
persoane care sunt familiare cu sistemul respectiv. Aşa cum oamenii comunică între ei cu ajutorul
cuvintelor, figurilor sau exemplelor, cel mai clar mod de a descrie un sistem este utilizarea unui
limbaj natural, a unor diagrame intuitive şi bineînţeles a exemplelor. Aceste principii conduc la
ideea de a exprima mai întâi un sistem la nivel conceptual, folosind concepte cu care oamenii pot
lucra foarte uşor. Prin urmare la acest nivel va fi realizată schema conceptuală ce reprezintă design-
ul general al sistemului bazei de date.
b.Nivelul extern
La nivel extern se specifică design-ul bazei de date perceput de un anumit utilizator sau
grup de utilizatori precum şi modul în care acest design este legat de schema conceptuală. Schema
externă reprezintă specificarea informaţiilor care pot fi văzute de către un utilizator şi modul în care
acestea sunt prezentate. În cele mai multe cazuri, un utilizator poate accesa doar o parte din
informaţii. De exemplu, este mult mai uşor ca utilizator să selecteze numai informaţii relevante
pentru acesta sau din motive de securitate să nu poată obţine anumite informaţii. Schema externă
este realizată astfel încât grupuri diferite de utilizatori să acceseze numai anumite subscheme ale
schemei conceptuale globale. Mai mult, utilizatori diferiţi pot dori ca aceiaşi informaţie să fie
reprezentată în moduri diferite (tabele, grafice) sau pot prefera anumite metode de operare sau
navigare în funcţie de nivelul de experienţă acumulat. Prin urmare la acest nivel se pot proiecta
diferite interfeţe cu utilizatorul.
c. Nivelul logic
Aşa cum am văzut până acum, schema conceptuală este creată pentru a comunica, adică
pentru a reprezenta sistemul ce urmează a fi proiectat într-un mod cât mai clar. Pentru a realiza o
implementare eficientă această schemă conceptuală trebuie convertită într-o structură de nivel
inferior. Prin urmare, pentru o anumită aplicaţie dată, se alege un model logic adecvat de organizare
a datelor (de exemplu, modelul relaţional, ierarhic, reţea, etc.). Se mai spune că schema conceptuală
este transformată într-o scemă logică exprimată cu ajutorul unor structuri abstracte de date şi
operaţii furnizate de modelul de date respectiv. De exemplu, pentru modelul relaţional faptele sunt
depozitate în tabele, constrângerile sunt exprimate cu ajutorul cheilor primare sau străine, etc.
d. Nivelul intern
După ce a fost realizată schema logică, aceasta trebuie proiectată prin intermediul unei
scheme interne într-un anumit SGBD (Sistem de Gestiune a Bazelor de Date). De exemplu, schema
relaţională poate fi implementată în Oracle, Access, Visual Foxpro sau DB2. Schema internă
include toate detaliile despre stocarea fizică şi structurile de acces utilizate în sistemul respectiv (de
exemplu, indecşi, clustere, etc.). Pentru acelaşi SGBD pot fi alese diferite structuri de stocare, după
cum şi pentru SGBD-uri diferite există structuri diferite. Prin urmare, pentru aceeaşi schemă logică
pot fi alese mai multe scheme interne.
În concluzie, unul dintre avantajele nivelului conceptual este acela de a fi cel mai stabil
dintre niveluri. El nu este practic afectat de schimbările interfeţelor cu utilizatorii, de structurile
fizice de stocare sau de tehnicile de accesare a datelor.
Aceste structuri de organizare implică şi nivelele de interacţiune dintre b.d. şi utilizatori :
- proiectantul b.d. : acesta vede necesităţile globale de date ale unei organizaţii în acel
moment sau în viitor . El este cel care realizează structura conceptuală a b.d. astfel încât să
nu depindă de partea de hardware sau de partea software .
- utilizatorul . Pe acesta nu-l interesează decât anumite aplicaţii (de exemplu cum să obţină
o listă cu anumite informaţii ) . De aceea acesta trebuie să cunoască structura logică a b.d.
- inginerul bazei de date : Acesta trebuie să se ocupe de întreţinerea eficientă a bazei de
date, pe baza hardware- şi software-lui existent . Din acest motiv el trebuie să cunoască
structura fizică ( sau internă ) a bazei de date .
Structura fizică
Structura logică Structura logică Structura logică
Structura virtuală
inginerul de sistem
administratorul bazei de date
programatorulul
II. MODELE DE DATE PENTRU BAZE DE DATE - MODELE
CONCEPTUALE
După cum am văzut , baza de date este descrisă conceptual de administratorul b.d. Pentru
aceasta, el apelează la un model de date cu ajutorul căruia poate structura informaţia din lumea
reală pe care doreşte să o păstreze . Modelul de date este de fapt un fel de ghid pentru
reprezentarea datelor. Acesta se referă doar la structura virtuală şi cea logică, nicidecum la
structura fizică ( care structură fizică depinde de sistemul de operare şi de S.G.B.D.-ul folosit).
Modelul de date folosit de un SGBD descrie modul de organizare a datelor în baza de date.
Modelul de date reprezintă un tipar după care este organizată din punct de vedere logic baza de
date. Modelul de date nu specifică datele, implementarea sau organizarea lor fizică, ci doar modul
lor de organizare logică. După modelul folosit, există mai multe categorii principale de SGBD-uri.
Există mai multe modele conceptuale principale folosite pentru modelarea conceptuală a
datelor, dintre acestea cele mai cunoscute fiind :
- modelul relaţional
- modelul reţea
- modelul ierarhic
- modelul obiect pe obiect.
Fiecare model captează într-un anumit fel proprietăţile lumii înconjurătoare pe care dorim să o
modelăm.
1. MODELUL RELAŢIONAL : introdus de Codd în 1970 .
Este un model simplu ce oferă independenţa datelor, model folosit astăzi în multe din SGBD-
urile existente pe piaţă .
O bază de date relaţională, bazată pe acest model relaţional, este formată din trei părţi principale:
- structura datelor, prin definirea unor domenii de valori şi a relaţiilor n –are cum ar fi
atributele, cheile primare. De fapt această parte se referă la tabelele de date, la legăturile
între tabele , etc.
- reguli de integritate care impun anumite restricţi, în scopul de a permite numai valori
corecte în relaţii .
- operatori de gestiune a bazei de date folosiţi pentru prelucrarea datelor .
Modelul relaţional se bazează pe noţiunea matematică de relaţie, aşa cum este definită în teoria
mulţimilor, şi anume ca o submulţime a produsului cartezian a unei liste finite de mulţimi numite
domenii :
Modelul relaţional al bazei de date constă dintr-o colecţie de relaţii ce variază în timp (relaţiile
se pot schimba prin operaţii de adăugare, ştergere şi actualizare ) . De obicei relaţiile sunt
reprezentate sub forma unor tabele în care fiecare rând reprezintă un tuplu (liniile se vor numi
înregistrări ) şi fiecare coloană reprezintă valorile tuplurilor dintr-un domeniu dat al produsului
cartezian ( sunt numite câmpuri, atribute ) . Din acest motiv , în modelele relaţionale , bazele de
date sunt de fapt tabele cu date , sau altfel zis sunt fişiere fizice ce au datele organizate logic sub
formă de tabele.
Exemplu: Să considerăm datele despre studenţi, date pe care dorim să le stocăm în computer .
O bază de date relaţională este de fapt un tabel de felul următor :
STUDENT [NRMATRICOL, NUME, ANNASTERE, ANSTUDIU]
STUDENT - numele tabelului sau numele bazei de date sau nume de entitate sau nume de relaţie
NRMATRICOL Nume Annaştere Anstudiu
1000 POPESCU ION 1978 4
1001 GEORGESCU MIHAI 1980 2
1002 IONESCU GEORGE 1979 2
Se observă că fiecare atribut ( coloană ) are nu nume . Atributele pot să apară în orice ordine în
relaţie . Elementele unei relaţii sunt liniile din tabel .
În reprezentarea sub formă de tabel a unei relaţii, coloanele şi , respectiv domeniile
corespunzătoare lor li se asociază nume intitulate atribute . Mulţimea numelor atributelor unei
relaţii se mai numeşte şi schemă relaţională ( sau familie de caracteristici). De fapt , în S.G.B.D. ,
schema relaţională reprezintă aşa numita structura logică a bazei de date, structură care se decide
de proiectatul bazei de date.
Cheie
antetul tabelului= familie de caracteristici
linia=realizare de entitate=înregistrare
domeniul caracteristicii anstudiu
nume coloană = caracteristica sau atributul entităţii
O coloană pentru care valorile corespunzătoare din oricare două tupluri nu coincid se
numeşte cheie . Pot exista mai multe chei . Dintre acestea de obicei se alege o cheie primară,
celelalete chei rămânând chei secundare . Pentru exemplul de mai sus , coloana (câmpul) nrmatricol
este o cheie.
Mulţimea tuturor schemelor relaţionale correspunzătoare unei aplicaţii se numeşte schema
bazei de date relaţionale, iar conţinutul curent al relaţiilor la un moment dat se numeşte de fapt
bază de date relaţională . De fapt, când vorbim de o bază de date concretă , va trebui să definim
structura bazei de date (adică capul de tabel) şi să depunem date în baza de date ( adică liniile din
tabel să le completăm).
O altă problemă importantă este cea a asocierilor între tabelele cu date . Aceste asocieri între
entităţi (după cum s-a văzut sunt trei tipuri 1-1, 1-n, m-n) sunt de fapt relaţii ( toate perechile de
realizări de entităţi cu valori din cele două entităţi aparţin de fapt produsului cartezian) . Mai mult
toate asocierile dintre două entităţi pot fi stocate în formă tabelară .
Exemplu : Entităţile Grupe studenţi şi Studenţi sunt în relaţia unu-la-mai-mulţi
1 n
X - Grupe studenţi Studenţi – Y Relaţia Grupe- Studenţi
CodG Nr.studenţi Nume Medie CodG Nume
EM101 40 Moriu 8 EM101 Moriu
UT201 20 Ionescu 9. EM101 Mihai
IE605 30 Mihai 5 UT201 Ionescu
Se observă că prin asociere se aduce în altă tabelă doar cheiele de legătură. SGBD-urile relaţionale
ştiu să creeze legături sau asocieri între bazele de date . Mai mult, se pot crea distinct noi tabele cu
asocierile create.
Cele mai cunoscute SGBD-uri sunt bazate pe modelul relaţional : ORACLE, INGRES, DB2,
FoxPro, Paradox , Acces, etc.
În concluzie , modelul relaţional este caraterizat prin unitatea şi simplitatea reprezentărilor ,
totul se reduce la tabele. De asemenea, modelul păstrează rigoarea fundamentării sale matematice,
fapt ce a permis definirea unor limbaje de nivel foarte înalt ( cum ar fi SQL) care utilizează
elemente de algebră relaţională. Totuşi, trebuie precizat faptul că , dacă din punct de vedere fizic,
coerenţa modelului relaţional este de nezdruncinat, din punct de vedere logic , coerenţa bazei de
date trebuie perfect stăpânită. Orice modificare , de exemplu , a cheii primare trebuie însoţită de
actualizări în toate tabelel corelate bazei de date .
2. MODELUL IERARHIC SAU ARBORESCENT
A fost primul model utilizat în exploatarea bazelor de date şi el presupune gruparea şi
ierarizarea entităţilor într-o structură de arbore. Acest lucru presupune că fiecare nod care nu este
rădăcină are un singur nod superior şi unul sau mai mulţi descendenţi.
Datele sunt organizate asemănător unui arbore . Utilizatorii văd datele ca şi arbori alcătuiţi din
tipuri de înregistrări interconectate .
Exemplu : - sistemul informatic cu toate datele tuturor facultăţilor unei universităţi poate
forma o structură arborescentă :
Se observă existenţa legăturilor de tipul 1 – N .
Baza de date presupune rezervarea de spaţiu pentru fiecare facultate , apoi pentru fiecare
facultate de reţin informaţiile de identificare ( cum ar fi numele , adresa , telefonul ) şi în continuare
se reţine spaţiu de stocare pentru grupele de studenţi , etc. Se observă faptul că datele sunt stocate
pe mediul extern în ordinea dată de parcurgerea în preordine a arborilor, ceea ce uşurează
determinarea informaţiilor pentru cererile care se referă la descendenţii unor noduri printr-un număr
mic de accese la mediul extern .
Cu toate că oferă posibilitatea unei căutări rapide , există câteva dezavantaje :
- anumite structuri nu sunt supuse ierahizării;
- actualizarea este dificilă, de exemplu ştergerea unui nod implică ştergerea tuturor
descendenţilor săi, iar adăugarea unui nod implică reorganizarea întregii baze de date.
Cel mai cunoscut sistem de gestiune a bazelor de date, de tip ierahic, este IMS (Information
Mangement System ), realizat de IBM pentru prelucrarea datelor din industria spaţială . Acest
SGBD are şi variantă mai recentă, îmbunătăţită,numită IMS/VS (Information Mangement System/
Virtual Storage) .
Facultatea
Grupe studenţi Obiecte de studiu Profesori Laboratoare
Studenţi Stat de funcţii (de încadrare)
3. MODELUL REŢEA .
Este un model general de organizare a datelor , în care nu există restricţia de la arbori în care un
nod trebuia să aibă un singur părinte (ca în cazul modelului arborescent)
Modelul reţea este cel mai apropiat de forma de reprezentare a bazelor de date sub forma
diagramelor entitate – relaţie. Baza de date poate fi reprezentată grafic printr-un graf orientat numit
de fapt reţea. Într-o reţea(adică într-un astfel de graf ) nodurile corespund entităţilor şi relaţiile sunt
de fapt arcele grafului,arce simple de la tată la fiu sau arce duble,dacă relaţia este de forma 1-n .
În acest model se folosesc noţiunile de înregistrare logică şi legătură . Înregistrarea se aseamănă
cu noţiunea de entitate de la cele relaţionale şi este de fapt un fişier logic care are drept câmpuri
atributele entităţii. În plus , apar câmpurile de legătură , o deosebire foarte mare faţă de modelul
relaţional. Mulţimea tuturor înregistrărilor de acelaşi tip au la bază un tip numit articol . Legătura
este o asociere între două articole, deci o legătură este de fapt o relaţie binară .
Exemplu : - acelaşi sistem informatic cu toate datele tuturor facultăţilor unei universităţi poate
fi reprezentat şi sub formă de reţea ( de fapt structura arborescentă este un caz particular al celei
reţea ) :
Se observă relaţiile 1 –n ( cele cu săgeată simplă ) şi relaţiile m–n ( cel cu săgeată dublă )
Ca şi modelul ierarhic , modelul reţea se bazează pe folosirea pointerilor pentru păstrarea
legăturilor. Dintre SGBD care folosesc modelul reţea amintim SGBD DBTG al firmei Data Base
Task Group şi SGBD Socrate, produs în România de firma ICL.
4. Modelul obiect pe obiect. Acesta este cel mai nou tip de modelare, încercând să integreze
principiile programării orientate pe obiect (Actor, Smalltalk, C++)şi ale bazelor de date. Bazele de
date relaţionale, cele mai populare în ultimul deceniu, ofereau prea puţin suport pentru tipurile
neconvenţionale de date. Necesitatea gestiunii obiectelor complexe (texte, grafice, hărţi, imagini,
sunete) şi a gestiunii obiectelor dinamice (programe, simulări) care nu pot fi realizate cu ajutorul
sistemelor relaţionale a condus la introducerea conceptului de obiect în cadrul sistemelor de
gestiune a bazelor de date
Facultăţi
Grupe studenţi Obiecte de studiu Profesori
Ca o concluzie generală legată de cele trei modele de baze de date , modelul relaţional se
impune prin simplitate, ceea ce permite folosirea lui şi de către nespecialişti cu un randament bun.
Trebuie să evidenţiem avantajele modelului relaţional faţă de celelalte modele : - structuri de date
simple, operatori simpli, independenţa fizică şi logică a datelor , uşurinţa dezvoltării aplicaţiilor,
definirea dinamică a datelor , posibilitatea dezvoltării bazelor de date distribuite. Mai mult, singura
structură folosită la bazele relaţionale este structura de tip tablou, structură foarte cunoscută în viaţa
obişnuită spre deosebire de structura de tip arbore sau de tip reţea (graf ) . Trebuie să remarcăm că
toate sistemele de baze de date distribuite sunt construite după principiul modelului relaţional .
SISTEME DE GESTIUNE A BAZELOR DE DATE (SGBD) .
1. DEFINIRE. FUNCŢII.
Accesul la baza de date se face cu ajutorul unui pachet de programe numit SGBD. Acesta
este un pachet de programe realizat de firme specializate, care realizează gestiunea şi prelucrarea
complexă a datelor , asigurând independenţa programelor de aplicaţie faţă de modul de structurare
a datelorşi un timp optim de răspuns la solicitările utilizatorilor în condiţii de multiacces.
S.G.B.D. trebuie să conţine rutine care să permită mai multe funcţii grupate , simplu , în
patru clase : definire, manipulare , administrare , protecţie .
Comunicarea cu bazele de date
Un SGBD nu este util dacă nu se poate comunica cu el, deci o primă funcţie a unui SGBD
este de a asigura accesul utilizatorului la baza de date. Prin aceasta se înţelege atât definirea
structurilor din baza de date cât şi manipularea şi interogarea (extragerea şi prelucrarea) datelor din
baza de date. În plus, utilizatorul trebuie să aibă la dispoziţie modalităţi de a controla integritatea şi
securitatea datelor. Cu alte cuvinte, comunicarea cu baza de date presupune următoarele patru
funcţiuni principale:
-Definirea structurilor de date. Un SGBD trebuie să furnizeze un Limbaj de Definire a
Datelor (Data Definition Language, DDL) care permite definirea (crearea, modificarea şi
distrugerea) schemei bazei de date, adică a structurilor de date folosite şi a legăturilor dintre
acestea.
Notă: Schema bazei de date, numită şi metadata, nu trebuie confundată cu datele
propriu-zise. Schema descrie modul de structurare al bazei da date, este definită de la început
şi se schimbă destul de puţin în timp. Datele, pe de altă parte, reprezintă instanţe ale schemei
bazei de date şi se modifică frecvent în timp. Aceste două concepte sunt analoage conceptelor
de tip şi variabilă dintr-un limbaj de programare.
Un SGBD trebuie să cuprindă un dicţionar de date (data dictionary) câteodată referit sub
denumirea de catalog al sistemului, care stochează date despre toate obiectele pe care le deţine,
cum ar fi numele obiectului, tipul, structura şi locaţia sa. Ciclul de viaţă al unei structuri de date, de
la crearea până la distrugerea ei, este înregistrat în dicţionarul de date, precum şi toate informaţiile
logice şi fizice despre aceasta.
-Manipularea datelor. Odată create structurile din baza de date, trebuie permisă inserarea
de date în aceasta, precum şi actualizarea sau ştergerea celor existente. Aceste operaţii sunt
efectuate de către Limbajul de Manipulare a Datelor (Data Manipulation Language, DML).
-Interogarea datelor. Un SGBD trebuie să permită extragerea, vizualizarea şi prelucrarea
(filtrarea, stocarea, etc.) datelor existente. Aceste operaţii se fac cu ajutorul unui limbaj numit
limbaj de interogare sau acces (Data Query Language, DQL).
-Controlul datelor. Limbajul de Control al Datelor (Data Control Language, DCL)
permite asigurarea securităţii şi confidenţialităţii datelor, salvarea datelor şi realizarea fizică a
modificărilor în baza de date, garantarea integrităţii şi consistenţei datelor în cazul manipulării
concurente.
Securitate datelor
Securitatea este o preocupare constantă în proiectarea şi dezvoltarea bazelor de date. În mod
uzual, nu se pun probleme legate de existenţa securităţii, ci mai de grabă de cât de mare va fi
aceasta. Un SGBD are în mod caracteristic mai multe nivele de securitate, pe lângă cele oferite de
sistemul de operare sau de reţea. De obicei, un SGBD deţine conturi pentru utilizatori, care
necesită o parolă de conectare ce trebuie autentificată pentru a accesa datele.
Un SGBD oferă de asemenea şi alte mecanisme cum ar fi grupurile, rolurile, privilegiile şi
profilurile care dau securităţii mai mult rafinament. Aceste nivele de securitate nu prevăd numai
constrângeri, ci şi stabilirea politicii de securitate. De exemplu, într-un sistem de electronic banking
o companie îşi poate deschide un cont la o bancă, iar accesul persoanelor din cadrul companiei
pentru consultarea contului va fi autorizat printr-un nume şi cel puţin o parolă. În plus, accesul
poate fi diferenţiat între diferiţi membri ai companiei, numai unora dintre ei fiindu-le permis să facă
şi tranzacţii asupra contului.
Menţinerea şi constrângerea integrităţii
Integritatea datelor se referă la consistenţa şi corectitudinea acestora. Pentru ca datele să fie
consistente, ele trebuie modelate şi implementate în acelaşi mod pentru toate circumstanţele. Pentru
ca datele să fie corecte, ele trebuie să fie exacte, precise şi să aibă înţeles. Prin integritate datele
devin informaţii. Condiţiile de integritate pe care trebuie să le satisfacă o bază de date pot fi atât
condiţii structurale, comune tuturor SGBD-urilor care folosesc un anumit model de date(de
exemplu, orice SGBD relaţional trebuie să impună respectarea integrităţii referenţiale), cât şi
condiţii de comportament, specifice fiecărei baze de date particulare (de exemplu, o coloană
”culoare” dintr-un tabel nu poate avea decât valorile roşu, albastru, verde, etc.).
Asigurarea accesului concurent la date
În plus, în cazul existenţei mai multor utilizatori, un SGBD trebuie să gestioneze accesul
concurent al acestora, menţinând în acelaşi timp integritatea bazei de date. Vom spune în acest caz
că SGBD-ul gestionează concurenţa bazei de date. Concurenţa poate fi definită ca simultaneitate în
sensul că doi sau mai mulţi utilizatori accesează aceleaşi date în aceiaşi perioadă de timp.
Gestionarea de către SGBD a concurenţei o întâlnim atunci când mai mult de o persoană trebuie să
acceseze aceiaşi bază de date, şi în mod special aceleaşi date, iar SGBD-ul trebuie să asigure într-un
fel sau altul că acest acces concurent este posibil. În plus, fiecare utilizator trebuie să aibă o
„vedere” consistentă asupra bazei de date, incluzând modificările vizibile făcute de către alţi
utilizatori, iar pe de altă parte SGBD-ul trebuie să împiedice modificări incorecte ale datelor, care
ar compromite integritatea acestora.
Metodele pe care un SGBD le foloseşte pentru a realiza acest lucru sunt în principiu destul
de simple, implementarea lor fiind însă destul de complexă. În esenţă, un SGBD asigură concurenţa
in modul următor. Când două sau mai multe persoane vor să vizualizeze aceleaşi date fără a le
modifica însă, totul este în ordine şi nu trebuie luate măsuri suplimentare. Când însă cel puţin o
persoană doreşte să facă modificări asupra unor date care în acelaşi timp sunt vizualizate de către
alte persoane, atunci SGBD-ul trebuie să stocheze mai multe copii ale datelor şi să transfere toate
modificările copiilor într-o singură versiune atunci când întreaga operaţiune este terminată.
Problema este ceva mai complicată în momentul când mai mulţi utilizatori încearcă să facă
modificări asupra aceloraşi date. Un SGBD rezolvă problema folosind blocarea (locking).
Utilizatorul care a efectuat primul modificarea datelor le blochează, ceilalţi utilizatori neputându-le
modifica până când operaţia efectuată de acesta nu este încheiată.
Tranzacţii
Întregul mecanism care gestionează concurenţa într-o bază de date are la bază conceptul de
tranzacţie. Tranzacţia este cea mai mică unitate de lucru. Aceasta înseamnă că nu poate exista nici
o operaţie mai mică decât o tranzacţie. Toate tranzacţiile trebuie să fie atomice, adică orice
tranzacţie individuală fie este complet executată, fie nu se execută deloc. Cu alte cuvinte, o
tranzacţie nu poate fi executată parţial. Când o tranzacţie este încheiată se spune că este
permanentizată (commited); când o tranzacţie nu poate fi încheiată şi este anulată se spune că este
derulată înapoi (rolled back).
Derularea înapoi a unei tranzacţii poate fi făcută explicit printr-o comandă a utilizatorului sau poate surveni în
mod neaşteptat, în cazul unei probleme în funcţionarea sistemului.
Un SGBD realizează recuperarea datelor (data recovery) utilizând tranzacţiile ca unităţi de
recuperare. În funcţie de modul în care se derulează o tranzacţie (este încheiată normal), fie pentru a
anula modificările făcute (dacă tranzacţia a fost abandonată la cerere sau întreruptă neaşteptat).
SGBD-ul păstrează o istorie a tranzacţiilor (transaction log) cu scopul de a derula înainte sau
înapoi. Derularea înapoi (roll back) a unei tranzacţii înseamnă anularea efectelor acesteia asupra
datelor. Derularea înainte (roll forward) a unei tranzacţii înseamnă operarea modificărilor
tranzacţiei asupra datelor. Atunci când efectele unei tranzacţii finalizate nu sunt transmise din
memorie pe disc, de exemplu din cauza unei probleme hardware sau software, SGBD-ul repetă
tranzacţia respectivă. Prin urmare, cheia pentru modul de recuperare a tranzacţiilor într-un SGBD
este faptul că tranzacţia trebuie să fie atomică şi poate fi efectuată, anulată sau repetată atunci când
este necesar.
Baze de date de distribuţie
Având în vedere rolul din ce în ce mai important al reţelelor şi proceselor distribuite în
informatică, sistemele de gestiune a bazelor de date trebuie să poată beneficia de avantajele
procesării şi stocării distribuite. Intuitiv, o bază de date distribuită este o mulţime de date corelate
logic, dar distribuite pe mai multe maşini interconectate printr-o reţea de comunicaţie. Din punct de
vedere al utilizatorului, o bază de date distribuită reprezintă o singură bază de date. Programul de
aplicaţie care manipulează baza de date poate avea acces la date rezidente pe mai multe maşini, fără
ca programatorul să cunoască localizarea acestor date (distribuirea lor fizică).
Bazele de date distribuite oferă utilizatorului o flexibilitate şi o securitate sporită faţă de o
singură bază de date. Să luăm, de exemplu, o companie care are sedii în mai multe oraşe ale lumii.
Dacă se optează pentru o arhitectură distribuită, fiecare dintre aceste locaţii îşi administrează
propria bază de date, pe care o accesează în mod frecvent, putând să aibă în acelaşi timp acces şi la
bazele de date ale celorlalte locaţii. Astfel distribuirea bazei de date duce la exploatarea mai
eficientă a bazei de date şi uşurează administrarea acesteia, care se face local. În plus, defectarea
unei baze de date locale nu afectează celelalte baze de date din reţea, cu alte cuvinte bazele de date
locale sunt protejate împotriva defecţiunilor din celelalte noduri ale reţelei.
În ce constau operaţiile asupra bazelor de date ?
a. Definirea bazei de date , care cuprinde :
- stabilirea structurii virtuale , precizându-se structurile de date necesare ( în funcţie de
modelul de date ce se alege )
- definirea structurilor logice
- informaţii necesare pentru stabilirea structurii fizice ( fişierele necesare , care date se
include în acestea )
Aceste lucruri se realizează cu ajutorul acelui Limbaj de Definire a Datelor, prin diferite comenzi
sau printr-o interfaţă cu utilizatorul ( pentru exemplele de la laborator comanda a fost comanda
Create ) .
b. Manipularea datelor din b.d. care cuprinde :
- introducerea ( adăugarea datelor ) în baza de date
- regăsirea ( extragerea ) datelor din baza de date .
- actualizarea ( ştergerea , modificarea ) datelor din baza de date .
Şi această funcţie este realizată fie cu ajutorul unui Limbaj de Manipulare a datelor sau cu
ajutorul unor comenzi . Comenzile şi programele pot să fi şi din alte medii diferite . De exemplu am
creat baza de date cu ajutorul mediului Visual Foxpro dar o accesăm cu ajutorul mediului Delphi
Pascal, Visual C , Builder C sau Visual Basic. .
c. Administrarea bazei de date . După crearea bd. aceasta trebuie folosită o anumită perioadă.
Prin urmare , trebuie să se facă un control al datelor şi al programelor care acesează baza de date .
Acest lucru cade în sarcina unei persoane numită administratorul bazei de date funcţiile lui
fiind cele de administrare a bazei de date :
1. organizarea bazei de date :
- definirea structurii b.d. şi a structurilor logice .
- stabilirea structurilor fizice a bazei de date .
- introducerea de date în b.d.
2. urmărirea funcţionării b.d. :
- păstrarea datelor corecte şi la zi
- asigurarea integrităţii şi confidenţialităţii datelor
- punerea la dispoziţia utilizatorilor a unor programe sau proceduri
3. reorganizarea b.d. :
- modificarea structurii virtuale şi a structurii fizice pentru optimizarea diferitelor funcţii
sau pentru a include noi date
- modificarea unor programe de acces
4. Protecţia datelor :
- confidenţialitatea adică protecţia împotriva accesului neautorizat asupra b.d.
- integritatea datelor împotriva alterării conţinutului datorită unor defecţiuni , erori de
programare .
- controlul redundanţei datelor, adică acelaşi date să fie păstrat de mai multe ori (se ajunge
şi la inconsistenţa datelor )
Ex.O b.d cu datele despre personalul unei instituţii . Nu toate persoanele din reţeaua de
calculatoare a instituţiei au dreptul să acceseze acele date . Pentru aceasta se folosesc parole
pentru diferenţierea utilizatorilor care au drept de acces , datele se păstreză codificat , se
folosesc firewall-uri pentru filtrarea utilizatorilor .
Trebuie să remarcăm şi utilizatorii care intervin în contact cu SGBD :
- utilizatorii informaticieni – programatorii , ei folosesc limbajul de manipulare şi cunosc
structura logică a datelor de care au nevoie cât şi toate facilităţile oferite de un anumit
SGBD.
- utilizatorii obişnuiţi , care fie folosesc produse program, fie folosesc comenzi simple pentru
accesarea şi folosirea datelor din b.d.
- administratorul bazei de date , aceea persoană care se ocupă de controlul şi întreţinerea
bazei de date ( mai ales pe sistemele mari ).
2. STRUCTURA ŞI FUNCŢIONAREA UNUI SGBD.
Complexitatea unui SGBD rezidă în dimensiunea sa , reflectată nu numai în multitudinea
instrucţiunilor sale dar şi în mulţimea componentelor, fiind prin complexitatea apropiat de un
sistem de operare . SGBD lucrează de fapt sub controlul sistemului de operare al calculatorului,
S.O. care se ocupă de suportul hard al bazei de date.
În mod obişnuit, un SGBD conţine următoarele module :
- monitor : cuprinde modul specializate pentru gestionarea bazei de date , a zonelor de
memorie internă, a reţelei de transmisie şi a mesajelor cu terminalele care accesează bazele
de date cât şi module pentru activarea proceselor, asigurarea legăturii cu sistemul de
operare .
- compilatoare : sunt module asociate limbajelor de descriere şi manipulare , având rol de
verificare şi translatare a comenzilor către sistemul de operare.
- monitoare de înlănţuire : asigură succesiunea fazelor distincte de prelucrare (execuţia
programelor sau execuţia directă a comenzilor).
- programe utilitare: editoare de texte pentru a putea scrie codul programelor, generatoare
de rapoarte, module de securitate(fişiere de urrmărire) , etc.
Din punct de vedere schematic, funcţionarea unui SGBD se poate reprezenta astfel :
S.G.B.D
BAZĂ DE DATE BAZĂ DE DATE
BAZĂ DE DATE BAZĂ DE DATE
DATE, STRUCTURI, BIBLIOTECI
S.O
BUFFERELE SISTEMULUI
PROGRAMECOMENZI
ADMINISTRATOR BAZE DE DATE
Utilizator 1 Imprimantă Utilizator 2
Cum decurge de fapt o sesiune a unui SGBD ? Utilizatorul cere SO. să lanseze în execuţie SGBD-
ul respectiv. Apoi, SO încarcă de pe disc programul monitoral SGBD –ului, care mai departe preia
cererile de la utilizatori.
3. CLASIFICAREA SGBD-URILOR ŞI A BAZELOR DE DATE .
În funcţie de modelul de date al bazei de date există SGBD-uri ierarhice, relaţionale (cele
mai multe ) şi reţea.
SGBD ierarhic. Modelul ierarhic stochează datele în structuri de tip arbore. El porneşte de
la ideea că intre date există o relaţie de tip părinte-copil. Nivelul cel mai de sus al arborelui,
cunoscut sub numele de rădăcină, poate avea orice număr de dependenţi. La rândul lor, aceştia pot
avea dependenţii lor şi aşa mai departe. În prezent, modelul ierarhic este depăşit şi nu se mai
foloseşte aproape deloc.
SGBD reţea. Modelul reţea stochează datele sub formă de înregistrări şi legături între
acestea. Acest model poate fi văzut ca o extindere a celui ierarhic, diferenţa între cele două fiind că,
în timp ce în modelul ierarhic o înregistrare copil are exact un părinte, în modelul reţea el poate
avea mai mulţi părinţi, eventual chiar nici unul. Modelul reţea permite reprezentarea de structuri de
date complexe dar este extrem de complicat. Din această cauză, el este în prezent puţin folosit.
SGBD relaţional (SGBDR). Modelul relaţional reprezintă probabil cea mai simplă
structură pe care o poate avea o bază de date. Într-un SGBD relaţional, datele sunt organizate în
tabele. Tabelele sunt formate din înregistrări care, la rândul lor sunt formate din câmpuri. Două sau
mai multe tabele pot fi legate prin intermediul unuia sau mai multor câmpuri. Bazele de date
relaţionale sunt foarte flexibile şi uşor de folosit, astfel încât au cunoscut o dezvoltare intensă în
ultimii douăzeci de ani şi sunt în prezent cele mai răspândite.
Prezentăm mai departe cele mai cunoscute SGBDR-uri relaţionale. Oracle. Este realizat de firma Oracle Corporation USA. Sistemul este complet
relational, robust, se bazeaza pe SQL standard extins. Arhitectura sistemului este client/server, permtand lucrul, cu obiecte şi distribuit. Are BD Internet şi modul de optimizare a regasirii. Ultima versiune este Oracle lOg.
DB2. Este realizat de firma IBM. Sistemul respecta teoria relationala, este robust şi se bazeaza pe SQL standard. Permite lucrul distribuit şi are modul de optimizare a regasirii.
Informix. Este realizat de firma Informix, respecta teoria relationala şi permite lucru distribuit.
Progress. Este realizat de firma Progress Software. Are limbaj propriu (Progress 4GL) dar suporta şi SQL. Ruleaza pe o gama larga de calculatoare sub diferite sisteme de operare.
SQL Server. Este realizat de firma Microsoft. Se bazeaza pe SQL şi ruleaza in arhitectura client/server.
Ingress II. Este realizat de firma Computer Associates. Este un SGBDR complet, implementeaza doua limbaj e relational e (Întai QUEL şi apoi SQL) şi este suportat de diferite sisteme de operare (Windows, UNIX). Lucreaza distribuit in arhitectura client/server, are extensie cu facilitati orientate obiect şi permite aplicatii de tip Internet. Organizarea fizica a tabelelor se face prin sistemul de operare.
Visual FoxPro. Este realizat de firma Microsoft. Are un limbaj procedural propiu foarte puternic, o extensie orientata obiect, programare vizuala şi nucleu extins de SQL.
Access. Este realizat de firma Microsoft. Se bazeaza pe SQL, are limbajul procedural gazda (Basic Access) şi instrumente de dezvoltare.
Paradox. Este realizat de firma Borland. Are limbaj procedural propiu (PAL) şi suporta SQL.
SGBD obiect pe obiect. Acesta este cel mai nou tip de SGBD, încercând să integreze
principiile programării orientate pe obiect (Actor, Smalltalk, C++)şi ale bazelor de date. Bazele de
date relaţionale, cele mai populare în ultimul deceniu, ofereau prea puţin suport pentru tipurile
neconvenţionale de date. Necesitatea gestiunii obiectelor complexe (texte, grafice, hărţi, imagini,
sunete) şi a gestiunii obiectelor dinamice (programe, simulări) care nu pot fi realizate cu ajutorul
sistemelor relaţionale a condus la introducerea conceptului de obiect în cadrul sistemelor de
gestiune a bazelor de date. În prezent tehnologia bazelor de date orientate pe obiect este încă la
început, neexistând un mod general de SGBD orientat pe obiect, astfel încât producătorii diferiţi
folosesc moduri de organizare oarecum diferite. O soluţie în acest sens este şi crearea unui model
relaţional care să suporte şi majoritatea principiilor modelării orientate pe obiect.
În funcţie de distribuirea resurselor soft şi hard SGBD-urile pot fi integrate şi distribuite .
SGBD-urile integrate sunt cele în care baza de date propriu-zisă şi suprafaţa utilizator
alcătuiesc un tot unitar . În baza de date – numită BACK – END sunt stocate fizic datele, în
timp ce prin intermediul suprafeţei utilizator (mai nou suprafaţa grafică utilizator) numită
FONT – END – datele sunt definite, manipulate şi controlate. Acest tip de organizare implică
existenţa bazei de date pe un singur calculator, datele fiind accesibile doar utilizatorului acelui PC.
Acesta era modul de lucru pentru SGBD-urile rulabil sub vechiul MS-DOS.
Bazele de date client–server (deci şi SGBD –urile client server) sunt disponibile în
reţelele client–server ( serverul–calculatorul central al reţelei şi clienţii sunt staţiile de lucru).
SGBD-ul lucrează astfel într-o reţea ( este vorba despre SGBD-urile actuale cum este şi Visual
Foxpro ) . În mod tipic , pe server se găsesc bazele de date iar pe clienţi se găsesc pachete de
programe ce comunică cu baza de date de pe server, pachete ce dispun de o interfaţă bazată pe un
limbaj de interogare numit SQL – Structured Query Language) . De exemplu , într-un supermarket
avem un server central în care sunt stocate bazele de date cu stocurile de produse. Pe fiecare staţie
de lucru din magazin ( unde se găsesc gestionarele ) există un program de stocuri ce examinează de
fiecare dată baza de date de pe server pentru a vedea dacă mai exitsă un produs sau pentru a
actualiza stocul existent ( în urma vânzării produsului respectiv) .
Aceste tipuri de SGBD oferă un mare avantaj şi a anume faptul că programele şi baza de
date pot fi folosite simultan . sau pe rând de mai mulţi utilizatori , fără a fi nevoie ca ei să posede pe
computerele lor o copie a bazei de date.
Bazele de date distribuite . Sunt folosite pentru organizaţiile economice mari care necesită
manipularea de baze de date mari sau multe. În astfel de situaţii baza de date este distribuită în baze
de date mai mici astfel încât aplicaţiile să aibă controlul doar a câtorva baze de date mici. O bază de
date distribuită este de fapt o colecţie de tabele şi relaţii stocate în nodurile reţelei. De fapt, baza de
date este integrată , dar fizic este distribuită pe mai multe sisteme de calcul. Cel mai cunoscut dintre
SGBD –urile ce lucrează cu baze de date distribuite este Oracle , folosit foarte mult pentru
gestionarea datelor din organizaţiile economice mari, pentrui bănci, etc. .
STRUCTURA FIZICĂ A BAZELOR DE DATE
Bazele de date sunt în general prea mari pentru a fi memorate în memoria internă a unui calculator. Din această cauză, ele sunt rezidente ( stocate ) în memoria externă a computerului ( de obicei pe discuri sau benzi magnetice ) .
Baza de date fizică este o colecţie de fişiere care implementează un anumit model de date
logice ( structura logică ) . Fişierele sunt integrate de către structura logică a bazei de date şi ele pot
comunica între ele. Baza de date este organizată sub formă de colecţii de înregistrări .
Înregistrarea este unitatea de bază de transfer de date între memoria externă şi memoria internă
( în care are loc prelucrarea ) . Mai mult, pentru reducerea numărului de accese la memoria
externă, mai multe înregistrări sunt citite sau scrise printr-un singur acces ( se grupează mai
multe înregistrări în blocuri ).
Fişierele care formează baza de date sunt de 2 tipuri :
fişiere de date : acestea conţin datele efective .
fişere index : acestea precizează modul de acces la fişiere (păstrează anumite date din
b. d. pentru a putea regăsi mai uşor datele ) .
Există ma multe tipuri de organizare a fişierelor :
- secvenţial : accesul la componentele fişierului se face în ordinea fizică a înregistrărilor (banda
magnetică este un exemplu de suport pentru memoria externă în care fişierele de acolo nu pot
fi accesate decât secvenţial )
- direct : accesul la înregistrări se poate face în orice ordine , ne putem poziţiona pe orice
înregistrare ( discul oferă un astfel de acces ) .
- secvenţial – indexată : înregistrările se accesează în ordinea dată de fişierul index (acesta este
parcurs secvenţial) . Acest mod de organizare permite parcurgerea într-o anumită ordine a
înregistrărilor ( nu chiar oricare ) .
Fişierele de date au trei structuri principale bazate pe faptul că înregistrările au pointeri
intrafişiere, pointeri interfişiere sau nu au pointeri. Un pointer este o adresă memorată într-o
înregistrare astfel încât se pot accesa ( regăsi ) înregistrările cu ajutorul acelor adrese . Valoarea
pointerului poate fi o adresă absolută din memorie sau o adresă relativă . Adresa absolută
(fizică) depinde de memoria fizică, pe când o adresă relativă indică locaţia înregistrării în cadrul
fişierului ( totuşi această adresă relativă trebuie să se traducă şi ea în final în adresa absolută
pentru a putea accesa înregistrarea fizică .
Obs. S.G.B.D. –ul FoxPro foloseşte baze de date care pot fi cu acces secvenţial sau cu acces
secvenţial – indexate . Trebuie subliniat faptul că SGBD. trebuie să ofere un serviciu de acces la
structurile de date fizice . Programatorul sau utilizatorul nu trebuie să-şi bată capul cu structura
fizică , acest lucru se realizează de SGBD. împreună cu sistemul de operare.
În funcţie de organizare se determină operaţiile necesare pentru a găsi înregistrările .
Evident, putem avea acces direct la înregistrări sau acces secvenţial la înregistrări . Înregistrările se
pot adăuga într-o ordine oarecare fie într-o ordine sortată în concordanţă cu valorile dintr-un
anumit câmp . Cel mai simplu şi cel mai folosit mod de organizare al colecţiei de înregistrări este
fişierul secvenţial . Înregistrările sunt scrise consecutiv în fişierul de date , în ordinea creării .
Organizarea ca fişier secvenţial – indexată combină tipurile de acces secvenţial şi relativ.
Înregistrările pot fi accesate în ambele moduri ( acesta există şi în FoxPro) . Bazele de date
indexate sunt de fapt formate din două fişiere : unul cu date şi unul index, cu pointeri la cel de
date. Putem avea mai multe fişiere index ( mai multe moduri de ordonare, de parcurgere ) sau
putem avea fişiere index multichei care conţin mai multe chei de indexare (mai multe criterii de
parcurgere ) .
În mod particular, SGBD-un Foxpro (Visual Foxpro-pentru platforme Windows) este
unul relaţional. Tabelele bazei de date poate fi organizată secvenţial sau secvenţial–indexat.
Baza de date este formată din mai multe tabele în care înregistrările sunt reprezentate de
linii, iar coloanele sunt câmpurile bazei de date . Capul de tabel fomează structura logică a
tabelului .
Exemplu o bază de date cursanţi :
Nume Prenume DataN Studii Venit
Popes
cu
Ion 11:11:1976 SUPERIOARE 12000000
Georgescu Mihai 02:12:1973 SUPERIOARE 23400000
…
…
Avrom Mihai 08:23:1964 MEDII 23000000
Acest tabel formează fişierul de date, fişier ce se salvează sub numele de cursanţi.dbf
(acesta va fi fişierul fizic care va conţine efectiv datele ) .
Structura tabelului dintr-o bază de date presupune precizarea fiecărui câmp component al
bazei de date împreună cu caracteristicile sale. Specificarea unui câmp presupune precizarea
numelui de identificare al câmpului ( în Foxpro numele simbolic este format din litere sau cifre de
lungime variabilă ), a tipului de date ( ce fel de date se vor stoca acolo ) şi a lungimii acestuia
( datele care se vor stoca în acel câmp căt de lungi vor fi ele) .
Înregistrările
Structura tabel. Cîmpurile tabel.