Sunteți pe pagina 1din 229

Baze de date

Curs 1
Concepte teoretice
introductive
Cuprins

Definitii
Terminologie in baze de date
Modele de baze de date
Clasificarea bazelor de date
Clasificarea datelor
Baze de date – protejarea informatei
Baze de date-utilizatori
Baze de date – avantajele unui SGBD

2
DEFINITII
 Baza de date - este un ansamblu structurat de date înregistrat pe
suporturi accesibile calculatorului pentru a satisface simultan
cerintele mai multori utilizatori intr-un mod selectiv şi în timp util.

 Baza de date - un sistem proiectat pentru a oferi un mecanism


organizat, capabil sa stocheze, sa actualizeze si sa regaseasca
informatia.

 Baza de date - colecţie de date corelate din punct de vedere logic,


care reflectă un anumit aspect al lumii reale şi este destinat unui
anumit grup de utilizatori.

3
DEFINITII

 Baza de date - este o colecţie de date centralizate, creata şi


mentinuta computerizat, în scopul prelucrarii datelor în contextul unui
set de aplicaţii.

 Baza de date - o colectie de informatii ce descriu mai multe subiecte


(obiecte) similare

 Def. noastra : ansamblu structurat de date centralizate care reflecta


un aspect al realitatii, cu scopul de a prelucra date, in concordanta cu
nevoile utilizatorilor, cu acces selectiv la informatie

4
DEFINITII
Proprietati:

 Baza de date este o colecţie logica coerenta de date care are cel putin
un înteles
 Baza de date este destinata, construita si populata de date despre un
domeniu bine precizat. Ea are un grup de utilizatori si se adreseaza
unui anumit grup de aplicatii

 Baza de date reprezinta câteva aspecte ale lumii reale creând


orizontul propriu. Schimbarile orizontului sunt reflectate în baza de
date.

Simple colectii de date (fisiere de date) care contin informatii, dar nu


permit operatii de introducere, stergere, actualizare ssi interogare nu
sunt considerate baze de date. Datele memorate în fişiere unei aplicatii
de calcul tabelar (Microsoft Excel) sau documentele memorate de un
editor de text (Microsoft Word) nu sunt considerate baze de date.

5
Termeni specifici
 Sistem de gestiune a bazelor de date (SGDB/DBMS) –ansamblul
de baze de date si de programe care permite utilizatorului sa
interactioneze cu o baza de date sub aspectul modificarilor
posible asupra informatiilor sau utilizarii informatiilor pentru
generarea de rapoarte .

 Proiectant de SGBD- stabileste structura bazei de date (subiectul,


descriere, atribute) si platforma de lucru. Operatiile de
proiectare sunt facute dupa principiul entitate-asociere.
Descrierea include informatii despre elementele de identificare
ale înregistrarilor (cheie primara), coloanele comune cu alte
tabele(chei straine), restrictii si verificari de corectitudine
pentru datele stocate. Aceste informatii sunt constrangeri de
integritate.
6
Termeni specifici

 Administrator de SGDB - supravegheaza atât asupra integritatii si


confidentialitatii informatiilor cât şi asupra gestionarii utilizatorilor
de baza de date.

 Generarea bazei de date – crearea efectiva a bazei de date pe


platforma stabilita.

 Datele - sunt informatii primare care pot fi numere, marimi, relatii


etc., prelucrate într-un context cu semnificatie si scop devin
informatii utile.

7
Modele ale bazelor de date
1. Modelul ierarhic
… un ansamblu structurat de
 datedezvoltatea
A fost primul model folosit pentru … bazelor de date.
 Schema conceptuala se reprezinta printr-un numar oarecare de
scheme ierarhice.

 O schema ierarhica este un arbore direcţionat, reprezentat pe mai


multe niveluri, în care nodurile sunt tipurile de înregistări, iar arcele
sunt tipurile de legaturi.

 Fiecare nod (cu exceptia nodului radacina) are o singura legatura


catre un nod de pe un nivel superior (nodul parinte)

 Fiecare nod (cu exceptia nodurilor frunza) are una sau mai multe
legaturi catre noduri de pe nivelul imediat inferior (noduri fii). 8
Modele ale bazelor de date

1. Modelul ierarhic

9
Modele ale bazelor de date
… un ansamblu structurat de
2. Modelul retea
date …
 Este modelul in care datele sunt reprezentate ca intr-o multime de
ierarhii, in care un membru al ei poate avea oricati superiori, iar
la un subordonat se poate ajunge pe mai multe cai.

 Foloseste o structura tip graf pentru definirea schemei


conceptuale a bazei de date in care nodurile grafului sunt tipuri
de entitati (inregistrari), iar muchiile grafului reprezinta
asocierile (legaturile) dintre tipurile de entitati

 Are avantajul ca legaturile formeaza trasee astfel incat fiecare


inregistrare sa poata fi referita de mai multe inregistrari, ceea
ce elimina redundanta datelor.

10
Modele ale bazelor de date

2. Modelul retea

11
Modele ale bazelor de date
… un ansamblu structurat de
3. Modelul relational

date …
 Se bazează pe notiunea de relatie din matematica ce corespunde unei
entitati de acelasi tip si are o reprezentare uşor de înteles si de
manipulat

 Consta dintr-un tabel compus din linii si coloane. Fiecare linie din
tabel reprezintă o entitate si este compusa din multimea valorilor
atributelor entitatii respective, fiecare atribut corespunzând unei
coloane a tabelului.

 Datele sunt percepute de utilizatori ca tabele


12
Modele ale bazelor de date
… un ansamblu structurat de
3. Modelul relational

date …
Operatorii relationali care pot fi folositi pentru prelucrarea datelor
generează un tabel rezultat din tabelele operanzi

 Asocierea dintre tabele se realizează prin intermediul egalitatii


valorilor unor atribute comune, ceea ce permite rezolvarea oricarei
interogari.

 Relatia dintre tabele este unidirectionala, astfel ca un tabel este


considerat principal iar altul secundar

 Beneficiaza de un limbaj de programare recunoscut si acceptat,


limbajul SQL (Structured Query Language) 13
Modele ale bazelor de date
3. Modelul relational

Date angajat
Cod angajat Nume Prenume Salariu
1 A Q 6
2 S W 7
3 D E 8

Proiect
Cod proiect Descriere Buget Cod angajat
XR1 aaaaa 10 1
XR2 sssss 100 2
XR3 ddddd 1000 3

Companie
Filiala Departament Cod proiect
Z A1 XR1
X A2 XR2
C A3 XR3
14
Modele ale bazelor de date
… un ansamblu structurat de
4. Modelul orientat pe obiect

date …
 Se bazeaza pe limbaje de programare orientate obiect în care datele
sunt independente de timpul de viaţa al programelor care le creeaza
sau acceseaza. prin memorare pe suport magnetic

 Caracteristicile: abstractizarea, mostenirea, încapsularea,


modularizarea.

 Clasele (tipurile) de obiecte sunt un tip abstract de date prin care se


defineste structura obiectelor (proprietatile) si comportamentul
(metodele) acestora.
15
Modele ale bazelor de date
… un ansamblu structurat de
4. Modelul orientat pe obiect

date …
 Fiecare clasa reprezinta abstractizarea unui tip de entitate din
realitatea modelata, iar clasele sunt membre ale unei ierarhii de clase,
corelate între ele prin relatii de mostenire.

 Orice obiect este încapsulat, reprezentarea lui nu este vizibila


utilizatorilor care au acces doar la functiile (metodele) pe care acel
obiect este capabil sa le execute.

 Clasele si obiectele unt grupate în module care pot fi compilate separat


si între care exista granite bine definite, ceea ce reduce complexitatea
de manevrare a datelor. 16
Baze de date - Clasificare
… un ansamblu structurat de
 Modelul de date – ierarhic, retea, relational, orientat pe obiect

 Numar de utilizatori date …


– monoutilizator – un singur Utilizator poate accesa
informatiile bazei de date la un moment dat;

- multiutilizator – permit accesul concurrent a mai multor


utilizatori la informatiile baze ide date

 Numarul de statii de acces

- centralizate - datele şi sistemul de gestiune sunt stocate pe


un singur calculator.

- distribuite - atât datele, cât şi sistemul de gestiune,


distribuite pe mai multe calculatoare interconectate printr-o retea
17
de comunicatie.
Clasificare Date
… un ansamblu structurat de
Datele - sunt informatii primare care pot fi numere, marimi, relatii etc.,
datesi scop
prelucrate într-un context cu semnificatie …devin informatii utile.
Clasificare:
 Reflectarea în timp a proceselor şi fenomenelor reprezentate:

 active - procese sau fenomene în curs de desfasurare;

 pasive - procese sau fenomene desfasurate in trecut; sunt utile pentru


analize comparative, conducerea proceselor şi fenomenelor care se vor
repeta;

 previzionale - cuprinse în planuri şi programe şi reflecta procese si


fenomene viitoare

18
Clasificare Date
… un ansamblu structurat de
Datele - sunt informatii primare care pot fi numere, marimi, relatii etc.,

datesi scop
prelucrate într-un context cu semnificatie …devin informatii utile.
Clasificare:
 Domeniul de activitate la care se refera:

 tehnologice –conducerea şi dirijarea proceselor tehnologice industriale;

 economice – obtinute prin prelucrari succesive si utilizate în


activitatea de analiză şi decizie;

 stiintifice - utilizate în domeniul cercetarii ştiintifice si al proiectarii


tehnologice;

19
ClasificareDate
… un ansamblu structurat de
Datele - sunt informatii primare care pot fi numere, marimi, relatii etc.,

date …
prelucrate într-un context cu semnificatie si scop devin informatii utile.

Clasificare:
 Forma de exprimare a fenomenelor pe care le reflecta:

 numerice (cantitative) - exprimă aspectul cantitativ al


fenomenelor şi se obtin prin masurare, numarare, cântarire sau
calcul;

 nenumerice (calitative) – se prezinta sub forma deconcepte, liste


bibliografice, texte, rapoarte etc.;

 analogice - exprimate prin parametrii cu variatie continua din


cadrul proceselor tehnologice, de exemplu presiunea, temperatura,
viteza, tensiunea electrica, etc.; 20
ClasificareDate

… un ansamblu structurat de
Datele - sunt informatii primare care pot fi numere, marimi, relatii etc.,
prelucrate într-un context cu semnificatie si scop devin informatii utile.

Clasificare:
date …
 Destinatie:

 de programare - asigura suportul decizional privind elaborarea


planurilor şi strategiilor de dezvoltare pe anumite perioade de timp;

 de pregatire-lansare - utilizate pentru fundamentarea deciziilor


privind pregatirea şi lansarea lucrarilor în succesiunea logica a lor;

 de control reglare – pe baza lor se desfaşoara procesul decizional


privind adoptarea deciziilor de corectie;

 de evaluare şi raportare;

21
Clasificare Date
Datele - sunt informatii primare care pot fi numere, marimi, relatii etc.,
… un ansamblu structurat de
prelucrate într-un context cu semnificatie si scop devin informatii utile.

Clasificare:
date …
 Caracteristicile lor functionale:
 de stare - caracterizeaza cantitativ şi calitativ potentialul
tehnic de productie;
 de cooperare - exprima legaturile organizatorice ce se stabilesc inter si
extra organizatie;
 -de executie - reflecta modul de desfasurare a activitătii curente
şi asigura functionarea operativa a unei unitati;

 Rolul în sistemul de management:


 planificare;
 control;
 fundamentare a deciziei; 22
Protejarea Datelor

… un ansamblu structurat de
Protectia bazei de date - ansamblu de masuri necesare asigurarii
securitatii şi integritatii datelor.
date …
Securitatea datelor – controlul restrictionat si privilegiat al acesului la
informatiile bazei de date;

- totalitatea masurilor de protectie împotriva


distrugerii accidentale sau intentionate, a modificarii neautorizate sau a
divulgarii acestora

Integritatea datelor - corectitudinea datelor cu respect la realitate,

- manipularea lor sa respecte restrictiile de


integritate ale modelului de date implementat

- datele sa nu fie alterate accidental sau voit.

23
Protejarea Datelor
SECURITATEA datelor.
… un ansamblu structurat de
1. Autorizarea şi controlul accesului la date consta în identificarea
date
utilizatorilor şi restrictionarea … acestora, pentru diferite
accesului
operatii de prelucrare.

2. Viziunile (views) sunt partitii logice ale BD definite pentru diferiti


utilizatori.

3. Procedurile speciale sunt rutine, oferite de SGBD, care efectueaza


anumite operatii asupra datelor si care sunt accesibile anumitori
utilizatori.

4. Criptarea este operatia de codificare a datelor în vederea stocarii sau


transmiterii datelor in mediul retelelor de comunicare: parole, algoritmi
de criptare/decriptare, rutine speciale etc.

5. Firewall – instalare software specializat – practic pentru


24
calculatoarele conectate la reteaua internet
Protejarea Datelor
INTEGRITATEA datelor.
… un ansamblu structurat de
1. Integritatea semantica - prevenirea introducerii unor date incorecte în
BD şi a prelucrarii eronate. Sedate
asigură …
prin respectarea restrictiilor de
integritate. Acestea pot fi implicite (asigurate automat de SGBD) şi
explicite (asigurate prin proceduri incluse în programele de aplicaţie).

2. Controlul concurentei la date - garantarea coerentei (corectitudinii) şi


simultaneitatii datelor în cazul prelucrarii tranzactiilor (unitatea logică
de prelucrare) prin tehnici specifice (blocarea, interblocarea etc.).

3. Salvarea datelor -0 stocarea datelor în copii de siguranţa prin tehnici


specific. Ea se poate face automat de catre SGBD sau manual de catre
administratorul BD.

4. Restaurarea - refacerea consistentei BD, pornind de la datele salvate,


minimizând prelucrarile pierdute. Restaurarea se poate face automat de
25
catre SGBD sau manual de catre administratorul BD.
Utilizator baza de date
1. Utilizator final - obtiner informatiile fara sa aiba cunostinte de
… un ansamblu structurat de
programare, prin comenzi de interogare si eventual, raspunzand la

date
diferitele optiuni pe care i le indica … de calcul.
sistemul

2. Programator de aplicatii - scrie programe in limbajul de prelucrare a


datelor (LPD), acestea fiind apoi compilate si memorate in fisiere, putand
fi lansate in executie de utilizatori prin invocarea numelui asociat lor.

3. Administratorul bazei de date - stabileste structura initiala a BD si


modul de memorare a datelor la nivel fizic, acorda drepturi de acces al
utilizatorilor la BD, stabileste conditiile pentru asigurarea securitatii si
integritatii datelor si asigura indeplinirea lor, modifica structura BD
daca este nevoie si raspunde in general de modul de utilizare al bazei de
date.

4. Administratorul SGBD - stabileste bazele de date de pe un sistem de


calcul, aloca spatii de memorare si asigura drepturi de acces. 26
Baze de date - Avantaje
… un ansamblu structurat de
dateabordarii
 Redundanta datelor. Datorita … centralizate, se pot
sesiza eventualele suprapuneri între diverse aplicatii şi se poate
interveni astfel încât aplicatii diferite ce utilizeaza date
similare să utilizeze în comun un singur set de date.

 Evitarea inconsistentei datelor. Deriva din reducerea


redundantei datelor ca urmare a faptului ca se foloseste un singur
set de date. Astfel la actualizare se va modifica valoarea unei
singure enitati.

 Partajarea datelor. Se refera atât la centralizarea utilizarii datelor


cât si la posibilitatea de a dezvolta noi aplicatii pornind de la datele
deja existente în baza de date.
27
Baze de date - Avantaje
… un ansamblu structurat de
date …
 Standardizare. Se pot impune standarde legate de modul de
stocare a datelor, transferul datelor între diferite aplicatii sau
baze de date.

 Securitatea datelor se refera la posibilitatea introducerii de


verificări asupra autorizării accesului la bazele de date pentru
fiecare utilizator şi pentru fiecare tip de operatie.

 Integritatea datelor. Consistenta şi protectia datelor împotriva


diverselor accidente sau incidente tehnice ce pot avea loc.

28
Baze de date

Curs II

Arhitectura unui sistem


de gestiune a bazei de date
Arhitectura unui sistem de gestiune a bazei de date

 SGBD - Definitii
 Este compus din module cu functii specifice
 Un set de functii este asigurat de nucleul sistemului de operare
 Asigura un minim de functii de baza cu ajutorul carora sunt
dezvoltate alte functii
 Permite administratorului sa genereze versiuni de BD performante
tinând cont de înmultirea utilizatorilor.
 Este un produs software care pune la dispozitie toate serviciile
necesare organizarii si intretinerii bazei de date (transfer de date,
gestionare acces)
 Accepta limbaj de interogare folosit de utilizator pentru a obtine
informatii
 Este un interpretor de cereri, el receptionând de la utilizatori
anumite cereri de acces la baza de date, le interpreteaza, executa
operatiile respective şi returneaza rezultatul catre utilizatori
 Este un sistem de programe general ce faciliteaza procesul definirii,
constructiei şi manipularii datelor pentru diverse aplicatii.
Arhitectura unui sistem de gestiune a bazei de date

 SGBD - Componente ale sistemului de baze de date

BD

SGBD Aplicatie

Utilizator
Arhitectura unui sistem de gestiune a bazei de date
 SGBD - Arhitectura
 O structura de date asociata unei baze de date poate fi reprezentata
pe trei niveluri, având ca scop separarea aplicatiilor utilizatorului
de baza de date fizica. Schema bazei de date pe cele trei niveluri
poate fi vazuta astfel:

 Nivelul intern constituit din schema interna ce descrie structura de


stocare fizica a datelor în baza de date, utilizând un model al
datelor fizice. La acest nivel se descriu detaliile complete ale stocarii,
precum şi modul de acces la date.

 Nivelul conceptual sau schema conceptuala descrie structura


întregii baze de date pentru o comunitate de utilizatori. La nivelul
conceptual se face o descriere completa a bazei de date, ascunzând
detaliile legate de stocarea fizica, concentrându-se asupra descrierii
entitatilor, tipurilor de date, relatiilor dintre ele, precum şi a
restrictiilor asociate. Poate fi utilizat cu bune rezultate, la model de
nivel înalt sau un model specific de implementare
Arhitectura unui sistem de gestiune a bazei de date
 SGBD - Arhitectura
 Nivelul extern sau nivelul vizual (utilizator) include o
colectie de scheme externe ce descriu baza de date prin
prisma diferitilor utilizatori. Fiecare grup de utilizatori
descrie baza de date prin prisma propriilor interese. Exista
tendinta la acest nivel ca grupuri de utilizatori sa ascunda
detalii de care nu sunt interesate. Şi la acest nivel se pot
folosi modele de implemetare sau modele de nivel înalt.
 Arhitectura pe trei niveluri reprezinta numai o descriere a
datelor la nivel fizic. Grupurile de utilizatori se refera numai
la schema externa, deci SGBD este cel ce va trebui sa
transforme schema externa în schema conceptuala. De la
modelul conceptual cererile sunt adresate modelului intern
pentru a fi procesate şi aplicate datelor stocate. Procesul
transferului cererilor şi rezultatelor între nivele este numit
cartografiere (mapping). Acest proces este mare consumator
de timp pentru care multe SGBD nu poseda nivel extern.
Arhitectura unui sistem de gestiune a bazei de date
 SGBD - Arhitectura – schema pe nivele

Vedere Utilizatori Vedere Utilizatori


grup 1 grup n

Schema
conceptuala

Schema interna

Date
memorate
Arhitectura unui sistem de gestiune a bazei de date
 SGBD - Arhitectura in detaliu
Arhitectura unui sistem de gestiune a bazei de date

 SGBD - Functii indeplinite

 Gestionarul bazei de date - realizeaza interfata dintre


programele de aplicatii sau de consultare si datele fizice ale
bazei de date .

 -Gestionarul de fisiere - specifica alocarile de memorie pe disc


si structurile de memorare care servesc la reprezentarea
informatiilor pe disc.

 Procesorul de consultare - traduce instructiunile limbajului


de consultare în instructiuni întelese de gestionarul BD.
Transpune interogarile utilizatorului într-o forma
echivalenta optimizata, în vederea determinarii celor mai
bune strategii de cautare.
Arhitectura unui sistem de gestiune a bazei de date

 SGBD - Functii indeplinite

 Definirea schemelor BD (schemei conceptuale) si a


legaturilor dintre ele se efectueaza de administratorul BD,
cu ajutorul unui limbaj de definire a datelor (LDD) prevazut
cu un compilator ce permite crearea dictionarului de date.
Structura de date este o multime de elemente de date, de
legaturi care exista între ele si de operatii efectuate cu ele.

 Precompilatorul LMD (limbaj pentru manipularea datelor)


genereaza coduri obiect ale programelor realizate cu
ajutorul LMD. LMD permite ca programatorii de aplicatii si
neinformaticienii sa manipuleze date puse în evidenta de
scheme de orice nivel.
Arhitectura unui sistem de gestiune a bazei de date

 SGBD - Functii indeplinite


 Dictionarul de date - este dat de o multime de scheme si de
legaturi dintre schemele asociate ale BD, de descrierile
semnificatiilor datelor si a restrictiilor pe care acestea
trebuie sa le satisfaca. Dictionarul de date poate fi el însusi
implementat ca o BD. El constituie atunci o metabaza, adica
o baza care descrie o alta baza.
 Utilizatorul este o persoana care de la un terminal are acces
la BD, folosindu-se de o multime de programe, aplicatii sau
comenzile unui limbaj de consultare. Accesul la BD se
realizeaza printr-un program redactat într-un limbaj (C,
Java ,Pascal etc.) care accepta primitive (secvente de
instructiuni de program) ce permit accesul la BD sau de la
un terminal utilizând un limbaj specific LMD. Daca LMD de
nivel înalt este utilizat într-o maniera interactiva atunci
acesta se numeste limbaj de interogare ( LI)
Arhitectura unui sistem de gestiune a bazei de date

 SGBD - Obiective
 Abstractizarea si structurarea datelor

 Prezentarea sub o forma abstracta si structurata a datelor


constituie un important obiectiv al unui S.G.B.D.

 Structura BD este determinata de o multime de scheme


(tipuri de date), relatii, legaturi între date, restrictii pe care
datele trebuie sa le satisfaca si de semantici. Structurarea
unei BD trebuie facuta pe baza unei modelari.

 Un model consta dintr-o multime de concepte ce permit


schematizarea corecta a BD. Cele mai multe modele includ
operatori specifici de cautare si actualizare într-o baza de
date.
Arhitectura unui sistem de gestiune a bazei de date

 SGBD - Obiective
 Abstractizarea si structurarea datelor

 Modelele de date bazate pe tipuri de concepte ce descriu baza


se clasifica în:

 modele de date fizice sau de nivel inferior ce cuprind


concepte ce descriu datele asa cum sunt memorate (ordinea
înregistrarilor etc.);

 modele logice ( conceptuale) sau de nivel înalt orientate pe


"înregistrari" sau pe "obiecte" ce descriu datele pentru clase
mari de utilizatori. Ele utilizeaza concepte de: atribute,
relatii, entitati si obiecte
Arhitectura unui sistem de gestiune a bazei de date

 SGBD - Obiective

 Independenta fizica si logica

 Independenta fizica permite stocarea informatiilor dintr-un


univers real sau conceptual, independent de structurile de
date, cu scopul realizarii unui acces simplu la date.

 Independenta logica se refera la posibilitatea de a adauga si


a modifica înregistrarii si scheme fara a rescrie programele
existente.
Arhitectura unui sistem de gestiune a bazei de date

 SGBD - Obiective

 Redundanta si inconsistenta

 Crearea fisierelor se face în general în perioade de timp


diferite, prin urmare aceleasi informatii pot fi replicate în
mai multe fisiere. Aceasta este redundanta si are ca efect
cresterea inutila a volumului global al bazei de date, a
timpului de acces, a riscului de a avea erori.

 Deoarece copiile acelorasi date stocate în diverse locuri nu


concorda între ele, pentru ca nu au fost actualizate în acelasi
timp determina inconsistenta.
Arhitectura unui sistem de gestiune a bazei de date

 SGBD - Obiective

 Optimizarea accesului la date

 SGBD-ul trebuie sa fie prevazut cu un procesor de


optimizare a operatiilor exprimate de informaticieni cu
ajutorul unui limbaj de manipulare si de neinformaticieni
cu ajutorul unui limbaj neprocedural.
 Limbajele neprocedurale permit utilizatorilor sa descrie ceea
ce vor sa obtina fara a indica modul cum se obtine.
Posibilitatea de a manipula date cu ajutorul unor limbaje
neprocedurale si de neinformaticieni, independent de
implementarea lor constituie o generalizare a manipularii
datelor
Arhitectura unui sistem de gestiune a bazei de date

 SGBD - Obiective
 Securitatea si confidentialitatea datelor
 SGBD-ul trebuie sa gestioneze accesul la informatii si la
tipurile de operatii pe care fiecare utilizator le poate efectua
si sa valideze aceste operatii. De asemenea se realizeaza o
protejare prin parolare si criptare împotriva accesului
neautorizat.
 Partajabilitatea datelor
 Determina folosirea bazei simultan de mai multe aplicatii.
Asigura gestiunea tranzactiilor si a prelucrarilor
concurente. Tranzactia este o unitate de prelucrare care
transforma o instanta consistenta a bazei în alta instanta
consistenta. SGBD-ul trebuie sa paralelizeze sau sa detecteze
cazurile de interblocare (când o tranzactie asteapta date
detinute de alte tranzactii)
Arhitectura unui sistem de gestiune a bazei de date

 SGBD - Obiective
 Scheme si instantieri
 Orice model de BD din SGBD contine structura si context
 Structura este schema BD specificata in timpul proiectarii si
cuprinde conventii si metareguli pe baza carora se construiesc
diagramele structurii. Elementele diagramelor se numesc
constructori de schema.
 Diagrama contine nume de relatii (student) si elemente de date
(COD_STUD-constructor de schema) dar nu si tipul constructorilor
sau restrictii de genu: “Studentul X din anul I sectia Info
frecventeaza cursul Y”
Arhitectura unui sistem de gestiune a bazei de date

 SGBD - Scheme si instantieri

 Datele dintr-o BD la un anumit moment de timp formeaza o


instantiere a BD ( ocurenta sau stare), care corespunde unei
scheme.

 În orice moment când vom insera sau sterge valori, vom


schimba o instantiere a BD cu o alta instantiere.
Distinctia între schema bazei de date si instantierea bazei
de date este foarte importanta.

 Când definim o noua BD noi vom specifica schema BD. În


acest moment BD este vida deoarece nu are nici o data. Vom
numi instantiere initiala a BD când datele sunt prima data
încarcate
Arhitectura unui sistem de gestiune a bazei de date

 SGBD - Interfete

 SGBD-ul trebuie sa suporte interfete si limbaje apropiate


pentru fiecare categorie de utilizatori. Exista interfete
prietenoase cu utilizatorii pentru interactionarea cu baza de
date, aceastea clasificandu-se astfel:

 Interfete meniu - prezinta utilizatorului o lista de optiuni


numita meniu, pe baza caruia utilizatorul îsi formuleaza
cererea. Meniurile conduc la nevoia de a memora comenzile
specifice si a sintaxei limbajului. Întrebarea este compusa
pas cu pas prin precizarea optiunilor din lista meniului care
este afisata de sistem.
Arhitectura unui sistem de gestiune a bazei de date

 SGBD - Interfete

 Interfete grafice - afiseaza o schema pentru utilizator sub


forma unei diagrame. Utilizatorul poate specifica
întrebarea prin manipularea diagramei. Interfata grafica
poate fi combinata cu o interfata bazata pe meniu. Cele mai
multe interfete grafice vor utiliza un dispozitiv de punctare
cum ar fi mouse-ul sau stiloul luminos.

 Interfete bazate pe forme - afiseaza o forma pentru


utilizator. Utilizatorul poate sa obtina sub o anumita forma
toate înregistrarile. Multe din SGBD-uri au limbaje speciale
numite limbaje de specificare a formelor care ajuta
programatorii sa-si specifice cererile.
Arhitectura unui sistem de gestiune a bazei de date

 SGBD - Interfete

 Interfete în limbaj natural - accepta cererile scrise în limba


engleza sau într-un alt limbaj care este înteles. Interfata
într-un limbaj natural are o schema proprie care este ca o
schema conceptuala a bazei de date. Interfata face referinta
la cuvintele schemei care fac parte dintr-o multime de
cuvinte standard ce compun întrebarea. Daca interpretarea
este realizata, interfata genereaza o întrebare la nivel înalt
care corespunde cererii în limbaj natural admisa de SGBD
pentru prelucrare. In caz contrar dialogul este început cu
utilizatorul pentru a clarifica întrebarea
Arhitectura unui sistem de gestiune a bazei de date

 SGBD - Interfete

 Interfete pentru utilizatorii parametrici - Utilizatorii


parametrici (functionarii de banca) au la dispozitie o
multime de aplicatii care sunt repetate de multe ori.
Analistii de sistem si programatorii proiecteaza si
implementeaza o interfata speciala pentru o clasa cunoscuta
de utilizatori. Se utilizeaza o multime mica de abrevieri ale
comenzilor cu scopul de a minimiza numarul de taste
apasate la fiecare cerere. Astfel de interfete pot fi numite
limbaje de comanda
Arhitectura unui sistem de gestiune a bazei de date

 SGBD - Interfete

 Interfete pentru administratorul BD - Cele mai multe SGBD-


uri au posibilitatea de a crea comenzi privilegiate care vor
fi utilizate numai de administratorul BD. Aceste interfete
includ comenzi pentru creare, setarea parametrilor
sistemului; de asemenea garanteaza autorizarea, schimba
schema si organizeaza structura de memorare a fisierelor
BD.
!!!!! A nu se face confuzie intre administratorul BD si
administratorul SGBD
Arhitectura unui sistem de gestiune a bazei de date

 SGBD - Limbaje

 Data Definition Language (DDL) - este utilizat de


administratorul bazei de date şi de proiectantul bazei de
date în definirea ambelor scheme. Un compilator DDL
proceseaza instructiunile pentru identificarea descrierilor
despre constructie şi memoreaza aceasta în catalogul SGBD.
 Storage Definition Language (SDL) - este utilizat pentru
specificarea schemei interne. Legatura între cele doua nivele
de implementare este asigurata de unul din cele doua. În
general, fara specificare explicita, referirea la definirea
bazei de date presupune utilizarea DDL.
 View Definition Language (VDL) - destinat utilizatorilor şi
legaturii acestora cu nivelul conceptual. Multe sisteme de
baze de date realizeaza aceasta printr-un DDL ce accepta şi
declaratii specifice nivelului extern
Arhitectura unui sistem de gestiune a bazei de date
 SGBD - Limbaje
 Data Manipulation Language (DML) – ofera o serie de
facilitati pentru manipularea datelor. Operatiile tipice
includ cautarea, inserarea, ştergerea şi modificare datelor.
Poate fi:
o DML de nivel înalt – este neprocedural, utilizat pentru
specificarea operatiilor complexe în baza de date într-o
forma concisa. În general, operatiile utilizând acest limbaj
sunt realizate fie într-o forma interactiva de la terminal, fie
prin utilizarea unui limbaj de programare universal
o DML de nivel scazut – este procedural, realizat utilizând un
limbaj de programare general. Cu acest limbaj se realizeaza
operatiile tipice, cum sunt refacerea unei înregistrari
individuale, procesarea separata a înregistrarilor bazei de
date. Deoarece opereaza asupra înregistrarilor individuale,
aceasta prelucrare se mai numeşte şi înregistrare cu
înregistrare.
Arhitectura unui sistem de gestiune a bazei de date
 SGBD - Exemple

 Microsoft SQL Server – este sistemul de gestiune a bazelor de


date relationale multi-utilizator dezvoltat de firma
Microsoft pentru sistemele de operare Windows. Au existat
mai multe versiuni, cea actuala fiind SQLServer 2000 (SQL
Sever 2003 fiind înca în faza de testare). În toate versiunile,
acest sistem de baze de date suporta standardul SQL2, cu
implementarea perfomanta a trasaturilor avansate de
stocare şi prelucrare a datelor. Exista o interfata grafica
pentru interactiunea cu utilizatorul, pentru folosirea
tuturor optiunilor de export/ import date, de creare şi
manipulare a tabelelor, pentru popularea cu date a
tabelelor, de creare a interogarilor, a procedurilor stocate, a
triggerelor etc.
Arhitectura unui sistem de gestiune a bazei de date
 SGBD - Exemple

 Microsoft Access – este unul din cele mai cunoscute sisteme


de gestiune a bazelor de date relationale pe platforme de
calculatoare personale. Microsoft Access dispune de un
sistem de control al bazei de date (database engine) şi o
intefata grafica pentru interactiunea cu utlizatorul.
Aplicatiile de baze de date în MS Access se pot dezvolta cu
multa uşurinta datorita generatoarelor de aplicatii
(wizards) care permit proiectarea vizuala a bazelor de date,
a formularelor (forms) pentru interfetele grafice şi a
rapoartelor (reports). MS Access este folosit în special pentru
aplicatii personale sau pentru mici afaceri şi licenta
acestuia se cumpara odata cu cumpararea licentei
produsului Microsoft Office. Acest sistem este cel folosit de
noi în capitolele urmatoare.
Arhitectura unui sistem de gestiune a bazei de date
 SGBD - Exemple

 Sistemul Oracle – este un sistem de gestiune al bazelor de


date multi-utilizator foarte puternic, cu implementari pe
toate platformele (Windows, Linux, Unix), care ofera atât
performante de executie ridicate, cât şi un grad mare de
protectie şi securitate a datelor. În toate versiunile, Oracle
ofera implementarea completa a caracteristicilor modelului
relational, conform standardului SQL2, iar ultimele versiuni
(Oracle8i, Oracle9i etc) sunt sisteme de gestiune obiect-
relationale distribuite, implementând extensiile orientate
obiect prevazute în standardul SQL3 şi oferind posibilitatea
de dezvoltare a bazelor de date distribuite.
Arhitectura unui sistem de gestiune a bazei de date
 SGBD - Exemple

 Sistemul MySQL – este un sistem de gestiune a bazelor de


date relationale cu implementari pentru sistemele de
operare Linux, Unix, Windows. Acest sistem se poate utiliza
gratuit, fiind open source. Acest sistem este compatibil cu
standardul SQL2, dar unele prevederi ale standardului fiind
implementate partial.
 IBM DB2 - este un sistem de gestiune al bazelor de date al
firmei IBM. Acest sistem asigura integritatea datelor, ofera
o securitate sporita pentru date, are o interfata grafica
pentru gestionarea bazei de date. Dispune, ca şi Microsoft
SQL Sever şi Oracle de posibilitatea crearii de proceduri
stocate, acestea fiind nişte proceduri care ruleaza pe server
şi asigura o viteza mai mare de raspuns. Are mai multe
versiuni în functie de dorintele şi necesitatile utilizatorilor.
Arhitectura unui sistem de gestiune a bazei de date
 SGBD - Exemple

 Visual FOX PRO - este un limbaj de programare complet,


care accepta un mediu interactiv şi un mediu compilat la
rulare. Visual FOX PRO este compatibil cu toate versiunile
anterioare de FoxPro. Stilul de proiectare a interfetei
FoxPro a fost întotdeauna orientat catre flexibilitate şi
uşurinta în utilizare. Pe de alta parte, forta şi viteza bruta
au reprezentat dintotdeauna punctul forte al lui FoxPro.
Nici un produs creat de celelalte companii axate pe baze de
date, care au facut trecerea la modelul orientat obiect nu a
putut rivaliza cu FoxPro în ce priveşte viteza de executie a
functiilor specifice bazelor de date . Şi acest mediu contine
vrajitori (Wizard) pentru gestionarea mai multor taskuri.
Baze de date

Curs III

Proiectarea bazelor de date.


Structuri de date relationale.
Proiectarea bazelor de date. Structuri de date relationale

Definire componente . Exemplu tabel.


Proiectarea bazelor de date. Structuri de date relationale

Etapele proiectarii unei baze de date

 Determinarea subiectului tabelelor (entitătilor)

 Determinarea câmpurilor (atributelor) – Structura tabelei

 Configurarea formularelor pentru introducerea datelor în


tabele
 Determinarea existentei unor relatii între tabele

 Determinarea modalitătilor de identificare

 Stabilirea unor interogari asupra tabelelor bazei de date

 Stabilirea rapoartelor ce trebuie produse pentru utilizatorul


bazei de date
Proiectarea bazelor de date. Structuri de date relationale

Baze de date RELATIONALE

 înmagazineaza datele în tabele care se pot lega logic dupa


valorile anumitor coloane

 relatia dintre câmpuri realizeaza asocierea explicita

 este un model simetric, uniformitatea reprezentarii datelor


determina uniformitate în multimea operatorilor

 bazat pe teoria matematica a relatiilor, proiectarea bazelor


de date poate fi tratata algoritmic

 utilizeaza un limbaj standardizat de interogare a bazei de


date numit SQL
Proiectarea bazelor de date. Structuri de date relationale

Structura unei baze de date relationale

 Informatiile sunt organizate in tabele, fiecare linie descrie cate


un subiect. O linie poarta numele de inregistrare.
 Descrierea fiecarei insusiri a subiectului constituie un camp.
Informatia dintr-un camp nu trebuie sa poata fi descompusa!
Pentru fiecare câmp se alege un nume, un tip de date şi o gama
de reprezentare.
Proiectarea bazelor de date. Structuri de date relationale

Reguli pe care trebuie sa le indeplineasca un SGBDR

 Un sistem de gestiune a bazelor de date relationale (SGBDR) este


un SGBD care utilizeaza modelul relational drept conceptie de
organizare a datelor.

 Se cunosc 13 reguli care exprima cerintele pe care trebuie sa le


satisfaca un SGBDR.

 Nici unul dintre SGBD disponibile astazi nu respecta toate


cerintele exprimate de Codd, în cadrul celor 13 reguli. De aceea, s-
au formulat criterii minimale pe care trebuie sa le satisfaca un
sistem de gestiune a bazelor de date pentru a putea fi considerat
relational.
Proiectarea bazelor de date. Structuri de date relationale

Reguli pe care trebuie sa le indeplineasca un SGBDR

1. Regula privind gestionarea datelor la nivel de relatie.

 Sistemul trebuie sa gestioneze baza de date numai prin


mecanisme relationale.
 Acesta înseamna ca sistemul trebuie sa-si îndeplineasca
toate functiile prin manipulari în care unitatea de
informatie sa fie multimea (relatia), adica sa utilizeze
limbaje, precum SQL care sa opereze la un moment dat pe
o întreaga relatie.
 Unele sisteme utilizeaza mecanisme relationale numai
pentru o parte din functii, în special pentru interogare.
 Aceste sisteme se numesc SGBD cu interfata relationala si
nu SGBDR.
Proiectarea bazelor de date. Structuri de date relationale

Reguli pe care trebuie sa le indeplineasca un SGBDR

2. Regula privind reprezentarea logica a datelor.

 Toate datele din baza de date relationala trebuie sa fie


reprezentate explicit la nivel logic într-un singur mod, si
anume ca valori în tabele de date.

 Acesta înseamna ca toate datele trebuie sa fie memorate


si prelucrate în acelasi mod.

 Informatiile privind numele de tabele, coloane, domenii,


definitiile tabelelor virtuale, restrictiile de integritate
trebuie sa fie memorate tot în tabele de date (catalog)
Proiectarea bazelor de date. Structuri de date relationale
Reguli pe care trebuie sa le indeplineasca un SGBDR

3. Regula privind garantarea accesului la date. Orice data din


baza de date relationala trebuie sa poata fi accesata prin
specificarea numelui de tabela, valorii cheii primare si a numelui
de coloana. Aceasta regula exprima cerinta ca limbajul de
interogare al SGBDR sa permita accesul la fiecare valoare
atomica din baza de date.
4. Regula privind valorile null. Sistemele trebuie sa permita
declararea si manipularea valorilor null, ce au semnificatia unor
date lipsa sau inaplicabile.
5. Regula privind metadatele. Descrierea bazei de date trebuie sa
se prezinte la nivel logic în acelasi mod cu descrierea datelor
propriu zise, astfel încât utilizatorii autorizati sa poata aplica
asupra descrierii bazei de date aceleasi operatii ca si asupra
datelor obisnuite.
Proiectarea bazelor de date. Structuri de date relationale

Reguli pe care trebuie sa le indeplineasca un SGBDR

6. Regula privind facilitatile limbajelor utilizate. Intr-un sistem


relational trebuie sa existe cel putin un limbaj de nivel înalt
ale carui instructiuni sa poata exprima oricare din
urmatoarele operatii: definirea relatiilor de baza si a celor
virtuale, manipularea datelor, definirea restrictiilor de
integritate, autorizarea accesului, precizarea limitelor
tranzactiilor.

7. Regula privind actualizarea tabelelor virtuale. Toate tabelele


virtuale care teoretic sunt posibil de actualizat trebuie sa
poata fi efectiv actualizabile. Nu toate atributele din cadrul
unei tabele virtuale, deci nu toate tabelele virtuale sunt
teoretic actualizabile.
Proiectarea bazelor de date. Structuri de date relationale

Reguli pe care trebuie sa le indeplineasca un SGBDR

8. Regula privind inserarile, modificarile si stergerile în baza de


date. Sistemul trebuie sa ofere posibilitatea manipularii unei
tabele (de baza sau virtuala) nu numai în cadrul operatiilor de
regasire, ci si în actiunile de inserare, modificare si stergere a
datelor. Aceasta regula exprima cerinta ca în operatiile prin
care se schimba continutul bazei de date sa se lucreze la un
moment dat pe o întreaga relatie.

9. Regula privind independenta fizica a datelor. Programele de


aplicatie nu trebuie sa fie afectate de schimbarile efectuate în
modul de reprezentare a datelor sau în metodele de acces. O
schimbare a structurii fizice a datelor nu trebuie sa blocheze
functionarea programelor de aplicatie.
Proiectarea bazelor de date. Structuri de date relationale

Reguli pe care trebuie sa le indeplineasca un SGBDR

10. Regula privind independenta logica a datelor. Programele de


aplicatie nu trebuie sa fie afectate de schimbarile efectuate
asupra relatiilor bazei de date, schimbari care conserva
datele si teoretic, garanteaza valabilitatea programelor de
aplicatie existente.

11. Regula privind restrictiile de integritate. Restrictiile de


integritate trebuie sa poata fi definite în limbajul utilizat de
sistem pentru definirea datelor si sa fie memorate în
catalogul bazei de date si nu în cadrul programelor de
aplicatie.
Proiectarea bazelor de date. Structuri de date relationale

Reguli pe care trebuie sa le indeplineasca un SGBDR

12. Regula privind distribuirea geografica a datelor.

 Limbajul de manipulare a datelor utilizat de sistem


trebuie sa permita ca, în situatia în care datele sunt
distribuite, programele de aplicatie sa fie logic aceleasi cu
cele utilizate în cazul în care datele sunt fizic centralizate.

 Utilizatorul trebuie sa perceapa datele ca fiind


centralizate. Sarcina de localizare a datelor, atunci când
acestea sunt distribuite geografic precum si sarcina
recompunerii datelor trebuie sa revina sistemului si nu
utilizatorului.
Proiectarea bazelor de date. Structuri de date relationale

Reguli pe care trebuie sa le indeplineasca un SGBDR

13. Regula versiunii procedurale a unui SGBD.

 Orice componenta procedurala a unui SGBD trebuie sa


respecte aceleasi restrictii de integritate ca si
componenta relationala.

 De exemplu, daca in partea de manipulare a datelor a


limbajului relational valoarea dintr-o coloana este de
tipul not null, orice alta metoda procedurala de accesare
a acestei coloane nu trebuie sa permita introducerea
valorilor null.
Proiectarea bazelor de date. Structuri de date relationale

Criterii minimale pentru un SGBDR

 Un SGBD este minimal relational daca satisface conditiile:

 Toate datele din cadrul bazei de date sunt reprezentate prin


valori în tabele;

 Nu exista pointeri observabili de catre utilizatori între tabele;

 Sistemul suporta operatorii relationali de proiectie, selectie si


join natural, fara limitari impuse din considerente interne
(cum ar fi de exemplu, necesitatea indexarii atributelor).
Unitatea de informatie cu care se lucreaza în cadrul acestor
operatii trebuie sa fie relatia.
Proiectarea bazelor de date. Structuri de date relationale

Instrumentele si mecanismele de lucru pentru un SGBDR

 Un limbaj relational pentru descrierea datelor la nivel fizic,


logic si conceptual;

 Un limbaj relational pentru manipularea datelor (interogare


si actualizare);

 Mecanisme pentru controlul integritatii semantice a datelor;

 Mecanisme pentru optimizarea cererilor de date;

 Utilitare pentru prezentarea rezultatelor, de tipul


generatoarelor de rapoarte, utilitare pentru generarea de
aplicatii, pentru generarea de statistici despre starea bazei de
date
Proiectarea bazelor de date. Structuri de date relationale

Limbaje relationale de definire si manipulare a datelor

 SGBDR trebuie sa puna la dispozitia utilizatorilor un set de:


 Comenzi pentru definirea datelor, care formeaza limbajul de
definire al datelor;
 Comenzi pentru manipularea datelor, care formeaza limbajul
de manipulare a datelor.

 În cazul SGBDR aceste categorii de comenzi pot fi


interpretate drept componente ale unui singur limbaj
relational de definire si manipulare a datelor
 Exemple: SQLPLUS (limbajul utilizat de SGBD ORACLE),
QUEL (limbajul utilizat de SGBD INGRES)
 Limbajele relationale, difera între ele în principal prin
facilitatile oferite utilizatorilor.
Proiectarea bazelor de date. Structuri de date relationale

Limbaje relationale de definire a datelor

 Facilitati de descriere a datelor la nivel conceptual:


 comenzi pentru crearea unei baze de date.
 comenzi pentru suprimarea unei baze de date

 comenzi pentru crearea relatiilor de baza. Exemplu: comanda


SQL pentru crearea unei relatii ORASE, cu atributele: COD,
DEN si NRLOC:
 CREATE TABLE ORASE(COD NUMBER NOT NULL, DEN
CHAR(20), NRLOC NUMBER)

 comenzi pentru suprimarea unei relatii de baza:


 DROP TABLE ORASE
Proiectarea bazelor de date. Structuri de date relationale

Limbaje relationale de definire a datelor


 Facilitati de descriere a datelor la nivel conceptual:

 comenzi pentru modificarea numelui unei relatii:


 RENAME ORASE TO LOCALIT

 comenzi pentru crearea de sinonime pentru relatiile din baza


de date:
 CREATE SYNONYM LOC FOR LOCALIT

 comenzi pentru suprimarea sinonimelor:


 DROP SYNONYM LOC
Proiectarea bazelor de date. Structuri de date relationale

Limbaje relationale de definire a datelor


 Facilitati de descriere a datelor la nivel conceptual :
 comenzi pentru modificarea descrierii unei relatii(adaugarea
de noi atribute, suprimarea unor atribute, modificarea
numelui si/sau tipului unui atribut din cadrul relatiei):
 ALTER TABLE ORASE ADD (JUDET CHAR (2))
 comenzi pentru declararea restrictiilor de integritate;
Restrictiile de integritate sunt memorate în baza de date
numai daca la momentul declararii lor, datele din cadrul
bazei da date respecta aceste restrictii. Ulterior, restrictiile
memorate vor fi verificate în cadrul fiecarii operatii de
actualizare:
 ASSERT ON UPDATE TO ORASE: NEW NRLOC >=OLD
NRLOC
 unde NEW si OLD sunt cuvinte cheie utilizate în formularea
oricarei restrictii de integritate temporale
Proiectarea bazelor de date. Structuri de date relationale

Limbaje relationale de definire a datelor


 Facilitati de descriere a datelor la nivel logic:
 comenzi pentru definirea relatiilor virtuale (relatii care nu
sunt fizic implementate în baza de date); Relatiile virtuale se
construiesc dintr-una sau mai multe relatii de baza, prin
combinarea unor atribute din relatiile de baza, excluderea
unor atribute, redenumirea unor atribute, schimbarea
domeniului asociat anumitor atribute, alte prelucrari asupra
atributelor din relatiile de baza; Un anumit utilizator va
primi, de obicei drepturi de acces la relatiile virtuale si nu la
relatiile de baza.
 Exemplu pentru relatia Orase:definim relatia virtuala
Municipii:
 DEFINE VIEW MUNICIPII AS SELECT* FROM ORASE
WHERE NRLOC>250000
Proiectarea bazelor de date. Structuri de date relationale

Limbaje relationale de definire a datelor

 Facilitati de descriere a datelor la nivel logic:

 comenzi pentru suprimarea relatiilor virtuale :


 DROP VIEW MUNICIPII
 comenzi pentru acordarea drepturilor de acces la baza de
date; Accesul unor persoane la baza de date se poate realiza
doar în conditiile detinerii unor drepturi de acces la date.

 Proiectantul unei relatii (de baza sau virtuala) primeste în


mod automat toate privilegiile de operare asupra acestei
relatii, putand realiza: cautari de date în relatie, actualizari
ale datelor din relatie, actualizari ale schemei relatiei,
atasarea unor restrictii de integritate, suprimarea relatiei.
Proiectarea bazelor de date. Structuri de date relationale

Limbaje relationale de definire a datelor


 Facilitati de descriere a datelor la nivel logic:

 La randul sau, proiectantul poate acorda sau nu privilegii


asupra acestor relatii si altor utilizatori:
 GRANT CONNECT TO NUME_UTILIZATOR IDENTIFIED
BY PAROLA

 comenzi pentru retragerea drepturilor de acces la baza de


date:
 REVOKE UPDATE ON ORASE FROM NUME_UTILIZATOR
Proiectarea bazelor de date. Structuri de date relationale

Limbaje relationale de definire a datelor


 Facilitati de descriere a datelor la nivel fizic:
 comenzi pentru definirea de indecsi pe atributele relatiilor.
indexul constituie principala cale de acces la date.
 Accesul la tuplurile unei relatii se face prin doua metode:
acces secvential si acces pe baza de cheie.
 Accesul secvential presupune parcurgerea relatiei, în ordinea
de încarcare si se poate utiliza pentru relatii mici sau relatii
cu rezultate intermediare.
 Accesul pe baza de chei poate avea mai multe forme:
 Accesul direct la unul sau mai multe tupluri, conform valorii
de cheie;
 Accesul secvential sortat la un subansamblu de tupluri din
cadrul unei relatii, de la o valoare a cheii pana la o alta
valoare a cheii;
 Accesul secvential sortat pe o întreaga relatie.
Proiectarea bazelor de date. Structuri de date relationale

Limbaje relationale de definire a datelor


 Facilitati de descriere a datelor la nivel fizic:

 comenzi pentru definirea de indecsi pe atributele relatiilor.

 CREATE INDEX INCOD ON ORASE(COD)

 Utilizarea indecsilor pentru accesul la date determina


cresterea vitezei de acces, constituind o cale de acces mai
rapida decat accesul secvential, dar în acelasi timp
îngreuneaza operatiile de actualizare a datelor (inserari,
modificari, stergeri). Orice actualizare care afecteaza
atributul dupa care s-a facut indexarea trebuie urmata de o
actualizare a indexului.
Proiectarea bazelor de date. Structuri de date relationale

Limbaje relationale de definire a datelor


 Facilitati de descriere a datelor la nivel fizic:

 comenzi pentru suprimarea indecsilor:


 DROP INDEX INCOD

 comenzi pentru controlul alocarii spatiului fizic al bazei de


date:
 CREATE PARTITION PART

 Adaugarea unor fisiere la partitia PART se poate realiza prin


comanda:
 ALTER PARTITION PART ADD FILE 'ORASE. DBS'
Baze de date

Curs IV

Modelul entitate-relatie. Normalizarea


bazelor de date relationale
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Modelul entitate-relaţie

 Este cel mai utilizat model conceptual de nivel înalt


 Prezinta schema conceptuală a bazei de date cu
ajutorul entităţilor şi a relaţiilor dintre acestea.
 Elementele de bază folosite în cadrul acestui model sunt
conceptele de entitate şi cel de relaţie.

 Caracteristici:
 Structura relationala a datelor.
 Operatorii modelului relational.
 Restrictiile de integritate ale modelului relational.
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Structura relationala a datelor


 Definitie: Modelul reprezinta o modalitate de
reprezentare a unei parti din realitate sub forma
abstracta si impune utilizarea unui set de reguli care
urmeaza o directie bine stabilita

 Definitie: Entitatea este o clasa de obiecte ale lumii


reale, cu o existenţă independentă şi poate reprezenta
obiecte fizice, activitati, concepte.
 Este practic o tabela care detine un nume si care
descrie o clasa de obiecte fizice sau abstracte (ex:
tabela studenti)
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Structura relationala a datelor


 Definitie: Instanta unei entitati descrie un obiect
specific din clasa de obiecte (ex: obiectul student) .
Instanta este o inregistrare din tabela. Se mai numeste
si tuplu
 Definitie: Atributul este o proprietate atribuita unei
instante( ex: un student are nume). Atributele se mai
numesc campuri (coloane) ale tabelei

Studenti Entitate
Nume
Atribute Prenume
Sectie
An
Modelul entitate-relatie.
Normalizarea bazelor de date relationale
 Structura relationala a datelor

 Atributul complex - poate fi divizat în mai multe părţi cu


semnificaţie independentă. Ex: atributul Adresa poate fi
impartit in sub-atributele Oras, Strada, Numar, Scara…
 Atributul atomic – este atribut de baza care nu poate fi
descomus sau care, prin concatenare cu alte atribute,
participa la formarea atributului complex: Ex: atributul
Oras.
 Atributul derivat - se pot determina prin calcul, utilizand
alte atribute. Ex: vârsta unei persoane se poate calcula din
data curentă minus data naşterii persoanei respective

 Atributul null – nu are valori asociate. Ex: atributul Scara


va fi Null daca persoana locuieste la casa.
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Structura relationala a datelor


 Domeniul - Valorile unui atribut sunt luate dintr-
un domeniu care determina multimea valida de
valori pentru unul sau mai multe atribute.

 Mai multe atribute pot avea acelasi domeniu.

 Ex: atributele data nasterii, data angajarii, data


absolvirii sunt toate luare din domeniul date iar
pretul de vanzare, preul de achizitii si lista de
preturi sunt luate din domeniu bani.
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Structura relationala a datelor


 Domenile
 determina operatiile permise asupra unui atribut
 determina care atribute pot fi comparate sau folosite in
combinatii
 determina multimea de valori precum si marimea si
formatele campurilor din baza de date fizica.
 Consideram domeniile:
 D1: domeniul numelor
 D2:domeniul sexului
 D3: domeniul varstelor

 Spunem ca tuplurile (inregistrarile):


 <“Vlad”,”M”, 23> si <“Maria”,”F”, 22>
 apartin produsului cartezian D1 x D2 x D3
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Relatia reprezinta o submultime a produsului cartezian al


mai multor domenii, submultime caracterizata printr-un
nume si care contine tupluri cu semnificatie.

 Considerand, de exemplu ca se cunosc doua persoane, vom


defini relatia R prin tuplurile care descriu aceste persoane si
anume:
R D1 D2 D3
Vlad M 23
Maria F 22

 Numarul tuplurilor dintr-o relatie reprezinta cardinalul


relatiei
 Numarul valorilor (atributelor) dintr-un tuplu defineste
gradul relatiei
 Într-o relatie tuplurile trebuie sa fie distincte, nu se admit
duplicari ale tuplurilor.
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Atribute - Semnificatia valorilor din cadrul unui tuplu


se stabileste nu numai pe baza domeniului de care
apartine valorile, ci si in functie de pozitia ocupata in
cadrul tuplului.
 Exista situatii in care avem atribute care apartin
aceluias domeniu, in acest caz diferentierea se face
prin numele atributului.
 Ex: tabela de forma:

R Nume:D1 Sex:D2 Varsta:D3 Nume mama:D1


Vlad M 23 Alina
Maria F 22 Maria
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Construcţia schemelor relaţie


 Extinderea conceptului de relatie:
 O relaţie este o corespondenţă între entităţi din una sau
mai multe mulţimi de entităţi.
 Gradul unei relaţii este dat de numărul de mulţimi de
entităţi asociate.
 Relaţiile pot fi binare (între 2 mulţimi de entităţi) sau
multiple (între mai mult de 2 multimi de entităţi).
 Relaţiile binare sunt împărţite în trei categorii, după
numărul elementelor din fiecare din cele două mulţimi
puse în corespondenţă de relaţia respectivă.
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Construcţia schemelor relaţie-Relatia binara unu-


la-unu
 Este cel mai simplu tip de relaţie prin care unui
element din mulţimea E1 îi corespunde un singur
element din mulţimea E2 şi reciproc:

 Este folosita pentru a reduce numărul de atribute


dintr-o entitate, pentru a nu depăşi numărul
maxim de câmpuri asociate unei tabele (255)
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Construcţia schemelor relaţie - Relatia binara unu-la-unu


 Se poate folosi în cazul în care dorim despărţirea
informaţiilor care se modifică mai rar faţă de cele care se
modifică frecvent.
 Exemplu: împărţirea informaţiilor despre studenţi în două
entităţi: informaţiile personale stocate în tabelul
StudPersonal şi informaţiile care se modifică anual în tabela
Studenti.
 Pentru a realiza efectiv această relaţie se introduce
atributul de legatura CodStud in cele doua tabele
 Studenti cu atributele:
 CodStud, An, Sectia, Grupa, Media, Bursa
 StudPersonal cu atributele:
 CodStud, CNP, Nume, Prenume, Data Nasterii, Loc
Naşterii, Adresa
 Informaţiile stocate aşa sunt mult mai uşor de manipulat.
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Construcţia schemelor relaţie -Relatia binara unu-la-multe


 Este o relaţie prin care unui element din mulţimea E1 îi
corespund unul sau mai multe elemente din mulţimea E2, dar
unui element din mulţimea E2 îi corespunde un singur element
din mulţimea E1.
 Exemplu: Intr-o universitate sunt mai multe facultati si multi
studenti, dar fiecare student apartine unei facultati. Introduc
atributul CodFac in cele doua tabele:
 Facultate cu atributele: CodFac, Denumire, Adresa, Nume
Decan…
 Studenti cu atributele: CodStud, CodFac, An, Grupa, Media,
Bursa…
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Construcţia schemelor relaţie -Relatia binara multe-la-multe


 Este relaţia prin care unui element din mulţimea E1 îi
corespund mai multe elemente din mulţimea E2, şi reciproc.
 Exemplu: un student participă la mai multe materii, cursuri,
iar o materie este frecventată de mai mulţi studenţi:
 Studenti cu atributele: CodStud, CodFac, An, Grupa, Media,
Bursa
 Materii cu atributele: CodMaterie, Denumire, An, Nume
Profesor
 Note cu atributele: CodStud, CodMaterie, Nota, Data
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Construcţia schemelor relaţie–Diagrama entitate-


relatie
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Schema relatiei
 Consta in numele relatiei, urmat de lista atributelor,
pentru fiecare atribut precizandu-se domeniul asociat.
 Intensia unei relatii este schema relatiei, o expresie a
proprietatilor comune si invariante ale tuplurilor care
compun relatia.
 Extensia unei relatii reprezinta multimea tuplurilor
care compun la un moment dat relatia, multime care
este variabilia in timp.
 Relatii virtuale - un filtru asupra tabelului initial care
contine numai informatia necesara unei anumite
abordari, unei anumite aplicatii.
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Relatii virtuale
 Se concretizeaza prin tabelul view si sunt definite prin
intermediul unor expresii relationale;

 Stabilirea tuplurilor care compun vizualizarea se


realizeaza prin evaluarea expresiei relationale ori de
cate ori utilizatorul se refera la aceea vizualizare.

 Are avantajul ca asigura securitatea tabelului initial,


care este protejat de stergeri, modificari .

 Are dezavantajul ca nu se reactualizeaza coloanele


care contin valori ce se calculeaza
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Relatii virtuale - crearea tabelului view

CREATE VIEW student(nume, prenume, an, grupa )


AS SELECT nume, prenume, an, grupa
FROM stud
WHERE cod_sectie = ‘II'

 Operatori in modelul relational

 Algebric - noile relatii se obtin aplicand operatori


specializati asupra uneia sau mai multor relatii din cadrul
bazei relationale (algebra relationala).

 Logic - noile relatii se obtin cu ajutorul unor formule logice


pe care tuplurile relatiei rezultat trebuie sa le satisfaca
(calculul relational).
Modelul entitate-relatie.
Normalizarea bazelor de date relationale
 Algebra relationala
 Operatorii realizeaza urmatoarele functii:
 SELECT (selectie) - extrage tupluri ce satisfac o conditie
specificata;
 PROJECT (proiectie) - extrage atributele specificate;
 DIFFERENCE (diferenta) - elimina tupluri care apar intr-o
relatie, dar nu apar in cealalta;
 PRODUCT (produs cartezian) - genereaza toate perechile
posibile de tupluri, primul element al perechi fiind luat din
prima relatie, iar cel de-al doilea element din cealalta relatie;
 UNION (reuniune) - reuneste doua relatii;
 INTERSECT (intersectie) - extrage tupluri care apar in
ambele relatii;
 DIVISION(diviziune) - extrage valorile atributelor dintr-o
relatie, care apar in toate valorile atributelor din cealalta
relatie;
Modelul entitate-relatie.
Normalizarea bazelor de date relationale
 Algebra relationala
 Operatorii realizeaza urmatoarele functii:
 JOIN(compunere) - extrage tupluri din mai multe relatii
corelate astfel:
o NATURAL JOIN (compunere naturala) - combina tupluri
din doua relatii, cu conditia ca atributele comune sa aiba
valori identice;
o SEMI-JOIN(semi-compunere) - selecteaza toate tuplurile din
prima relatie care vor fi corelate cu tupluri din cea de-a
doua relatie;
o JOIN (compunere) - combina tupluri din doua relatii, cu
conditia ca valorile atributelor sa satisfaca o anumita
conditie;
o OUTER JOIN (compunere externa) - combina tupluri din
doua relatii, astfel incat conditiile de corelare sa fie
satisfacute. Tuplurile din orice relatie care nu satisfac aceste
conditii sunt completate cu valori null.
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Algebra relationala – Exemplificari

 Consideram baza de date:

 SALARIAT(cod_salariat, nume, prenume, sex, job,


cod_sef, data_ang, salar, comision, cod_dept),

 DEPARTAMENT (cod_dept, nume_dept, loc),

 ATASAT_LA(cod_salariat, nr_proiect, functia),

 PROIECT(nr_proiect, descriere, buget).


Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Algebra relationala – Exemplificari


 Operatorul UNION : permite obtinerea tuplurilor distincte a
doua relatii si poate fi utilizat pentru adaugarea de noi
tupluri intr-o relatie. Notatiile uzuale intalnite pentru
reuniune sunt: R1 ∪ R2, OR(R1 ∪ R2), APPEND(R1,R2),
UNION(R1,R2).
 Afisarea tuturor persoanelor care sunt programator sau
sunt de sex masculin din baza de date salariat :
SELECT nume, prenume, salar, comision
FROM salariat
WHERE job = 'programator'
UNION
SELECT nume, prenume, salar, comision
FROM salariat
WHERE sex = 'm';
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Algebra relationala – Exemplificari


 Operatorul DIFFERENCE: este o operatie binara
necomutativa care permite obtinerea tuplurilor ce apar
numai intr-o relatie. Notatiile uzuale pentru operatia de
diferenta sunt: R1 - R2, REMOVE(R1, R2), MINUS(R1, R2),
DIFFERENCE(R1, R2).
 Operatorul INTERSECT - este un operator binar, comutativ,
derivat: R1 Ç R2 = R1 - (R1 - R2) sau R1 Ç R2 = R2 - (R2 - R1).
Notatiile uzuale pentru operatia de intersectie sunt: R1 Ç R2,
INTERSECT(R1, R2), AND(R1,R2) .
 Operatorii DIFFERENCE si INTERSECT pot fi simulati in
SQL cu ajutorul optiunilor EXISTS, NOT EXISTS, IN, != ANY,
in cadrul comenzii SELECT.
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Algebra relationala – Exemplificari


 Afisarea tuturor angajatilor (nume, prenume, salar,
comision, sex) din baza de date salariat care nu
lucreaza la proiectul cu numarul 22, se va realiza prin
operatorul DIFFERENCE.

SELECT nume, prenume, salar


FROM salariat s
WHERE s.cod_salariat NOT EXISTS
(SELECT a.cod_salariat
FROM atasat_la a
WHERE a.nr_proiect = 22
AND s.cod_salariat = a.cod_salariat);
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Algebra relationala – Exemplificari


 Afisarea tuturor angajatilor (nume, prenume, salar,
comision, sex) din baza de date salariat care lucreaza
la proiectul cu numarul 22, se va realiza prin
operatorul INTERSECT.

SELECT nume, prenume, salar, comision, sex


FROM salariat s
WHERE s. cod_salariat EXISTS
(SELECT a.cod_salariat
FROM atasat_la a
WHERE a.nr_proiect = 22
AND s.cod_salariat = a.cod_salariat);
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Algebra relationala – Exemplificari


 Operatorul PRODUCT - Produsul cartezian care
consta din construirea unei noi relatii R3, a carei
schema se obtine prin concatenarea schemelor
relatiilor R1 si R2 si a carei extensie cuprinde toate
combinatiile tuplurilor din R1 cu cele din R2. Notatiile
uzuale pentru aceasta operatie sunt: R1xR2,
PRODUCT(R1, R2), TIMES(R1, R2).
 Produsul cartezian al bazei de date salariat cu baza de
date departament poate fi exprimat in SQL astfel:

SELECT *
FROM salariat, departament;
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Algebra relationala – Exemplificari


 Operatorul SELECT – este definita asupra unei relatii
R, consta din construirea unei relatii S, a carei schema
este identica cu cea a relatiei R si a carei extensie este
construita din acele tupluri din R care satisfac o
conditie mentionata explicit in cadrul operatiei.
Conditia precizata in cadrul operatiei de selectie este
in general de forma:
atribut < operator de comparatie > valoare unde:
< operator de comparatie> poate fi: <, <=, >=, > sau ≠;
Notatiile utilizate sunt: R[conditie], RESTRICT(R,
conditie), SELECT(R, conditie).
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Algebra relationala – Exemplificari


 Afisarea angajatilor din departamentul cu numarul
10 se va realiza utilizand operatia de selectie pe baza
de date salariat:
 SELECT * FROM salariat WHERE cod_dept =10;

 Operatorul JOIN - permite regasirea informatiei din


mai multe relatii corelate. Consta din construirea unei
noi relatii R3, prin concatenarea unor tupluri din R1
cu tupluri din R2 care satisfac o anumita conditie,
specificata explicit in cadrul operatiei.
 Notatiile utilizate sunt: JOIN( R1, R2, conditie).
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Algebra relationala – Exemplificari


 JOIN(R1,R2,conditie)=RESTRICT(PRODUCT(
R1,R2), conditie)
 Afisam numele angajatilor si departamentele la
care acestia lucreaza:

SELECT nume, prenume, job, nume_dept, loc


FROM salariat s, departament d
WHERE s.cod_dept =d.cod_dept;

 Operatorul DIVISION - poate fi exprimat in SQL


prin succesiunea a doi operatori NOT EXISTS.
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Algebra relationala – Exemplificari


 Diviziunea in SQL prin care se obtin codurile salariatilor
atasati tuturor proiectelor pentru care s-a alocat un buget
de 100.000 va fi exprimata astfel:
SELECT UNIQUE(cod_salariat)
FROM atasat_la a
WHERE a.nr_proiect NOT EXISTS
(SELECT p.nr_proiect
FROM proiect p
WHERE buget = 100.000
AND p.nr_proiect NOT EXISTS
(SELECT b.nr_proiect
FROM atasat_la b
WHERE p.nr_proiect = b. nr_proiect
AND b.cod_salariat = a.cod_salariat));
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Algebra relationala – Exemplificari


 Diviziunea in SQL prin care se obtin codurile salariatilor
atasati tuturor proiectelor pentru care s-a alocat un buget
de 100.000 poate fi exprimata si cu ajutorul functiei COUNT:

SELECT cod_salariat
FROM atasat_la a
WHERE nr_proiect IN
(SELECT nr_proiect
FROM proiect
WHERE buget =100.000)
GROUP BY cod_salariat
HAVING COUNT(nr_proiect) = (SELECT COUNT (*)
FROM proiect
WHERE buget =100.000);
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Restrictiile de integritate ale modelului relational


 Restrictia de unicitate a cheii:
 Cheia unei relatii R reprezinta ansamblul minimal de
atribute prin care se poate identifica in mod unic orice tuplu
din R. Orice relatie poseda cel putin o cheie.
 Reprezinta restrictia de integritate care impune ca intr-o
relatie, R care are cheia k, oricare ar fi tuplurile t1 si t2 sa
fie satisfacuta inegalitatea : tı (k) ≠ t2 (k).
 Cheia este construita fie dintr-un singur atribut, fie din
totalitatea atributelor din schema relatiei respective.
 Cheia construita dintr-un singur atribut se numeste cheie
simpla, iar cand este formata din mai multe atribute este de
cheie compusa.
 Într-o relatie pot exista mai multe combinatii de atribute cu
proprietatea de identificare unica a tuplurilor. În acest caz
relatia poseda mai multi candidati cheie (chei candidate).
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Restrictiile de integritate ale modelului relational


 Restrictia de unicitate a cheii:
 Administratorul bazei de date alege una dintre cheile
candidate care sa serveasca la identificarea tuplurilor si
care se va numi cheie primara. Restul cheilor candidate vor
purta numele de chei alternate.
 Cheia unei relatii trebuie sa fie minimala, in sensul ca nici o
parte a sa nu trebuie sa posede proprietatea de identificare
unica a tuplurilor relatiei. Un grup de atribute din cadrul
unei relatii care contine o cheie a relatiei poarta numele de
supercheie.
 Modelul relational serveste la reprezentarea entitatilor din
lumea reala si a asocierilor dintre acestea. Modelarea
asocierilor dintre entitati impune recurgerea la conceptul de
cheie externa.
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Restrictiile de integritate ale modelului relational


 Restrictia de unicitate a cheii:
 Atributele care reprezinta cheia primara sunt fie subliniate,
fie urmate de semnul #.
 Ex: avem relatiile DEPART si ANGAJATI:
ANGAJATI(Codang, Nume, Coddep) sau
ANGAJATI(Codang#, Nume, Coddep)
DEPART(Coddep, Dendept, Tel)
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Restrictiile de integritate ale modelului relational


 Restrictia referentiala - Reprezinta restrictia de integritate
care impune ca intr-o relatie Rı care refera o relatie R2,
valorile cheii externe sa figureze printre valorile cheii
primare sau sa fie valori ' null ' nedefinite. R1 si R2 nu
trebuie sa fie neaparat distincte. Relatiile ANGAJATI si
DEPART respecta restrictia de integritate.
 Restrictia entitatii - reprezinta restrictia de integritate care
impune ca intr-o relatie, atributele cheii primare sa fie
nenule. Unicitatea cheii impune ca la incarcarea unui tuplu,
valoarea cheii sa fie cuoscuta, pentru a se putea verifica
faptul ca aceasta valoare nu exista deja incarcata. Cu valori
' null ' cheia isi pierde rolul de identificator de tuplu.
Restrictia de integritate a entitatii nu se aplica cheilor
externe dintr-o relatie, daca acestea nu apartin cheii
primare.
Modelul entitate-relatie.
Normalizarea bazelor de date relationale

 Restrictiile de integritate ale modelului relational

 Dependetele intre date:

 Dependenta functionala - Reprezinta dependenta intre date


prin care se poate identifica un atribut sau un grup de
atribute prin intermediul unui atribut sau grup de atribute.

 Dependenta multivaloare - Reprezinta acel tip de


dependenta intre date in care un atribut sau un grup de
atribute poate prezenta mai multe valori pentru o singura
valoare a unui atribut sau a unui grup de atribute.

 Dependenta jonctiune - daca in relatia R figureaza tuplurile


<X1, Y1, Z2>, <X2, Y1, Z1> si <X1, Y2, Z1> atunci in R trebuie
sa figureze si tuplul <X1, Y1, Z1>
Baze de date

Curs V

Tipuri de date SQL. Functii in SQL.


Baze de date. Cursul 5

Limbajul SQL pune la dispozitie un set de tipuri de date care


pot fi asociate coloanelor unei tabele, grupate în mai multe
categorii:

 Tipuri caracter, sir de caractere

 Tipuri scalare numerice

 Tipuri scalare binare

 Tipuri pentru date calendaristice, timp si interval de timp

 Tipuri LOB (large object)

 Tipuri compuse: TABLE si VARRAY


Baze de date. Cursul 5

 Tipuri de date caracter, sir de caractere

 CHAR(size) sau CHAR - șir de caractere de lungime


fixa (poate conține litere, cifre și caractere speciale).
Dimensiunea fixă este specificată în paranteze. Daca size
lipseste, sirul de caractere are lungimea 1. Size poate fi
maximum 8.000 de caractere.
 VARCHAR(size) - șir de caractere de lungime variabilă (poate
conține litere, cifre și caractere speciale). Dimensiunea
maximă este specificată în paranteze. Se pot stoca până la 255
de caractere. Dacă se pune o valoare mai mare de 255 va fi
transformata într-un tip de text. Maximum 8.000 de
caractere;
 CHARACTER(size), CHARACTER - Identice cu CHAR(size) si
CHAR. Introduse pentru compatibilitatea cu alte sisteme;
 STRING(size) - Identic cu VARCHAR, introduse pentru
compatibilitatea cu alte sisteme;
Baze de date. Cursul 5
 Tipuri de date caracter, sir de caractere

 NCHAR(size), NVARCHAR(size) - Analog cu CHAR, respective


VARCHAR. Poate stoca siruri Unicode scrise în seturi de
caractere nationale (multioctet); Maxim 4000 caractere
 TINYTEXT-șir de caractere, cu o lungime maximă de 255 de
caractere;
 TEXT - șir de caractere, cu o lungime maximă de 65.535 de
caractere; Maximum 2 GB de date de tip text;
 MEDIUMTEXT-Susține un șir de caractere, cu o lungime maximă
de 16,777,215 de caractere;
 LONGTEXT-Susține un șir de caractere, cu o lungime maximă de
2^31 octeti, 4,294,967,295 caractere. Este permisa doar o singura
coloana de acest tip pentru o tabela.
 ROWID - Poate stoca un identificator pentru o linie dintr-o
tabela. Pentru conversia la/de la sir de caractere (18 caractere)
se pot folosi functiile SQL ROWIDTOCHAR respectiv
CHARTOROWID.
Baze de date. Cursul 5

 Tipuri de date caracter, sir de caractere


 varchar(max)-Variabilă șir de caractere. Maximum
1.073.741.824 de caractere.
 nvarchar(max)-Variabilă șir Unicode. Maximum
536,870,912 de caractere
 Ntext-Variabilă șir Unicode. Maximum 2 GB de date
de tip text;
 Bit-Permite 0, 1 sau NULL
 binary(n)-șir binar. Maxim 8.000 bytes
 varbinary -variabilă șir binar. Maxim 8.000 bytes
 varbinary(max) - variabilă șir binar. 2 GB maxim
 Image-variabilă șir binar. 2 GB maxim
Baze de date. Cursul 5

 Tipuri de date caracter, sir de caractere

 UROWID - Universal ROWID. Poate stoca un identificator


logic si fizic de linie într-o tabela, indexata sau nu precum si
un identificator de linie extern (non-Oracle). Nu este
necesara folosirea functiilor de conversie la/de la sir de
caractere (conversie automata).

 Tipuri de date scalare numerice

 TINYINT(size) - -128-127 normale.


0-255 UNSIGNED *.
Numărul maxim de cifre poate fi specificat în
paranteză
 SMALLINT(size) - -32.768-32.767 normale.
0-65535 UNSIGNED*.
Numărul maxim de cifre pot fi specificate în paranteză
Baze de date. Cursul 5

 Tipuri de date scalare numerice

 MEDIUMINT(size) - -8.388.608 la 8.388.607 normale.


0-16.777.215 UNSIGNED*.
Numărul maxim de cifre pot fi specificate în paranteză
 INTEGER, INT(size) - -2.147.483.648-2.147.483.647 normale.
0-4.294.967.295 UNSIGNED*.
Numărul maxim de cifre pot fi specificate în paranteză
 BIGINT(size) - -9223372036854775808-9223372036854775807
normale.
0-18.446.744.073.709.551.615 UNSIGNED*.
Numărul maxim de cifre pot fi specificate în paranteză
 NUMBER - Numar real de dimensiune variabila, cu 38 de
cifre semnificative, având valori între 1E-130 si 10E125.
 NUMBER(n) - Numar întreg cu maxim n cifre;
 NUMBER(n, z) - Numar real cu n cifre dintre care z
zecimale;
Baze de date. Cursul 5

 Tipuri de date scalare numerice

 REAL - Subtip pentru NUMBER. Numere în virgule mobila


cu 18 cifre semnificative.
 DOUBLE PRECISION, FLOAT(size,d) - Un număr mic, cu un
punct zecimal flotant. Numărul maxim de cifre poate fi
specificat în parametrul size. Numărul maxim de cifre la
dreapta punctului zecimal este specificat în parametrul d.
Subtipuri pentru NUMBER. Numere în virgula mobila cu 38
de cifre semnificative.
 DOUBLE(size,d) - Un număr mare, cu un punct zecimal
flotant. Numărul maxim de cifre poate fi specificat în
parametrul size. Numărul maxim de cifre la dreapta
punctului zecimal este specificat în parametrul d.
Baze de date. Cursul 5

 Tipuri de date scalare numerice

 DEC, NUMERIC, DECIMAL(size,d) - DOUBLE stocat


ca un șir de caractere, care să permită un punct zecimal fix.
Numărul maxim de cifre poate fi specificat în parametrul
size. Numărul maxim de cifre la dreapta punctului zecimal
este specificat în parametrul d. Subtipuri pentru NUMBER.
Numere în virgula fixa cu 38 de cifre semnificative;
 BINARY_INTEGER - Întregi între -2^31 si 2^31.
 NATURAL, POSITIVE - Subtipuri pentru
BINARY_INTEGER. Numere întregi pozitive.
 SIGNTYPE - Subtip al BINARY_INTEGER. Poate lua doar
valorile -1, 0 si 1.
 PLS_INTEGER - Întregi între -2^31 si 2^31. Similar cu
BINARY_INTEGER dar operatiile cu astfel de numere sunt
mai rapide si în caz de depasire se ridica o exceptie.
Baze de date. Cursul 5

 Tipuri de date scalare numerice

Tipurile întregi au o opțiune suplimentară numită


UNSIGNED. În mod normal, un întreg trece de la un negativ la
o valoare pozitivă. Adăugarea atributului UNSIGNED va muta
acel interval, astfel începe de la zero , în loc de la un număr
negativ.

 Tipuri pentru date calendaristice, timp si interval de timp

 DATE() O data. Format: AAAA-LL-ZZ. Intervalul


acceptat este de la „1000-01-01“ la „9999-12-31“
 DATETIME()*- O dată și combinația de timp. Format: AAAA-
LL-ZZ HH: MI: SS. Intervalul acceptată este de la „1000-01-01
00:00:00“ la „9999-12-31 23:59:59“
Baze de date. Cursul 5
 Tipuri pentru date calendaristice, timp si interval de timp

 TIMESTAMP(n)* -Un marcaj de timp. Valorile TIMESTAMP


sunt stocate ca numărul de secunde de la Unix ('1970-01-01
00:00:00' UTC) . Format: AAAA-LL-ZZ HH: MI: SS.
Intervalul acceptat este de la „1970-01-01 00:00:01“ UTC la
„2038-01-09 03:14:07“ UTC. Extensie a tipului DATE. Contine
si fractiuni de secunda. Daca este prezent, n specifica
numarul de zecimale pentru acestea. Implicit n = 6
 TIME()- O perioada. Format: HH: MI: SS. Intervalul acceptat
este de la '-838: 59: 59' la '838: 59: 59‘
 TIMESTAMP [(n)] WITH TIME ZONE - Extinde tipul
TIMESTAMP continând si o diferenta între ora locala si ora
universala (GMT);
 TIMESTAMP [(n)] WITH LOCAL TIME ZONE - Similar cu
tipul anterior dar la stocarea în baza de date valorile sunt
convertite la ora zonei bazei de date iar la regasire la ora
zonei aplicatiei client.
Baze de date. Cursul 5

 Tipuri pentru date calendaristice, timp si interval de timp


 YEAR()-Un an în format din patru cifre sau din două cifre.
Valorile permise în format de patru cifre: 1901 2155. Valori
permise în format din două cifre: 70-69, reprezentand ani
1970-2069;
 INTERVAL YEAR [(n)] TO MONTH - intervale de ani si luni.
Precizia n specifica numarul de cifre pentru an (între 0 si 4,
implicit 2).
 INTERVAL DAY [(z)] TO SECOND [(s)] - Similar cu tipul
anterior, dar pentru interval de zile si secunde. valorile z si s
sunt preciziile pentru zile, respectiv secunde (0-9, implicit 2
pentru z si 6 pentru s ).
Chiar dacă DATETIME și TIMESTAMP returnează
același format, ele lucrează foarte diferit. Într-o interogare
INSERT sau UPDATE, TIMESTAMP este setat automat la data
și ora curente. TIMESTAMP acceptă, de asemenea, diverse
formate, cum ar fi YYYYMMDDHHMISS, YYMMDDHHMISS,
ZZLLAAAA sau AALLZZ.
Baze de date. Cursul 5

 Tipuri de date LOB (large object)

Aceste tipuri, introduse în ultimele versiuni ale


sistemului, permit stocarea unor cantitati mari de date pe
coloanele unei tabele sau a unei referinte (numita si locator)
catre un fisier extern bazei de date.
Manipularea valorilor de acest tip se face în SQL cu
ajutorul pachetelor de proceduri si functii puse la dispozitie de
sistem.
 BLOB- (Binary Large OBjects)-Susține până la 65,535 bytes de
date (Date binare de dimensiune pâna la 4 GB)
 MEDIUMBLOB-Pentru BLOB (Binary Large OBjects) .
Susține până la 16,777,215 bytes de date;
 LONGBLOB-Pentru BLOB (Binary Large OBjects)- Susține
până la 4,294,967,295 bytes de date;
Baze de date. Cursul 5

 Tipuri de date LOB (large object)

 CLOB – Sir de caractere de pâna la 4 GB. Se recomanda ca în


aplicatiile noi sa fie folosit în locul lui LONG.
 NCLOB - Similar cu CLOB dar se pot stoca siruri utilizând
seturi nationale de caractere. Dimensiunea maxima este de
asemenea de 4 GB;
 BFILE - Date binare de dimensiune pâna la 4 GB stocate în
fisiere externe. Nu participa la tranzactii, replicare si pot fi
doar citite nu si modificate.
 ENUM(x,y,z,etc.) -Permite introducerea unei liste de
valori posibile. Se poate lista până la 65535 valori într-o listă
ENUM. Valorile sunt sortate în ordinea în care sunt
introduse.
 SET -Similar cu ENUM, cu excepția faptului că SET poate
conține până la 64 de elementele de listă și poate stoca mai
mult de o alegere
Baze de date. Cursul 5

 Funcții SQL agregate


Funcțiile SQL agregate returnează o singură
valoare, calculată din alte valori, într-o coloană.
 AVG() - Returnează valoarea medie - SELECT
AVG(column_name) FROM table_name
 Exemple: SELECT AVG(Price) AS PriceAverage FROM
Products; SELECT ProductName, Price FROM Products
WHERE Price>(SELECT AVG(Price) FROM Products);
 COUNT() - Returnează numărul de rânduri -
COUNT(column_name) Sintaxa; SELECT COUNT(*)
FROM table_name; SELECT COUNT(DISTINCT
column_name) FROM table_name;
 Exemple: SELECT COUNT(CustomerID) AS
OrdersFromCustomerID7 FROM Orders WHERE
CustomerID=7;
Baze de date. Cursul 5

 Funcții SQL agregate


 FIRST() - Returnează prima valoare - SELECT
column_name FROM table_name ORDER BY
column_name ASC LIMIT 1;
 LAST() - Returnează ultima valoare - SELECT
column_name FROM table_name ORDER BY
column_name DESC LIMIT 1;
 MAX() - Returnează cea mai mare valoare - SELECT
MAX(column_name) FROM table_name;
 MIN() - Returnează cea mai mică valoare-SELECT
MIN(column_name) FROM table_name;
 SUM() - Returnează suma-SELECT SUM(column_name)
FROM table_name;
Baze de date. Cursul 5

 Funcții SQL Scalar


 Funcțiile SQL scalare returnează o singură valoare, pe
baza valorii de intrare.
 UCASE() - Convertește un câmp la majuscule-SELECT
UCASE(column_name) FROM table_name;
 LCASE() - Convertește un câmp la litere mici-SELECT
LCASE(column_name) FROM table_name;
 MID() - caractere Extras dintr - un câmp de text-
SELECT MID(column_name,start,length) AS
some_name FROM table_name;
 LEN() - Returnează lungimea unui câmp de text-
SELECT LEN(column_name) FROM table_name;
Baze de date. Cursul 5

 Funcții SQL Scalar


 ROUND() - Rotunjește un câmp numeric la numărul de
zecimale specificat
SELECT ROUND(column_name,decimals) FROM
table_name;
 NOW() - Returnează data și ora curentă a sistemului-
SELECT NOW() FROM table_name;
 FORMAT() - modul în care un câmp este afișat-SELECT
FORMAT(column_name,format) FROM table_name;
Baze de date

Curs VI

Limbajul SQL. Comenzi SQL de creare si


interogare a bazelor de date si tabelelor.
Baze de date. Cursul 6

CREATE TABLE
Cea mai simpla forma a cererii SQL de creare a unei
noi tabele are următoarea sintaxa:
 CREATE TABLE [schema.]nume_tabela (nume_coloana_1
tip_coloana_1 [DEFAULT expresie_1], nume_coloana_2
tip_coloana_2 [DEFAULT expresie_2],
...
nume_coloana_n tip_coloana_n [DEFAULT expresie_n]);
unde:
 nume_tabela = numele tabelei care se creează;
 nume_coloana_1,..., nume_coloana_n = numele coloanelor;
 tip_coloana_1,..., tip_coloana_n = tipurile de date pentru
coloanele respective, cu specificarea, daca este cazul, a
dimensiunii maxime sau preciziei;
 DEFAULT expresie_i - clauza optionala =specifica o valoare
implicita care este introdusa automat în cazul în care la
adaugarea unei noi linii nu se specifica nici-o valoare
Baze de date. Cursul 6

CREATE TABLE
 schema = numele bazei de date.
Condiționări in utilizarea comenzii CREATE TABLE:
 Utilizatorul are drepturile (privilegiile) necesare pentru a
crea tabele.
 Exista spatiu de stocare pentru noua tabela.
 Numele tabelei si al coloanelor respecta restricțiile uzuale
ale limbajului SQL (maxim de caractere, începe cu o litera,
conține litere, cifre si caracterele _, $, #, este cuvânt
rezervat). Sunt permise si alte caractere daca numele este
inclus între ghilimele.
 Nu exista deja un alt obiect (tabel) cu același nume în
aceeași schema (pentru același utilizator).
 Literele mici si cele mari sunt considerate egale în numele
de tabele si coloane (o tabela de studenti este aceeasi daca la
creare se foloseste oricare din numele STUD, Stud sau
StuD).
Baze de date. Cursul 6

Condiționări in utilizarea comenzii CREATE TABLE:


 Expresia din clauza opțională DEFAULT trebuie sa se
evalueze la o valoare de tip compatibil cu al coloanei
respective. Ea poate conține:
 Constante numerice sau sir de caractere,
 Funcții SQL, inclusiv SYSDATE sau USER.
dar nu poate conține:
 Numele unei coloane,
 Numele unei pseudo-coloane (definite de o secvență:
NEXTVAL sau CURRVAL).
EXEMPLUL 1: Creati o tabela Student care sa contina
urmatoarele date despre student:
 numar matricol, nume, CNP, sectia, anul, grupa, data
nastere, localitate nastere, medie an anterior
Baze de date. Cursul 6

CREATE TABLE STUD(


Nr_Matr NUMBER(4),
Nume VARCHAR(10),
CNP CHAR(13),
Sectie VARCHAR(30),
An_studii NUMBER(1) DEFAULT 1,
Grupa CHAR(1),
Data_nastere DATE,
Localitate VARCHAR2(10) DEFAULT ‘Resita',
Medie_anterioara NUMBER(4,2)
Baze de date. Cursul 6

Observatii:
 Numarul matricol si anul de studii a fost definit de tipul
intreg format din 4 cifre;
 Medie_anterioara este definite tot de tipul Number dar are
pozitie pentru zecimale, media va avea 4 cifre dintre care 2
intregi si 2 zecimale;
 CNP si Grupa sunt de tipul caracter formate din numar fix
de caractere, 13 sau 1;
 Nume, sectie si localitate sunt de tipul caracter, cu numar
variabil de caractere, unde s-a specificat si numarul maxim
pe care il poate avea fiecare, 10, 30, respective 20.
 data nasterii are tipul specific datelor calendaristice;
 Pentru campurile An_studii si Localitate s-a specificat si o
valoare care sa se complecteze automat, “1” pentru
studentii din anul I si “Resita” pentru studentii care
locuiesc in Resita, pentru celelalte inregistrari urmand a se
adauga valorile de catre utilizator
Baze de date. Cursul 6

Exemplul 2:
Crearea unei tabele în care se stocheaza date
despre evenimente: momentul de început, durata si o
descriere a acestora.

 CREATE TABLE Eveniment(Cod NUMBER(10),


"Moment inceput" TIMESTAMP(3) WITH LOCAL
TIME ZONE,
Durata INTERVAL DAY(2) TO SECOND(3),
"Descriere eveniment (pe larg)" LONG);
Baze de date. Cursul 6

 Cod: un numar întreg de maxim 10 cifre,


 Moment început: contine momentul începutului unui
eveniment în forma: data, ora, minutul, secunda si miimile
de secunda: TIMESTAMP(3) arata ca fractiunile de
secunda sunt memorate cu 3 zecimale. Numele coloanei
contine un spatiu si a trebuit pus între ghilimele.
 Durata: durata evenimentului în zile, ore, minute,
secunde si fractiuni de secunda. Numarul de zile poate
avea maxim 2 cifre iar numarul de secunde maxim 3
zecimale.
 "Descriere eveniment (pe larg)" : contine un text de
descriere a evenimentului care poate avea pâna la 2 GB
caractere. Se folosesc ghilimelele pentru ca numele
coloanei contine spatii si paranteze.
Baze de date. Cursul 6

CREATE din SELECT


Se creează o tabela având numele specificat si aceeași
structura cu a rezultatului returnat de SELECT.
 CREATE TABLE [schema.]nume_tabela
[(descriere_coloana_1, ...,
descriere_coloana_n)]
AS cerere_SELECT;

Observatii:
 Descrierea coloanelor nu este prezenta în cerere:
 Numele coloanelor tabelei create precum si tipul
acestora este identic cu al celor din rezultatul cererii
SELECT;
Noua tabela nu mosteneste nici una dintre
constrângerile de integritate ale tabelei/tabelelor din
care provine rezultatul.
Baze de date. Cursul 6

CREATE din SELECT


Observatii:
 Descrierea coloanelor nu este prezenta în cerere:
Daca în lista de expresii din clauza SELECT exista
unele care nu returneaza pentru capul de tabel al
rezultatului un nume valid de coloana este
obligatorie folosirea unor aliasuri de coloana.
 Crearea tabelei se face inclusiv în cazul în care cererea
SELECT nu returneaza nici o linie.
Exemplu:
CREATE TABLE STUD100
AS
SELECT Nr_Matr, Nume, FROM STUD
WHERE Medie_anterioara = 10;
- va avea ca efect crearea tabelei STUD100 având aceeasi
structura cu STUD11 dar aceasta nu va contine nici o linie.
Baze de date. Cursul 6

CREATE din SELECT


 Cererea contine descrierea coloanelor:
 Descrierea unei coloane are urmatoarea forma:
nume_coloana [DEFAULT expresie]
[constrângeri_integritate]
 Numarul de descrieri de coloana trebuie sa fie egal cu
numarul de coloane din rezultatul cererii SELECT.
 Numele coloanelor tabelei create este cel din descriere iar
tipul lor este identic cu al celor din rezultatul cererii
SELECT.
 Daca descrierea unei coloane contine clauza DEFAULT
expresie, se asociaza acestei coloane valoarea implicita
respectiva.
 Noua tabela nu mosteneste nici una dintre constrângerile
de integritate ale tabelei/tabelelor din care provine
rezultatul dar primeste constrângerile de integritate din
descriere, daca acestea exista.
Baze de date. Cursul 6

CONSTRANGERI

 Constrângerile de integritate reprezintă reguli pe care


valorile conținute într-o tabela trebuie sa le respecte.
 Ele previn introducerea de date eronate în baza de date si
definesc forma corecta a valorilor respective dar nu iau în
considerare semnificația acestora.
 Constrângerile de integritate sunt verificate automat de
sistemul de gestiune atunci când au loc operații de
modificare a conținutului tabelelor (adaugare, stergere si
modificare linii).
 În cazul în care noile valori nu sunt valide operatia de
modificare este rejectata de sistem si se genereaza o
eroare.
Baze de date. Cursul 6
CONSTRANGERI
 Fiecare constrângere de integritate poate avea asociat un
nume specificat la crearea tabelei care permite activarea
sau dezactivarea constrângerii si alte operatii cu aceasta.
 În cazul în care nu se asociaza un astfel de nume sistemul
genereaza automat unul.
 Locul definirii unei constrângeri de integritate în cererea
de creare a unei tabele poate fi:
În descrierea unei coloane, daca acea constrângere
se refera doar la aceasta (usual se spune despre o
astfel de constrângere ca este definita la nivel de
coloana),
În continuarea listei de descrieri de coloane (la nivel
de tabela).
În functie de locul unde se gaseste, sintaxa definirii
unei constrângeri poate fi diferita.
Pentru fiecare tip de constrângere sunt prezentate
ambele sintaxe si exemple de folosire a lor.
Baze de date. Cursul 6

TIPURI DE CONSTRANGERI
 NOT NULL: valorile nu pot fi nule
Acest tip de constrângere se aplica unei coloane a noii tabele
si specifica faptul ca aceasta nu poate contine valori nule. El
poate fi definit doar la nivel de coloana si are urmatoarea
sintaxa:
coloana [CONSTRAINT nume_constr] NOT NULL
 Exemplu:
CREATE TABLE Specializare (CodSpec NUMBER(2), Nume
VARCHAR(10) CONSTRAINT NUMENENUL NOT NULL,
Domeniu VARCHAR(15) NOT NULL);
 PRIMARY KEY: defineste cheia primara a unei tabele
 Sintaxa la nivel de coloana: coloana [CONSTRAINT
nume_constrangere]
 Sintaxa la nivel de tabela: [,CONSTRAINT
nume_constrangere] PRIMARY KEY(lista_coloane)
Baze de date. Cursul 6

TIPURI DE CONSTRANGERI
 PRIMARY KEY: exemplu
 la nivel de coloana:
CREATE TABLE Specializare(CodSpec NUMBER(2)
CONSTRAINT SPEC_PK PRIMARY KEY, Nume
VARCHAR(10), Domeniu VARCHAR(15));
 Si la nivel de tabela:
CREATE TABLE Specializare(CodSpec NUMBER(2), Nume
VARCHAR(10), Domeniu VARCHAR(15), CONSTRAINT
SPEC_PK PRIMARY KEY(CODS));

 UNIQUE: defineste o alta cheie a tabelei


 Sintaxa la nivel de coloana:
coloana [CONSTRAINT nume_constrangere] UNIQUE
 Sintaxa la nivel de tabela:
[,CONSTRAINT nume_constrangere] UNIQUE(lista_coloane)
Baze de date. Cursul 6

TIPURI DE CONSTRANGERI
 UNIQUE: definește o alta cheie a tabelei
 Sintaxa la nivel de coloana:
coloana [CONSTRAINT nume_constrangere] UNIQUE
 Sintaxa la nivel de tabela:
[,CONSTRAINT nume_constrangere] UNIQUE(lista_coloane)
Daca în tabela de Specializare nu pot exista niciodata
doua specializari cu acelasi nume, se adauga o constrângere de tip
UNIQUE:
CREATE TABLE Specializare(CodSpec NUMBER(2)
CONSTRAINT SPEC_PK PRIMARY KEY, Nume VARCHAR(10)
CONSTRAINT NUMES_UNIC UNIQUE, Domeniu
VARCHAR(15));
Aceeasi constrangere, la nivel de tabela:
CREATE TABLE Specializare(CodSpec NUMBER(2)
CONSTRAINT SPEC_PK PRIMARY KEY, Nume VARCHAR (10),
Domeniu VARCHAR(15), CONSTRAINT NUMES_UNIC
UNIQUE(Nume));
Baze de date. Cursul 6

TIPURI DE CONSTRANGERI
 FOREIGN KEY: defineste o cheie straina (externa)
 Valorile unei coloane/unor coloane sunt fortate sa fie doar
dintre cele ale cheii unei tabele (cheie primara sau
UNIQUE).
 Coloanele constrânse în acest fel formeaza o cheie straina
sau cheie externa iar constrângerea mai este denumita si
de integritate referentiala.
 La nivel de coloana:
coloana [CONSTRAINT nume_constrangere] REFERENCES
tabela(coloana) [ON DELETE CASCADE | ON DELETE SET
NULL]
 La nivel de tabela:
[,CONSTRAINT nume_constrangere] FOREIGN KEY
(lista_coloane) REFERENCES tabela(lista_coloane) [ON
DELETE CASCADE | ON DELETE SET NULL]
Baze de date. Cursul 6

TIPURI DE CONSTRANGERI
 FOREIGN KEY: CLAUZA ON DELETE
În cazul în care se doreste ca o linie dintr-o tabela
continând o valoare de cheie referita într-o alta tabela (sau
în aceeasi tabela) sa poata fi stearsa fara a se obtine un
mesaj de eroare, la definirea constrângerii se poate specifica
modul în care se trateaza aceasta stergere din perspectiva
tabelei care
refera valoarea:
 Daca se doreste ca la stergerea liniei continând o valoare
de cheie sa fie sterse suplimentar si toate liniile care refera
aceasta valoare, se specifica ON DELETE CASCADE
 Daca se doreste ca liniile care refera valoarea cheii
respective sa nu fie sterse, se specifica ON DELETE SET
NULL care are urmatorul efect: în toate liniile care refera
acea valoare ea este înlocuita cu valori nule.
Baze de date. Cursul 6

TIPURI DE CONSTRANGERI
 CHECK: introduce o conditie (expresie logica).
Prin acest tip de constrângeri valorile aflate pe o
linie a tabelei sunt fortate sa verifice o conditie (expresie
logica). Aceasta poate contine toate elementele prezentate
anterior pentru conditii, inclusiv apeluri de functii, cu
câteva exceptii:
 apelurile unor functii ca SYSDATE, USER, UID
 referinta la pseudocoloanele NEXTVAL, CURRVAL
(specifice secventelor), LEVEL si ROWNUM)
 subcereri.
O aceeasi coloana poate participa la mai multe
constrângeri de acest tip, având fiecare o alta conditie
asociata. Conditia se evalueaza doar la nivelul liniei
respective, fara a se putea lua în considerare valori aflate
pe alte linii ale tabelei.
Baze de date. Cursul 6

TIPURI DE CONSTRANGERI
 CHECK: introduce o conditie (expresie logica).
 La nivel de coloana:
coloana [CONSTRAINT nume_constrangere] CHECK
(expresie_logica)
 La nivel de tabela:
[,CONSTRAINT nume_constrangere] CHECK
(expresie_logica)
Baze de date

Curs VII

Limbaje specifice bazelor de date.


Limbajul SQL. Comenzi SQL de
gestionare a bazelor de date si tabelelor..
Baze de date. Cursul 7

Comanda SELECT
Este o comanda pentru interogarea uneia sau mai
multor tabele dintr-o baza de date si are sintaxa generala:
 SELECT [DISTINCT] lista_de_expresii
FROM nume_tabela
WHERE conditie_linie
- - clauza opțională
ORDER BY criterii_sortare_rezultat;
- - clauza optionala
Execuția comenzii are ca efect următoarele:
 Se parcurg rând pe rând liniile tabelei specificate pe clauza
FROM;
 Din fiecare linie conținând date, pentru care condiția aflata
pe clauza WHERE este adevărată, va rezulta o linie în
răspunsul cererii. În cazul în care WHERE lipsește, toate
liniile tabelei FROM vor avea o linie corespondenta în
rezultatul cererii;
Baze de date. Cursul 7

 O linie de rezultat este compusa pe baza listei de expresii


aflata in clauza SELECT;
 Daca exista cuvântul cheie DISTINCT, din rezultat se
elimina liniile duplicat;
 Înainte de a trimite rezultatul, serverul îl sortează în
funcție de criteriile specificate de clauza ORDER BY.
 În cazul în care ORDER BY lipsește, liniile din rezultat sunt
într-o ordine independenta de conținutul lor sau de ordinea
în care ele au fost adăugate în tabela.
Forma rezultatului îndeplinește următoarele:
 Numărul coloanelor din rezultat este egal cu numărul
expresiilor din lista aflata in clauza SELECT. Aceste
expresii dau si numele coloanelor din rezultat.
 În lipsa clauzei DISTINCT, numărul de linii din rezultat
este egal cu numărul liniilor din tabela care îndeplinesc
condiția WHERE sau, când clauza respectiva lipsește, cu
numărul total de linii din tabela.
Baze de date. Cursul 7

 Evaluarea valorii de adevăr a condiției din WHERE se face


doar pe baza datelor aflate pe linia respectiva.
 Deoarece parcurgerea liniilor specificata de o cerere
SELECT se face după un plan de execuție generat de server,
folosirea clauzei ORDER BY este obligatorie în cazul în care
se dorește un rezultat sortat după anumite criterii.

Consideram o baza de date care contine trei tabele:


 tabela STUD cu atributele: MATR (numar matricol),
NUME (al studentului), AN, GRUPA, DATAN, LOC,
PUNCTAJ, CODS(codul specializarii);

 tabela SPEC cu atributele: CODS, NUME (al specializarii),


DOMENIU;

 tabela BURSA cu atributele: TIP (al bursei), PMIN (punctaj


minim), PMAX(punctaj maxim), SUMA.
Baze de date. Cursul 7

 STUD
Baze de date. Cursul 7

 SPEC

 BURSA
Baze de date. Cursul 7
Forme de utilizare a comenzii SELECT:
 Nume de coloane sau “*” :
o SELECT NUME, DOMENIU FROM SPEC;
o SELECT * FROM STUD;
 Constante:
o SELECT 'Specializarea ', NUME FROM SPEC
 Expresii aritmetice:
o SELECT TIP, SUMA, (SUMA+100)*1.5 FROM BURSA;
 Expresii concatenate:
o SELECT 'Specializarea '|| NUME || ' are codul ', CODS FROM
SPEC;
Alias de coloana:
o Nu poate fi mai lung de 30 de caractere.
o Începe cu o litera, nu poate conține decât litere, cifre, _, # si $
sau este pus intre ghilimele (tot max. 30 caractere intre
ghilimele).
o Între ghilimele literele mici sunt considerate diferite de
literele mari.
Baze de date. Cursul 7

Alias de coloana:
o Nu poate fi folosit decât în cererea curenta.
o Sistemul nu stochează în baza de date sau altundeva aceste
nume alternative.
o Nu poate fi folosit în alte clauze ale unei cereri, doar in
SELECT si ORDER BY.
Exemplu:
 SELECT TIP AS "Tip bursa", ' are valoarea ' || SUMA || '.Lei' AS
Descriere FROM BURSA;
Baze de date. Cursul 7

DISTINCT
Elimina liniile duplicat din rezultat:
 SELECT CODS FROM STUD;
 SELECT DISTINCT CODS FROM STUD;
 SELECT DISTINCT CODS, AN FROM STUD;

CLAUZA WHERE
 Sintaxa: WHERE expresie_logica
Exemplu:
 SELECT NUME, GRUPA, CODS FROM STUD WHERE AN = 4;
 Operatori de comparatie: “=“, “>”, “>=“, “<“, “<=“, “<>” (sau “!=“,
“^=“);
 Conditii compuse AND, OR, NOT:
Exemplu:
 AN=2 AND PUNCTAJ>500 OR CODS=11
 AN=2 AND (PUNCTAJ>500 OR CODS=11)
OBS: Atentie la utilizarea parantezelor!!!
Baze de date. Cursul 7
CLAUZA WHERE - Operatorul BETWEEN:
 Sintaxa: expresie BETWEEN valoare_minima AND
valoare_maxima
 Exemple:
 SELECT NUME, AN, PUNCTAJ FROM STUD WHERE
PUNCTAJ BETWEEN 2000 AND 4000;
 SELECT NUME, LOC, DATAN FROM STUD WHERE LOC
BETWEEN 'A' AND 'L' AND DATAN BETWEEN '1-JAN-82'
AND '31-DEC- 82';

CLAUZA WHERE – Operatorul IN:


 Sintaxa: expresie IN (val_1, val_2, ..., val_n)
 Exemple:
 SELECT NUME, DATAN FROM STUD WHERE AN IN (2,
4);
 IN poate ignora valorile nule din lista:
 SELECT NUME, DATAN FROM STUD WHERE AN IN
(NULL, 2, 4);
Baze de date. Cursul 7

CLAUZA WHERE – Operatorul IN:

 NOT IN intoarce fals daca lista contine valori nule:


 Exemple:
 SELECT NUME, DATAN FROM STUD WHERE AN NOT
IN (NULL, 2, 4);

 IN este operator derivat:


 SELECT NUME, DATAN FROM STUD WHERE AN =2 OR
AN=4;

 Alte exemple:
 SELECT NUME, PUNCTAJ, CODS FROM STUD WHERE
PUNCTAJ + 10 IN (CODS*30+70, CODS*200+700);
 SELECT NUME, LOC, DATAN FROM STUD WHERE LOC
IN ('BUCURESTI', 'PLOIESTI') OR DATAN IN ('02-SEP-85',
'19-APR-84', '29- AUG-84');
Baze de date. Cursul 7

CLAUZA WHERE – Operatorul LIKE:


 Sintaxa: expresie LIKE 'SABLON' [ESCAPE 'caracter']
 Caractere de inlocuire in sablon:
Caracter Semnificatie
___________________________________________________________
_ Orice caracter
% Orice sir de caractere, inclusiv sirul vid
 Exemple:
 SELECT NUME, AN, GRUPA FROM STUD WHERE NUME
LIKE 'A%';
 SELECT NUME, GRUPA FROM STUD WHERE NUME
LIKE '____';
 SELECT NUME, DOMENIU FROM SPEC WHERE
DOMENIU LIKE '% %';
 SELECT NUME, DOMENIU FROM SPEC WHERE NUME
LIKE '%A%I_';
 SELECT NUME||'_'||DOMENIU AS NUMESIDOMENIU
FROM SPEC WHERE NUME||'_'||DOMENIU LIKE '%\_U%‘
ESCAPE '\'
Baze de date. Cursul 7

CLAUZA WHERE – Operatorul IS NULL:


 Sintaxa: expresie IS NULL
-iar negata este: expresie IS NOT NULL

 Valorile nule nu se pot compara cu =, <>:


 SELECT NUME, LOC FROM STUD WHERE LOC = NULL; --
fals mereu

 SELECT NUME, LOC FROM STUD WHERE LOC <> NULL; --


fals mereu

 Exemple:
 SELECT NUME, LOC FROM STUD WHERE LOC IS NULL;
 SELECT NUME, LOC FROM STUD WHERE LOC IS NOT
NULL;
Baze de date. Cursul 7
CLAUZA ORDER BY:
 Sintaxa: ORDER BY criteriu1 [DESC] [,criteriu2 [DESC]...]
 Cuvântul cheie optional DESC (descendent) specifica inversarea
ordinii de sortare implicite (ascendent, crescatoare) pentru criteriul
respectiv, astfel încât sortarea se face descendent (descrescator).
 Efectul produs:
 În cazul în care ORDER BY contine mai multe criterii de sortare,
ele nu sunt echivalente ci se iau în considerare în ordinea
specificata:
 Se sorteaza rezultatul dupa primul criteriu
 Pentru valori egale pentru primul criteriu se ia în considerare al
doilea criteriu, pentru valori egale pentru primele doua criterii se ia
în considerare al treilea criteriu, s.a.m.d.
 ORDER BY – coloane:
 SELECT NUME, DOMENIU, CODS FROM SPEC ORDER BY
NUME;
 SELECT NUME, AN, GRUPA, DATAN, CODS FROM STUD
ORDER BY AN DESC, NUME
Baze de date. Cursul 7
CLAUZA ORDER BY:
 ORDER BY – alias de coloana:
 SELECT NUME, PUNCTAJ, (PUNCTAJ+100)*1.5 PMARIT FROM
STUD WHERE CODS=11
 ORDER BY – expresii (coloane si aliasuri):
 SELECT NUME, PUNCTAJ, (PUNCTAJ+100)*1.5 PMARIT FROM
STUD WHERE CODS=11 ORDER BY (PUNCTAJ+100)*1.5 ;
 SELECT NUME, PUNCTAJ, (PUNCTAJ+100)*1.5 PMARIT FROM
STUD WHERE CODS=11 ORDER BY PUNCTAJ-PMARIT;
 ORDER BY – coloane care nu apar in rezultat:
 SELECT NUME, AN, GRUPA FROM STUD WHERE AN=2 ORDER
BY LOC DESC, (PUNCTAJ/10);
 SELECT MATR, NUME, AN FROM STUD ORDER BY 3 DESC, 2;
 SELECT MATR, NUME, AN FROM STUD ORDER BY 3 DESC,
NUME;
 OBS: Numarul de coloana nu se poate da printr-o expresie!!!:
 SELECT MATR, NUME, AN FROM STUD ORDER BY 2+1 DESC,
NUME;
Baze de date. Cursul 7

Cereri SELECT pe mai multe tabele


 În foarte multe cazuri se dorește ca un rezultat sa conțină
date care sunt stocate în doua sau mai multe tabele din
baza de date, ca în exemplele următoare:
 Lista cu nume studenți si denumiri specializări. Tabelele
care conțin aceste date sunt STUD (numele studentului) si
SPEC (denumirea specializării).
 Numele studenților (din tabela STUD) si tipul burselor
acestora (din tabela BURSA).
 Numele studentului (din tabela STUD), denumirea
specializării (din tabela SPEC) si cuantumul bursei (din
tabela BURSA).

În acest caz sunt implicate toate cele trei tabele ale


bazei de date.
Baze de date. Cursul 7

Cereri SELECT pe mai multe tabele - conditia de JOIN


 Operația care permite astfel de rezultate se numește join si este
realizata prin intermediul unei cereri SELECT având
următoarele caracteristici:
 În clauza FROM este specificata o lista de tabele.
 În clauza WHERE exista o condiție care sa coreleze liniile
tabelelor din lista FROM (conditie de join).
 Sintaxa:
 SELECT [DISTINCT] lista_de_expresii FROM lista_de_tabele
WHERE conditie_de_join AND conditii_suplimentare . . .
-- alte clauze: GROUP BY, HAVING, ORDER BY
OBSERVATII:
 Atunci când condiția de join lipsește, fiecare linie a unei tabele
din lista FROM este concatenata cu fiecare linie a celorlalte
tabele, obtinându-se de fapt produsul cartezian al acestora;
 Daca în condiția de join apar numai egalități operația este
numita si echijoin;
Baze de date. Cursul 7

Cereri SELECT pe mai multe tabele - conditia de JOIN


OBSERVATII:
 În lista de tabele care participa la join o tabela poate sa apară
repetat. O astfel de operație este numita si joinul unei tabele
cu ea însăși sau self-join;
 În cazul în care o linie a unei tabele nu se corelează prin
condiția de join cu nici o linie din celelalte tabele ea nu va
participa la formarea rezultatului. Se poate însă cere ca
aceasta sa fie luata în considerare pentru rezultat, prin așa
numitul join extern (outer join).

 CEREREA DE PRODUS CARTEZIAN:


 Cererea va returna un rezultat având toate coloanele celor
doua tabele si liniile formate din concatenarea fiecărei linii
din STUD cu fiecare linie din SPEC:
 SELECT * FROM STUD, SPEC;
Baze de date. Cursul 7

Cereri SELECT pe mai multe tabele - conditia de JOIN


 Cererea va returna cele doua coloane, fiecare din alta tabela,
pentru care este îndeplinita condiția data:
 SELECT DATAN, DOMENIU FROM STUD, SPEC WHERE
LOC='BUCURESTI';

 CEREREA DE ECHIJOIN:
 SELECT MATR, STUD.NUME, STUD.CODS, SPEC.NUME
FROM STUD, SPEC WHERE STUD.CODS = SPEC.CODS
 CEREREA DE NON-ECHIJOIN:
 SELECT NUME, AN, TIP, SUMA FROM STUD, BURSA
WHERE PUNCTAJ BETWEEN PMIN AND PMAX

 CEREREA cu ALIAS DE TABELA


 SELECT S.NUME, S.CODS, "SP STUD".NUME, TIP
 FROM STUD S, SPEC "SP STUD", BURSA WHERE S.CODS = "SP
STUD".CODS AND S.PUNCTAJ BETWEEN PMIN AND PMAX
Baze de date. Cursul 7

FUNCTII STATISTICE SI GRUPURI


În unele cazuri este necesar calculul unor valori statistice,
pornind de la toate liniile parcurgerii curente sau ale unor
grupuri de linii care au aceleași valori pentru o lista de expresii.
Rezultatul returnează valori care caracterizează
ansamblul din care provine si poate conține:
 Valori ale unor funcții statistice (MIN, MAX, AVG, SUM,
COUNT, STDDEV, VARIANCE);
 Constante (numerice, sir de caractere sau data calendaristica).
În categoria constantelor sunt incluse si pseudocoloanele puse la
dispoziție de sistem cum este SYSDATE.
 Valori ale expresiilor după care s-a făcut gruparea, în cazul în
care aceasta este prezenta în cerere.
Rezultatul unei cereri SELECT care conține funcții
statistice are:
 O singura linie în cazul în care cererea nu conține clauza de
grupare GROUP BY
Baze de date. Cursul 7

FUNCTII STATISTICE SI GRUPURI


 Un număr de linii egal cu numărul de grupuri formate pe baza
criteriilor de grupare din GROUP BY, daca aceasta clauza
exista si nu este însoțita de clauza HAVING.
 Un număr de linii egal cu numărul de grupuri formate pe baza
criteriilor de grupare din GROUP BY care îndeplinesc condiția
de grup din HAVING, daca ambele clauze sunt prezente în
cerere.
 Numărul de coloane al rezultatului este ca si înainte egal cu
numărul expresiilor aflate in clauza SELECT.

FUNCTII STATISTICE:
 MIN si MAX – valoare minima si maxima
 SUM si AVG – suma si media aritmetica
 COUNT – numarare
 STDDEV si VARIANCE – deviatia standard si varianta
Baze de date. Cursul 7

FUNCTII STATISTICE SI GRUPURI


 MIN si MAX – Sintaxa functiilor:
 MIN([ ALL | DISTINCT ] expresie)
 Descriere: MIN(expresie) întoarce valoarea minima nenula din
lista de valori ale expresiei, fiecare valoare fiind calculata pe
baza unei linii din parcurgerea curenta.
 MAX([ ALL | DISTINCT ] expresie)
 Descriere: MAX(expresie) întoarce valoarea maxima nenula din
aceeasi lista.
 OBS!!! Folosirea cuvintelor cheie ALL (care este implicit) sau
DISTINCT nu are în acest caz nici un efect, minimul si maximul
fiind acelasi daca din lista se elimina duplicatele.
 Exemplu
 SELECT 'MATEMATICA' FACULTATE, MIN(SUMA) MINIM,
MAX(SUMA) MAXIM FROM STUD, SPEC, BURSA WHERE
STUD.PUNCTAJ BETWEEN PMIN AND PMAX AND
STUD.CODS = SPEC.CODS AND SPEC.NUME = MATEMATICA'
Baze de date. Cursul 7

FUNCTII STATISTICE SI GRUPURI


 SUM– Sintaxa: SUM([ ALL | DISTINCT ] expresie)
 Descriere: SUM(expresie) întoarce suma valorilor nenule ale
expresiei, fiecare valoare fiind calculata pe baza unei linii din
parcurgerea curenta.

 AVG – Sintaxa: AVG([ ALL | DISTINCT ] expresie)


 Descriere: AVG(expresie) întoarce media aritmetica a valorilor
nenule ale expresiei.

 EXEMPLU SUM si AVG:


 SELECT 'ISTORIE' FACULT, SUM(SUMA) SUM1,
SUM(DISTINCT SUMA) SUM2, AVG(SUMA) AVG1,
AVG(DISTINCT SUMA) AVG2 FROM STUD, SPEC, BURSA
WHERE STUD.PUNCTAJ BETWEEN PMIN AND PMAX
AND STUD.CODS = SPEC.CODS AND SPEC.NUME='ISTORIE'
Baze de date. Cursul 7

FUNCTII STATISTICE SI GRUPURI


 COUNT– Sintaxa: COUNT(*)
COUNT([ ALL | DISTINCT] expresie)
 Descriere: COUNT(*) întoarce numarul de linii pe baza carora
se calculeaza rezultatul => nu se poate adauga DISTINCT sau
nu se poate vorbi de valori nule
COUNT(expresie) întoarce numarul de valori nenule ale
expresiei.
COUNT(DISTINCT expresie) întoarce numarul de valori
nenule si distincte ale expresiei.
 EXEMPLU: Pentru facultatea de ISTORIE se doreste numarul
studentilor, numarul de bursieri si numarul de valori diferite
ale sumei primite ca bursa:
SELECT 'ISTORIE' FACULT,COUNT(*) NRSTUD, COUNT(SUMA)
BURSIERI, COUNT(DISTINCT SUMA) BURSE FROM STUD,
SPEC, BURSA WHERE STUD.PUNCTAJ BETWEEN PMIN AND
PMAX AND STUD.CODS = SPEC.CODS – cond.join AND
SPEC.NUME='ISTORIE';
Baze de date. Cursul 7

FUNCTII STATISTICE SI GRUPURI


 STDDEV si VARIANCE
 Sintaxa: STDDEV([ ALL | DISTINCT ] expresie)
VARIANCE([ ALL | DISTINCT ] expresie)
 Descriere: STDDEV(expresie) este deviatia standard si este o
masura a abaterii; întoarce deviatia standard a valorilor nenule
ale expresiei.

 Sintaxa: VARIANCE([ ALL | DISTINCT ] expresie)


 Descriere: VARIANCE(expresie) întoarce varianta valorilor
respective.

 Exemplu: SELECT STDDEV (PUNCTAJ), VARIANCE


(PUNCTAJ) FROM STUD;
Baze de date. Cursul 7
CLAUZA GROUP BY
Daca dorim partitionarea liniilor, care formeaza un grup din
care se calculeaza valorile functiilor statistice, în grupuri pentru a
calcula valori statistice pentru fiecare grup în parte, este necesara
folosirea clauzei GROUP BY.
 Sintaxa : GROUP BY expresie1 [, expresie2, expresie 3 ...]
 EFECT:
 Clauza trebuie sa apara în cerere cu SELECT, FROM si WHERE;
 Liniile parcurgerii curente (daca WHERE este prezenta) sunt
împartite în grupuri.
 Fiecare grup este format din liniile care au aceleasi valori (inclusiv
valoarea nula) pentru expresiile specificate în GROUP BY.
 Functiile statistice se calculeaza pentru fiecare grup în parte,
rezultatul având un numar de linii egal cu numarul de grupuri
formate.
 În clauza SELECT, pe lânga constante si functii statistice, pot
aparea si expresiile aflate în GROUP BY, valorile acestora fiind
constante la nivelul fiecarui grup în parte.
Baze de date. Cursul 7
CLAUZA GROUP BY
 EXEMPLU : Lista continând codurile specializarilor si
numarul de studenti înscrisi la fiecare:
 SELECT CODS, COUNT(*) NRSTUD FROM STUD GROUP BY
CODS;
 EXEMPLU: Pentru a avea numele specializarii gruparea se
face pe joinul STUD cu SPEC:
 SELECT SPEC.NUME, COUNT(*) NRSTUD FROM STUD,
SPEC WHERE STUD.CODS=SPEC.CODS GROUP BY
SPEC.NUME;
 EXEMPLU: Pentru a include în rezultat si numele si codul
specializarii clauza GROUP BY trebuie sa le contina pe
amândoua. Grupurile vor fi aceleasi dar cererea va fi valida si
va putea fi executata:
 SELECT SPEC.NUME, SPEC.CODS, COUNT(*) NRSTUD FROM
STUD, SPEC WHERE STUD.CODS = SPEC.CODS GROUP BY
SPEC.NUME, SPEC.CODS;
Baze de date. Cursul 7
CLAUZA HAVING
Fiecare grup format de GROUP BY are, în cazul cererilor
precedente, o linie corespondenta în rezultat. Clauzele descrise
pâna acum nu permit o filtrare l nivel de grup. De exemplu,
daca se doreste obtinerea de date doar despre specializarile care
au studenti cu un punctaj mediu mai mare decât 1500, cererea
urmatoare va returna eroare:
 SELECT CODS, AVG(PUNCTAJ) FROM STUD WHERE
AVG(PUNCTAJ) > 1500 GROUP BY CODS;
Eroarea este cauzata de faptul ca WHERE poate conține
doar condiții la nivelul unei linii din parcurgerea curenta si nu
la nivel de grup. Pentru filtrarea grupurilor este necesara o
clauza, HAVING. Condiția poate fi simpla sau compusa. În ea
pot fi folosite doar elemente constante la nivel de grup
 Sintaxa: HAVING conditie_de_grup
 EXEMPLU:
 SELECT CODS, AVG(PUNCTAJ) FROM STUD GROUP BY
CODS HAVING AVG(PUNCTAJ) > 1500
Baze de date. Cursul 7
CLAUZA HAVING
 EXEMPLU: HAVING FARA GROUP BY - cererea întoarce fie
o linie, fie nici o linie, în functie de satisfacerea sau nu a
conditiei HAVING.
 SELECT AVG(PUNCTAJ) FROM STUD HAVING
AVG(PUNCTAJ) > 1500;
Baze de date

Curs VIII

Limbaje specifice bazelor de date.


Limbajul SQL.
Alte obiecte in baze de date.
Baze de date. Cursul 8

Alte obiecte in baze de date


 vederi,
 secvente,
 sinonime.
Consideram bazele de date STUD, SPEC si BURSA din
cursul anterior. În capitolele anterioare a fost prezentata
posibilitatea folosirii unei subcereri în clauza FROM a unei
cereri SELECT.
Inconvenientul principal în aceasta abordare este
inexistenta unui nume asociat cererii respective.
În unele cazuri se pot folosi aliasuri de tabela dar
rescrierea subcererii este necesara în orice cerere care pleaca
de la aceasta.
Ca si toate celelalte sisteme relationale, limbajul SQL permite
asocierea unui nume pentru o cerere SQL de tip SELECT si
stocarea acesteia ca obiect al bazei de date.
Baze de date. Cursul 7

 STUD
Baze de date. Cursul 7

 SPEC

 BURSA
Baze de date. Cursul 8

Alte obiecte in baze de date


 VEDERI
Termenul care desemneaza o astfel de cerere este
vedere (în limba engleza: view).
O vedere se comporta ca o tabela în cazul executiei de
cereri SELECT si poate fi folosita uneori pentru efectuarea de
actualizari ale bazei de date.
Exista însa si diferente între o vedere si o tabela, mai
ales din punct de vedere al implementarii:
 În cazul unei vederi, baza de date stocheaza definitia
acesteia (cererea SQL ca sir de caractere) si nu datele
regasite prin aceasta;
 Ori de câte ori se executa o cerere având la baza o vedere,
ea este recalculata. Astfel, orice modificare efectuata în
tabelele pe baza carora este definite vederea se reflecta
automat în aceasta;
Baze de date. Cursul 8
 VEDERI
 Structura unei vederi nu se poate modifica prin cereri de
tip ALTER ci prin recrearea vederii cu specificarea unei
alte cereri SQL.
 Constrângerile de integritate nu se pot defini la nivel de
vedere. O vedere mosteneste implicit toate constrângerile
definite în tabelele pe baza carora este definita pentru
coloanele care sunt regasite prin cererea asociata ei.
Vederile permit implementarea de scheme externe
prin care diverse categorii de utilizatori acceseaza doar acele
portiuni din baza de date pe care le folosesc în mod obisnuit,
asigurându-se astfel:
 Confidentialitatea datelor: utilizatorii care acceseaza baza
de date doar prin intermediul unor vederi pot fi
restrictionati în ceea ce priveste datele pe care le pot utiliza
prin însasi definitia vederilor respective (ele nu contin
coloanele/liniile/datele la care nu se doreste accesul acelei
categorii de utilizatori).
Baze de date. Cursul 8

 VEDERI
 Asigurarea corectitudinii datelor: prin faptul ca un
utilizator nu are acces la date pe care uzual nu le foloseste
este împiedicata coruperea accidentala a celorlalte date din
cauza necunoasterii semnificatiei lor.

SINTAXA
Sintaxa cererii de creare a unei vederi este urmatoarea:

CREATE [OR REPLACE] [FORCE | NOFORCE]


VIEW nume_vedere [(lista_de_coloane)]
AS subcerere
[WITH CHECK OPTION [CONSTRAINT
nume_constrangere]]
[WITH READ ONLY [CONSTRAINT
nume_constrangere]];
Baze de date. Cursul 8

 VEDERI
Semnificatia elementelor prezente într-o astfel de
cerere este urmatoarea:
 nume_vedere - specifica numele asociat vederii respective.
Respecta aceleasi conditii ca în cazul numelor de tabele.
 subcerere - cererea SQL de tip SELECT asociata vederii;
Elementele optionale au urmatoarea semnificatie:
 lista_de_coloane - specifica numele coloanelor din vedere.
Acestea trebuie sa respecte restrictiile uzuale pentru nume
de coloane descrise în capitolele precedente (30 de caractere,
etc.). În lipsa acestei optiuni coloanele vederii au aceleasi
nume cu ale rezultatului cererii SQL asociate. În cazul în
care rezultatul cererii asociate vederii are nume de coloane
care nu respecta restrictiile privind astfel de nume este
obligatorie fie folosirea listei_de_coloane fie modificarea
cererii prin adaugarea unor aliasuri de coloana
corespunzatoare.
Baze de date. Cursul 8

 VEDERI
 OR REPLACE - în cazul în care exista deja o vedere cu acel
nume, ea este înlocuita. Este modul usual prin care se
modifica structura si continutul unei vederi. În lipsa acestei
optiuni sistemul semnaleaza în astfel de situatii o eroare.
 FORCE | NOFORCE (valoare implicita NOFORCE) – la
crearea unei vederi sistemul verifica existent tabelelor
folosite în definitia acesteia si semnaleaza erori în cazul
detectarii unor absente. În cazul folosirii optiunii FORCE
aceasta verificare nu mai duce la eroare si vederea este
stocata în baza de date. Vederea nu poate însa fi folosita
pâna când discrepanta dintre definitia sa si structura bazei
de date nu este înlaturata.
 WITH READ ONLY - nu sunt permise modificari ale
datelor prin intermediul vederii. De asemenea se poate
asocia un nume pentru aceasta constrângere.
Baze de date. Cursul 8

 VEDERI
 WITH CHECK OPTION - ca si în capitolul precedent,
aceasta optiune împiedica efectuarea de modificari ale
continutului bazei de date daca liniile inserate/actualizate
nu sunt regasite prin cererea asociata vederii. Aceasta
optiune este din categoria constrângerilor de integritate si
se poate asocia un nume cu CONSTRAINT nume.
 Asocierea de nume pentru ultimele doua optiuni permite
activarea si dezactivarea lor.

EXEMPLE:
CREATE OR REPLACE VIEW STUD_AN1 AS
SELECT * FROM STUD WHERE AN = 1
WITH CHECK OPTION;
Baze de date. Cursul 8

 VEDERI
EXEMPLE:
CREATE OR REPLACE VIEW LISTA_AN1
(MATRICOLA, NUMELE, ANUL, NRPUNCTE) AS
SELECT MATR, NUME, AN, PUNCTAJ
FROM STUD_AN1
WHERE CODS = 21
WITH READ ONLY;

OBSERVATII
 O vedere se poate folosi pentru definirea altor vederi
(LISTA_AN1 e definita pe baza STUD_AN1).
 Prin vederea STUD_AN1 nu se pot insera decât studenti de
anul 1 si nu se poate modifica valoarea anului de studiu din
1 în alta valoare, nula sau nenula (constrângerea WITH
CHECK OPTION).
Baze de date. Cursul 8

 VEDERI
OBSERVATII
 Prin vederea LISTA_AN1 se pot efectua doar regasiri de
date (constrângerea WITH READ ONLY).
 Numele coloanelor din vederea LISTA_AN1 este altul decât
cel din tabela STUD si vederea STUD_AN1 ca urmare a
folosirii unei liste de nume în cererea de creare.
 Se pot defini vederi având asociate cereri SQL oricât de
complicate. Un exemplu de vedere având la baza joinul
celor trei tabele STUD, SPEC si BURSA este urmatorul:
CREATE OR REPLACE VIEW LISTA_BURSA AS
SELECT MATR, ST.NUME NUMESTUD, AN, PUNCTAJ AS
PCT, SP.NUME NUMESPEC, SUMA
FROM STUD ST, SPEC SP, BURSA
WHERE ST.CODS = SP.CODS AND
PUNCTAJ BETWEEN PMIN AND PMAX
ORDER BY SP.NUME, PUNCTAJ DESC;
Baze de date. Cursul 8

 VEDERI - STERGERE
 Stergerea unei vederi se face cu cererea DROP VIEW.
Sintaxa acesteia este:
DROP VIEW nume_vedere
 Exemplu: stergerea vederilor STUD_AN1 si LISTA_A1 se
face cu cererile:
DROP VIEW STUD_AN1;
DROP VIEW LISTA_AN1;
 Fiind o comanda DDL, stergerea unei vederi nu poate fi
revocata cu ROLLBACK.
 Stergere linii prin vederi - Cererea DELETE poate avea la
baza o vedere daca aceasta verifica urmatoarele restrictii:
 Are la baza o singura tabela
 Nu contine functii de grup
 Nu contine clauza GROUP BY
 Nu contine clauza DISTINCT
 Nu contine functia ROWNUM
Baze de date. Cursul 8

 VEDERI - STERGERE
 Urmatoarele vederi nu pot fi folosite pentru stergere
deoarece încalca una sau mai multe din restrictiile
anterioare:
Exemplul 1: Vedere care contine DISTINCT, grupare si functii
de grup:
CREATE OR REPLACE VIEW NU_STERGE AS
SELECT DISTINCT MAX(PUNCTAJ) MAXIM
FROM STUD
GROUP BY CODS;
Exemplul 2: Vedere care contine ROWNUM si join:
CREATE OR REPLACE VIEW NU_STERGE AS
SELECT ROWNUM NRCRT, ST.NUME NUMESTUD,
SP.NUME NUMESPEC
FROM STUD ST, SPEC SP
WHERE ST.CODS = SP.CODS;
Baze de date. Cursul 8

 VEDERI - MODIFICARE DATE


 Actualizare - Pentru a efectua actualizari (UPDATE) prin
intermediul unei vederi aceasta trebuie sa verifice
urmatoarele restrictii:
 Vederea verifica toate restrictiile enumerate anterior
pentru stergere,
 Comanda UPDATE nu actualizeza coloanele definite
prin expresii.
EXEMPLU - Prin intermediul vederii TBURSA
 se pot actualiza toate coloanele vederii care provin din
coloane ale tabelei BURSA
 nu se poate specifica modificarea coloanei suplimentare
SUMAMARITA definita de expresia aritmetica SUMA*1.5:
CREATE OR REPLACE VIEW TBURSA AS
SELECT PMIN MINIM, PMAX MAXIM,
TIP TIPBURSA, SUMA, SUMA*1.5 SUMAMARITA
FROM BURSA;
Baze de date. Cursul 8

 VEDERI - MODIFICARE DATE


 Urmatoarea actualizare va mari valoarea sumei în
cazul bursei având punctajul minim 2500:
UPDATE TBURSA
SET SUMA = 400
WHERE MINIM = 2500;
 În schimb cererea de actualizare de mai jos va
semnala eroare deoarece se încearca actualizarea
unei coloane definite printr-o expresie
UPDATE TBURSA
SET SUMAMARITA = 600
WHERE MINIM = 2500;
Baze de date. Cursul 8

 VEDERI - MODIFICARE DATE


 Inserare - Pentru a se putea insera noi linii prin intermediul
unei vederi, aceasta trebuie sa satisfaca urmatoarele
restrictii:
 Vederea verifica toate restrictiile enumerate anterior pentru
stergere,
 Vederea contine toate coloanele tabelei de baza pentru
care exista constrângeri de tip NOT NULL
 Comanda de inserare nu încearca sa insereze date în
coloane care provin din expresii.
EXEMPLU – vederea anterioara TBURSA contine toate
coloanele tabelei BURSA (inclusiv pe cele pentru care am putea
avea constrângeri de tip NOT NULL) si respecta si restrictiile
enumerate la stergere. Rezulta ca vom putea executa cu succes
o cerere de inserare de tipul:
INSERT INTO TBURSA (MINIM, MAXIM, TIPBURSA,
SUMA) VALUES (5000, 9999, 'SUPLIMENTARA',500);
Baze de date. Cursul 8

 VEDERI - MODIFICARE DATE


OBSERVATII
 Operatiile de modificare a continutului tabelelor
prin intermediul vederilor definite pe baza lor
trebuie sa respecte toate constrângerile de
integritate ale acestora:
 nu se poate sterge o linie printr-o vedere daca ea
contine o cheie referita prin FOREIGN KEY,
 nu se pot insera linii care duplica o valoare de
cheie primara
 nu se poate actualiza o linie astfel încât o
constrângere de tip CHECK sa nu mai fie
verificata.
Baze de date. Cursul 8

 SECVENTE
În multe aplicatii este nevoie de generarea unor
secvente de numere care sa fie folosite în comenzi de tip
INSERT sau UPDATE pentru valorile cheilor primare ale
înregistrarilor inserate sau modificate.
Solutia calcularii unei valori maxime si a incrementarii
ei nu este corecta în contextul unei utilizari concurente a
datelor.
O cerere precum cea de mai jos nu garanteaza obtinerea
de valori unice pentru numerele matricole din înregistrarile
inserate în tabela STUD, deoarece ea poate fi executata
simultan, returnând aceeasi valoare:
SELECT MAX(MATR) + 1
FROM STUD;
Solutia care poate fi folosita este aceea a definirii unor
obiecte numite secvente care pot fi apelate în cereri SQL si care
nu returneaza niciodata aceeasi valoare.
Baze de date. Cursul 8

 SECVENTE
O secventa nu este asociata unei tabele ci poate fi
folosita pentru a genera valori care se utilizeaza oriunde este
necesar.
SINTAXA
CREATE SEQUENCE nume_secventa
[INCREMENT BY pas]
[START WITH valoare_initiala]
[MAXVALUE valoare_maxima | NOMAXVALUE]
[MINVALUE valoare_minima | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE numar_valori | NOCACHE];
 nume_secventa: numele obiectului de tip secventa.
 pas: fiecare valoare generata se obtine din precedenta prin
adaugarea acestui pas. Implicit pasul are valoarea 1. În cazul
în care valoarea sa este negativa secventa este
descrescatoare
Baze de date. Cursul 8

 SECVENTE
 valoare_initiala: prima valoare generata de secventa.
 valoare_maxima: în cazul specificarii unei astfel de valori,
secventa nu poate genera valori mai mari decât aceasta.
Implicit nu exista o limitare superioara a valorilor generate
(NOMAXVALUE).
 valoare_minima: în cazul secventelor descrescatoare
secventa nu poate genera valori mai mici decât aceasta.
Implicit nu exista o limitare inferioara a valorilor generate
(NOMINVALUE).
 CYCLE: în cazul atingerii valorii maxime sau minime,
secventa reporneste de la valoarea initiala. Implicit
secventele se creaza cu NOCYCLE (fara ciclare).
 CACHE numar_valori: implicit sistemul genereaza si tine în
memorie urmatoarele 20 de valori din secventa. În cazul în
care se doreste ca numarul de valori din memorie sa fie altul
foloseste aceasta optiune.
Baze de date. Cursul 8

 SECVENTE-creare
EXEMPLU - Pentru a genera noi numere matricole care sa
porneasca de la valoarea 5000, pasul de incrementare sa fie 2
iar valoarea maxima sa fie 9998 se creaza secventa
MATRICOLA cu cererea:
CREATE SEQUENCE MATRICOLA
INCREMENT BY 2
START WITH 5000
MAXVALUE 9998;

Fiecare secventa se foloseste prin intermediul celor doua


pseudocoloane pe care le are:
 nume_secventa.NEXTVAL returneaza urmatoarea valoare
din secventa.
 nume_secventa.CURRVAL returneaza ultima valoare
furnizata deja de secventa.
Baze de date. Cursul 8
 SECVENTE –inserare linie noua
EXEMPLU - inserarea unui nou student folosind un numar
matricol generat de secventa:
INSERT INTO STUD VALUES(MATRICOLA. NEXTVAL, 4,
'1141B', '14-MAY-82', 'IASI',NULL, 1500, 24);
 NEXTVAL si CURRVAL – mai pot fi folosite:
 în clauza SET a unui UPDATE,
 în clauza SELECT a unei subcereri doar daca aceasta face
parte dintr-o comanda de inserare a rezultatelor sale,
 într-o clauza SELECT a unei cereri aflata pe primul nivel.
 NEXTVAL si CURRVAL nu se pot folosi:
 în clauza SELECT a cererii care defineste o vedere,
 într-o cerere SELECT DISTINCT
 într-o cerere SELECT continând GROUP BY, HAVING sau
ORDER BY,
 în subcereri ale unor cereri SELECT, DELETE sau UPDATE,
 ca valoare implicita de coloana în cereri CREATE TABLE
sau ALTER TABLE.
Baze de date. Cursul 8
 SECVENTE –modificare
 Cererea prin care se modifica parametri unei secvente
ALTER SEQUENCE nume_secventa
[INCREMENT BY pas]
[MAXVALUE valoare_maxima | NOMAXVALUE]
[MINVALUE valoare_minima | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE numar_valori | NOCACHE];
 Singurul element care nu se modifica este valoarea de start.
 Noile valori ale parametrilor se aplica pentru valorile generate
dupa modificarea secventei.
 În cazul clauzelor MAXVALUE si MINVALUE, valorile nu pot
fi mai mici sau mai mari decat valoarea curenta a secventei.
 Stergerea unei secvente se face prin comanda
DROP SEQUENCE nume_secventa;
 Fiind o comanda DDL, stergerea unei secvente nu poate fi
revocata cu ROLLBACK.
Baze de date. Cursul 8

 SINONIME
 Obiectelor din baza de date li se pot asocia nume alternative -
sinonime.
 Crearea sinonimelor are ca obiect simplificarea operarii cu
obiectele respective, putând asigura:
 Nume alternative mai sugestive pentru obiecte care la
creare au primit o denumire criptica.
 Nume alternative mai scurte pentru obiecte care la creare
au primit o denumire lunga.
 Nume alternative mai scurte pentru obiectele create de
alti utilizatori (pentru a fi accesate acestea trebuie
prefixate cu numele utilizatorului care le detine).
 SINTAXA
CREATE [PUBLIC] SYNONYM sinonim FOR obiect;
 Optiunea PUBLIC specifica faptul ca sinonimul este accesibil si
celorlalti utilizatori ai sistemului.
Baze de date. Cursul 8

 SINONIME
 EXEMPLU
CREATE PUBLIC SYNONYM ST FOR STUD;
 Dupa crearea acestui sinonim, ST poate apare în cereri în
locul lui STUD, dar nu si împreuna cu acesta.
 De exemplu, cererea de mai jos va semnala o eroare deoarece
în contextul clauzei FROM continute, pentru coloanele din
STUD se poate folosi pentru prefixare fie STUD fie A:
SELECT A.NUME, B.NUME
FROM STUD A, SPEC B
WHERE ST.CODS = B.CODS;
În schimb cererea urmatoare va returna numele studentilor si
numele specializarilor acestora:
SELECT ST.NUME, SPEC.NUME
FROM ST, SPEC
WHERE ST.CODS = SPEC.CODS;
Baze de date. Cursul 8

 SINONIME - STERGERE
 Stergerea unui sinonim se face prin cererea:
DROP [PUBLIC] SYNONYM nume_sinonim;
 PUBLIC se foloseste pentru stergerea sinonimelor create
cu aceasta optiune. Fiind o comanda DDL, stergerea unui
sinonim nu poate fi revocata cu ROLLBACK.
Baze de date

Curs IX

Baze de date distribuite.


Baze de date non SQL.
Baze de date. Cursul 9

Baze de date distribuite


 O baza de date distribuita (BDD) este o colecție de baze de date
logic interconectate distribuite intr-o rețea de calculatoare.
 Un SGBD distribuit este format din colecția de programe care
permit gestiunea bazelor de date distribuite făcând distribuția
transparenta pentru utilizator.
 Funcționare: datele sunt stocate pe diferite sisteme de calcul cu
autonomie totală numite noduri. Când un utilizator face o
interogare, sistemul distribuie cererea la nodurile care sunt
conectate la el si, in momentul in care găsește răspunsul intr-
unul dintre noduri, returnează răspunsul către utilizator.
 Rol: interconectează logic mai multe sisteme de baze de date.
Sistemele locale îşi păstrează controlul complet asupra bazei
de date prin intermediul aplicațiilor existente. Sistemul global
nu poate aduce atingeri asupra structurii sau aplicațiilor care
rulează local. Dialogul dintre cele două nivele se face prin
intermediul unei interfețe software şi la nivelul datelor pe
care serverul local consimte să le partajeze.
Baze de date. Cursul 9

Baze de date distribuite


 Criterii SDGBD – sistemele nodurilor locale trebuie sa
indeplineasca una dintre urmatoarele 3 conditii:
distributie, autonomie, heterogenitate (diversitate).
 Problema specifica BDD – optimizarea cererilor
 Analiza caz baze de date centralizate: minimizarea
numarului de accese la disc. Consideram 2 tabele si o
cerere de produs cartezian intre 2 atribute ale tabelelor: S
cu s tupluri si R cu r tupluri. Consideram nr si ns –
numerele de tupluri care incap intr-un bloc pe disc pentru
fiecare tabela si m numarul de blocuri disponibile in
memoria interna a calculatorului.
 Nr de blocuri citite pentru a parcurge tabela R este r/nr
 Nr de parcurgeri al tabelei S este r/((m-1)*nr)
 Pentru o parcurgere a tabelei S se citesc s/ns blocuri
 Nr total de accese la disc este: (r/nr) * (1 + s/((m-1) * ns))
Ceea ce poate duce, in cazul tabelelor cu numar mare de
tupluri, la timpi mari pentru executia cererii.
Baze de date. Cursul 9

Baze de date distribuite


 Tipuri de SGBDD
 Sisteme omogene, nedistribuite si logic integrate
 Sisteme omogene, federate, nedistribuite
 Sisteme multibaza de date omogene nedistribuite
 Sisteme omogene distribuite
 Sisteme federate omogene
 Sisteme multibaza de date omogene
 Sisteme heterogene integrate
 Sisteme federate heterogene
 Sisteme multibaza de date heterogene
 Sisteme heterogene distribuite
 Sisteme federate heterogene distribuite
 Sisteme multibaza de date heterogene distribuite
Baze de date. Cursul 9

Baze de date distribuite


 Etapele procesarii unei cereri Cerere

distribuite
Descompunere

Cerere in algebra
relationala pe
relatii distribuite

Localizare
date
Cerere pe
fragmente

Optimizare
globala
Cerere pe fragmente
optimizata cu operatii
de comunicare

Optimizare
locala
Cerere locale
optimizate
Baze de date. Cursul 9
Baze de date distribuite
 Proiectarea distributiei datelor
 Exista mai multe abordari in proiectarea unei baze de
date distribuite:
 Strategia top-down este folosita mai ales in cazul
proiectării unor noi aplicații in care gradul de autonomie
este scazut si omogenitatea este ridicata. Aceasta
strategie este adecvata de exemplu in proiectarea
sistemelor distribuite omogene.
 Strategia bottom-up este folosita in cazurile in care gradul
de autonomie este mediu sau ridicat si in cazul
neomogenitatii sistemelor locale, prezente in diversele
noduri. Un exemplu cazul in care bazele de date din
nodurile locale exista deja, urmând a se face o integrare a
lor intr-o baza de date distribuita, rămânând însă posibila
si folosirea fiecărei BD locale independent, ca o baza de
date centralizata. Strategia se folosește si in cazul
sistemelor federate, multibaza de date si heterogene noi.
Baze de date. Cursul 9
Baze de date distribuite
 Proiectarea distributiei datelor
 Strategia mixta – in practica pentru proiectarea bazelor
de date distribuite se aplica o combinatie a celor doua
strategii anterior prezentate. Insasi prezenta feedback-
ului din strategia top-down este o abatere de la fluxul “de
sus in jos” . De asemenea, in cazul strategiei bottom-up,
bazele de date locale pot fi proiectate top-down, inainte de
integrarea lor bottom-up.

 Replicarea datelor
 Costul de operare in cazul unei BDD are doua componente
principale:
 costul de stocare a informatiei (numarul de accese la disc).
 costul de comunicatie, pentru cereri si actualizari ale
bazei de date.
Baze de date. Cursul 9
Baze de date distribuite
 Replicarea datelor
 O redundanta mare duce la scaderea costului de
comunicatie pentru cereri, deoarece probabilitatea
existentei unei copii in nodul local este mare, in schimb
creste costul de comunicatie pentru actualizarea tuturor
copiilor.
 Redundanta scazuta are un efect contrar: scade costul de
comunicatie pentru actualizari dar creste cel pentru cereri.

 Initializarea, recuperarea dupa incident si salvarea datelor


 Initializarea unui nod (site initialization) inseamna
integrarea unui nou nod intr-un sistem de baze de date
distribuite.
 Recuperarea dupa incident a unui nod (site recovery)
inseamna reintegrarea unui nod intr-un sistem de baze de
date distribuit, atunci cand nodul a fost temporar avariat
(software sau hardware).
Baze de date. Cursul 9
Baze de date distribuite
 Initializarea, recuperarea dupa incident si salvarea datelor
 Recuperarea si initializarea sunt situatii aproape identice.
In cazul recuperarii se poate face optimizarea ca doar acele
articole care au fost scrise dupa oprirea nodului in cauza sa
fie recuperate. Toate celelalte articole, nemodificate in
perioada de oprire, sunt accesibile sistemului de la inceput.
Pentru aceasta se pot folosi diverse metode. Una dintre ele
este inregistrarea cererilor de scriere sosite in nodul de
recuperat (asta inseamna ca in nodul respectiv continua sa
ruleze un modul care monitorizeaza aceste cereri, lucru
imposibil in cazul unui incident hardware. In cazul acesta,
tranzactiile de copiere se vor executa doar pentru aceste
articole, in orice ordine.
 Salvarea datelor (site backup) reprezinta crearea unei copii
statice a datelor unui nod (cu datele asa cum erau in
momentul salvarii, dar intr-o stare consistenta) pentru
arhivare sau alte motive.
Baze de date. Cursul 9
Baze de date distribuite
 Initializarea, recuperarea dupa incident si salvarea datelor
 Salvarea datelor (site backup) - Problema salvarii datelor se
pune din doua cauze:
 pentru arhivare - copia se creeaza pentru a pastra pe
suporturi permanente o copie a datelor, din motive de
siguranta.

 pentru cresterea vitezei unor cereri - odata creata o copie a


datelor, aceasta nu se mai modifica. Cererile vor da
rezultate specifice momentului in care a fost facuta
salvarea. Deoarece aceasta copie nu este decat citita (nu si
actualizata), si ea exista intr-un singur nod, datele pot fi
accesate din nodul respectiv cu viteza mai mare. Nu se
pune problema concurentei in cazul copiilor read-only si nu
este implicata in nici un fel partea de comunicatie de date
intre noduri, operatiile fiind locale).
Baze de date. Cursul 9
Baze de date distribuite
 Initializarea, recuperarea dupa incident si salvarea datelor
 Pentru realizarea unei copii se îngheață la o anumita stare
nodul rulând o tranzacție care blochează pentru citire toate
datele care se doresc copiate. Aceasta tranzacție se va lansa
după ce toate articolele din noul nod (virtual) au fost scrise
cel puțin o data. In momentul in care tranzacția a terminat
de efectuat blocarea, noul nod este scos din sistem. Datele
sunt într-o stare consistenta si pot din acest moment sa fie
consultate fără nici o restricție.
Baze de date. Cursul 9
Baze de date non SQL
 Numite NoSQL - not only SQL
 Caracteristici: SGDB se deosebesc de cele clasice
relationale prin:
 modelul datelor
 limbajul de interogare
 In plus:
 Sunt proiectate pentru medii distribuite sau paralele
 Sunt folosite pentru gestiunea documentelor si mai putin a
datelor atomice
 Ofera garantii mai slabe de consistenta
 Unele sunt proiectate pentru a oferi consistenta la citire,
specifica in sistemele clasice
 In cazul arhitecturilor distribuite datele sunt prezente
redundant in mai multe noduri. In felul acesta este
realizata scalabilitatea si protectia impotriva caderilor
accidentale ale unor noduri
Baze de date. Cursul 9
Baze de date non SQL
 Limbaje specifice folosite: pot folosi si folosesc si ele limbaje
de cereri ca:
 UnSQL = Unstructured Query Language. Exemple de
comenzi:
INSERT INTO tabel VALUE { type: "nested", content:
{ content: "nested object", x: 1, y: {str: "hi", str2: "there"}, z:
true } };
SELECT { x:tabel.type, y:tabel.content.x, z:tabel.content.x+50
} FROM tabel;
 Xquery - Folosit pentru cereri pe colectii de date XML.
Exemplu: pentru un document STUD.XML
<?xml version="1.0" encoding="ISO-8859-1"?> <studenti>
<student spec="Informatica"> <nume>Ionescu Ion</nume>
<an>3</an> <medie>9.30</medie> </student>
<student spec=“Electromecanica"> <nume> Popescu Ion
</nume> <an> 2</an> <medie>9.30</medie> </student>
</studenti>
Baze de date. Cursul 9
Baze de date non SQL
 Cererea de interogare:
doc("STUD.XML")/studenti/student[an=3]
 Va returna: Informatica Ionescu Ion 3 9.30
 Cererea de interogare :
doc("STUD.XML")/studenti/student/nume
 Va returna:
Ionescu Ion
Popescu Vasile
 Date semistructurate
 nu sunt organizate conform modelului relational
 contin marcaje pentru a separa elementele din care se
compun (numite campuri sau atribute)
 nu exista o schema a datelor, ele insa contin descrierea
 Pot exista ierarhii de elemente
 Ordinea campurilor nu este semnificativa
 Elemente diferite din aceeasi clasa pot avea atribute diferite
Baze de date. Cursul 9
Baze de date non SQL
 Exemple de date semistructurale
 Documentele XML sau alte documente similare
 Documentele HTML
 Documente de tip EDI (ex.: standardul UN/EDIFACT)
 OEM (Object Interchange Model)

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