Extras din curs
Deosebim trei structuri fundamentale de baze de date. Două din ele, cea ierarhică şi ceea din tip reţea presupun un efort considerabil pentru proiectarea şi construirea bazelor de date, datorită faptului ca în definiţia acestora sunt încorporate toate legăturile dintre date. În afară de complexitatea proiectării, aceste structuri nu sunt prea flexibile, deoarece legăturile dintre date sunt stabilite definitiv în structura bazelor de date.
Într-un model ierarhic, toate datele trebuie dispuse într-o structură arborescentă, în care fiecare nod părinte poate avea mai mulţi copii, dar fiecare dintre copii are un singur părinte. Fiecare nivel posedă o relaţie de tip “una-la-mai-multe” cu următorul nivel inferior (după cum se vede în figura 1). Pe măsură ce coborâm nivele, o structură arborescentă trece de la general la particular. Deşi conceptual structura este foarte simplă,
ea solicită totuşi o organizare foarte precisă a datelor, într-o manieră fixă. Figura 1 prezintă un model ierarhic pentru bazele de date.
Figura 1. Un model ierarhic de bază de date
Un model de tip reţea este utilizat atunci când datele sunt dispuse într-o structură complexă în care un nod părinte poate avea mai mulţi copii, dar şi un nod copii poate avea mai mulţi părinţi (a se vedea figura 2). În general între un nod şi copiii săi există o relaţie de tip una-la mai-multe, dar nivelele nu mai sunt dispuse ierarhic, astfel încât informaţia nu trece obligatoriu de la general la particular pe măsura ce coborâm nivelele. Putem privi nivelele ca fiind separate, dar în acelaşi timp egal. Figura 2 prezintă un model reţea al unei baze de date.
Figura 2. Un model reţea de bază de date
Cea de a treia structură de date dezvoltată este cea relaţională. O astfel de structură este cel mai simplu de proiectat şi utilizat şi, totodată, este şi cea mai flexibilă. În bazele de date relaţionale, datele sunt organizate în tabele simple, bidimensionale, fără legături fixe. Relaţiile necesare sunt stabilite prin asocierea între ele a unor câmpuri cheie ala fiecărei tabele. Bazele de date relaţionale au însă dimensiuni mari, deoarece în fiecare tabelă există un câmp cheie suplimentar, redundant, pentru stabilirea unei relaţii, atunci când este necesar. Pentru că nu există relaţii fixe, pot fi scrise aplicaţii care să asocieze datele în moduri la care proiectantul iniţial nici nu sa gândit. Simplitatea şi flexibilitatea bazelor de date relaţionale reprezintă două mari avantaje ale acestei structuri, care compensează din plin dezavantajul dimensiunii crescute, astfel încât baza de date relaţională a devenit structură standard în acest domeniu.
Figura 3 prezintă un model relaţional de baza de date cu două tabele, care pot fi legate prin câmpul Număr # .
Ascensiunea limbajului SQL.
Existenţa unei metode standard de creare şi utilizare a bazelor de date permite utilizarea unui limbaj standard de accesare a datelor, un astfel de limbaj fiind SQL(Structured Query Language- limbaj de cereri structurat).
Proiectanţii limbajului SQL au considerat că beneficiarii acestui limbaj vor fi doar simpli utilizatori, nu şi specialişti în calculatoare. Cu aceasta idee în minte, ei au urmărit două obiective. SQL trebuia să poată fi folosit de către persoane care ştiau foarte puţin despre proiectarea şi implementarea bazelor de date şi trebuia să fie intuitiv şi natural în utilizare-asemănător limbii vorbire. Pentru a atinge acest scop, proiectanţii au creat un limbaj asemănător cu limba engleză, care este folosit pentru descrierea datelor dorite, nu a paşilor necesari obţinerii acestora.
SQL este un limbaj de cereri neprocedural
SQL nu este un limbaj procedural; utilizatorul nu trebuie să ştie neapărat cum sunt asociate bazele de date pentru a obţine listele cu datele necesare. El solicită datele dorite descriindu-le în sintaxa SQL corectă, iar SQL se îngrijeşte să le extragă. Teoretic, SQL ar trebui să fie intuitiv în utilizare, pentru că să vrea a fi asemănător limbii engleze, iar utilizatorul nu descrie paşii de obţinere a datei ci chiar data respectivă. Din acest motiv, utilizatorii SQL nu trebuie să înveţe prea multe despre sistemul de gestiune a bazelor de date pe care îl folosesc.
Următorul exemplu de instrucţie SQL deschide o tabelă numită CONTURI, apoi căuta în ea proiectele din departamentele Vânzării şi Marketing ale căror balanţe de conturi depăşesc 5d000$, după care ordonează departament într-o tabelă numită REZULTAT. Sintaxa instrucţiunilor SQL este explicată în capitolul 24.
SELECT Department, proiect from CONTURI into table REZULTAT
Where balanta > 5000 and (Department = ‘Vanzari’ or
Department = ‘Marketing’) order by Department
SQL este un limbaj de cereri neprocedural.
Datorită specializării sale, SQL este oarecum limitat în capacităţile ce nu privesc cererile. De exemplu, nu poate fi utilizat pentru a crea ecrane de introducere a datelor sau pentru a scrie rapoarte complete, sarcini care sunt lăsate în seama limbajului propriu al sistemului de gestiune a bazelor în date. Însă SQL este extrem de util, deoarece, pentru a extrage date dintr-o bază de date, el întrebuinţează relative puţine comenzi, într-un mod foarte flexibil. În parte, această flexibilitate este indusă de numărul mare de opţiuni din sintaxa comenzii. SQL s-a dorit a fi asemănător limbii engleze, dar, din cauza faptului că fiecare om abordează limba într-un mod diferit, iar calculatoarele necesită o anumită cantitate de informaţii exacte, sintaxa SQL este de fapt un compromise. Deşi limbajul este în general intuitive, simplitatea sintaxei sale se poate pierde în numărul mare de opţiuni disponibile.
Preview document
Conținut arhivă zip
- Baza de Date.doc