Documente Academic
Documente Profesional
Documente Cultură
De fapt, cei doi poli de care vorbim au o existen virtual, fiind utili mai degrab
din raiuni didactice & pedagogice.
2 Este adevrat c sunt bnci la care informaiile enumerate pot fi obinute doar printr-un efort
traumatizant, ns de dragul exemplului s ne imaginm c aa stau lucrurile.
SQL. Dialecte DB2, Oracle, PostgreSQL i SQL Server 9
dintre noi) este c informaiile afiate pe ecran sunt preluate dintr-un bazin de date
aflat ndrtul uneia sau mai multor cutii de tabl numite uneori calculatoare.
Figura 1.2. Schem ceva mai complicat (dar tot inexact) a aplicaiilor ce utilizeaz baze
de date
Dei, poate, mai impresionant, figura 1.2 conine destule inexactiti. Astfel,
pot exista i alte servere, n afara celor sugerate (de exemplu, servere pentru
aplicaii dedicate grupurilor de lucru (groupware), servere pentru gestiunea
documentelor etc.). De fapt, aplicaiile se descompun pe procese i servicii, fiecare
10 Capitolul 1
server furniznd unul sau mai multe servicii. Apoi, trebuie spus c baza de date
poate, la rndul su, s fie mprtiat pe mai multe servere (vorbim de baze de
date centralizate, distribuite, replicate). n al treilea rnd, nu toi utilizatorii sunt
de sex femeiesc i nu toate femeile din sistemul informatic al bncii au prul aten
& coad/coc.
Ei bine, din toat aceast figur, n cartea de fa ne intereseaz numai serverul
de baz de date. Mai mult (de fapt, mai puin !), dintre zecile de subiecte dedicate
serverelor de baze de date, noi ne vom ocupa doar de cteva: cum crem i folosim
o baz de date, i, mai ales, cum o stoarcem de informaii ?
Exist ns i persoane care folosesc baze de date fr a avea nevoie de
formulare, meniuri i alte elemente de interfa. Se poate crea i gestiona o baz de
date i n acest mod, mod cruia putem s-i spunem spartan (sau stoic). ns
asemenea gen de utilizatori trebuie s fie ai (sau mcar valei) n ale bazelor de
date. Or, o caracteristic esenial a bazelor de date este accesibilitatea. O baz de
date este cu att mai valoroas cu ct pot avea acces la informaiile sale ct mai
multe categorii de utilizatori (firete, fiecare cu drepturile i ndatoririle sale).
Data 1
Data 2 Raport 1
Data 3
FIIER 1 PRELUCRARE 1 Fiier de
Data 4 legturi
Data 2
Raport 4
Data 4
FIIER 2 PRELUCRARE 2 Raport 3
Data 5
Raport 2
Data 6
Data 1 Raport 5
FIIER 3 PRELUCRARE 3
Data 5
Data 7
Data 8
DATE FIIERE PRELUCRRI IEIRI
Aceste dezavantaje sunt mai mult dect convingtoare, nct v putei ntreba
dac au existat incontieni care s-i arunce banii pe apa... fiierelor independente.
Ei bine, o serie de aplicaii dezvoltate n anii '60 sau '70 au fost motenite i folosite
pn zilele noastre. De ce ? Datorit consistentelor sume investite, care au putut fi
amortizate (trecute pe costuri) doar n ani buni, chiar decenii. Un alt motiv a fost
ns funcionalitatea i viteza unor asemenea aplicaii, precum i experiena
acumulat de o larg cateogorie de profesioniti n ale IT-ului.
B A Z A DE D A T E
Fiier de date 1
Fiier de date n
colecie de date utilizat ntr-o organizaie, colecie care este automatizat, partajat,
definit riguros (formalizat) i controlat la nivel central4.
Atunci cnd vorbim despre o baz de date, trebuie avute n vedere dou
aspecte fundamentale aceste acesteia, schema i coninutul. Organizarea bazei de
date se reflect n schema sau structura sa, ce reprezint un ansamblu de
instrumente pentru descrierea datelor, a relaiilor dintre acestea, a semanticii lor i
a restriciilor la care sunt supuse. Ansamblul informaiilor stocate n baz la un
moment dat constituie coninutul sau instanierea sau realizarea acesteia. n timp
ce volumul prezint o evoluie spectaculoas n timp, schema unei baze rmne
relativ constant pe tot parcursul utilizrii acesteia. Corespunztor celor dou
aspecte complementare, schem/coninut, limbajele de programare dedicate
bazelor de date se mpart n limbaje de definire a datelor (DDL Data Definition
Language) i limbaje de manipulare a datelor (DML Data Manipulation
Language). Limbajele uzuale dedicate bazelor de date, cum este SQL-ul, prezint
opiuni att pentru declararea structurii, ct i pentru editarea coninutului i
consultarea/interogarea bazei.
4 [Everest1986], p.11
5 [G. Dodescu s.a. 1987], p. 511
SQL. Dialecte DB2, Oracle, PostgreSQL i SQL Server 15
Comenzi Comenzi
Aplicaie Aplicaie Aplicaie
autonome autonome
Interfa A Interfa B
dintre nivelele dintre nivelele
global i extern global i extern
SISTEM DE
Schema Imagine global GESTIUNE A
conceptual BAZEI
(nivel global)
(global) DE DATE
Definirea structurii
interne de stocare Baza de date memorat pe disc
(Schema intern)
6 Unii autori, precum [Atzeni s.a. 1999], adaug explicit drept caracteristic dimensiunea foarte
mare a bazei de date. n cea mai mare parte a lucrrilor dedicate bazele de date, aceast caracteristic
este una implicit.
7 Preluare din [Garcia-Molina s.a. 2002], p.11
18 Capitolul 1
Schema de mai sus este destul de impresionant (cel puin pentru mine), dei
este vorba de o reprezentare simplificat a ceea se ntmpl n inima SGBD-ului.
Sistemul nu scrie datele din memorie pe disc chiar imediat dup preluarea lor, ci
la anumite intervale de timp. De aceea, o component important, pe lng
gestionarul stocrii, este gestionarul buffer-elor. Accesul rapid la date este
imposibil fr indeci, astfel nct n figur apare gestionarul indecilor/fiiere-
lor/nregistrrilor. Arbitrajul mai multor utilizatori/module ce lucreaz simultan
cu baza de date, i, implicit, rezolvarea eventualelor blocaje, este asigurat de
modulul de control al simultaneitii (concurenei).
Pstrarea integritii i coerenei bazei de date presupune gruparea
operaiunilor n tranzacii pe principiul totul sau nimic. Cderea uneia dintre
operaiunile tranzaciei atrage n sine cderea ntregii tranzacii i revenirea (resta-
urarea) bazei de date pe starea dinaintea tranzaciei. Acest mecanism tranzaci-
SQL. Dialecte DB2, Oracle, PostgreSQL i SQL Server 19
Figura 1.6 pune n eviden cele dou compilatoare care corespund categoriilor
clasice de limbaje pentru lucrul cu bazele de date DDL (Data Definition
Language) care este un limbaj destinat gestionrii structurii bazei i DML (Data
Manipulation Language) care este un limbaj pentru gestionarea coninutului.
Arhitectura unei baze de date este specificat printr-o serie de definiii redactate
sub form de instruciuni scrise n limbajul de definire a datelor - DDL (Data
Definition Language). Execuia acestor definiii se materializeaz ntr-un ansamblu
de tabele, tabele virtuale, proceduri stocate, secvene etc. care sunt memorate ntr-
un fiier special, denumit dicionar (sau repertoar) de date. Un dicionar de date
conine deci metadate, adic date relative la alte date, fiind consultat naintea
oricrei citiri sau modificri a datelor din baz.
Principale funciuni ale DDL sunt:
- Descrierea logic a bazei de date i sub-schemelor proprii fiecrui grup de
utilizatori.
- Identificarea schemei, sub-schemelor i diverselor agregri de date.
- Specificarea fiierelor de date i a legturilor logice dintre acestea. Pe baza
acestor specificaii se poate realiza accesul la date chiar i n condiiile co-
existenei mai multor modele de organizare ntr-o aceeai BD.
- Definirea restriciilor semantice la care sunt supuse datele, restricii care se
refer la ansamblul valorilor permise fiecrei date, eventual formula de
calcul a unei date pe baza valorilor altor date. Respectarea acestor restricii
asigur coerena bazei.
- Definirea cheilor de acces rapid i a cheilor confideniale (parolelor).
- Definirea metodelor de exploatare a fiierelor ce vor fi utilizate n
aplicaii pentru selectarea nregistrrilor.
- Definirea procedurilor speciale de criptare, n vederea generrii cheilor de
acces.
- Definirea modalitilor de indexare i localizare ale entitilor.
- Determinarea tipului unei date, de baz sau derivat (calculat printr-o
expresie, pe baza valorilor altor date).
Dat fiind complexitatea structurilor de memorare i metodelor de acces la
acestea, la nivel elementar fiierele de date i dicionarul de date sunt accesibile
numai unui numr restrns de conaisseuri. n schimb, pentru descrierea schemei
BD, marea majoritate a limbajelor de interogare prezint comenzi adecvate, ce pot
fi utilizate i de non-informaticieni.
Cel mai important limbaj dedicat bazelor de date, SQL despre care vom
discuta ncepnd cu al treilea capitol, prezint comenzi DDL cum ar fi: CREATE
TABLE, ALTER TABLE, DROP TABLE, CREATE/ALTER/DROP VIEW, CREA-
TE/DROP INDEX, CREATE/DROP PROCEDURE, CREATE/DROP TRIGGER,
CREATE/DROP SEQUENCE etc.
20 Capitolul 1
Un element mai puin sugerat n figura 1.6 este grupul de comenzi prin care se
declar utilizatorii, grupurile de utilizatori (profilurile), precum i drepturile
fiecrui utilizator/profil la obiecte din schema bazei (tabele, tabele virtuale,
proceduri etc.). Aceste comenzi sunt arondate unui al treilea tip de limbaj destinat
bazelor de date DCL (Data Control Language). Dintre acestea, n standardul i
dialectele SQL cele mai frecvente sunt: CREATE USER, DROP USER,
CREATE/DROP ROLE, GRANT i REVOKE.
Cei mai numeroi utilizatori ai unei aplicaii ce folosesc baze de date sunt i cei
mai nevinovai n ale bazelor de date. Doamnele (i/sau domnioarele) din
figurile 1.1 i 1.2 au la dispoziie meniuri i formulare pentru a introduce
operaiuni, i rapoarte pentru a extrage informaiile necesare. Fluxurile dintre
ecran/claviatur/mouse i baza de date (locul unde se afl, de fapt, informaiile)
sunt invizibile acestor utilizatori.
Realizarea aplicaiilor care afieaz pe ecran meniurile, formularele i rapoartele
i care preiau datele introduse n baze cade n sarcina unei categorii profesionale
destul de pestrie denumit dezvoltatori de aplicaii cu baze de date. Zicem c
este pestri deoarece aici intr de-a valma: analiti i proiectani de sisteme
informaionale, proiectani de baze de date (pot fi aceeai sau diferii de anali-
tii/proiectanii de sisteme informaionale), programatori de interfee .NET, Java,
PHP etc., programatori de baze de date Oracle (PL/SQL), SQL Server (Transact-
SQL), PostgreSQL (plpgSQL), DB2 (SQL PL) etc., testeri s.a.m.d. Firete c, pentru
ceea ce discutm n cartea de fa, programatorii de baze de date reprezint o int
privilegiat.
Dezvoltatorii de aplicaii sunt implicai n fazele de realizare a aplicaiei
(proiectare, programare, implementare/instalare). Dup darea n folosin,
aplicaiile pot suferi modificri de mai mic sau mai mare amploare (datorate
schimbrilor din legislaia economic, regndirea modalitilor de derulare a unor
operaiuni n cadrul organizaiei), modificri ce cad tot n (co)responsabilitea
dezvoltatorilor. Dei sunt implicai n etapele de realizare a aplicaiei (unde pot
formula cerine, observaii i proteste legate de modul n care funcioneaz
modulele aplicaiei), utilizatorii cureni sunt destinatarii principali ai aplicaiei din
momentul instalrii (implementrii) acesteia, cei care o vor folosi pentru a
introduce operaiuni i a obine informaii/rapoarte.
ntre categoria nevinovailor i cea a dezvoltatorilor de aplicaii cu baze de
date exist multe nuane de utilizatori ce dispun de suficiente cunotine care s le
permit obinerea de informaii din baz sau chiar s modifice o serie de date
direct, fr mijlocirea aplicaiei. Prin urmare, exist utilizatori care nu sunt nici
administratori, nici dezvoltatori, dar care sunt n stare (i au drepturi suficiente) s
lanseze interogri (fraze SELECT), comenzi de editare a nregistrrilor
(INSERT/UPDATE/DELETE) sau s-i gestioneze propriile tabele, proceduri,
tabele virtuale etc. Stilul acesta direct cu baza seamn cu lucrul cu un ferstru
electric fr apratoare, deoarece chiar i n condiiile folosirii tranzaciilor, cteva
minute de neatenie pot antrena sptmni ntregi de migrene.
8 Acest procent a rmas valabil de la prima ediie a crii, nefiind exclus ca mrimea sa s fie, de
fapt, supraevaluat.
SQL. Dialecte DB2, Oracle, PostgreSQL i SQL Server 25
Figura 1.9. Tentativ euat de conectare la serverul Oracle (din SQL*Plus) 11g
M grbesc s diluez cteva dintre eventualele malentendu-uri. Mai nti,
SGBD-urile actuale nu au interfaa att de neguroas. Doar administratorii/dez-
voltatorii, din dorina de a impresiona, sau masochitii (din alte dorine) mai
lucreaz azi n mod text (uneori cele dou categorii se intersecteaz n bun
msur). Restul oamenilor nu-prea-pricepui i/sau normali prefer interfee mai
prietenoase, dup cum o s vedem nu peste mult timp. n al doilea rnd, o
conexiune la baza de date nu nseamn nicidecum accesul la toat baza de date, ci
doar la unele obiecte, pe care utilizatorul le poate vedea i, eventual, modifica.
26 Capitolul 1
Dei produs de firma Oracle, deci destinat cu precdere acestui server, SQL
Developer-ul este ceva mai ambiios, fiind n stare s realizeze conexiuni i cu baze
de date create cu Microsoft Access vezi figura 1.149. Exist i clieni
independeni, unii dedicai unui singur SGBD (ex. SQL Navigator produs de
Quest Software, SQLDetective produs de Conquest Software, PL/SQL Developer
produs de Allround Automations sunt destinate dezvoltrii de aplicaii cu baze de
date Oracle), iar alii asigur conexiunea la dou sau mai multe dintre SGBD-urile
actuale, cum ar fi TOAD (Quest Software).
Figura. 1.14. SQLDeveloper - un client pentru conectarea la baze de date Oracle sau
Access
Comenzi, scripturi i module de program
Odat conectat la baz, un utilizator poate creea, modifica sau terge obiecte
celebrele comenzi DDL (cum este CREATE TABLE n figura 1.10) -, sau
consulta/modifica coninutul bazei de date comenzi DML (cum sunt comenzile
INSERT i SELECT din figura 1.10). Ar mai fi i comenzile DCL prin care se
creeaz utilizatori /grupuri i se acord/revoc drepturi la obiecte din baz, dar
acestea sunt pentru administratori. Comenzile pot fi lansate direct, rnd pe rnd,
sau pot fi grupate n module de program. n aceast carte vom folosi, de cteva ori,
i termenul script i pe cel de program/modul.
9 Nu cunosc niciun utilizator de Access care s foloseasc SQL Developer, ns atunci cnd se
dorete trecerea bazei de date din Access n Oracle, probabil c SQL Developer-ul este de real folos.
30 Capitolul 1
Pentru lucrarea de fa, un script este un fiier (de obicei ASCII/text) care
adun, una dup alta, comenzi DDL i/sau DML (sau chiar DCL). Un script nu
conine structuri de control alternative sau repetitive (IF-uri, LOOP-uri, etc.),
structuri ce constituie substana unui modul de program. Un modul de program
este redactat ntr-un limbaj anume (C, Java, Basic, PL/SQL, T-SQL etc.), n timp ce
un script nu are nicio legtur cu un limbaj anume. Important este ca sintaxa
comenzilor din script s fie acceptat de SGBD-ul pe care se lanseaz n execuie.
Tranzacii
i acesta este un subiect asupra cruia vom reveni pe parcursul emisiunilor.
Pentru nceput, s convenim c o tranzacie este o succesiune de comenzi (de
obicei, DML) care funcioneaz pe principiul toi-pentru-unul, unul-pentru-toi
sau, mai bine zis, toul sau nimic. De exemplu, grupm ntr-o tranzacie 50 de
comenzi DML (inserare/modificare/tergere), comenzi lansate individual, dintr-
unul sau mai multe scripturi, i/sau module de program. 49 merg strun, dar a 50-
a genereaz o eroare n baza de date (o restricie nclcat, s zicem). Din cauza
acestei ultime comenzi buclucae, toate celelalte 49 de comenzi pot fi anulate, din
raiuni de solidaritate, printr-o comand speciala, ROLLBACK. Dac i a 50-a
funcioneaz cum trebuie, declarm printr-o alt comand COMMIT c
tranzacia s-a ncheiat cu succes, iar modificrile pot fi consemnate definitiv n
baz. Lucrul cu tranzacii este foarte important n pstrarea corectitudinii/integri-
tii bazei de date, dup cum vom vedea n cteva dintre capitolele viitoare.