Documente Academic
Documente Profesional
Documente Cultură
CURS nr. 4
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.
BAZE DE DATE
CURS nr. 4
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
BAZE DE DATE
CURS nr. 4
DELETE r
n care A reprezint atributul, iar D reprezint domeniul de valori ce trebuie atribuit acestuia.
ALTER TABLE r DROP A
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.
BAZE DE DATE
CURS nr. 4
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.
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.
Subinterogri imbricate
Membru al unui set de nregistrri
Pentru a determina acest lucru se pot folosi operatorii In i Not In.
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.
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.
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.