Sunteți pe pagina 1din 28

1.

2 Sistem de baze de date


Sistemul de baze de date este, n esen, un sistem computerizat de pstrare a
nregistrrilor; cu alte cuvinte, este un sistem computerizat, al crui scop general este s
stocheze informaiile i s permit utilizatorilor s consulte i s actualizeze aceste informaii,
la cerere. Informaiile respective pot fi de orice natur care prezint semnificaie pentru
persoana sau organizaia respectiv.
Un sistem de baze de date presupune patru componente principale: date, hardware,
software i utilizatori.
Datele Pentru a simplifica lucrurile, este convenabil s pornim de la ipoteza c
totalitatea datelor din sistem sunt stocate ntr-o singur baz de date.
Datele din baza de date vor fi att integrate ct i partajate.
Prin noiunea de integrat ne referim la faptul c baza de date poate fi considerat ca o
unificare a mai multor fiiere, redundana acestor fiiere fiind parial sau total eliminat.
Prin partajare nelegem c baza de date poate fi partajat ntre diveri utilizatori, n
sensul c fiecare dintre acetia poate avea acces la aceleai date, posibil chiar n acelai
moment (acces concurent).
Hardware Componentele hardware ale sistemului sunt formate din:
Volumele de stocare secundare care sunt utilizate pentru a pstra datele, mpreun cu
dispozitivele de I/O asociate, canalele I/O etc.
Procesorul hardware i memoria principal asociat, care sunt utilizate pentru a susine
execuia software-ului sistemului de baze de date.
Software
ntre baza de date fizic i utilizatorii sistemului exist un strat de software, cunoscut
sub diverse denumiri, printre care cea de manager al bazei de date, server al bazei de date
sau, cea mai uzual, sistem de gestiune a bazelor de date (SGBD). Toate cererile de acces
ale utilizatorilor la baza de date sunt tratate de ctre SGBD; facilitile pentru adugarea i
tergerea fiierelor (sau tabelelor), consultarea datelor i actualizarea acestora .a.m.d. sunt
puse la dispoziie de ctre SGBD. Astfel, o funcie general oferit de ctre SGBD const n
ecranarea detaliilor la nivel de hardware fa de utilizatorii bazei de date.
SGBD poate fi considerat cea mai important component software din sistemul
general, dar nu este singura. Celelalte cuprind programele utilitare, instrumentele pentru
dezvoltarea aplicaiilor, programele de asisten n design, editoarele de rapoarte i managerul
de tranzacii sau monitorul TP.
Utilizatorii
Exist trei clase de utilizatori:
Programatorii de aplicaii, responsabili de scrierea programelor de aplicaii pentru
bazele de date, ntr-un limbaj de programare oarecare. Astfel de programe acceseaz baza de
date prin lansarea unei cereri adecvate ctre SGBD. Programele n sine pot fi aplicaii
convenionale sau pot fi aplicaii on-line, al cror scop este de a permite utilizatorului final s
acceseze interactiv baza de date.
Utilizatorii finali, care acceseaz interactiv baza de date. Un utilizator final poate
accesa baza de date prin intermediul uneia dintre aplicaiile on-line sau poate utiliza o

1
interfa furnizat ca parte component a sistemului. Astfel de interfee oferite de productori
sunt accesate, desigur, i prin intermediul aplicaiilor on-line, dar aceste aplicaii sunt
ncorporate, nu scrise de utilizator.
Administratorul bazei de date (DBA)

1.3 Baz de date


Baza de date este o colecie de date persistente, care sunt folosite de aplicaii ale unei
anumite ntreprinderi.
Spunem c datele din baza de date persist deoarece, dup ce au fost acceptate
prima dat de ctre SGBD pentru introducerea n baza de date, ele pot fi terse din baza de
date numai printr-o cerere explicit adresat SGBD -ului, nu ca un simplu efect secundar.
Entiti i relaii
Termenul de entitate este utilizat n mod curent n domeniul bazelor de date pentru a
desemna orice obiect distinct care va fi reprezentat n baza de date.
n afar de entitile de baz, vor exista i relaii, care s coreleze aceste entiti de
baz.
Relaiile fac parte din date n aceeai msur ca i entitile de baz. Prin urmare,
trebuie reprezentate n baza de date, la fel ca i entitile de baz.
Entitile de baz uneori i relaiile au proprieti, corespunztoare informaiilor pe
care dorim s le nregistrm despre ele.

1.4 Necesitatea bazelor de date


Avantajele utilizrii unui sistem de date, fa de metodele tradiionale de inere a
evidenei, bazate pe hrtii:
Datele sunt compacte: nu sunt necesare fiiere de hrtie, posibil voluminoase.
Viteza: calculatorul poate consulta i poate actualiza datele mult mai rapid dect un
om. n particular, la interogrile ad-hoc, inspirate de moment, se poate primi un rspuns rapid,
fr a consuma timp cu cutrile manuale sau vizuale.
Este eliminat o mare parte din munca plicticoas de ntreinere manual a fiierelor.
Sarcinile mecanice sunt ntotdeauna ndeplinite mai bine de ctre calculatoare.
Actualitatea: informaiile exacte, la zi, sunt disponibile, la cerere, n orice moment.
Protecia: datele pot fi mai bine protejate fa de pierderea accidental sau accesul
ilegal.
Sistemul de baze de date ofer ntreprinderii un control centralizat asupra datelor
sale.

Administrarea datelor i administrarea bazelor de date


Conceptul de control centralizat implic faptul c, n cadrul ntreprinderii, va exista o
anumit persoan care deine aceast responsabilitate central n ceea ce privete datele;
aceast persoan este administratorul de date (DA). Cum datele reprezint unul dintre
bunurile cele mai de pre ale ntreprinderii, este absolut necesar s existe o persoan care
nelege aceste date i necesitile ntreprinderii referitoare la ele, la un nivel superior din
administraie. Administratorul de date este aceast persoan. Astfel, sarcina administratorului
de date este de a decide mai nti ce date trebuie stocate n baza de date i de a stabili regulile
de ntreinere i de tratare a acestor date, dup ce sunt stocate.
Administratorul de date este un manager, nu un tehnician. Persoana cu pregtire
tehnic, responsabil de implementarea deciziilor administratorului de date este

2
administratorul bazei de date (DBA). Spre deosebire de administratorul de date,
administratorul bazei de date este un profesionist n domeniul IT. Sarcina DBA este de a crea
baza de date real i de a implementa elementele tehnice de control necesare pentru a impune
diversele decizii luate de DA. De asemenea DBA este responsabil de asigurarea funcionrii
sistemului la performanele adecvate i cu furnizarea unei diversiti de alte servicii tehnice.
Avantajele ce decurg din noiunea de control centralizat:
Datele pot fi partajate Partajarea nu nseamn doar c aplicaiile pot partaja datele
din baza de date, ci i faptul c este posibil realizarea unor aplicaii noi care s opereze cu
datele respective. Cu alte cuvinte, este posibil s fie satisfcute cerinele noilor aplicaii
privind datele, fr a fi necesar adugarea unor date noi n baza de date.
Redundana poate fi redus n sistemele care nu au baze de date, fiecare aplicaie
are propriile sale fiiere particulare. Adeseori, acest fapt conduce la o redundan
considerabil a datelor stocate, ceea ce duce la o risip a spaiului de stocare.
Inconsistenele pot fi evitate (ntr-o anumit msur) - De fapt, acesta este un
corolar al punctului anterior. S presupunem c un anumit fapt despre lumea real s zicem,
faptul c angajatul A3 lucreaz n departamentul D8 este reprezentat prin dou intrri
diferite n baza de date. De asemenea, s presupunem c sistemul SGBD nu cunoate
existena acestui duplicat (adic redundana nu este controlat). Atunci, pot exista situaii n
care cele dou intrri nu vor corespunde, i anume, cnd una dintre ele a fost actualizat iar
cealalt nu. n astfel de situaii se spune c baza de date este inconsistent. Desigur c dac
faptul dat este reprezentat printr-o singur intrare (adic dac este eliminat redundana)
atunci o astfel de inconsisten nu poate aprea. Dac redundana nu este eliminat dar este
controlat (prin semnalarea ei in SGBD), atunci SGBD-ul poate garanta c baza de date nu
este niciodat inconsistent, asigurnd c orice modificare efectuat n una dintre cele dou
intrri este aplicat automat i celeilalte. Acest proces este cunoscut sub denumirea de
propagarea actualizrilor.
Poate fi suport pentru tranzacii
Tranzacia este o unitate de lucru logic care, de regul presupune mai multe operaii n
baza de date n particular o serie de operaii de actualizare.
Integritatea poate fi meninut
Problema integritii const n a garanta (att ct este posibil) c datele din baza de date
sunt corecte. Controlul centralizat al bazei de date poate contribui la evitarea acestui tip de
probleme n msura n care pot fi evitate prin faptul c permite administratorului de date
s defineasc, iar administratorului DBA s implementeze constrngeri de integritate, care
vor fi verificate ori de cte ori este efectuat o operaie de actualizare.
Securitatea poate fi ntrit
Administratorul DBA poate garanta c singura modalitate de a accesa baza de date este
prin intermediul canalelor adecvate; poate defini constrngeri de securitate, care sunt
verificate ori de cte ori se ncearc accesarea datelor sensibile. Pot fi definite constrngeri
diferite pentru fiecare tip de acces (consultare, adugare, tergere etc.) la fiecare informaie
din baza de date. Observm totui c, n absena unor astfel de constrngeri, securitatea
datelor poate fi expus, n realitate, unui risc mai mare dect n cazul unui sistem de fiiere
tradiional, adic ntr-un sens natura centralizat a sistemului de baze de date necesit i
existena unui sistem de securitate de calitate.
Cerinele conflictuale pot fi echilibrate
Cunoscnd cerinele generale ale ntreprinderii, administratorul DBA poate structura
sistemul astfel nct s ofere serviciile generale care sunt cele mai bune pentru ntreprinderea
respectiv.
Standardele pot fi impuse

3
Deinnd controlul centralizat al bazei de date, DBA poate garanta c, n reprezentarea
datelor, sunt avute n vedere toate standardele aplicabile, printre care oricare sau toate
standardele urmtoare: departamentale, de instalare, generale, industriale, naionale i
internaionale.
Majoritatea avantajelor enumerate mai sus sunt, probabil, destul de evidente. Totui,
mai exist nc un aspect care s-ar putea s nu fie att de evident ce trebuie adugat n
list: realizarea independenei de date.

1.5 Independena de date


Exist dou tipuri de independen de date: fizic i logic
Independena de date poate fi neleas cel mai uor avnd n vedere mai nti opusul s.
Aplicaiile implementate pe sistemele mai vechi tind s fie dependente de date. Aceasta
nseamn c modul n care datele sunt reprezentate fizic n mediile de stocare i tehnicile de
accesare a acestora sunt dictate de ctre cerinele aplicaiei avute n vedere; mai mult,
nseamn c recunoaterea acelei implementri fizice i acelei tehnici de acces sunt nglobate
n codul aplicaiei. Este imposibil s se schimbe reprezentarea fizic i tehnicile de acces, fr
a afecta aplicaia.
Administratorul DBA trebuie s beneficieze de libertatea de a schimba reprezentarea
fizic i tehnica de acces, ca rspuns la modificarea cerinelor, fr a fi necesar s modifice
aplicaiile existente. Dac aplicaiile sunt dependente de date, atunci aceste modificri vor
necesita, de regul, modificri corespunztoare n codurile programelor, prin aceasta oblignd
programatorul la un efort care, altfel, ar fi consumat pentru crearea unor aplicaii noi.
Realizarea independenei de date constituie un obiectiv major al sistemelor de baze de
date. Independena de date poate fi definit ca imunitatea aplicaiilor fa de schimbarea
reprezentrii fizice i tehnicii de acces ceea ce implic, desigur, c aplicaiile respective nu
depind de vreo anumit reprezentare fizic sau tehnic de acces.
ntr-un sens larg, cmpul stocat este cea mai mic unitate de date stocate. Baza de
date conine multe apariii (sau instane) ale fiecruia dintre tipurile de cmpuri stocate. De
exemplu, o baz de date care conine informaii despre diverse tipuri de componente ar putea
cuprinde un cmp stocat numit numrul componentei i, astfel, va exista cte o apariie a
acestui cmp stocat pentru fiecare fel de component.
O nregistrare stocat este o colecie de cmpuri stocate corelate. Din nou, putem
face diferena ntre tip i apariie. Apariia (sau instana) unei nregistrri stocate este format
dintr-un grup de apariii corelate ale cmpului stocat.
Un fiier stocat reprezint colecia tuturor apariiilor unui tip de nregistrare stocat,
existente n mod curent.
n sistemele fr baze de date, este normal situaia n care orice nregistrare logic, aa
cum este vzut de o aplicaie oarecare, este identic cu o nregistrare stocat
corespunztoare. Dar nu aceasta este neaprat situaia n cazul unui sistem de baze de date,
deoarece s-ar putea s fie necesar ca DBA s poat efectua modificri n reprezentarea stocat
a datelor adic n cmpurile, nregistrrile i fiierele stocate n timp ce datele, aa cum
sunt vzute de aplicaie, nu se modific.
1.6 Sistemele relaionale i alte tipuri de sisteme
Un sistem relaional este acela n care:
1. Datele sunt percepute de ctre utilizator sub forma unor tabele
2. Operatorii pui la dispoziia utilizatorilor (de exemplu) pentru consultare sunt operatori
care genereaz tabele noi din cele vechi.
Aceste sisteme se numesc relaionale deoarece, n esena, relaia este doar un termen
matematic pentru tabel.

4
ntr-un sistem relaional, utilizatorul vede datele sub forma unor tabele. Spre deosebire de
acesta, ntr-un sistem nerelaional utilizatorul vede alte structuri de date. La rndul lor, aceste
structuri necesit ali operatori care s le manipuleze. Spre deosebire de acestea, o important
caracteristic distinctiv a sistemelor relaionale este faptul c nu presupun nici un fel de
pointeri.
Sistemele de baze de date pot fi clasificate convenabil dup structurile de date i
operatorii pe care i prezint utilizatorilor. Conform acestei scheme, sistemele cele mai vechi
(pre - relaionale) pot fi clasificate n trei categorii mari, i anume: sisteme de liste inversate,
ierarhice i de tip reea
Cap. 2 ARHITECTURA SISTEMELOR DE BAZE DE DATE

Arhitectura este divizat pe trei niveluri numite: nivel intern, extern, respectiv conceptual.
Nivelul extern
Nivelul extern este nivelul utilizatorului individual. Utilizatorul poate fi ori un programator
de aplicaii, ori un utilizator final cu orice nivel de detaliere.
Fiecare utilizator are la dispoziie un limbaj:
Pentru programatorul de aplicaii, acesta va fi un limbaj de programare convenional
Pentru utilizatorul final, limbajul va fi ori unul de interogare, ori unul specializat
adaptat cerinelor utilizatorului respectiv.
Aceste limbaje vor include un sublimbaj de date adic un subset al limbajului complet
care se refer n mod specific la obiectele i operaiile bazei de date. Sublimbajul de date
(DSL) se spune c este nglobat n limbajul gazd corespunztor. Limbajul gazd este
responsabil de furnizarea unor faciliti care nu sunt specifice bazelor de date, cum ar fi
variabilele locale, operaiile de calcul, logica ramificat .a.m.d. Unul dintre sublimbajele de
date care este acceptat de ctre aproape toate sistemele curente, este SQL. Majoritatea acestor
sisteme permit ca limbajul SQL s fie folosit att interactiv ct i nglobat n alte limbaje, cum
ar fi Java, C++ etc.
n principiu, orice sublimbaj de date este, de fapt, o combinaie a cel puin dou
limbaje subordonate: un limbaj de definire a datelor (DDL), care susine definirea sau
declararea obiectelor bazei de date i un limbaj de manipulare a datelor (DML), care susine
prelucrarea sau manipularea acestor obiecte.
Utilizatorul individual va fi interesat numai de o poriune din ntreaga baz de date;
mai mult chiar, vederea utilizatorului asupra poriunii respective va fi, n general, oarecum
abstract, comparativ cu modul n care datele sunt stocate fizic. Termenul folosit pentru
vederea unui utilizator individual este vedere extern. Astfel, vederea extern reprezint
coninutul bazei de date vzut de un anumit utilizator.
n general, vederea extern este format din mai multe apariii ale tipurilor de
nregistrri externe.
Fiecare vedere extern este definit prin intermediul unei scheme externe, care este
format din definiiile fiecruia dintre tipurile de nregistrri externe din vederea extern
respectiv. Schema extern este scris folosind un limbaj de definire a datelor numit DDL
limbaj DDL extern.

Nivelul conceptual
Vederea conceptual este o reprezentare a ntregului coninut informaional al bazei de
date, ntr-o form care este oarecum abstract comparativ cu modul n care datele sunt stocate
fizic. De asemenea, n general, va fi substanial diferit de modul n care sunt vizualizate

5
datele de ctre utilizatori. n mare, intenia este ca vederea conceptual s fie o vedere a
datelor aa cum sunt ele n realitate, nu a modului n care sunt forai s le vad utilizatorii.
Vederea conceptual este format din mai multe nregistrri conceptuale. De
exemplu, poate fi format dintr-o colecie de apariii ale nregistrrilor despre departamente,
plus o colecie a nregistrrilor despre angajai, plus o colecie a nregistrrilor despre
componente etc. nregistrarea conceptual nu este neaprat identic nici cu nregistrarea
extern, pe de o parte, nici cu nregistrarea stocat, pe de alt parte.
Vederea conceptual este definit prin intermediul schemei conceptuale, care include
definiiile fiecruia dintre diversele tipuri de nregistrri conceptuale. Schema conceptual
este scris folosind un alt limbaj de definire a datelor, limbajul DDL conceptual. Dac se are
n vedere realizarea independenei fizice de date, atunci aceste definiii DDL conceptuale nu
trebuie s implice deloc vreo consideraie privind reprezentarea fizic sau tehnica de acces
acestea trebuie s fie numai definiii ale coninutului informaional. Astfel, n schema
conceptual nu trebuie s existe vreo referire la reprezentarea cmpului stocat, secvena
nregistrrii stocate, indexuri, pointeri sau alte detalii privind memoria i accesul. Dac
schema conceptual este cu adevrat independent de date n acest mod, atunci schemele
externe vor fi, de asemenea, independente de date.
Astfel, vederea conceptual reprezint o vedere a ntregului coninut al bazei de date
iar schema conceptual este o definiie a acestei vederi. Definiiile din schema conceptual
sunt create astfel nct s includ mult mai multe caracteristici suplimentare, cum ar fi
restriciile de securitate i de integritate.

Nivelul intern
Al treilea nivel al arhitecturii este cel intern. Vederea intern este o reprezentare de
nivel inferior a ntregii baze de date; este format din mai multe nregistrri interne
(nregistrri stocate).
Vederea intern este descris prin intermediul schemei interne, care nu numai c
definete diversele tipuri de nregistrri stocate, ci specific i indexurile care exist, modul n
care sunt reprezentate cmpurile stocate, n ce secven fizic se afl nregistrrile stocate etc.
aceast schem intern este scris folosind un alt limbaj de definire a datelor: limbajul DDL
intern.

Corespondene
n afar de cele trei niveluri, arhitectura presupune anumite corespondene n
general, o coresponden conceptual / intern i mai multe corespondene extern / conceptual.
Corespondena conceptual intern definete relaia dintre vederea conceptual i
baza de date stocat; ea specific modul n care nregistrrile i cmpurile conceptuale sunt
reprezentate la nivel intern. Dac structura bazei de date stocate este modificat adic, dac
este efectuat o schimbare a definiiei structurii de stocare atunci corespondena conceptual
intern trebuie modificat n consecin, astfel nct schema conceptual s rmn
invariabil. Cu alte cuvinte, efectele unor astfel de modificri trebuie izolate sub nivelul
conceptual, pentru a menine independena fizic de date.
Corespondena extern conceptual definete relaia dintre o anumit vedere extern
i vederea conceptual. n general, diferenele care pot exista ntre aceste dou niveluri sunt
analoge celor care pot exista ntre vederea conceptual i baza de date stocat. Pot exista
simultan oricte vederi externe; orici utilizatori pot partaja o vedere extern dat; diversele
vederi externe se pot suprapune.
La fel cum corespondena conceptual intern reprezint cheia obinerii independenei
fizice de date, tot aa corespondenele extern conceptual sunt cheia independenei logice de
date. Sistemul prezint independen fizic de date dac utilizatorii i programele acestora

6
sunt imune fa de modificrile din structura fizic a bazei de date stocate. Similar, sistemul
prezint independen logic de date dac utilizatorii i programele acestora sunt imune i fa
de modificrile din structura logic a bazei de date.
n afar de cele de mai sus, majoritatea sistemelor permit definirea anumitor vederi
externe n funcie de altele (practic, prin intermediul corespondenelor extern extern), fr a
necesita ntotdeauna o definiie explicit a corespondenei cu nivelul conceptual.
Administratorul bazei de date
Administratorul datelor (DA) este persoana care ia decizii strategice iar administratorul
bazei de date (DBA) este persoana care ofer suportul tehnic necesar pentru implementarea
acestor decizii. Astfel, administratorul DBA este responsabil de controlul general al
sistemului, la nivel tehnic. Acum putem descrie ceva mai detaliat cteva din sarcinile
administratorului DBA.
Definirea schemei conceptuale
Sarcina administratorului de date este de a decide exact ce informaii vor fi pstrate n
baza de date cu alte cuvinte, s identifice entitile de interes pentru ntreprindere i
informaiile care vor fi nregistrate despre acestea. De obicei, acest proces este numit
proiectare logic a bazei de date (proiectare conceptual). Dup ce administratorul de date a
decis astfel care va fi coninutul bazei de date la nivel abstract, administratorul DBA va crea
schema conceptual corespunztoare, folosind limbajul DDL conceptual.
n practic, s-ar putea ca lucrurile s nu fie att de clare cum sugereaz observaiile de mai
sus. n unele cazuri, administratorul de date poate crea direct schema conceptual; n altele,
administratorul DBA poate realiza proiectarea logic.
Definirea schemei interne
De asemenea, administratorul DBA trebuie s decid cum vor fi reprezentate datele n
baza de date stocat. De obicei, acest proces este numit proiectare fizic a bazei de date.
Dup ce a realizat proiectarea fizic, administratorul DBA trebuie s creeze schema intern
corespunztoare, folosind limbajul DDL intern. n plus, trebuie s defineasc corespondena
conceptual intern asociat.
Legtura cu utilizatorii
Sarcina administratorului DBA este de a menine legtura cu utilizatorii, pentru a garanta c
datele de care acetia au nevoie sunt disponibile i pentru a scrie schemele externe necesare,
folosind limbajul DDL extern. n plus, trebuie definite i corespondenele extern
conceptuale respective.
Alte aspecte ale funciei de realizare a legturii cu utilizatorii cuprind documentarea
proiectrii aplicaiilor, furnizarea educaiei tehnice, asistent n identificarea i soluionarea
problemelor i alte servicii profesioniste similare.
Definirea restriciilor de securitate i de integritate
Restriciile de securitate i de integritate pot fi privite ca pri ale schemei conceptuale.
Limbajul DDL conceptual trebuie s cuprind faciliti pentru specificarea acestor restricii.
Definirea politicilor de vidare i de refacere
n cazul unei deteriorri a oricrei poriuni din baza de date cauzat, de exemplu, de o eroare
uman sau de o cdere a unui element de hardware sau a sistemului de operare este esenial
ca datele respective s poat fi remediate, cu o ntrziere minim i cu un efect ct mai mic
posibil asupra restului sistemului. Administratorul DBA trebuie s defineasc i s
implementeze o schem adecvat de control al avariilor care, de regul, presupune:
a) Descrcarea sau vidarea periodic a bazei de date pe dispozitivul de stocare de
siguran.
b) Rencrcarea sau refacerea bazei de date conform cu cea mai recent vidare, atunci
cnd este necesar.
Monitorizarea performanelor i rspunsul la modificarea cerinelor

7
Administratorul DBA este responsabil de organizarea sistemului astfel nct s obin
performanele care sunt cele mai bune pentru ntreprindere i de efectuarea modificrilor
adecvate adic reglarea, pe msur ce se schimb cerinele.
Sistemul de gestiune a bazelor de date
Acum vom prezenta puin mai detaliat funciile sistemului SGBG. Aceste funcii cuprind
suportul pentru cel puin urmtoarele aspecte:
Definiia datelor
Sistemul SGBD trebuie s fie capabil s accepte definiiile datelor (schemele externe, schema
conceptual, schema intern i toate corespondenele asociate) n form-surs i sa le
transforme n forma-obiect adecvat. Cu alte cuvinte, sistemul SGBD trebuie s includ
componenta procesorul DDL sau compilatorul DDL, pentru fiecare dintre diversele limbaje
de definire a datelor (DDL).
Manipularea datelor
Sistemul SGBD trebuie s fie capabil s manipuleze cerinele de consultare, modificare sau
tergere a datelor existente n baza de date sau s adauge noi date n baza de date. Cu alte
cuvinte, sistemul SGBD trebuie s includ o component de forma unui procesor DML sau
compilator DML, care s trateze limbajul de manipulare a datelor (DML).
Optimizare i execuie
Cererile DML trebuie s fie prelucrate de ctre un optimizator, al crui scop este s
determine o modalitate eficient de implementare a cererii.
Securitatea i integritatea datelor
Sistemul SGBD trebuie s monitorizeze cererile utilizatorilor i s resping orice nclcare a
restriciilor de securitate i de integritate definite de ctre administratorul DBA.
Refacerea datelor i concurena
Sistemul SGBD - sau, mai probabil, o alt component software legat de acesta, numit
manager de tranzacii sau monitor TP trebuie s impun anumite elemente de control al
refacerii i al concurenei.
Dicionarul de date
Sistemul SGBD trebuie s pun la dispoziie o funcie pentru dicionarul de date.
Dicionarul de date poate fi privit ca o adevrat baz de date (dar mai degrab o baz de date
pentru sistem dect pentru utilizator). Dicionarul conine date despre date (numite uneori i
metadate sau descriptori).. n particular, toate diversele scheme i corespondene (externe,
conceptuale etc.) i toate diversele restricii de securitate i de integritate vor fi stocate n
dicionar, att sub form surs ct i sub form de obiect. Un dicionar complet va cuprinde i
multe informaii suplimentare artnd, de exemplu, ce programe utilizeaz diversele pri ale
bazei de date, ce utilizatori cer rapoarte .a.m.d. Desigur c trebuie s fie posibil s se
interogheze dicionarul la fel ca orice baz de date, astfel nct, de exemplu, s se poat afla
ce programe i/sau utilizatori este probabil s fie afectai de o modificare propus a
sistemului.
Performanele
Se subnelege c sistemul SGBD trebuie s ndeplineasc toate sarcinile ntr-un mod ct mai
eficient posibil.
Cap. 3 MODELUL RELAIONAL AL BAZELOR DE DATE
Sistemele relaionale se bazeaz pe un formalism sau o teorie numit modelul de date
relaional. Adeseori, modelul relaional este descris ca avnd urmtoarele trei caracteristici:
Caracteristica structural: datele din baza de date sunt percepute de utilizator sub
form de tabele i numai tabele.
Caracteristica de asigurare a integritii: aceste tabele satisfac anumite restricii de
integritate.

8
Caracteristica de asigurare a manipulrii: operatorii pui la dispoziie utilizatorilor
ca s manipuleze aceste tabele de exemplu, n scopul consultrii datelor deriv tabele din
alte tabele. Dintre aceti operatori, trei sunt deosebii de importani, i anume: selecia
(restricia), proiecia i uniunea.
Operaia de restricie permite extragerea anumitor rnduri din tabel. Restricia este
numit i selecie; preferm termenul de restricie deoarece operatorul nu este identic cu
operaia SELECT din limbajul SQL.
Operaia de proiecie permite extragerea coloanelor specificate din tabel.
Operaia de uniune permite combinarea a dou tabele ntr-una singur, pe baza
valorilor comune din cadrul unei colane comune.
Tupluri
Vom ncepe prin a defini termenul de tuplu. Considerm o mulime nevid de simboluri,
notat cu U, ale crei elemente se vor numi nume de atribute.
Fie U={A1, A2, , An}. Pentru fiecare nume de atribut Ai se asociaz un tip Ti ,i=1,2,
, n, unde Ti nu sunt neaprat distincte. Un tuplu t este o mulime de triplete ordonate, de
forma <Ai, Ti, vi>, unde Ai este numele unui atribut, Ti este numele unui tip iar vi este o valoare
de tipul Ti.
Valoarea n reprezint gradul sau aritatea lui t.
Tripletul ordonat < Ai, Ti, vi> este o component a lui t.
Perechea ordonat < Ai, Ti> este un atribut al lui t i este identificat n mod unic de
ctre numele atributului Ai (numele atributelor Ai i Aj sunt aceleai numai dac i=j). Valoarea
vi este valoarea atributului Ai al lui t. Tipul Ti este tipul atributului corespunztor.
Mulimea complet de atribute este antetul lui t.
Proprietile tuplurilor:
Fiecare tuplu conine exact o valoare (de tipul adecvat) pentru fiecare dintre atributele
sale.
Nu exist o ordonare de la stnga la dreapta a componentelor tuplului. Aceast
proprietate se datoreaz faptului c tuplul este definit ca o mulime de componente iar n
matematic, mulimile nu au o ordine a elementelor.
Fiecare submulime a unui tuplu este un tuplu (iar fiecare submulime a unui antet este
un antet).
Dou tupluri t1 i t2 sunt egale (adic expresia t1=t2 este adevrat) dac i numai dac
au aceleai atribute A1, A2, , An i, pentru toi indicii i (i=1,2, , n), valoarea vi1 a lui Ai din
t1 este egal cu valoarea vi2 a lui Ai din t2.
Tuplurile t1 i t2 sunt duplicate dac i numai dac sunt egale.
Relaii

O relaie este o mulime de tupluri toate avnd acelai antet. Cardinalitatea mulimii de
tupluri este cardinalitatea relaiei r (n general, cardinalitatea unei mulimi reprezint
numrul de elemente ale acesteia).
O relaie este format dintr-un antet i un cuprins.
Antetul relaiei r este antetul unui tuplu, aa cum a fost definit anterior. Relaia are
aceleai atribute (i prin urmare, aceleai nume i tipuri de atribute) i acelai grad ca i acest
antet.
Cuprinsul relaiei r este mulimea de valori ale tuplurilor.

Proprietile relaiilor:
Fiecare tuplu conine exact o valoare (de tipul adecvat) pentru fiecare atribut.
Nu exist ordonare a atributelor de la stnga la dreapta.

9
Nu exist o ordonare a tuplurilor de jos n sus.
Nu exist tupluri duplicat.
Relaii i tabele
n acest subparagraf vom prezenta o list a ctorva dintre deosebirile principale dintre
obiectul formal reprezentat de o relaie i obiectul neformal reprezentat de o tabel, care
constituie o imagine neformal, pe hrtie, a acestui obiect formal.
Fiecare atribut din antetul unei relaii presupune un nume al tipului, dar aceste nume
de tipuri sunt omise din imaginile sub form de tabel.
Fiecare component a fiecrui tuplu din cuprinsul unei relaii presupune un nume i un
tip al atributului, dar acestea sunt omise din imaginile sub form de tabel.
Coloanele unei tabele au o ordine de la stnga la dreapta, dar atributele unei relaii nu.
Rndurile unei tabele au o ordine de sus n jos, dar tuplurile unei relaii nu.
O tabel poate conine rnduri duplicat, dar o relaie nu conine tupluri duplicat.
Tabelele sunt considerate ca avnd cel puin o coloan, n timp ce nu este obligatoriu
ca relaiile s aib cel puin un atribut.
Tabelele cel puin n limbajul SQL pot cuprinde null-uri, n timp ce relaiile nu.
Din toate cele de mai sus, rezult c, pentru a putea accepta faptul c o imagine de
forma unei tabele poate fi privit ca reprezentnd o relaie, trebuie s cdem de acord privind
modul de citire a unei stfel de imagini; cu alte cuvinte, trebuie s acceptm anumite reguli
de interpretare a cestor imagini. Mai exact, trebuie s acceptm c, pentru fiecare coloan
exist un tip aflat la baz; c fiecare valoare a unui atribut este o valoare de tipul adecvat; c
ordonrile rndurilor i ale coloanelor nu sunt relevante i c nu sunt permise rnduri duplicat.
Acum putem vedea c tabela i relaia nu sunt chiar acelai lucru. n schimb, relaia
este ceea ce arat definiia sa, adic un tip de obiect abstract, n timp ce tabela este o imagine
concret, de regul pe hrtie, a unui astfel de obiect abstract. Ele nu sunt acelai lucru.
Un avantaj major al modelului relaional const n aceea c obiectul d de baz
abstract relaia are o reprezentare att de simpl pe hrtie. Aceast reprezentare simpl
este cea care face ca sistemele relaionale s fie uor de utilizat i de neles i cea care face ca
nelegerea modului de comportare a sistemelor relaionale s fie simpl.
Cap. 4 MODELUL ENTITATE/RELAIE
Entiti
Entitatea este un obiect (fizic sau abstract) care poate fi identificat ca distinct. Entitile
pot fi a clasificate n entiti obinuite i entiti slabe. Entitatea slab este cea a crei
existen depinde de o alt entitate, n sensul c nu poate exista daca nu exist i acea entitate.
Spre deosebire de aceasta, entitatea obinuit poate exista de sine stttor. Exemple de
entiti: angajaii, departamentele, furnizorii, componentele etc.
Observaie Unii autori utilizeaz termenul de entitate tare n loc de entitate
obinuit.

Atribute
Entitile, ca i unele corelaii dintre entiti, au atribute (proprieti). Atributele sunt
informaii care descriu entitile (corelaiile). Toate entitile sau corelaiile de un anumit tip
au n comun anumite proprieti (atribute) ;
Observaii:
1. Dintre atributele unei entiti, o importan deosebit o au cheile. O cheie este un atribut,
sau un grup de atribute, care identific n mod unic o entitate.
2. Atributele a cror valoare nu poate fi determinat pe baza valorilor altor atribute se
numesc atribute de baz; atributele a cror valoare poate fi determinat , prin calcule, pe baza
valorilor altor atribute se numesc atribute derivate.

10
Corelaii
Corelaia reprezint o asociaie (legtur) ntre entiti.
Entitile implicate ntr-o anumit corelaie sunt participanii acesteia. Numrul de
participani dintr-o anumit corelaie se numete gradul acesteia.
Fie R un tip de corelaie care presupune ca participant tipurile de entiti E1 i E2. Dac
fiecrei instane a tipului E1 i corespunde cel puin o instan tipului E2, atunci spunem c
participarea entitii E1 n corelaia R este total; n caz contrar, spunem c este parial.
Diferite tipuri de corelaii (legturi)
1. Corelaie de tip unu-la-unu (1:1) Unui element (instan) al unui tip de entitate E1 i
corespunde cel mult un element de tipul de entitate E2 i reciproc, unui element de tipul E2 i
corespunde cel mult un element de tipul de entitate E1.
2. Corelaie de tip unu-multi (1:m) - Unui element al unui tip de entitate E1 i sunt asociate
zero, unul sau mai multe elemente de tipul de entitate E2 iar unui element de tipul de entitate
E2 i corespunde cel mult un element de tipul de entitate E1.
3. Corelaie de tip multi- multi (m:m) - Unui element al unui tip de entitate E1 i sunt
asociate zero, unul sau mai multe elemente de tipul de entitate E2 i reciproc, unui element de
tipul E2 i sunt asociate zero, unul sau mai multe elemente de tipul de entitate E1.
Observaii:
1. Este posibil s ne intereseze o legtur ntre dou tipuri de entiti ntr-un singur sens sau
n dublu sens, n funcie de necesitile de exploatare. Dac legtura este ntr-un singur sens,
precizm acest lucru cu ajutorul sgeilor.
2. Este posibil ca ntre aceleai dou tipuri de entiti s existe mai multe tipuri de corelaii,
cu semnificaii diferite.
3. Este posibil ca i legturile s aib atribute (proprieti).
Diagrame E/R
Diagramele E/R constituie o tehnic de reprezentare a structurii logice a bazei de date
ntr-o maniera pictural. Astfel, ofer un mijloc simplu i cu adevrat inteligibil de
comunicare a caracteristicilor importante ale designului unei anumite baze de date; de fapt,
popularitatea modelului E/R ca mijloc de abordare a proiectrii bazelor de date poate fi
atribuit n principal tehnicii de realizare a diagramelor E/R.
Entiti
Fiecare tip de entitate este reprezentat sub forma unui dreptunghi care conine numele
tipului entitii respective. Pentru un tip de entitate slab, chenarul dreptunghiului este o linie
punctat.
Atribute
Atributele sunt reprezentate ca elipse ce conin numele atributului respectiv i sunt
ataate entitii sau corelaiei respective prin intermediul unei linii continue. Marginea elipsei
este o linie punctat dac atributul respectiv este derivat. Atributele cheie sunt subliniate.
Mulimile de valori corespunztoare atributelor nu se reprezint.
Corelaii
Corelaiile fr atribute se pot reprezenta n dou moduri:
a) Prin intermediul unor linii continue sau ntrerupte, dup cum participarea entitii
respective la corelaie este total sau parial. Numele corelaiei este trecut deasupra sau lng
liniile ce unesc tipurile de entiti.
b) Ca un romb ce conine numele i tipul de corelaie respectiv. Marginea rombului este o
linie punctat dac legtura respectiv este ntre un tip de entitate slab i tipul de entitate de
care depinde existena acesteia. Participanii la corelaie sunt conectai la corelaia respectiv
prin intermediul unor linii continue sau ntrerupte, dup cum participarea entitii respective la
corelaie este total sau parial.
Corelaiile cu atribute se reprezint, obligatoriu, n forma precizat la punctul b).

11
Tipul legturii (unu-la-unu, unu-multi sau multi-multi) poate fi specificat n diferite
moduri:
a) Fiecare astfel de linie este etichetat cu 1 sau m.
b) Tipul legturii (1:1, 1:m, m:m) este specificat deasupra rombului.
c) Linia corespunztoare prii multi a unei legturi de tipul 1:m sau m:m poate fi
prevzut cu mai multe piciorue:

Proiectarea bazelor de date cu ajutorul modelului E/R

O diagram E/R construit conform regulilor schiate n paragraful anterior este un


proiect al bazei de date. In continuare, vom prezenta cum se transpune o diagram E/R ntr-o
baz de date.
Entiti
Fiecrui tip de entitate din diagrama E/R i corespunde, n baza de date, o tabel.
Astfel:
- Numele tabelei va fi acelai cu al tipului entitii respective.
- Fiecrui atribut al tipului de entitate respectiv i va corespunde, n tabel, un cmp
(o coloan).
- Cheia tabelei va fi chiar cheia tipului de entitate corespunztoare.
Corelaii de tip multi multi
Fiecare astfel de corelaie este transformat ntr-o tabel. Astfel:
- Numele tabelei va fi acelai cu al corelaiei respective.
- Cheile primare ale celor dou tipuri de entiti participante la corelaie vor fi
cmpuri ale acestei tabele (chei strine). Cheile strine dintr-o tabel se subliniaz cu linie
ntrerupt.
- Dac legtura are atribute, atunci atributele acesteia se vor regsi ca i cmpuri ale
tabelei respective.
Observaie:
Exist dou posibiliti pentru stabilirea cheii primare a acestei tabele: fie se alege o
cheie compus din toate cmpurile tabelei, fie se introduce un cmp suplimentar, care s
serveasc ca i cheie primar nlocuitoare.
Corelaii de tip unu multi
Acest tip de legtur nu determin introducerea unei noi tabele,. Astfel:
- Vom introduce o cheie strin n tabela din partea multi a corelaiei.
- n plus, dac legtura are atribute, acestea vor fi introduse ca i coloane ale tabelei
din partea multi a corelaiei.
Corelaii de tip unu-la-unu
Observaii:
1. Corelaiile de tip unu-la-unu n dublu sens sunt tratate la fel ca i corelaiile de tip multi-
multi.
2. Corelaiile de tip unu-la-unu ntr-un singur sens sunt tratate la fel ca i corelaiile de tip
unu-multi. Partea unu a corelaiei este dat de vrful sgeii care indic sensul legturii,
n timp ce partea multi a corelaiei este considerat spre baza sgeii.
3. Acest tip de corelaii nu sunt uzuale n practic.

CAP. V Limbajul de baze de date SQL

Rolul limbajului SQL


SQL nu este un produs de sine stttor ci este parte integrat a unui SGBD ; este un
limbaj i un instrument pentru comunicarea cu SGBD.

12
Motorul de baze date este componeta pricipal a SGBD-ului ("inima" acestuia),
responsabil pentru definirea structurii, stocarea i obinerea datelor din baza de date. El
accept cereri SQL de la alte componente ale SGBD-ului, de la programe de aplicaie sau
chiar de la alte calculatoare.
SQL ndeplinete mai multe roluri :
SQL este un limbaj de interogare interactiv . Utilizatorul scrie comenzi SQL ntr-un
program SQL interactiv pentru a obine date i pentru a le afia pe ecran ; se obine astfel un
instrument uor de folosit pentru interogarea ad-hoc a bazei de date.
SQL este un limbaj de programare pentru baze de date. Programatorii includ comenzi SQL
n programele lor pentru a accesa baza de date. Att programele de aplicaie scrise de ctre
utilizator ct i programele utilitare utilizeaz aceast tehnic pentru a accesa baza de date.
SQL este un limbaj de administrare a bazelor de date. Administratorul bazei de date
utilizeaz SQL pentru a defini structura bazei de date i pentru a controla accesul la datele
stocate.
SQL este un limbaj client/server. Programele pentru PC-uri utilizeaz SQL pentru a
comunica prin reea cu serverul de baze de date care partajeaz datele. Acest arhitectur
client/server a devenit foarte popular pentru aplicaiile de ntreprindere.
SQL este un limbaj de accesare a datelor prin intemediul Internetului. Serverele Web
care interacioneaz cu datele pe care le stocheaz i serverele de aplicaii Internet utilizeaz
SQL ca un limbaj standard pentru accesarea datelor.
SQL este un limbaj pentru baze de date distribuite. Sistemele de gestiune a bazelor de
date distribuite utilizeaz SQL pentru a ajuta distribuirea datelor pe mai multe calculatoare
interconectate. Softul SGBD de pe fiecare sistem de calcul utilizeaz SQL pentru a comunica
cu celelalte sisteme, trimind cereri pentru accesarea datelor.
SQL este un limbaj gateway ("poart") pentru baze de date. ntr-o reea care reunete
produse SGBD diferite, SQL este adesea utilizat ntr-o poart care permite unui tip de
SGBD s comunice cu unul de un alt tip.
SQL apare astfel ca un instument util i puternic, care permite accesul persoanelor,
programelor de aplicaie i sistemelor de calcul la datele stocate ntr-o baz de date
relaional.
Instruciuni
Limbajul SQL conine aproximativ 40 de instruciuni. Fiecare instruciune presupune o
aciune specific asupra bazei de date, cum ar fi crearea unei noi tabele, obinerea
informaiilor sau inserarea de noi date n baza de date.
Principalele instruciuni SQL
Instruciune Descriere
Manipularea Datelor
SELECT Extrage (obine) informai din baza de date
INSERT Adaug linii noi n baza de date
DELETE terge linii din baza de date
UPDATE Modific datele existente n baza de date
Definirea Datelor
CREATE TABLE Adaug o nou tabel la baza de date
DROP TABLE terge o tabel din baza de date
ALTER TABLE Modific structura unei tabele deja existente
CREATE VIEW Adaug o nou vedere la baza de date
DROP VIEW terge o vedere din baza de date
CREATE INDEX Creeaz un index pentru o coloan
DROP INDEX terge indexul asociat unei coloane
CREATE SCHEMA Adaug o nou schem la baza de date

13
DROP SCHEMA terge o schem din baza de date
CREATE DOMAIN Creeaz un nou domeniu de valori
ALTER DOMAIN Modific definiia unui domeniu
DROP DOMAIN terge un domeniu din baza de date
Controlul Accesului
GRANT Acord drepturi de acces utilizatorilor
REVOKE terge drepturile de acces ale utilizatorilor
Controlul Tranzaciilor
COMMIT ncheie tranzacia curent
ROLLBACK Se renun la tranzacia curent i se revine la starea
sistemului dinainte de nceperea tranzaciei
SET TRANSACTION Definete caracteristicile accesului la date pentru
tranzacia curent
SQL Programatic
DECLARE Definete un cursor pentru o interogare
EXPLAIN Descrie planul de acces la date pentru o interogare
OPEN Deschide un cursor pentru a obine datele unei interogri
FETCH Extrage o linie din rezultatul unei interogri
CLOSE nchide un cursor
Fiecare instruciune SQL ncepe cu un verb, un cuvnt rezervat care descrie ce face
instruciunea. SELECT, CREATE, INSERT, DELETE, i COMMIT sunt verbele obinuite.
Instruciunea continu cu una sau mai multe clauze. O clauz poate specifica datele asupra
crora opereaz instruciunea sau poate furniza mai multe detalii asupra a ceea ce face
instruciunea. Fiecare clauz ncepe cu un cuvnt rezervat, cum sunt WHERE, FROM, INTO
i HAVING. Unele clauze sunt opionale n timp ce altele sunt obligatorii. Structura i
coninutul variaz de la o clauz la alta. Multe dintre clauze conin nume de tabele sau
coloane; unele dintre ele pot conine cuvinte cheie suplimentare, constante sau expresii.
Tipuri de dat
SGBD-urile actuale pot prelucra o varietate larg de tipuri de dat i exist diferene
considerabile ntre tipurile de dat suportate de SGBD-uri diferite. Tipurile de dat tipice
includ :
ntregi.
Numere zecimale Numere care au parte fracionar dar care trebuie calculat exact.
Numere n virgul mobil Numere reale exprimate n form tiinific i care pot fi
calculate cu aproximaie.
iruri de caractere cu lungime fix.
iruri de caractere cu lungime variabil.
Sume de bani.
Date calendaristice i timp.
Date de tip boolean.
Text lung- iruri de caractere cu lungime mai mare de 32.000 sau 65.000 de caractere.
iruri de bii Utilizate pentru reprezentarea n memorie a imaginilor video, a secvenelor
de cod executabil etc.
Interogri simple
Interogrile reprezint "inima" limbajului SQL. Instruciunea SELECT, utilizat pentru
a exprima interogrile, este cea mai puternic i complex dintre instruciunile SQL. Cu toate
c instruciunea SELECT ne ofer multiple opiuni, vom pleca de la interogri simple i apoi
vom construi interogri din ce n ce mai complexe.
Instruciunea SELECT

14
Instruciunea SELECT extrage date din baza de date i le returneaz utilizatorului sub form
de "rezultat al interogrii ".
Instruciunea SELECT pentru o interogare simpl ca aceasta, include doar dou clauze
obligatorii. Clauza SELECT precizeaz numele coloanelor cerute; clauza FROM precizeaz
tabelele care conin aceste coloane.
Cmpuri calculate
n plus fa de colanele ale cror valori se extrag direct din baza de date, o interogare SQL
poate include coloane calculate, a cror valoare este determinat pe baza valorilor stocate n
baza de date. Pentru a obine o coloan calculat specificm o expresie SQL n lista de
selecie.
O expresie SQL poate include adunri, scderi, nmuliri i mpriri. n plus, se pot utiliza
parantezele pentru a construi expresii mai complexe. Coloanele referite n expresii artimetice
trebuie s fie de tip artimetic. Dac ncercm s adunm, scdem, nmulim sau mprim
coloane care conin date de tip text, SQL va raporta o eroare.
Selectarea tuturor coloanelor
Uneori este convenabil s afism coninutul tuturor coloanelor unei tabele. n particular, acest
lucru poate fi util n cazul n care dorim s cunoatem repede structura unei tabele i datele pe
care aceasta le conine. Prin convenie, pentru a afia toate coloanele, plasm un asterisc ( * )
n locul listei de selecie.
Linii duplicate
Dac o interogare include cheia primar a unei tabele n lista de selecie atunci fiecare linie
din rezultat va fi unic (deoarece cheia primar are valori diferite pentru fiecare linie). Dac
cheia primar nu este inclus n rezultatul interogrii atunci pot aprea linii duplicat.
Selecia liniilor (clauza WHERE)
De obicei vrem s selectm numai anumite linii dintr-o tabel i s includem numai aceste
linii n rezultatul interogrii. Clauza WHERE este utilizat pentru a specifica liniile pe care
dorim s le extragem. n continuare sunt prezentate cteva interogri care utilizeaz clauza
WHERE.
Condiia de selecie
SQL ofer un set bogat de condiii de selecie care ne permit specificarea unei mari varieti
de interogri, n mod eficient i natural. Exist cinci condiii de selecie de baz (numite i
predicate n standardul ANSI/ISO):
Comparaia
Verificarea apartenenei la un interval de valori
Verificarea apartenenei la o mulime de valori
Verificarea potrivirii cu un ablon
Testarea valorilor nule
Comparaia (=, < >, <, <=, >, >=)
Cea mai ntlnit condiie de selecie utilizat n interogrile SQL este comparaia. ntr-un test
de comparaie, SQL evalueaz i compar valorile a dou expresii SQL pentru fiecare linie n
parte. Expresiile pot fi att simple nume de coloane sau constante ct i expresii aritmetice
complexe. SQL ofer ase operatori de comparaie: =, < >, <, < =, >, > =.
Rezultatul efecturii comparaiei poate fi : TRUE, FALSE sau NULL. Numai liniile pentru
care rezultatul comparaiei este TRUE sunt incluse n rezultatul interogrii.
Obinerea unei singure linii
Majoritatea testelor de comparaie verific dac valoarea unei coloane este egal cu o
constant.
Consideraii asupra valorilor NULL

15
Am vzut c SQL are o logic bazat pe trei valori de adevr, astfel nct o condiie de
selecie poate furniza valorile de adevr TRUE, FALSE sau NULL. Numai liniile pentru care
condiia de selecie este evaluat TRUE vor fi incluse n rezultatul interogrii.
Verificarea apartenenei la un interval de valori
Se verific dac o expesie (expresie_de_testat) este cuprins ntre dou valori specificate
(expresie_inf i expresie_sup).
expresie_de_testat BETWEEN expresie_inf AND expresie_sup
Negaia testului de aparten la un interval de valori, NOT BETWEEN, verific dac valoarea
unei expresii este n afara intervalului respectiv.
Observaii:
Dac expresia de testare produce o valoare NULL sau ambele expresii care stabilesc
intervalul sunt NULL, rezultatul testrii este NULL.
Dac expresia care precizeaz intervalul inferior este NULL, atunci testul returneaz
FALSE- dac valoarea de testare este mai mare dect limita superioar i NULL n caz
contrar.
Dac expresia care precizeaz intervalul superior este NULL, atunci testul returneaz
FALSE- dac valoarea de testare este mai mic mare dect limita inferioar i NULL n caz
contrar.
Verificarea apartenenei la o mulime
Se verific dac o expresie (expresie_de_testat) se regsete (IN) printre elementele unei
mulimi specificate prin elementele ei (const1, const2, ..., constn).
expresie_de_testat IN (const1, const2, ..., constn)
Toate elementele specificate n list trebuie s aib acelai tip de dat i acesta trebuie s fie
comparabil cu tipul de dat al expresiei de testat.
Verificarea potrivirii cu un abon
Testarea "potrivirii" cu un ablon (LIKE) verific dac datele dintr-o coloan corespund
parial cu un ablon (pattern) specificat. ablonul este un ir de caractere care poate include
unul sau mai multe caractere "de nlocuire". Caracterele de nlocuire sunt interpretate ntr-o
manier special.
nume_coloan LIKE pattern
Caracterele de nlocuire :
Caracterul procent (%) nlocuiee o secven de zero sau mai multe caractere
Observaii :
Putem determina irurile care nu se portivesc cu un ablon utiliznd forma NOT LIKE n
testul de verificare.
Testul LIKE poate fi aplicat numai unei coloane cu tipul de dat ir de caractere.
Dac valoarea datelor din coloana respectiv este NULL, testul LIKE returneaz NULL.
Caracterul Escape
Una dintre problemele legate de potrivirea la un ablon este includerea caracterelor de
nlocuire ca i constante de tip ir de caractere. Pentru a testa prezena unui caracter procent
(%) ntr-o coloan nu putem s includem pur i simplu caracterul % n ablon deoarece SQL l
va trata ca pe un caracter de nlocuire. Pentru a rezolva aceast problem se utilizeaz
caracterul escape. Cnd un caracter escape apare ntr-un ablon, caracterul imediat urmtor
este tratat mai degrab ca o constant de tip ir de caractere dect ca un caracter de nlocuire.
Testarea valorilor nule (IS NULL)
Valoarea NULL determin apariia unei logici cu trei valori de adevr n cazul condiiei de
selecie. Pentru orice linie dat, rezultatul evalurii acestei condiii poate fi TRUE, FALSE sau
NULL. Uneori este util s verificm explicit dac o anumit coloan conine o valoare NULL.
nume_coloan IS NULL

16
Compunerea condiiilor de selecie (AND, OR, i NOT)
Utiliznd operatorii logici, AND, OR i NOT, putem combina condiiile de selecie simple
a.. s obinem condiii din ce n ce mai complexe.
Tabela de adevr pentru operatorul AND

Tabela de adevr pentru operatorul OR

Tabela de adevr pentru operatorul NOT

Precedena operatorilor logici este urmtoarea: NOT, AND, OR.


Ordonarea rezultatelor interogrilor (clauza ORDER BY)
Ca i liniile dintr-o baz de date, liniile din rezultatul unei interogri nu sunt ordonate dup
nici un criteriu. Putem ordona liniile din rezultatul unei interogri prin includerea clauzei
ORDER BY n instruciunea SELECT. Clauza ORDER BY const din cuvintele cheie
ORDER BY urmate de o list de criterii de ordonare separate prin virgul.
Joinul simplu (Equi-Join)
Procesul de formare a perechilor de linii pe baza potrivirii valorii coloanelor corespondente
este numit joinul tabelelor. Tabela rezultat (care conine date din ambele tabele) se numete
tabela join. Un join bazat pe egalitatea valorilor a dou coloane se numete equi-join. Joinul
se poate realiza, de asemenea, pe baza altor tipuri de comparaii ale coloanelor.
Joinul este fundamentul procesrii interogrilor care presupun mai multe tabele. Toate datele
dintr-o baz de date relaional sunt stocate ca valori ale unor coloane astfel nct toate
relaiile posibile dintre tabele pot fi realizate pe baza potrivirii coninutului coloanelor
corespondente.
Interogri Printe/Copil
Cele mai multe dintre interogrile multi-tabele implic dou tabele ntre care exist o
relaionare natural de tip printe/copil. Interogarea anterioar, despre clieni i comenzi, este
un exemplu n acest sens. Fiecare comand (copil) are un client asociat (printe) i fiecare

17
client (printe) poate avea mai multe comenzi asociate (copii). Perechile de linii care
genereaz rezultatul interogrii sunt combinaii de linii printe/copil.
Perechile de linii printe/copil se creeaz pe baza corespondenei dintre cheile strine i cheile
primare. Tabela care conine cheia strin este tabela copil n relaia respectiv n timp ce
tabela care conine cheia primar este tabela printe. n interogare trebuie specificat condiia
de selecie care compar egalitatea dinte cheia strin i cheia primar.
Join cu criterii de selecie a liniilor
Condiia de selecie care precizeaz corespondena dintre coloane ntr-o interogare multi-
tabele poate fi combinat cu alte condiii de selecie, pentru a restriciona coninutul
rezultatului interogrii.
Alte tipuri de Equi-Join
Marea majoritate a interogrilor multi-tabele sunt bazate pe relaii de tip printe/copil dar
SQL nu impune coloanelor corespondente s fie legate printr-o relaie de tip cheie strin-
cheie primar. Oricare dou coloane din dou tabele pot fi corespondente, dac au tipuri de
dat comparabile.
Non-Equi Join
Termenul de join se aplic oricrei interogri care combin date din dou tabele pe baza
comparrii valorilor unei perechi de coloane din tabelele respective. Dei joinul bazat pe
egalitatea dintre coloanele corespondente (equi-join) este, de departe, cel mai utilizat join,
SQL permite s efectum join ntre tabele i pe baza altor operatori de comparaie. n
continuare este prezentat un exemplu de realizare a joinului pe baza utilizrii operatorului < =.
Consideraii privind interogrile Multi-Tabele
Interogrile multi-tabele prezentate pn acum nu au necesitat vreo sintax SQL special sau
alte caracteristici ale limbajului fa de cele descrise pentru interogarea unei singure tabele.
Totui, anumite interogri multi-tabele nu pot fi exprimate fr anumite caracteristici
suplimentare ale limbajului, cum sunt :
Calificarea numelor coloanelor este necesar ntr-o interogare multi-tabele pentru a
elimina ambiguitile legate de numele coloanelor.
Selecia tuturor coloanelor (*) poate avea un neles diferit n cazul interogrilor multi-
tabele.
Self-joinul poate fi utilizat pentru a exprima o interogare multi-tabel care relaioneaz o
tabel cu ea nsi.
Aliasurile tabelelor pot fi utilizate n clauza FROM pentru a simplifica calificarea numelor
coloanelor i a permite referirea neambigu la numele unor coloane n cazul self-joinului.
Funcii de grup
SQL ne permite s sintetizm datele din baza de date prin aplicarea unor funcii de grup
asupra coloanelor. O funcie de grup primete ca argument o ntreag coloan i furnizeaz ca
rezultat o singur valoare, care sintetizeaz datele din coloana respectiv. De exemplu, funcia
AVG( ) primete ca parametru datele dintr-o coloan i returneaz media lor aritmetic.
SQL ofer ase funcii de grup:
SUM() calculeaz totalul valorilor dintr-o coloan.
AVG() calculeaz media aritmetic a valorilor dintr-o coloan.
MIN() determin cea mai mic dintre valorile unei coloane.
MAX() determin cea mai mic dintre valorile unei coloane.
COUNT() determin numrul valorilor dintr-o coloan.
COUNT(*) determin numrul liniilor din rezultatul interogrii
Determinarea totalului unei coloane (SUM)
Funcia de grup SUM( ) determin suma valorilor dintr-o coloan. Datele din coloana
respectiv trebuie s fie de tip numeric (ntreg, real zecimal, real in virgul mobil sau

18
money). Rezultatul funciei SUM( ) este de acelai tip cu datele din coloana respectiv dar
rezultatul poate avea precizie mai mare.
Determinarea mediei aritmetice (AVG)
Funcia de grup AVG( ) determin media aritmetic a valorilor dintr-o coloan. Ca i n cazul
funciei SUM( ), datele din coloana respectiv trebuie s fie de tip numeric. Tipul de dat al
rezultatului poate s difere de cel al valorilor din coloana respectiv. De exemplu, dac
aplicm funcia AVG( ) unei coloane de tip ntreg, rezultatul poate fi de tip real zecimal sau
real n virgul mobil, n funcie de SGBD-ul pe care lucrm.
Determinarea valorilor minime i maxime (MIN i MAX)
Funciile de grup MIN() i MAX() determin cea mai mic, respectiv cea mai mare, dintre
valorile unei coloane. Datele din coloana respectiv pot fi de tip numeric, ir de caractere sau
date/time. Rezultatul va avea exact acelai tip de dat cu al valorilor din coloana
respectiv.Cnd sunt utilizate funciile de grup MIN( ) i MAX( ), numerele sunt comparate n
ordine algebric, irurile de caractere n ordine lexicografic, datele calendaristice n ordine
cronologic iar duratele de timp pe baza lungimii acestora.
Numrarea valorilor (COUNT)
Funcia de grup COUNT( ) numr valorile dintr-o coloan. Datele din coloana respectiv pot
avea orice tip de dat. Funcia COUNT( ) returneaz un ntreg.
Funcia COUNT( ) ignor valorile datelor din coloana transmis ca parametru; ea pur i
simplu numr valorile din aceast coloan. Ca urmare, n aceast interogare, nu conteaz ce
coloan i specificm ca argument. Exemplul precedent poate fi scris aadar
De fapt nu este eficient s gndim interogarea sub forma "numr cte valori de comezi " sau
"numr cte numere de comezi " ; este mai simplu s gndim "numr cte comenzi ". Din
acest motiv SQL suport o funcie de grup special , COUNT(*), care numr liniile i nu
valorile datelor.
Eliminarea liniilor duplicat (DISTINCT)
Reamintim faptul c putem aduga cuvntul cheie DISTINCT la nceputul listei de selecie
pentru a elimina liniile duplicat din rezultatul interogrii. Putem, de asemenea, s eliminm
valorile duplicat dintr-o coloan nainte de a aplica funcii de grup asupra acesteia. Pentru a
elimina valorile duplicat includem cuvntul cheie DISTINCT nainte de argumentul funciei
de grup, imediat dup paranteza deschis.
Gruparea nregistrrilor (Clauza GROUP BY )
Interogrile totalizatoare prezentate pn acum seamn cu totalurile de la sfritul unui
raport. Ele condenseaz toate datele detaliate din raport ntr-o singur linie. Uneori ns, n
rapoartele tiprite avem nevoie i de subtotaluri. Clauza GROUP BY ne ofer posibilitatea
de a realiza acest lucru.
Exist o legtur strns ntre funciile de grup i clauza GROUP BY. Reamintim c o funcie
de grup primete ca argument valorile dintr-o coloan i produce ca rezultat o singur linie.
Cnd este prezent clauza GROUP BY, SQL grupeaz nregistrrile i aplic funcia de grup
fiecruia dintre grupuri n parte, producnd n rezultat cte o singur linie pentru un grup.
Restricii asupra gruprii nregistrrilor
Gruparea nregistrrilor este supus anumitor restricii. Coloanele dup care se face gruparea
trebuie s fie coloane ale tabelelor specificate n clauza FROM. Nu putem face gruparea pe
baza unor valori calculate. Exist, de asemenea, restricii n ce privete lista de selecie: toate
elementele care apar n lista de selecie trebuie s aib aceeai valoare pentru toate liniile din
grup. Aceasta nseamn c lista de selecie poate conine:
O constant
O funcie de grup
O coloan de grupare, care are prin definiie aceeai valoare pentru toate liniile din grup
Orice expresie care conine combinaii ale elementelor de mai sus.

19
n practic, o interogare cu gruparea nregistrrilor va include ntotdeauna n lista de selecie
att o coloan de grupare ct i o funcie de grup. Dac n lista de selecie nu apare nici o
funcie de grup atunci interogarea poate fi exprimat mai simplu utiliznd clauza SELECT
DISTINCT, fr GROUP BY. Reciproc, dac nu includem n lista de selecie o coloan de
grupare, nu vom putea preciza crui grup i corespunde o anumit linie din rezultatul
interogrii.
O alt limitare const n faptul c SQL ignor informaiile referitoare la cheile primare i la
cele strine cnd analizeaz corectitudinea gruprii nregistrrilor.
Valori NULL n coloanele de grupare
Prezena unor valori null n coloanele dup care se face gruparea nregistrrilor ridic anumite
probleme. n clauza WHERE, cnd sunt comparate dou valori NULL distincte, rezultatul
este NULL (nu TRUE); aadar, dou valori NULL distincte nu sunt considerate egale.
Aplicarea acestei reguli n cazul clauzei GROUP BY, ar face ca fiecare dintre liniile care au
valoarea NULL n coloana de grupare s fie plasate n cte un grup. Aceast regul se
dovedete a fi prea dificil. Standardul ANSI/ISO SQL precizeaz c n cazul n care este
prezent clauza GROUP BY, valorile NULL din coloana de grupare sunt considerate egale.
Astfel, dac dou linii au valoarea NULL ntr-o coloan de grupare i valori nenule identice n
celelalte coloane de grupare, ele vor fi grupate mpreun.
Selecia grupurilor de nregistrri (Clauza HAVING)
Aa cum clauza WHERE este utilizat pentru a selecta, individual, liniile care intervin ntr-o
interogare, clauza HAVING poate fi utilizat pentru a selecta grupuri de linii.
Restricii asupra condiiei de selecie a grupurilor de nregistrri
Clauza HAVING este utilizat pentru a exclude grupuri de linii din rezultatul interogrii,
aadar condiia de selecie pe care o conine trebuie s fie una care se aplic grupului ca ntreg
mai degrab dect liniilor individuale. Aceasta nseamn c un element din condiia de
selecie a clauzei HAVING poate fi:
O constant
O funcie de grup
O coloan de grupare, care are prin definiie aceeai valoare pentru toate liniile din grup
Orice expresie care conine combinaii ale elementelor de mai sus.
n practic, condiia de selecie din clauza HAVING va include cel puin o funcie de grup.
Dac nu, atunci condiia de selecie poate fi mutat n clauza WHERE i aplicat liniilor
individuale.
Valorile NULL i condiia de selecie din clauza HAVING
Ca i condiia de selecie din clauza WHERE, condiia de selecie din clauza HAVING poate
produce unul dintre urmtoarele trei rezultate: TRUE, FALSE sau NULL. Numai grupurile
pentru care condiia de selecie este TRUE vor contribui la obinerea rezultatelor interogrii.
Anomaliile care pot aprea n legtur cu valorile NULL sunt aceleai ca n cazul clauzei
WHERE.
Subinterogri
O subinterogare este o interogare inclus ntr-o alt interogare. Rezultatul subinterogrii este
utilizat de SGBD pentru a determina rezultatele interogrii de nivel mai nalt care conine
subinterogarea.
Subinterogarea este cuprins ntre paranteze rotunde dar are forma unei instruciuni SELECT,
cu o clauz FROM i clauzele opionale WHERE, GROUP BY i HAVING. Exist cteva
diferene ntre o subinterogare i o instruciune SELECT.
n majoritatea cazurilor, o subinterogare trebuie s furnizeze o singur coloan ca
rezultat al interogrii. Aceasta nseamn c o subinterogare aproape ntotdeauna are un singur
element n lista de selecie.

20
Clauza ORDER BY nu poate fi menionat ntr-o subinterogare. Rezultatele
subinterogrii sunt utilizate intern de ctre interogarea principal i nu sunt niciodat vizibile
pentru utilizator, astfel nct nu are sens ordonarea acestora.
Subinterogarea poate referi coloane ale tabelelor menionate n interogarea de baz.
Subinterogri n clauza WHERE
Subinterogrile apar cel mai adesea n clauza WHERE a instruciunii SELECT. n acest caz,
subinterogarea acioneaz ca parte a procesului de selecie a liniilor. Cele mai simple
subinterogri apar n interiorul condiiei de selecie.
Condiii de selecie asociate cu subinterogri
Majoritatea produselor SQL ofer urmtoarele condiii de selecie asociate cu subinterogrile:
Comparaia
Testarea apartenenei la o mulime
Testul existenial
Cuantificatorii (Operatorii ALL i ANY)
Comparaia (=, <>, <, <=, >, >=)
Compar valoarea unei expresii cu valoarea produs de o subinterogare.
Testarea apartenenei la o mulime (IN)
Compar valoarea unei coloane cu valorile furnizate de o subinterogare i returneaz TRUE
dac valoarea coloanei coincide cu cel puin una dintre valorile produse de subinterogare.
Testul existenial (EXISTS)
Verific dac o subinterogare produce vreo linie n rezultat. Acest test este utilizat numai n
subinterogri
Cuantificatorii (Operatorii ANY i ALL)
SQL furnizeaz doi operatori de cuantificare, ANY i ALL, care extind operatorii de
comparare. Ambii compar valoarea dintr-o coloan cu valorile furnizate de o subinterogare.
Operatorul ANY este utilizat mpreun cu unul dintre cei ase operatori de comparaie (=, <
>, <, <=, >, >=) pentru a compara valoarea unei coloane cu valorile furnizate de o
subinterogare. Dac valoarea acestei coloane corespunde cu vreuna dintre valorile furnizate
de subinterogare, condiia este evaluat TRUE.
ntotdeauna se poate transforma o interogare care conine operatorul ANY ntr-o interogare
care conine operatorul EXISTS prin mutarea comparaiei n interiorul condiiei de selecie a
subinterogrii. Aceasta este o bun idee deoarece interogrile care utilizeaz operatorul ANY
sunt mai greu de formulat.
n continuare este prezentat o formulare alternativ a interogrilor precedente, utiliznd
operatorul EXITS..
Operatorul ALL , ca i operatorul ANY, este utilizat mpreun cu unul dintre cei ase
operatori de comparaie (=, < >, <, <=, >, >=) pentru a compara valoarea unei coloane cu
valorile furnizate de o subinterogare. Dac valoarea acestei coloane corespunde cu fiecare
dintre valorile furnizate de subinterogare, condiia este evaluat TRUE.
Subinterogri i Join
Multe dintre interogrile pe care le-am scris utiliznd subinterogri pot fi scrise, de asemenea,
utiliznd join-ul. SQL ne permite s exprimm interogrile n fiecare dintre cele dou moduri.
Subinterogri imbricate
Toate interogrile prezentate pn acum n acest subcapitol au avut dou nivele de interogare,
cuprinznd o interogare principal i o subinterogare. Aa cum putem utiliza o subinterogare
ntr-o interogare principal, putem utiliza o subinterogare ntr-o alt subinterogare.
Subinterogri corelate
Conceptual, SQL proceseaz subinterogarea pentru fiecare linie care intervine n interogare
principal. Totui, n cazul multor subinterogri, se obine acelai rezultat pentru fiecare linie
din interogarea principal.

21
Subinterogri n clauza HAVING
Dei subinterogrile sunt cel mai adesea prezente n clauza WHERE, ele pot fi utilizate i n
clauza HAVING a unei subinterogri. Cnd o subinterogare apare n clauza HAVING,
acioneaz ca o parte a condiiei de selecie a grupurilor de linii.
Actualizarea Bazelor de Date
SQL este un limbaj complet de manipulare a datelor, utilizat nu numai pentru interogarea
bazelor de date ci i pentru actualizarea acestora. Comparativ cu instruciunea SELECT, care
realizeaz interogarea, instruciunile SQL care actualizeaz coninutul unei baze de date sunt
extrem de simple. Totui, n ceea ce privete actualizarea bazelor de date apar nite probleme
n plus fa de cele prezentate n cazul interogrii. SGBD-ul trebuie s asigure integritatea
datelor n timpul operaiilor de actualizare, garantnd c n baza de date vor fi introduse
numai date valide i c aceasta rmne ntr-o stare consistent n cazul unei cderi a
sistemului. De asemenea, SGBD-ul trebuie s coordoneze accesul simultan la date, garantnd
c utilizatorii i actualizrile fcute de acetia, nu interfereaz.

Instruciunile utilizate pentru actualizarea bazelor de date sunt urmtoarele:


INSERT, care adaug noi linii ntr-o tabel.
DELETE, care terge linii dintr-o tabel.
UPDATE, care modific datele deja existente n baza de date.
Adugarea Datelor n Baza de Date
n mod obinuit, o nou linie este adugat ntr-o tabel atunci cnd o nou entitate,
reprezentat de linia respectiv, apare n lumea real.
Adugarea unei singure linii
Instruciunea INSERT pentru adugarea unei singure linii ntr-o tabel conine o clauz INTO
i o clauz VALUES. Clauza INTO precizeaz tabela n care va fi adugat noua linie; clauza
VALUES specific valorile pe care le vor conine coloanele din linia nou adugat.
Adugarea mai multor linii
A doua form a instruciuni INSERT adaug mai multe linii noi ntr-o tabel. n aceast form
a instruciunii INSERT, valorile pentru noile linii nu sunt specificate explicit n interiorul
instruciunii. Sursa noilor linii este o interogare a unei baze de date, interogare specificat n
instruciunea INSERT.
tergerea datelor dintr-o tabel
n mod obinuit, o linie dintr-o tabel este tears cnd entitatea reprezentat de linia
respectiv dispare din lumea real.
Instruciunea DELETE
Instruciunea DELETE terge liniile selectate dintr-o tabel. Aceast instruciune conine o
clauz FROM i o clauz WHERE. Clauza FROM precizeaz tabela din care vor fi terse
liniile. Clauza WHERE specific liniile care vor fi terse din tabela respectiv.
tergerea tuturor liniilor dintr-o tabel
Clauza WHERE dintr-o instruciune DELETE este opional dar este aproape ntotdeauna
prezent. Dac este omis, atunci vor fi terse toate liniile din tabela respectiv.
DELETE cu subinterogri
Instruciunea DELETE cu o condiie simpl de cutare: selecteaz liniile care vor fi terse pe
baza interogrii doar a tabelei din care urmeaz a fi terse liniile. Uneori, selecia liniilor n
vederea tergerii trebuie fcut pe baza datelor din alte tabele.
Subinterogrile din clauza WHERE a unei instruciuni DELETE pot fi imbricate, la fel ca n
cazul instruciunii SELECT. De asemenea, pot conine referine externe (ctre coloane din alte

22
tabele dect cele precizate n clauza FROM a subinterogrii). Ca urmare, clauza FROM a
instruciunii DELETE funcioneaz la fel ca cea a instruciunii SELECT.
Referinele externe sunt ntlnite adesea n subinterogrile dintr-o instruciune DELETE
deoarece ele implementeaz join-ul dintre tabelele specificate n subinterogri i tabela int
(din care urmeaz s fie terse nregistrrile).
Modificarea datelor din baza de date
n mod uzual, valorile stocate n baza de date sunt modificate atunci cnd se modific valorile
corespunztoare din lumea real.
Instruciunea UPDATE
Instruciunea UPDATE modific valorile uneia sau mai multor coloane din una sau mai multe
linii dintr-o singur tabel. Numele tabelei int trebuie specificat n instruciunea UPDATE.
Clauza WHERE selecteaz liniile care urmeaz a fi modificate. Clauza SET precizeaz care
coloane vor fi modificate i stabilete noile valori ale acestora.
Clauza SET din instruciunea UPDATE conine o list de atribuiri separate prin virgul.
Fiecare dintre aceste atribuiri identific o coloan int care va fi actualizat i precizeaz cum
va fi calculat noua valoare pentru aceast coloan. Fiecare coloan int poate s apar o
singur dat n list; nu pot exista dou atribuiri pentru aceeai coloan. Numele coloanelor
pot fi calificate sau nu, dar nu exist nici o ambiguitate n privina numelor acestora deoarece
coloanele trebuie s fac parte dintr-o singur tabel (tabela int).
Expresia din fiecare atribuire trebuie s fie o expresie SQL valid, de un tip de dat
compatibil cu tipul de dat al coloanei respective. Expresia trebuie s poat fi calculat pe
baza valorilor liniei curente, care urmeaz s fie actualizat. Expresia nu poate conine funcii
la nivel de grup sau subinterogri. Dac o expresie din lista de atribuiri se refer la valoarea
unei coloane din tabela int, valoarea folosit la evaluarea expresiei este valoarea coloanei
respective nainte de actualizare. Acest lucru este adevrat i n cazul coloanelor care apar n
clauza WHERE. De exemplu, s considerm urmtoarea
Crearea unei baze de date
Limbajul de definire a datelor(DDL)
Instruciunile INSERT, DELETE, UPDATE descrise n prima parte a capitolului, se ocupau de
manipularea datelor din baza de date. Acestea formeaz limbajul de manipulare a datelor
(DML) ; instruciunile DML pot modifica datele din baza de date dar nu pot modifica
structura acesteia. Niciuna dintre aceste instruciuni nu poate s creeze sau s tearg tabele
sau coloane dintr-o tabel. Modificarea structurii bazei de date este realizat de un alt grup de
instruciuni, numit de obicei Limbaj de Definire a Datelor. Utiliznd DDL putem :
S crem o nou tabel.
S tergem o tabel.
S modificm structura unei tabele.
S definim o tabel virtual (vedere).
S asigurm controlul accesului la baza de date.
S creem indeci, pentru a face accesul la date mai rapid.
S controlm parametrii fizici de stocare a datelor.
Partea principal a DDL este format din trei aciuniSQL :
CREATE, care definete i creeaz un obiect al bazei de date.
DROP, care terge un obiect din baza de date.
ALTER, care modific definiia unui obiect deja existent al bazei de date.
Crearea unei baze de date
Standardul SQL1 precizeaz limbajul utilizat pentru descrierea structurii bazei de date dar nu
precizeaz cum anume este creat baza de date; fiecare SGBD are o abordare proprie a
modului n care creeaz o baz de date. Multe dintre SGBD-urile existente pe pia au o
23
pereche de instuciuni CREATE DATABASE / DROP DATABASE utilizate pentru crearea i
respectiv tergerea unei baze de date.
Definirea tabelelor
Cea mai important structur ntr-o baz de date relaional este tabela.
Crearea unei tabele (CREATE TABLE)
Instruciunea CREATE TABLE definete o nou tabel n baza de date. Diferitele clauze ale
instruciunii precizeaz elementele din definiia unei tabele. Numele tabelei trebuie s fie un
identificator SQL valid i unic. Tabela nou creat este goal dar este pregtit pentru
adugarea de noi linii, utiliznd instruciunea INSERT.
Definirea coloanelor
Coloanele tabelei nou create sunt definite n interiorul instruciunii CREATE TABLE.
Definiiile coloanelor sunt incluse ntr-o list cuprins ntre paranteze rotunde, separate prin
virgul. Ordinea coloanelor n lista de definiie va determina ordinea coloanelor din tabela
respectiv. n instruciunea CREATE TABLE, pentru fiecare coloan putem specifica:
Numele coloanei, care va fi utilizat pentru a ne referi la coloana respectiv din
instruciunile SQL. Fiecare coloan din tabel trebuie s aib un nume unic n tabela
respectiv dar pot exista coloane din tabele diferite care s aib acelai nume.
Tipul de dat al coloanei, care va preciza natura datelor care pot fi stocate n coloana
respectiv. Unele tipuri de dat, ca VARCHAR i DECIMAL necesit informaii
suplimentare, cum ar fi lungimea sau numrul de zecimale. Aceste informaii suplimentare
sunt cuprinse ntre paranteze rotunde care urmeaz cuvntului cheie reprezentnd tipul de
dat.
Dac o coloan conine, n mod obligatoriu, valori. Clauza NOT NULL previne apariia
valorilor nule ntr-o coloan; n absena acesteia, valorile NULL sunt premise.
O valoare implicit pentru coloan. SGBD utilizeaz aceast valoare cnd o instruciune
INSERT nu precizeaz o valoare pentru aceast coloan.
Standardul SQL2 permite cteva clauze suplimentare, ca parte a definiiei unei coloane, care
precizeaz dac o coloan conine valori unice, dac este cheie primar sau strin sau poate
restriciona valorile pe care le poate lua aceasta.
Vederi (Tabele virtuale)
Tabele unei baze de date definesc structura i organizarea datelor acesteia. SQL ne permite s
privim datele din baza de date i n alte moduri dect cele prezentate de tabele, prin utilizarea
vederilor. O vedere este o interogare SQL stocat n baza de date i creia i se asociaz un
nume. SQL permite accesul la rezultatele acestei interogri ca i cnd aceasta ar fi o tabel
real. Vederile sunt o parte important a SQL-ului, din cteva motive:
Ofer utilizatorilor mai multe perspective asupra datelor din baza de date.
Restricioneaz accesul la date, astfel nct un utilizator va avea acces numai la
anumite linii sau coloane dintr-o tabel.
Simplific accesul la baza de date prin faptul c prezint unui anumit utilizator datele
din baza de date n modul cel mai natural pentru acesta.
O vedere este deci o tabel virtual a bazei de date, al crei coninut este definit pe baza unei
interogri. Pentru utilizatorii bazei de date, vederea apare ca i o tabel real, cu un set de
nume de coloane i linii cu date. Dar, spre deosebire de o tabel real, o vedere nu exist n
baza de date ca o mulime de valori stocate. Liniile i coloanele vizibile prin intermediul unei
vederi sunt de fapt rezultatele interogrii care definete vederea. SQL creeaz iluzia unei
vederi prin faptul c atribuie interogrii un nume, ca i n cazul unei tabele, i stocheaz
definiia vederii n baza de date.
Crearea unei vederi (CREATE VIEW)

24
Pentru crearea unei vederi se utilizeaz instruciunea CREATE VIEW. Instruciunea atribuie
un nume vederii i precizeaz interogarea care definete vederea. Opional, instruciunea
CREATE VIEW poate atribui un nume coloanelor vederii nou create. Dac este prezent o
list cu nume de coloane, aceasta trebuie s aib acelai numr de elemente ca i al coloanelor
furnizate de interogare. Menionm c nu pot fi specificate dect numele coloanelor; tipul de
dat, dimensiunea sau alte caracteristici ale coloanelor sunt derivate din definiiile coloanelor
din tabelele surs. Dac lista de coloane este omis, fiecare coloan din vedere va avea acelai
nume cu al coloanei din interogare. Numele coloanelor unei vederi trebuie specificate explicit
doar n cazul n care interogarea cuprinde coloane calculate sau dou coloane cu acelai nume,
provenite din tabele surs diferite.
Vederi orizontale
Una dintre utilizrile obinuite ale vederilor este de a permite accesul utilizatorilor numai la
unele dintre liniile unei tabele
Vederi verticale
O alt utilizare frecvent a vederilor este pentru a permite accesul utilizatorilor doar la
anumite coloane ale unei tabele.
Vederi oarecare
SQL nu restricioneaz definiiile vederilor la cele pur orizontale sau verticale. De fapt,
limbajul SQL nu cuprinde noiunile de vedere orizontal i vedere vertical. Aceste concepte,
mai degrab, ne ajut s vizualizm cum sunt prezentate n vederi datele din tabelele surs.
Vederi la nivel de grup
Interogarea specificat n definiia unei vederi poate include clauza GROUP BY. Un astfel de
tip de vedere poart numele de vedere la nivel de grup. Vederile de grup realizeaz aceleai
funcii ca i interogrile la nivel de grup; grupeaz liniile i furnizeaz ca rezultat al
interogrii cte o singur linie, pentru fiecare grup.
Spre deosebire de vederile orizontale sau de cele verticale, n cazul vederilor la nivel de grup
nu exist o coresponden unu-la-unu ntre liniile din vedere i cele din tabela surs. O vedere
la nivel de grup nu este doar un filtru asupra tabelei surs, care s afieze doar anumite linii
sau coloane ale acesteia; ea sintetizeaz informaiile din tabela surs i din aceast cauz
SGBD-ul depune un efort substanial pentru procesarea interogrii din definiia vederii i
pentru a da iluzia unei tabele.
Vederile la nivel de grup pot fi utilizate n interogri dar nu pot fi actualizate. Spunem c
vederile la nivel de grup sunt read-only.
Reamintim c funciile de agregare imbricate, ca de exemplu MIN(MIN(A)), nu sunt permise
n SQL. Dei vederile la nivel de grup ascund funciile de agregare din lista de selecie,
SGBD-ul tie de existena acestora i mpiedic nclcarea acestei restricii.
Vederi de tip join
Una dintre cele mai uzuale utilizri ale vederilor este pentru simplificarea interogrilor. Prin
specificarea, n definiia vederii, a unei interogri care se refer la dou sau trei tabele putem
crea o vedere de tip join, care culege date din dou sau mai multe tabele diferite i prezint
rezultatele interogrii sub forma unei tabele virtuale. Dup ce a fost definit putem utiliza o
interogare simpl asupra vederii , ca n cazul unei tabele reale, n locul unei interogri asupra
a dou sau mai multor tabele.
Vederile actualizabile i standardul ANSI/ISO
Standardul ANSI/ISO precizeaz c o vedere este actualizabil dac satisface urmtoarele
condiii:

25
Nu trebuie s conin clauza DISTINCT; liniile duplicat nu trebuie eliminate din
rezultatul interogrii.
Clauza FROM trebuie s conin o singur tabel; aadar vederea trebuie s aib o
singur tabel surs. Dac tabela surs este, la rndul ei, o vedere atunci fiecare element din
lista de selecie trebuie s fie o referin la o coloan; lista de selecie nu poate conine
expresii, cmpuri calculate sau funcii de agregare.
Clauza WHERE nu trebuie s includ subinterogri.
Interogarea nu trebuie s cuprind clauzele GROUP BY sau HAVING.
Conceptul care st la baza acestor restricii este mai uor de memorat dect regulile: pentru ca
o vedere s fie actualizabil, SGBD-ul trebuie s poat identifica, pentru fiecare linie din
vedere, linia corespunztoare din tabela surs. Similar, SGBD-ul trebuie s poat stabili,
pentru fiecare coloan din vedere, coloana corespunztoare din tabela surs. Dac o vedere
ndeplinete aceste criterii, atunci putem defini pentru aceasta operaii de adugare, tergere
sau actualizare.
tergerea unei vederi (DROP VIEW)
Standardul SQL2 ofer suport pentru tergerea unei vederi, prin intermediul instruciunii
DROP VIEW. De asemenea, furnizeaz suport pentru controlul tergerii unei vederi de a crei
definiie depind alte vederi.
Cap. VII GESTIONAREA TRANZACIILOR
Conceptul de gestionare a tranzaciilor se refer la problematica meninerii ntr-o stare
consistent a bazei de date n condiiile n care accesul la date se face ntr-un regim concurent
i este posibil apariia unor defecte. n consecin se disting dou domenii de sine stttoare
n cadrul problematicii generale a gestiunii tranzaciilor :
Controlul concurenei
Se ocup cu mecanismele de sincronizare a acceselor la baza de date astfel nct s fie
meninut integritatea bazei de date. Atunci cnd controlul concurenei este realizat prin
mecanismele de blocare (care la ora actual snt cele mai rspndite) mai apare o problem,
colateral, i anume aceea a interblocrilor. Datorit importanei sale problema gestionrii
interblocrilor este de multe ori tratat ca o problematic de sine stttoare a gestionrii
tranzaciilor.
Rezistena la defecte
Se refer la tehnicile prin care se asigur att tolerana sistemului fa de apariia unor
defecte, ct i capacitatea de recuperare a acestuia, adic posibilitatea de revenire la o stare
consistent n urma apariiei unui defect care a cauzat intrarea lui ntr-o stare inconsistent.
7.1 Definiia conceptului de tranzacie
Prin controlul concurenei i rezistena la defecte se urmrete asigurarea consistenei
i siguranei bazei de date. O baz de date este ntr-o stare consistent dac respect toate
constrngerile de integritate a datelor definite asupra sa. n timpul operaiilor de adugare,
tergere i modificare, baza de date trece dintr-o stare n alta. Evident, starea rezultat dup
orice prelucrare asupra bazei de date trebuie s fie o stare consistent, chiar dac n timpul
prelucrrii baza de date s-a aflat temporar ntr-o stare inconsistent.
Sigurana bazei de date se refer la tolerana acesteia fa de defecte i la capacitatea
de recuperare dup apariia unui defect.
O tranzacie este o unitate logic de prelucrare care asigur consistena i sigurana
bazei de date. n principiu, orice execuie a unui program se poate considera o tranzacie dac
baza de date este ntr-o stare consistent att nainte ct i dup execuia sa. Consistena bazei
de date este garantat independent de faptul c :
1. tranzacia a fost executat n mod concurent cu alte tranzacii ;
2. au aprut defecte n timpul execuiei tranzaciei.

26
n general, o tranzacie const dintr-o secven de operaii de citire i scriere a bazei de
date, la care se adaug o serie de operaii de calcul. Baza de date poate fi ntr-o stare temporar
inconsistent n timpul executrii tranzaciei dar trebuie s fie n stri consistente att nainte
ct i dup execuia acesteia.
Condiii de terminare a tranzaciilor
O tranzacie nu se termin ntotdeauna cu succes totui orice tranzacie trebuie s se termine,
indiferent de situaia existent (chiar i n cazul unor defecte). Dac tranzacia reuete s
execute cu succes toate operaiile prevzute, atunci aceasta se va termina printr-o operaie de
validare (commit). n schimb, dac dintr-un motiv sau altul tranzacia nu reuete s-i
execute complet operaiile prevzute, atunci se va termina printr-o operaie de abortare
(abort sau rollback). Motivele pentru care o tranzacie se aborteaz sunt numeroase, ele pot fi
interne tranzaciei sau externe acesteia (ex. : detectarea de ctre SGBD a unei situaii de
interblocare). n cazul abortrii, execuia tranzaciei este oprit iar efectele tuturor operaiilor
pe care le-a executat pn n acel moment sunt anulate astfel nct baza de date revine la
starea de dinaintea lansrii tranzaciei.
Proprietile tranzaciilor
Prin definie, tranzaciile sunt uniti de execuie care garanteaz consistena i sigurana
bazei de date. Pentru aceasta orice tranzacie trebuie s satisfac un set de patru condiii,
sintetizate n literatura de specialitate prin acronimul ACID atomicitate, consisten,
izolare, durabilitate.
Atomicitatea

Se refer la faptul c o tranzacie este considerat o unitate elementar de prelucrare.


Aceasta nseamn c execuia unei tranzacii se face dup regula totul sau nimic , adic ori
sunt executate toate operaiile din tranzacie ori nu se execut nimic. Dac o tranzacie este
ntrerupt datorit unor cauze oarecare, atunci i revine SGBD-ului sarcina de a asigura, ntr-
un fel sau altul, terminarea tranzaciei. Dup eliminarea cauzei care a dus la ntreruperea
tranzaciei, n funcie de stadiul de execuie n care s-a aflat aceasta n momentul apariiei
ntreruperii, SGBD-ul poate proceda ntr-unul dintre modurile urmtoare :
fie completeaz operaiile rmase neexecutate din cadrul tranzaciei, terminnd
tranzacia cu succes
fie anuleaz toate efectele operaiilor executate pn n momentul ntreruperii,
terminnd tranzacia prin abortare.
Consistena
Consistena unei tranzacii const pur i simplu n corectitudinea ei. Orice tranzacie, dac
este executat independent, trebuie s menin consistena bazei de date. Altfel spus, o
tranzacie este un program corect care transform baza de date dintr-o stare consistent ntr-o
alt stare consistent a sa. Prin consistena bazei de date nelegem satisfacerea tuturor
constrngerilor de integritate, explicite sau implicite, cum ar fi :
unicitatea cheilor primare ;
integritatea referenial ;
orice predicat exprimat n sens de constrngere de integritate asupra bazei de date.
Bineneles c este de neconceput verificarea tuturor acestor condiii dup executarea fiecrei
tranzacii. De aceea unicul criteriu pentru stabilirea proprietii de consisten a unei tranzacii
rmne corectitudinea sa din punct de vedere logic. Spre deosebire de celelalte proprieti din
complexul ACID, care sunt asigurate de ctre sistem, proprietatea de consisten a tranzaciei
cade n sarcina programatorului de aplicaii. De remarcat faprul c strile intermediare prin
care trece baza de date n timpul execuiei unei tranzacii nu sunt neaprat consistente.
Izolarea

27
Se refer la proprietatea oricrei tranzacii de a avea acces doar la strile consistente
ale bazei de date. Aceasta nseamn c modificrile efectuate de ctre o tranzacie sunt
inaccesible altor tranzacii concurente pn n momentul validrii acesteia. Prin proprietatea
de izolare se creeaz iluzia c fiecare tranzacie este executat singur n sistem. Utilizatorul
care a lansat o tranzacie nu va percepe n nici un fel faptul c alte tranzacii sunt executate n
acelai timp. Izolarea tranzaciilor este asigurat prin algoritmi de control al concurenei.
Proprietatea de izolare este important deoarece elimin fenomenul de abortare n
cascad a tranzaciilor (efect domino). ntr-adevr dac rezultatele incomplete ale unei
tranzacii ar fi vizibile altor tranzacii nainte de validarea acesteia i dac se ntmpl ca
aceast tranzacie s aborteze, atunci toate tranzaciile care au accesat rezultatele incomplete
vor trebui abortate. Aceasta poate conduce la abortarea altor tranzacii .a.m.d. rezultnd
efectul domino.
Durabilitatea
Durabilitatea unei tranzacii este proprietatea prin care se garanteaz faptul c, odat
tranzacia validat, rezultatele sale devin permanente i sunt nscrise n baza de date. Chiar
dac dup momentul validrii apare un defect care mpiedic nscrierea normal a rezultatelor
tranzaciei n baza de date, acestea vor fi trecute n baza de date dup reluarea activitii.
Rezultatele tranzaciilor validate vor supravieui oricrei cderi de sistem.
Mecanismul prin care re realizeaz proprietatea de durabilitate are la baz conceptul
de jurnal. Jurnalul este un fiier secvenial n care sunt nregistrate toate operaiile efectuate de
tranzaciile din sistem. Jurnalul conine istoria evoluiei ntegului sistem. El este folosit la
reluarea activitii de ctre procedurile de recuperare care vor completa eventualele operaii
neterminate ale tranzaciilor care au fost validate nainte de apariia defectului.

28

S-ar putea să vă placă și