Sunteți pe pagina 1din 10

BAZE DE DATE

CURS nr. 4

1.2. INDEPENDENA DATELOR. LIMBAJELE DE DEFINIRE I MANIPULARE A


DATELOR
Pornind de la lucrrile lui Codd referitoare la modelul relaional i la limbajele bazate pe algebra
relaional sau calculul relaional, comunitatea internaional a fcut, n timp, mari eforturi de
redefinire i mbuntire a acestor concepte. n acest sens au fost dezvoltate o serie de versiuni ale
limbajelor relaionale, cum ar fi SQL (Structured Query Language), QBE (Query-By-Example) i
QUEL (Query Language).
SQL i are originile n anul 1974 cnd IBM l-a folosit pentru prima dat n proiectul su de
cercetare System R care funciona pe sisteme mainframe VS/2 sub denumirea de Structured English
Query Language (sau SEQueL). Ulterior numele i-a fost schimbat n SQL (Structured Query
Language, pronunat sequel sau S-Q-L). Produsele ulterioare ale firmei IBM, SQL/DS i, apoi,
popularul DB2 folosesc acest limbaj. SQL se bazeaz pe calculul relaional ce are n vedere
utilizarea de variabile constituite din tupluri. n 1986, Institutul Naional American pentru Standarde
(ANSI) a elaborat i lansat standardele SQL contribuind astfel la extinderea acestuia n ntreaga
comunitate a productorilor de baze de date care, dei are numeroase variante, folosete totui
acelai set de comenzi i structuri de baz standardizate.

Instane i scheme
Bazele de date se modific des n decursul timpului. Datele aflate ntr-o baz de date la un anumit
moment dat alctuiesc o instan a acelei baze de date. Proiectul general al bazei de date este
denumit schema bazei de date. O schem reprezint o descriere a datelor conform modelului de
date propus. Schema bazei de date reprezint ceea ce n limbajele de programare clasice este
cunoscut sub numele de definirea tipurilor de date, iar instana unei baze de date este ceea ce n
limbajele de programare clasice este cunoscut sub denumirea de valoarea unei variabile.
Schema bazei de date reprezint descrierea general a bazei de date i conine:
- informaiile fizice de proiectare;
- informaii referitoare la utilizator;
- descrieri de nivel nalt ale tranzaciilor i aplicaiilor precum i legturile utilizatorilor cu ele;
- relaiile dintre date i tranzacii;
- statistici de utilizare.
n funcie de nivelul de abstractizare corespunztor exist urmtoarele tipuri de scheme:
1. Schema extern (subschema) se afl la nivel superior i corespunde unei valori a datelor. Ea
descrie vederile bazei de date ce se folosesc ntr-o anumit aplicaie i corespunde schemei
conceptuale. Schema reprezint vederea utilizatorilor asupra datelor (aplicaia).
2. Schema conceptual (logic) corespunde nivelului conceptual i descrie articolele, relaiile i
constrngerile dintre ele. Ea este o descriere abstract i integrat a tuturor datelor, independent
de sistemul de gestiune al bazelor de date folosit i trebuie s corespund schemei interne.
Schema reprezint perspectiva sistemului de gestiune al bazelor de date.
3. Schema intern se afl la nivel inferior i conine definiiile tuturor nregistrrilor stocate n
baza de date, metodele de reprezentare, cmpurile i indexurile datelor (descrie modul de
stocare fizic a datelor precum i structurile de acces la date). Schema reprezint perspectiva
realizrii sistemului/implementrii.
Sistemul de gestiune al bazelor de date efectueaz corespondene ntre cele trei tipuri de scheme
pentru a le corela. Dac se produce o modificare la nivel fizic, schema intern trebuie modificat,
dar schema conceptual poate rmne neatins. Corespondenele efectuate ntre vederile
utilizatorilor (nivelul extern) i stocarea fizic a datelor (nivelul intern) ajut la ascunderea
complexitii nivelului fizic, ceea ce face s creasc flexibilitatea i posibilitile de adaptare.
Sistemul SGBD trebuie s verifice dac fiecare schem extern poate fi derivat din schema
conceptual. Pentru a stabili corespondena dintre fiecare schem extern i cea intern, sistemul
trebuie s foloseasc informaiile din schema conceptual.

BAZE DE DATE

CURS nr. 4

Schema relaional
Structura relaional a unei baze de date mai este cunoscut i sub denumirea de schem relaional
(sau metastructur datorit faptului c ea descrie structura datelor). O schem relaional reprezint
o descriere a unei colecii particulare de date, folosind un anumit model dat. Aceasta predefinete
posibilele stri ale bazei de date, n sensul c nici o stare a unei baze de date nu poate conine date
care s nu fie obinute n urma instanierii schemei respectivei baze de date i nici o stare a unei
baze de date nu poate conine o asociere ntre dou seturi de date dac aceast asociere nu a fost
definit n schema bazei de date. n plus, procedurile de manipulare a datelor trebuie s fie separate
de date. Modelul relaional al datelor este cel mai utilizat model pe plan mondial la ora actual.
Conceptul de baz ce fundamenteaz acest model este relaia, transformat ntr-un tabel ce conine
rnduri i coloane. Fiecare relaie are o schem ce descrie coloanele sau cmpurile tabelului. n
practic, schema bazei de date conine:
a. definiia tipurilor de date;
b. definiia relaiilor, specificnd pentru fiecare dintre ele:
- intensia (numele tuturor atributelor);
- cheia primar.
De obicei, ntr-un sistem relaional att schema conceptual ct i schema extern sunt relaionale.
Pentru a prezenta proiectul unei baze de date independent de orice limbaj de definire a datelor, de
obicei, se folosete o notaie general acceptat care are formatul:
<nume relatie>: <lista numelor atributelor>

O astfel de notaie este util n scopul clarificrii organizrii generale a bazei de date, dar nu
lmurete o serie de detalii referitoare, n special, la proprietile domeniilor de valori ale
atributelor. O definire mai complet care utilizeaz limbajul de definire a datelor se poate face cu
ajutorul notaiei originale propus de Codd, n care componentele sunt descrise n amnunt. Cu
ajutorul acestei notaii se pot crea entitile, atributele, domeniile de valori precum i cheile sub
forma unor entiti ale schemei bazei de date. Un astfel de limbaj definete doar structura acestor
entiti, nu i coninutul lor.

Independena de date
Reprezint faptul c nivelele superioare nu sunt afectate de modificrile fcute la nivelele
inferioare. Aceasta nseamn i faptul c vederea unui utilizator (schema extern) este complet
independent de vederea altui utilizator, ceea ce are un efect extrem de favorabil n cazul
modificrilor efectuate de ctre administratorul bazei de date (ce pot apare ca urmare a cererilor
venite din partea utilizatorului respectiv, ca urmare a necesitilor de adaptare a sistemului la noile
condiii sau ca urmare a dorinei de optimizare a funcionrii sistemului) care poate face modificri
ale vederii unui singur utilizator fr a afecta vederile celorlali utilizatori. Conform arhitecturii
propuse de organizaiile ANSI/SPARC se ofer dou nivele de independen a datelor:
1. Independena logic de date
2. Independena fizic de date.
Independena logic de date
Se refer la imunitatea schemelor externe fa de modificrile efectuate n schema conceptual.
Modificrile din schema conceptual pot fi:
a. adugarea sau eliminarea de noi entiti;
b. adugarea sau eliminarea de atribute;
c. adugarea sau eliminarea de relaii.
Independena logic de date nseamn c se pot face modificri n schema conceptual fr a fi
necesar schimbarea schemei externe existente sau rescrierea programelor de aplicaie. Modificrile

BAZE DE DATE

CURS nr. 4

nu trebuie s afecteze toi utilizatorii ci doar pe aceia pentru care s-au fcut. Acetia trebuie
informai de acest lucru.
Independena fizic de date
Se refer la imunitatea schemei conceptuale fa de modificrile efectuate n schema intern.
Modificrile din schema intern pot fi:
a. organizare diferit a fiierelor;
b. structuri de stocare diferite;
c. dispozitive de stocare diferite;
d. indexuri sau algoritmi diferii.
Modificrile fcute n schema intern se fac cu scopul mbuntirii performanelor bazei de date.
Independena de date este un concept care rmne de multe ori un deziderat greu de realizat, chiar i
n cazul sistemelor din ce n ce mai performante ale zilelor noastre. Totui, bazele de date
relaionale, datorit limbajelor relaionale pe care le folosesc, ofer un nalt grad de independen
fa de date. Dei, aa cum am artat, ntr-un sistem relaional att schema conceptual ct i cea
extern sunt, ambele, relaionale, totui, schema conceptual se construiete cu ajutorul unor
instrumente ce au un caracter mult mai general dect cel oferit de modelul relaional.
Presupunnd, de exemplu, c o vedere nu mai este necesar unui utilizator, datorit faptului c
anumite atribute nu mai sunt de actualitate, alte atribute din baza de date prezentnd interes pentru
acesta, se poate efectua o modificare n clauza SELECT pentru a rspunde cererii de modificare.
Att timp ct fiecare vedere este definit separat n funcie de schema conceptual i att timp ct
schema conceptual nu se modific, orice vedere creat pe baza acelei scheme poate fi actualizat
fr a afecta celelalte vederi.
Independena de date se mai folosete i atunci cnd se dorete s se obin o independen a
vederilor utilizatorilor fa de schema conceptual. De obicei, dac relaiile i atributele la care se
face referire n definiia vederii nu sunt eliminate cu ocazia unei modificri, vederea nu va fi
afectat de modificare. n acest fel, cererile suplimentare de modificare pot fi efectuate fr teama
c ele ar putea afecta aplicaiile existente care folosesc acea baz de date.
n sfrit, independena de date se mai refer i la faptul c este posibil modificarea schemei prin
care se realizeaz nmagazinarea fizic a datelor, fr a afecta schemele conceptual, respectiv
extern.

1.2.2. Limbajele bazelor de date


Pentru a construi o baz de date un utilizator trebuie s:
a. defineasc schema bazei de date;
b. aplice o colecie de operatori pentru a crea, nmagazina, extrage i modifica datele.
Un sistem de gestiune al bazelor de date obinuit trebuie s ofere o serie de instrumente care s
uureze activitile specificate anterior. n acest sens, SQL trebuie s fie limbajul standard relaional
al bazei de date, avnd urmtoarele componente:
a. un limbaj de definire a datelor (Data Definition Language DDL), utilizat la definirea schemei
bazei de date
b. un limbaj de manipulare a datelor (Data Manipulation Language DML), care permite
utilizatorului manipularea obiectelor bazei de date i a relaiilor dintre acestea, n contextul
schemei bazei de date.
Aceste limbaje pot diferi de la un productor la altul n cadrul modelului pe care acetia l folosesc
datorit aspectelor legate de complexitate, funcionalitate i uurina n exploatare (interfaa
utilizator). De multe ori aceste limbaje sunt denumite sublimbaje de date deoarece nu includ
construcii pentru toate necesitile de calcul cum sunt cele asigurate de limbajele de nivel nalt.
Majoritatea sistemelor de gestiune a bazelor de date au ncorporat sublimbajul ntr-un limbaj de
programare de nivel nalt (ex. C++). n acest caz limbajul de nivel nalt este numit limbaj gazd.

BAZE DE DATE

CURS nr. 4

1.2.2.1. Limbajul de definire a datelor


Permite administratorului bazei de date sau utilizatorului s descrie i s denumeasc entitile din
baza de date precum i relaiile ce pot exista ntre diferitele entiti. Limbajul de definire al datelor
reprezint o colecie de instruciuni utilizate pentru descrierea tipurilor de date. Administratorul
bazei de date trebuie s defineasc structura bazei de date cu ajutorul acestor tipuri de date. Acesta
este utilizat pentru a defini o schem a bazei de date sau pentru a modifica una existent.
Rezultatul compilrii instruciunilor din limbajul de definire a datelor reprezint un set de tabele
stocate n fiiere speciale denumite cataloage de sistem. Catalogul de sistem conine meta-datele
(datele care descriu obiectele din baza de date). Metadatele conin definiii ale nregistrrilor datelor
i altor obiecte cerute de sistemul de gestiune al bazei de date. Sistemul de gestiune al bazei de date
consult mai nti catalogul de sistem pentru a accesa corect datele. Teoretic, sunt trei limbaje de
definire a datelor:
- pentru schema extern;
- pentru schema conceptual;
- pentru schema intern.
Limbajul de definire a datelor conine comenzi necesare urmtoarelor operaii:
- definirea schemelor de relaie;
- eliminarea relaiilor;
- crearea indecilor;
- modificarea schemelor.
Limbajul de definire a datelor permite specificarea urmtoarelor informaii necesare n orice baz
de date:
- schema fiecrei relaii din baza de date;
- domeniul de valori asociat fiecrui atribut;
- constrngerile de integritate;
- setul de indeci care se creeaz pentru fiecare relaie n parte;
- informaii referitoare la securitatea sistemului i la modul de acces la acesta;
- structura de nmagazinare fizic pe disc a datelor.

1.2.2.1.1. Definirea schemei n SQL


O relaie n SQL se definete cu ajutorul sintaxei:
CREATE TABLE r (A1;D1;A2;D2; : : :;An;Dn,
i, : : : , constrangere_de_integritate1 i)

constrangere_de_integritate1

n care r reprezint numele relaiei, AI reprezint numele unui atribut, iar DI reprezint domeniul n
care ia valori acel atribut. Constrngerile de integritate permise sunt cheia primar (Aj1; : : :;Ajm) i
regulile de validare a domeniului de valori (check(P)).
O cheie primar trebuie s ndeplineasc dou condiii:
- valorile cheii primare trebuie s fie unice;
- ntr-o cheie primar nu trebuie s apar valori nule.
Standardul SQL-92 consider c apariia constrngerii not null n cheia primar este un fapt
redundant, dar standardul SQL-89 cere definirea explicit a acestui lucru. Regulile de validare a
domeniului de valori (check) se dovedesc a fi extrem de utile la creterea funcionalitii bazei de
date dar, uneori, sunt foarte costisitoare, aa cum se ntmpl, de exemplu, n cazul folosirii cheii
externe.
n cazul n care se dorete eliminarea unei relaii din baza de date trebuie folosit urmtoarea relaie:
DROP TABLE r

ceea ce nu este acelai lucru cu:

BAZE DE DATE

CURS nr. 4

DELETE r

care pstreaz relaia, dar elimin toate tuplurile din ea.


Comanda de modificare a structurii unui tabel poate fi folosit pentru a aduga sau elimina atribute
din cadrul unei relaii r existente n baza de date:
ALTER TABLE r ADD A D

n care A reprezint atributul, iar D reprezint domeniul de valori ce trebuie atribuit acestuia.
ALTER TABLE r DROP A

n care A reprezint atributul care trebuie eliminat din baza de date.

1.2.2.1.2. Utilizarea interogrilor SQL n cadrul aplicaiilor


SQL este un limbaj de interogare extrem de performant, datorit avantajului oferit de prelucrarea pe
seturi de nregistrri. Totui, el nu poate oferi procedurile necesare efecturii unei serii de activiti
i aciuni, cum ar fi: crearea de interfee grafice prietenoase, crearea i imprimarea de rapoarte,
interaciuni cu ali utilizatori, transferul datelor ntre baza de date i aplicaii. Din acest motiv este
necesar utilizarea unui limbaj de programare din generaia a treia care s realizeze conexiunea cu
baza de date i s efectueze sarcini dintre cele artate anterior.
Standardul SQL definete instruciunea EXEC care s poat fi folosit n astfel de situaii:
EXEC instructiune SQL

Instruciunile SQL admise sunt: DECLARE CURSOR, OPEN i FETCH care prelucreaz datele
din baza de date nregistrare cu nregistrare, precum i instruciunile de modificare, inserare sau
tergere a datelor.
Componenta dinamic SQL permite crearea i utilizarea de interogri SQL care s se modifice n
timpul rulrii aplicaiilor. De asemenea, n standardul SQL-92 sunt introduse module ce permit
definirea procedurilor n SQL.

1.2.2.2. Limbajul de manipulare a datelor


Asigur un set de procedee ce permit operaii de baz pentru manipularea datelor din baza de date.
Limbajul de manipulare a datelor asigur o colecie de operatori ce pot fi aplicai pentru a valida
instanele tipurilor de date n cadrul schemei i de a crea, modifica sau extrage astfel de instane. Cu
ajutorul acestor operatori se pot efectua urmtoarele operaii:
1. Regsirea datelor din baza de date (operaie principal).
2. Inserarea de date noi n baza de date.
3. Modificarea datelor existente.
4. tergerea de date din baza de date.
Exist dou tipuri de limbaje de manipulare a datelor:
Limabje de manipulare a datelor procedurale (specific modelelor reea i ierarhic) care permit
utilizatorului s comunice sistemului ce date sunt necesare i cum pot fi ele exact regsite. Aceste
limbaje prelucreaz informaia nregistrare cu nregistrare.
Limbaje de manipulare a datelor neprocedurale (specifice modelului relaional) care permit
utilizatorului s comunice sistemului ce date sunt necesare fr a specifica cum se regsesc datele.
Aceste limbaje prelucreaz informaia pe seturi de nregistrri i au urmtoarele caracteristici:
- confer o mai mare independen de date;
- cresc viteza de prelucrare a informaiei;
- sunt limbaje de generaia a patra (4GL - Fourth Generation Language).

BAZE DE DATE

CURS nr. 4

Exemple de astfel de limbaje ce aparin generaiei a patra sunt:


- limbajul SQL;
- limbajul QBE;
- generatoare de formulare;
- generatoare de rapoarte;
- generatoare grafice;
- generatoare de aplicaii.

1.2.2.2.1. Extragerea informaiilor din bazele de date


Limbajul de manipulare a datelor permite extragerea datelor dintr-o baz de date. Structura de baz
a unei expresii SQL const din utilizarea clauzelor SELECT, FROM i WHERE.
SELECT este o clauz ce folosete o list a atributelor ce urmeaz a fi prezentate utilizatorului i
care corespunde operaiei de proiecie din algebra relaional.
FROM este o clauz ce corespunde produsului cartezian din algebra relaional i n care se
introduc relaiile din care urmeaz a fi extrase atributele ce apar n clauza SELECT.
WHERE este o clauz ce corespunde predicatului de selecie din algebra relaional.
n mod obinuit o interogare se prezint sub forma:
SELECT A1;A2; : : :;An
FROM r1; r2; : : :; rm
WHERE P

n care fiecare AI reprezint un atribut, fiecare ri reprezint o relaie, iar P este un predicat, ceea ce
este echivalent expresiei:
A1;A2;:::;An (_P (r1 _ r2 _ : : :_rm))

Dac se omite clauza WHERE, predicatul P are valoarea True. Lista atributelor poate fi nlocuit
printr-un caracter * pentru a le alege pe toate. Prin intermediul SQL se alctuiete produsul
cartezian pe baza relaiilor precizate, se poate efectua o selecie cu ajutorul unui predicat, dup care
se poate face o proiecie pe anumite atribute. Rezultatul unei interogri SQL este tot o relaie i, n
mod implicit, nregistrrile duplicat nu sunt eliminate. n lista de selecie se pot afla i operaii
aritmetice.

Clauza WHERE
Predicatele pot avea orice grad de complexitate i pot implica:
- conexiuni logice de tip and, or, sau not;
- expresii aritmetice ce conin constante sau valori ale tuplurilor;
- operatorul between utilizat pentru definirea domeniilor de valori ale variabilelor.

Clauza FROM
Clauza FROM n sine, definete un produs cartezian calculat pe baza relaiilor care sunt specificate
n cadrul acesteia. SQL nu ofer echivalentul jonciunii naturale, dar aceasta poate fi exprimat cu
ajutorul unui produs cartezian urmate de operaiile de selecie i proiecie. Variabilele, care n SQL
sunt reprezentate de tuplurile relaiilor, se definesc n clauza FROM, putnd fi folosite n cadrul
expresiilor.

Operaia de redenumire
Redenumirea reprezint un mecanism utilizat la schimbarea numelor relaiilor sau atributelor.
Pentru aceasta se poate folosi clauza AS ce poate s apar att n clauza SELECT ct i n clauza
FROM, sub forma:

BAZE DE DATE

CURS nr. 4

Nume_vechi AS nume_nou

Operaii cu iruri
Cele mai frecvente operaii fcute cu irurile de caractere sunt cele n care se folosesc operatorii
Like sau Not Like cu scopul regsirii unor seturi de caractere specificate. Se mai pot folosi i o serie
de alte funcii caracter, cum ar fi concatenarea, extragerea subirurilor, determinarea lungimii unui
ir de caractere .a.m.d.

Ordonarea afirii nregistrrilor


SQL permite utilizatorului s controleze ordinea de apariie a tuplurilor prin folosirea clauzei
ORDER BY. Operaia de sortare poate fi foarte costisitoare i trebuie fcut numai n cazuri n care
chiar sunt necesare.

Tupluri duplicat
Limbajele formale de interogare se bazeaz pe relaiile matematice. Din acest motiv, n cadrul
relaiilor nu sunt permise nregistrrile duplicat dar, deoarece eliminarea acestora este extrem de
costisitoare SQL admite duplicatele. Dac se dorete eliminarea acestora se poate folosi clauza
DISTINCT, iar dac se dorete s se obin asigurarea c nregistrrile duplicat nu sunt eliminate se
folosete clauza ALL.

Operaii cu mulimi
SQL folosete n acest caz reuniunea, intersecia i diferena. Prin operaia de reuniune se elimin
duplicatele dar, dac nu se urmrete acest lucru se poate folosi clauza UNION ALL. n cazul
operaiei de diferen se poate face precizarea c standardul SQL din 1986 prevedea pentru aceast
operaie clauza MINUS, n timp ce standardul din 1992 a redenumit clauza care este folosit astzi
sub denumirea de EXCEPT.

Funcii agregat
SQL poate opera cu funcii pe grupuri de tupluri folosind clauza GROUP BY. Atributele respective
sunt folosite pentru a forma grupuri ce au aceleai valori, astfel nct SQL poate determina:
- valoarea medie (Avg);
- valoarea minim (Min);
- valoarea maxim (Max);
- suma total a valorilor (Sum);
- numrul total al nregistrrilor din grup.
Toate aceste funcii sunt denumite funcii agregat sau totalizatoare. Astfel de funcii ntorc drept
rezultat o singur valoare. Dac n aceeai interogare apare att clauza WHERE ct i clauza
HAVING, predicatul clauzei WHERE este aplicat primul. Acele tupluri care ndeplinesc condiia
impus se introduc n cadrul unor grupuri cu ajutorul clauzei GROUP BY. Clauza HAVING este
aplicat fiecrui grup care se formeaz. Grupurile ce ndeplinesc condiia impus prin clauza
HAVING sunt utilizate de clauza SELECT pentru a genera tuplurile rezultat. Dac nu exist o
clauz HAVING, tuplurile ce ndeplinesc condiia impus de clauza WHERE sunt tratate ca i cum
ar fi un singur grup.

Conceptul de NULL
Interogrile n care nu se cunosc toate valorile ce trebuie afiate pun probleme, deoarece o valoare
necunoscut nu poate fi comparat sau utilizat ca parte a unei funcii agregat. Toate comparaiile

BAZE DE DATE

CURS nr. 4

care implic valori necunoscute sunt false prin definiie. Pentru a determina dac n setul de
rezultate se afl valori necunoscute se poate utiliza cuvntul cheie NULL n scopul efecturii unui
astfel de test. Toate funciile agregat, cu excepia funciei COUNT ignor tuplurile ce au valori
necunoscute.

Relaii obinute prin cuplare


n cadrul standardului SQL-92 se prevede faptul c fiecare operaie de cuplare trebuie s aibe un tip
de jonciune i o condiie de cuplare. Tipurile de jonciuni prevzute n standardul respectiv sunt
jonciunile interioare, jonciunile exterioare stnga, jonciunile exterioare dreapta i jonciunile
complete exterioare. Cuvintele cheie interior, respectiv exterior sunt opionale, deoarece tipul de
jonciune poate fi dedus din jonciunea propriu-zis. n standardul SQL-92 se mai introduc alte dou
noi tipuri de jonciuni:
a. jonciunea ncruciat (o jonciune interioar fr condiie de cuplare);
b. jonciune de uniune (o jonciune exterioar complet aplicat pe o condiie de cuplare fals, cum
ar fi de exemplu situaia n care jonciunea interioar nu conine nici o nregistrare).
Utilizarea unei condiii de cuplare este obligatorie n cazul jonciunilor exterioare, dar este opional
n cazul jonciunilor interioare (dac se omite, se obine un produs cartezian).

Subinterogri imbricate
Membru al unui set de nregistrri
Pentru a determina acest lucru se pot folosi operatorii In i Not In.

Comparaii ntre seturi de nregistrri


Pentru a compara elementele unei mulimi se pot folosi operatorii de comparaie. Se interzice
utilizarea funciilor agregat n cadrul altor funcii agregat, astfel nct, de exemplu, nu este acceptat
formula Max(Avg()).

Testarea relaiilor ce nu conin nregistrri


Se face cu ajutorul construciei EXISTS care returneaz valoarea True dac subinterogarea care este
folosit ca argument conine nregistrri.

Testarea absenei tuplurilor duplicat


Se face cu ajutorul construciei UNIQUE care ntoarce valoarea True dac subinterogarea din
argumentul funciei nu conine tupluri duplicat.

Relaii derivate
Standardul SQl-92 permite utilizarea unei subinterogri n cadrul clauzei FROM. Dac se ntmpl
acest lucru, relaiei rezultat trebuie s i se dea un nume, iar atributele trebuie redenumite.

Modificrile bazei de date


Limbajul de manipulare a datelor permite acest lucru, aa cum se va vedea din cele ce urmeaz.

tergeri
Eliminarea tuplurilor din cadrul unei relaii se exprim n mod asemntor unei interogri, cu
deosebirea c n locul afirii tuplurilor rezultat, acestea sunt eliminate din cadrul relaiei respective,
aa cum se poate vedea din sintaxa:
DELETE FROM r
WHERE P

BAZE DE DATE

CURS nr. 4

Sunt eliminate acele tupluri din relaia r care ndeplinesc condiia specificat n predicatul P. Dac
se omite clauza WHERE, sunt eliminate toate tuplurile din cadrul relaiei. Se pot elimina doar
tuplurile dintr-o singur relaie la un moment dat, dar se poate asocia un numr nelimitat de relaii
cu ajutorul unei clauze SELECT-FROM-WHERE ce se poate introduce n cadrul unei clauze
WHERE a clauzei DELETE. O astfel de tehnic trebuie ns folosit cu pruden deoarece poate
duce la apariia de ambiguiti. Se recomand ca naintea utilizrii clauzei DELETE s se fac toate
testele necesare, marcndu-se tuplurile ce urmeaz a fi terse.

Inserri
Inserarea unei noi nregistrri n cadrul unei relaii se face fie prin specificarea unui tuplu, fie prin
utilizarea unei interogri al crei rezultat este setul de tupluri ce urmeaz a fi inserat. Valorile
atributelor tuplurilor inserate trebuie s respecte constrngerile de domeniu impuse.
nainte de a efectua o operaie de inserare se recomand evaluarea complet a unei instruciuni
SELECT corespondent pentru a evita apariia de probleme. Este posibil ca nu toate atributele
tuplurilor inserate s aibe valori i, prin urmare, n acest caz acestea trebuie s fie declarate ca fiind
necunoscute.

Actualizri
Operaia de actualizare permite modificarea anumitor valori n cadrul tuplurilor fr a fi necesar
modificarea lor complet. n general, clauza WHERE aplicat clauzei UPDATE poate conine orice
construcie corect acceptat ntr-o clauz SELECT obinuit. O clauz SELECT imbricat n
cadrul unei clauze UPDATE poate asocia o relaie care trebuie actualizat.

1.2.3. Alte caracteristici SQL


SQL face parte din categoria aa-numitelor limbaje de generaia a patra datorit puterii sale, a
conciziei i a procedurilor de nivel sczut pe care le conine. Produsele de baze de date conin un
limbaj special ce ajut programatorii de aplicaii s creeze abloane, interfee utilizator i rapoarte
de date. n limbajele de generaia a patra nu exist un standard unanim acceptat. Standardul SQL-92
definete sesiunile i mediile SQL. Sesiunea SQL reprezint un concept legat de tehnologia
client/server (conectare, deconectare, efectuare sau reluare a tranzaciilor), n timp ce mediul SQL
ofer fiecrui utilizator un identificator i o schem.
Ca limbaj neprocedural, SQL permite utilizatorilor s precizeze ce trebuie fcut fr a arta cum
trebuie fcut. Cererea fcut de ctre un utilizator este transformat de sistemul de gestiune a bazei
de date n detaliile tehnice necesare obinerii datelor. Din acest motiv, se spune c bazele de date
relaionale necesit mult mai puine eforturi de programare dect orice alt tip de baze de date sau
sistem de fiiere, ceea ce face ca limbajul SQL s fie relativ uor de nvat.

1.2.4. Query-By-Example (QBE)


Limbajele de interogare a datelor au fost dezvoltate la nceputul anilor aptezeci cnd interfeele
om-main erau, spre deosebire de cele din zilele noastre, limitate i rudimentare. De exemplu,
interaciunea avea loc prin intermediul unor procese alctuite din seturi de comenzi n care
comenzile (cereri de tipul ruleaz acest program pe acele date, evalueaz interogarea etc.) erau
pregtite pe calculatoare separate i puse la un loc n setul de comenzi care era apoi trimis spre
procesare. n timp ce avea loc procesarea datelor, ntre calculator i utilizator nu se producea nici o
interaciune. La terminarea procesului de prelucrare rezultatele erau imprimate, iar utilizatorul le
examina pentru a determina urmtoarea aciune ce trebuia ntreprins. Setul de comenzi era apoi
reluat pn cnd utilizatorul era mulumit de rezultat.
Spre deosebire de SQL, limbajul QBE se bazeaz pe calculul relaional. QBE a fost dezvoltat de
M.M. Zloof de la IBM Yorktown Heights Laboratory. n limbajul QBE o interogare este o
construcie elaborat pe un terminal interactiv ce afieaz imagini bidimensionale ce conin una sau
mai multe relaii prezentate sub forma unor formulare care se completeaz prin introducerea

BAZE DE DATE

CURS nr. 4

valorilor n coloanele selectate (exemple). Sistemul rspunde la ntrebri prin parcurgerea datelor pe
baza unui exemplu dat afind rezultatele pe acelai ecran. De obicei, reprezentarea relaiilor este
uurat prin intermediul comenzilor interactive care sunt disponibile prin intermediul unor meniuri.
Selecia comenzilor din meniu se face n funcie de schema disponibil, eliminndu-se astfel erorile
legate de scrierea numelor tabelelor sau atributelor acestora, aa cum s-ar putea ntmpla n cazul
folosirii limbajului SQL. Interfaa oferit este un editor structurat pe baza unui limbaj grafic.