Sunteți pe pagina 1din 22

CURS

Sumar

Iniiere n
sisteme de
gestiune a bazelor
de date

Noiunea de baz de date


Conceptul de sistem de gestiune a
bazelor de date
Categorii de utilizatori
Arhitectura ANSI-SPARC a bazelor de
date
Limbajele bazelor de date
Definirea sistemelor de gestiune a
bazelor de date relaionale
Lucrare aplicativ propus spre rezolvare

1. Noiunea de baz de date


Evoluia diferitelor metode i tehnici de organizare a datelor, pe suporturi de
memorie extern, a fost determinat de necesitatea de a avea un acces ct mai uor la
un volum ct mai mare de date. Datele stocate i prelucrate sunt foarte complexe cu
foarte multe interdependene, lucru care a fcut necesar apariia bazelor de date.
n sensul larg, o baz de date [engl.: database] este o colecie de date corelate
din punct de vedere logic, care reflect un anumit aspect al lumii reale i este destinat
unui anumit grup de utilizatori. n acest sens, bazele de date pot fi create i meninute
manual (un exemplu ar fi fiele de eviden a crilor dintr-o bibliotec, aa cum erau
folosite cu ani n urm) sau computerizat aa cum sunt majoritatea bazelor de date n
momentul de fa. O definiie ntr-un sens mai restrns a unei baze de date este
urmtoarea:
O baz de date este o colecie de date centralizate, creat i meninut
computerizat, n scopul prelucrrii datelor n contextul unui set de aplicaii.
Prelucrarea datelor se refer la operaiile de introducere, tergere, actualizare i
interogare a datelor.
Orice baz de date are urmtoarele proprieti implicite:
Baza de date este o colecie logic coerent de date ce are cel puin un neles.
Baza de date este destinat, construit i populat de date despre un domeniu
bine precizat. Ea are un grup de utilizatori i se adreseaz unui anumit grup de
aplicaii
O baz de date reprezint cteva aspecte ale lumii reale crend orizontul
propriu. Schimbrile orizontului sunt reflectate n baza de date.
Fa de vechile metode de nregistrare a datelor privind diferite activiti pe
fie (documente scrise) sau chiar n fiiere pe disc, sistemele de baze de date ofer
avantaje considerabile, ceea ce explic extinsa utilizare a acestora. Cteva dintre
avantajele oferite sunt:

Curs 1 SGBD

Mircea Musan

Controlul centralizat al datelor, putnd fi desemnat o persoan ca responsabil cu


administrarea bazei de date.
Vitez mare de regsire i actualizare a informaiilor.
Sunt compacte: volumul ocupat de sistemele de baze de date este mult mai redus
dect documentele scrise.
Flexibilitatea ce const n posibilitatea modificrii structurii bazei de date fr a fi
necesar modificarea programelor de aplicaie
Redundan sczut a datelor memorate, care se obine prin partajarea datelor ntre
mai muli utilizatori i aplicaii. n sistemele de baze de date, mai multe aplicaii
pot folosi date comune, memorate o singur dat. De exemplu, o aplicaie pentru
gestionarea personalului dintr-o universitate i o aplicaie pentru gestionarea
rezultatelor la examene din aceeai universitate care folosete o singur baz de
date, pot folosi aceleai informaii referitoare la structurarea facultilor.
Posibilitatea introducerii standardelor privind modul de stocare a datelor, ceea ce
permite interschimbarea datelor ntre organizaii
Meninerea integritii datelor prin politica de securitate (drepturi de acces
difereniate n funcie de rolul utilizatorilor), prin gestionarea tranzaciilor i prin
refacerea datelor n caz de funcionare defectuoas a diferitelor componente
hardware sau software.
Independena datelor fa de suportul hardware utilizat. Sistemul de gestiunea a
bazelor de date ofer o vizualizare a datelor, care nu se modific atunci cnd se
schimb suportul de memorare fizic, ceea ce asigur imunitatea structurii bazei de
date i a aplicaiilor la modificri ale sistemului hardware utilizat.

2. Conceptul de sistem de gestiune a bazelor de date


Sistemul de gestiune a bazelor de date (SGBD) reprezint sistemul de
programe care permite construirea bazelor de date, stocarea i prelucrarea de
informaii sub form de nregistrri n bazele de date i dezvoltarea de aplicaii privind
bazele de date, permind astfel accesul utilizatorului.
Orice sistem de gestionare a bazelor de date conine:
limbajul de descriere a datelor (LDD), care permite descrierea structurii bazei de
date, a componenei, a relaiilor dintre componente, a drepturilor de acces al
utilizatorilor la baze de date (BD);
limbajul de cereri (LC) este limbajul n care se scriu programele pentru realizarea
prelucrrii datelor;
limbajul de prelucrare a datelor (LPD), care permite operaii asupra BD, cum ar fi
ncrcarea BD, inserarea, tergerea, cutarea sau modificarea unui element,
realizarea de statistici.

2.1 Activitile unui SGBD


SGBD-ul este format din programe de software care interactioneaza cu
programele de aplicaie ale utilizatorilor i cu baza de date. Sistemul de gestiune al
bazei de date asigur realizarea urmtoarelor activiti:
definirea structurii bazei de date;

Curs 1 SGBD

Mircea Musan

ncarcarea datelor n baza de date;


accesul la date (interogare, actualizare);
ntretinerea bazei de date (colectarea i reutilizarea spatiilor goale, refacerea bazei
de date n cazul unui incident);
reorganizarea bazei de date (restructurarea i modificarea strategiei de acces);
integritatea datelor;
securitatea datelor.
Aadar, sistemul de gestiune al bazei de date apare ca un sistem complex de
programe care asigura interfata ntre o baza de date i utilizatorii acestuia.

n plus un SGBD mai asigur i alte servicii:


suport pentru limbaj de programare;
interfa ct mai atractiv pentru comunicare cu utilizatorul;
tehnici avansate de memorare, organizare, accesare a datelor din baza de date;
utilitare ncorporate: sistem de gestiune a fiierelor, liste, tabele etc.;
help pentru ajutarea utilizatorului n lucrul cu baza de date.

2.2 Funciile unui SGBD


Un SGBD trebuie s asigure urmtoarele funcii:
funcia de descriere a datelor se face cu ajutorul LDD, realizndu-se descrierea
atributelor din cadrul structurii BD, legturile dintre entitile BD, se definesc
eventualele criterii de validare a datelor, metode de acces la date, integritatea
datelor. Concretizarea acestei funcii este schema BD;
funcia de manipulare este cea mai complex i realizeaz actualizarea i
regsirea datelor;
funcia de utilizare asigur mulimea interfeelor necesare pentru comunicare a
tuturor utilizatorilor cu BD.

2.3 Obiectivele unui SGBD


Un SGBD are rolul de a furniza suportul software complet pentru dezvoltarea
de aplicaii informatice cu baze de date. El trebuie s asigure:
minimizarea costului de prelucrare a datelor,
reducerea timpului de rspuns,
flexibilitatea aplicaiilor i
protecia datelor.
Pentru satisfacerea performanelor enumerate, SGBD trebuie s asigure un
minim de obiective.
1. Asigurarea independenei datelor trebuie privit din dou puncte de vedere:
independena logic se refer la posibilitatea adgrii de noi tipuri de
nregistrri de date sau extinderea structurii conceptuale, fr a determina
rescrierea programelor de aplicaie;

Curs 1 SGBD

Mircea Musan

independena fizic modificarea tehnicilor fizice de memorare fr a determina


rescrierea programelor de aplicaie.
2. Asigurarea redundanei minime i controlate a datelor stocarea informaiilor
n bazele de date se face astfel nct datele s nu fie multiplicate. Totui, pentru a
mbunti performanele legate de timpul de rspuns, se accept o anumit
redundan a datelor, controlat, pentru a asigura coerena bazei de date i eficiena
utilizrii resurselor hardware.
3. Asigurarea facilitilor de utilizare a datelor presupune ca SGBD-ul s aib
anumite componente specializate pentru:
folosirea datelor de ctre mai muli utilizatori n diferite aplicaii datele de la o
aplicaie trebuie s poat fi utilizate i n alte aplicaii.
accesul ct mai simplu al utilizatorilor la date fr ca ei s fie nevoii s cunoasc
structura ntregii baze de date; aceast sarcin cade n seama administratorului
bazei de date.
existena unor limbaje performante de regsire a datelor care permit exprimarea
interactiv a unor cereri de regsire a datelor.
sistemul de gestiune trebuie s ofere posibilitatea unui acces multicriterial la
informaiile din baza de date spre deosebire de sistemul clasic de prelucrare pe
fiiere unde exist un singur criteriu de adresare, cel care a stat la baza organizrii
fiierului.
4. Asigurarea securitii datelor mpotriva accesului neautorizat.
5. Asigurarea coerenei i integritii datelor mpotriva unor tergeri intenionate
sau neintenionate se realizeaz prin intermediul unor proceduri de validare, a unor
protocoale de control concurent i a unor proceduri de refacere a bazei de date.
6. Asigurarea partajabilitii datelor se refer pe de o parte la asigurarea
accesului mai multor utilizatori la aceleai date i de asemenea la posibilitatea
dezvoltrii unor aplicaii fr a se modifica structura bazei de date.
7. Asigurarea legturilor ntre date corespund asocierilor care se pot realiza ntre
obiectele unei aplicaii informatice. Orice SGBD trebuie s permit definirea i
descrierea structurii de date, precum i a legturilor dintre acestea, conform unui
model de date (de exemplu modelul relaional).
8. Administrarea i controlul datelor sunt asigurate de SGBD, n sensul c datele
pot fi folosite de mai muli utilizatori n acelai timp, iar utilizatorii pot avea cerine
diferite i care pot fi incompatibile. SGBD trebuie s rezolve probleme legate de
concuren la date, problem care apare mai ales n lucrul n mediu de reea de
calculatoare.

3. Categorii de utilizatori
Dup cum spuneam mai sus, sistemul de gestiune al bazei de date apare ca un
sistem complex de programe care asigura interfata ntre o baza de date i utilizatorii

Curs 1 SGBD

Mircea Musan

acestuia. ntr-o form de prezentare a categoriilor de utilizatori ai bazelor de date,


acetia ar arta precum mai jos:
a) neinformaticieni beneficiarii informaiei, nu trebuie s cunoasc structura BD,
nu trebuie s programeze aplicaii ci doar s le foloseasc prin intermediul unei
interfee suficient de prietenoase.
b) informaticieni creaz structura BD i realizeaz procedurile complexe de
exploatare a BD;
c) administratorul bazei de date utilizator special, cu rol hotrtor n funcionarea
optim a ntregului sistem. Acesta asigur urmtoarele funcii:
funcia de administrare administratorul este cel care realizeaz schema
conceptual a bazei de date, iar n perioada de exploatare a BD autorizeaz accesul
la date, reface baza n caz de incident.
funcia de protecie a bazei de date ansamblul de msuri necesare pentru
asigurarea integritii (semantic, acces concurent, salvare/restaurare) i securitii
datelor (autorizare acces, utilizare viziuni, criptare).

4. Limbajele bazelor de date


Limbajele bazelor de date sunt mprite n 2 categorii: limbaje de definire a
datelor (DDL) i limbaje de manipulare a datelor (DML). DDL este utilizat pentru a
specifica schema bazei de date, iar DML este utilizat pentru citirea i reactualizarea
bazei de date.
Aceste limbaje sunt numite sublimbaje de date deoarece ele nu includ
construcii pentru toate necesitile de calcul, cum sunt cele asigurate de limbajele de
nivel nalt. Multe SGBD au o facilitate de ncorporare a sublimbajului ntr-un limbaj
de programare de nivel nalt, cum sunt Pascal, C, Java etc. n acest caz, limbajul de
nivel nalt se numete limbaj gazd. Pentru a compila fiierul ncorporat, mai nti
comenzile specifice sublimbajului de date sunt nlocuite prin apelri de funcii. Apoi
fiierul preprocesat este compilat i rezultatul este plasat ntr-un modul obiect, legat
legat la o librrie care conine funciile nlocuite.

Curs 1 SGBD

Mircea Musan

4.1 Limbajul de definire a datelor (DDL)


Rezultatul compilrii instruciunilor DDL este un set de tabele stocate n
fiiere speciale, denumite global catalog de sistem. Acesta conine meta-datele
adic datele care descriu obiectele din baza de date.

4.2 Limbajul de manipulare a datelor (DML)


Limbajele DML pot fi de dou tipuri: procedurale i neprocedurale.
procedurale specific modul cum trebuie s fie obinut rezultatul unei instruciuni
DML
neprocedurale descriu numai ce rezultat trebuie obinut.
De exemplu, SQL este un limbaj neprocedural.
DDL Este un limbaj descriptiv, care permite administratorului bazei de date sau
utilizatorului s descrie i s denumeasc entitile cerute de aplicaie i relaiile
care pot exista ntre diferitele entiti.
DML Asigur un set de procedee ce permit operaii de baz pentru manipularea
datelor din baz de date:
inserarea de date noi
modificri de date
regsirea datelor
tergerea de date

5. Definirea sistemelor de gestiune a bazelor de date


relaionale
ntr-o prim ncercare de definire, se poate considera un sistem de gestiune a
bazelor de date relaionale (SGBDR) ca reprezentnd un SGBD care utilizeaz drept
concepie de organizare a datelor modelul relaional. Astfel spus, un SGDBR
reprezint un sistem care suport modelul relaional.
Definiia de mai sus este prea general pentru a putea fi operaional, deoarece
modul de implemantare a modelului relaional difer, de regul att ntre diferitele
SGBDR, ct i n raport cu modelul teoretic, cel definit n cadrul teoriei relaionale,
datorit eforturilor productorilor de a realiza sisteme ct mai perfomante care s
satisfac cerinele i exagerrile utilizatorilor. Ct de aproape (sau de departe) de
modelul relaional teoretic trebuie s fie modelul datelor efectiv utilizat de SGBD
pentru a putea afirma c SGBD-ul respectiv utilizeaz sau nu modelul relaional, deci
este sau nu SGBDR?
Diversitatea modelelor relaionale operaionale au determinat, n mod natural
existana unei mari diversitii de SGBDR, pentru a cror prezentare a fost necesar
nuanarea terminologiei. Au aprut o serie de sintagme precum: sisteme cu interfa
relaional, sisteme pseudorelaionale, sisteme complet relaionale.
Conceptele specifice organizriidatelor n fiiere, SGBDR i teoriei relaionale
ntre care se pot stabili analogii:

Curs 1 SGBD

Organizarea datelor n fiiere


Fiier
Record(nregistrare)
Cmp

Mircea Musan

SGBDR
Tabel
Linie
Coloan

Teoria relaional
Relaie
Tuplu
Atribut

n general, conceptele utilizate la prezentarea SGBDR i a modelelor


relaionale operaionale difer de cele din cadrul teoriei relaionale. Figura de mai sus
prezint comparativ conceptele organizrii datelor n fiiere, concepte SGBDR i ale
teoriei relaionale.
Faptul c se pot stabili analogii ntre conceptele organizrii datelor n fiiere i
conceptele relaionale, i-au determinat pe unii productori s prezinte sisteme fr nici
o legtur cu modelul relaional drept SGBDR, n scopul asigurrii succesului
comercial al acestor sisteme.

5.1 Regulile lui Codd


Definirea unui SGBDR impune o detaliere a caracteristicilor pe care trebuie s
le prezinte un SGBD pentru a putea fi considerat relaional. n acest sens, Codd a
formulat 13 reguli care exprim cerinele pe care trebuie s le prezinte un SGBD ca s
fie relaional. Dei reguli au strnit o serie de controverse, vor fi prezentate n
continuare, ele fiind deosebit de utile n evaluarea unui SGBDR.
R0: Regula privind gestionarea datelor la nivel de relaie
Sistemul trebuie s gestioneze baza de date numai prin mecanisme relaionale.
Acest lucru nseamn c sistemul trebuie s-i ndeplineasc toate funciile prin
manipulri n care unitatea de informaie s fie mulimea (relaia), adic s utilizeze
limbaje, precum SQL, care s opereze la un moment dat pe o ntreag relaie. Deci
SGBD nu trebuie s accepte operaii non-relaionale care s ndeplineasc operaiile
de definire i manipulare a datelor.
Unele sisteme utilizeaz mecanisme releionale numai pentru o parte din funcii,
n special pentru interogare. Aceste sisteme se numesc sisteme cu interfa relaional
i nu SGBDR.
R1: Regula privind reprezenterea logic a datelor
Toate datele din daza de date relaional trebuie s fie reprezentate explicit la
nivel logic, ntr-un singur mod, i anume ca valori n tabele de date.
Aceste lucru nseamn c toate datele trebuie s fie memorate i prelucrate n
acelai mod. Informaiile privind numele de tabele,coloane, domenii, definiiile
tabelelor virtuale, restricii de integritate trebuie s fie memotare tot n tabele de date
(cataloage).
Referina la 'nivelul logic' nseamn c construcia fizic nu este reprezentat
i nu necesit explicaie.
R2: Regula privind garantarea accesului la date.
Orice dat din baza de date relaional trebuie s poat fi accesat prin
specificarea numelui de tabel, valorii cheii primare i numelui de coloan.
Aceast regul exprim cerina ca linbajul de cereri al SGBDR s permit
accesul la fiecare valoare atomic din baza de date.

Curs 1 SGBD

Mircea Musan

R3: Regula privind valorile null


Sistemele trebuie s permit declararea s manipularea sistematic a valorilor
null, cu semnificaia unor date lips sau inaplicabile. Valorile null, care difer de
irurile de caractere 'spaiu' sau de irurile vide da caractere sunt deosebit de
importante n implementarea restriciilor de integritate (integritatea entitii i
integritatea refereanial).
R4: Regula privind metadatele
Descrierea bazei de date trebuie s se prezinte la nivel logic n acalai mod cu
descrierea datelor propiu-zise, astfel nct utilizatorii autorizai s poat descrierii
bazei de date aceleai operaii ca i asupra datelor obijnuite.
Acest regul specific c trebuie s existe un unic limbaj de manipulare a
metedatelor i a datelor propui-zise, mai mult, exist o unic structur logic folosit
pentru a depozita informaiile de sistem.
Sisteme nu trebuie s fac diferenieri n definirea i tratarea datelor ia
metadatelor, utiliznd o singur structur, i anume cea relaionala.
R5: Regula privind facilitaile limbajelor utilizate
Un sistem relaional trebuie s fac posibil utilizarea mai multor limbaje, n
mai multe moduri. Trebuie s existe ns cel puin un limbaj de nivel nalt ale crui
instruciuni s poat exprima oricare din urmtoarele operaii: definirea tabelelor de
date, definirea tabelelor virtuale, manipularea datelor (interactiv dau prin program),
definirea restriciilor de integritate, autorizarea accesului, precizarea limitelor
tranzaciilor.
A se nota aici c noul standard O/I pentru SQL furnizeaz toate aceste funcii,
deci orice limbaj care accept acest standard va satisface automat aceast regul.
R6: Regula privind actualizarea tabelelor virtuale
Toate tabelele virtuale care teoretic sunt posibil de actualizat trebuie s poat fi
efectiv actualizabile.
Nu toate atributele din cadrul unei tabele virtuale, deci nu toate tabele virtuale
sunt toeretic actualizabile.
R7: Regula privind inserrile, modificrile i tergerile n baza de date
Sistemul trebuie s ofere posibilitatea manipulrii unei tabele (da baz sau
virtual) nu numai n cadrul operaiilor de regsire, ci i n aciuni de inserare,
modificare i tergere a datelor.
Aceast regul exprim cerina ca prin operaiile n care se schimb bazei da
date s se lucreze la un moment dat pe o ntreag relaie.
R8: Regula privind independena fizic a datelor
Programele de aplicaie nu trebuie s fie afectate de schimbrile efectuate n
modul de reprezentare a datelor sau n metodele de acces. O schimbare a structurii
fizice a datelor nu trebuie s blocheze funcionarea programelor de alpicaie.
R9: Regula privind independena logic a datelor
Programele de aplicaie nu trebuie s fie afectate de schimbrile efectuate
asupra relaiilor bazei de date, schimbri care conserv datele i care toeretic
garanteaz valabilitatea programelor de apicaie existente.

Curs 1 SGBD

Mircea Musan

R10: Regula privind restriciile de integritate


Restrictiile de integritate trebuie s fie definite n limbajul utilizat de sistem
pentru definirea datelor i s fie memorate n cadrul bazei de date i nu n cadrul
programului de aplicaie.
R11: Regula privind distribuirea geografic a datelor
Limbajul de manipulare a datelor utilizat de sistem trebuie s permit ca, n
situaia n care datele sunt distribuite, programele de aplicaie s fie logic aceleai cu
cele utilizate n cazul n care datele sunt fizic centralizate.
Utilizatorul trebuie s perceap datele ca fiind centralizate. Sarcina de
localizare a datelor, atunci cnd acestea sunt distribuite geografic precum i sarcina
recompunerii datelor trebuie s revin sistemului i nu utilizatorului.
R12: Regula privind prelucrarea datelor la nivelul de baz
Dac sistemul posed un limbaj de baz (de nivel sczut) orientat pe
prelucrare de recorduri (tupuri) i nu pe prelucrarea mulimiilor (relaiilor), acest
limbaj nu trebuie s fie utilizat pentru a se evitarestriciile de integritate sau restriciile
introduse prin utilizarea limbajelor de nivel nalt, adic accesul la toate dazele va fi
controlat de SGBDR, altfel integritate bazelor de date nu poate fi compromis fr
cunoaterea utilizatorului sau a administratorului bazei de date.
Pe parcursul anilor regulile lui Codd au generat o seam de controverse.
Cteva argumente sunt c aceste reguli nu sunt mai mult dect nite exerciii
academice.
Unele revendicri ale produselor existente sunt c ele pot indeplini cea mai mare
parte din reguli, dar nu toate. Aceast discuie a generat ntr-o disput ntre utilizatori
i teoreticienii prietilor eseniale ale unui SGBDR.
Pentru a accentua implicaia regulilor lui Codd n analiza unum SGBDR,
aceste reguli au fost reorganizate n cinci categorii, i anume:
1) Reguli fundamentale,
2) Reguli structurale,
3) Reguli privind integritatea datelor,
4) Reguli privind manipularea datelor,
5) Reguli privind independena datelor.

5.2 Criterii minimale de definire a unui SGBDR


Nici unul dintre SGBDR disponibile astzi nu respect ntrutotul cerinele
exprimate de Codd, n cadrul celor 13 reguli. De aceea pentru caracterizarea unui
SGBD nu sunt utilizate regulile lui Codd, fiind formulate n schimb o serie de cerine
minimale pa care trebuie s la satisfac un sistem de gestiune a bazelor de date pentru
a putea fi considerat releional.
Un SGBD este minimal relaional dac satisface urmtoarela condiii:
1. Toate datele din cadrul relaiei sunt reprezentate prin valori n tabele,
2. Nu exist pointeri observabili de ctre utilizatori n tabele, n sensul c operaiile
cu releii nu fac apel la pointeri, indeci, fiiere inverse, etc.

Curs 1 SGBD

10

Mircea Musan

3. Sistemul suport operatori relaionali de proiecie, selecie i joing natural, fr


limitri mpuse de considerente interne (cum ar fi de exemplu, necesitetea
indexrii atributelor). Unitatea de informaie ciu care se lucreaz n cadrul acestor
operaii trebuie s fie relaia.
Un SGBD este complet relaional dac este minimal ralaional i satisface n
plus urmtoarele condiii:
4. Sistemul suport toate operaiile de baz ale algebrei relaionale, fr limitri
npuse de considerente interne.
5. Sistemul suport dou dintre restriciile de integritate de baz al modelului
relaional i anume unicitatea cheii unei relaiii restricia referenial.
Un SGBD este pseudorelaional dac satisface numai condiiile 1. i 3.
Un SGBD cu interfa relaional este un SGBD are satisface condiiile 1. i
3., cu observaia c cerina 3. este ndeplinit numai n raport cu funcia de interogare
n ultimii ani, ca rspuns la necesitatea de a crete complexitatea aplicaiilor cu
baze de date (ncurajat i de progresele aprute n programare odata cu programarea
orientata obiect) au aprut modelul de date orientat obiect (Object-Oriented Data
Model - OODM) i modelul de date relaional extins (Extended Relational Data
Model - ERDM). Cu toate ca modelul de date ce sta la baza noilor modele nu este atat
de clar ca n cazul modelului relaional, se poate considera ca aceste din urma
dezvoltari reprezinta generatia a treia de SGBD.

5.3 Exemple de sisteme de gestiune a bazelor de date relaionale


Oracle. Este realizat de firma Oracle Corporation USA. Sistemul este complet
relaional, robust, se bazeaz pe SQL standard extins. Arhitectura sistemului este
client/server, permnd lucrul, cu obiecte i distribuit. Are BD Internet i modul de
optimizare a regsirii. Ultima versiune este Oracle 10g.
DB2. Este realizat de firma IBM. Sistemul respect teoria relaional, este robust
i se bazeaz pe SQL standard. Permite lucrul distribuit i are modul de optimizare a
regsirii.
Informix. Este realizat de firma Informix, respect teoria relaional i permite
lucru distribuit.
Progress. Este realizat de firma Progress Software. Are limbaj propriu (Progress
4GL) dar suport i SQL. Ruleaz pe o gam larg de calculatoare sub diferite sisteme de
operare.
SQL Server. Este realizat de firma Microsoft. Se bazeaz pe SQL i ruleaz n
arhitectura client/server.
Ingress II. Este realizat de firma Computer Associates. Este un SGBDR complet,
implementeaz dou limbaje relaionale (nti QUEL i apoi SQL) i este suportat de
diferite sisteme de operare (Windows, UNIX). Lucreaz distribuit n arhitectura
client/server, are extensie cu faciliti orientate obiect i permite aplicaii de tip Internet.
Organizarea fizic a tabelelor se face prin sistemul de operare.
Visual FoxPro. Este realizat de firma Microsoft. Are un limbaj procedural propiu
foarte puternic, o extensie orientat obiect, programare vizual i nucleu extins de SQL.
Access. Este realizat de firma Microsoft. Se bazeaz pe SQL, are limbajul
procedural gazd (Basic Access) i instrumente de dezvoltare.
Paradox. Este realizat de firma Borland. Are limbaj procedural propiu (PAL) i
suport SQL.

Curs 1 SGBD

11

Mircea Musan

6. Lucrare aplicativ propus spre rezolvare


a)

Se va proiecta o baz de date pentru evidena angajailor unei societi


comerciale. Pentru dezvoltare se va folosi aplicaia Access, iar fiierul de gestiune va
purta numele Eviden angajati.mdb. Baza de date va conine tabelele descrise mai
jos:
Funcii
Cod fct
Functia
Studii

1:n

Angajai
Id ang
Nume
Prenume
Functia
Data ang
Sal incad

1:n

1:1

Date pers
Id ang
CI
Data nast
Adresa

Copii ang
Cod ang
Prenume
Alocatie

Angajati
Nume cmp

Tip/dimensiune

Id ang

Numeric ntreg

Nume
Prenume
Functia

Text 20
Text 40
Text 3

Data incad
Sal incad

Dat calendaristic
Numeric ntreg

Index/cheie
Restricii
primar
Cheie
primar

Index
cu Se gsete n lista
duplicate
<ING, DIR, MCT,
MST, ECO, INF>

>=600

Date personale
Nume cmp

Tip/dimensiune

Id ang

Numeric ntreg

Index/cheie
primar
Index unic

CI
Data nast
Adresa

Text 8
Dat calendaristic
Memo

Restricii
Se gsete n lista
codurilor angajailor
din tabela Angajai
Se creaz un ablon
Loc, str., nr., ap.,
tel., jud., e-mail:

Functii
Nume cmp

Tip/dimensiune

Cod fct

Text 3

Functia
Studii

Text 15
Text 10

Copii angajati

Index/cheie
primar
Cheie
primar

Restricii

Se gsete n lista
<PRIMARE, MEDII,
SUPERIOARE>

Curs 1 SGBD

12

Nume cmp

Tip/dimensiune

Cod ang

Numeric ntreg

Prenume
Alocatie

Text 40
Numeric ntreg

Mircea Musan

Index/cheie
Restricii
primar
Index
cu Se gsete n lista
duplicate
codurilor angajaior
din tabela Angajai

Valoarea implicit va
fi 40

Rezultatul la care trebuie s se ajung este indicat mai jos:

b)

Vom continua aplicaia nceput, pentru formularea de cereri pe baza de date


Evidenta angajati.mdb.
Ex. 1 a: Se cer date complete despre angajaii firmei folosind setul complet de
cmpuri din tabela Angajati, aranjai n ordine alfabetic.
a) varianta Query Design view QBE:

b) varianta SQL:
SELECT [Id ang], Nume, Prenume, Functia, [Data incad],
[Sal incad]
FROM Angajati
ORDER BY Nume, Prenume;

Ex. 1 b: Acelai enun ca n exerciiul anterior, dar, ntr-o alt form de reprezentare a
interogrii.

Curs 1 SGBD

13

Mircea Musan

a) varianta Query Design view QBE:

b) varianta SQL:

SELECT Angajati.*
FROM Angajati
ORDER BY Nume, Prenume;

Ex. 2: S se refac prima interogare, astfel nct s apar n list doar acei angajai
care sunt de profesie inginer.

SELECT Angajati.*
FROM Angajati
WHERE Functia='ING'
ORDER BY Nume, Prenume;

Ex. 3 a: S se refac prima interogare, astfel nct n list s apar acei angajai al
cror nume ncepe cu litera P.

SELECT Angajati.*

Curs 1 SGBD

14

Mircea Musan

FROM Angajati
WHERE Nume Like 'P*'
ORDER BY Nume, Prenume;

Ex. 3 b: Se va reface interogarea anterioar, astfel nct n list vor aprea toi acei
angajai al cror nume conine grupul de litere op.
a) varianta Query Design view:

b) varianta SQL:
SELECT Angajati.*
FROM Angajati
WHERE Nume Like '*op*'
ORDER BY Nume, Prenume;

Ex. 4: Se cere o list: id-ul de angajat, numele, prenumele, functia, data incadrrii n
funcie, vechimea n munc i salariul cu care este ncadrat fiecare angajat.
a) varianta Query Design view:

b) varianta SQL:
SELECT [Id ang], Nume, Prenume, Functia, [Data incad],
Int((Date()-[Data incad])/365) AS
[Vechime in munca], [Sal incad]
FROM Angajati;

Ex. 5: S se modifice interogarea 4, astfel nct, n list s apar denumirea complet


a funciei angajailor i nu doar codul acesteia.

Curs 1 SGBD

15

Mircea Musan

SELECT [Id ang], Nume, Prenume, Functii.Functia,


[Data incad], Int((Date()-[Data incad])/365)
AS Vechime, [Sal incad]
FROM Functii INNER JOIN Angajati
ON Functii.[Cod fct] = Angajati.Functia;

Ex. 6: Se cere o situaie similar celei precedente, doar c, n acest caz se cer acei
angajai care sunt de profesie inginer sau muncitor, au vechime de pn n 4 ani n
cmpul muncii, iar, salariul este peste media pe economie (considerm aceast medie
ca fiind 1250 lei).

SELECT Angajati.[Id ang], Angajati.Nume,


Angajati.Prenume, Functii.Functia,
Angajati.[Data incad],
Int((Date()-[Data incad])/365) AS [Vechime in
munca], Angajati.[Sal incad]
FROM Functii INNER JOIN Angajati
ON Functii.[Cod fct] = Angajati.Functia
WHERE Int((Date()-[Data incad])/365)<4 AND
Angajati.[Sal incad]>=1250 AND
(Angajati.Functia='ing' Or Angajati.Functia='mct')
ORDER BY Angajati.Functia;

Ex. 7: Se va reface enunul anterior, astfel nct, va exista posibilitatea afirii unei
liste a acelor angajai care sau au sub 4 ani vechime, sau au salariul peste medie i
sunt de profesie inginer sau muncitor.

Curs 1 SGBD

16

Mircea Musan

SELECT Angajati.[Id ang], Angajati.Nume,


Angajati.Prenume, Functii.Functia,
Angajati.[Data incad],
Int((Date()-[Data incad])/365) AS [Vechime in
munca], Angajati.[Sal incad]
FROM Functii INNER JOIN Angajati
ON Functii.[Cod fct] = Angajati.Functia
WHERE (Angajati.[Sal incad]>=1250
AND (Angajati.Functia='ing' Or Angajati.Functia='mct'))
OR Int((Date()-[Data incad])/365)<4
ORDER BY Angajati.Functia;

Ex. 8: O list cu numrul de angajai, maximul salarial, media salarial general i


valoarea total a fondului de salarii.

SELECT Count([Id ang]) AS [Numar angajati],


Max([Sal incad]) AS [Maxim salarial],
Min([Sal incad]) AS [Minim salarial],
Avg([Sal incad]) AS [Media salariala],
Sum([Sal incad]) AS [Fond salarii]
FROM Angajati;

Ex. 9: Aceleai cerine ca n interogarea anterioar, dar, situaia se cere a se obine pe


fiecare funcie n parte. Astfel de cereri se numesc cereri de totalizare sau de grupare
i se activeaz prin butonul

Curs 1 SGBD

17

Mircea Musan

SELECT Functii.Functia,
Count(Angajati.[Id ang]) AS [Numar angajati],
Max(Angajati.[Sal incad]) AS [Maxim salarial],
Min(Angajati.[Sal incad]) AS [Minim salarial],
Sum(Angajati.[Sal incad]) AS [Fond salarii]
FROM Functii INNER JOIN Angajati
ON Functii.[Cod fct] = Angajati.Functia
GROUP BY Functii.Functia;

Ex. 10: S se refac interogarea anterioar astfel nct n list s apar i acele funcii
existente n nomenclatorul de funcii, dar, pentru care nu sunt nregistrai angajai. Se
va face o sortare descresctoare dup fondul de salarii.

SELECT Functii.Functia,
Count(Angajati.[Id ang]) AS [Numar angajati],
Max(Angajati.[Sal incad]) AS [Maxim salarial],
Min(Angajati.[Sal incad]) AS [Minim salarial],
Sum(Angajati.[Sal incad]) AS [Fond salarii]
FROM Functii LEFT JOIN Angajati
ON Functii.[Cod fct] = Angajati.Functia
GROUP BY Functii.Functia;

Ex. 11: Date complete (Id ang, Nume, Prenume, Data nast, CI, Adresa, Functia (n
denumirea sa complet), studiile aferente respectivei funcii, Data incad i Sal incad).
Lista se va da n ordine alfabetic a angajailor.

SELECT Angajati.[Id ang], Nume, Prenume, [Data nast],


CI, Adresa, Functii.Functia, Studii
FROM Functii INNER JOIN
(Angajati INNER JOIN [Date personale]
ON Angajati.[Id ang] = [Date personale].[Id ang])

Curs 1 SGBD

18

Mircea Musan

ON [Cod fct] = Angajati.Functia


ORDER BY Nume, Prenume;

Ex. 12: Aceleai cerine ca la interogarea anterioar, dar cerinele s fie pentru o
anumit categorie de funcie, ce va fi dat de la tastatur n momentul rulrii
interogrii (ca parametru).

SELECT Angajati.[Id ang], Nume, Prenume, [Data nast],


CI, Adresa, Functii.Functia, Studii
FROM Functii INNER JOIN
(Angajati INNER JOIN [Date personale]
ON Angajati.[Id ang] = [Date personale].[Id ang])
ON [Cod fct] = Angajati.Functia
WHERE Functii.Functia=[Introduceti o functie:]
ORDER BY Nume, Prenume;

Ex. 13: Aceleai cerine ca la interogarea precedent, dar, pentru un anumit angajat
dat prin codul su de la tastatur (ca parametru).

SELECT Angajati.[Id ang], Nume, Prenume, [Data nast],


CI, Adresa, Functii.Functia, Studii
FROM Functii INNER JOIN
(Angajati INNER JOIN [Date personale]
ON Angajati.[Id ang] = [Date personale].[Id ang])
ON [Cod fct] = Angajati.Functia
WHERE Angajati.[Id ang]=[Dati un cod de angajat:]
ORDER BY Nume, Prenume;

Ex. 14: Se cere o list cu toi copii salariailor, i anume: codurile angajailor, numele
lor de familie, iniiala prenumelui angajatului (ca si tat de copii) i prenumele
copiilor.

Curs 1 SGBD

19

Mircea Musan

SELECT [Id ang] AS [Cod angajat],


Nume AS [Nume familie],
LEFT(Prenume,1)+'.' AS [Intiala tata],
[Copii angajati].Prenume AS [Prenume copil]
FROM Angajati INNER JOIN [Copii angajati]
ON Angajati.[Id ang] = [Copii angajati].[Cod ang];

Ex. 15: O situaie cu angajaii din firm (codul, numele i prenumele lor) cu numrul
de copii ai fiecruia i suma total obinut din alocaiile acestora, n cazul angajailor
ce au copii.

SELECT [Id ang], Nume, Prenume,


Count([Cod ang]) AS [Numar copii]
Sum(Alocatie) AS [Valoare din alocatii]
FROM Angajati INNER JOIN [Copii angajati]
ON Angajati.[Id ang] = [Copii angajati].[Cod ang]
GROUP BY [Id ang], Nume, Prenume;

Observaie: Dac se dorete o situaie care s includ o list complet, cu toi


angajaii, indiferent c acetia au sau nu copii, se modific interogarea anterioar
astfel nct n loc de INNER JOIN se va scrie LEFT JOIN.
Ex. 16: Interogri de modificare. Toate salariile de ncadrare ale angajailor se mresc
cu 10%.

Curs 1 SGBD

20

Mircea Musan

UPDATE Angajati
SET [Sal incad] = [sal incad]+[sal incad]*10/100;

sau

UPDATE Angajati
SET [Sal incad] = [sal incad]*1.1;

Ex. 17: Toate salariile de ncadrare ale sufer modificri cu un anumit procent dat de
la tastatur.

UPDATE Angajati
SET [Sal incad] = [sal incad]+[sal incad]*[Introduceti
un procent de modificare salariala:]/100;

Ex. 18: Toate salariile unei anumite categorii de angajai se modific cu un anumit
procent. Categoria de funcii i procentul de modificare se dau de la tastatur.

UPDATE Angajati
SET [Sal incad] = [sal incad]+[sal incad]*[Introduceti
un procent de modificare salariala:]/100
WHERE Functia=[Introduceti o categorie de functii:];

Ex. 19: Salariul unui anumit angajat, dat prin codul su se modific cu un anumit
procent.

Curs 1 SGBD

21

Mircea Musan

UPDATE Angajati
SET [Sal incad] = [sal incad]+[sal incad]*[Introduceti
un procent de modificare salariala:]/100
WHERE [Id ang]=[Introduceti un cod angajat:];

Ex. 20: Interogri de tergere. Se terg din baza de date acei angajai care au mplinit
vrsta de pensionare, adic 60 de ani.
Indicaie: Aceast interogare presupune tergerea tuturor angajailor care au ndeplinit
respectivul criteriu, mpreun cu datele lor personale i copii lor. Pentru aceasta
trebuie intrat n relaia realizat pe baza de date. Apoi, se alege relaia ntre tabelele
Angajati si Date personale i se realizeaz tergere n cascad pe cele dou tabele,
prin bifarea opiunilor Enforce Referential Integrity, i ulterior Cascade Delete
Related Records.
Operaiunea anterior se repet n mod similar i pentru tabelele Angajati i Copii
angajati.

DELETE Angajati.*
FROM Angajati INNER JOIN [Date personale]
ON Angajati.[Id ang] = [Date personale].[Cod ang]
WHERE Int((Date()-[Data nast])/365)>=60;

Observaie: n cazul interogrilor de modificare, respectiv, tergerea setarea unui


astfel de tip de interogare se face n modul Query Design view prin click dreapta pe
zona de lucru a interogrii i selectarea opiunii Update Query pentru cea de
modificare, respectiv, Delete Query pentru cea de tergere.

Curs 1 SGBD

22

Mircea Musan

Acelai lucru se mai poate realiza i folosind meniul Query, activ dup
deschiderea unei interogri, i comutarea din opiunea interogri de selecie
, care este de altfel i forma implicit de interogare, n varianta de
interogare
interogri de tergere.

, pentru interogri de modificare, sau

, pentru

c) Se va continua aplicaia nceput folosind elemente de construcie a formularelor i


de transmitere a rezultatelor obinute prin intermediul rapoartelor.

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