Sunteți pe pagina 1din 236

ZENOVIC GHERASIM

PROGRAMARE I BAZE DE DATE

Universitatea SPIRU HARET

Descrierea CIP a Bibliotecii Naionale a Romniei


GHERASIM, ZENOVIC
Programare i baze de date / Zenovic Gherasim.
Bucureti: Editura Fundaiei Romnia de Mine, 2005
236p.; 23,5cm
Bibliogr.
ISBN: 973-725-096-6
159.91(075.8)

Editura Fundaiei Romnia de Mine, 2005

Redactor: Constantin FLOREA


Tehnoredactor: Vasilichia IONESCU
Georgiana (GRJOI) GHEORGHE
Coperta: Maria ANDRONIE
Bun de tipar: 16.12.2004; Coli tipar: 14,75
Format: 16/70100
Editura i Tipografia Fundaiei Romnia de Mine
Splaiul Independenei nr.313, Bucureti, s. 6, O P. 83
Tel./Fax: 410 43 80; www.spiruharet.ro
e-mail: contact@edituraromaniademaine.ro

Universitatea SPIRU HARET

UNIVERSITATEA SPIRU HARET

ZENOVIC GHERASIM

PROGRAMARE
I BAZE DE DATE

EDITURA FUNDAIEI ROMNIA DE MINE


Bucureti, 2005

Universitatea SPIRU HARET

Universitatea SPIRU HARET

CUPRINS

Cuvnt nainte ...

1. Dat, informaie i cunotin. Organizarea datelor n vederea prelucrrii


automate cu ajutorul calculatoarelor electronice .
1.1. Conceptele de societate informaional societate a cunoaterii.
Sistem informaional, sistem informatic, sistem bazat pe cunotine.
Dat, informaie i cunotin .
1.2. Noiuni fundamentale utilizate n organizarea datelor ...
1.3. Relaiile dintre date .
1.4. Structuri de date ..
1.5. Modele de date ...

11
15
17
19
22

2. Rezolvarea problemelor economice cu ajutorul programelor pe calculator.


Programare ..
2.1. Despre necesitatea cunoaterii i nsuirii elementelor de baz ale programrii
2.2. Noiuni de baz specifice procesului de prelucrare automat a datelor .
2.3. Noiuni de baz referitoare la programare ..
2.4. Elementele de baz ale programrii orientate pe obiecte ...

25
25
26
28
40

3. Limbajul de programare Visual Basic ..


3.1. Caracteristicile generale ale mediului integrat de dezvoltare Visual Basic
3.2. Componentele de baz ale mediului integrat de dezvoltare Visual Basic ..
3.3. Proiectarea aplicaiilor n limbajul Visual Basic
3.3.1. Fiierul proiect ..
3.3.2. Crearea interfeei aplicaiei ...
3.3.3. Precizarea proprietilor
3.3.4. Scrierea codului
3.3.5. Execuia aplicaiei informatice n Visual Basic
3.4. Elementele limbajului de programare Visual Basic ...
3.4.1. Unele reguli de scriere ..
3.4.2. Tipuri de date
3.4.3. Variabile i constante
3.4.4. Instruciuni Visual Basic ...
3.4.4.1. Construirea expresiilor .
3.4.4.2. Operatori Visual Basic .
3.4.4.3. Funcii Visual Basic .
3.4.4.4. Implementarea structurilor de control al execuiei unui program
3.4.5. Crearea fiierelor n limbajul Visual Basic ...
3.4.6. Exemplu de aplicaie informatic n limbajul Visual Basic .

44
44
45
49
49
51
55
58
60
63
63
64
65
67
67
67
68
70
72
74

11

Universitatea SPIRU HARET

4. Teoria bazelor de date i a sistemelor de gestiune a bazelor de date ..


4.1. Organizarea datelor n baze de date. Sisteme de gestiune a bazelor de date ..
4.2. Generaii de baze de date i de sisteme de gestiune a bazelor de date asociate
4.3. Baze de date relaionale ..
4.4. Baze de date orientate obiect ..

80
80
87
89
93

5. Sistemul de gestiune a bazelor de date Microsoft Access .


5.1. Prezentarea sistemului Microsoft Access
5.2. Cunoaterea mediului de lucru Microsoft Access ...
5.2.1. Definirea componentelor principale ale SGBD Microsoft Access ...
5.2.2. Deschiderea i nchiderea unei baze de date n Microsoft Access ...
5.3. Tabelul
5.3.1. Crearea unui tabel .
5.3.2. Realizarea relaiilor ntre tabele
5.4. Interogarea ..
5.5. Formularul ..
5.6. Raportul ..
5.7. Paginile (Pages) ..
5.8. Macroinstruciunea (Macro-ul) ..
5.9. Modulul (Module) ..
5.9.1. Problematica general ...
5.9.2. Carateristicile limbajului VBA .
5.9.3. Crearea unui modul standard i a unei proceduri Sub ..
5.10. Utilizarea evenimentelor ntr-o baz de date

99
99
103
103
105
108
108
114
118
131
140
143
148
153
153
154
155
156

6. Limbajul structurat de interogare, SQL ...


6.1. Noiuni de baz referitoare la SQL .
6.2. Blocurile componente ale operaiei de regsire a datelor: SELECT i FROM
6.3. Operatori utilizai n SQL ...
6.3.1. Operatorii aritmetici ..
6.3.2. Operatorii de comparaie ..
6.3.3. Operatorii caracter
6.3.4. Operatorii logici
6.3.5. Operatorii pentru mulimi .
6.3.6. Ali operatori, IN i BEETWEEN
6.4. Funcii n SQL
6.4.1. Funcii pentru calculul totalurilor .
6.4.2. Funcii dedicate pentru dat calendaristic i or .
6.4.3. Funcii aritmetice ..
6.4.4. Funcii caracter .
6.5. Clauze utilizate n SQL ..
6.6. Jonciuni .
6.7. Instruciuni de manipulare a datelor ...
6.8. Crearea i ntreinerea tabelelor ..

159
159
159
161
161
162
162
163
163
164
164
164
165
165
166
167
168
169
171

7. Elemente fundamentale ale serverelor de baze de date ...


7.1. Arhitectura Client/Server
7.2. Serverul de baze de date Microsoft SQL Server
7.3. Noiuni privind limbajul Transact_SQL pentru Microsoft SQL Server .
7.4. Serverul de baze de date Oracle .
7.5. Caracterizarea limbajului PL/SQL pentru serverul de baze de date Oracle ...

173
173
176
180
188
191

Universitatea SPIRU HARET

7.6. Noiuni privind utilitarul SQL*Plus din compunerea serverului de baze


de date Oracle .
7.7. Alte servere de baze de date ...

194
196

8. Baze de date distribuite ...


8.1. Despre necesitatea bazelor de date distribuite n aplicaiile economice .
8.2. Concepte fundamentale ..
8.3. Fragmentarea datelor n bazele de date distribuite .
8.4. Gestiunea tranzaciilor
8.5. Protecia bazelor de date distribuite ...
8.6. Baze de date online .
8.6.1. Problematica general ..
8.6.2. Pagini Web statice i dinamice .
8.7 Visual Basic.NET i bazele de date distribuite ...

197
197
197
203
205
207
212
212
214
216

9. Baze de date n tehnologii avansate ...


9.1. Bazele de date deductive
9.2. Bazele de date multidimensionale ..
9.3. Bazele de date multimedia ..
9.4. Bazele de date relaionale orientate obiect .

219
219
221
223
225

Bibliografie

227

Anex: Abrevieri i noiuni utilizate n lucrare .

231

Universitatea SPIRU HARET

Universitatea SPIRU HARET

Cuvnt nainte

Aceast lucrare este destinat studenilor facultilor economice care studiaz disciplina
Informatic de gestiune (Limbaje i SGBD). Cartea poate fi util i studenilor din alte
faculti care studiaz limbaje de programare i sisteme de gestiune a bazelor de date. n
acelai timp, ea poate fi utilizat ca punct de plecare pentru revizuirea i completarea
cunotinelor de ctre absolvenii de facultate care urmeaz cursurile de masterat.
Parcurgerea crii presupune ca studentul s-i fi nsuit deja cursurile de Informatic
de gestiune (Bazele informaticii) i Birotic.
Lucrarea conine noiunile i conceptele de baz din teoriile moderne ale programrii i
ale bazelor de date, precum i elementele fundamentale privind aplicarea acestora n domeniul
economic prin folosirea limbajului de programare Visual Basic, a sistemului de gestiune a
bazelor de date relaionale Microsoft Access i a limbajului structurat de interogare SQL. n
carte au fost incluse mai puine aplicaii economice complexe, deoarece studentul are la
dispoziie lucrarea Aplicaii economice n Visual Basic i Access, aprut n Editura Fundaiei
Romnia de Mine, n anul 2003. De asemenea, n acest volum au fost cuprinse problemele
de baz ale serverelor de baze de date, ale bazelor de date distribuite i ale bazelor de date n
tehnologii avansate, inclusiv ale depozitelor de date ca o trecere de la domeniul prelucrrilor
tranzacionale on-line (OLTP) ctre cel al prelucrrilor analitice on-line (OLAP) i o
introducere pentru disciplina care va fi parcurs n anii urmtori de studii Sisteme informatice
de asistare a deciziei. De altfel, nsuirea cunotinelor de la cursul de Informatic de gestiune
(Limbaje i SGBD) condiioneaz nelegerea i celorlate cursuri de specialitate Informatic
de gestiune (Proiectarea sistemelor informatice), Auditarea sistemelor informatice i Sisteme
expert de gestiune.
Pentru ntocmirea lucrrii, s-au folosit numeroase referine bibliografice att din
literatura autohton, ct i din cea strin.

Noiembrie 2004

Autorul,

Universitatea SPIRU HARET

10

Universitatea SPIRU HARET

1. DAT, INFORMAIE I CUNOTIN.


ORGANIZAREA DATELOR N VEDEREA PRELUCRRII
AUTOMATE CU AJUTORUL CALCULATOARELOR ELECTRONICE

1.1. Conceptele de societate informaional societate a cunoaterii.


Sistem informaional, sistem informatic, sistem bazat pe cunotine.
Dat, informaie i cunotin
Noiunea de societate informaional (Information Society) descrie o
economie i o societate n care colectarea, stocarea, prelucrarea, transmiterea,
diseminarea i utilizarea informaiilor i cunotinelor, inclusiv dezvoltarea
tehnicilor de comunicaie interactiv, au un rol decisiv. Factorii semnificativi n
aceast dezvoltare sunt: nalta tehnologie (HighTech), industria, lumea lucrului
(Work World), precum i toate formele de cultur n societate. Societatea
informatic este o parte a societii informaionale care folosete progresele
tehnicii de calcul n toate domeniile de activitate economico-social. Societatea
bazat pe cunotine (Knowledge-Based Society) este o parte a societii
informatice care utilizeaz IT&C preponderent pentru prelucrarea datelor sub
form de cunotine. Considernd un nivel superior (pe modelul de dezvoltare n
spiral al societii umane), cel mai cuprinztor concept este cel de societate a
cunoaterii (Knowledge Society). Societatea cunoaterii este fundamentat pe
acumularea i utilizarea de date sub form de informaii i cunotine la nivel
social. Dup acad. Mihai Drgnescu [11], societatea cunoaterii reprezint mai
mult dect societatea informaional i dect societatea informatic, nglobndu-le
de fapt pe acestea. Societatea cunoaterii folosete piese (pieces) ale cunoaterii.
Societatea informaional are la baz sistemele informaionale, societatea
informatic sistemele informatice, iar societatea bazat pe cunotine se
fundamenteaz pe sistemele bazate pe cunotine (Knowledge-Based Systems).
Sintagma folosit de Romano Prodi, fostul preedinte al Comisiei Europene, este
de economie bazat pe cunotine (Knowledge-Based Economy, KBE); aceast
KBE reprezint cea mai rafinat parte a noii economii (New Economy), prin noua
economie nelegndu-se economia specific societii informaionale societii
cunoaterii (SI - SC).
n Dicionarul explicativ al limbii romne, sistemul este definit ca fiind un
ansamblu de elemente dependente (componente, principii, reguli, relaii etc.) care
formeaz un ntreg organizat, pe baza unui plan prestabilit, cu scopul realizrii unui
anumit obiectiv.
11

Universitatea SPIRU HARET

Sistemul informaional reprezint acel sistem de prelucrare a informaiilor,


mpreun cu resursele organizaionale asociate, cum sunt resursele umane, tehnice
i financiare ce furnizeaz i distribuie informaia. Ierarhia informaional a SI-SC
este prezentat n fig.1.1.
Sistemul informatic reprezint partea automatizat a sistemului informaional
ce realizeaz prelucrarea datelor i informaiilor folosind un sistem de calcul; este
un ansamblu de echipamente i programe pe calculator (software) care asigur
prelucrarea datelor.
Sistemul bazat pe cunotine este o parte a sistemului informatic care
proceseaz cunotine ntr-o cantitate determinant i semnificativ. Dup acad.
Mihai Drgnescu, cunotina este informaie cu neles i informaie care
acioneaz. Cunotina semnific ceea ce este cunoscut. ntr-o alt percepie,
cunotinele sunt informaii dobndite prin instruire (educaie) i practic
(experien). La modul general, datele sunt reprezentate convenional prin numere,
mrimi, relaii etc. i sunt folosite la rezolvarea problemelor sau sunt obinute
printr-o activitate de cercetare. Informaia reprezint elementele de noutate despre
un fenomen, proces etc. Noutatea caracteristic noiunii de informaie este
perceput de utilizator numai n momentul intrrii n contact cu aceast informaie.
Ca urmare, din punct de vedere informatic, datele sunt informaii sau cunotine
reprezentate simbolic i nregistrate n vederea gestionrii (evidenei) i/sau
prelucrrii. Rezultatul prelucrrii este tot o dat care, prin interpretare, se
transform iniial n informaie i apoi (nu ntotdeauna) n cunotin.

SOCIETATEA
CUNOATERII

Fig.1.1. Ierarhia informaional a societii informaionale-societii cunoaterii


12

Universitatea SPIRU HARET

Caracterul de dat, informaie sau cunotin este relativ (adic se schimb


n funcie de contextul ce definete nsuirea de noutate pentru informaie i de
neles i utilitate prin aciune pentru cunotin). De exemplu, eful Georgescu i
d ca sarcin subalternului Ionescu s nregistreze zilnic, pe ore, prezentarea
clienilor la filiala bncii, pentru efectuarea diferitelor operaiuni, pe categorii de
clieni persoane fizice (retail) i persoane juridice (corporate). Ionescu i
desfoar activitatea ntr-un birou la intrarea n sectorul de front-office. El constat
c primii clieni sosii la ora 09.01, la deschiderea bncii, sunt n numr de trei,
dou persoane fizice i o persoan juridic i c ora artat de ceasul electronic din
birou este de 9 i un minut (09.01). 09.01 este o dat pentru c reprezint
informaia nregistrat de ceas despre momentului efecturii primei observaii n
ziua respectiv de ctre Ionescu. Interpretat de Ionescu, data (valoarea de 09.01)
se transform n informaia c ora este de 9 i un minut. n acest fel, Ionescu intr
n posesia unei informaii despre ora sosirii clienilor n data de 2 iulie. Data
calendaristic 2 iulie, nainte de a fi nregistrat de Ionescu, reprezint informaia
de identificare a zilei calendaristice. Aceeai informaie este comunicat i efului
Georgescu. Meticulos, Ionescu ntocmete un tabel cu urmtorul cap de tabel: data,
ora i minutul, numr clieni persoane fizice, numr clieni persoane juridice. n
prima linie a tabelului noteaz: 2 iulie, 09.01, 2, 1, elemente ce reprezint date
(elemente ce i-au pierdut caracterul de noutate pentru Ionescu i Georgescu, dar
care sunt informaii nregistrate sau notate pentru oricare alt utilizator). n ziua de 2
iulie procedeaz la fel cu toi clienii filialei bncii. Pe data de 3 iulie, Ionescu,
constat c la ora 09 i 14 minute sosesc doi clieni persoane fizice. 09.14 iniial
este o dat, ca informaie nregistrat de ceasul electronic, care interpretat de
Ionescu, devine informaie. Ionescu comunic imediat informaiile despre dinamica
sosirii clienilor bncii efului su, dar nu are timp s le nregistreze n tabel n ziua
respectiv, astfel nct, pn a doua zi, cnd le nregistreaz, acestea i pierd
nsuirea de noutate, transformndu-se n cunotine despre dinamica sosirii zilnice
a clienilor bncii, cunotine ce sunt utile pentru perfecionarea serviciilor
asigurate de personalul sectorului de front-office al filialei bncii. Pe data de 4
iulie, Ionescu nregistreaz, nainte de deschiderea filialei bncii, pe a noua linie
din tabel: 3 iulie, 09.14, 2, 0, (similar, pe liniile urmtoare) elemente ce reprezint
date, cunotine nregistrate sau notate. Tot pe data de 4 iulie, Ionescu nregistreaz
n tabel datele ce reprezint informaiile aferente zilei respective: 4 iulie, 09.08, 2,
3, elemente ce sunt date ce reprezint informaii nregistrate sau notate. La sfritul
lunii, Ionescu prezint efului Georgescu tabelul solicitat cu dinamica sosirii
zilnice a clienilor bncii, mpreun cu urmtoarele elemente de sintez: valorile
statistice procentuale clieni persoane fizice clieni persoane juridice i cu un
grafic cu numrul de clieni sosii pe zile i ore. Tabelul ntocmit de Ionescu
conine datele obinute prin nregistrarea informaiilor i/sau cunotinelor despre
dinamica sosirii clienilor filialei bncii i datele statistice obinute prin prelucrarea
acestora, reprezentate valoric sau sub form de grafic. Interpretate de Georgescu,
la prima citire, aceste date devin informaii, dup care documentul ce conine
tabelul, valorile statistice privind categoriile de clieni i graficul sosirii clienilor
cu date despre ora i minutul sosirii acestora este introdus ntr-un dosar (folder).
Este important de precizat c dosarul cu filele documentului conine date care citite
acum, reprezint cunotine despre dinamica sosirii clienilor. La sfritul anului,
13

Universitatea SPIRU HARET

Ionescu i folosete abilitile n utilizarea instrumentelor birotice oferite de


calculatorul electronic i ntocmete o situaie de sintez cu dinamica sosirii
clienilor pentru semestrul II al anului. Concluziile rezultate din sintez reprezint,
n primul moment, informaii att pentru Ionescu, ct i pentru eful lui, Georgescu,
dup care devin cunotine nregistrate sub form de date n documentul de sintez.
Delimitarea ntre cele trei concepte nrudite informaii, cunotine i date este fundamental pentru clarificrile conceptuale ale SI-SC. Sistemele de calcul
electronic (calculatoarele electronice) au prelucrat, nc de la apariia lor, date care,
uneori, s-au prezentat sub form de informaii, alteori sub form de cunotine. Se
apreciaz [51] c n ultimii 20 de ani preocuprile privind mbuntirea fluxului de
informaii n derularea afacerilor au determinat generalizarea utilizrii conceptului
de informaie. La acest lucru au contribuit, n principal, evoluiile tehnologice care
au fcut posibil nregistrarea masiv a informaiilor n baze de date, folosind
sistemele de calcul, trecndu-se astfel direct de la conceptul de informaie la
conceptul de dat i reciproc, prin obinerea de noi informaii prin interpretarea
datelor nregistrate i prelucrate prin utilizarea sistemelor de calcul.
Valoarea informaiei const n potenialul acesteia de a fi transformat n
cunoatere [51], prin interpretarea la nivel de individ sau grup de indivizi. Atunci
cnd o persoan interpreteaz informaia n aa fel nct s o poat utiliza,
informaia se transform n cunoatere. De exemplu, n cazul unui agent de burs
ce urmrete evoluia indicilor bursieri, informaia pe care o recepteaz prin citirea
punctajelor respective (date nregistrate electronic) i asigur cunoaterea pe baza
creia ia decizia de aciune pentru clientul su.
Cunoaterea reprezint un amestec dinamic de experiene sociale, valori
spirituale i informaii contextuale, precum i experien personal profesionalizat
ce formeaz cadrul de evaluare i ncorporare de noi experiene i informaii.
Cunoaterea i are nceputurile i se folosete n mintea cunosctorilor. n
organizaii, adesea, cunoaterea este materializat nu numai prin datele din
documente sau arhive, ci i n cutumele, rutina, procesele, practicile i normele
organizaionale.
Acumularea de informaii i cunotine conduce, la nivel social, la cunoatere
(n vederea gestionrii, prelucrrii i utilizrii). Cunoaterea reprezint informaie
tezaurizat n experiena unui individ sau a unei colectiviti. Ceea ce are mai
valoros experiena uman este depozitat, n acelai timp, sub form de date pe
diferitele mijloace de stocare, care, interpretate, genereaz noi informaii ce
mbogesc cunoaterea ca proces social.
Cunoaterea nu reprezint o creaie original, ci este procesul de descoperire
treptat a complexitii universului real reprezentat de realitatea nconjurtoare,
natural i social, i de reconfigurare, re-relaionare continu a componentelor
acesteia descoperite anterior cu informaii nou primite, n ncercarea de a se ajunge
la cunoaterea ntregului pe care l reprezint realitatea aceasta att de complex.
Produsele anterioare ale cunoaterii devin elemente componente ale unei cunoateri
din ce n ce mai vaste [51].
Oceanul informaional actual necesit nu numai eforturi de stocare a
datelor, informaiilor i cunotinelor, ci mai cu seam de selecie, la momentul
oportun, a celor mai relevante i utile dintre acestea.
14

Universitatea SPIRU HARET

Aa cum s-a artat, societatea cunoaterii reprezint mai mult dect


societatea informaional i dect societatea informatic, nglobndu-le de fapt pe
acestea. Cunoaterea este informaie cu neles i informaie care acioneaz. De
aceea, societatea cunoaterii nu este posibil dect inclus n societatea informaional i nu poate fi separat de aceasta (fig.1.1). n acelai timp, ea este mai
mult dect societatea informaional prin rolul major care revine informaieicunoatere n societate. Cel mai bun neles al societii cunoaterii este probabil
acela de societate informaional i a cunoaterii [11].
Societatea cunoaterii are n vedere [11]:
extinderea i aprofundarea cunoaterii tiinifice i a adevrului despre
existen;
utilizarea i managementul cunoaterii existente sub forma cunoaterii
tehnologice i organizaionale;
producerea de cunoatere tehnologic nou prin inovare;
diseminarea fr precedent a cunoaterii ctre toi cetenii prin mijloace
noi, folosind cu prioritate Internetul i cartea electronic; utilizarea metodelor de
nvare prin procedee electronice (e-learning).
n societatea cunoaterii se formeaz o nou economie (New Economy sau
e-conomy) care cuprinde i economia Internet sub forma afacerilor electronice
(e-business). De aceea, economia nou este economia societii informaionale i a
cunoaterii.
n concluzie, informatica este tiina prelucrrii automate a datelor.
Informatica de gestiune este acea parte a informaticii care prelucreaz automat
datele de eviden i control vehiculate n cadrul unei organizaii economice. Ca
urmare, esena tuturor sistemelor informatice prezentate mai sus este gestionarea
datelor care, interpretate de factorul uman, devin uneori, aa cum s-a artat n acest
paragraf, informaii sau cunotine.
1.2. Noiuni fundamentale utilizate n organizarea datelor
Datele sunt stocate n memoria intern i memoria extern a oricrui sistem
de calcul. Organizarea datelor se refer la procesul de definire i structurare a
datelor n colecii de date, precum i la realizarea legturilor ntre elementele unei
colecii i ntre coleciile de date. Organizarea datelor se proiecteaz n scopul
regsirii automate a acestora dup diverse criterii.
Obiectivele organizrii datelor sunt, n principal, urmtoarele:
timp de acces minim la date;
apariia o singur dat a datelor n sistem;
spaiu de memorie intern i extern pentru date ct mai mic;
reflectarea prin organizare a tuturor legturilor dintre procesele economice
pe care aceste date le reprezint;
posibilitatea modificrii structurii datelor i a relaiilor dintre date fr a
produce schimbri n programele care le gestioneaz.
Tehnicile de organizare a datelor n colecii de date sunt: fiierul de date i
baza de date.
15

Universitatea SPIRU HARET

Fiierul de date reprezint o colecie de date memorat pe un suport tehnic


ntr-o succesiune de nregistrri. Accesul la o nregistrare din fiierul de date se
obine prin parcurgerea nregistrrilor fiierului n secvena n care au fost stocate
(acces secvenial) sau pe baza unei chei de identificare care s permit regsirea
rapid a nregistrrii (acces direct). Accesul direct se obine prin indexarea
fiierelor, adic prin crearea unor tabele de indeci care pentru fiecare valoare a
atributului cheie primar (atribut care permite identificarea n mod unic a unei
nregistrri din fiier) s conin adresa corespunztoare (n cadrul fiierului) a
fiecrei nregistrri.
Sistemele informatice motenite foloseau cu preponderen organizarea
datelor n fiiere de date. Aceast organizare a datelor n fiiere de date prezint
urmtoarele dezavantaje [18]:
redundan mare (stocarea acelorai date n mai multe fiiere);
acces dificil la date; exploatarea multiutilizator a datelor necesit operaii
suplimentare de sortare, fuziune, ventilare etc.;
izolarea datelor, adic nu pot fi realizate programe pe calculator care s
acceseze datele ntr-o manier global;
actualizarea datelor, prin adugare, modificare, tergere, genereaz conflicte
atunci cnd mai muli utilizatori doresc s modifice simultan aceleai date;
dependena programelor fa de date; deoarece datele se descriu n
programe, modificrile din structura datelor oblig la efectuarea de corecturi n
programele pe calculator;
problemele neprevzute nu obin rspunsuri rapide;
fiecare dat este descris independent n toate fiierele n care apare; dac
ntr-un fiier se modific formatul i valoarea unei date, acea modificare nu se
transmite automat, pentru aceeai dat, n toate fiierele de date; ca urmare, pentru
aceeai dat se creeaz posibilitatea apariiei de valori diferite n fiiere diferite
(inconsistena datelor);
nu se menine integritatea datelor, atunci cnd fiierul este realizat cu
limbaje diferite.
Creterea necesarului de date, informaii i cunotine pentru agenii
economici i progresele tehnologiilor informaiei i ale comunicaiilor (IT&C) au
determinat organizarea datelor n baze de date (teoria bazelor de date este expus
pe larg n capitolul 4 al lucrrii). O baz de date este un fiier format din
nregistrri (records) sau rnduri, fiecare coninnd cmpuri (fields) sau coloane i
o mulime de operaii de cutare, sortare, recombinare etc.
n proiectarea i nelegerea unui sistem informatic, organizarea datelor
reprezint o etap fundamental care presupune:
1) definirea, structurarea, ordonarea i gruparea datelor n colecii de date
omogene;
2) stabilirea legturilor ntre date, ntre elementele unei colecii de date i
ntre coleciile de date, dup o ierarhie bine precizat;
3) memorarea datelor pe un suport informaional prelucrabil ntr-un sistem
de calcul.
Noiunile fundamentale folosite n organizarea datelor sunt entitatea,
atributul i valoarea. ntre acestea exist legturi de interdependen astfel:
o entitate are mai multe atribute, iar atributele au o anumit mulime de valori;
16

Universitatea SPIRU HARET

entitatea reprezint un obiect concret sau abstract definit prin proprietile sale;
orice proprietate a unui obiect este exprimat printr-o pereche (ATRIBUT,
VALOARE).
Exemplul a) - materialul M are lungimea mare unde lungimea este
atributul, iar mare este valoarea. (LUNGIMEA, MARE);
Exemplul b) un client persoan fizic al unei societi comerciale poate fi
reprezentat prin mulimea de perechi: (NUME, POPESCU); (PRENUME, ION);
(LOCALITATE, BUCURETI); (TELEFON, 0213211231); (BANCA, BCR);
(CONT_BANCAR, RO15RZBR0000070002170022).
Mulimea atributelor M_ATR = (NUME, PRENUME, LOCALITATE,
TELEFON, BANCA, CONT_BANCAR) poate fi asociat mai multor clieni ai
societii comerciale. Ca urmare, atributele nu caracterizeaz doar o entitate, ci o
clas de entiti care este denumit entitate de grup. Elementele unei entiti de
grup prezint drept caracteristic aceeai mulime de atribute. Ca urmare, entitile
din cadrul unei entiti de grup sunt de acelai tip, definindu-se astfel un tip de
entitate.
Atributul este denumit i cmp sau caracteristic. Un cmp poate lua o
anumit clas de valori, fiind caracterizat de natura acestei clase de valori (de
exemplu, atributul este numeric dac ia valori numerice, atributul este alfanumeric
dac clasa de valori este reprezentat de iruri de caractere etc).
Atributele compuse se obin prin concatenarea mai multor atribute elementare.
Atributul care identific n mod unic o entitate se numete atribut-cheie.
Caracteristicile care nu identific n mod unic o entitate se numesc atribute
non-cheie.
Noiunea de dat a fost prezentat pe larg n paragraful precedent.
Din punctul de vedere al compunerii, datele se clasific n:
date elementare sau scalare, adic data nu se mai divide n raport cu
informaia sau cunotina pe care o reprezint;
date compuse, adic formate din mai multe date elementare.
Din punct de vedere logic, o dat este definit prin identificator, atribut i
valoare.
De exemplu:
MATERIAL identificator
PRET_UNITAR atribut
120000 valoare
Din punct de vedere fizic, unei date i corespunde o zon de memorie de o
anumit mrime care se afl la o adres absolut.
1.3. Relaiile dintre date
ntre date exist relaii sau legturi diferite. ntre datele care aparin unor
tipuri de entiti se pot realiza dou feluri de legturi:
prima legtur se exprim prin apartenena datelor la entitate;
a doua legtur se definete pentru entitile de acelai tip sau de tipuri
diferite.
17

Universitatea SPIRU HARET

Exemple:
a) Dac se noteaz cu SALARIATI mulimea salariailor unei societi
comerciale, ntre datele a1 i a2 ce aparin acestei mulimi, se pot defini relaii de
tipul:
a1 are aceeai funcie de ncadrare cu a2;
a1 are acelai salariu cu a2;
a1 are aceeai vrst cu a2 etc.
b) Se consider dou clase de entiti: PRODUSE_BANCARE i CLIENTI.
ntre datele acestor dou clase de entiti se pot defini relaiile:
un produs bancar poate fi achiziionat de unul sau mai muli clieni ai bncii;
un client al bncii poate achiziiona unul sau mai multe produse bancare.
Relaia binar
Dac se noteaz cu F mulimea furnizorilor unei societi comerciale, se
afirm c relaia ofer acelai produs cu asociaz fiecrui furnizor din mulimea
F pe toi cei care ofer acelai produs, cu condiia s fac parte din mulimea F.
Acest aspect poate fi pus n eviden prin intermediul unei mulimi de perechi
ordonate (f1, f2) cu proprietatea c elementelor f1 le sunt asociate elementele f2
prin relaia ofer acelai produs cu.
L = {(f1, f2) FxF/f1,f2 F i f1 ofer acelai produs cu f2}.
Se face meniunea c folosirea notaiilor F i L pentru definiiile prezentate
mai jos este realizat cu scop didactic i nu reduce generalitatea acestor definiii.
Definiie. Fie F o colecie oarecare de date nevid. Se numete relaie binar
pe F o submulime L a produsului cartezian F x F care satisface o proprietate
(legtur).
Prin notaia (f1, f2) L se nelege c f1 este n relaia sau legtura L cu f2
sauf1 este asociat lui f2 prin relaia L. Se folosete i notaia f1 L f2.
Definiie. Fie F o mulime nevid de date. O relaie binar L definit pe F se
numete relaie de echivalen dac este reflexiv, simetric i tranzitiv.
a. Relaia sau legtura L definit pe mulimea F este reflexiv dac pentru
oricare f1F, se realizeaz f1 L f1.
b1. Relaia L definit pe mulimea F este simetric dac () f1, f2 F i
f1 L f2 implic f2 L f1.
b2. Relaia L definit pe mulimea F este antisimetric dac () f1, f2 F,
f1 L f2 i f2 L f1 implic f1=f2.
c. Relaia L definit pe F este tranzitiv dac () f1, f2, f3 F cu proprietatea
c f1 L f2 i f2 L f3 atunci rezult c f1L f3.
Definiie. Fie F o colecie de date. Dac pentru () f1, f2, F, cu proprietatea
c f1 L f2 sau f2 L f1 se afirm c relaia dintre elementele coleciei este relaie de
ordine total.
Definiie. Fie F o colecie de date. Dac o relaie binar L, definit pe F este
reflexiv, antisimetric i tranzitiv, atunci relaia L este o relaie de ordine.
18

Universitatea SPIRU HARET

Definiie. Dac o relaie binar L, definit pe F este reflexiv i tranzitiv,


atunci relaia L este o relaie de preordine.
1.4. Structuri de date
Structura de date este o colecie de date ntre care s-a stabilit un ansamblu de
relaii pe baza crora funcioneaz un mecanism de selecie i identificare a
componentelor. Altfel exprimat, o structur de date reprezint un anumit
aranjament al datelor atunci cnd sunt stocate n memoria unui calculator. Datele
din structurile de date pot fi manipulate cu ajutorul algoritmilor, n mai multe
moduri, sortnd datele sau cutnd un anumit element. Structurile de date, n afara
situaiei de instrumente de programare, servesc pentru stocarea i modelarea unor
date din universul real.
Mulimea de date, asociat structurii de date, poate cuprinde datele unui tip
sau ale mai multor tipuri de entiti. Componentele structurii se identific prin
nume sau prin poziia pe care o dein n structur n raport cu ordinea specificat.
n situaia n care pentru localizarea unei componente se parcurg toate
celelalte componente dinaintea ei, structura are acces secvenial. n schimb, atunci
cnd o component poate fi selectat fr a ine seama de celelalte, structura are
acces direct.
Componentele unei structuri de date sunt date elementare sau sunt ele nsele
structuri de date.
Asupra unei structuri de date se pot efectua urmtoarele operaii:
crearea (nseamn memorarea datelor iniiale pe suportul de stocare);
actualizarea (schimbarea strii structurii prin adugare, modificare sau
tergere de elemente, modificarea valorii sau relaiilor dintre elemente);
consultarea (accesarea componentelor structurii de date);
sortarea (aranjarea elementelor unei structuri de date n conformitate cu
criterii prestabilite);
ventilarea (divizarea unei structuri de date n dou sau mai multe structuri
de date);
fuzionarea (formarea unei structuri de date noi din dou sau mai multe
structuri de date) etc.
Structurile de date care prezint aceeai organizare i asupra crora se
execut aceleai operaii formeaz un anumit tip de structuri de date. Tipul de
structur de date reprezint o mulime ordonat de date ntre care s-au stabilit
anumite relaii i pentru care realizarea operaiilor se efectueaz cu un grup de
operatori de baz care au o anumit semantic.
Dac se ia n considerare tipul componentelor, structurile de date se clasific n:
omogene (componentele sunt de acelai tip);
eterogene (componentele au tipuri diferite).
Cnd structura de date se descompune n structuri de date de acelai tip,
atunci structura obinut este denumit recursiv.
Dup nivelul de structurare al datelor, se deosebesc:
structura fizic (structura de date care se refer la modul de implementare
pe supori tehnici informaionali);
19

Universitatea SPIRU HARET

structura logic (modul de ordonare a datelor i modul de folosire a


operatorilor de tratare a datelor).
Dac se ia n considerare posibilitatea modificrii valorilor i a structurilor,
se identific:
structuri statice pe tot parcursul existenei acestora prezint acelai numr
de componente i n aceeai ordine (adic au cardinalitate finit, prin cardinalitate
nelegnd numrul elementelor mulimii);
structuri dinamice (permit modificarea valorilor i a structurii de date prin
aplicarea unor operatori; aceste structuri de date au cardinalitate infinit deoarece
prezint un numr nelimitat de componente).
O structur logic poate fi implementat att ca structur static, ct i ca
structur dinamic. Exist ns i structuri logice ce nu pot fi implementate static.
n organizarea datelor trebuie definite att structura logic, ct i cea fizic, deorece
cele dou nivele se condiioneaz reciproc.
Din punctul de vedere al tipului de structur de date, se deosebesc:
structura de date punctual (o entitate de grup izolat);
structura de date liniar (cnd exist o relaie de ordine total ntre
elementele coleciei de date; primul element nu are predecesori; ultimul element nu
are succesori; ntre date se stabilesc relaii de tipul unu-la-unu; cnd ultimul
element coincide cu primul element, structura liniar devine structur circular
sau inelar);
structura de date arborescent (este denumit i structur de date ierarhic
sau descendent; acest tip de structur de date se definete cnd exist o relaie de
ordine ntre elementele coleciei de date; exist un element unic care este denumit
nodul rdcin (root node);orice nod diferit de nodul rdcin prezint un
predecessor imediat unic; orice nod care nu este terminal prezint un numr finit
de succesori imediai; ntre noduri se stabilesc relaii de tipul unu-la-muli);
structura de date reea (acest tip de structur de date se definete cnd
exist o relaie de preordine ntre elementele coleciei de date; un nod prezint mai
muli predecesori; un nod poate fi predecesor pentru propriul su predecesor; ntre
elementele reelei se stabilesc relaii de tipul muli-la-muli);
structura de date relaional (acest tip de structur de date este format din
mai multe tabele, relaii sau tablouri de date elementare).
Datele i structurile de date pot fi predefinite sau definite de utilizator.
n tabelul 1.1 se prezint definirea i caracteristicile principalelor structuri de
date, prin evidenierea avantajelor i dezavantajelor pe care le prezint [59]. Aceste
structuri de date se folosesc, n special, n programare, iar unele dintre ele sunt
fundamentale i n teoria bazelor de date (cum este, de exemplu, tabloul sau
tabelul (table), care este folosit n structurarea bazelor de date relaionale, aa cum
se prezint n capitolul 4 al lucrrii).
La tablou, indexul se refer la o valoare care permite accesul direct la
structura de date fr a mai necesita parcurgerea secvenial a ansamblului de
elemente. Indexul poate fi i o list cu cuvinte-cheie i date asociate care indic
locaiile unde se gsesc fiiere sau nregistrri de pe un suport magnetic. La bazele
de date, indexul este o list cu chei de nregistrri dintr-o baz de date.
20

Universitatea SPIRU HARET

Tabelul 1.1.
Definirea i caracteristicile unor structuri de date
Denumire
Tablou
(table)
Tablou ordonat

Coad (queue)

Stiv
(stack)

List nlnuit
(chain list)

Arbore binar
(binary tree)
Arbore bicolor
(bicolor tree)
Arbore 2-3-4
(2-3-4 tree)
Tabel de
dispersie
(hash table)

Movil (heap)

Graf (graph)

Definire
n programare, list de
elemente, implementat
sub forma unui vector de
nregistrri sau a unei liste
nlnuite. n bazele de date
relaionale, structur cu linii
i coloane.
Structur realizat dup
metoda primul sosit,
primul plecat, FIFO
(First-In, First-Out)
Structur realizat dup
metoda ultimul sosit,
primul plecat, LIFO
(Last-In, First-Out)
Structur de date sub form
de list n care fiecare
element al listei asigur
o adres pentru urmtorul
element consecutiv al listei.
Structur de date sub forma
unui arbore ordonat
de gradul doi.
Arbori binari la care fiecare
nod dispune de caracteristica
culoare roie sau neagr.
Arbori multici n care fiecare
nod poate prezenta cel mult
patru succesori (fii).
Structur de date fundamentat pe transformarea unui
domeniu de valori ale unei
anumite chei ntr-un domeniu
de indici dintr-un tablou.
Tip de arbore binar complet
implementat printr-un tablou.

Structur format din noduri


i arce ca legturi dintre
noduri.

Avantaje
Inserare i acces
rapid, cnd indexul
este cunoscut.
Cutare mai rapid
n comparaie
cu tablourile
neordonate.
Accesul la date se
execut n ordinea
introducerii acestor
date.
Accesul la date se
execut n ordinea
invers introducerii
acestor date.
Inserare
i tergere rapide

Dezavantaje
Cutare i
tergere greoaie,
dimensiune
fixat

Acces greoi
la celelalte
elemente.

Cutare greoaie.

Cutare, inserare i
tergere rapide
(arbore echilibrat).

Algoritmul de
tergere este
complicat.

Structuri de date
complexe.

Structura de date
cea mai rapid
(inserare rapid i
acces rapid pe
baza unei chei).
Inserare, tergere
i acces rapide la
elementul maxim
sau minim.
Modeleaz situaii
din universul real.

tergere
greoaie. Acces
lent atunci cnd
nu se cunoate
cheia.
Acces greoi
la celelalte
elemente.
Anumii algoritmi sunt greoi
i complicai.

21

Universitatea SPIRU HARET

La arbori, fiecare nod al arborelui, cu excepia nodului rdcin, este


succesorul unui nod unic. Fiecare nod admite unul sau mai muli subarbori ca
succesori sau nu deine nici un succesor i se denumete frunz (leaf). Drumul de
lungime n-1 de la nodul i1 la in reprezint o succesiune de noduri (i1, i2 ..., in),
n care pentru ()ik, k n, ik+1 este un succesor imediat al lui ik. nlimea
arborelui reprezint drumul de lungime maxim. Un arbore care are ordinul
superior lui doi se numete arbore multici. Arborele echilibrat este un arbore la
care diferena dintre drumurile de la rdcin la orice nod terminal este cel mult
unu. Un arbore este ordonat dac, ntr-un mod de parcurgere prestabilit,
elementele considerate satisfac o relaie de ordine. Un arbore binar are zero, unul
sau cel mult doi succesori. Un arbore complet (full tree) este arborele n care,
fiecare nod, cu excepia frunzelor, prezint doi succesori (fii).
Tabelele de dispersie sunt structuri de date ce semnific lista tuturor intrrilor
ntr-un fiier n concordan cu numerele de dispersie ce le aparin. Codurile de
dispersie (hash codes) folosite la obinerea tabelelor de dispersie sunt derivate din
codurile ASCII pe baza unor funcii de dispersie.
Movila (heap-ul) servete pentru implementarea cozilor cu prioriti (acele
cozi care permit tergerea elementului cu cheia maxim sau minim).
Graful complet este graful ale crui noduri sunt conectate dou cte dou prin
intermediul unui arc. Graful orientat este graful n care parcursul pe un arc spre
nod se efectueaz numai ntr-un singur sens.
1.5. Modele de date
Modelarea datelor servete pentru prelucrarea datelor cu ajutorul calculatorului
electronic. Definirea unui model de date cuprinde urmtoarele:
structura modelului;
operatorii care se utilizeaz la manipularea structurilor de date;
stabilirea regulilor de integritate pentru meninerea corectitudinii datelor.
Definirea structurii modelului cuprinde definirea obiectelor (entitilor) i a
caracteristicilor asociate (atributelor). Se utilizeaz urmtoarele elemente: cmpul
(cel mai mic element al structurii), grupul simplu sau compus (set compus din
cmpuri multiple i grupuri) i nregistrarea (ansamblu de cmpuri sau grupuri
care constituie i elementul generic al structurii). Relaiile dintre nregistrrile unei
entiti (obiect) sau mai multor entiti (obiecte) independente se materializeaz
ntr-o legtur dintre o realizare a nregistrrii printe i una sau mai multe
realizri ale nregistrrii copil. Prin entitate se nelege un obiect al universului real
supus modelrii, obiect caraterizat de o identitate proprie, de o existen proprie i
de o familie de caracteristici care semnific proprietile acestui obiect. Relaiile
sunt denumite i asocieri.
Pentru realizarea unei reprezentri grafice (sub form de diagrame) a
structurii modelului se utilizeaz tehnica entitate-asociere, care const n
identificarea componentelor (entitilor), identificarea asocierilor dintre entiti i
codificarea lor, identificarea atributelor i precizarea atributelor de identificare a
entitilor. Fiecare entitate prezint mai multe realizri. Legturile dintre entiti
22

Universitatea SPIRU HARET

sunt reprezentate prin arce neorientate sau orientate (fig.1.2), care stabilesc
legtura ntre nodurile ce reprezint entitile participante la asociere. Semnificaia
legturii este exprimat printr-un nume acordat legturii. Legtura se reprezint cu
un nod etichet (sub form de romb) dispus pe arc ca nod intermediar.

Fig. 1.2. Reprezentarea relaiei CLIENI-PRODUSE i a cardinalitii

Tipul sau forma legturii se evideniaz cu ajutorul cardinalitii. n figura


1.2 este reprezentat grafic cardinalitatea legturii ntre CLIENI-PRODUSE.
Cardinalitatea legturilor semnific numrul minim i numrul maxim de realizri
(instane) de entitate care pot fi asociate cu o realizare a partenerului de asociere.
Cardinalitatea se reprezint prin perechi de numere, cte o pereche pentru fiecare
entitate din cadrul legturii. Din fig.1.2 se observ c un anumit produs poate fi
achiziionat de mai muli clieni i un client poate cumpra mai multe produse.
Perechea (1,n) este asociat entitii CLIENTI i semnific faptul c un client poate
s achiziioneze un produs sau poate s achiziioneze mai multe produse. Perechea
(0,n) este asociat entitii PRODUSE i semnific faptul c un produs poate s nu
fie achiziionat de nici un client sau poate s fie achiziionat de mai muli clieni.
ntre entiti se pot stabili urmtoarele tipuri de legturi:
1. Dup cardinalitatea asocierii i dup gradul asocierii (maximele
cardinalitii) se deosebesc:
asocieri de tipul unu la unu (one-to-one);
asocieri de tipul unu la muli (one-to-many);
asocieri de tipul muli la muli (many-to-many).
2. Dup cardinalitatea asocierii i dup obligativitatea participrii entitilor
la asociere (minimele cardinalitii) se difereniaz:
asocieri pariale (acele asocieri care nu oblig participarea la asociere a
tuturor entitilor vizate);
asociere totale (complete).
3. Simultan, dup gradul asocierii i dup obligativitatea participrii la
asociere, tipurile de legturi se difereniaz n:
asocieri pariale de tip unu la unu;
asocieri totale de tip unu la unu;
asocieri pariale de tip unu la muli;
asocieri totale de tip unu la muli;
asocieri pariale de tip muli la muli;
asocieri totale de tip muli la muli.
4. Dup numrul de entiti distincte care particip la asociere se definesc:
asocieri binare (asocieri ntre dou entiti distincte);
asocieri recursive (asocieri ale entitilor cu ele nsele);
asocieri complexe (asocieri ntre mai mult de dou entiti distincte).
23

Universitatea SPIRU HARET

Atributele reprezint proprieti distincte ale entitilor, ns ele se pot referi


i la asocierile dintre entiti. Dup complexitate, atributele se clasific n atribute
simple sau elementare i n atribute complexe (compuse din mai multe atribute
elementare). Dup realizrile pe care le pot prezenta atributele, acestea pot fi
monovaloare, multivaloare, obligatorii sau opionale. Un atribut de identificare
este denumit cheie, atunci cnd este caracterizat prin unicitatea valorii sale pentru
fiecare instan a entitii (de exemplu, cod_client pentru entitatea CLIENTI,
cod_produs, pentru entitatea PRODUSE. Atributele cheie se marcheaz prin
subliniere sau printr-o sgeat spre entitatea creia i aparin.
Operatorii utilizai n modelele de date sunt citire, memorare, modificare,
jonciune etc. Pentru asigurarea corectitudinii datelor se folosesc reguli de
integritate.
Cele mai importante modele de date sunt modelul ierarhic, modelul reea,
modelul relaional i modelul orientat obiect.
Modelul ierarhic conine ca structuri de baz tipuri de nregistrri care
grupeaz toate atributele unei entiti. Acest model posed ierarhia ca tip de
structur. Aceast ierarhie dispune de un tip de nregistrare definit ca rdcin/root
i mai multe tipuri de nregistrri subordonate, legate sub form de arbore, motiv
pentru care modelul este denumit i arborescent.
Nodul din arbore care nu este rdcin sau nod final, are un singur nod
superior i unul sau mai multe noduri inferioare. Legtura de la un nod superior la
unul inferior este de tipul 1m, iar legtura de la un nod inferior la unul superior
este de tipul 11. Datorit existenei celor dou structuri, modelul ofer operatori
separai, i anume:
operatori de citire pentru tipul de nregistrare;
operatori de citire pentru tipul ierarhie;
operatori de memorare pentru tipuri de nregistrri;
operatori de memorare pentru ierarhie.
n cazul modelului reea, datele sunt reprezentate ca la modelul ierarhic, cu
deosebirea c fiecare inferior poate avea mai muli superiori. Structurile specifice
modelului reea pot s fie tipul de nregistrri (asigur atributele unei entiti) i
tipul de set (asigur legturile ntre tipurile de nregistrare).
Modelul relaional este fundamentat pe teoria matematic a relaiilor,
caracterizndu-se printr-o singur structur de date i anume relaia sau tabelul. Un
astfel de model poate fi perceput ca o mulime de tabele obinute prin metoda
normalizrii. Normalizarea pornete de la o mulime de atribute sau cmpuri de
date i de la o mulime de dependene funcionale dintre atribute. Normalizarea
permite obinerea unei scheme conceptuale a modelului relaional ntr-o form
normalizat n care se elimin anomaliile de actualizare.
Modelul orientat obiect este bazat pe structura denumit clas de obiecte,
definit prin abstractizare din entitile desemnate (mai multe detalii sunt prezentate n capitolul 3).

24

Universitatea SPIRU HARET

2. REZOLVAREA PROBLEMELOR ECONOMICE CU AJUTORUL


PROGRAMELOR PE CALCULATOR. PROGRAMARE

2.1. Despre necesitatea cunoaterii


i nsuirii elementelor de baz ale programrii
Rezolvarea problemelor, n general, i a problemelor economice n particular,
cu ajutorul programelor pe calculator necesit cunoaterea i nsuirea noiunilor
fundamentale referitoare la programare. Problemele economice prezint o serie de
particulariti legate de caracterul proceselor i fenomenelor economice din care fac
parte: existena unor modele (inclusiv bazate pe relaii matematice), volumul mare de
date stocate n baze de date i n depozite de date, operaii relativ puine i de
complexitate redus (n comparaie, de exemplu, cu calculele tehnico-inginereti),
prelucrri i reprezentri statistice etc. Toate aceste particulariti sunt luate n
considerare la rezolvarea problemelor economice, n special a celor de gestiune.
Informatica de gestiune reprezint n esen informatica aplicat n domeniul
prelucrrii automate a datelor asupra evidenei i controlului activitilor i bunurilor
unei organizaii economice. Gestiunea unei organizaii economice const n
totalitatea activitilor desfurate pentru evidena resurselor acesteia (umane,
materiale, financiare i informaionale), ncredinate, spre administrare, factorilor de
decizie, pentru realizarea scopurilor specifice domeniului su de activitate.
n prezent, dar mai cu seam n viitor, nu exist i nu va exista nici un loc de
munc fr calculator conectat n reea, n special n domeniile contabilitate i
financiar-bancar. Viitorul economist trebuie s cunoasc principiile i elementele
de baz ale programrii i s ctige deprinderi adecvate, cel puin din urmtoarele
dou motive:
economistul este un creator, i nu un simplu operator pe calculator;
complexitatea i diversitatea proceselor i fenomenelor economice presupun o
permanent deschidere spre schimbarea i perfecionarea aplicaiilor informatice
economice ce pot fi realizate nemijlocit de ctre economist;
economistul poart un dialog permanent cu specialistul informatician n
ceea ce privete perfecionarea sistemelor i instrumentelor informatice complexe
dedicate rezolvrii problemelor economice.
Este inutil s se insiste mai mult, la capitolul motivaie, asupra importanei
programrii i bazelor de date pentru viitorul economist cu specializarea
contabilitate i informatic de gestiune, n care sintagma informatic de gestiune
reprezint a doua jumtate a ntregului. Acest fapt i confer viitorului economist
dreptul de a profesa i n categoria profesionitilor n informatic, dar, n acelai
timp, genereaz i obligaia de a-i nsui n mod corespunztor fundamentele
programrii i ale bazelor de date.
25

Universitatea SPIRU HARET

2.2. Noiuni de baz specifice procesului


de prelucrare automat a datelor
Orice sistem de calcul (adic acel sistem tehnic care asigur execuia
procesului de prelucrare automat a datelor) are n compunere, n esen, partea de
hardware i partea de software. Bill Gates, patronul Microsoft, spunea n anul 2002
c, din totalul costurilor unui sistem de calcul, partea de hardware reprezint 5%, n
timp ce partea de software reprezint 95%. Problema costurilor unui sistem de
calcul devine din ce n ce mai important n condiiile cerute de societatea
informaional societatea cunoaterii (concepte prezentate n capitolul 1 al
lucrrii) i n conformitate cu prevederile legale referitoare la respectarea legii
drepturilor de autor n domeniul software.
Partea de software a unui sistem de calcul cuprinde, la rndul ei, software-ul
de baz (sistemul de operare sau sistemul de programe de baz) i software-ul de
aplicaie (sau sistemul de programe aplicative). n continuare sunt prezentate
noiunile de baz specifice procesului de prelucrare automat a datelor.
n capitolul 1 al lucrrii s-a prezentat noiunea de sistem informatic. A
rezultat astfel c orice sistem informatic conine unul sau mai multe sisteme de
calcul (hard i soft), crora li se adaug restul bazei tehnico-materiale, baza
tiinifico-metodologic, baza informaional, resursele umane i cadrul
organizatoric. Baza tehnico-material conine echipamentele de culegere, verificare
i transmitere date, echipamentele de teleprelucrare, suporturile de stocare a datelor
i calculatorul propriu-zis. Baza tiinifico-metodologic cuprinde modelele
matematice ale proceselor i fenomenelor economice i metodologii de realizare a
sistemelor informatice. Baza informaional se refer la date, fluxuri i circuite
informaionale, cataloage i dicionare de date etc.
Un sistem informatic are funcia de prelucrare automat a datelor pentru
obinerea informaiilor necesare procesului de conducere sau de informare.
Din cele artate mai sus, rezult c procesul de prelucrare automat a datelor
presupune existena simultan a urmtoarelor elemente: sistemul de echipamente
(hardware), sistemul de programe de baz, sistemul de programe aplicative, datele
de intrare ce sunt supuse proceselor de prelucrare automat i datele de ieire sau
rezultatele prelucrrilor. n esen, acest proces de prelucrare automat a datelor
este format din trei etape: introducerea (citirea) datelor de intrare, prelucrarea
datelor (efectuarea calculelor) i extragerea (scrierea) rezultatelor. Este de reinut
c datele de intrare sunt introduse printr-o operaie de citire - read, iar datele ce
reprezint rezultate sunt obinute printr-o operaie de scriere write sau de tiprire
- print a rezultatelor (fig.2.1).

CITIRE
DATE DE
INTRARE

PRELUCRRI

SCRIERE
REZULTATE

Fig.2.1. Etapele procesului de prelucrare a datelor pe calculator


26

Universitatea SPIRU HARET

Sistemul de operare este realizat cu preponderen n limbajul de programare


C, este livrat cu licen, de regul, de compania productoare a prii hardware a
calculatorului i este specific unui anumit tip de platform de calcul (Windows,
Unix, OS/2 etc).
Programele aplicative sunt realizate prin utilizarea limbajelor de programare
acceptate de ctre sistemul de calcul i de sistemul de operare al acestuia.
Datele ce sunt prelucrate pe un sistem de calcul sunt organizate ntr-o form
avantajoas pentru aplicaia informatic i sunt reprezentate ntr-o structur
accesibil calculatorului. Datele sunt organizate n colecii de date (detaliile sunt
prezentate n capitolul 4) n funcie de condiiile specifice impuse de sistemul
informaional existent i de dorinele utilizatorilor finali din procesul de decizie.
Procesul de prelucrare automat a datelor are loc ntr-o succesiune controlat
de operator, adic, n accepiunea clasic, de acel utilizator final specializat n
operarea pe sistemul de calcul. Etapele procesului de prelucrare a datelor pe
calculator, prezentate n fig.2.1, sunt materializate n urmtoarele operaii [18]:
pregtirea datelor iniiale, de regul manual, n vederea introducerii lor
n procesul de prelucrare automat (citire), ce presupune verificarea, sortarea i
codificarea acestor date n funcie de documentele primare existente; verificarea
datelor presupune confirmarea concordanei ntre valorile prezente n documentele
primare i valorile care trebuie s existe n conformitate cu aplicaia informatic
concret sau problema economic cu urmeaz a fi rezolvat; sortarea datelor
semnific acel tip de prelucrare prin care datele sunt dispuse ntr-o anumit ordine,
n conformitate cu un anumit sistem sau cu anumite precizri ale utilizatorului;
codificarea datelor nseamn operaia de atribuire de semne numerice, alfabetice
sau alfanumerice unor date cu scopul de a optimiza numrul de semne cu care se
scriu i se prelucreaz, de exemplu, elementele specifice sistemului informaional
financiar-contabil; noiunea de document primar (de eviden primar) este cea
definit n contabilitate, ca prim etap a funciei contabile, adic acel document n
care se consemneaz pentru prima dat o operaie economico-financiar (facturi,
chitane, cecuri etc). Fiecare eveniment ce prezint un efect economic se nscrie
ntr-un document primar n momentul i n locaia n care s-a produs;
introducerea datelor iniiale n calculator, adic n memoria intern sau
memoria extern a sistemului de calcul; introducerea datelor iniiale poate fi fcut
direct de la tastatur (n regim conversaional) sau de pe un suport tehnic accesibil
calculatorului;
prelucrarea propriu-zis a datelor, ceea ce nseamn execuia automat
de ctre calculator a tuturor operaiilor prestabilite prin program (validri de date,
sortri, interclasri, comparri i testri); validarea de date este tipul de
prelucrare ce const n verificarea datelor de intrare dac sunt corecte n raport cu
un set de reguli prestabilite (dac sunt reale, coerente, corelate, corect testate,
corect transferate dintr-un mediu ntr-altul); interclasarea datelor reprezint tipul
de prelucrare prin care se obine un ir (vector) de date ce conine toate elementele
unor vectori iniiali ordonai; compararea datelor este tipul de prelucrare prin care
se verific existena unor relaii de ordine ntre dou date; relaia de ordine a fost
definit la cursul de matematic i este o relaie binar pe o mulime de date ce
stabilete ordinea de parcurgere a elementelor mulimii; testarea datelor este tipul
27

Universitatea SPIRU HARET

de prelucrare prin care se verific un ansamblu de date ce sunt pregtite pentru


buna funcionare a unui program;
prezentarea rezultatelor prelucrrii, adic afiarea pe ecranul monitorului sau imprimarea pe hrtie; cnd rezultatele sunt folosite n prelucrri
ulterioare, ele sunt stocate pe supori magnetici.
Etapele i operaiile prezentate mai sus se ncadreaz n triada de aur
specific oricrui sistem de calcul: stocare prelucrare prezentare date.
2.3. Noiuni de baz referitoare la programare
Rezolvarea unei probleme reprezint procesul de concepere i de
implementare a unei strategii de gsire a unei soluii sau de conversie la
normalitate a unor stri generate de condiii nedorite sau neateptate. n activitatea
de concepere a programelor destinate calculatoarelor electronice, problema de
rezolvat este definit, detaliat i transformat ntr-un proiect pe baza cruia se
poate realiza un program ce poate fi rulat pe un sistem de calcul.
nainte de a se scrie efectiv programul, se efectueaz analiza problemei de
rezolvat i se realizeaz algoritmul de calcul.
Programul pe calculator este un set de instruciuni (comenzi) ce se execut
de sistemul de calcul cu scopul de a efectua o succesiune de aciuni sau un tip
prestabilit de activitate.
Noiunea de dat a fost prezentat pe larg n capitolul 1. Instruciunea sau
comanda semnific un enun ce specific o aciune ntr-un limbaj de programare.
Programul pe calculator (sau, mai simplu, programul) are n compunere, de
regul, dou tipuri de enunuri: declaraii i instruciuni. Declaraia este asocierea
dintre un identificator i anumite informaii. Aceast asociere este formal la
realizarea programului i devine efectiv n timpul compilrii sau n timpul
execuiei programului. Declaraia privete modul de organizare a datelor de intrare,
pe timpul prelucrrii, precum i a datelor de ieire (rezultatelor). Identificatorul
reprezint orice ir de caractere alfanumerice ce se folosete n calitate de:
nume de variabil sau constant ntr-un program;
etichet de regsire a unui punct din program;
nume de procedur sau de funcie;
nume ataat unei uniti logice de memorie extern (hard disc, dischet,
compact disc, memorie flash etc.).

PROGRAM

DATE
(STRUCTURI DE
DATE)

LIMBAJ DE
PROGRAMARE

ALGORITMI
Fig.2.2. Compunerea unui program pe calculator
28

Universitatea SPIRU HARET

Dintr-o alt perspectiv, orice program pe calculator reprezint un ansamblu


format din date (structuri de date) i algoritmi prezentate ntr-un limbaj de
programare (fig.2.2). Noiunea de algoritm nu are o definiie riguroas. Algoritmul
este o metod, un procedeu, o reet, o soluionare a unei probleme, fr ns a
realiza echivalena cu aceti termeni.
Dicionarele de informatic definesc algoritmul ca:
o descriere a schemei de realizare a unui eveniment cu ajutorul unei
mulimi finite de aciuni elementare predenumite, realizabile a priori i avnd o
durat limitat n timp;
un concept folosit pentru a desemna o mulime finit de operaii cunoscute
care, executate ntr-o ordine bine stabilit, pornind de la o mulime de valori (date)
de intrare conduc la obinerea n timp finit a unei alte mulimi de valori, valori
(date) de ieire;
o secven finit de pai prin care se rezolv o problem logic sau
matematic.
n realizarea unui algoritm este necesar satisfacerea urmtoarelor patru
condiii (proprieti):
claritatea, ceea ce nseamn ca algoritmul s fie bine definit (cu
specificaii riguroase i fr ambiguiti);
exactitatea (determinismul), adic n fiecare moment al execuiei
algoritmului, se cunosc cu exactitate urmtoarea operaie, precum i modul de
execuie a fiecrei operaii; descrierea cu exactitate asigur execuia algoritmului
pe un sistem de calcul;
universalitatea, ceea ce semnific faptul c orice algoritm, fiind ct mai
universal cu putin, asigur rezolvarea unei clase largi de probleme;
finitudinea, ce const n faptul c algoritmul este finit n spaiu (ca
descriere) i asigur obinerea rezultatului ntr-un timp determinat de execuie,
adic dup un anumit numr finit de pai.
Dup gndirea algoritmului, acesta se poate reprezenta sub mai multe forme;
dintre aceste forme, cele mai uzuale sunt reprezentarea n limbaj pseudocod i
schema logic. Limbajul pseudocod asigur descrierea algoritmilor prin
intermediul a dou enunuri: standard i nestandard; enunurile nestandard sunt
fraze n limbajul natural ce se folosesc, de regul, n programare pentru
reprezentarea formei iniiale a algoritmilor; enunurile standard exprim operaii ce
dispun de corespondene directe n instruciunile limbajului de programare.
Schema logic asigur reprezentarea sub form grafic a algoritmilor.
Schema logic de program se deosebete de schema logic de sistem. Schema
logic de sistem descrie operaiile de prelucrare a datelor pe sistemul de calcul, cu
focalizare pe sursele de date, documentele primare ce le conin, activitile ce se
execut asupra lor, modul de stocare i de prezentare a rezultatelor prelucrrii.
Schema logic de sistem este utilizat pentru a oferi o imagine de ansamblu a
fluxurilor de date din sistemul de calcul, n timp ce schemele logice de program
sunt folosite pentru detalierea anumitor procese reprezentate n schema logic de
sistem. Schemele logice de program sunt independente de limbajul de programare
utilizat. Schemele logice utilizeaz simboluri cu semnificaiile prezentate n figura 2.3.
29

Universitatea SPIRU HARET

BLOC
INTRODUCERE/EXTRAGERE
DATE (INTRARE/IEIRE)

BLOC ATRIBUIRE

BLOC PROCEDUR

BLOC
DESCHIDERE/
NCHIDERE FIIERE

BLOC DECIZIE
(SALT CONDIIONAT)

BLOC NCEPUT /SFRIT


DE PROGRAM (TERMINATOR)

CONECTORI PE PAGIN

CONECTORI DE PAGIN

BAND MAGNETIC

DOCUMENT IMPRIMAT

LINII DE LEGTUR NTRE BLOCURI


Fig.2.3. Tipuri de blocuri din compunerea schemelor logice
30

Universitatea SPIRU HARET

Pentru realizarea unui program sunt necesare trei tipuri de structuri de


control, caracterizate prin aceea c au o singur intrare i o singur ieire. Aceast
posibilitate se bazeaz pe teorema lui Boehm i Jacopini care arat c orice
algoritm poate fi reprezentat ca o combinaie a celor trei structuri de control
fundamentale: secvenial, alternative i repetitive.
Structura de control secvenial (liniar) cuprinde o succesiune de blocuri
care se execut unul dup altul, figura 2.4.a.
Structurile de control alternative (cu ramificaii) corespund unui bloc de
prelucrare care se execut n functie de satisfacerea unei condiii (fig. 2.4.b, c i d).
Aceste structuri de control prezint urmtoarele forme:
structura de control alternativ cu dou ramificaii (IfThenElse), fig.2.4 b;
structura de control alternativ cu mai multe ramificaii (imbricat), fig.2.4 c;
structura de control alternativ generalizat (Case-Of), fig.2.4 d.
Structurile de control repetitive (de ciclare) asigur repetarea prelucrrii unor
secvene de program (fig. 2.4.e). Formele structurilor de control repetitive sunt:
structura repetitiv fr contor condiionat anterior (While Do);
structura repetitiv fr contor condiionat posterior (Repeat Until);
structura repetitiv cu contor condiionat anterior (DoFor);
structura repetitiv cu contor condiionat posterior (DoFor).
Din punct de vedere structural, un program poate avea n compunere mai
multe subprograme sau module. Pot constitui subprograme, componentele
programului de tipul procedurilor i/sau al funciilor. Mai multe programe
alctuiesc mpreun o aplicaie informatic (fig.2.5). Clasic, aplicaia informatic
are o structur static arborescent, adic este format dintr-un program principal
care apeleaz subprograme. Subprogramele sunt independente n conformitate cu
principiile programrii structurate (programe constituite din subprograme sau
module i folosirea structurilor de control fundamentale).
Aplicaia informatic este dedicat unui anumit domeniu de activitate
economic (de exemplu, aplicaie informatic de contabilitate, aplicaie informatic
pentru managementul resurselor umane, aplicaie informatic pentru gestiunea
creditelor bancare etc.). Noiunea de aplicaie informatic nu este similar cu aceea
de sistem informatic (definit n capitolul 1).
Limbajul de programare este un limbaj artificial ce se folosete pentru
definirea unui ir de instruciuni care pot fi prelucrate i executate pe un calculator.
Problematica general a limbajelor de programare este tratat n finalul acestui
paragraf.
Procedura (procedure) este o parte component, cu nume, a unui program,
creia i sunt associate constante, tipuri de date i variabile i care execut, de
regul, un task unic. Task-ul este un subprogram sau aplicaie autonom rulat ca o
entitate independent. Funcia (function) este un subprogram sau rutin care
returneaz o singur valoare prin nsi numele funciei. Spre deosebire de funcie,
procedura poate returna mai multe valori atunci cnd este rulat. Variabila este, n
programare, o locaie de memorie n care se stocheaz date de un anumit tip i care
pot fi modificate pe timpul execuiei programului. Constanta desemneaz o entitate
cu nume ce reprezint o valoare care nu se modific pe timpul execuiei unui
program. Structura de date este o schem de organizare a datelor cu scopul de a
31

Universitatea SPIRU HARET

simplifica operaiile de prelucrare sau de a uura interpretarea lor. De exemplu,


structura de date din fig.2.6 faciliteaz interpretarea datelor disponibile despre un
client. Exist mai multe tipuri de structuri de date: vector, nregistrare, mulime etc.

Fig. 2.4.c. Structura alternativ imbricat


32

Universitatea SPIRU HARET

i=1

i=n

i=2

SECVENA
1

SECVENA
2

...

SECVENA
n

STRUCTURA ALTERNATIV GENERALIZAT


CAZUL GENERAL
Fig.2.4.d. Structura de control alternativ generalizat

Instruciunea este format din dou elemente distincte: codul operatorului i


operanzii (datele supuse operaiei elementare reprezentate prin cod). n funcie de
tipul prelucrrii pe care o execut, instruciunile se clasific n:
instruciuni de prelucrare propriu-zis;
instruciuni de organizare (structurare), care realizeaz concordana
logic ntre algoritm i succesiunea intern a secvenelor de program.
Instruciunile de prelucrare propriu-zis se grupeaz n:
instruciuni de intrare-ieire, care stabilesc sensul fluxului de date n
sistemul de calcul, fiierul de date asupra cruia se efectueaz operaia i
echipamentul periferic pe care se gsete acest fiier de date; fiierul de date este o
colecie de date stocat pe un suport tehnic ntr-o succesiune de nregistrri;
instruciunile de calcul, ce precizeaz natura operaiei, adresele operanzilor
care particip la calcul i a operaiei aritmetice;
instruciunile de transfer (atribuire), ce realizeaz transferul datelor,
preciznd sensul transferului i adresele operanzilor.
33

Universitatea SPIRU HARET

Fig. 2.4.e. Structuri repetive (de ciclare)

34

Universitatea SPIRU HARET

Subprogram 2

Subprogram 1

Subprogram 1

Subprogram 1

Subprogram 2

Subprogram 2

o
o
o

o
o
o

o
o
o

ooo

Subprogram m

Subprogram n

PROGRAM 1

PROGRAM 2

Subprogram z
PROGRAM l

APLICAIE INFORMATIC
Fig.2.5. Noiunea de aplicaie informatic

Client

Nume

Prenume

Localitatea

Adresa

Strada

Nr

Bloc

Telefon

Scara

Etaj

Banca

Apart

Fig.2.6. Structura de date Client

35

Universitatea SPIRU HARET

36

Universitatea SPIRU HARET

Fig.2.7. Fazele elaborrii unui produs-program

Instruciunile de organizare sunt urmtoarele:


instruciunile de comparare (decizie logic), care asigur compararea a doi
sau mai muli operanzi, rezultatul fiind categorisit ca adevrat (True) sau fals
(False);
instruciunile de salt, ce realizeaz trecerea de la secvena de instruciuni
curent din program la o secven de instruciuni situat n alt punct al
programului.
Indiferent de limbajul de programare folosit pentru rezolvarea problemei,
realizarea unui program presupune parcurgerea urmtoarelor etape (fig.2.7):
1. Analiza problemei de rezolvat i realizarea algoritmului, etap ce
presupune elaborarea unui enun complet al problemei, stabilirea modalitilor de
organizare i de reprezentare a datelor de intrare i de ieire, elaborarea schemei
37

Universitatea SPIRU HARET

logice de sistem care definete echipamentele din configuraia calculatorului ce


particip la procesul de prelucrare a datelor, realizarea algoritmului ce presupune
elaborarea i reprezentarea acestuia n limbaj pseudocod sau sub forma schemei
logice de program.
2. Scrierea (introducerea) programului, ce are drept scop codificarea
algoritmului, adic conversia acestuia n conformitate cu instruciunile unui limbaj
de programare; pentru aceast codificare, se folosete un editor de texte; acest
editor poate fi independent sau poate face parte din mediul integrat de dezvoltare
(IDE); se obine astfel programul-surs (codul-surs al programului), care este
scris ntr-un limbaj similar cu limbajul natural, dar nc inaccesibil sistemului de
calcul;
3. Compilarea programului, ce realizeaz traducerea programului-surs scris
ntr-un limbaj de programare de nivel nalt n program-obiect, exprimat n
instruciuni cod-main. Aceast operaie de traducere se obine, n mod automat,
prin folosirea unei componente a sistemului de operare, numit compilator. Dup
compilare, eventualele erori de codificare existente n program (numite erori de
sintax ce apar datorit nerespectrii sintaxei generale a unei instruciuni) sunt
depistate i afiate. Erorile de sintax sunt eliminate prin corecii aduse
programului-surs, dup care operaia de compilare este reluat. Este important de
menionat faptul c n etapa de compilare nu se depisteaz erorile logice din
program; erorile logice sunt greeli produse la realizarea algoritmului de calcul.
4. Editarea de legturi (linkeditarea), ce asigur includerea codului obiect al
programului (programul-obiect) ntr-un ansamblu executabil (programul
executabil), care cuprinde i module specifice sistemului de operare, funcii de
bibliotec etc. cu ajutorul componentei denumit editor de legturi (linkeditor).
Eventualele erori ce apar conduc la corecii n programul-surs.
5. Testarea logic a programului, care realizeaz verificarea final a
programului pe baza unui set de date de test ce acoper domeniul real de valori ale
datelor de intrare ce se vor folosi n timpul exploatrii programului.
Problematica general a limbajelor de programare
Limbajul de programare reprezint un limbaj artificial ce se folosete pentru
definirea unui ir de instruciuni care pot fi prelucrate i executate pe un sistem de
calcul. Noiunea de instruciune a fost prezentat n paragraful 2.2.
Spre deosebire de limbajele naturale (umane), limbajele artificiale au fost
create cu scopuri precise: limbaje de programare, limbaje de specificare a
programelor, limbaje de descriere a documentelor structurate, limbaje de schimb de
date electronice, EDI (Electronic Data Interchange) etc.
Limbajele de programare se definesc formal prin alfabet, vocabular i
gramatici (fapt ce permite compilarea sau interpretarea lor). Alfabetul reprezint
mulimea simbolurilor utilizate pentru scriere n limbajul de programare respectiv.
Vocabularul este compus din mulimea cuvintelor ntrebuinate n limbaj.
Gramatica limbajului de programare este reprezentat de ansamblul regulilor de
scriere, cu preponderen sub aspect sintactic (mulimea regulilor de formare a
instruciunilor), cu luarea n consideraie a regulilor de punctuaie i a semanticii
(semnificaiilor conferite cuvintelor) i extrem de puin sub aspect morfologic
(ansamblul regulilor de modificare a formei cuvintelor, n contextul utilizrii lor).
38

Universitatea SPIRU HARET

Operaia de compilare a fost descris n paragraful anterior. Operaia de


interpretare asigur execuia instruciune cu instruciune (la comanda pas cu pas a
operatorului) a unui program.
Limbajele de programare au evoluat istoric n concordan cu dezvoltarea i
progresele prii de hard a sistemelor de calcul. n anul 1944, cnd firma IBM i
Universitatea Harvard au realizat primul calculator electronic denumit MARK 1,
programarea s-a efectuat n limbaj cod-main (generaia zero, 0 GL), sub forma
unei succesiuni de instruciuni n cod binar. Primul limbaj de programare (generaia
1, 1 GL) este definit dup anul 1950, pentru calculatorul electronic UNIVAC 1,
sub denumirea de program asamblor, care automatizeaz programarea
calculatoarelor prin simbolizarea instruciunilor, operanzilor i adreselor de
memorie sub form de mnemonice i prin translatarea programelor din forma scris
cu mnemonice n limbaj cod-main. Dup anul 1960, sunt puse la punct primele
limbaje de nivel nalt sau evoluate (Cobol, ALGOL, FORTRAN).
Limbajele de nivel nalt sau evoluate sunt concepute n funcie de domeniul
de aplicaii informatice cruia i este destinat (limbaje specializate, pentru aplicaii
economice limbajul Cobol, pentru aplicaii tehnico-inginereti, limbajul
FORTRAN, pentru aplicaii de inteligen artificial, limbajele Lisp i Prolog) sau
sunt universale (de exemplu, limbajele de programare PL/1 i Ada). Tendina de
ieire a limbajelor de programare din laboratoarele firmelor de calculatoare i de
facilitare a nsuirii acestora de cercuri diverse de utilizatori s-a materializat n
dezvoltarea unor limbaje de programare didactice, cum sunt Pascal i Basic.
Dintre limbajele de programare de nivel nalt utilizate n prezent pentru realizarea
de software profesional de ctre firmele specializate se menioneaz limbajele C
(cu variantele sale ulterioare C++, C#), Java, Ada.
Dintre limbajele de nivel jos (apropiate de cod-main) se menioneaz
limbajele de macroasamblare (MASM, TASM), ce aparin generaiei 2 (2 GL), la
care se realizeaz gruparea unor secvene de instruciuni realizatoare ale unor
operaii repetitive, de rutin, ntr-o macroinstruciune (instruciune a limbajului de
macroasamblare). Macroinstruciunile sunt standard (specifice limbajului de
programare) sau sunt definite de utilizator. Fiecare tip de microprocesor, ce
definete sistemul de calcul, dispune de propriile su limbaj cod-main i limbaj
de asamblare.
Limbajele de programare pot fi procedurale i neprocedurale. Limbajul
procedural sau imperativ, ce definete generaia 3 (3 GL), este limbajul de
programare n care elementul esenial al programrii este procedura (exemple:
Basic, C, Pascal, Cobol, Fortran, Ada etc.). Limbajul procedural necesit o
detaliere atent a ansamblului de instruciuni ce urmeaz a fi executate n scopul
realizrii unei sarcini (task) precizate i este independent de sistemul de calcul.
Limbajele neprocedurale sunt limbaje de nivel foarte nalt, din generaia 4 (4
GL), situate deasupra limbajelor de nivel nalt, specializate pe tipuri de aplicatii
informatice. Aceste limbaje se caracterizeaz prin faptul c necesit precizarea
problemei de rezolvat, a metodei de rezolvare (i nu a algoritmului de rezolvare), a
referirilor asociative de date (i nu a adreselor specifice datelor) i a operatorilor
generali necesari operaiilor cu structuri de date. Limbajele neprocedurale sunt
foarte apropiate de limbajele naturale (umane). O ierarhie a limbajelor de
programare este prezentat n fig.2.8.
39

Universitatea SPIRU HARET

LIMBAJE DE NIVEL FOARTE NALT (4 GL)


LIMBAJE DE NIVEL NALT (3 GL)
LIMBAJE DE MACROASAMBLARE (2 GL)
LIMBAJ DE ASAMBLARE (1 GL)
LIMBAJ COD-MAIN (0 GL)
HARDWARE

Fig.2.8. Ierarhia limbajelor de programare

Fig. 2.8. Ierarhia limbajelor de programare

Un mare grad de utilizare l prezint sistemele de gestiune a bazelor de date


(SGBD) ce sunt fundamentate pe limbaje de descriere a structurii bazei de date i pe
limbaje de manipulare i interogare a bazei de date. SGBD-urile lucreaz cu date
organizate n baze de date i programele sunt independente n raport cu descrierea
datelor. Se dau ca exemple SGBD-urile FoxPro (cu o larg rspndire n Romnia n
deceniul 9 al secolului trecut), Informix, Oracle, Sybase, Microsoft Access.
Din categoria limbajelor de programare specializate fac parte limbajele
inteligenei artificiale. Se dau ca exemple limbajele Lisp i Prolog.
Limbajele de programare orientate pe obiecte sunt dezvoltate n conformitate
cu conceptul de programare orientat pe obiecte, OOP (Object-Oriented
Programming). Programarea orientat pe obiecte semnific programarea bazat
pe obiecte la care se adaug motenirea i polimorfismul (paragraful 2.4).
Programarea bazat pe obiecte, OBP (Object-Based Programming) utilizeaz
conceptele de clas i obiect. Dintre limbajele de programare OOP se menioneaz
Pascal, C++, C#, SmallTalk, Simula, Java etc.
2.4. Elementele de baz ale programrii orientate pe obiecte
Programarea orientat pe obiecte, OOP (Object-Oriented Programming).
specific limbajelor de programare orientate pe obiecte, nseamn programarea
bazat pe obiecte, la care se adaug motenirea i polimorfismul. Programarea bazat
pe obiecte, OBP (Object-Based Programming) utilizeaz conceptele de obiect i clas.
Obiectul este o entitate dinamic (este creat, utilizat i apoi distrus) constituit
din oricare unitate programabil i caracterizat prin identitate, metode de
comportament i stare. Identitatea individualizeaz un obiect n comparaie cu alte
obiecte. Metodele de comportament ale obiectului reprezint elementele comportamentale ale acestuia n momentul accesrii. Prin comportament, obiectul i pune n
eviden apartenena la clas, precum i individualitatea sa. Starea obiectului este
caracterizat cu ajutorul atributelor lui. Orice atribut dispune de nume i valoare sau
realizare ce este asociat ca variabil de instan (ce definete proprietile
obiectului la un anumit moment). Elementele ce aparin coleciei de obiecte descrise
40

Universitatea SPIRU HARET

ntr-o clas reprezint instane de clas. Obiectul este definit de un identificator


intern unic, independent de valoarea sau adresa de memorie a obiectului. Acest
identificator nu este controlat de utilizator i nu se confund cu diferitele nume
utilizate de utilizator cu scopul de a-l numi. Ca entiti complexe, obiectele sunt
constituite din alte obiecte i din valori. Distincia ntre obiecte i valori se realizeaz
prin intermediul strii obiectului: obiectele dispun de o stare intern care se poate
schimba; valoarea nu se schimb niciodat. Obiectele sunt create de utilizatori, prin
derivare din tipuri de obiecte create anterior sau printr-o operaie de creare (new).
Clasa reprezint o implementare a unui tip abstract de date ce ncapsuleaz
dou tipuri de atribute: cmpuri sau proprieti i metode sau operaii ale tipului
respectiv. Cmpurile sunt private adic sunt ascunse n reprezentarea obiectului.
Metodele sunt publice adic accesibile utilizatorului. Altfel exprimat, clasa definete
o categorie de obiecte cu proprieti i metode ce se motenesc ntr-o subclas.
Subclasa sau clasa derivat definete comportamentul obiectului derivat dintr-o
clas considerat de baz. Clasa este un model de realizare a obiectelor de acelai tip
i se definete cu ajutorul unui limbaj declarativ sau pe cale grafic. Clasa are un
nume, prezint operaii externe sau metode, are o reprezentare intern (ca expresie a
valorilor diverselor stri ale instanelor de clas) i folosete cod ce implementeaz
att operaiile externe, ct i descrierile reprezentrii interne a obiectelor. Clasa exist
conceptual chiar i atunci cnd nu conine obiecte i este un ablon pentru generarea
i manipularea obiectelor i este accesat de utilizator cu ajutorul interfeei specifice
clasei. Specificarea metodei se numete semntur, iar modul de implementare
constituie corpul metodei. Noiunea de clas este asociat n special cu faza de
execuie i presupune: generarea de obiecte (new) i memorarea mulimii de obiecte
care reprezint instanele claselor. O clas descrie obiectele, crearea unui obiect
realizndu-se prin luarea n consideraie a unei expresii de tip. Tipul reprezint o
descriere abstract a unui grup de entiti asemntoare. Obiectul prezint valorile lui
proprii, lista atributelor i metodelor fiind gestionate de clas. Pentru majoritatea
limbajelor OOP, ansamblul instanelor unei clase reprezint o colecie care are
acelai nume cu clasa i care se numete extensie a clasei. Obiectele reprezint
instane (manifestri) ale claselor din care fac parte.
Tipul de dat este folosit pentru descrierea unei mulimi de obiecte care au
aceeai reprezentare. Fiecrui tip de dat i se asociaz anumite operaii cum ar fi
de exemplu: operaii aritmetice pentru date numerice, concatenri pentru irurile
de caractere, modificri pentru anumite articole.
Tipul abstract de dat este un tip de dat care este definit prin accentuarea
elementelor de precizare a comportamentului i de specificare a metodelor ce se
pot efectua asupra variabilelor de tipul de dat respectiv (se specific att structura
obiectului, ct i mesajele aplicabile lui). Tipul abstract de dat ascunde modul n
care sunt implementate metodele asociate obiectului, reprezentarea intern a
obiectelor i protejeaz algoritmii interni care implementeaz cererile din exterior.
Acest tip abstract de dat are dou componente: interfaa (list de metode) i
implementarea (descrierea structurii interne a datelor obiectului i realizarea
procedurilor de implementare a metodelor interfeei). Structura aleas pentru
memorarea tipului abstract de dat este ascuns pentru utilizator; ca urmare,
algoritmul de reprezentare este ncapsulat. Exist o interfa public, la care au
acces utilizatorii, i o interfa privat, ce ascunde reprezentarea i implementarea.
41

Universitatea SPIRU HARET

Diferena dintre tipul de dat i clas este urmtoarea: tipul de dat este
destinat pentru definirea de declaraii utilizate pentru controlul static al expresiilor
de limbaj, n timp ce clasele sunt abloane destinate generrii i manipulrii
obiectelor care prezint proprieti i comportament comun.
ntre clase i obiecte se stabilesc relaii astfel: asociaii binare ntre dou
clase, asociaii n-are ntre mai multe clase, relaii ntre obiect i clasa din care face
parte, relaii ntre obiectele aceleiai clase. n fig.2.9 sunt prezentate, sub forma
unei grafici sugestive, relaiile dintre clase i obiecte, n conexiune direct cu
noiunea de motenire ce este prezentat n continuare.
Exist mai multe paradigme ale modelului folosit de OOP: motenirea,
ncapsularea, polimorfismul, abstractizarea datelor, persistena, evenimentul.
Paradigma este un ansamblu ce detaliaz conceptele specifice unui anumit termen
utilizat ca model. Paradigma se refer la forme de manifestare ale termenului
respectiv.
Motenirea asigur transferarea de proprieti i metode de la clasa-printe ctre
un obiect nou (fig.2.9). Prin motenire sunt generate tipuri noi de obiecte i clase ntr-o
ierarhie. Prin motenire, n OOP se elimin rescrierea i recodificarea programelor,
asigurndu-se reutilizarea codului. Un obiect nou motenete operaii sau metode,
variabile de instan, atribute. n cazul metodelor, este vorba de partajarea codului, iar
n cazul variabilelor, de partajarea structurii ntre datele obiectelor.
Proiectarea unei aplicaii prin intermediul OOP const n gruparea
informaiilor generale n clase care sunt apoi specializate pas cu pas n subclase cu
comportament particular.
Aa cum s-a artat deja, metodele reprezint operaii ce pot regsi sau
actualiza starea unui obiect. Aceast stare a obiectului este memorat n variabilele
instanelor sale. ntr-o ierarhie de moteniri, o metod definit pentru o clas este
motenit de subclasele sale. Motenirea este implementat static sau dinamic.
Motenirea static nseamn adugarea cmpurilor motenite, situaie n care
redefinirea unei clase oblig la actualizarea tuturor subclaselor. Motenirea
dinamic se realizeaz fr a se copia cmpurile motenite i oblig la parcurgerea
legturilor de motenire. n cazul motenirii dinamice, actualizarea se efectueaz
mai rapid, n timp ce execuia este mai puin eficient. Motenirea poate fi simpl
sau multipl. Motenirea simpl se produce atunci cnd o subclas motenete
proprieti i metode ale unei singure clase-printe. Motenirea multipl se
realizeaz cnd o subclas posed mai multe clase-printe.
ncapsularea reprezint proprietatea ce definete posibilitatea de a ascunde
prin mascare atributele proprii unui obiect i modul n care se execut metodele.
Astfel, sunt protejate obiectele n situaia efecturii greite a unor manipulri
exterioare. Un obiect poate fi accesat numai prin metodele asociate la crearea sa.
Polimorfismul definete caracteristica unei metode de a se comporta n mod
diferit n funcie de clasa de obiecte creia i aparine. Polimorfismul asigur
invocarea pentru obiectele de diferite tipuri a metodelor cu acelai nume, dar
semantic i implementare diferit. O metod se comport diferit n funcie de
clasa de obiecte creia i aparine.
Abstractizarea datelor se realizeaz prin faptul c nsei clasele sunt expresia
unei abstracii. Obiectele dintr-o clas prelucreaz datele modelului clasei creia i
aparin. Utilizatorul obine comunicarea cu obiectele prin mesaje ce se transmit
prin interfaa ce specific metodele posibile.
42

Universitatea SPIRU HARET

Fig. 2.9. Relaiile ntre clase i obiecte

Persistena este o proprietate a obiectelor care implic existena acestora i


dup ncetarea procesului ce le-a creat. Starea obiectului i codul corespunztor
metodelor sunt memorate n baza de date. Tipurile obiectelor pot fi declarate
persistente prin folosirea cuvntului cheie persistent la momentul declarrii,
variabila fiind i ea constrns la un tip persistent.
Evenimentul reprezint o aciune efectuat de sistemul de calcul n cazul n
care utilizatorul solicit executarea unei comenzi, este aplicat un mesaj al
sistemului sau exist o solicitare din partea altei aplicaii informatice. Ca urmare,
evenimentele se pot produce n mod interactiv sau programat. ntr-o aplicaie
informatic dirijat prin evenimente, codul nu urmrete o cale prestabilit, ci
secvene de program executate ca rspuns la apariia evenimentelor. Succesiunea n
care se produc aceste evenimente determin secvena dup care se execut codul,
ceea ce nseamn c, la fiecare rulare a programului, el va parcurge o cale diferit.
43

Universitatea SPIRU HARET

3. LIMBAJUL DE PROGRAMARE VISUAL BASIC

3.1. Caractersticile generale ale mediului integrat


de dezvoltare Visual Basic
Visual Basic (VB) reprezint un mediu integrat de dezvoltare, IDE
(Integrated Development Environment), n mod interactiv, pentru aplicaii
informatice sub sistemul de operare Microsoft Windows. n general, un mediu de
programare este un sistem de programare care asist utilizatorul n proiectarea i
codificarea algoritmilor i a datelor, respectiv n editarea i depanarea programelor.
Cnd acest mediu de programare asist utilizatorul (programatorul) n toate etapele
de realizare a unui program, el se numete mediu de dezvoltare. Cnd toate
componentele de asistare a utilizatorului (programatorului) sunt integrate n cadrul
aceluiai mediu de dezvoltare, el se numete mediu integrat de dezvoltare.
Termenul visual din denumirea IDE Visual Basic semnific faptul c
aplicaiile informatice dezvoltate n VB dispun de interfee grafice ce sunt
proiectate vizual de ctre utilizator. Pentru aceasta, utilizatorul are la dispoziie un
set de elemente vizuale standard ce pot fi folosite la proiectarea unei interfee
grafice, denumite elemente de control, sau, pe scurt, controale (Controls). Aceste
controale sunt dispuse n ferestrele aplicaiei, ferestre denumite formulare (Forms),
concomitent cu stabilirea proprietilor acestora (n fereastra Properties) la dorina
utilizatorului i n conformitate cu necesitile aplicaiei.
Termenul Basic din compunerea IDE Visual Basic arat tipul limbajului de
programare utilizat pentru realizarea programelor (secvenelor de cod) corespunztoare
evenimentelor generate de acionarea controalelor dispuse n formularul specific
aplicaiei. Limbajul de programare Basic (acronim provenit din denumirea n limba
englez Beginners All-purpose Symbolic Instruction Code), definit la nceputul
anilor 60 ai secolului XX, a cunoscut numeroase versiuni i dezvoltri ulterioare.
n anul 1991, firma Microsoft a realizat produsul Visual Basic, care, ulterior,
a cunoscut mai multe versiuni, n concordan cu dezvoltarea sistemului de operare
Windows (Tabelul 3.1). Versiunea Visual Basic 6.0 face parte din pachetul
Microsoft Visual Studio 6.0, iar versiunea Visual Basic.NET este parte component
a pachetului Microsoft Visual Studio.NET.
Visual Basic prezint caracteristici specifice programrii structurate
(programrii bazate pe obiecte), programrii dirijate de evenimente, orientrii
spre prelucrarea bazelor de date (manipulare i interogare).
Versiunile produsului informatic Visual Basic
Versiunea

Anul
lansrii

Standard
Edition

Professional
Edition

Enterprise
Edition

3.0
4.0
5.0
6.0
.NET

1991
1994
1996
1998
2002

DA
DA
DA
DA
DA

DA
DA
DA
DA
DA

DA
DA
DA
DA

44

Universitatea SPIRU HARET

Control
Creation
Edition
DA
-

Tabelul 3.1.

Instrumente
BackOffice
DA
DA

Aplicaiile informatice realizate cu VB pot interaciona cu alte aplicaii


Windows prin intermediul unor interfee specializate: OLE (Object Linking and
Embedding) legarea i ncapsularea obiectelor, ce asigur afiarea datelor din alte
aplicaii i modificarea acestor date din interiorul aplicaiei care le-a generat; COM
(Component Object Model) model de legare i comunicare ntre obiecte distribuite
Windows; ActiveX tehnologie soft Microsoft ce reunete componente OLE i
COM; DDE (Dynamic Data Exchange) schimb dinamic de date (conversaie) ntre
aplicaii Windows; ODBC (Open DataBase Connectivity) conectivitatea bazelor de
date deschise, adic posibilitatea conectrii aplicaiilor client la multiple servere de
fiiere sau de baze de date; Crystal Report sau Data Report proiectarea vizual a
rapoartelor unei aplicaii VB; Microsoft Jet Database Engine motorul sistemului
de gestiune a bazelor de date Microsoft Access (capitolul 5) ce asigur acelai limbaj
de manipulare a datelor ntre VB i Access.
Visual Basic face parte din clasa de medii de dezvoltare rapid a aplicaiilor,
RAD (Rapid Application Development), alturi de Microsoft Visual C++, Power
Builder, Borland Delphi .a. ce prezint urmtoarele caracteristici: realizare rapid
a aplicaiilor informatice, necesiti acceptabile de resurse informatice la execuie,
separarea proiectrii prelucrrilor de proiectarea interfeei, integreaz proiectarea
interfeei, scrierea codului, testarea i depanarea.
n cadrul pachetului de birotic Microsoft Office, a fost inclus ca limbaj de
dezvoltare un subset al Visual Basic, denumit Visual Basic for Application VBA.
3.2. Componentele de baz ale mediului integrat de dezvoltare Visual Basic
Lansarea n execuie a VB 6.0 din mediul Windows se execut astfel:
a) Se apas butonul Start de pe bara de task-uri;
b) Se parcurge succesiunea Programs (All Programs n sistemul de operare
Windows XP) - Microsoft Visual Studio 6.0 - Microsoft Visual Basic 6.0;
c) La apariia ferestrei de creare a unui nou proiect - New Project (din
fig.3.1), se apas butonul Open.

Fig.3.1. Fereastra de creare a unui nou proiect n VB


45

Universitatea SPIRU HARET

Dup aceste aciuni, apar simultan fereastra principal a mediului integrat de


dezvoltare VB (1), cutia cu instrumente Toolbox (2), fereastra de proiectare a
formularului Form Design (3), fereastra de editare a codului Code Editor (4),
fereastra Project Explorer (5), fereastra de stabilire a proprietilor Properties (6),
fereastra Form Layout (7), fereastra Immediate (8), fereastra Locals (9), fereastra
Watch (10), utilitarul Object Browser (11), aa cum sunt prezentate n fig.3.2.
Ferestrele care nu apar la pornirea VB i sunt necesare pentru lucru pot fi activate
prin urmtoarea succesiune de comenzi: bara cu meniuri View poziionare pe
denumirea ferestrei click.

Fig.3.2. Componentele de baz ale IDE Visual Basic

Fereastra principal a mediului integrat de dezvoltare VB (fig.3.3) are patru


componente: bara de meniuri (1), bara cu instrumente (2) i dou zone care
afieaz poziia (3) i dimensiunea (4) obiectului ce a fost selectat (obiectul curent).
Butoanele de pe bara cu instrumente (Toolbar) dubleaz cele mai utilizate comenzi
din bara de meniuri i au destinaia prezentat n fig.3.3. Meniurile contextuale
cuprind comenzi rapide pentru aciunile efectuate n mod frecvent. Pentru
deschiderea unui meniu contextual se poziioneaz vrful mouse-ului pe obiectul
care trebuie folosit, se apas butonul din dreapta mouse-ului, se selecteaz
comanda dorit concomitent cu click executat cu butonul din stnga mouse-ului.
Cutia cu instrumente, Toolbox (fereastra 2 din fig.3.2), asigur instrumentele
predefinite folosite n timpul proiectrii formularului pentru a introduce controale
pe acesta. Utilizatorul poate crea propriile controale, imagini sau grafic prin
46

Universitatea SPIRU HARET

selecia opiunii AddTab din meniul contextual. Rolul fiecrui instrument este
prezentat n paragraful 3.3.2.
Fereastra de proiectare a formularului, Form Design (fereastra 3 din
fig.3.2), este fereastra pentru realizarea interfeei dintre utilizator i secvenele de
program. Aceast fereastr este prezentat n detaliu n paragraful 3.3.2.
Fereastra de editare a codului, Code Editor (fereastra 4 din fig.3.2), este
folosit ca editor de texte pentru a introduce codul aplicaiei informatice. Fiecare
formular sau modul de cod din cadrul aplicaiei informatice dispune de propria
fereastr de editare a codului. Detaliile sunt prezentate n paragraful 3.3.4.

Fig. 3.3. Componentele ferestrei principale a VB 6.0

Fereastra Project Explorer (fereastra 5 din fig.3.2 i fig.3.4) servete numai


la proiectarea aplicaiei pentru afiarea coleciei de fiiere ce conin formularele i
modulele din cadrul proiectului aflat n lucru (curent). Unele fiiere sunt ncrcate
n mod automat de ctre sistem, iar alte fiiere sunt realizate de ctre utilizator
(programator). Fiierele care se gsesc n fereastr (proiect) se pot grupa pe
categorii cu ajutorul butonului Toggle Folders. Butonul View Object servete
pentru vizualizarea obiectului selectat (current), iar butonul View Code este folosit
pentru vizualizarea codului.
Fereastra de stabilire a proprietilor, Properties (fereastra 6 din fig.3.2)
asigur afiarea valorilor proprietilor pentru formularul sau controlul selectat. O
proprietate reprezint o caracteristic a unui obiect (titlu, dimensiuni, poziie,
culoare etc.). Aceast fereastr de stabilire a proprietilor este prezentat n detaliu
n paragraful 3.3.3.
47

Universitatea SPIRU HARET

Fereastra Form Layout (fereastra 7 din fig.3.2) este folosit pentru vizualizarea aspectului formularului.
Fereastra Immediate (fereastra 8 din fig.3.2) este o fereastr suplimentar
utilizat n procesul de depanare a aplicaiilor informatice rulate din interiorul
mediului IDE. Mediul VB 6.0 permite funcionarea n trei moduri de lucru:
proiectare (design mode), rulare normal (run mode) i execuie cu ntrerupere
(break mode). Execuia cu ntrerupere (pas cu pas) se utilizeaz la depanarea
aplicaiei pe baza punctelor de ntrerupere (breakpoints) stabilite n prealabil.
Fereastra Immediate permite introducerea de secvene de cod care se execut
imediat sau afiarea valorilor unor expresii.
Fereastra Locals (fereastra 9 din fig.3.2) este destinat, la depanarea
programelor VB, pentru afiarea valorilor unor expresii din program.
Fereastra Watch (fereastra 10 din fig.3.2) este, de asemenea, o fereastr
suplimentar utilizat n procesul de depanare a programelor VB, pentru gestiunea
variabilelor i expresiilor watch, adic a valorilor unor variabile i expresii din
program existente n momentul aciunii (curente). Utilizarea ferestrei Watch este
posibil prin intermediul meniului contextual.

Fig.3.4. Fereastra Project Explorer a VB 6.0

Utilitarul Object Browser (fereastra 11 din fig.3.2) realizeaz afiarea


obiectelor disponibile n IDE ce pot fi utilizate de proiect. Utilitarul servete, de
asemenea, pentru a examina obiecte din VB i din alte aplicaii, pentru a constata
ce metode i proprieti sunt disponibile n cazul acestor obiecte i pentru a prelua
coduri de program n propria aplicaie informatic.
Editorul de meniu (Menu Editor) permite proiectarea meniurilor asociate
formularelor. Pentru afiarea ferestrei corespunztoare (fig.3.5), se apas butonul
cu acelai nume de pe bara cu instrumente (fig.3.3) sau prin opiunea Menu Editor
din meniul Tools. Fiecare meniu are nume, proprieti i mod de accesare asociat.
48

Universitatea SPIRU HARET

Fig.3.5. Fereastra corespunztoare editorului de meniu (Menu Editor)

3.3. Proiectarea aplicaiilor n limbajul Visual Basic


Pentru a proiecta o aplicaie informatic n limbajul Visual Basic, este
necesar parcurgerea urmtoarelor trei etape:
1. Crearea interfeei.
2. Precizarea proprietilor.
3. Scrierea codului.
Crearea interfeei se efectueaz cu ajutorul formularelor (Forms). Acestea
servesc pentru a genera ferestre i casete de dialog, n calitate de containere pentru
elemente care se gsesc n partea ascuns a aplicaiei. Precizarea proprietilor se
realizeaz prin intermediul ferestrei Properties, dup selecia prealabil a
obiectului. Scrierea codului se execut folosind fereastra de editare a codului, Code
Editor. Crearea aplicaiilor n VB se face n modul de proiectare Design Mode, iar
execuia acestora se efectueaz n modul de rulare normal, Run Mode. nainte de
prezentarea n detaliu a celor trei etape de proiectare a unei aplicaii n VB, se
trateaz fiierul proiect.
3.3.1. Fiierul proiect
Termenul de proiect n VB este similar cu aplicaia informatic, astfel c el
cuprinde o list a fiierelor care intr n compunerea aplicaiei. Fiierul proiect este
un fiier text cu extensia .VBP. Mediul de dezvoltare VB 6.0 asigur posibilitatea
lucrului cu mai multe proiecte concomitent, proiecte ce sunt reunite ntr-un grup de
proiecte (fiierul grup de proiecte are extensia .VBG). n lista de fiiere a unui
proiect pot fi incluse urmtoarele tipuri de fiiere:
fiier pentru formular (.FRM);
fiier pentru formular care cuprinde controale cu proprieti care prezint
ca valori date binare (.FRX);
fiier pentru clas de module (.CLS);
fiier pentru modul standard (.BAS);
fiier pentru control utilizator (.VBX DDL-uri pentru controale pe 16 bii
i .OCX - DDL-uri pentru controale pe 32 de bii ).
49

Universitatea SPIRU HARET

Din punctul de vedere al utilizatorului, proiectul are n compunere module


existente n mediul integrat de dezvoltare (IDE) Visual Basic, n format binar, i
module realizate de utilizator (formular, cod, clas). Aa cum s-a precizat n
paragraful 2.3 (fig.2.5), modulul reprezint un termen generic care desemneaz
entitatea de structurare a unui program. Modulele sunt reutilizabile, ceea ce
nseamn c un modul folosit ntr-un program, poate fi utilizat ulterior i n alte
programe. Modulul definete reguli de vizibilitate adic elementele declarate n
interiorul lui pot fi sau nu pot fi vizibile n exteriorul acestui modul. Orice proiect
trebuie s includ cel puin un modul (modul de formular sau modul de cod).
Atunci cnd au fost definite toate componentele unui proiect, acesta poate fi
transformat direct ntr-un fiier executabil (.EXE), astfel:
1) din meniul File (fig.3.6, opiunea notat 6), se selecteaz opiunea Make
EXE;
2) se introduce numele fiierului executabil n caseta File Name i se apas butonul
OK.

Fig.3.6. Meniul File

Crearea, deschiderea i salvarea unui proiect (fig.3.6) se efectueaz prin


intermediul comenzilor disponibile n meniul File, astfel:
New Project (1) servete pentru crearea unui proiect nou, adugnd un nou
formular i, eventual, module, referine i obiecte utilizator cuprinse n fiierul
Auto32ld.VBP;
Open Project (2) deschide un proiect existent, cu formularele, modulele i
obiectele utilizator listate n fiierul proiect;
Save Project As(5) asigur prima salvare a proiectului n lucru sau
schimbarea numelui unui proiect existent pentru conservarea stadiului la care s-a
ajuns i continuarea lucrului cu un alt nume de proiect;
Save Project actualizeaz, prin salvare pe disc, fiierul proiect al aplicaiei
existente mpreun cu toate formularele, clasele de module i modulele standard.
50

Universitatea SPIRU HARET

Aa cum se deduce din descrierea opiunilor de salvare a proiectului de mai


sus, realizarea aplicaiei este terminat atunci cnd se selecteaz comanda Save
Project As(5) din meniul File sau cnd se selecteaz butonul Save Project din
linia de butoane. Mediul Visual Basic solicit salvarea, pe rnd, a formularului i
apoi a proiectului prin introducerea numelui, dar i a unitii logice de memorie,
precum i a cii unde se dorete a avea loc salvarea. n mod implicit, mediul Visual
Basic asigur salvarea n locaia C:\Program Files\Microsoft Visual Studio\VB98
(Save In). Pentru salvarea unui proiect, se recomand particularizarea numelui
proiectului i folosirea unei uniti logice de memorare i a unei ci personalizate a
utilizatorului pentru fiecare proiect, ca, de exemplu:
Homes(D:)\Student\Facultatea\Grupa\Nume_prenume_student\Nume proiect.
Cnd se lucreaz cu mai multe proiecte, la un anume moment un singur proiect
este activ. ntre aceste proiecte cu care se lucreaz simultan, se pot partaja fiiere. Un
fiier, cum este, de exemplu, un formular, poate aparine mai multor proiecte.
Crearea unor formulare, module i controale noi se efectueaz cu comenzile
din meniul Project (fig.3.7).

Fig. 3.7. Meniul Project

3.3.2. Crearea interfeei aplicaiei


Crearea interfeei unei aplicaii se realizeaz cu ajutorul unui obiect denumit
formular (Form). n multe lucrri destinate VB, echivalentul romnesc pentru
Form este form. n lucrarea de fa s-a preferat denumirea de formular, dei cea
de form este mai apropiat de termenul n limba englez (crearea formularului
nseamn de fapt turnarea controalelor ntr-o form adecvat interfeei aplicaiei).
Motivul preferinei pentru formular este asigurarea lizibilitii apariiei denumirii
acestui obiect n explicaiile din cuprinsul lucrrii, dei, n dicionarele limbii
romne, formularul, n general, este definit ca un imprimat cu mai multe spaii albe
ce se completeaz n vederea ntocmirii unui tabel.
51

Universitatea SPIRU HARET

Formularul este un container de controale care faciliteaz dialogul dintre


utilizator i aplicaie. Controalele nu pot funciona n afara formularului. Ele sunt
obiecte care elibereaz programul de sarcinile legate de intrrile i ieirile generate
de aciunile utilizatorului, concentrnd eforturile pe operaiile de prelucrare a
datelor. Avantajul controalelor din VB este c ele se aseamn foarte mult cu
controalele standard ce apar n sistemul de operare Windows (meniuri, butoane,
casete). Controalele uureaz munca de programare n sensul c sunt eliminate
instruciunile care s ghideze utilizatorul asupra aciunilor pe care acesta trebuie s
le ntreprind. La proiectarea interfeei aplicaiei (Design Mode), fereastra de
proiectare a formularului servete pentru dispunerea controalelor necesare proiectului.
La rularea programului (Run Mode), formularul ndeplinete rolul de
fereastr principal a proiectului sau de fereastr de dialog.
La pornirea mediului VB, fereastra de proiectare a formularului cu numele
implicit (default) Form1 este dispus n centrul ecranului. n interiorul acestei
ferestre se gsesc linii punctate cu rolul de a asigura orientarea utilizatorului, iar la
marginea ferestrei sunt dispuse mnerele de redimensionare a formularului. Este
bine ca, nc de la crearea formularului, s se opteze pentru o dimensiune potrivit
a formularului n raport cu numrul de controale introduse i de dimensiunile
acestora; nu este estetic i nici practic s rmn zone mari nefolosite pe suprafaa
formularului.
Un formular include descrierea grafic a acestuia, controalele sale,
proprietile, constantele, variabilele i procedurile externe, subrutinele de tratare a
evenimentelor, procedurile generale. Fiecrui formular i corespunde un modul de
formular (Form Module).
Clasa de module (Class Module) este asemntoare formularului, dar nu
dispune de interfa utilizator vizibil. Clasa de module poate fi folosit pentru
crearea obiectelor utilizator, cuprinznd secvene de cod pentru metodele i
proprietile obiectelor definite. Obiectele care aparin aceleai clase nu sunt
nzestrate cu evenimente proprii.

Fig.3.8. Caseta cu instrumente (ToolBox)


52

Universitatea SPIRU HARET

Mediul VB asigur interfa pentru un singur document (SDI) sau interfaa


multidocument (MDI). n cazul SDI, toate ferestrele mediului VB pot fi deplasate
pe ecran, iar n cazul MDI, toate ferestrele mediului integrat de dezvoltare VB
(numite fii) sunt incluse ntr-o fereastr unic (numit printe) ce poate fi
redimensionat. Pentru a obine comutarea ntre modurile de lucru SDI i MDI se
realizeaz urmtoarea succesiune de aciuni:
1) se selecteaz Options (opiuni) din meniul Tools; efectul este apariia
casetei de dialog Options;
2) se selecteaz Advanced;
3) se valideaz sau se invalideaz caseta SDI Developement Environement.
n fig.3.8. sunt prezentate controalele implicite incluse n caseta cu
instrumente (Toolbox). Controalele standard sunt butoanele de comand (nr.14,
Command Button), casetele cu text (nr.13, TextBox), etichetele (nr.2, Label),
casetele de validare (nr.4, Check Box), butoanele de opiuni (nr.15, Option Button),
casetele cu list (nr.16, ListBox), casetele cu imagine (nr.12, PictureBox), barele de
defilare (nr.6 i nr.17, ScrollBar) orizontale i verticale, casetele combinate
(ComboBox).
Se face meniunea c aceast caset cu instrumente (Toolbox) este
configurabil. Adugarea sau scoaterea de controale din caseta cu instrumente
(Toolbox) se obine din meniul Project, opiunea Components (opiunea 8 din
fig.3.7), n care se valideaz controlul dorit (aa cum este prezentat n fig.3.9 pentru
controlul Shockwave Flash).

Fig.3.9. Modul de adugare a unui control


la cutia cu instrumente (Toolbox)
53

Universitatea SPIRU HARET

Introducerea unui control din cutia cu instrumente (Toolbox) pe suprafaa


formularului se obine prin parcurgerea etapelor urmtoare:
a) se deplaseaz cursorul mouse-ului n cutia cu instrumente (Toolbox), pe
pictograma care reprezint controlul ce urmeaz a fi introdus n formular i se
acioneaz butonul din stnga al mouse-lui;
b) se mut cursorul mouse-ului pe suprafaa formularului, n poziia n care
va fi colul stng al controlului;
c) se efectueaz succesiunea de operaii de tipul Drug and Drop pn se
dimensioneaz dup dorin controlul selectat;
d) se elibereaz butonul stng al mouse-ului.
O alt modalitate de introducere a controlului selectat pe suprafaa
formularului este reprezentat de dublu-click-ul mouse-ului pe pictograma (icon-ul)
controlului din cutia cu instrumente (Toolbox). Se genereaz astfel un control cu
dimensiunile implicite, dispus n centrul formularului.
Dispunerea controalelor pe suprafaa formularului se face dup o anumit
logic legat de succesiunea operaiilor importante de introducere date, prelucrare
i afiare rezultate. Fiecare control este caracterizat de un ansamblu de proprieti
ce se refer la descrierea comportamentului sau aspectului unui control. Limea
sau nlimea unui control se msoar n twip (un twip reprezentnd cel mai mic
punct adresabil de pe ecran, cu dimensiunea de 1/1440 inch). Aa cum se va arta
n paragraful urmtor, fereastra Properties permite modificarea ntre limite
prestabilite a valorilor diferitelor proprieti ale controalelor.
Focalizarea reprezint operaiunea de punere n eviden a unui control la un
moment dat; mai precis, acel control devine activ prin focalizare. Acel control
activ se mai numete i focar (focus). Acest lucru se pune n eviden printr-o linie
punctat n jurul controlului sau printr-un titlu ngroat. Mutarea focarului de la un
control la altul se efectueaz prin intermediul tastelor Tab sau Shift+Tab. Apsarea
tastei Enter va determina aciunea controlului focar sau focalizat.
Ordinea de parcurgere a controalelor n formular reprezint ordinea n care
controalele sunt puse n eviden prin focalizare, o dat cu apsarea succesiv a
tastei Tab. n momentul activrii formularului, este stabilit primul control care este
focalizat. Proprietile comune tuturor controalelor din formular care stabilesc
ordinea de parcurgere a controalelor sunt TabIndex (poziia) i TabStop (oprirea).
Ordinea de parcurgere a controalelor este circular i n ambele sensuri nainte
(Tab) i napoi (Shift+Tab).
Un control poate include o tast fierbinte (Hot Key) ce este evideniat
printr-o liter subliniat. Prin aciunea Alt+litera subliniat, se provoac aciunea
controlului respectiv. Litera subliniat se introduce cu ajutorul proprietii Caption
prin precedare de un ampersand (&).
Redimensionarea unui control introdus deja pe suprafaa formularului se
obine astfel:
1) se selecteaz controlul de redimensionat prin click executat cu mouse-ul n
interiorul suprafeei acestui control. Pe marginile controlului apar mnerele de
redimensionare;
2) se fixeaz cursorul mouse-ului n dreptul unui mner de redimensionare i se
mic innd apsat butonul stng al mouse-ului, pn se obine dimensiunea dorit.
Mnerele situate n colurile suprafeei controlului redimensioneaz controalele
att pe vertical, ct i pe orizontal, iar mnerele dispunse pe laturi redimensioneaz
controlul numai ntr-o singur direcie;
54

Universitatea SPIRU HARET

3) se elibereaz butonul stng al mouse-ului.


Mutarea unui control pe suprafaa formularului se realizeaz cu mouse-ul
prin tehnica Drug and Drop.
Dup finalizarea proiectrii formularului, blocarea tuturor controalelor pe
suprafaa formularului se obine din meniul Format cu opiunea Lock Controls sau
cu butonul Lock Controls Toggle de pe bara cu instrumente Form Editor.
Formularele sau controalele VB au asociate, n cadrul proiectului, proceduri
eveniment vide care sunt personalizate n momentul execuiei aplicaiei.
Pentru exemplificarea etapei de creare a interfeei aplicaiei, n continuare se
propune s se introduc controalele pentru un formular care s constituie interfaa
pentru urmtoarea aplicaie informatic:
S se realizeze un program n limbajul Visual Basic care s calculeze
valoarea total a unei facturi de materiale. Deocamdat, factura conine un singur
material la o rulare a programului. Datele de intrare sunt: numr factur (Nrf), data
facturii (Df), codul materialului (Codmat), denumirea materialului (Denmat),
cantitate (Cant) i preul unitar al materialului (Pu). TVA este de 19%. Datele de
intrare vor fi introduse cu ajutorul casetelor text (Text Box) cu etichete pentru
fiecare dintre ele.
Rezultatele rulrii programului se vor afia n casete text separate pentru
valoare material fr TVA (Vmftva), valoare material cu TVA (Vmctva), valoare
factur fr TVA (Vfftva) i valoare factur cu TVA (Vfctva).
Se vor prevedea butoane de comand (Command Button) pentru calculul i
afiarea unui material (fr TVA i cu TVA) butonul CALCULEAZA i pentru
calculul valorii facturii (fr TVA i cu TVA) butonul AFISEAZA.
Pentru afiarea denumirilor pentru datele de intrare (Nrf, Df, Codmat,
Denmat, Cant i Pu), a datelor intermediare (Vmftva i Vmctva) i a datelor de
ieire sau rezultatelor (Vfftva i Vfctva), se folosesc controale de tip etichet
(Label). Aceste controale de tip etichet se gsesc n caseta cu intrumente
(Toolbox) cu simbolul grafic prezentat n fig.3.8. Controalele se introduc n
formular prin tehnica Drug and Drop i se dimensioneaz cu ajutorul mnerelor de
dimensionare (Label1Label10). n mod similar se procedeaz cu casetele text
(Text Box) cu simbolul grafic prezentat n fig.3.8, casete care servesc, n cazul
formulat n enunul aplicaiei informatice (un singur material pe factur), pentru
introducerea datelor de intrare i afiarea datelor intermediare i de ieire
(Text1Text2), precum i cu butoanele de comand (Command Button) ce se vor
folosi pentru declanarea procedurilor de calcul (Command1), de afiare a valorii
facturii (Command2) i de ieire din program (Command3). Aspectul formularului
astfel obinut este prezentat n fig.3.10.
3.3.3. Precizarea proprietilor
Precizarea proprietilor n etapa de proiectare (Design Mode) a formularului
sau a altui obiect vizual se realizeaz cu ajutorul ferestrei Properties (fig.3.11.).
Fereastra Properties este format din caseta cu obiecte, Objects (afieaz numele
i tipul obiectului selectat, adic obiectul curent) i caseta Settings setri
(afieaz alfabetic sau pe categorii lista proprietilor stnga i lista cu valorile
sau setrile proprietilor dreapta).
55

Universitatea SPIRU HARET

1
Fig.3.10. Crearea formularului pentru
aplicaia informatic cu factura de materiale

Fig.3.11. Fereastra Properties


56

Universitatea SPIRU HARET

Activarea ferestrei Properties se poate obine prin succesiunea de comenzi


meniu principal View Properties Window sau cu ajutorul tastei funcionale F4.
Precizarea proprietilor se obine prin parcurgerea urmtoarele etape:
1) dac nu este afiat, se activeaz fereastra Properties; se selecteaz
obiectul cruia urmeaz s i se precizeze proprietile; n acest moment, se afieaz
automat proprietile cu valorile implicite pentru obiectul selectat;
2) din lista alfabetic sau lista pe categorii a proprietilor se selecteaz
denumirea proprietii la care se vor modifica valorile sau setrile existente;
3) n coloana valorilor sau setrilor din dreapta se tasteaz sau se selecteaz
valorile dorite pentru proprietate.
Pentru a asocia o pictogram unui formular se atribuie o valoare proprietii
icon pentru acel formular.
Pentru exemplificarea etapei de precizare a proprietilor, se continu
aplicaia cu factura materiale din paragraful 3.3.2, precizndu-se proprietile de
baz Name i Caption pentru formular i controalele introduse de tipul Label,
TextBox (numai Name) i Command Button prin selectarea succesiv a acestora.
Personalizarea numelui pentru formular se obine prin introducerea n
fereastra Properties a numelui (Name) frmMat i a etichetei (Caption) FACTURA
MATERIALE.
Personalizarea numelui pentru controalele de tip etichet (Label) se obine
prin introducerea n fereastra Properties a numelui (Name) lblNrf i a etichetei
(Caption) Numar factura, respectiv:
lblDf (Name), Data factura (Caption);
lblCodmat (Name), Cod material (Caption);
lblDenmat (Name), Denumire material (Caption);
lblCant (Name), Cantitate (Caption);
lblPu (Name), Pret unitar (Caption);
lblVmftva (Name), Valoare material fara TVA (Caption);
lblVmctva (Name), Valoare material cu TVA (Caption);
lblVfftva (Name), Valoare factura fara TVA (Caption);
lblVfctva (Name), Valoare factura cu TVA (Caption).
Personalizarea numelui pentru controalele de tip caseta cu text (TextBoxl) se
obine prin introducerea n fereastra Properties a:
txtNrf (Name) pentru Numar factura;
txtDf (Name) pentru Data factura;
txtCodmat (Name) pentru Cod material;
txtDenmat (Name) pentru Denumire material;
txtCant (Name) pentru Cantitate;
txtPu (Name) pentru Pret unitar;
txtVmftva (Name) pentru Valoare material fara TVA;
txtVmctva (Name) pentru Valoare material cu TVA;
txtVfftva (Name) pentru Valoare factura fara TVA;
txtVfctva (Name) pentru Valoare factura cu TV.
Personalizarea numelui pentru controalele de tip butoane de comand
(Command Button) se obine prin introducerea n fereastra Properties a:
cmdCalcul (Name), CALCULEAZA (Caption);
cmdAfisare (Name), AFISARE VALOARE FACTURA (Caption);
cmdExit (Name), IESIRE (Caption).
57

Universitatea SPIRU HARET

Explicaiile privind formarea numelui obiectelor cu prefixe standard vor fi


date n paragraful 3.4.1.
Aspectul formularului obinut prin precizarea proprietilor formularului i
controalelor incluse este prezentat n fig.3.12.

Fig.3.12. Introducerea proprietilor formularului i controalelor incluse


pentru aplicaia informatic cu factura de materiale

3.3.4. Scrierea codului


Dup proiectarea formularului i precizarea proprietilor, urmeaz scrierea
codului care const n asocierea unor secvene de cod pentru toate controalele din
formular, adic moduri de aciune la diverse evenimente.
Codul conine constante, declaraii de variabile i instruciuni scrise n
limbajul de programare Visual Basic, n conformitate cu algoritmul de calcul.
Legarea efectiv de control sau fereastr a secvenelor de cod se obine de ctre
utilizator (programator) n mod conversaional.
Pentru scrierea codului se deschide fereastra de editare a codului (Code
Editor), fig.3.13., prin dublu-click executat cu butonul stng al mouse-ului
poziionat pe obiectul selectat.
Fereastra de editare a codului (Code Editor) este format din fereastra
principal ce reprezint zona pentru scrierea codului i dou casete de tip list din
care se selecteaz controlul pentru care se scrie codul (Object) i, respectiv, din
care se alege evenimentul la care se reacioneaz prin codul scris pentru procedur
n fereastra principal (Procedure).
Codul din proiectele realizate n VB se divide n blocuri de dimensiuni mai
mici numite proceduri. Codul care corespunde unui eveniment se numete
procedur eveniment. Procedura-eveniment asociat unui control are numele
alctuit din numele controlului (stabilit n proprietatea Name), o liniu de
subliniere (_) i numele evenimentului.
58

Universitatea SPIRU HARET

Fig.3.13. Fereastra editare a codului, Code Editor

Atunci cnd se deschide fereastra de cod i se selecteaz evenimentul pentru


care se scrie codul, se genereaz automat prima i ultima linie a procedurii (Private
Sub Form_Load () i End Sub) ce constituie un ablon de lucru.
Pentru crearea unei proceduri-eveniment se execut urmtoarea succesiune
de aciuni: caseta Object se specific numele obiectului din formularul curent
(adic cel care este focalizat) pentru care se scrie codul caseta cu list
Procedure selecie nume eveniment asociat obiectului selectat (de exemplu,
procedura Click implicit pentru controlul buton de comand, Command Button)
ablon pentru procedura-eveniment ntre declaraiile Private Sub i End Sub,
se introduce de la tastatur codul n conformitate cu algoritmul de calcul.
Se poate opta pentru afiarea tuturor procedurilor n aceeai fereastr de cod
sau pentru afiarea unei singure proceduri la un moment dat.
Pentru afiarea tuturor procedurilor n cadrul aceleiai fereastre de cod, se
execut clic pe butonul de vizualizare a ntregului modul, Full Module View
(fig.3.13.), n colul din stnga-jos al ferestrei de editare a codului, Code Editor sau
se execut urmtoarea succesiune de aciuni: meniul Tools caseta de dialog
Options (fig.3.12.) seciunea Editor (1) grupul de setri pentru fereastr,
Window Settings (2), bif n caseta de validare din stnga lui Default to Full
Module View (3). n acelai grup de setri pentru fereastr, caseta de validare din
stnga lui Procedure Separator (4) servete la adugarea sau eliminarea unei linii
de separaie ntre proceduri (fig.3.14.).
Pentru afiarea unei singure proceduri la un moment dat, se execut click pe
butonul de vizualizare a procedurii, Procedure View (fig.3.13.), n colul din
stnga-jos al ferestrei de editare a codului, Code Editor sau se execut urmtoarea
succesiune de aciuni: meniul Tools caseta de dialog Options (fig.3.14.)
seciunea Editor (1) n grupul de setri pentru fereastr, Window Settings (2), se
terge bifa din caseta de validare din stnga lui Default to Full Module View (3).
59

Universitatea SPIRU HARET

Fig.3.14. Fereastra de opiuni, Options a meniului de instrumente, Tools

Pentru exemplificarea etapei de scriere a codului unei aplicaii informatice n


Visual Basic, se continu aplicaia cu factura de materiale din paragrafele 3.3.2 i
3.3.3. Codul aferent se introduce n fereastra de editare a codului (Code Editor)
care a fost prezentat n fig.3.13. Explicaiile privind logica scrierii acestui cod vor
fi date n paragraful 3.4. Codul pentru aplicaia cu factura de materiale este
prezentat n fig.3.15.
3.3.5. Execuia aplicaiei informatice n Visual Basic
Dup parcurgerea etapelor de creare a interfeei (proiectarea formularului), de
precizare a proprietilor i de scriere a codului, toate fiierele aplicaiei sunt
salvate i se trece de la modul de proiectare (Design Mode) la modul de rulare
(execuie) a proiectului (Run Mode).
Pentru a lansa n execuie aplicaia, se alege opiunea Start din meniul Run
(fig.3.16) sau se acioneaz tasta funcional F5 sau se execut cu butonul stng al
mouse-ului click pe butonul Start de pe bara cu instrumente.
Terminarea rulrii proiectului se efectueaz cu opiunea End din meniul Run
(fig.3.16) sau prin apsarea butonului de nchidere (Close) a ferestrei aplicaiei
(colul din dreapta sus al ferestrei) sau prin apsarea butonului End de la bara cu
instrumente (fig.3.3). Dup terminarea execuiei aplicaiei, mediul VB revine n
modul de proiectare (Design Mode).
Prin rularea proiectului, se obine fiierul executabil. Aa cum s-a artat n
paragraful 3.3.1, fiierul executabil se poate obine direct din meniul File cu
opiunea Make EXE (fig.3.3).
60

Universitatea SPIRU HARET

Fig.3.15. Codul pentru aplicaia cu factura de materiale introdus


n fereastra de editare a codului

Relund aplicaia cu factura de materiale din paragrafele 3.3.2, 3.3.3 i


3.3.4, aceast aplicaie se ruleaz cu seturile de date de intrare prezentate n tabelul
3.2 (se consider materiale consumabile pentru tehnica de calcul, iar pentru
simplificare nu se introduc unitile de msur, acestea fiind topuri, buci, role,
cutii) i se obin rezultatele prezentate n fig.3.17, pentru setul de date nr.2 din
tabelul 3.2.
61

Universitatea SPIRU HARET

Fig.3.16. Comanda execuiei unei aplicaii n VB


Tabelul 3.2.
Exemple de seturi de date de intrare pentru aplicaia
cu factura de materiale consumabile pentru tehnica de calcul
Nr.
crt.
1
2
3
4
5

Numar
factura
16844
16844
16844
16844
16844

Data
factura
16/10/2004
16/10/2004
16/10/2004
16/10/2004
16/10/2004

Cod
material
41000825
41081320
41061223
41081422
41061154

Denumire
material
Hirtie xerox
Cartus imprimanta
Hirtie fax
Ribon
Toner copiator

Cantitate
30
5
5
10
3

Fig.3.17. Rezultatele rulrii aplicaiei cu factura de materiale


cu setul nr.2 de date de intrare din tabelul 3.2.
62

Universitatea SPIRU HARET

Pret
unitar
120000
4280000
230000
620000
1200000

3.4. Elementele limbajului de programare Visual Basic


3.4.1. Unele reguli de scriere
O proprietate esenial a unui obiect n Visual Basic este numele (Name).
Numele este folosit pentru a referi un obiect particular n cadrul codului. Numele
obiectului trebuie s fie sugestiv i s arate, n cazul controalelor, grupul de
controale cruia i aparine. Ca urmare, s-a adoptat convenia conform creia un
nume trebuie s fie format dintr-un prefix din trei litere (dat de notaia ungar) i
numele propriu-zis cu semnificaie pentru utilizarea obiectului. Prefixul numelui
(Tabelul 3.3) indic, n mod unic, grupul de controale din care face parte.
Tabelul 3.3.
Stabilirea numelor unor obiecte n Visual Basic
Nume obiect
Data
Form
Command Button
Label
TextBox
Menu
Check Box
Frame
Image
List Box
Option Button
Picture Box

Prefix standard
dat
frm
cmd, btn
lbl
txt
mnu
chk
fra
img
lst
opt
pic

Exemple
datSalarii
frmMateriale, frmClienti
cmdCalcul, btnExit
lblDobinda, lblSumaInitiala
txtDobinda, txtSumaInitiala
mnuEvaluare
chkImpozit
fraSelectie
imgOrase, imgProfesori
lstDiscipline, lstStudenti
optCursuri
picTools

Numele obiectelor pot avea maxim 40 de caractere, trebuie s nceap cu o


liter i pot conine numai litere, numere i underscore ( _ ). n cadrul mai larg al
ntregului limbaj Visual Basic, cu setul de caractere ASCII extins ce formeaz
alfabetul acestui limbaj, se construiesc literalii i identificatorii. Literalii sunt
compui din iruri de caractere. Literalii pot fi de tipul literali iruri de caractere i
sunt scrii ntre ghilimele, i de tipul literali numerici zecimali (n baza 10), octali
(n baza 8), hexazecimali (n baza 16). Identificatorii pot fi predefinii (cuvinte
rezervate i cuvinte-cheie ce desemneaz instruciuni, funcii, operatori, metode)
sau pot fi definii de utilizator (ce desemneaz obiecte, variabile, tipuri de date,
constante, etichete, proceduri). Instruciunile specifice limbajului Visual Basic se
obin prin combinarea literalilor, identificatorilor i cuvintelor rezervate. Pentru
lizibilitatea codului, fiecare instruciune se scrie pe o linie separat. Dac o
instruciune nu ncape pe o linie, se poate continua pe linia urmtoare prin
caracterul underscore (_). Se pot folosi 20 astfel de linii de continuare a unei
instruciuni.
Numele sunt folosite la setarea proprietilor la momentul execuiei i n
stabilirea numelor procedurilor pentru evenimentele obiectelor. Setarea
proprietilor la momentul execuiei se obine prin scrierea unui cod. Formatul
acestui cod se scrie prin notarea cu punct i este:
Nume obiect. proprietate = noua valoare
(Object Name. Property = New value).
63

Universitatea SPIRU HARET

n Visual Basic, numele obiectelor sunt utilizate n setarea unui cadru de


lucru (framework) corespunztor procedurilor eveniment, pentru scrierea codului.
Formatul fiecrei subrutine (n Visual Basic nu exist program principal; toate
procedurile obiectelor sunt subrutine) este:
Private Sub Object Name_Event (Optional Arguments)

End Sub.
Formularului i se ataeaz un obiect. Visual Basic construiete automat un
cadru de lucru (framework) pentru fiecare dintre procedurile eveniment. Utilizatorul
care construiete aplicaia trebuie s scrie codul procedurilor eveniment la care
corespunde aplicaia.
3.4.2. Tipuri de date
Tipurile de date reprezint natura datelor n cadrul unui limbaj de programare. n limbajul Visual Basic, tipurile de date sunt predefinite (standard) sau
definite de utilizator. n tabelul 3.4 sunt prezentate tipurile de date predefinite cele
mai utilizate.
Tabelul 3.4.
Tipurile de date predefinite n Visual Basic
Tip romn

Tip englez

Octet

Byte

ntreg
ntreg lung

Integer
Long
(integer)
Boolean
Single
(floating)
Double
(floating)
Currency
Date
Object
String

#
@
$

Variant

Logic
Real simpl
precizie
Real dubl
precizie
Moned
Dat
Obiect
ir de
caractere
Nedefinit

Sufix

Interval de valori (domeniu)

Memorie
ocupat
1

%
&

2
4

-32768+32767
2.147.483.648+2.147.483.647

2
4

True, False
-3,40 e38+3,40 e38

-1,8 e308+1,8 e308

8
8
4
1 octet/
caracter
-

-9,22 e14+9,22 e14


Jan 01/100-dec 31/9999
Adresa unui obiect
ir de caractere alfanumerice

0255

ir, numere, dat

Tipurile de date definte de utilizator se obin prin combinarea mai multor


tipuri de date existente n structuri de date.
Declararea tipurilor de date definite de utilizator se efectueaz n seciunea
Declaration (din modulul standard) cu TypeEnd Type care are sintaxa general:
[Private/Public] Type nume_tip_data_utilizator
Nume_1 As tip_data_1
64

Universitatea SPIRU HARET

Nume_2 As tip_data_2

Nume_n As tip_data_n
End Type
Tipurile de date definite de utilizator se declar la nivelul modulelor standard,
de clas sau formular (numai Private). Aceste tipuri de date nu pot fi declarate la
nivelul unei proceduri.
De exemplu, tipul de date definite de utilizator Client are urmtoarea structur:
Type Client
Nume_client As String *20
Prenume_client As String *20
Adresa_client As Adresa
CNP_client As String *13
End Type
unde tipul de date definit de utilizator Adresa are structura:
Type Adresa
Localitate As String *20
Strada As String *20
Numar As Integer
Judet As String *20
End Type
3.4.3. Variabile i constante
Variabilele care se folosesc ntr-un program desemneaz locaii de memorie
n care se stocheaz valori ce se modific pe timpul execuiei programului. O
variabil n limbajul Visual Basic are un nume (identificator) format astfel:
maxim 40 de caractere;
numele include: litere, numere, underscore ():
primul caracter trebuie s fie o liter;
nu se pot folosi ca nume de variabile, cuvintele rezervate, care fac parte din
setul de cuvinte cheie al limbajului.
Corespunztor variabilei care se dorete a fi creat i utilizat, utilizatorul
poate s stabileasc tipul de dat asociat prin folosirea unui sufix de natura tip de
dat care va putea fi stocat sau prelucrat prin intermediul respectivei variabile. n
tabelul 3.4 s-au prezentat tipurile de date, sufixul asociat i intervalul de valori.
Exist trei moduri de declarare a unei variabile:
a) Prin lips (din oficiu). Dac variabila nu este definit n nici un mod, ea
este presupus Variant, adic un tip de dat Visual Basic care poate conine: valori
numerice, iruri de caractere sau dat calendaristic.
b) Implicit. Declararea implicit este dat prin folosirea sufixului
corespunztor. De exemplu, o variabil de tip String (ir de caractere) poate fi
declarat implicit astfel:
Material$ = Cherestea
iar o variabil de tip Integer se poate declara implicit astfel:
Cantitatea% = 273
c) Explicit. Acest mod de declarare a unei variabile prezint mai multe
avantaje: asigur efectuarea unui calcul corect prin intermediul instruciunilor care
utilizeaz variabilele respective i permite identificarea, gestionarea corect a
65

Universitatea SPIRU HARET

apariiei literelor mari sau a literelor mici n numele variabilelor. Datorit acestor
avantaje, se prefer lucrul cu tipurile de variabile explicite.
Pentru a putea lucra cu variabile declarate explicit trebuie s fie cunoscut
domeniul de valabilitate i anume:
1) domeniul procedurilor;
2) domeniul procedurilor n care variabilele se declar static;
3) domeniul formularelor i modulelor;
4) domeniul nivelului global.
De exemplu, pentru domeniul procedurilor, variabilele sunt declarate
folosind cuvntul cheie Dim:
Dim Denumire_material As String
Dim Cantitate As Integer
Dim Pret_unitar As Single.
Variabilele declarate la nivelul procedurilor i vor pstra valorile numai pe
timpul rulrii procedurilor respective. Din acest motiv se mai numesc i variabile
locale.
Pentru ca variabilele s-i pstreze valorile i dup terminarea procedurii, se
folosete domeniul procedurilor n care variabilele se declar static, cuvntul-cheie
Dim fiind nlocuit cu Static. De exemplu:
Static Denumire_material As String.
Static Cantitate As Integer.
Static Pret_unitar As Single.
Pentru domeniul domeniul formularelor i modulelor, variabilele i menin
valorile la nivelul formularului (modulului), relativ la toate procedurile prin
declararea variabilelor cu Dim, dar n partea de declaraii a obiectului general, n
fereastra de cod a formularului.
Pentru domeniul domeniul nivelului global, o variabil este disponibil
tuturor procedurilor prezentate n aplicaie, prin declararea n partea de declaraii a
obiectului general din fereastra de cod a unui modul cu ajutorul cuvntului cheie
Global. De exemplu:
Global Nr_factura As Long
Global Data_factura As Date.
n cazul mai multor variabile cu acelai nume, variabilele locale au valabilitate numai n cadrul procedurilor. La prsirea acestor proceduri se folosesc
variabilele cu acelai nume, dar definite la nivel superior.
Procedura de introducere a acestor variabile globale este urmtoarea:
se execut dublu-click oriunde n fereastra formularului pentru a deschide
fereastra de editare a codului (sau se selecteaz opiunea View Code din fereastra
Project);
se declar variabilele din formular astfel:
Option Explicit (foreaz declararea variabilelor)
Global Nr_factura As Long
Global Data_factura As Date.
Constante simbolice utilizate n Visual Basic
n cele mai multe situaii, funciile i obiectele limbajului Visual Basic
necesit argumente pentru efectuarea operaiilor specifice, argumente care
reprezint constante numerice. Acestea sunt greu de interpretat din punct de vedere
al utilizatorului. Pentru a le face inteligibile, limbajul Visual Basic asigur nume
celor mai utilizate valori i acestea se numesc constante simbolice.
66

Universitatea SPIRU HARET

De exemplu, pentru setarea fondului formularului frmMat pe culoarea albastr


se poate scrie:
frmMat. Back Color = 0XFF0000 sau, folosind constanta simbolic pentru
albastru:
frmMat. Back Color = VBBlue
Utilizatorul i poate defini propriile constante ca de exemplu: const TVA = 0.19.
Constantele de utilizator se scriu cu litere mari, pentru a le distinge de variabile. Domeniul de valabilitate al unei constante este similar cu cel al variabilelor.
3.4.4. Instruciuni Visual Basic
3.4.4.1. Construirea expresiilor
Cea mai simpl instruciune este cea de atribuire, formatul ei este:
Let variabil = expresie. De exemplu:
Let Vmftva = Cant *Pu
Let Vfftva =Vfftva + Vmftva
Let Nume_client = Georgescu Constantin
Utilizatorul poate tasta sau nu cuvntul Let, dar este obligat s exprime
numele variabilei i expresia pe baza creia se deduce coninutul.
Vmftva = Cant *Pu
Vfftva =Vfftva + Vmftva
Nume_client = Georgescu Constantin
Instruciunile se scriu de obicei pe o singur linie fr delimitator. Pentru a
putea scrie mai multe instruciuni pe o linie se folosete separatorul :.
Observaie: se recomand folosirea atent a acestui delimitator cnd este folosit structura If End If. Dac o instruciune este foarte lung, ea poate continua
pe urmtoarea linie, folosind caracterul de continuare underscore _. De exemplu:
Print Tab(2); "COD_MATERIAL"; Tab(20); "DEN_MATERIAL"; Tab(41);
"CANT"; _
Tab(48); "PRET_UNITAR"; Tab(70); "VAL_M_FARA_TVA"; Tab(100); _
"VAL_M_CU_TVA"
Comentariile ncep cu cuvntul cheie Rem sau . De exemplu:
Rem Acesta reprezint un comentariu
Acesta reprezinta un exemplu de comentariu.
3.4.4.2. Operatori Visual Basic
Operatorii Visual Basic, n ordinea claselor de preceden, sunt prezentai n
tabelul 3.5. Precedena operatorilor (clasele de preceden) se refer la ordinea n
care se execut operaiile ntr-o expresie care conine mai multe tipuri de operatori.
Primii sunt executai operatorii de concatenare, dup care urmeaz operatorii
arithmetic, operatorii de comparare i, la sfrit, operatorii logici.
Operatorii pot fi unari (se aplic unui singur operand, de exemplu, Not) sau
binari (prezint doi operatori, de exemplu, +. -, *, /, And, Or etc.).
67

Universitatea SPIRU HARET

Tabelul 3.5.
Clasele de preceden ale operatorilor n Visual Basic
Clasa
1.
2.
3.

4.
5.

6.

Operator
And, Or, Not
Mod
<,>,<=,>=,=,<>
+
^
\
*
/
() []
&, +

Operaia
Logic
Modulo
Comparare
Adunare
Scdere
Exponeniere (ridicare la putere)
mprire ntreag
nmulire
mprire
Stabilire prioritate calcul
Concatenare ir de caractere

3.4.4.3. Funcii Visual Basic


Funcia (Function) reprezint o mulime ordonat de instruciuni creat n
scopul ndeplinirii unei sarcini (task) bine precizat i repetabil. Funcia returneaz
un singur rezultat. Funciile Visual Basic sunt predefinite sau definite de utilizator.
Visual Basic asigur o bibliotec variat de funcii predefinite. n tabelul 3.6 sunt
prezentate principalele funcii predefinite specifice limbajului Visual Basic.
Tabelul 3.6.
Principalele funcii predefinite ale limbajului Visual Basic
Funcie
Abs
Asc
Chr
Cos
Date
Format
Left
Len
Mid
Now
Right
Rnd
Sin
Sqr
Str
Time
Timer

Valoare returnat
Valoarea absolut a unui numr
Codul ASCII sau ANSI al unui caracter
Caracterul corespunztor unui cod ASCII sau ANSI
Cosinusul unui unghi
Data curent ca ir de caractere
Dat sau numr convertite la un ir de caractere
Selecteaz partea stng a unui ir de caractere
Numrul de caractere dintr-un ir de caractere (lungimea irului de caractere)
Selecteaz o parte din irul de caractere
Data i ora curent
Selecteaz partea de sfrit a unei ir de caractere
Generarea aleatoare a unui numr
Sinusul unui unghi
Rdcin ptrat dintr-un numr
Numr transformat ntr-un ir de caractere
Timpul curent dat ca ir de caractere
Numr de secunde rmase pn la miezul nopii (ora 0)

68

Universitatea SPIRU HARET

Funcii pentru iruri de caractere


Len (expresie-ir) returneaz lungimea unui ir de caractere. De exemplu:
?Len(Contabilitate si informatica de gestiune) 39
?Len(Finante si Banci) 16
LCase (expresie-ir) transform literele mari n litere mici. De exemplu:
?LCase(PIETE DE CAPITAL) piete de capital
UCase (expresie-ir) transform literele mici n litere mari. De exemplu:
?UCase(bursa) BURSA
Left$ (expresie-ir, N) extrage N caractere dintr-un ir ncepnd cu cel din
stnga. De exemplu:
?Left$(Fiscalitate,4) Fisc
InStr ([Pornire de la], ir-complet, ir-cutat) returneaz poziia primei
apariii a subirului cutat dintr-un ir complet. De exemplu:
?InStr(Informatica de gestiune, gest) 16
?InStr(4,Informatica de gestiune, gest) 12
LTrim (expresie-ir) elimin spaiile de la nceputul irului. De exemplu:
?LTrim( Moneda) Moneda
RTrim (expresie-ir) elimin spaiile de la sfritul unui ir. De exemplu:
?RTrim(PROFIT ) PROFIT
Trim (expresie-ir) elimin spaiile de la nceputul i sfritul irului. De
exemplu:
?Trim(
CREDIT ) CREDIT
Mid (expresie-ir, poziie, lungime) returneaz o parte a unui ir. De
exemplu:
?Mid(IMOBILIZARI,4,3) BIL
Val (ir) transform un ir ntr-un numr. De exemplu:
?Val(132.74) 132.74
Funcii de editare
Format se utilizeaz pentru a afia o expresie ntr-o form dorit de
utilizator, care poate fi:
- Fixed afieaz cel puin o cifr n stnga i dou cifre n dreapta punctului
zecimal;
- Standard afieaz numrul cu virgule de separare a miilor, cel puin o
cifr n stnga i dou n dreapta punctului zecimal;
- Currency afieaz cu semnul $, cu virgule de separare a miilor i dou
cifre n dreapta punctului zecimal (9).
Funcii financiare
DDB calculeaz i returneaz amortismentul pe o perioad specificat, prin
metoda amortismentului regresiv cu rat dubl sau dup un coeficient specificat.
Formatul general al acestei funcii este:
DDB (cost; valoare rezidual; durat; perioad; factor) unde:
cost costul iniial al investiiei;
valoarea rezidual valoarea rmas la sfritul perioadei de amortizare;
durata durata de funcionare dat prin numr de perioade n care investiia
se va amortiza;
perioada durata de timp;
factor coeficient de regresie.
69

Universitatea SPIRU HARET

FV (Future Value) calculeaz i returneaz valoarea viitoare a unei


investiii.
IPMT calculeaz i returneaz suma dobnzilor unei investiii pentru o
perioad dat.
IRR calculeaz i returneaz rata de rentabilitate intern pentru fluxurile
financiare, att pozitive, ct i negative finanate la rate diferite.
MIRR ca i IRR numai c se refer la rata de rentabilitate intern a unei
investiii fr a ine seama de costurile de finanare i de plusvalorile de reinvestire.
NPFR calculeaz i returneaz numrul de pli pentru o investiie dat.
NPV se refer la valoarea actual net a unei investiii pe baza fluxurilor
financiare variabile.
PMT ajut la obinerea sumei totale a fiecrei rambursri periodice a unei
investiii i ratele dobnzii constante. Sintaxa acesteia este:
PMT (rate, nper, pv) unde:
rate este rata dobnzii;
nper numrul total de perioade de plat pe perioada de via a anuitii;
pv valoarea prezent a mprumutului (o valoare negativ).
PPMT calculeaz partea vrsmntului principal al unui mprumut pentru o
perioad dat .
PV (Present Value) se obine valoarea actual a unei investiii.
RATE se folosete pentru obinerea ratei dobnzii pe perioada unei investiii
date.
SLN se obine amortismentul liniar al unui bun pentru o perioad de timp
dat.
SYD calculeaz amortismentul unui bun pentru o perioad dat pe baza
metodei Sum of Years Digits.
3.4.4.4. Implementarea structurilor
de control al execuiei unui program
n paragraful 2.3. s-au prezentat cele trei structuri de control fundamentale:
structura de control secvenial (liniar), structurile de control alternative (cu
ramificaii) i structurile de control repetitive (de ciclare). Tuturor acestor structuri de
control fundamentale le sunt asociate instruciuni specifice n limbajul de programare
Visual Basic, cu ajutorul crora poate fi controlat logica de execuie a oricrei
secvene de program n Visual Basic. Acestor instruciuni li se altur comenzile
asociate operaiunilor de intrare/ieire specifice introducerii datelor de intrare,
respectiv extragerii rezultatelor prelucrrilor, precum i instruciunile de transfer.
Instruciuni alternative (sau cu structur alternativ)
Instruciunea If cea mai simpl form a acestei instruciuni este:
If condiie Then instruciune
De exemplu: If TVA=0.19 Then Vmctva=Vmftva + TVA * Vmftva
Cnd n instruciunea If, dup cuvntul cheie Then urmeaz mai multe
instruciuni, sintaxa general a instruciunii este:
If condiie Then
Secven de instruciuni
End If
De exemplu:
If TVA=0.19 Then
Vmctva=Vmftva + TVA * Vmftva
70

Universitatea SPIRU HARET

Vfctva = Vfctva + Vmctva


Print Tab(70); Vmctva; Tab(100); Vfctva
End If
O alt form a instruciunii If este: If Then Else End If. De exemplu:
If TVA = 0.19 Then
Vmctva=Vmftva + TVA * Vmftva
Vfctva = Vfctva + Vmctva
Print Tab(70); Vmctva; Tab(100); Vfctva
Else
Print TVA diferit de 19%
End If
Instruciunea Select Case
Instruciunea Select Case se folosete n cazul cnd sunt precizate mai multe
selecii.
Sintaxa general a instruciunii este urmtoarea:
Select Case variabil
Case Is variabil sau expresie instruciuni

Case Is variabil sau expresie instruciune


Case Else
instruciune
End Select
De exemplu, pentru selecia persoanelor dup categoria de vrst
(Categoria_varsta) se procedeaz astfel:
Select Case Vrsta
Case Is 5
Categoria_varsta = Copii sub 12 ani
Case Is 13 TO 19
Categoria_varsta = Adolesceni
Case Is 20 TO 35, 50, 60 TO 65
Categoria_varsta = Aduli
Case Is > 65
Categoria_varsta = Btrni
Case Else
Categoria_varsta = Alte categorii
End Select
Instruciuni repetitive
Ciclarea este asigurat prin formatul general Do Loop. Ciclrile
implementeaz operaiile care se repet de un anumit numr de ori, ciclarea
repetndu-se pn cnd se ndeplinete o condiie specificat, ntlnit la nceputul
sau sfritul ciclrii.
Instruciuni care implementeaz structuri de control repetitive
condiionate anterior
Din aceast categorie fac parte instruciunile Do {While|Until}Loop i
While Wend care au urmtoarele sintaxe generale:
Do [{While|Until} conditie]
Secventa_instructiuni_1
[Exit Do]
Secventa_instructiuni_2
Loop,
71

Universitatea SPIRU HARET

respectiv:
While conditie
Secventa_instructiuni
Wend
Cnd conditie este adevrat (True), se execut secvena imediat de
instruciuni. Instruciunea While Wend nu permite ieirea forat din ciclare.
Instruciuni care implementeaz structuri de control repetitive condiionate posterior
Din aceast categorie fac parte instruciunile Do Loop {While|Until}care au
urmtoarea sintax general:
Do
[Secventa_instructiuni_1]
[Exit Do]
[Secventa_instructiuni_2]
Loop {While|Until} conditie
Un exemplu de utilizare a instruciunii Do Loop Until este urmtorul:
Do
Cant = InputBox("Introduceti cantitatea materialului: ")
Pu = InputBox("Introduceti pretul unitar al materialului: ")
Vmftva = Cant * Pu
Vmctva = Vmftva + tva * Vmftva
Print Cant; Tab(48); Pu; Tab(70); Vmftva; Tab(100); Vmctva
Loop Until MsgBox("CONTINUATI?", vbYesNo) = vbNo
Ciclarea se repet pn cnd rspunsul la ntrebarea CONTINUATI? va fi
No (Nu).
Instruciuni care implementeaz structuri de control repetitive cu contor
n acest caz, numrul de iteraii este cunoscut. Din aceast categorie face
parte instruciunea For Next care are urmtoarea sintax general:
For contor=valoare_initiala To valoare_finala [Step pas]
[Secventa_instructiuni_1]
[Exit For]
[Secventa_instructiuni_2]
Next [contor].
Un exemplu de folosire a acestei instruciuni este urmtorul:
For i = 1 To Nrm
Cant = InputBox("Introduceti cantitatea materialului nr: " & i)
Pu = InputBox("Introduceti pretul unitar al materialului nr: " & i)
Vmftva = Cant * Pu
Vmctva = Vmftva + tva * Vmftva
txtVmftva = Format(Vmftva, "######0.00")
txtVmctva = Format(Vmctva, "######0.00")
Next i.
3.4.5. Crearea fiierelor n limbajul Visual Basic
Limbajul Visual Basic ofer posibilitatea lucrului cu fiiere (definite n
capitolul 1). Fiierele pot stoca date de tipuri diferite (date numerice, text, imagini).
Accesul la datele unui fiier poate fi: binar; secvenial; aleator.
Pentru accesul binar, trebuie localizat n fiier numrul de caractere care
urmeaz a fi citite sau scrise. Pentru accesul secvenial, trebuie parcurse toate
72

Universitatea SPIRU HARET

nregistrrile care preced nregistrarea dorit. Accesul aleator este un acces direct
la nregistrrile de mrime fix, fr a necesita citirea nregistrrilor precedente.
Operaiile care se pot executa asupra fiierelor sunt:
1) deschiderea fiierelor;
2) nchiderea fiierelor;
3) exploatarea fiierelor n acces secvenial;
4) exploatarea fiierelor n acces aleator.
1. Pentru deschiderea unui fiier se folosete comanda OPEN. Orice fiier,
nainte de a se lucra cu el, trebuie s fie deschis. Comanda OPEN aloc zone de
memorie tampon pentru operaiile de intrare/ieire i specific modul de acces
asociat zonei tampon.
Formatul general al acestei comenzi este:
OPEN nume-fiier FOR mod deschidere AS # numr-fiier LEN = expresie
n care:
nume-fiier este un ir de caractere care desemneaz numele de fiier dar
poate cuprinde i un director i o unitate de disc. Dac fiierul nu exist n
momentul deschiderii lui, el va fi creat cnd se execut comanda OPEN.
mod de deschidere specific modul n care se deschide acel fiier. Pentru
accesul secvenial se poate specifica: APPEND pentru adugare de noi nregistrri
la sfritul fiierului deja existent; INPUT pentru citirea nregistrrilor din fiier;
OUTPUT pentru crearea unui nou fiier.
Pentru accesul binar se specific BINARY, iar pentru accesul aleator,
RANDOM.
numr-fiier este un numr cuprins ntre 1-511. n modurile Binary,
Input sau Random se poate deschide un fiier utiliznd un numr nou, fr a
nchide n prealabil copia deschis anterior; n modurile Append sau Output trebuie
s se nchid n prealabil fiierul pentru a-l putea deschide cu un alt numr; pentru
lucrul
simultan
cu
mai
multe
fiiere
n
expresia
#numr-fiier se utilizeaz funcia FREEFILE care returneaz urmtorul numr de
fiier care poate fi utilizat n instruciunea OPEN;
expresie este un numr mai mic sau egal cu 32767.
n cazul utilizrii fiierelor deschise RANDOM, acest numr corespunde
lungimii unei nregistrri.
2. nchiderea fiierelor se execut prin intermediul comenzii CLOSE care are
urmtoarea sintax general:
CLOSE list-numere-fiiere
n care:
list-numere-fiiere specific unul sau mai multe numere separate prin
virgul. Cnd acest argument este absent, se nchid toate fiierele. Cnd se nchid
fiierele care au fost deschise n mod Append sau Output toate datele care sunt n
zona tampon acordat fiierului vor fi scrise n fiier nainte de a fi nchis. La
execuia instruciunii CLOSE, asocierea dintre fiier i numrul lui este dezactivat.
3. Exploatarea fiierelor n acces secvenial. Tipul de acces secvenial este
utilizat pentru a citi sau scrie o nregistrare de aceeai lungime sau pentru fiiere
compuse din nregistrri de lungimi diferite.
Comanda PRINT # scrie datele linie cu linie ntr-un fiier secvenial deschis
n mod Output sau Append.
Sintaxa general a acestei comenzi este:
Print # numr-fiier, list-expresii
73

Universitatea SPIRU HARET

unde:
numr-fiier este numele fiierului.
lista-expresii este o expresie ir sau numeric sau o list de expresii care se
scrie n fiier. Pentru a scrie o linie goal dup numr-fiier se pune virgul.
Comanda LINE INPUT # este folosit pentru a citi o linie dintr-un fiier
secvenial. Linia citit este atribuit unei variabile ir. Sintaxa comenzii este:
LINE INPUT # numr-fiier, nume-variabil
n care:
numr-fiier este numrul fiierului;
nume-variabil este o variabil ir.
LINE INPUT # citete din fiier caracter cu caracter pn ntlnete retur de
car, chr (13) sau retur de car i salt la linie nou chr (13) + chr (10).
4. Exploatarea fiierelor n acces aleator. La deschiderea fiierului n acces
RANDOM se precizeaz lungimea nregistrrii. Scrierea unei nregistrri n fiier
se face cu comanda PUT # care scrie dintr-o variabil ntr-un fiier. Sintaxa
comenzii este:
PUT [#] numr-fiier, numr nregistrare, nume-variabil
n care:
numr-fiier este numrul fiierului;
numr nregistrare reprezint lungimea nregistrrii determinnd poziia
scrierii;
nume-variabil este numele variabilei care conine datele care urmeaz a fi
scrise.
Citirea unei nregistrri din fiier se face citind ntr-o variabil dat din fiier.
Comanda este GET # de forma:
GET [#] numr-fiier, numr-nregistrare, nume-variabil,
n care:
numr-fiier este numrul alocat n prealabil fiierului;
numr-nregistrare este numrul nregistrrii care nmulit cu lungimea
nregistrrii stabilete poziia citirii;
nume-variabil este numele variabilei care conine datele care urmeaz a fi
citite.
3.4.6. Exemplu de aplicaie informatic n limbajul Visual Basic
Se reia aplicaia informatic n Visual Basic cu calculul i afiarea valorii
facturii de materiale din paragrafele 3.3.2, 3.3.3, 3.3.4 i 3.3.5, cu urmtorul enun:
S se realizeze un program n limbajul Visual Basic care s calculeze
valoarea total (fr TVA i cu TVA) a unei facturi de materiale. Factura conine
un numr precizat de materiale. Datele de intrare sunt: numrul de materiale de pe
factur (Nrm), numr factur (Nrf), data facturii (Df), codul materialului (Codmat),
denumirea materialului (Denmat), cantitate (Cant) i preul unitar al materialului
(Pu). TVA este de 19%. Datele de intrare vor fi introduse cu ajutorul casetelor de
introducere a datelor prin dialog cu utilizatorul (InputBox).
Datele de intrare (Nrm, Nrf, Df, Codmat, Denmat, Cant, Pu), datele
intermediare (Vmftva i Vmctva) i datele de ieire sau rezultatele rulrii
programului (Vfftva i Vfctva) se vor afia n casetele text (TextBox) separate din
formularul prezentat n fig.3.12. Lucrul cu formularul din fig.3.12 reprezint o
74

Universitatea SPIRU HARET

prim variant de rezolvare a problemei cu calculul i afiarea valorii facturii de


materiale cu un numr precizat de materiale. Trebuie artat faptul c n aceast
variant de rezolvare a problemei, casetele text servesc numai pentru afiare de
date; n rezolvarea din paragraful 3.3.3. casetele text au fost utilizate i pentru
introducere de date.
Varianta a doua de rezolvare a problemei const n afiarea, sub form de
tabel, pe formular, a datelor de intrare, a datelor intermediare i a rezultatelor
rulrii aplicaiei. n aceast variant de rezolvare a problemei, nu se mai folosesc
casete text (TextBox).
n ambele variante de rezolvare a problemei, se prevd butoane de comand
(Command Button) pentru calculul i afiarea unui material (fr TVA i cu TVA)
butonul CALCULEAZA, pentru calculul valorii facturii (fr TVA i cu TVA)
butonul AFISEAZA (pentru afiarea valorii facturii fr TVA i cu TVA) i
pentru ieirea din program butonul IESIRE.
Varianta 1 de rezolvare a problemei
Schema logic este prezentat n fig.3.18. Este folosit o structur de control
repetitiv cu contor (i), condiionat anterior care se implementeaz cu
instruciunea For Next.
Codul programului n limbajul Visual Basic, pentru varianta 1 de rezolvare,
este urmtorul:
Option Explicit
Dim Nr_factura As Long
Dim Data_factura As Date
Dim Vmftva As Double
Dim Vmctva As Double
Dim Vfftva As Double
Dim Vfctva As Double
Dim Nrm As Byte
Const tva = 0.19
Private Sub cmdCalcul_Click()
Dim Cod_mat As Long
Dim Den_mat As String
Dim Cant As Integer
Dim Pu As Single
Dim i As Byte
Nr_factura = InputBox("Introduceti numarul facturii: ")
txtNrf = Format(Nr_factura, "######0")
Data_factura = InputBox("Introduceti data facturii sub forma zz/ll/aaaa")
txtDf = Format(Data_factura, "Short Date")
Nrm = InputBox("Introduceti numarul de materiale de pe factura: ")
Vfftva = 0
Vfctva = 0
For i = 1 To Nrm
75

Universitatea SPIRU HARET

Vfftva = 0; Vfctva = 0;
TVA = 0.19; i=1;

Vmftva= Cant * Pu;


Vmctva=Vmftva + TVA * Vmftva;
Vfftva=Vfftva + Vmftva;
Vfctva = Vfctva + Vmctva;

i=i+1

Fig.3.18. Schema logic pentru varianta 1 de rezolvare a problemei


76

Universitatea SPIRU HARET

Cod_mat = InputBox("Introduceti codul materialului nr: " & i)


txtCodmat = Format(Cod_mat, "######0")
Den_mat = InputBox("Introduceti denumirea materialului nr: " & i)
txtDenmat = Format(Den_mat, "######0")
Cant = InputBox("Introduceti cantitatea materialului nr: " & i)
txtCant = Format(Cant, "######0")
Pu = InputBox("Introduceti pretul unitar al materialului nr: " & i)
txtPu = Format(Pu, "######0.00")
Vmftva = Cant * Pu
Vmctva = Vmftva + tva * Vmftva
Vfftva = Vfftva + Vmftva
Vfctva = Vfctva + Vmctva
txtVmftva = Format(Vmftva, "######0.00")
txtVmctva = Format(Vmctva, "######0.00")
Next i
End Sub
Private Sub cmdAfisare_Click()
txtVfftva = Format(Vfftva, "######0.00")
txtVfctva = Format(Vfctva, "######0.00")
End Sub
Private Sub cmdExit_Click()
End
End Sub
Rezultatele rulrii programului n prima variant de rezolvare a problemei
sunt prezentat n fig.3.19.

Fig.3.19. Rezultatele rulrii programului realizat n varianta 1

Varianta 2 de rezolvare a problemei


Schema logic este prezentat n fig.3.20. Este utilizat o structur de control
repetitiv fr contor condiionat posterior. Implementarea acestei structuri n
program se va face cu instruciunea Do Loop Until. Pe baza acestor considerente,
nu mai sunt necesare variabilele i i Nrm folosite n varianta 1 de rezolvare a problemei.
77

Universitatea SPIRU HARET

Codul programului n limbajul Visual Basic, pentru rezolvarea n varianta 2,


este urmtorul:
Option Explicit
Dim Nrf As Long
Dim Df As Date
Dim Vmftva As Double
Dim Vmctva As Double
Dim Vfftva As Double
Dim Vfctva As Double
Const tva = 0.19
Private Sub cmdCalcul_Click()
Dim Cod_mat As Long
Dim Den_mat As String
Dim Cant As Integer

Vfftva = 0; Vfctva = 0;

Vmftva= Cant * Pu;


Vmctva=Vmftva + TVA * Vmftva;
Vfftva=Vfftva + Vmftva;

Fig.3.20. Schema logic pentru varianta 2 de rezolvare a problemei


78

Universitatea SPIRU HARET

Dim Pu As Single
Nrf = InputBox("Introduceti numarul facturii: ")
Df = InputBox("Introduceti data facturii sub forma zz/ll/aaaa")
Cls
Print Tab(10); "FACTURA NR."; Tab(28); Nrf; Tab(45); "DIN DATA DE ";
Tab(70); Df
Print String(110, "=")
Print Tab(2); "COD_MATERIAL"; Tab(20); "DEN_MATERIAL"; Tab(41);
"CANT"; _
Tab(48); "PRET_UNITAR"; Tab(70); "VAL_M_FARA_TVA"; Tab(100); _
"VAL_M_CU_TVA"
Print String(110, "=")
Vfftva = 0
Vfctva = 0
Do
Cod_mat = InputBox("Introduceti codul materialului: ")
Den_mat = InputBox("Introduceti denumirea materialului: ")
Cant = InputBox("Introduceti cantitatea materialului: ")
Pu = InputBox("Introduceti pretul unitar al materialului: ")
Vmftva = Cant * Pu
Vmctva = Vmftva + tva * Vmftva
Vfftva = Vfftva + Vmftva
Vfctva = Vfctva + Vmctva
Print Tab(2); Cod_mat; Tab(20); Den_mat; Tab(41); Cant; Tab(48); Pu; _
Tab(70); Vmftva; Tab(100); Vmctva
Loop Until MsgBox("CONTINUATI?", vbYesNo) = vbNo
Print String(110, "=")
End Sub
Private Sub cmdAfisare_Click()
Print Tab(20); "VALOARE FACTURA FARA TVA = "; Tab(60); Vfftva;
Print Tab(20); "VALOARE FACTURA CU TVA = "; Tab(60); Vfctva;
End Sub
Private Sub cmdExit_Click()
End
End Sub
Rezultatele rulrii programului n a doua variant de rezolvare a problemei,
cu datele de intrare din tabelul 3.2, sunt prezentate n fig.3.21.

Fig.3.21. Rezultatele rulrii programului n a doua variant de rezolvare a problemei


79

Universitatea SPIRU HARET

4. TEORIA BAZELOR DE DATE I A SISTEMELOR


DE GESTIUNE A BAZELOR DE DATE

4.1. Organizarea datelor n baze de date.


Sisteme de gestiune a bazelor de date.
Un sistem informatic eficace ofer utilizatorilor informaii relevante, corecte
(exacte) i la timp. Aa cum s-a artat n capitolul 1, aceste informaii sunt memorate
sub form de date n fiiere, care trebuie s fie aranjate (organizate) i ntreinute
astfel nct utilizatorii s obin cu uurin informaiile de care au nevoie.
Managementul datelor este o parte foarte important a sistemului informatic
organizaional economic, deoarece influeneaz viteza cu care pot fi obinute datele
i deci poate fi luat decizia. Exist situaii cnd viteza de luare a deciziei este o
chestiune de supravieuire pentru organizaia economic.
Un sistem de calcul din compunerea sistemului informatic are organizate
datele ntr-o ierarhie care ncepe cu bii i octei (bytes) i continu cu cmpuri,
nregistrri, fiiere, baze de date i depozite de date.
Sistemul baz de date se definete ca fiind ansamblul de colecii organizate
de date, mpreun cu descrierea datelor i a relaiilor dintre ele, care reprezint,
complet, corect i coerent, universul real al organizaie economice (compartimentului specializat al acesteia) prin caracteristicile relevante (reprezentative) ale
elementelor sale, percepute de sistem prin semantica lor (semnificaia lor real) i
prin legturile dintre aceste caracteristici (fig. 4.1). Conceptul de baz de date a fost
introdus n anul 1969, cu prilejul prezentrii primului raport CODASYL. Ulterior, i
alte grupuri de lucru specializate (IIBM, ANSI, DBTG) i-au adus contribuia la
standardizarea conceptelor din teoria bazelor de date.
Percepie
Reprezentare

DOMENIUL CONCEPTUAL
DOMENIUL
SEMANTIC

UNIVERS

**********

REAL

BAZA DE
DATE

COLECII
DE DATE

CARACTERISTICI

Percepie,
Reprezentare

Fig.4.1. Definirea conceptului de baz de date


80

Universitatea SPIRU HARET

SGBD

Colecia de date se definete ca fiind mulimea de valori (date) pe care le


iau caracteristicile reprezentative ale unui element din universul real al
organizaiei economice, dac la fiecare moment de timp se aplic asupra lor un
predicat, o aciune din realitatea organizaiei economice, mpreun cu domeniile
de definiie reale ale acestor caracteristici.
ntr-un sistem baz de date, descrierea datelor const n descrierea
structurii de date a sistemului baz de date i n descrierea regulilor care asigur
coerena datelor, n raport cu universul real al organizaiei economice reprezentat.
Se reamintete c tipurile de structuri logice de date sunt: punctual, liniar,
arborescent, reea, relaional, orientat pe obiecte (OO).
Structura de date a unui sistem baz de date este determinat de modelul
abstract de reprezentare a datelor folosit, numit baz de date. n funcie de tipul
stabilit pentru legturile dintre datele din coleciile de date (ierarhic, reea,
relaional, orientat pe obiecte), s-au realizat mai multe modele abstracte de
reprezentare a datelor, dar fiecruia i corespunde o singur structur de date a
sistemului baz de date. Din acest motiv s-a generalizat utilizarea conceptului de
baz de date, BD sau DB (DataBase), care este folosit att pentru denumirea
structurii de date a unui sistem baz de date, ct i pentru denumirea modelului
abstract de reprezentare a datelor care o determin. Mai mult chiar, conceptul de
baz de date denumete att colecia organizat, ct i structura de date folosit
pentru reprezentarea acesteia n sistemul baz de date.
Sistemul de gestiune a bazei de date, SGBD sau DBMS (Data-Base
Management System) reprezint un ansamblu complex de programe care asigur
interfaa dintre baza de date i utilizator.
O baz de date trebuie s satisfac urmtoarele condiii:
structura bazei de date trebuie s asigure informaiile necesare i suficiente
pentru ndeplinirea cerinelor de informare i decizie;
s asigure o independen sporit a datelor fa de programe i invers;
s se realizeze o redundan (cardinalitatea informaiilor coleciilor de
date) minim i controlat a datelor memorate;
accesul la datele stocate n baza de date s fie rapid i eficace.
O baz de date poate s fie exploatat, de regul, n regim de prelucrare pe
loturi (batch) i n regim conversaional. Accesarea bazei de date se realizeaz prin
aplicaii generale, programe de aplicaie, limbaje de manipulare autonome
(procedurale i neprocedurale), interfee specializate cu limbajele de programare
clasice etc., local sau de la distan, prin utilizarea calculatoarelor singulare sau a
reelelor de calculatoare. Rezultatele interogrilor utilizatorilor se prezint sub form
vizual, listat, prin memorare pe diveri supori tehnic de date, local sau la distan.
Sistemul baz de date are rolul de organizare i stocare a unor volume mari
de date, n vederea gestionrii, prelucrrii, distribuirii i utilizrii multiple, folosind
sistemele de calcul, programele utilitare i programele de aplicaie.
Pornind de la funcia sa, un sistem baz de date este format, ca structur
general, din: colecii de date, baza de date, SGBD, programe de aplicaie i
utilitare, precum i utilizatori. Dac conceptul de baz de date denumete att
81

Universitatea SPIRU HARET

coleciile de date, ct i structura de date folosit pentru reprezentarea acesteia,


atunci structura general a sistemului baz de date este baza de date, SGBD,
programe de utilizare, utilizatori.
Arhitectura unui sistem baz de date este prezentat n fig.4.2. n
conformitate cu specificaiile utilizatorilor finali (end-users), programatorii de
aplicaie, avnd la dispoziie utilitare (programe specializate de proiectare) i prin
colaborarea cu administratorul bazei de date (acesta lucreaz nemijlocit cu schema
bazei de date), pun la punct programele de aplicaie. Aa cum s-a precizat deja,
interfaa dintre baza de date i schema BD, utilitare i programele de aplicaie este
sistemul de gestiune a bazei de date, SGBD.
Obiectivele unui SGBD sunt, n principal, urmtoarele:
asigurarea independenei datelor fa de aplicaie;
asigurarea redundanei minime i controlate a datelor;
asigurarea tuturor facilitilor posibile de exploatare a datelor;
asigurarea securitii i proteciei datelor mpotriva accesului neautorizat
(inclusiv prin criptarea datelor);
asigurarea coerenei i integritii datelor mpotriva tergerilor accidentale
sau intenionate;
asigurarea partajrii datelor (accesul concurent al utilizatorilor la baza de
date);
asigurarea nivelului de performan global (volum mare de date
complexe gestionate cu un timp de rspuns acceptabil la adresarea cererilor de
interogare din partea utilizatorilor multipli).
Funciile generale ale unui SGBD sunt:
1) descrierea datelor (definirea structurii bazei de date prin intermediul
limbajului de definire a datelor);
2) manipularea datelor (ncrcarea, actualizarea, prelucrarea i regsirea
datelor cu ajutorul limbajului de manipulare a datelor);
3) utilizarea bazei de date (de ctre toate categoriile de utilizatori);
4) administrarea bazei de date.
Fiecare grup de lucru pentru standardizarea bazelor de date (CODASYL i
ANSI, n principal) a propus o arhitectur proprie a unui SGBD.
Comenzile SGBD (DBMS) pot fi grupate n trei categorii de limbaje:
a) limbajul de definire a datelor (DDL, Data Definition Language);
b) limbajul de manipulare a datelor (DML, Data Manipulation Language);
c) limbajul de descriere a stocrii datelor (DSDL, Data Storage Description
Language).
Limbajul de definire a datelor asigur, n principal:
definirea tuturor tipurilor de nregistrri i de cmpuri de date, precum i
asocierea corespondenei acestora cu nivelul conceptual;
specificarea ordinii logice a cmpurilor de date;
definirea cmpurilor ce vor fi folosite drept chei de cutare;
definirea drepturilor de acces;
definirea legturilor ntre tipurile de nregistrri.
82

Universitatea SPIRU HARET

Limbajul de manipulare a datelor permite:


parcurgerea structurilor i a legturilor existente;
accesul la nregistrri prin adres sau prin coninutul acestora;
actualizri ale nregistrrilor;
reordonri ale cmpurilor de date;
definirea tranzaciilor i a condiiilor de eroare.
Limbajul de descriere a stocrii datelor ofer posibiliti de:
asociere a fiierelor la programele de aplicaie, a dispozitivelor fizice,
alocare de spaii de memorie;
specificarea zonelor de lucru permanente i tranzitorii;
definirea i izolarea datelor confideniale;
specificarea structurilor de memorare, a mecanismelor de adresare, a
modului de translatare a nregistrrii logice n nregistrare fizic;
crearea indecilor asociai cheilor de cutare.
Operaiile ce se execut asupra unei baze de date sunt:
creare;
ncrcare (populare);
consultare: cutare (selecie);
actualizare: modificare, adugare articole noi, tergerea unor articole,
ordonare (sortare, indexare), prelucrare etc.
PROGRAM
DE APLICAIE

Baza
de date

SGBD

UTILIZATORI

SCHEMA BD

ADMINISTRATOR

UTILITARE

PROGRAMATOR
DE APLICAIE

Fig.4.2. Arhitectura unui sistem baz de date

Dicionarul de date (Data Dictionary) este un fiier care memoreaz


definiiile datelor i caracteristicile lor ca: folosirea, reprezentarea fizic, proprietatea (cine este responsabil pentru ntreinerea lor), autorizarea i securitatea.
Prin faptul c reprezint un inventar al datelor coninute ntr-o baz de date,
dicionarul de date este un important instrument de management organizaional. n
realizarea acestor dicionare de date se folosesc metadatele. Metadatele reprezint
date despre date (nume, coninut, semnificaie, proprietar etc.).
O baz de date este compus dintr-o mulime de atribute (cmpuri,
coloane) i are asociat o mulime de date (linii, rnduri, nregistrri, articole). O
83

Universitatea SPIRU HARET

nregistrare (record) reprezint o asociere a valorilor pentru fiecare cmp (field) al


bazei de date.
Cele trei nivele de organizare a datelor ntr-o baz de date sunt logic,
virtual i fizic (fig.4.3).
NIVEL LOGIC

NIVEL VIRTUAL

NIVEL FIZIC

SCHEMA
EXTERN 1

SCHEMA
EXTERN 2

SCHEMA
CONCEPTUAL

SCHEMA
FIZIC

SCHEMA
EXTERN n
Fig.4.3. Niveluri de organizare a datelor ntr-o baz de date

Nivelul logic sau extern (nivelul programatorului de aplicaie) calific o


structur de date ce are o realitate n planul semnificaiei sau utilizrii, dar nu i n
implementarea fizic; calific forma n care fiecare utilizator vede structurarea
datelor, n funcie de aplicaia pe care o folosete sau n funcie de resursele de date
pe care administratorul bazei de date i le pune la dispoziie. Nivelul virtual sau
conceptual (nivelul administratorului bazei de date) se refer la definirea structurii
datelor din baza de date astfel nct aceasta s ndeplineasc cerinele tuturor
utilizatorilor, n condiii de redundan minim i controlat a acesteia. Nivelul fizic
(nivelul inginerului de sistem) privete modul de stocare i de structurare a datelor
pe suportul fizic de memorare a datelor (volum magnetic, cilindru, pist, sector,
bloc, octet i bit). Structura virtual reprezint schema bazei de date, iar structura
logic este denumit subschema bazei de date (concepia CODASYL). Astfel, se
poate concluziona c SGBD (DBMS) asigur legtura dintre nivelul conceptual
(virtual) i nivelul fizic.
O nregistrare virtual se poate prezenta sub forma unei sau mai multor
nregistrri fizice i poate participa la construirea unei sau mai multor nregistrri
logice.
ntr-o baz de date ideal, datele sunt definite o singur dat i folosite ori
de cte ori este necesar.
84

Universitatea SPIRU HARET

n funcie de locul n care sunt memorate coleciile de date ce formeaz


baza de date, se deosebesc:
baze de date centralizate, CDB (Centralized DataBases), n situaia n care
toate coleciile care formeaz baza de date sunt stocate pe un singur calculator;
baze de date distribuite, DDB (Distributed DataBases), n situaia n care
coleciile care formeaz baza de date sunt rspndite n nodurile unei reele de
calculatoare i de comunicaii. Bazele de date distribuite sunt prezentate n
capitolul 8 al lucrrii.
Dup orientare, bazele de date pot fi generalizate i specializate.
n cadrul DDBMS, accesarea bazelor de date distribuite, DDB se realizeaz,
n principal, prin intermediul limbajului structurat de interogare, SQL (Structured
Querry Language) i al arhitecturii Client/Server (acestea sunt prezentate pe larg
n capitolul 7 al lucrrii).
Realizarea unei baze de date se obine prin parcurgerea etapelor prezentate
n fig.4.4.
Coninutul acestor etape este dependent, de regul, de tipul bazei de date i
de domeniul n care este ea folosit. Activitatea de analiz a sistemului economic
presupune:
a) analiza componentelor sistemului i a legturilor dintre acestea sau
analiza structural n urma creia se definete modelul structural sau static al
sistemului economic;
b) analiza strilor sistemului i a tranzaciilor posibile ntre aceste stri n
raport cu anumite evenimente. n urma acestei analize rezult modelul dinamic sau
temporal;
c) analiza cerinelor informaionale, n urma creia se definete modelul
funcional al sistemului economic;
d) integrarea modelelor sistemului economic (structural, dinamic i
funcional) n scopul corelrii i completrii lor.
Se face meniunea c analiza funcional a sistemului are ca scop
determinarea transformrilor de date care se produc n cadrul sistemului n scopul
satisfacerii cerinelor informaionale specifice acestui sistem. Transformrile de
date se vor prezenta sub forma unei diagrame de flux a prelucrrilor (modelul
funcional), n care nodurile reflect procesele de prelucrare informaional i
arcele fluxurile informaionale ale datelor n baza de date.
La proiectarea unei baze de date, procesul de normalizare ajut
proiectantul bazei de date s creeze o structur a bazei de date care poate economisi
spaiul de memorare a datelor i poate conduce la creterea eficienei prelucrrii
datelor. Scopul normalizrii este de a minimiza redundana datelor.
Erorile de introducere a datelor pot s compromit precizia i validitatea
bazei de date. Utilizatorul poate s fie uneori n situaia de a nu contientiza faptul
c el introduce date incorecte. Datele incorecte pot proveni, n primul rnd, de la
apsarea greit a unor taste. Cele mai multe SGBD-uri pot preveni, dar nu pot
elimina introducerile incorecte de date. Informaia furnizat de rutinele de
prelucrare i de rapoarte este la fel de precis i corect n msura n care aceste
caracteristici sunt prezente i la datele stocate n bazele de date.
85

Universitatea SPIRU HARET

ANALIZ SISTEM
(DOMENIU ECONOMIC I
CERINE INFORMAIONALE ASOCIATE)
PROIECTAREA STRUCTURII BAZEI DE DATE
(SCHEME CONCEPTUALE)
POPULAREA (NCRCAREA) BAZEI DE DATE CU DATE

EXPLOATAREA I NTREINEREA
BAZEI DE DATE

Fig.4.4. Etapele de realizare a bazelor de date

Formatul de cmp menine consistena datelor prin asigurarea unei


structuri de introducere a datelor, aa cum se arat n fig.4.5.
X cifr,
A - liter

Format cmp
CONT LA BANC

ROXXAAAAXXXXXXXXXXXXXXXX
Exemplu

RO96RXBR0000000431267982
Fig.4.5. Formatul de cmp pentru CONT LA BANCA

86

Universitatea SPIRU HARET

Proiectantul bazei de date poate s prentmpine introducerea datelor


incorecte prin:
- specificarea unui anumit format de cmp destinat pentru introducerea
datelor (formatul de cmp este de fapt o imagine a modului n care trebuie s arate
data atunci cnd aceast dat este introdus n baza de date);
- utilizarea regulilor de validare a cmpurilor (acele specificaii prin care se
filtreaz datele introduse ntr-un anumit cmp), a casetelor cu liste sau a formatelor
predefinite.
4.2. Generaii de baze de date
i de sisteme de gestiune a bazelor de date asociate
n evoluia istoric, bazele de date i sistemele de gestiune a bazelor de
date (SGBD) asociate au cunoscut trei generaii:
sistemele ierarhice i reea;
sistemele relaionale;
sistemele n tehnologie avansat (orientate obiect, relaionale orientate
obiect, deductive, distribuite, multibaze, active, multimedia, online etc.).
Sistemele ierarhice i reea reprezint datele la nivel de articol, prin legturi
ierarhice (arbore) sau de tip graf reea. Deoarece datele prezint o slab independen
fizic, SGBD (DBMS) este mai complicat i mai greoi n comparaie cu celelalte
sisteme. Drumurile de acces la date sunt specificate prin intermediul limbajului de
manipulare a datelor. Diagrama structurii de date (graf orientat ce reprezint tipuri de
entiti i legturi funcionale dintre ele) servete pentru descrierea, la nivel logic, a
structurilor de date specifice sistemelor ierarhice i reea.
Sistemele relaionale trateaz entitile ca nite relaii. Modelul relaional
(ce aparine lui E.F.Codd) reprezint un model formal de organizare conceptual a
datelor, ce realizeaz reprezentarea legturilor dintre date, avnd la baz teoria
matematic a relaiilor. Un sistem relaional este compus formal dintr-o baz de
date relaional, o colecie de operatori relaionali, regulile de integritate care
guverneaz utilizarea cheilor n model i un set de asocieri. Elementele de definire
a modelului relaional corespund celor trei componente ale ingineriei software:
informaie, proces, integritate. Problematica de detaliu a sistemelor de gestiune a
bazelor de date relaionale este tratat n paragraful urmtor.
Sistemele de gestiune a bazelor de date n tehnologii avansate elimin cea
mai mare parte a acestor dezavantaje. Aa cum s-a artat n capitolul 2, n
programarea orientat pe obiecte, OOP (Object-Oriented Programming), efortul
esenial este direcionat pentru definirea obiectelor. Obiectele de acelai tip
formeaz o clas ce cuprinde, alturi de date, i metodele de acces la aceste date.
Datele sunt transparente numai pentru metodele asociate clasei respective
(ncapsularea datelor). Prin funciile denumite constructori i destructori, se
realizeaz controlul asupra creerii i tergerii unui anumit obiect. Prin motenire, se
obin clase derivate ce motenesc proprietile (date i funcii) claselor-printe. Prin
reunirea tehnicilor bazelor de date cu acelea ale limbajelor orientate obiect s-au
87

Universitatea SPIRU HARET

obinut bazele de date orientate obiect i sistemele de gestiune aferente acestora,


OODBMS (Object-Oriented DBMS). Se realizeaz astfel o organizare coerent a
obiectelor partajate ntre utilizatori concureni. OODBMS prezint urmtoarele
avantaje:
integrarea descrierii structurale i comportamentale;
posibiliti superioare de deducie (ierarhie de clase, motenire);
considerarea aspectelor dinamice n cadrul aplicaiilor;
mbuntirea interfeei cu utilizatorii.
Se apreciaz, totui, c administrarea obiectelor complexe este mai dificil
dect accesul la relaii prin cereri SQL, specific bazelor de date relaionale.
Avantajele incontestabile ale tehnologiei orientate obiect au fost combinate
cu acelea ale modelului relaional, rezultnd bazele de date relaionale orientate
obiect.
Relaiile sunt mulimi de nregistrri ce reprezint fapte. Cunotinele se
definesc ca aseiuni generale i abstracte asupra faptelor. Pe baza faptelor
cunoscute tezaurizate n cunotine, se pot deduce noi fapte printr-un proces de
raionamente. Bazele de date deductive ce folosesc programarea logic (specific
inteligenei artificiale) administreaz cunotine relativ la baze de date ce sunt, de
regul, RDB.
Sistemele multibaze de date sunt compuse din mai multe sisteme de baze
de date ce sunt integrate pe baza schemelor globale. Se realizeaz astfel accesul
uniform i integrat la fiecare dintre bazele de date componente.
Dac se consider scopul esenial de analiz a datelor, inclusiv istorice,
pentru toat organizaia, o baz de date optimizat n acest scop definete o Data
Warehouse (depozit de date), dup principiul procesrii analitice, OLAP (On-Line
Analytical Processing). Sistemele tranzacionale (ce se folosesc pentru prelucrarea
datelor operaionale ale organizaiei economice) au la baz principiul procesrii
tranzacionale online, OLTP (On-Line Transactional Processing), de control la un
moment dat al unei singure tranzacii. Data Warehouse admite interogri ce nu
sunt predefinite i ofer rspunsuri ad-hoc pe baza analizelor datelor ce se refer la
ntreaga organizaie. Data Warehouse se subdivide n baze de date departamentale
(domenii de gestiune ale organizaiei), denumite rafturi de date (Data Marts).
Realizarea sistemelor de sprijin al deciziilor, DSS (Decision Support
Systems), implic un proces laborios de descoperire a informaiilor utile din cadrul
bazelor mari de date. Procesul este denumit Data Mining ( mineritul datelor ) sau
de descoperire a cunotinelor n baza de date, KDD (Knowledge Discovery in
Databases).
O baz de date OLAP poate s fie baz de date relaional, dar i baz de
date multidimensional. Structura unei baze de date multidimensionale conine
obiecte de urmtoarele tipuri: variabile, dimensiuni, niveluri, ierarhii, atribute.
Acestea sunt tratate mai pe larg n capitolul 9 (studenii de la specializarea
Contabilitate i informatic de gestiune studiaz n profunzime aceste baze de date
la disciplina Sisteme informatice de asistare a deciziei din anul IV).
88

Universitatea SPIRU HARET

4.3. Baze de date relaionale


Termenul de baz de date relaional (BDR) a fost introdus de E.F.Codd
de la firma IBM n anul 1969. Modelul relaional este fundamentat pe reguli,
structuri i operaii. Regulile stabilesc modul de manipulare a datelor, structurile
sunt obiecte definite ce conin date i care sunt accesibile utilizatorului, iar
operaiile reprezint aciuni prin care sunt manipulate datele sau obiectele schemei
bazei de date. E.F.Codd a formulat n anul 1985 cele 13 reguli de baz care
definesc o baz de date relaional i care sunt prezentate n tabelul 4.1.
Tabelul 4.1
Nr.
regulii
R0
R1

R2

R3
R4

R5
R6

R7

R8

Coninutul regulii
SGBD gestioneaz datele la nivel de
relaie (exclusiv pe baza caracteristicilor
relaionale).
Toate datele din baza de date
relaional se reprezint explicit sub
forma unor valori ntr-un tabel (regula
reprezentrii logice a datelor).
Datele individuale dintr-un tabel sunt
accesate prin specificarea numelui
tabelului, a valorii cheii primare i a
coloanei (regula garantrii accesului
la date)
Valorile NULL (inexistena datelor)
sunt tipuri de date acceptate (regula
referitoare la valorile NULL).
Baza de date relaional reprezint
descrierea bazei de date n format
logic simplificat sub form de tabele
(regula metadatelor).
Modelul relaional permite implementarea mai multor limbaje (regula
de permisiune a limbajelor multiple).
Dac vederea curent reprezint un
tabel, toate vederile (view-urile) sunt
actualizabile
(regula
actualizrii
vederilor).
n operaiile de schimbare a coninutului bazelor de date, se lucreaz la
un moment dat pe toat relaia (regula
referitoare la actualizri, inserri i
tergeri n baza de date).
Structura logic a bazei de date se
prezint complet separat de structura
fizic a bazei de date (regula referitoare
la independena fizic a datelor).

Comentarii
Conceptul de baz este relaia.
Catalogul conine denumiri de tabele,
coloane,
domenii,
restricii
de
integritate etc.
Datele sunt accesibile prin numele
tabelului, a liniei i a coloanei.

Valoarea NULL semnific nimic. A


nu se confunda cu zero (0).
Metadatele sunt date despre date.
Regula nu face diferenieri ntre tratarea
datelor i a metadatelor.
SQL este limbajul de baz pentru
realizarea interogrilor asupra bazei de
date.
Toate tabelele virtuale ce teoretic sunt
posibil de actualizat, trebuie s fie n
mod practic actualizate.
Modelul relaional abordeaz relaiile
de baz i pe cele derivate ca pe un
singur operand destinat operaiilor de
actualizare (update), inserare (insert) i
tergere (delete) efectuate asupra datelor.
Programele de aplicaie nu trebuie s
fie influenate de schimbrile survenite
n modul de reprezentare a datelor sau
n metodele de acces.
89

Universitatea SPIRU HARET

R9

R10

R11

R12

Atunci cnd bazei de date i se aduc


modificri neconforme, datele se
conserv (regula referitoare la
independena logic a datelor).
Restriciile de integritate sunt definte
n limbajul folosit de sistem (regula
referitoare la restriciile de integritate).
Accesarea datelor pe server de ctre
client se produce n mod continuu
(regula referitoare la distribuirea
geografic a datelor).
Regulile i restriciile de integritate nu
pot fi evitate de nici un limbaj de
acces la date (regula referitoare la
prelucrarea datelor la nivel de baz).

Programele de aplicaie nu trebuie s


fie influenate de schimbrile efectuate
asupra relaiilor bazelor de date.
Restriciile de integritate sunt create n
limbajul SQL i se stocheaz n
dicionarul bazei de date i nu n
aplicaiile individuale.
Este presupus producerea unui proces
de copiere a datelor dintr-o baz de
date localizat la distan.
Nu trebuie folosit un limbaj de nivel
sczut orientat pe prelucrarea pe tupluri.

Trebuie precizat faptul c nici un SGBD actual nu respect n totalitate cele


13 reguli ale lui Codd.
Aa cum s-a artat, o baz de date relaional reprezint o colecie de
relaii (tabele n accepiunea uzual, memorate fizic n fiiere). Coloanele tabelului
se numesc atribute, iar liniile se numesc tupluri.
Baza de date relaional (RDB) este compus dintr-o mulime de domenii
i o mulime de relaii peste care se aplic o mulime de asocieri. Domeniul este
definit ca mulimea obiectelor de acelai tip. Relaia este o mulime rezultat ca
urmare a agregrii (corespondenei) a dou sau mai multe mulimi. O relaie n
accepiunea bazelor de date pe domeniile Di const dintr-un cap de tabel i un corp
de tabel. Asocierea se realizeaz pe baz de atribute (din capul de tabel).
Un astfel de exemplu este tabelul (relaia) referitor la MATERIALE:
Cod_material
01212
03214
04301

Denumire_material
Tabl
Cornier
Cherestea

Cantitate
1200
400
850

Pret_unitar
180000
420000
210000

Fiecare linie descrie un anumit material. Coloanele conin etichete ce


reprezint nume ale atributelor (Cod_material, Denumire_material, Cantitate,
Pret_unitar).
Domeniul ce reprezint codurile materialelor este:
D1: {01212,03214,04301}.
iar domeniul pentru tipurile de materiale (delimitate prin
denumire_material) este:
D2: {TABLA,CORNIER,CHERESTEA}.
Domeniul pentru cantitate este:
D3: {1200,400,850}.
Domeniul preurilor unitare, n acest caz, este:
D4: {pret_unitar pret_unitar[180000,420000]}.
Mulimea tuplurilor este definit prin produsul cartezian al domeniilor
D1 X D2 X X Dn. Exemplu de tuplu: <01212,TABLA,1200,180000>.
90

Universitatea SPIRU HARET

Relaia L se definete prin tupluri corespunztoare din tabel:


L:<01212,TABLA,1200,180000>, <03214,CORNIER,400,420000>}.
ntr-o relaie, este necesar ca tuplurile s fie distincte (nu se permit valori
duplicate). Ca urmare, se observ c relaia este reprezentat prin tabelul
bidimensional n care coloanele sunt domenii iar liniile sunt tupluri. Numrul
tuplurilor unei relaii este cardinalul relaiei. Numrul valorilor unui tuplu este
gradul relaiei. Schema unei relaii este format din numele relaiei i lista
atributelor (pentru fiecare atribut este necesar specificarea domeniului asociat).
Modelul relaional este format din dou mulimi de operatori pe relaii:
algebra relaional i calculul relaional.
E.F.Codd a definit algebra relaional ca o colecie de operaii pe relaii,
astfel nct o anumit operaie dispune de operanzi de tipul relaie i are ca rezultat
tot o relaie. Tipurile de operaii acceptate de algebra relaional sunt operaii de
baz (reuniunea, diferena, proiecia, produsul cartezian .a.), operaii derivate
(intersecia i diviziunea) i operaii suplimentare (selecia, splitarea unei relaii,
complementarea unei relaii, nchiderea tranzitiv, jonciunea etc.). Algebra
relaional permite derivarea procedural a relaiilor.
Se prezint ca exemplu reuniunea. Reuniunea (notat cu OR, , APPEND
sau UNION) este o operaie definit pe relaiile Rel1 i Rel2 (cu aceeai schem),
ce genereaz o nou relaie Rel3 (cu schema identic cu a relaiilor Rel1 i Rel2)
care este format din reuniunea tuplurilor relaiilor Rel1 i Rel2 (fig.4.6).
Calculul relaional conine mulimea operatorilor din modelul relaional i
este o adaptare a calculului cu predicate (o relaie este identificat cu un predicat)
pentru domeniul BDR. Calculul relaional asigur definirea neprocedural,
declarativ a relaiilor. Relaiile sunt precizate prin proprietile tuplurilor. Iniial,
n BDR, variabilele definite asupra relaiilor aveau valori care reprezentau tupluri
de relaie (variabile tuplu), obinndu-se calculul relaional orientat pe tuplu. Cnd
variabilele opereaz asupra domeniilor aa cum se petrec lucrurile n prezent
ele sunt variabile domeniu i determin calculul relaional orientat pe domeniu.
Regulile de integritate sunt aseriuni pe care datele ce formeaz baza de
date trebuie s le satisfac i sunt n numr de trei: unicitatea cheii (cheia primar
trebuie s fie unic i minimal), integritatea entitii (atributele cheii primare
trebuie s fie diferite de null) i integritatea referirii (o cheie extern trebuie s fie
null n ntregime sau s corespund unei valori a cheii primare asociate).
Constrngerile structurale sunt de trei tipuri: de cheie, de referin i de entitate.

Rel1
OR

Rel2

Rel3

Fig.4.6. Diagrama operaiei reuniune


91

Universitatea SPIRU HARET

Cheia unei relaii reprezint o mulime minimal de atribute ale cror


valori identific n mod unic un tuplu ntr-o relaie. Diferitele chei posibile se
numesc chei-candidat. Cheia candidat aleas pentru a identifica efectiv tupluri se
numete cheie primar.
Conceptele folosite pentru descrierea formal, uzual i fizic a
elementelor de baz ale organizrii datelor n baze de date relaionale sunt
prezentate n tabelul 4.2. [44].
Tabelul 4.2
Formal
Relaie
Tuplu
Atribut
Domeniu

Uzual
Tablou
Linie
Coloan
Tip de dat

Fizic
Fiier
Inregistrare
Cmp
Tip de dat

Definirea proprietilor structurale ale relaiilor se realizeaz prin tehnica


normalizrii. Se afirm c o relaie se gsete ntr-o form normal particular dac
ndeplinete un numr specificat de restricii. Normalizarea se obine printr-un
numr de pai succesivi, n cadrul unui proces reversibil, pn la realizarea formei
dorite. Forma normal a unei relaii este necesar deoarece formele normale nu
produc anomalii n actualizarea datelor unei baze de date relaionale. Tipurile de
restricii folosite la formele normale ale relaiilor sunt restriciile asupra valorilor
atributelor, restriciile referitoare la dependena atributelor secundare de chei,
restriciile cu privire la dependena atributelor principale de toate atributele. Se
folosesc urmtoarele forme normale:
1NF (forma normal 1). O relaie se gsete n 1NF dac domeniile pe
care sunt definite atributele relaiei sunt formate numai din valori elementare. Un
tuplu nu trebuie s conin atribute sau grupuri de atribute repetitive (nu se admit
duplicate).
2NF (forma normal 2). O relaie se afl n 2NF dac este n 1NF i
oricare dintre atributele non-cheie este dependent funcional complet de cheia
primar a relaiei.
3NF (forma normal 3). O relaie se gsete n 3NF dac este n 2NF i
atributele non-cheie nu sunt dependente tranzitiv de cheia primar a relaiei.
BCNF (forma normal Boyce-Codd). O relaie este n BCNF dac
dependenele funcionale netriviale ce pot apare n cadrul relaiei conin, n partea
stng, ca determinant, o cheie-candidat.
4NF (forma normal 4). O relaie se gsete n 4NF dac n cadrul
acesteia nu se manifest mai mult dect o dependen multivaloare.
5NF (forma normal 5). O relaie L se gsete n 5NF dac fiecare
dependen jonciune este implicat printr-o cheie-candidat a lui L.
Bazele de date relaionale conin structuri de date simple i intuitive. Ele
prezint avantaje legate de existena unui ansamblu integrat de utilitare bazat pe un
limbaj evoluat de programare (generatoare de meniuri, generatoare de forme,
generatoare de aplicaii, generatoare de etichete), de existena unor limbaje speciale
92

Universitatea SPIRU HARET

de definire i de manipulare a datelor, precum i de independena complet n


descrierea logic a datelor (n termeni de relaii) i n descrierea fizic a datelor (n
termen de fiiere). Dintre dezavantajele bazelor de date relaionale, se menioneaz
imposibilitatea utilizrii obiectelor complexe i dinamice, a administrrii datelor
distribuite i a cunotinelor.
4.4. Baze de date orientate obiect
Bazele de date orientate pe obiecte, OODB (Object-Oriented DataBase), i
SGBD asociate asigur crearea de obiecte complexe formate din componente
simple, fiecare prezentnd atribute i comportament propriu. Aceste sisteme se mai
numesc i sisteme de obiecte, cu originea n limbajele de programare orientate pe
obiecte, OOP. Prin aceste tipuri de baze de date se ridic nivelul de abstractizare.
Se face meniunea c ntre partea de limbaje de programare i partea de baze de
date exist multe elemente comune; cu toate acestea, aceste pri sunt diferite:
un program pe calculator este gndit s rezolve o anumit problem;
o baz de date este realizat pentru a rezolva o multitudine de probleme,
inclusiv cu elemente de pornire nedeterministe.
Pentru un program, obiectele complexe simplific problema, n timp ce n
situaia bazelor de date orientate pe obiecte, de regul, problemele se complic. Ca
urmare, se cuvine s se judece n mod nuanat atunci cnd se ncearc reliefarea
avantajelor utilizrii OOP i OODB.
Sistemul de gestiune al bazelor de date orientate pe obiect (SGBD-OO sau
OODBMS) are ca principale obiective [18]:
1. Modelarea superioar a datelor, ceea ce semnific dezvoltarea de noi
aplicaii; extinderea posibilitilor de generalizare i agregare a relaiilor; evoluia
ctre multimedia i hipermedia (sunet, imagine, texte).
2. Capacitatea de deducie superioar (ierarhie de clase, motenire).
3. mbuntirea interfeei cu utilizatorul.
4. Capacitatea de tratare dinamic, concomitent cu integrarea descrierii
structurale i comportamentale.
Modelul de dat-obiect asigur reprezentarea unor structuri de date
complexe i a unor ierarhii model, crend posibilitatea de definire a unor tipuri de
date care combin att structura de date, ct i definirea procedurii. Un model de
date orientat pe obiecte are la baz noiunea de entitate conceptual i definete un
obiect ca o colecie de proprieti care descriu entitatea. O comparaie ntre
noiunile clasice i cele asociate bazelor de date orientate pe obiecte este
prezentat, dup Date [5], n tabelul 4.1.
Tabelul 4.3
Nr.crt
1.
2.
3.
4.
5.

Noiunea specific obiectelor


Obiect nemutabil (care nu se poate muta)
Obiect mutabil (care se poate muta)
Clasa de obiecte
Metoda
Mesaj

Noiunea clasic de comparaie


Valoare
Variabil
Tip
Operator
Invocarea de operator
93

Universitatea SPIRU HARET

Obiectul reprezint conceptual o unitate identificabil cu coninut propriu, care


se deosebete de ceea ce o nconjoar. Fiecare obiect dispune de un identificator unic,
denumit ID al obiectului, OID (Object ID). Dou obiecte cu OID diferii sunt
diferite, chiar dac sunt identice sub toate aspectele transparente utilizatorului.
Dei tentaia iniial este de a considera obiecte doar unitile ce se pot muta,
prin obiecte se desemneaz att unitile fixe ct i cele mutabile. Fiecare obiect
posed un tip care semnific o clas de obiecte. Instana unui obiect reprezint un
obiect individual. Obiectele sunt ncapsulate. Structura obiectului i modul de
aciune al metodelor sale nu pot fi accesate i actualizate direct de un agent extern,
dar pot fi modificate indirect prin intermediul mesajelor. Aceast caracteristic
ascuns a obiectului se numete ncapsulare. ncapsularea presupune independena
fizic de date. Astfel, prin ncapsulare, reprezentarea intern a unui obiect poate s fie
modificat fr a fi nevoie ca aplicaiile care utilizeaz obiectul s fie rescrise.
Starea unui obiect este exprimat prin valorile atributelor sale. Colecia de
atribute trebuie aleas astfel nct s descrie entitatea, adic s cuprind atribute pe
care utilizatorul trebuie s le cunoasc. Metoda reprezint un program care
manipuleaz obiectul sau indic starea sa. Ea este asociat unei clase, iar
specificarea metodei se numete semntur.
Comportamentul unui obiect reprezint un set de metode sau operaii care
acioneaz asupra atributelor sale.
Obiectele se clasific n:
obiecte elementare ca: ntreg, boolean, ir de caractere;
obiecte compuse ca: nume, adres;
obiecte complexe ca: autoturism, angajat.
Un obiect nglobeaz urmtoarele elemente:
a) structura de date;
b) specificarea operaiilor;
c) implementarea operaiilor.
Structura unui obiect i operaiile (metodele) permise pentru acel obiect sunt
definite mpreun.
Metodele i atributele nu sunt vizibile din exteriorul obiectului. Un obiect
rspunde la mesaje care reprezint cereri adresate obiectului pentru a returna o
valoare sau pentru a-i schimba starea.
Un obiect este divizat n interfa public i n memorie privat. Interfaa
public este compus din definiiile interfeelor (corespunztoare semnturilor
specificaiei). Interfaa public nu face parte din obiectul corespunztor. Aceast
interfa public este inclus n obiectul de definire a clasei, CDO (Class-Defining
Object). CDO este obiectul ce definete clasa pentru care obiectul considerat
reprezint o instan (este similar unui descriptor). Memoria privat este compus
din variabile de instan (atribute sau membri) ale cror valori reprezint starea
intern a obiectului. Deoarece sistemele baze de date orientate pe obiecte reale nu
sunt pure (cu variabile instan care sunt netransparente utilizatorului),
variabilele de instan apar ca transparente utilizatorului. Se deosebesc variabile de
instan publice (transparente utilizatorului) i variabile de instan private (cele
netransparente utilizatorului).
Persistena este o proprietate a datelor sau a obiectelor care presupune
existena lor pe o durat mai mare n comparaie cu aceea a procesului care le-a
94

Universitatea SPIRU HARET

generat. Persistena reprezint proprietatea prin care starea bazei de date asigur
execuia unui proces pentru a fi refolosit ulterior n alt proces. Deoarece face parte
integrant din obiect, codul aferent metodelor este stocat n baza de date (ca i
starea obiectului).
Tipuri i clase
Obiectele care prezint acelai fel de atribute i acelai comportament fac
parte din acelai tip sau clas. n raport cu aceast caracteristic exist dou
categorii de sisteme orientate pe obiecte [18]:
a) sisteme care admit ca noiune de baz clasa, cum ar fi: VISION,
ORION, G-BASSE;
b) sisteme care admit ca noiune de baz tipul, cum sunt: C++, Simula, O2.
ntr-un sistem orientat pe obiecte, tipul sintetizeaz elementele comune ale
unui set de obiecte cu aceleai caracteristici. Acest sistem are ca i componente,
interfaa i implementarea. Interfaa este partea vizibil pentru utilizator i const
ntr-o list de operaii. Implementarea presupune descrierea structurii interne a
datelor obiectului i realizarea procedurilor de implementare a operaiilor interfeei.
Un tip este construit recursiv, ncepnd cu tipurile de baz: caracter, ntreg,
real, ir de caractere, boolean. Constructorii de tipuri sunt: tuplul, lista, setul i
clasa. O list este o colecie ordonat de obiecte ale aceleiai clase sau de valori ale
aceluiai tip. Elementele unei liste sunt accesibile direct prin rangul lor.
Operaiile permise asupra listelor sunt: afectarea (=), comparaia (= =),
concatenarea (+), accesul direct ([i]), apartenena (in), sublista ([i ; j]), numrarea
(count ( ) ), nlocuirea, tergerea (list ( ) ), inserarea ([:i]+=), iteraia ( { }).
Noiunea de clas, dei are aceeai specificaie cu cea de tip, este asociat cu
faza de execuie. Ea presupune generarea de obiecte prin operaia new aplicat
unei clase i stocarea setului de obiecte care reprezint instanele clasei. Descrierea
clasei servete ca ablon pentru crearea obiectele noi.
O clas este un tip abstract de date care definete att structura obiectelor
din clasa respectiv, ct i mulimea metodelor existente pentru aceste obiecte.
Astfel, obiectele din aceeai clas prezint aceleai atribute i aceleai metode i
rspund la acelai mesaj.
Motenirea
ntr-o baz de date orientat pe obiecte, clasele sunt aranjate ntr-o ierarhie
n care fiecare clas motenete toate atributele i metodele superclasei din care
face parte [18]. Motenirea conduce la reutilizarea codului. Motenirea reprezint
mecanismul de realizare a definirii unei clase n care deriv variabilele de instan
i metodele din alt definire de clas. Cnd o clas motenete, ea este considerat
ca subclas. Conceptele de subclas i superclas sunt analoge conceptelor de
generalizare i specializare.
Obiectele, clasele i motenirea formeaz baza modelului de date orientat pe
obiecte i presupune urmtoarele aspecte:
obiectele sunt entiti de baz care nglobeaz structuri de date i operaii;
fiecare obiect are asociat un identificator care este unic i asigurat de sistem;
clasele descriu tipuri generice de obiecte, toate obiectele sunt membrii
unei clase;
clasele sunt nrudite prin motenire;
95

Universitatea SPIRU HARET

definirea unei clase este mecanismul de specificare a schemei bazei de date;


definirea unei clase poate include variabile de instan, avnd tipuri de
date definite de sistem sau de utilizator;
schema bazei de date poate fi extins dinamic prin definirea de noi clase.
Operaiile modelului de date orientat pe obiecte
Operaiile se pot grupa n modul urmtor:
a) obiectele comunic ntre ele prin mesaje;
b) un mesaj poate fi trimis instanelor mai multor clase;
c) metodele pot fi definite, terse sau modificate;
d) clasele pot fi definite i actualizate prin operaii de creare, tergere i
modificare;
e) instana unei clase poate fi actualizat prin metode care modific valorile
variabilelor propriei instane, aceasta modificnd starea intern a obiectului.
ntr-o serie de implementri, definirile de clas sunt ele nsele obiecte, numite
obiecte de clas. Obiectele clas sunt instane ale unei clase generice sau ale unei
metaclase. Operaiile de creare, modificare i tergere ale definirilor de clas pot fi i
implementate ca mesaje. n modelul de date orientat pe obiecte, regulile de
integritate reprezint o consecin a structurii modelului i a urmtoarelor operaii:
toate obiectele trebuie s respecte protocolul specificat de definirile lor de
clas;
obiectele sunt ncapsulate, acest lucru presupunnd accesul limitat la
obiecte prin folosirea protocolului de mesaje definit pentru clasa obiectului;
identificatorul obiectului asigur integritatea referirii la un obiect. Ca
atare, un obiect nu exist fr s aib asignat un identificator. Dac un obiect este
ters sau mutat, identificatorul su trebuie i el ters sau mutat.
O schem complet a unei baze de date orientat pe obiecte poate consta din
una sau mai multe ierarhii de clas, mpreun cu relaiile structurale.
Modificarea schemei presupune:
1. Definirea unei taxonomii i a unui model al schimbrilor. Taxonomia
definete un set de schimbri semnificative ale schemei, iar modelul furnizeaz o
baz pentru specificarea semanticilor schimbrilor schemei;
2. Implementarea schimbrilor schemei. Aceste schimbri pot fi:
a) schimbri referitoare la modul de definire a unei clase. Acestea includ
schimbrile atributelor i metodelor definite pentru o clas, cum ar fi: schimbarea
numelui sau domeniul unui atribut, adugarea, tergerea unui atribut sau a unei
metode;
b) schimbri referitoare la structura ierarhiei de clase, care includ adugarea
sau tergerea unei clase i schimbarea relaiilor superclas/subclas dintre o
pereche de clase.
Proiectarea bazei de date orientat pe obiecte
Pentru proiectarea unei baze de date orientat pe obiecte [18] se folosete
tehnica top-down, care const n identificarea componentelor dup care se stabilesc
corelaiile ntre ele i se rafineaz succesiv n cascad componentele sale. Se
poate utiliza i metoda bottom-up, prin care mai nti se identific componentele
funcionale pe baza crora se vor identifica, n coleciile existente, obiectele, care
pot fi reutilizate pentru noul proiect. Componentele care nu exist vor fi create ca
96

Universitatea SPIRU HARET

subclase ale unor clase existente. Odat creat o ierarhie potrivit, se testeaz
componentele specifice.
Sistemul de gestiune al bazelor de date orientate pe obiecte (SGBD-OO sau
OODBMS) conine structuri i reguli orientate ctre lucrul cu obiecte, incluznd:
un sistem de date abstracte pentru construirea de noi tipuri de date;
un constructor de tip ir;
un constructor de tip secven;
un constructor de tip nregistrare;
un constructor de tip set;
funcii;
un constructor de tip reuniune;
o compunere recursiv a elementelor anterioare.
n proiectarea SGBD-OO se au n vedere urmtoarele:
Principiul 1. SGBD-OO utilizeaz funcii care conin metode i proceduri
ale bazei de date, cu restricia ca acestea s fie ct mai compacte, ncapsulate,
ermetizate. ncapsularea funciilor l ajut pe programatorul de aplicaie s asocieze
funciile pe care i le creeaz cu coleciile utilizate.
Principiul 2. SGBD-OO i n general SGBDurile din generaia a treia vor
prelua avantajele SGBDurilor din generaia a doua. n plus, se caut o modalitate
de acces la o nregistrare existent ntr-o colecie oarecare i aceasta se poate
realiza prin utilizarea unui sistem de pointeri ctre identificatorii de obiecte.
Principiul 3. SGBD-OO trebuie s poat conecta i limbaje din generaia a patra.
Un SGBD-OO lucreaz cu obiecte complexe, obiecte care se obin prin
aplicarea de constructori asupra obiectelor simple.
Identitatea obiectelor. Orice obiect exist independent de valorile atributelor
sale, ceea ce conduce la dou relaii posibile:
- identitatea a dou obiecte, adic sunt unul i acelai obiect;
- egalitatea a dou obiecte, adic au aceeai valoare.
Arhitectura SGBD-OO cuprinde trei componente:
1. Gestionarul de obiecte (Object Manager) furnizeaz interfaa dintre
procesele externe i SGBD-OO.
2. Server-ul de obiecte (asigur gestiunea tranzaciei i gestiunea stocului de
obiecte).
3. Stocul rezident de obiecte.
Gestionarul de obiecte asigur implementarea complet a modelului de dateobiecte pentru utilizatorul extern. Acest lucru include posibilitatea de a defini
structurile i de a executa operaiile specificate prin model. El primete cereri de
creare de definiri de clase, de modificare a definirilor de clase deja existente, de
manipulare a mesajelor generate de un program de aplicaie n execuie.
Server-ul de obiecte asigur refacerea, inseria, tergerea i actualizarea
obiectelor n stocul rezident de obiecte. Un singur server poate manipula tranzacii
transmise de la mai muli gestionari de obiecte.
Limbajul de definire a datelor este realizat prin mecanismul de transmitere a
mesajelor. Limbajul pentru cereri ad-hoc se bazeaz pe transmitere de mesaj pentru
selectarea i regsirea obiectelor.
Prelucrarea mesajelor. Gestionarul de obiecte asigur interfaa dintre
procesele externe i SGBD-OO. El primete mesaje pentru obiecte individuale,
97

Universitatea SPIRU HARET

realizeaz legturi dinamice i operaii de verificare a tipului i expediaz cerina


extern pentru obiecte, ctre server-ul de obiecte.
Transmiterea de mesaje i prelucrarea cererii pot fi reprezentate astfel:
- controlul sesiunii (meninerea spaiului local de lucru al utilizatorului
extern pentru operaii efectuate asupra bazei de date);
- legtura dinamic (selectarea unei metode pentru un mesaj trimis unui
obiect n momentul execuiei);
- crearea de noi obiecte sau instane de clas trebuie iniiat de gestionarul
de obiecte;
- transmiterea cerinelor obiectului i actualizarea acestuia;
- transmiterea cererii. Cererile pot fi translatate n planuri de execuie n care
selecia i regsirea obiectelor sunt realizate prin transmiterea de mesaje. Aceasta
presupune c protocolul de mesaje al clasei obiectului este definit pentru a permite
accesul la variabilele de instan necesare pentru a selecta obiectul. Obiectele,
definirile de clas i metodele cerute de gestionarul de obiecte sunt regsite de
server-ul de obiecte din stocul rezident de obiecte.
Definirea i modificarea schemei const din urmtoarele etape:
1. Asigurarea accesului la definirile de clas existente. Definirile tuturor
claselor asigurate de SGBD-OO, ca i a claselor create de utilizatorii umani, pot fi
stocate permanent n SRO, ntr-o bibliotec de clas sau ntr-un dicionar de date.
2. Extensibilitatea schemei bazei de date. Aceasta include prelucrarea
declaraiilor limbajului de baza de date, specificnd crearea, mutarea sau
identificarea definirilor de clas.
3. Redefinirea dinamic a clasei (evoluiei schemei).
Gestionarul de obiecte trimite cerine pentru regsirea i actualizarea
definirilor de clas, server-ului de obiecte. Gestiunea tranzaciilor este asigurat de
server-ul de obiecte. Gestiunea stocului de obiecte se refer la meninerea nivelului
fizic de organizare a bazei de date obiect (ODB) i la asigurarea cilor de acces
necesare realizrii accesului eficient la stocul de obiecte.
Funciile de baz ale stocului de date-obiect se caracterizeaz ca fiind:
1. Suport pentru reziden, adic obiectele create i adugate trebuie reinute
i dup ce se ncheie sesiunea.
2. Suport pentru obiecte mari. SGBD-OO trebuie s poat suporta stocarea i
manipularea obiectelor de lungime variabil i de orice dimensiune.
3. Faciliti de arhivare i asigurare de rezerve (dubluri).
Caracteristicile care asigur regsirea i actualizarea obiectelor stocate pot fi:
a) suport pentru ci de acces care este necesar pentru a asigura regsirea i
actualizarea eficient a datelor stocate n baze de date mari. Aceasta include
indexarea obiectelor pentru a permite regsirea eficient a obiectelor individuale,
dar i indexarea obiectelor prin valorile variabilelor de instan, pentru regsirea
subseturilor de obiecte pentru satisfacerea cererilor;
b) tipuri de indeci specializai pentru obiecte;
c) gruparea obiectelor n acelai sector de stoc secundar;
d) segmentarea obiectelor stocate.

98

Universitatea SPIRU HARET

5. SISTEMUL DE GESTIUNE
A BAZELOR DE DATE MICROSOFT ACCESS

5.1. Prezentarea sistemului Microsoft Access


Produsul-program Microsoft Access reprezint un sistem de gestiune a
bazelor de date relaionale (SGBDR) care este inclus n compunerea pachetului de
birotic Microsoft Office si care lucreaz sub sistemul de operare Microsoft
Windows. Ca urmare, Microsoft Access folosete toate facilitile oferite de
sistemul de operare Microsoft Windows.
Firma Microsoft a realizat n decursul timpului mai multe versiuni ale
produsului Access. n capitolul de fa, referirile sunt efectuate la versiunile
Microsoft Access 2000, 2002 (XP) i 2003.
La baza SGBDR Microsoft Access se afl modelul relaional al datelor ce a
fost prezentat pe larg n paragraful 4.3 i modelul orientat pe obiecte (unui obiect i
sunt asociate evenimente i proprieti). n comparaie cu alte SGBDR, produsul
Microsoft Access dispune de toate componentele unei baze de date stocate ntr-un
fiier cu extensia MDB.
Sistemul de gestiune a bazelor de date relaionale Microsoft Access conserv
avantajele sistemelor de gestiune, asigurnd astfel interfaa ntre baza de date i
utilizator. SGBD Microsoft Access permite definirea, consultarea i actualizarea
bazelor de date i, n plus, partajarea datelor ntre mai muli utilizatori.
Se apreciaz c mai mult de 20 de utilizatori pot lucra simultan la o baz de
date Access.
Pentru execuia comenzilor prin intermediul interfeei grafice a SGBD
Microsoft Access se asigur urmtoarele posibiliti: meniuri, instrumente specifice
(unelte ca butoane, casete etc), casete de dialog, combinaii de taste.
Produsul Microsoft Access permite lucrul cu trei limbaje: QBE (Query By
Examples), SQL (Structured Query Language) i VBA (Visual Basic for
Applications). Ca urmare, exist mai multe modaliti de realizare a aplicaiilor
pentru baze de date sub SGBD Microsoft Access: interfaa standard Access,
interfaa SQL, cu ajutorul VBA, interfeele Access pentru comunicarea cu alte
SGBD-uri (Paradox, FoxPro, dBase etc.), interfeele Access cu alte aplicaii
Windows. Aplicaiile n sine sunt obiecte ale utilizatorilor destinate pentru o
anumit baz de date. Aceste obiecte sunt, de regul, de tip vizual.
Schema bazei de date este format din ansamblul tabelelor i poate fi utilizat
prin manipularea interogrilor asupra bazei de date. Aceste interogri sunt obinute
prin intermediul limbajului de interogare structurat, SQL.
Produsul Microsoft Access este compatibil cu tehnologia ActiveX, care este
specific aplicaiilor de tipul client/server.
99

Universitatea SPIRU HARET

SGBD Microsoft Access 2000 reprezint o variant mbuntit a versiunii


anterioare (Access 97) destinat bazelor de date relaionale, sub sistemul de operare
pe 32 bii Windows 2000 sau Windows NT. mbuntirile aduse fa de versiunea
anterioar sunt, n esen, urmtoarele [18]:
Caracteristici fundamentale:
a) performana care este legat, n primul rnd, de superioritatea sistemului
de operare pe 32 de bii (dar cu posibilitatea de a avea o memorie RAM de cel
puin 32 MB);
b) lansarea n execuie a sistemului presupune precizarea unui formular cu
deschidere automat i opiuni de afiare a barelor de instrumente i a ferestrei
Database;
c) integrarea este dat de facilitatea SGBD Access de a lucra transparent cu
produsele Word i Excel;
d) duplicarea, ce permite unei baze de date s poat fi utilizat n mod
multiuser (multiutilizator, adic simultan de ctre mai muli utilizatori) i la staiile
din reea neconectate, nregistrrile fiind sincronizate i dup ncetarea lucrului;
e) DatabaseWizard (programul vrjitor pentru baze de date) are
posibilitatea de a asigura crearea de tabele, interogri, formulare i rapoarte pentru
mai multe baze de date obinuite;
f) fereastra Database (baza de date) asigur afiarea detaliilor fiecrui obiect
(descrierea, data crerii, data ultimei modificri).
Posibiliti de filtrare i sortare:
a) proprietile Filter i OrderBy asigur salvarea i refolosirea filtrului i a
ordinei de sortare utilizate cel mai recent;
b) filtrarea cu ajutorul formularului presupune folosirea formularului curent
cu care se lucreaz ca o interfa obinuit;
c) filtrarea prin selecie presupune c setul curent de nregistrri poate fi
limitat la nregistrrile care corespund datelor selectate la momentul respectiv prin
executarea unui singur clic de mouse.
Tabele:
a) AutoNumber (Numr cu incrementare automat) nlocuiete tipul Counter
(Numrtor), facilitnd astfel utilizarea valorilor aleatoare i tipul ReplicationID
(Identificator multiplicare), necesare bazelor de date copie;
b) controlul modular de afiare permite definirea pentru fiecare cmp a tipului
controlului prestabilit (caset de text, caset combinat, caset de validare .a.);
c) LookupWizard (programul vrjitor de cutare) este utilizat n special
pentru a introduce proprietile corespunztoare cmpurilor utilizate n calitate de
chei externe (strine).
Formulare:
a) imaginile (Images) asigur fundaluri pentru formulare i rapoarte create pe
baza unor imagini redimensionate la scar;
b) asigur lucrul cu evenimente de tip filtru (Filter) care apar la crearea unui
filtru, precum i cu evenimentul ApplyFilter, care apare la aplicarea acestuia;
100

Universitatea SPIRU HARET

c) instanele ofer posibilitatea crerii i deschiderii simultane a mai multor


variante ale aceluiai formular;
d) transformarea unei comenzi macro n cod se realizeaz cu ajutorul unui
utilitar care transform toate comenzile macro dintr-un formular n cod Visual
Basic (VB);
e) proprietile datelor AllowAdditions (permit adugrile) i AllowDeletions
(permit tergerile), asigur posibilitile de control asupra modului de utilizare a
unui formular.
Controale:
a) apariia unui nou tip de eveniment, i anume Change (schimb), care
permite operaii de cutare ntre apsrile tastelor;
b) apariia unui text cu explicaii de utilizare a instrumentelor, care presupune
definirea unui text cu explicaii (ToolTip) pentru toate controalele;
c) casetele combinate sunt mult mai rapide dect n versiunile anterioare,
ndeosebi n manipularea unui volum foarte mare de date;
d) posibilitatea metamorfozrii, care presupune schimbarea controalelor dintrun tip ntr-altul, ca de exemplu schimbarea unei casete de text ntr-o caset
combinat;
e) Memos (cmpurile memo) presupun asocierea automat a barei de derulare
vertical i cu diverse opiuni de tipul EnterKeyBehavior (introducere a modului de
comportare a tastei).
Rapoarte:
a) apariia posibilitii asocierii unui raport filtrului curent dintr-un formular, prin
utilizarea proprietilor Filter i FilterOn;
b) NoData reprezint un eveniment nou folosit pentru detectarea rapoartelor
fr date;
c) afirile anticipate asigur afiarea simultan a mami multor pagini i, de
asemenea, modificri ale opiunilor Zoom. Afirile anticipate sunt mult mai
rapide, datorit faptului c evenimentele sunt declanate o singur dat.
Visual Basic pentru aplicaii (VBA):
a) interfaa presupune fereastra Watch (supraveghere), posibiliti de anulare
a comenzilor anterioare pe mai multe niveluri, alegerea culorilor pentru cuvintele
cheie, precum i comentarii;
b) sistemul permite ca tipurile de date definite de utilizator s cuprind la
rndul lor alte tipuri (standard sau definite de utilizator) i, de asemenea, ca datele
returnate prin funcii s fie de aceste tipuri;
c) argumentele opionale permit crearea de funcii care utilizeaz un numr
variabil de argumente, prin folosirea opiunii ParamArray (tablou de parametri);
d) utilizarea funciilor n aa fel nct funciile pot fi folosite fr a fi
desemnate, astfel c se elimin necesitatea apariiei variabilelor false;
e) prin acceptarea valorilor nule, funcia Nz() transform o valoare nul n
orice valoare specificat de utilizator;
101

Universitatea SPIRU HARET

f) VBA este mult mai puternic dect AccessBasic, datorit posibilitilor de


compilare condiionat, operaiilor OLE (Object Linking and Embedding) extinse i
utilizrii noilor tipuri de date (ca, de exemplu, boolean, octet, dat calendaristic).
Fa de versiunea Microsoft Access 2000, versiunea Microsoft Access 2002
(XP) prezint urmtoarele mbuntiri:
un nou format de fiiere, cu meninerea formatului Microsoft Access 2000,
din motive de compatibilitate la lucrul n reeaua n care se gsesc versiuni diferite
ale Microsoft Office;
panouri pentru sarcini (task-uri) n format nou care apar n partea dreapt a
aplicaiei (New File, Office Clipboard, Clip Gallery);
posibilitatea de a anula i reface mai multe aciuni atunci cnd se lucreaz
cu obiecte ale unei baze de date Microsoft Access (tabele, formulare);
introducerea unei noi componente SQL Server 2000 Desktop Engine, ca
versiune compatibil cu Microsoft SQL Server, care este rulat direct pe un sistemclient (cu salvarea local a datelor);
adugarea dictrii vocale i a comenzilor vocale pentru introducerea de
date n tabele i pentru a activa sistemul de meniuri i barele cu instrumente din
Microsoft Access (caracteristica Speech care trebuie, n prealabil, configurat i
instruit).
Fa de versiunile Microsoft Access 2000 i XP, versiunea Microsoft Access
2003 prezint urmtoarele caracteristici noi [26]:
protecia mportiva macroinstruciunilor realizate n Visual Basic pentru
aplicaii, VBA (Visual Basic for Applications); n acest scop, se stabilete un nivel
de securitate, astfel nct se cere o confirmare ori de cte ori se deschide o baz de
date ce este posibil s conin macroinstruciuni n cod VBA;
vizualizarea datelor cu privire la dependena obiectelor; prin vizualizarea
unei liste de obiecte ce sunt dependente unele de altele se creeaz posibilitatea de a
menine suplimentar o baz de date i de a elimina astfel o posibil surs de erori;
introducerea opiunilor de corectare automat; n acest scop, butonul
AutoCorrectOptions (opiuni de corectare automat) apare afiat lng textul ce a
fost supus corecturii automate; exist i posibilitatea de dezactivare a butonului
AutoCorrectOptions prin intermediul unui click pe buton urmat de selecia
corespunztoare;
blocarea funciilor ce se pot prezenta ca potenial nesigure; este eliminat
astfel posibilitatea de folosire a acestora n expresii ce utilizeaz modul mbuntit
Microsoft Jet Expression Service;
opiune de actualizare a proprietilor pentru toate controalele ce sunt
asociate unui cmp; n modul de vizualizare a ferestrei de proiectare, Table
Design, este afiat o opiune de actualizare a proprietii pentru controale asociate
cmpului;
Etichete inteligente (Smart Tags), adic acele etichete asociate oricrui
cmp din tabele, interogri, formulare, rapoarte sau paginilor de acces la datele din
baza de date, ce permit integrarea direct n SGBD Access a aciunilor executate, de
102

Universitatea SPIRU HARET

regul, n alte programe de aplicaie; prin intermediul butonului SmartTagActions


care apare afiat pe ecran pot fi executate aciunile dorite.
Butonul
AutoCorrectOptions prezentat mai sus reprezint o etichet inteligent;
Suport pentru temele Microsoft Windows XP; cnd se selecteaz o alt
tem dect cea prestabilit, produsul Microsoft Access 2003 aplic tema selectat
controalelor, casetelor de dialog, modurilor de vizualizare etc.;
Posibilitatea de creare a unui table local dintr-un tabel legat;
Sortare mbuntit n controale; pagina de sortare asociat programului
Lookup Wizard din orice baz de date este similar cu pagina de sortare din
programul Report Wizard;
Suport pentru limbajul extins de marcare a hipertextelor, XML (Extensible
Markup Language); SGBD Access dispune de facilitatea de import i export a
datelor XML i de conversie ntre alte formate de date prin utilizarea fiierelor
XML similare;
Posibiliti extinse de detectare a erorilor din formulare i din rapoarte;
exist o funcie de detectare automat a erorilor;
Suport asigurat pentru dispozitive de scriere de tipul Tablet PC (se
realizeaz introducerea rapid a datelor n Access i n celelalte tipuri de fiieredocument Office prin scriere de mn pe dispozitive Tablet PC);
Asigurarea copiilor de siguran pentru proiecte sau baze de date;
Realizarea importului, exportului i legrii unei liste Microsoft Windows
SharePoint Services din i n Access; Programul Microsoft Windows SharePoint
Services, respectiv serverul Microsoft SharePoint Portal fac parte din noua
arhitectur NET;
Asigurarea unor funcii mbuntite pentru fonturi n modurile de
vizualizare SQL;
Includerea unui sistem de asisten funcie de context n modul de
vizualizare SQL al unei interogri dintr-o baz de date Access.
5.2. Cunoaterea mediului de lucru Microsoft Access
5.2.1. Definirea componentelor principale ale SGBD Microsoft Access
SGBD Microsoft Access 2003 (XP, 2000) asigur posibilitatea manipulrii
datelor n conformitate cu cerinele utilizatorilor. Datele sunt stocate n mod
organizat n baze de date. Baza de date permite localizarea rapid a unui anumit
element, compararea statisticilor pe diverse perioade de timp, interogarea anumitor
categorii de date i obinerea facil a rezultatelor tiprite.
O baz de date Microsoft Access reprezint o colecie de obiecte de tipul:
tabele, formulare, interogri, rapoarte, pagini, macroinstruciuni i module.
Obiectele Microsoft Access sunt percepute prin ceea ce fac[42],
comportamentul lor mascnd elemente de structur intern. n momentul n care
obiectul a fost creat, el poate fi utilizat i n alte aplicaii, compuse din obiecte care
interacioneaz prin specificul comportamentului lor. n acest caz, nu mai exist un
103

Universitatea SPIRU HARET

program care manipuleaz datele, ci obiecte care i transmit reciproc date.


Evenimentele care apar i schimbrile de stare pe care acestea le declaneaz
determin o schimbare a metodologiei de concepere a sistemului.
Tabelele (Tables) sunt obiecte utilizate de Access pentru stocarea datelor.
Crearea unei baze de date ncepe cu definirea tabelelor. Fiecare coloan a tabelului
este denumit cmp (field), iar fiecare rnd al tabelului constituie o nregistrare
(record). nregistrrile unui tabel respect aceeai structur de cmpuri. La crearea
unui tabel nou se solicit definirea cmpurilor, atribuindu-se fiecruia o denumire
unic i indicndu-i SGBD Access tipul de date corespunztor. Ulterior se pot
aduga i alte cmpuri, cu condiia reproiectrii eventualelor formulare i rapoarte
care folosesc datele tabelului n structura anterioar acestei operaii.
Interogarile (Queries) sunt obiecte Access ce reprezint ntrebri pe care
utilizatorul le formuleaz n legtur cu numite informaii din baza de date. n
momentul n care utilizatorul pornete la construcia unei interogri, acesta trebuie
s aib deja o viziune de ansamblu asupra datelor pe care dorete s le regseasc,
i anume: ce cmpuri se vor utiliza, din care tabele se vor extrage datele, ce criterii
trebuie s ndeplineasc aceste date, n ce ordine vor fi ele sortate. Construirea unei
interogri n SGBD Access reprezint un proces simplu i rapid de aezare a
tabelelor i a cmpurilor necesare pe o gril de tipul QBE (Query by Example).
Limbajul QBE a fost lansat pe pia n anii 70 ai secolului XX de firma IBM, care
a dorit s pun la dispoziia utilizatorilor un produs performant de regsire a datelor
ntr-o baz de date. Succesul limbajului QBE a fost att de mare, nct acesta este
prezent ntr-o form sau alta n aproape toate sistemele SGBD, inclusiv n
Microsoft Access.
Formularele (Forms) reprezint obiecte Access destinate introducerii datelor
ntr-o baz de date (cnd formularul este asociat unui tabel), precum i vizualizrii
datelor datelor din baza de date (cnd formularul este asociat unei interogri). Astfel,
cu ajutorul formularelor se pot efectua cteva operaii tipice n baza de date, i anume
operaii de adugare, modificare sau de tergere a unor date din baza de date.
Rapoartele (Reports) reprezint un alt obiect al unei baze de date Microsoft
Access, prin intermediul cruia utilizatorul are posibilitatea de a prezenta date
selectate n rezumat, inclusiv n format pentru tiprire. Prin intermediul rapoartelor
utilizatorul are un control complet asupra dimensiunilor i modului de prezentare a
datelor de ieire. De asemenea, rapoartele permit prezentarea unor informaii de
sintez rezultate ca urmare a prelucrrilor executate n baza de date. Rapoartele se
difereniaz de formulare prin faptul c n timp ce formularul este proiectat pentru
a avea un acces aleator la date, el bazndu-se pe un set dinamic al datelor,
rapoartele nu modific niciodat datele din baza de date, parcurgerea nregistrrilor
realizndu-se n mod secvenial (SGBD Microsoft Access utilizeaz pentru
obinerea unui raport o copie a datelor protejat la scriere).
Paginile (Pages) sunt obiecte Access ce asigur accesarea bazelor de date din
Internet prin intermediul navigatoarelor (browser-elor) Web. Aceste obiecte sunt
necesare ca urmare a prelucrrii integrate a datelor care circul n Internet sub forma
unei aplicaii globale a datelor, inclusiv pentru funcia de partajare a datelor.
104

Universitatea SPIRU HARET

Macroinstruciunile sau macro-urile (Macros) reprezint obiecte Access care


definesc ansamble de comenzi pe care sistemul Microsoft Access le execut
automat la apariia unor evenimente. Macro-urile pot fi ataate unui formular,
raport sau control n scopul automatizrii unor operaii de rutin (deschidere sau
nchidere de formulare, imprimarea unor rapoarte, filtrarea, verificarea sau
validarea unor date etc.).
Modulele (Modules) sunt obiecte Access ce sunt create n limbajul Visual
Basic pentru aplicaii, VBA (Visual Basic for Applications), destinate extinderii
posibilitilor funcionale ale unei baze de date.
5.2.2. Deschiderea i nchiderea
unei baze de date n Microsoft Access
SGBD Microsoft Access poate fi pornit din meniul Start sau din zona de
lucru. La pornirea SGBD Access 2003, panoul de lucru Getting Started este
disponibil n partea din dreapta ecranului (Fig.5.1). Din meniul Vizualizare (View)
se execut clic pe opiunea Task Pane de unde se alege panoul de lucru dorit cu clic
pe sgeata de list de pe bara de titlu a panoului respectiv. Comutarea ntre
panourile de lucru se efectueaz cu clic pe butoanele napoi (Back) i nainte
(Forward). nchiderea unui panou de lucru se efectueaz prin intermediul
butonului nchidere (Close).

Fig.5.1. Panoul de lucru al SGBD Microsoft Access 2003

Caseta Search for servete pentru cutarea unui nume sau a unei locaii de
fiier. De asemenea, Search for poate fi util pentru cutarea unei proprieti ntro baz de date sau a unui anumit ir de caractere.
105

Universitatea SPIRU HARET

Deschiderea unei baze de date existente se execut din panoul de lucru


Getting Started, cu opiunea Open din meniul File sau cu butonul Open de pe bara
cu instrumente, urmat de numele bazei de date.
Crearea unui nou fiier se face cu opiunea Task Pane (fig.5.1). Pentru o baz
de date nou se alege opiunea Blank database din meniul New (Fig.5.2).

Fig.5.2. Alegerea opiunii de creare a unei baze de date noi

Deschiderea unei baze de date existente sau noi presupune lucrul cu fereastra
Database (baz de date) care afieaz obiectele care formeaz baza de date
(fig.5.3). Fereastra Database pune la dispoziie utilizatorului o metod simpl de
gestionare a obiectelor care compun baza de date. n fereastra Database sunt
afiate, n partea stng a ferestrei, cele apte tipuri de obiecte care formeaz baza
de date, i anume:
Tabelul (Table);
Interogarea (Query);
Formularul (Form);
Raportul (Report);
Pagini Web (Pages);
Macro-ul (Macro);
Modulul (Module).
Cele trei butoane (butonul Open, butonul Design, butonul New), afiate n
partea de sus a ferestrei Database, sunt utilizate pentru crearea, modificarea i
respectiv afiarea obiectului curent.
Obiectele create vor fi afiate n lista cu obiecte situat n mijlocul ferestrei
Database. n interiorul acestei liste se mai afl trei opiuni rapide de creare a
obiectelor.
Obiectele gestionate cu SGBD Microsoft Access, mpreun cu elementele de
control care le sunt asociate, conin proprieti i declaneaz apariia unor tipuri
de evenimente.
106

Universitatea SPIRU HARET

Fig.5.3. Fereastra Database

Pentru modificarea proprietilor unui obiect, se selecteaz din partea stng


a ferestrei Database eticheta corespunztoare tipului de obiect. Aceast operaie
are ca efect afiarea n ordine alfabetic (n lista cu obiecte) a tuturor obiectelor de
acelai tip.
Se execut un clic cu butonul din partea dreapt a mouse-ului pe obiectul a
crui proprietate se dorete a se modifica, iar din meniul rapid care apare se pot
efectua urmtoarele:
deschiderea obiectului respectiv pentru a consulta datele coninute n el;
deschiderea obiectului n modul Design pentru a efectua modificri de
structur;
salvarea obiectului respectiv sub un alt nume;
vizualizarea coninutului obiectului nainte de a-l trimite pentru tiprire;
realizarea unei copii a coninutului obiectului la imprimant;
tergerea din baza de date a obiectului, sau redenumirea acestui obiect;
realizarea unui duplicat al obiectului curent prin copierea n clipboard
(memorie tampon sau temporar) i apoi recopierea din aceast memorie tampon.
Aceast comand este necesar atunci cnd este nevoie de un tabel similar cu unul
deja creat. SGBD Access cere confirmarea copierii tabelului cu toate datele pe care
le conine, sau numai a structurii acestui tabel;
copierea unui tabel sau a unui obiect de tip interogare n clipboard i apoi
recopierea acestuia n programe ca Excel i Word; se determin astfel copierea
datelor Access n programele respective.
Butonul Open (deschide), sau alegerea opiunii Open din meniul rapid, are ca
efect o afiare a obiectului selectat pentru o utilizare normal.
Butonul Design (proiectare), sau alegerea opiunii Design din meniul rapid,
asigur ca obiectul selectat s fie deschis n modul de afiare Design n vederea
efecturii modificrilor necesare tipului de aplicaie dorit de utilizator.
107

Universitatea SPIRU HARET

Butonul New (nou) asigur crearea unui obiect nou, de tipul selectat anterior.
n timpul lucrului cu SGBD Microsoft Access se pot obine informaii de
ajutor prin intermediul meniului Help de pe bara cu instrumente. Prin introducerea
unui sau mai multor cuvinte-cheie n caseta Search for se obin explicaii
detaliate referitoare la subiectul dorit.
5.3. Tabelul
5.3.1. Crearea unui tabel
Tabelul (Table) este un obiect specific SGBD Microsoft Access pentru
stocarea datelor. Crearea unei baze de date (structurile de date specifice acesteia)
ncepe cu definirea tabelelor. Aceast definire nseamn, de fapt, stabilirea
structurii tabelului. Fiecare coloan a tabelului este denumit cmp (field), iar
fiecare rnd al tabelului constituie o nregistrare (record). nregistrrile unui tabel
respect structura de cmpuri a tabelului. La crearea unui tabel nou se solicit
definirea cmpurilor, atribuindu-se fiecruia o denumire unic i indicndu-i
SGBD Microsoft Access tipul de date corespunztor. Ulterior, se pot aduga i alte
cmpuri, cu condiia reproiectrii eventualelor formulare i rapoarte care folosesc
datele tabelului n structura anterioar acestei operaii.
Pentru crearea unui tabel, se poate utiliza una dintre urmtoarele trei metode:
Create table in Design View (crearea tabelului cu ajutorul ferestrei de
proiectare);
Create table by using wizard (crearea tabelului prin folosirea ghidului);
Create table by entering data. (crearea tabelului prin introducerea datelor).
Crearea tabelelor prin alegerea opiunii Create table by using wizard
(program vrjitor dedicat tabelelor) asigur asistarea pe ntregul parcurs de
construcie a unui tabel, definind prin intermediul unui dialog cu utilizatorul
numele i tipul de cmpuri care definesc tabelul.
O alt modalitate de a crea un tabel o constituie executarea unui clic de
mouse pe butonul New i alegerea, din fereastra de dialog New Table, a uneia
dintre cele cinci opiuni disponibile (fig.5.4):
1. Datasheet View permite crearea unui tabel n modul Datasheet (foaie de
date), avnd 10 cmpuri (coloane) i 21 de nregistrri (rnduri) libere, pregtit
pentru completare.

Fig.5.4. Fereastra New Table


108

Universitatea SPIRU HARET

2. Design View permite crearea unui tabel n modul Design (proiectare).


3. Table Wizard permite crearea de tabele cu ajutorul magicienilor bazei de
date.
4. Import Table aceast facilitate import tabele i obiecte aflate n alte
baze de date.
5. Link Table creeaz tabele n baza de date curent care sunt legate cu alte
tabele din baze de date externe.
Crearea tabelelor cu ajutorul opiunii Design View presupune parcurgerea a
trei pai pentru definirea unui cmp n structura unui tabel: stabilirea numelui
cmpului, stabilirea tipului de dat asociat acelui cmp i stabilirea proprietilor
acestuia.
Cnd se alege aceast modalitate de construcie a unui tabel, pe ecranul
monitorului este afiat fereastra de dialog Table (fig.5.5).

Fig.5.5. Fereastra de dialog Table

Fereastra de dialog Table este format din dou zone: zona aflat n partea de
sus a ferestrei (zon folosit pentru declararea cmpurilor), alctuit dintr-un tabel
format din trei coloane, i o a doua zon aflat n partea de jos a ferestrei, zon n
care se stabilesc proprietile cmpului.
109

Universitatea SPIRU HARET

Zona de declarare a cmpurilor este format dintr-un tabel compus din trei
coloane:
Coloana Field Name n aceast coloan se declar numele cmpurilor.
SGBD Microsoft Access permite folosirea unor nume de cmpuri de maxim 64 de
caractere, inclusiv spaiile. n construcia numelui unui cmp se pot folosi litere
mari i mici, avndu-se n vedere ca aceste nume s nu prezinte aceeai denumire
cu numele utilizate ca proprieti de SGBD Microsoft Access.
Coloana Data Type indic ce tip de date vor fi memorate n acel cmp i
ct memorie se va aloca pentru acel cmp.
Coloana Description (Descriere) n aceast coloan se poate scrie de
ctre utilizator un text explicativ cu scopul de a detalia destinaia cmpului.
Tipurile de date asociate cmpurilor definesc tipurile de cmpuri i sunt
urmtoarele:
1. Text
Un cmp text are, implicit, 50 de caractere, dar se poate opta pentru orice
lungime cuprins ntre 1 i 255.
2. Memo
Cmpurile memo constau numai din text i au maxim 255 de caractere, n
acestea putnd fi incluse i secvenele de salt la nceput de rnd/salt la rnd nou.
Aceste cmpuri sunt utilizate pentru a scrie comentarii.
3. Numr (Number)
Tipul Number include mai multe subtipuri de date, care difer prin modul de
stocare i viteza de rspuns, i anume:
subtipul Byte (octet) care accept numai valori ntregi pozitive (fr semn)
cuprinse ntre 0 i 255;
subtipul Integer (ntreg) acoper domeniul numerelor ntregi de la 32768
la +32768;
subtipul Long Integer (ntreg lung) acoper domeniul numerelor ntregi
dincolo de limitele 2.000.000.000;
subtipul Single (numere reale reprezentate n virgul mobil simpl
precizie) acoper domeniul numerelor fracionare cu maxim apte cifre
semnificative;
subtipul Double (numere reale reprezentate n virgul mobil dubl
precizie) acoper domeniul numerelor fracionare cu maxim 14 cifre semnificative;
subtipul ReplicationID (identificator duplicare sau identificator
multiplicare); aceast valoare este reprezentat pe 16 octei i a fost creat cu
scopul de a asigura un identificator unic global pentru bazele de date n care trebuie
realizate sincronizrile unui mare volum de date suplimentare.
4. Dat calendaristic/or (Date/Time)
SGBD Microsoft Access stocheaz intern datele calendaristice sub forma
unor numere n virgul mobil pe 8 octei, ora fiind reprezentat ca o fraciune
dintr-o zi.
Sistemul introduce automat data curent prin proprietatea Default Value
(valoare implicit) a cmpului = Date(). Se poate folosi opiunea = Now() pentru a
stoca ora i data. Proprietatea Format trebuie s fie stabilit pentru toate cmpurile
dat calendaristic/or (date/time).
110

Universitatea SPIRU HARET

5. Tipul valut (Currency)


Tipul Currency acoper valorile n USD, cu 15 cifre la partea ntreag, iar la
partea zecimal pn la sutimi de cent. Din punct de vedere al reprezentrii interne,
tipul valut este un numr n virgul fix.
6. Numr cu incrementare automat (AutoNumber)
Datele de acest tip au proprietatea c sunt incrementate automat
(AutoNumber) i pot primi valori ntregi lungi secveniale. Tipul este numit
Counter (numrtor).
7. Tipul Da/Nu (Yes/No)
Datele de acest tip sunt booleene. Ca urmare, primesc valorile True/False
(adevrat/fals) i sunt afiate ntr-una din formele True/False, respectiv On/Off.
8. Obiect OLE
Tipul de cmp OLE (Object Linking and Embedding) este destinat pstrrii
datelor provenite de la alte programe care s-au nregistrat ca servere OLE n
Windows. Aceasta permite bazei de date s stocheze documente create de
programe de prelucrare a textelor, seturi de foi de calcul, sunete, videoclipuri .a.
Zona n care se stabilesc proprietile cmpurilor este format din
urmtoarele opiuni:
1. Proprietatea Field Size (dimensiunea cmpului) depinde de tipul cmpului
(Text, Number i Autonumber). Aceast proprietate stabilete dimensiunea maxim
a datelor care pot fi stocate n tipul de cmp respectiv.
2. Proprietatea Format
Opiunea stabilit pentru aceast proprietate afecteaz modul n care SGBD
Microsoft Access afieaz datele. Coninutul irului de formatare poate fi un format
predefinit, cum ar fi: Currency, Percent (procent) sau Short Data (dat
calendaristic n format scurt). n cazul datelor numerice, irul poate conine
informaii despre modul de afiare a valorilor pozitive, negative sau nule. Exemple:
- $#,##0.00 - afieaz numere pozitive n format valut;
- ($#,#00)[Red] afieaz numerele negative cu rou;
- valorile nule sunt suprimate;
- Unknown[Green] - cuvntul unknown scris n verde indic o
valoare nul.
3. Proprietatea Input Mask (masca de intrare)
Prin intermediul acestei proprieti este controlat introducerea datelor n
cadrul cmpului. Masca de intrare determin, pentru fiecare caracter al cmpului,
dac este opional sau necesar, precum i tipul de caracter acceptat (numeric,
alfabetic, alfanumeric sau orice tip de caracter).
De exemplu, masca de intrare #990,000.0999 impune introducerea unui
numr cu valoarea absolut mai mare dect 1000 i mai mic dect 1.000.000. Este
nevoie de cel puin o zecimal, iar caracterul # permite introducerea caracterelor
negative. Masca de intrare Password determin afiarea tuturor caracterelor dintrun cmp cu asteriscuri.
4. Proprietatea Caption
Valoarea proprietii Caption (titlu) este utilizat pentru a afia titlurile
numelor de cmp n modul de afiare Datasheet. Dac proprietatea Caption este
necompletat, titlul este stabilit de numele cmpului.
111

Universitatea SPIRU HARET

5.Proprietile Validation Rule/Validation Text


Proprietatea Validation Rule (regula de validare) se utilizeaz pentru defini
anumite cerine pe care trebuie s le ndeplineasc datele introduse ntr-un cmp
din baza de date. n cazul n care datele introduse nu respect setarea Validation
Rule se utilizeaz proprietatea Validation Text (text de validare) pentru a specifica
un mesaj de avertizare. Setarea propriettii Validation Rule are scopul de a reduce
numrul de erori care pot apare n momentul introducerii datelor de ctre utilizator.
6.Proprietatea Required
Proprietatea Required (necesar) se utilizeaz n momentul n care se dorete
introducerea n cmpul respectiv a unei valori n mod expres, deci valoarea cmpului
respectiv nu poate fi NULL (vid).
7. Proprietatea Indexed
Indecii asigur mecanismul de regsire rapid a datelor. Un cmp se
indexeaz n urmtoarele condiii:
cmpul cuprinde valori cu gam larg de variaie;
cmpul va fi folosit n mod semnificativ n criteriile de selecie sau sortare.
Indexul cheie primar (Primary Key) prevede cte un pointer (indicator) unic
spre fiecare nregistrare i reprezint ordinea de afiare prestabilit pentru tabele.
Celelalte cmpuri pot fi indexate cu opiunea No Duplicates (fr duplicate),
respectiv Duplicates OK (sunt permise duplicatele). Un index desemnat cu
opiunea Duplicates OK nu va prezenta aceleai performane ca un index unic.
Exist i posibilitatea crerii de indeci pe baza mai multor cmpuri, utiliznd
fereastra Indexes (din meniul View).
Atunci cnd utilizatorul a stabilit denumirea cmpurilor, tipul de dat ce poate
fi acceptat n acel cmp precum i proprietile aferente cmpurilor respective, se
nchide fereastra de dialog Table. Dup aceasta, SGBD Access afieaz fereastra de
dialog Save n interiorul creia utilizatorul denumete tabelul creat.
Metoda de creare a tabelelor cu ajutorul opiunii Table Wizard reprezint
cea mai rapid metod de creare a unui tabel. Alegerea opiunii Table Wizard din
fereastra New Table are ca rezultat afiarea pe ecranul monitorului a ferestrei de
dialog Table Wizard.
Aceast fereastr, prezentat n figura 5.6, este compus din:
un grup de dou opiuni Business i Personal, care ofer posibilitatea de a
alege categoria de tabele dorite;
o list Sample Tables, care conine exemple de tabele corespunztoare
opiunii alese;
o list Sample Fields, care conine exemple de cmpuri corespunztoare
tipului de tabel ales;
patru butoane pentru activarea cmpurilor (este posibil ca n tabelul final
s se transfere toate cmpurile disponibile din lista Sample Fields sau s se
transfere numai cmpurile necesare, unu cte unu);
o caset Fields in my new table, care se vizualizeaz numele cmpurilor
selectate de utilizator;
112

Universitatea SPIRU HARET

un buton Rename Field cu ajutorul cruia utilizatorul poate modifica


denumirea cmpului.

Fig.5.6. Fereastra Table Wizard


pentru crearea tabelelor cu ajutorul ghidului

Dup ce utilizatorul a ales tipul de tabel i cmpurile care vor face parte din
tabelul respectiv, acesta poate s treac mai departe executnd un clic cu pointerul
de la mouse pe butonul Next pentru a stabili numele tabelului i cheia primar, sau
poate s execute un clic pe butonul Finish pentru a lsa SGBD Microsoft Access s
stabileasc singur numele tabelului i cheia primar.
Modul de lucru cu nregistrrile
La deschiderea unui tabel, pe ecran apar informaii similare cu cele prezente
ntr-o foaie de calcul. Acest mod de prezentare n SGBD Microsoft Access este
denumit Datasheet (foaie de calcul). Denumirea cmpurilor apare deasupra fiecrei
coloane. Pentru a selecta toat coloana se execut clic pe numele unui cmp.
Fiecare nregistrare are un buton denumit Record Selector (selectorul nregistrrii),
dispus n stnga sa. nregistrarea selectat n mod curent este marcat cu un
triunghi n acest buton. Ultimul rnd al unei foi de gard este un rnd liber, el fiind
marcat cu un asterisc n butonul Record Selector. Acest rnd este necesar n cazul
n care se adaug n tabel o nregistrare nou.
Pentru a edita datele dintr-o celul este suficient un clic pe celula respectiv,
dup care se pot introduce date de la tastatur. Aspectul butonului de selectare se
va schimba de la marcajul triunghi la marcajul stilou, pentru a evidenia faptul c
modificrile realizate n cursul editrii nu au fost salvate. Cnd apare simbolul 0,
nseamn c n regimul de lucru multiutilizator o procedur sau un utilizator a
blocat nregistrarea, nepermind editarea ei (fig.5.7).
113

Universitatea SPIRU HARET

Fig.5.7. Vizualizarea datelor din tabelul Materiale

Cnd se nchide foaia de date sau se trece la o alt nregistrare, modificrile


fcute asupra unei nregistrri sunt automat salvate. n cazul n care se dorete
salvarea unei nregistrri imediat dup ce a fost modificat (fr a trece automat la
o alta), se tasteaz concomitent SHIFT+ENTER sau se selecteaz opiunea Save
Record din meniul Records (nregistrri).
Dac un tabel are mai multe nregistrri, butoanele de navigare printre
acestea (Record Navigation) aflate la captul din stnga al barei de derulare
orizontale sunt foarte utile i ele sunt urmtoarele:
- First Record (prima nregistrare);
- Previous Record (nregistrarea anterioar);
- Next Record (nregistrarea urmtoare);
- Last Record (ultima nregistrare);
- New Record (nregistrare nou).
ntre aceste butoane, SGBD Microsoft Access afieaz numrul nregistrrii
curente, care reflect doar ordinea curent de afiare, neputnd fi utilizat pentru
identificarea unei anumite nregistrri, ntruct se schimb atunci cnd nregistrrile
sunt adugate, terse, filtrate sau sortate.
5.3.2. Realizarea relaiilor ntre tabele
Atunci cnd se creeaz tabele ntr-o baz de date relaional, acestea prezint
o existen de sine stttoare. Pentru a lega tabelele ntre ele, pentru a crea o
relaie, se utilizeaz fereastra Relationships, fereastr pe care se poate activa fie din
bara de meniuri standard, fie din meniul Tools. Pentru a defini o relaie, se adaug
114

Universitatea SPIRU HARET

n fereastra Relatioships tabelele ntre care se dorete s existe legturi i se trage


dintr-un tabel cmpul care trebuie legat spre cmpul corespunztor din cellalt
tabel. Ca regul general, se va lega un cmp care reprezint o cheie primar din
tabelul-printe cu un cmp care reprezint cheie extern (strin) n tabelul-fiu.
Cheia extern este un atribut sau o mulime de atribute care are aceleai
valori cu un atribut sau un grup de atribute aparinnd tabelului-printe, acest
atribut sau grup de atribute jucnd rolul de cheie primar n tabelul-printe.
Pentru validarea relaiei ntre cele dou tabele, cheia extern trebuie s fie de
acelai tip i s aib aceeai dimensiune cu a cheii primare.
Pentru exemplificare (fig.5.8), se ia n considerare baza de date
CONSTRUCT pentru evidena materialelor de construcii, care conine tabelele
Furnizori, Facturi, Materiale, Depozite i Gestionari.

Fig.5.8. Tabelele bazei de date CONSTRUCT

Tabelele bazei de date CONSTRUCT au urmtoarele structuri:


Furnizori(cod_f, den_f, adresa_f, telefon_f, banca_f, cont_f, pagina Web), Facturi
(nr_fact, data_fact, cant, pret_unitar), Materiale (cod_mat, den_mat, cod_f,
cod_dep, nr_fact), Depozite (cod_dep, den_dep, cod_gest) i Gestionari (cod_gest,
nume_gest, pren_gest).
Aceste cinci tabele au fost create pornind de la ablonul Blank Database,
selectnd obiectul Tables din fereastra Database, executnd un clic pe butonul New
i alegnd, pentru definirea tabelelor, modul de lucru cu fereastra de proiectare,
Design View.
Dup stabilirea structurii fiecrui tabel i a proprietilor aferente fiecrui
cmp n parte (a tipului de date pe care s l accepte cmpul respectiv, a
dimensiunii cmpului, a regulilor de validare pentru anumite cmpuri etc.), se
stabilete, pentru fiecare tabel n parte, care cmp (atribut) va reprezenta cheia
115

Universitatea SPIRU HARET

primar. n exemplul considerat, denumirile de atribute (cmpuri) subliniate


reprezint cheile primare pentru tabelele respective.
n continuare, se adaug n fereastra Relationships cele cinci tabele i se
creeaz relaiile dintre acestea prin intermediul cmpurilor chei primare (n
tabelele-printe) chei externe (n tabelele-fiu). Ca mod de realizare a relaiilor, n
tabelul Furnizori se execut un clic pe cheia primar Cod_f i se trage ctre tabelul
Materiale unde n dreptul cmpului Cod_f (cheia extern) se elibereaz butonul
mouse-ului. Cheia primar se recunoate dup caracterele bolduite. Imediat dup
aceast operaie, se afieaz fereastra de editare a relaiei (Edit Relationship), aa
cum se prezint n fig.5.9.

Fig.5.9. Fereastra de editare a relaiei (EditRelationship)


dintre tabelele Furnizori i Materiale

n fereastra de editare a relaiei dintre tabelele Furnizori i Materiale n


tabelul din stnga sus sunt prezentate cele dou tabele prin intermediul cheilor de
legtur cod_f. Se foreaz integritatea referenial prin introducerea bifei n caseta
din faa Enforce Referential Integrity apas apoi butonul Create. Legtura stabilit
ntre tabele este marcat printr-o linie, care se numete linie de corelare. Tipul
relaiei stabilite este de unu-la-muli (One-To-Many), aspect reflectat prin scrierea
pe linia de corelare ce definete relaia a cifrei 1 (pentru One) i a simbolului
infinit, (pentru Many). Aceste numere i simboluri indic cardinalitatea relaiei.
n practic, n procesul de modelare a bazei de date, cardinalitatea se evideniaz
printr-un cuplu de numere ntregi de forma (x,y), n care x reprezint cardinalitatea
minimal (numrul minim de entiti care particip la realizarea asocierii), iar y
reprezint cardinalitatea maximal (numrul maxim de entiti care particip la
realizarea asocierii). n exemplul considerat, un furnizor livreaz mai multe tipuri
116

Universitatea SPIRU HARET

de materiale, iar un material (de un anumit tip, cu un anumit cod) nu poate fi livrat
dect de un singur furnizor. Deci, n procesul de modelare a bazei de date, relaia
care se stabilete ntre dou tabele trebuie evideniat n dublu sens, conform figurii
5.10.
n acelai mod se procedeaz i cu relaiile dintre celelalte tabele componente
ale bazei de date CONSTRUCT. n final, se obine schema relaional din fig.5.11.

Cod_f
Den_f
Adresa_f
Telefon_f
Banca_f
Cont_f
Pagina Web

1:1

1:m
Livreaz

Cod_Mat
Den_mat
Cod_f
Cod_dep
Nr_fact

Fig.5.10. Relaiile dintre tabelele Furnizori i Materiale

Fig.5.11. Editarea relaiilor (Relationship) dintre tabelele bazei de date CONSTRUCT

Revenind la fereastra de editare a relaiei din fig.5.9, n partea de jos a


ferestrei Edit Relationship exist trei casete de validare: Enforce Referential
Integrity (ntrirea integritii refereniale), Cascade Update Related Fields
(Reactualizarea n cascad a cmpurilor legate) i Cascade Delete Related Records
(tergerea n cascad a nregistrrilor legate). Validarea acestor casete va avea
urmtoarele semnificaii:
validarea casetei Enforce Referential Integrity atunci cnd se va ntri
integritatea referenial ntr-o relaie care leag dou tabele va exista sigurana c
117

Universitatea SPIRU HARET

nregistrrile aflate n tabelele vor fi valabile (vor respecta regulile de integritate


referenial). Dac se ncalc vreuna dintre regulile asociate tabelelor, aflate n
relaie, SGBD Microsoft Access va afia un mesaj i nu va permite modificarea
datelor.
Restriciile de integritate referitoare la actualizarea, modificarea sau
tergerea unor date din baza de date, pot fi anulate prin validarea casetelor Cascade
Update Related Fields i Cascade Delete Related Records, pstrndu-se n acelai
timp integritatea referenial;
validarea casetei Cascade Update Related Fields atunci cnd se
selecteaz aceast caset, modificarea unei valori a unei chei primare va duce
automat la modificarea valorilor din cmpurile asociate;
validarea casetei Cascade Delete Related Records - atunci cnd se va
selecta aceast caset, tergerea unei valori a cheii primare din tabelul-printe va
avea ca efect tergerea tuturor valorilor din cmpurile asociate aparinnd
tabelului-fiu.
5.4. Interogarea
Interogarea (Query) este un obiect Access ce reprezint o ntrebare pe care
utilizatorul o formuleaz cu privire la numite informaii din baza de date. n
momentul n care utilizatorul pornete la construcia unei interogri, acesta trebuie
s aib deja o viziune de ansamblu asupra datelor pe care dorete s le regseasc,
i anume: ce cmpuri se vor utiliza, din care tabele se vor extrage datele, ce criterii
trebuie s ndeplineasc aceste date, n ce ordine vor fi ele sortate. Construirea unei
interogri n Microsoft Access reprezint un proces simplu i rapid de aezare a
tabelelor i a cmpurilor necesare pe o gril QBE (Query by Example).
Clasificarea interogrilor
Cele mai utilizate interogri sunt interogrile denumite interogri de
selecie. O interogare permite:
- vizualizarea sau modificarea datelor;
- selectarea acelor nregistrri care satisfac criteriile impuse de utilizator;
- limitarea unei proceduri la cmpurile care sunt relevante;
- sortarea nregistrrilor ntr-o ordine specificat.
Atunci cnd este executat o interogare de selecie, rezultatul va fi o
mulime de nregistrri aparinnd unui tabel sau mai multor tabele. Aceast
mulime poart numele de dynaset (setul dinamic rezultat al interogrii). Un
dynaset reprezint o vedere dinamic asupra datelor care sunt subiectul interogri
respective. Aceasta nseamn c atunci cnd datele din tabelele surs ale interogrii
sufer modificri, automat rezultatul interogrii va fi i el modificat [18].
O a doua mare categorie de interogri este reprezentat de interogrile de
aciune. Aceste interogri au rolul de a modifica anumite date, n cadrul unei
singure operaii. Aceste modificri cuprind capacitatea de a terge, de a aduga, a
modifica anumite valori dintr-un tabel, ca i de a crea un tabel nou. Aceste
interogri de aciune sunt: interogrile pentru tergere (Delete Query), interogrile
pentru adugare (Append Query), interogrile pentru reactualizare (Update
Query) i interogrile al cror rezultat este crearea unui tabel nou n baza de date
(Make-Table Query).
118

Universitatea SPIRU HARET

Crearea interogrilor
Atunci cnd se dorete s se creeze o interogare, se alege din fereastra
Database grupul de obiecte Query, apoi se execut un clic pe butonul New, SGBD
Microsoft Access afind caseta de dialog New Query.
Aa cum se observ din figura 5.12, fereastra New Query permite cinci
moduri de realizare a unei interogri i anume:
1. Design View alegnd aceast opiune de creare a unei interogri,
utilizatorul va porni de la zero, cu un obiect blanc n definirea interogrii;
2. Simple Query Wizard alegnd aceast opiune, utilizatorul va fi ajutat,
pe tot parcursul crerii unei interogri de selecie, de ghidul de lucru al SGBD de
tip Wizard, care adreseaz ntrebri referitoare la tabelele i cmpurile care se
doresc a fi selectate, iar pe baza rspunsurilor obinute, se va construi interogarea;
3. Crosstab Query Wizard aceast opiune funcioneaz similar cu opiunea
Simple Query Wizard, doar c de aceast dat wizard-ul va construi o interogare
prin ncruciarea tabelelor;
4. Find Duplicates Query Wizard wizard va construi o interogare care va
regsi nregistrri duble;
5. Find Unmatched Query Wizard funcioneaz identic ca i opiunea Find
Duplicates Query Wizard, dar de aceast dat rezultatul va fi construirea unei
interogri care va gsi nregistrrile fr corespondent n cadrul tabelelor.

Fig.5.12. Fereastra de dialog New Query

Construirea interogrilor de selecie


Interogrile de selecie reprezint cel mai des ntlnit tip de interogare. Cu
ajutorul acestui tip de interogare se pot regsi date din unul sau mai multe tabele, se
pot grupa datele dup anumite criterii sau se pot efectua anumite calcule.
Opiunea Design View deschide o fereastr Select Query (Interogare de
selecie), precum i fereastra Show Tables (Prezint tabelele). Fereastra Select Query
este un instrument grafic de interogare prin exemple, QBE (Query-By-Examples),
care, datorit caracteristicilor sale grafice, permite utilizatorului s poat defini un
119

Universitatea SPIRU HARET

exemplu al nregistrrilor, pe care le dorete s le vizualizeze, prin folosirea mouseului pentru a selecta, trage sau manipula obiectele din cadrul ferestrei.
Fereastra Select Query este alctuit din dou seciuni: seciunea pentru
tabele i o seciune sub form de gril pentru specificarea cmpurilor de vizualizat
i a unor condii de selectare a nregistrrilor (fig.5.13).
Pentru construcia interogrii se execut dublu-clic pe denumirile tabelelor
care vor furniza datele necesare pentru construirea interogrii. Fereastra Show
Tables are o etichet pentru selectarea interogrilor i a tabelelor.
De asemenea, se poate crea o interogare stiv, aducnd nregistrri dintr-o
alt interogare (trgdu-le cu mouse-ul). Dup ce tabelele au fost selectate,
fereastra Show Tables este nchis. Pentru a aduga un alt tabel ulterior, acesta se
poate selecta cu mouse-ul n cadrul interogrii din fereastra Database, sau se alege
opiunea Show Tables din meniul Query, dup care se va selecta tabelul
suplimentar. Astfel, cmpurile implicate n interogare sunt adugate grilei de ieire.
Pentru a aduga un cmp dintr-un tabel, se execut un dublu-clic pe el i se
trage pe gril. Acelai efect l are i selectarea lui din lista derulant a rndului
Field. Pentru a selecta mai multe cmpuri n stilul Windows, se procedeaz n
modul urmtor: Shift+Clic pentru a selecta o secven continu de cmpuri sau
Ctrl+Clic pentru a selecta cmpuri individuale.
Pentru a selecta toate cmpurile dintr-un tabel, se execut dublu-clic pe
numele tabelului. Selectarea unui cmp n grila interogrii se face executnd clic pe
bara mic de culoare gri aflat n imediata apropiere, deasupra numelui cmpului.
Cmpul poate fi ters, acionnd tasta Del sau cmpul se poate deplasa cu ajutorul
mouse-ului ctre o nou poziie.
Dac se lucreaz cu mai multe tabele, fereastra Select Query afieaz liniile
de legtur ntre cmpurile n care au fost definite relaiile. Asocierile (Joins)
corespunztoare definesc modul n care interogarea selecteaz nregistrrile.
Deoarece cmpurile cheie primar i cheie secundar au n mod frecvent acelai
nume, SGBD Microsoft Access prezint n cadrul grilei numele tabelului imediat
sub numele cmpului.
Specificarea criteriilor
Criteriile reprezint restriciile care se stabilesc ntr-o interogare, pentru a
identifica anumite nregistrri din baza de date. Aceasta nseamn c din ntregul
set dinamic rezultat al unei interogri se vor selecta pentru afiare doar acele
nregistrri care corespund intereselor utilizatorului. Pentru a obine acest lucru
trebuie s se furnizeze SGBD Microsoft Access condiiile de selectare.
Sub rndul Field, grila de interogare conine un rnd Sort. Selectarea
opiunii Ascending (Ascendent) sub numele unui cmp determin sortarea
interogrii n ordine cresctoare. Opiunea Descending (Descendent) execut
sortarea elementelor n mod descresctor. Dac este necesar sortarea cu mai multe
cmpuri, SGBD Microsoft Access sorteaz secvenial de la stnga la dreapta. n
cazul unor criterii de selecie, acestea se vor introduce n rndul Criteria. Dac se
introduc mai multe valori n acelai rnd de criterii sub cmpuri diferite, SGBD
Microsoft Access selecteaz numai nregistrrile care ndeplinesc toate condiiile
menionate. Dac aceste criterii sunt introduse pe rnduri diferite, o nregistrare va
fi inclus cnd va ndeplini oricare dintre criteriile menionate. Operatorii de
comparare admii de SGBD Microsoft Access sunt evideniai n tabelul 5.1.
120

Universitatea SPIRU HARET

Tabelul 5.1
Operatorii de comparare n SGBD Microsoft Access
Operator
>
<
>=
<=
=
Like
Between
<>, not

Semnificaia
Mai mare dect
Mai mic dect
Mai mare sau egal cu

Exemplu
> 50
< P
>=[Maxim]

Rezultat
Valori peste 50
Toate valorile de la A la P
Cel puin la fel de mare cu
valoarea din cmpul Maxim
Mai mic sau egal cu
<=Date() 10 Cel puin cu 10 zile n urm
Coresponden(egalitate)
= Unix1
Exact cinci caractere
Comparare cu un nume Like
Dac Ciment apare n cadrul
generic
**Ciment**
cmpului
n cadrul gamei
Between
1 De la 1 la 8 inclusiv
And 8
Diferit de
Not Null
Eliminare nregistrare

Dac se include un caracter de nlocuire ntr-un criteriu, SGBD Microsoft


Access adaug automat operatorul Like. Operatorul Is este adugat automat la
referirile care implic valoarea Null. Delimitatorul diez este adugat automat
datelor calendaristice, iar delimitatorul ghilimele se adaug de o parte i alta a
textului. Referirile la numele de cmpuri se fac prin includerea acestora n
paranteze drepte.
De exemplu, se cere ca din baza de date CONSTRUCT, pentru a urmri
primirea facturilor de la furnizori, s se vizualizeze nregistrrile care se refer la
facturile primite de la furnizorii care au adresa_f n municipiul Timioara, iar
modul de vizualizare a acestora s fie n ordinea alfabetic a numelor.
n acest scop se construiete o interogare n modul Design View prin
selectarea grupului de obiecte Query din fereastra Database, executnd un clic de
mouse pe butonul New i alegnd din fereastra de dialog New Query modul Design
View de creare a interogrii cu ajutorul ferestrei de proiectare. Din fereastra Show
Table se execut dublu clic pe tabelele bazei de date CONSTRUCT pentru a le
selecta. Din tabelele bazei de date se aduc n grila QBE toate cmpurile care
intereseaz (fig.5.13).
Pentru a vizualiza doar furnizorii din municipiul Timioara, este necesar ca la
intersecia coloanei n care se afl definit cmpul Adresa_f, cu rndul Criteria, s
se introduc valoarea Timisoara. Aceast specificare va limita rezultatul interogrii
doar la afiarea nregistrrilor din baza de date care se refer la furnizorii din
Timisoara. Utilizatorul are posibilitatea de a introduce criterii suplimentare care se
pot referi la acelai cmp sau se pot referi la cmpuri diferite. Atunci cnd se
stabilesc mai multe criterii n mai multe celule Criteria, n mod automat SGBD
Microsoft Access le va combina utiliznd operatorii logici And sau Or, n funcie de
locul n care se afl stabilite aceste criterii. Dac criteriile se afl n celule diferite
ale aceluiai rnd, SGBD Microsoft Access va utiliza operatorul And, returnnd ca
rezultat acele nregistrri care ndeplinesc toate condiiile.
121

Universitatea SPIRU HARET

Fig.5.13. Fereastra Select Query cu exemplul de creare a interogrii de selecie FF1

Dac criteriile se afl stabilite pe rnduri diferite, SGBD Microsoft Access


va utiliza operatorul Or, returnnd ca rezultat nregistrrile care ndeplinesc oricare
dintre criterii.
Pentru a satisface cea de-a doua cerin (furnizorii s fie vizualizai n ordine
alfabetic a numelor), la intersecia coloanei n care se afl definit cmpul Den_f
(denumire furnizor) cu rndul Sort se stabilete ca ordinea de sortare a
nregistrrilor s fie Ascending.
n figura 5.13 este prezentat ntreaga fereastr Select Query, creat pentru a
rspunde cerinelor enunate mai sus, iar n figura 5.14 este prezentat rezultatul
acestei interogri.
Atunci cnd este executat o interogare, datele gsite sunt afiate sub forma unei
foi de date care va conine cmpurile selectate din tabele i afiate n rndul Field a
grilei QBE, precum i datele care ntrunesc criteriile stabilite n rndul Criteria.
n cazul n care utilizatorul nu cunoate ntreaga valoare a unui cmp, sau n
cazul n care el dorete s gseasc doar valorile care ncep cu o anumit liter, sau
corespund unui anumit ablon, se poate folosi de caracterele de nlocuire sau de
operatorul Like. Folosind exemplul de mai sus, se presupune c se dorete s se
gseasc din baza de date nregistrrile care se refer la furnizorul Ergo, dar nu
exist sigurana asupra numelui ntreg al furnizorului. n acest caz, se poate face
apel la operatorul Like, introducnd n celula Criteria a cmpului Den_f expresia
122

Universitatea SPIRU HARET

Like Ergo. De asemenea, dac nu se cunoate numrul de caractere din valoarea


cmpului respectiv, se pot utiliza caractere de nlocuire (*), introducnd drept
criteriu Like Er*. Acest caracter specific un numr necunoscut de caractere.
Dac se cunoate numrul de caractere din componena valorii cutate, se poate
folosi caracterul de nlocuire (?), introducnd drept criteriu Like Er??. Acest
caracter specific doar un singur caracter necunoscut, introducndu-se n expresie
un numr de caractere de nlocuire egal cu numrul de caractere necunoscut.

Fig.5.14. Afiarea rezultatelor interogrii de selecie FF1

Calcularea totalurilor
n procesul de prelucrare a datelor, la un anumit moment, utilizatorul este
nevoit s defineasc interogri care se refer la grupuri de date. Acest tip de
interogri care efectueaz calcule asupra unor grupuri de nregistrri poart numele
de interogri de grup.
SGBD Microsoft Access pune la dispoziia utilizatorului diverse tipuri de
calcule (funcii de grup), cum sunt:
Sum returneaz suma tuturor valorilor din cmpul n care este asociat.
Min returnez cea mai mic valoare a unui cmp.
Max returnez cea mai mare valoare a unui cmp.
Avg calculeaz valoarea medie a unui cmp.
Count returneaz numrul de nregistrri care respect condiia din clauza
Where.
Pentru a putea avea acces la aceste funcii este necesar s se schimbe tipul
interogrii n Totals. Aceast schimbare se realizeaz executnd un clic de mouse pe
butonul Totals din bara Query Design sau alegnd opiunea Totals din meniul View.
Rezultatul acestei schimbri va avea ca rezultat introducerea unui rnd suplimentar n
123

Universitatea SPIRU HARET

grila QBE, denumit Total. Fiecare celul (intersecia unui rnd cu o coloan), din
dreptul rndului Total conine o list derulant cu toate funciile totalizatoare.
Pentru exemplificare, se consider aceeai baz de date CONSTRUCT i,
atunci cnd se urmrete evidena facturilor primite de la furnizori, se presupune c
se dorete s se cunoasc numrul total de furnizori care au adresa n municipiul
Timisoara. Din tabelul Furnizori se aduc n grila QBE cmpul Den_f i cmpul
Adresa_f. Pentru rezolvarea cerinei, este necesar ca interogarea s grupeze mai
nti furnizorii conform Adresa_f utiliznd o clauz Group By i un criteriu a crui
valoare este Timisoara, dup care aceasta va efectua calculul totalurilor pentru
fiecare grup n parte, utiliznd funcia Count. Atunci cnd se va executa aceast
interogare totalizatoare, foaia de date care reprezint rezultatul interogrii va fi un
instantaneu, adic un set de nregistrri care nu va putea fi modificat.
n figura 5.15 este prezentat interogarea totalizatoare, care rspunde
cerinelor enunate mai sus, urmat de rezultatul obinut.

Fig. 5.15. Interogarea totalizatoare pentru calcularea numrului


de furnizori din Timisoara

De multe ori, n cadrul operaiilor de prelucrare ale bazei de date, este necesar
s se utilizeze expresii de calcul mai complexe. Funciile totalizatoare puse la
dispoziie de SGBD Microsoft Access nu sunt de folos n acest caz. Pentru rezolvarea
acestor calcule, este necesar ca utilizatorul s-i creeze propriile lui expresii.
Pentru exemplificare, se presupune c se dorete s se calculeze o valoare pe
produs a unei facturi. Aceast valoare este egal cu cantitatea de produse facturate
(notat n baza de date CONSTRUCT cu Cant) ori preul pe unitatea de produs
(notat n baza de date Pret_unitar). Se selecteaz cmpurile care prezint interes
pentru problema enunat i se aduc n grila QBE. La sfrit ntr-o ultim coloan a
124

Universitatea SPIRU HARET

grilei QBE se definete un nou cmp cu numele Valoare i se introduce expresia de


calcul pentru acest cmp astfel: Valoare:[Pret_unitar]*[Cant].
Pentru a avea un control mai amnunit asupra nregistrrilor care vor fi
afiate, se pot stabili anumii parametri n cadrul interogrilor. Prin stabilirea
acestor parametri, nainte ca interogarea s se execute, se va afia una sau mai
multe casete de dialog predefinite care vor cere utilizatorului s introduc valorile
parametrilor. Stabilirea cmpurilor ce vor fi utilizate ca parametri, se realizeaz
prin introducerea unei propoziii, cuprins ntre paranteze drepte, n celula Criteria
a cmpului respectiv. De exemplu, se presupune c se dorete construirea unei
interogri de selecie care s afieze numerele facturilor, dar nainte de a se executa
interogarea se dorete ca pe ecranul monitorului s apar o fereastr de dialog prin
care s se cear denumirea furnizorului. n figura 5.16 este prezentat interogarea
de selecie care corespunde calculului valorii materialelor de construcii facturate.
n figura 5.17 este prezentat rezultatul interogrii de selecie n care este prezentat
valoarea calculat a materialelor de pe facturi. Modul de introducere a parametrului
Den_f (denumire furnizor) este prezentat n fig.5.18, iar rezultatul acestei interogri
este prezentat n figura 5.19.
Modificarea coninutului tabelelor prin utilizarea interogrilor de aciune
O interogare de aciune este capabil de a efectua modificri ale unor
nregistrri care se pot afle n tabele diferite. SGBD Microsoft Access pune la
dispoziia utilizatorilor patru tipuri de interogri de aciune: interogri de tipul
Make Table, interogri pentru tergerea unor nregistrri (Delete Query), interogri
pentru adugare (Update Query) i interogri de adugare a unor date (Append
Query).

Fig.5.16. Calculul valorii materialelor facturate cu ajutorul interogrii de selecie


125

Universitatea SPIRU HARET

Fig.5.17. Rezultatul interogrii de selecie pentru calculul valorii materialelor facturate

Fig.5.18. Fereastra de introducere a valorii parametrului Den_f

Fig.5.19. Rezultatul interogrii de selecie la introducerea parametrului Den_f (fig.5.18)

Interogarea de aciune Make Table (construire Tabel)


Interogarea Make Table are ca scop crearea unui nou tabel, format din date
pariale sau aparinnd n totalitate unui tabel, sau date aparinnd mai multor
tabele. Ca o observaie, trebuie precizat c datele cuprinse n noul tabel nu
motenesc proprietile cmpurilor din tabelul din care provin.
De exemplu, se presupune c se dorete s se construiasc, n baza de date
care urmrete evidena facturilor primite de la furnizori, un nou tabel, care s
conin informaii care exist deja n baza de date. n acest scop se va proiecta o
interogare n care se vor aduce pe grila QBE toate cmpurile ce prezint interes
pentru problem. Apoi se va modifica tipul interogrii din Select Query n Make
Table Query. Schimbarea tipului de interogare se realizeaz fie acionnd butonul
Query Type din bara Query Design, fie alegnd opiunea Make Table Query din
126

Universitatea SPIRU HARET

meniul Query. Odat modificat tipul de interogare, SGBD Microsoft Access va


afia o fereastr de dialog Make Table n care utilizatorul trebuie s stabileasc
numele pentru noul tabel, precum i localizarea acestuia (baza de date curent sau
n alt baz de date). n fig.5.20 este afiat fereastra de dialog Make Table. n
figura 5.21 sunt afiate tabelul i cmpurile care alctuiesc rezultatul interogrii de
aciune Make Table.

Fig.5.20. Fereastra de dialog Make Table la crearea interogrii de aciune

Fig.5.21. Rezultatul interogrii de aciune

Acest tip de interogare este folosit pentru eliminarea unui grup de nregistrri
din unul sau mai multe tabele. Pentru a crea o astfel de interogare se pornete de la
o interogare Select Query, dup care se selecteaz opiunea Delete Query din lista
derulant Query Type de pe bara Query Design sau din meniul Query. Metoda cea
mai indicat pentru generarea unei interogri de tipul Delete Query const n
crearea ntr-o etap anterioar a unei interogri Select Query i verificarea
rezultatelor acesteia n modul de afiare Datasheet. Dup ce s-a verificat care date
se vor terge, se poate transforma interogarea de selecie n interogare de tergere.
Un cmp care se dorete a fi ters este adugat grilei QBE, asupra lui putnd s
acioneze dou opiuni: From (De la) i Where (Unde).
127

Universitatea SPIRU HARET

Dac interogarea conine mai multe tabele, aceste opiuni indic tergerea de
nregistrri din toate tabelele folosind From sau indic tergerea selectiv, dup
criterii de selecie stabilite anterior, cu opiunea Where. Dac tabelul n care se
opereaz tergerile este implicat n diverse relaii cu alte tabele, iar integritatea
referenial este configurat astfel nct s permit tergerea n cascad, atunci
nregistrrile asociate se vor putea terge, chiar dac tabelele respective nu apar n
fereastra Query Design.
Pentru a recupera spaiul eliberat prin tergerea unor nregistrri, se nchide
baza de date i se alege opiunea Compact and Repair Database (Compacteaz i
repar baza de date) din meniul Database Utilities (Utilitare pentru baze de date)
din meniul Tools.
Ca exemplu, se presupune c se dorete tergerea din baza de date, n situaia
n care se urmrete evidena facturilor primite de la furnizori, a nregistrrilor care
se refer la furnizorul Electron SA. Pentru aceasta se creeaz o interogare de
selecie ca n exemplele precedente. Apoi se va schimba tipul de interogare din
Select Query n interogare de tipul Delete Query prin alegerea opiunii Delete
Query din meniul Query.
Tabelele i grila QBE pentru acest tip de interogare sunt prezentate n figura 5.22.
Deoarece cele dou tabele Furnizori i Facturi implicate n construcia
acestei interogri au stabilite ntre ele o relaie de tipul unu la muli, cu integritatea
referenial stabilit la opiunea Cascade Delete Related Records, vor fi terse toate
nregistrrile asociate care se refer la furnizorul Electron SA.

Fig.5.22. Fereastra de construire a interogrii de tergere Delete Query

Interogarea de aciune Update (pentru reactualizare)


Cu ajutorul acestui tip de interogri se pot efectua modificri globale ntr-un
grup de nregistrri. Interogarea este selectat prin opiunea Update din pictograma
Query Type. Un rnd nou, etichetat UpdateTo (actualizeaz la), este adugat grilei
128

Universitatea SPIRU HARET

QBE, urmnd ca valorile de actualizare s fie introduse n acest rnd. Modul de


afiare Datasheet ofer posibilitatea verificrii nregistrrilor selectate pentru
actualizare nainte de actualizarea tabelului. n situaia n care sunt permise
actualizrile n cascad (Cascade Updates), Update determin apariia
modificrilor corespunztoare n tabelele asociate.
De exemplu, se presupune c intervin modificri de preuri la materialele din
baza de date CONSTRUCT. Pentru a efectua aceast reactualizare de preuri n
baza de date, n interogarea care se construiete, se face referire la tabelul Facturi.
n grila QBE se aduce cmpul Pret_unitar i cmpul Cod_mat, se schimb tipul de
interogare n Update Query, n celula Criteria din dreptul cmpului Cod_mat se va
stabili un parametru, iar n celula UpdateTo a cmpului Pret_unitar se va introduce
noua valoare a preului. Acest exemplu este prezentat n figura 5.23.

Fig.5.23. Fereastra de creare a interogrii de actualizare Update Query

Atunci cnd se execut interogarea de actualizare, Update Query, apare o


fereastr de dialog n care trebuie introdus codul materialului (Cod_mat) al crui
pre unitar se va actualiza.
Interogarea de aciune Append (pentru adugare)
Acest tip de interogare se folosete pentru a insera nregistrri din unul sau
mai multe tabele-surs ntr-un tabel-int. Aceste interogri sunt utile n cazul n
care se dorete adugarea unor cmpuri pe baza unor anumite criterii. Adugarea
de date este posibil chiar dac tabelul surs conine cmpuri care nu se regsesc n
tabelul destinaie. n acest caz, SGBD Microsoft Access adaug numai datele
comune, restul de nregistrri fiind ignorate.
129

Universitatea SPIRU HARET

Fig.5.24. Fereastra de dialog Append

Pentru exemplificare, se presupune c n baza de date exist definit un tabel


care se numete Furnizori receni, acesta coninnd date despre noii furnizori de
materiale de construcii. Utilizatorul va dori s adauge n tabelul Furnizori datele
coninute de tabelul Furnizori receni. Astfel, tabelul-int este Furnizori, iar
tabelul Furnizori receni este tabelul-surs.
Realizarea unei interogri de acest tip presupune mai nti proiectarea unei
interogri care s conin cmpurile ce definesc tabela Furnizori receni, apoi se va
schimba tipul de interogare n Append Query. n momentul cnd se va schimba
tipul de interogare, SGBD Microsoft Access va afia o fereastr de dialog n care
vor trebui stabilite numele tabelului int i localizarea acestuia. n figura 5.24 este
prezentat fereastra de dialog Append, iar n figura 5.25 este prezentat interogarea
de aciune Append care rspunde cerinelor de mai sus.

Fig.5.25. Interogare de aciune de tip adugare Append Query


130

Universitatea SPIRU HARET

5.5. Formularul
Formularul (Form) reprezint un obiect Access destinat introducerii datelor
ntr-o baz de date (cnd formularul este asociat unui tabel), precum i vizualizrii
datelor datelor din baza de date (cnd formularul este asociat unei interogri).
Astfel, cu ajutorul formularelor se pot efectua cteva operaii tipice n baza de
date, i anume operaii de adugare, modificare sau de tergere a unor date din baza
de date.
Un formular conine dou categorii de informaii [18]:
1) informaii de structur reprezint informaiile referitoare la alctuirea i
vizualizarea formularului (mrimea formularului, aezarea n formular a atributelor
i controalelor, proprietile controalelor etc.);
2) datele care fac subiectul bazei de date sunt acele date pe care utilizatorul
le introduce n baza de date.
Obiectele pe care le poate conine un formular pot fi obiecte asociate unor
cmpuri din tabele (n acest caz, rolul acestor obiecte este de a prelua datele
introduse de utilizator i de a le stoca n tabele sau de a afia anumite date coninute
de tabele) i obiecte care prin apariia unor evenimente pot declana anumite aciuni.
Crearea unui formular
SGBD Microsoft Access 2003 pune la dispoziia utilizatorului mai multe
metode de a crea un formular. Pentru a crea un formular, se va executa un clic pe
obiectul Forms din fereastra Database urmat de un clic pe butonul New. Aceste
aciuni vor avea ca rezultat afiarea pe ecranul monitorului a ferestrei de dialog
New Form prezentat n figura 5.26.

Fig. 5.26. Fereastra de dialog New Form pentru crearea formularului


n SGBD Microsoft Access 2003
131

Universitatea SPIRU HARET

Dup cum se observ din figura 5.26, SGBD Microsoft Access 2003 permite
nou moduri de a crea un formular:
Design View prin aceast metod, cu fereastra de proiectare a
formularului, se asigur un control absolut asupra procesului de creare a
formularului.
Form Wizard reprezint cea mai simpl metod de creare a unui formular,
SGBD Microsoft Access asigurnd asistena pe toat durata procesului de creare a
formularului. Ca i n cazul opiunii Table Wizard, se pun ntrebri n legtur cu
modul n care se dorete construirea acelui formular, fcnd anumite sugestii,
culegnd informaiile asupra opiunilor utilizatorului i, pe baza acestor opiuni,
crend, n final, formularul dorit.
AutoForm: Columnar alegerea acestei metode are ca rezultat crearea n
mod automat a unui formular simplu, fr ca SGBD Microsoft Access s solicite
vreo informaie suplimentar. Formularul este afiat n mod automat avnd
cmpurile dispuse i aliniate unul sub cellalt. Ca i n cazul unui formular creat n
modul Design View sau Form Wizard, se poate vizualiza la un moment dat numai o
singur nregistrare.
AutoForm: Tabular asigur crearea unui formular avnd cmpurile unei
nregistrri aliniate pe un rnd. Acest tip de formular conine n partea superioar
numele asociat fiecrui cmp, iar n cazul n care tabelul asociat conine multe
nregistrri, n partea dreapt a formularului apare o bar derulant.
AutoForm: Datasheet permite crearea unui formular avnd un mod de
vizualizare identic cu cel al tabelului cruia i este asociat, introducerea datelor prin
intermediul acestui formular realizndu-se ca i cum s-ar introduce date ntr-un
tabel.
AutoForm: PivotTable prin aceast metod, se creeaz automat un
formular ca o vedere (view) a tabelului sau interogrii selectate.
AutoForm: PivotChart este un wizard ce asigur crearea automat a unui
formular ca o vedere a unei diagrame (Chart) cu datele provenite dintr-un tabel sau
interogare.
Chart Wizard alegerea acestei metode are ca rezultat crearea unui
formular n interiorul cruia se afieaz un grafic.
PivotTable Wizard creeaz un formular n interiorul cruia datele sunt
reprezentate n format Excel.
Crearea formularelor n modul Design View
n partea de jos a casetei de dialog New Form se afl o caset cu o list
derulant care conine denumirea tuturor tabelelor i interogrilor definite n baza de
date. Pentru a crea un formular pentru introducerea de date, trebuie, pentru nceput,
s se asocieze formularului respectiv un tabel sau o interogare. n acest sens se va
selecta din lista derulant tabelul sau interogarea care va servi drept surs de date
pentru formular. Dup ce utilizatorul a ales tabelul sau interogarea asociat
formularului, se execut un clic pe butonul OK, SGBD Microsoft Access 2003
afind pe ecranul monitorului fereastra Form. Aceast fereastr este prevzut pe
margini cu dou rigle (o rigl vertical, situat n partea stng a ferestrei, i o rigl
orizontal, situat n partea de sus a ferestrei Form), ajutnd utilizatorul pentru
alinierea obiectelor care vor face parte din acest formular; i un cadru pentru
proiectare n interiorul cruia vor fi plasate obiectele dorite de utilizator.
Obiectele care fac parte din formular poart denumirea de controale. O parte
dintre aceste controale pot fi ataate unor cmpuri din tabelul sau interogarea
132

Universitatea SPIRU HARET

asociat formularului respectiv, aceste controale avnd rolul de a introduce, prelua


sau modifica anumite valori ale datelor (se mai numesc i controale legate).
O alt categorie de obiecte care pot apare ntr-un formular o reprezint acele
controale a cror surs a datelor nu face referire la nici un tabel sau interogare.
Acest tip de controale poart denumirea de controale nelegate.
O ultim categorie de obiecte care poate face parte dintr-un formular o
reprezint controalele calculate. Acestea au ca surs de date o expresie
matematic, ce conine ca operanzi date utilizate n formularul respectiv.
Atunci cnd se opteaz pentru crearea unui formular n modul Design View,
SGBD Microsoft Access 2003 ofer posibilitatea utilizatorului de a stabili el nsui
amplasarea controalelor n interiorul cadrului de proiectare, astfel nct s poat
crea un formular identic cu un document utilizat de companie.
Pentru exemplificare, se reia baza de date CONSTRUCT din care se
selecteaz tabelul Furnizori. n fig. 5.27 este prezentat fereastra Form asociat
tabelului Furnizori n care se evideniaz i caseta cu instrumente (Toolbox) i lista
de cmpuri a tabelului asociat.
Adugarea controalelor
n interiorul cadrului de proiectare se pot plasa diferite obiecte de tipul
controalelor. Pentru a aduga un control nou unui formular, trebuie s existe afiat
pe ecranul monitorului caseta cu instrumente. Pentru a realiza acest lucru, se
execut un clic pe pictograma Toolbox din bara de meniuri standard, sau se
selecteaz Toolbox din meniul View.
Principalele tipuri de controale puse la dispoziie de caseta cu instrumente
sunt urmtoarele:
1. Label creeaz o etichet care afieaz un text, putnd fi folosit ca titlu
n formularul respectiv;

Fig. 5.27. Fereastra Form, caseta cu instrumente i lista cu cmpuri


133

Universitatea SPIRU HARET

2. Text Box creeaz o caset tip text, cu ajutorul creia se pot afia anumite
date din baza de date;
3. Option Group creeaz o caset de grup care grupeaz n interiorul su
mai multe controale nrudite (butoane de validare sau de opiuni);
4. Toggle Button creeaz un buton de comutare, buton caracterizat de dou
stri Yes/No, True/False, sau On/Off;
5. Option Button creeaz un buton de opiune. De obicei se folosesc mai
multe butoane de opiuni grupate n interiorul unei casete de grup pentru a putea
permite efectuarea unor alegeri ntre mai multe variante (variantele alese
excluzndu-se reciproc);
6. Check Box creeaz o caset de validare, funcionnd la fel ca un buton
de opiune singura diferen constnd n faptul c se pot alege simultan mai multe
opiuni, variantele neexcluzndu-se reciproc;
7. Combo Box creeaz o caset combinat. Acest tip de control arat
aproape la fel ca o caset de tip text, diferena constnd n existena unui buton cu
sgeat n partea dreapt a casetei. Controlul de acest tip se folosete n cazul cnd,
n cmpul asociat obiectului se dorete introducerea unor date care se afl deja
stocate n alt tabel, utilizatorul avnd posibilitatea de a alege anumite valori din
lista derulant;
8. List Box creeaz o caset de tip list. Acest tip de control funcioneaz
la fel ca i Combo Box, diferena constnd n faptul c List Box va afia tot timpul
valorile existente n cmpul asociat;
9. Command Button creeaz un buton de comand, cu ajutorul cruia
utilizatorul poate executa anumite operaii (aciuni);
10. Image introduce n formular o imagine existent ntr-un fiier avnd
extensia .bmp, .wmf, .emf, .gif, sau .jpeg;
11. Unbound Object Frame creeaz n interiorul cadrului de proiectare a
formularului, un spaiu folosit de un obiect nelegat;
12. Bound Object Frame funcioneaz la fel ca Unbound Object Frame, dar
spaiul va fi folosit de un obiect legat;
13. Page Break creeaz o ntrerupere de pagin;
14. Tab Control creeaz un formular alctuit din mai multe fie. Acest tip
de control este foarte util n momentul n care utilizatorul lucreaz cu foarte multe
informaii, informaii care pot fi mprite n mai multe categorii omogene, fiecare
categorie de informaii fiind grupat pe cte o fi;
15. Subform/Subreport creeaz un subformular n cadrul unui alt formular,
fiind necesar atunci cnd se dorete afiarea simultan a datelor aflate n dou sau
mai multe tabele legate de o relaie;
16. Line creeaz o linie, folosit pentru a personaliza formularul;
17. Rectangle creeaz un dreptunghi;
18. More Controls introduce n caseta cu instrumente, controale care pot
afia, filtra, organiza sau analiza date, controale pentru grafice sau pentru text
animat etc.
Pentru a aduga un control n formular, se acioneaz butonul corespunztor
controlului dorit din casete cu instrumente, dup care se execut un clic n zona din
interiorul cadrului de proiectare n care se dorete plasarea controlului. Trebuie
134

Universitatea SPIRU HARET

specificat c o parte dintre controale, pentru a fi create, au nevoie de activarea


butonului Control Wizards.
Pentru a terge sau modifica un control, n prealabil acesta se selecteaz
executnd un clic pe controlul dorit. SGBD Microsoft Access 2003 nconjoar
controlul selectat cu un chenar prevzut pe margini cu mici ptrate negre folosite
pentru redimensionarea controlului sau pentru mutarea acestuia n alt zon. Dac
se dorete tergerea controlului din cadrul de proiectare a formularului, dup
selecia controlului dorit se apas tasta DEL.
n fig.5.28 sunt prezentate caseta cu instrumente, precum i denumirea
fiecrui control.

Fig.5.28. Caseta cu instrumente (Toolbox) pentru formulare


Adugarea controalelor legate
Pentru a aduga un control care este legat de un cmp din tabelul asociat
formularului, se va afia n prealabil fereastra Field List executnd un clic pe
pictograma Field List din bara de instrumente standard, sau alegnd Field List din
meniul View. Dup afiarea listei cu cmpuri, se selecteaz cmpurile care prezint
interes i, innd butonul de la mouse apsat, se vor trage cmpurile din fereastra
Field List peste cadrul de proiectare. n mod implicit, SGBD Microsoft Access
2003 creeaz o caset de text legat de cmp i o etichet indicnd numele
cmpului respectiv.
135

Universitatea SPIRU HARET

Adugarea controalelor calculate


n general, ntr-o baz de date nu este recomandat s se defineasc n tabele
atribute care reprezint cmpuri calculate, acestea mrind n mod artificial
dimensiunea bazei de date. Totui, se impune la un moment dat evidenierea unor
atribute ale cror valori se determin prin intermediul unor expresii matematice.
Aceste tipuri de controale se numesc controale calculate.
Pentru a introduce un control calculat n formular, se acioneaz butonul
corespunztor casetei pentru text (Text Box), apoi se execut un clic de mouse n
interiorul cadrului de proiectare. n continuare, se selecteaz controlul nou introdus
i, n momentul n care apare cursorul, se introduce expresia de calcul a valorii
controlului, precedat de semnul egal.
Adugarea controalelor nelegate
Acest tip de controale definete obiectele din interiorul unui formular, crora
nu le sunt asociate atribute sau cmpuri calculate definite n baza de date.
Controalele nelegate sunt reprezentate de obicei de butoane de comenzi care
ndeplinesc n baza de date anumite aciuni (de exemplu deschiderea altor
formulare, nchiderea formularelor etc.).
Adugarea subformularelor
Utilizatorul este nevoit deseori s-i construiasc formulare care s conin
controale (atribute) ce nu se afl n tabelul asociat formularului respectiv. n acest
scop, SGBD Microsoft Access 2003 asigur subformularele (Subforms).
Pentru ca un formular care conine subformulare s funcioneze corect, tabelul
cruia i este asociat subformularul trebuie s se afle n relaie direct cu tabelul
cruia i este asociat formularul principal. Dac ntre dou tabele exist o relaie de
unu la muli, formularul principal afieaz o nregistrare din tabelul primar n
modul Single Form, iar subformularul afieaz mai multe nregistrri din tabelul
asociat n modul Continous sau Datasheet (formularul arat nregistrrile din partea
unu a relaiei, iar subformularul arat nregistrrile din partea muli a relaiei). Atunci
cnd utilizatorul trece la o alt nregistrare din formularul principal, SGBD Access
actualizeaz automat subformularul cu nregistrrile asociate corespunztor.
Subformularul este o metod prin care se evideniaz relaiile ntre tabele. Exist mai
multe metode pentru a crea un subformular, i anume:
1. Se construiete formularul pe o interogare care implic dou sau mai multe
tabele. Pentru ca aceste date s poat fi reprezentate, Form Wizard creeaz un
formular i un subformular.
2. Se creeaz un formular principal i se execut clic pe pictograma
Subform/Subreport din caseta de instrumente. Programul Wizard poate s creeze un
subformular nou sau s foloseasc un formular existent ca subformular. Ca un
program Wizard s fie activat, se selecteaz butonul Control Wizard din caseta cu
instrumente.
3. Se creeaz un formular principal i un subformular care sunt salvate, dup
care se deschide formularul principal n modul de afiare Design i se trage cu
mouse-ul numele subformularului din fereastra Database n cadrul formularului
principal.
Diferena dintre un formular i un subformular const n aceea c acel cmp
care este considerat ca fiind cmpul de legtur nu trebuie s fie inclus, deoarece el
136

Universitatea SPIRU HARET

este afiat deja n formularul principal. n cazul n care se creeaz un subformular,


el apare sub forma unui dreptunghi de culoare alb n formularul principal (n
modul Design), fiind un control al subformularului. Un subformular poate fi
selectat sau ters dac nu mai este necesar n aplicaie.
Pentru exemplificarea construirii unui formular, se reia baza de date
CONSTRUCT. Se folosete modul de creare a formularului cu ajutorul ghidului
(Create Form by Unng Wizard). Cnd apare fereastra New Form, se alege opiunea
Form Wizard i se selecteaz tabelul surs de date Furnizori. La apariia ferestrei
Form Wizard, se selecteaz cmpurile cu sgeata spre dreapta i se apas butonul
OK. Se aleg opiunea Columnar (coloan), stilul de afiare Standard, iar apoi, dup
stabilirea numelui de fiier (FURNIZ1), se apas butonul Finish. Formularul astfel
obinut, se poate folosi n modul de lucru Open pentru vizualizarea nregistrrilor
existente sau pentru realizarea de actualizri n baza de date (fig.5.29).

Fig.5.29. Formularul Furniz1 n modul de lucru Open

Proprietile unui formular


Fiecare obiect definit n cadrul de proiectare a formularului este caracterizat
de anumite proprieti. Aceste proprieti determin modul de vizualizare i de
comportament al obiectului respectiv. Pentru afiarea proprietilor unui obiect, se
selecteaz n prealabil obiectul respectiv, se execut un clic pe selecie cu butonul
din partea dreapt a mouse-ului, iar din meniul rapid care apare se va alege
opiunea Properties. Aceasta are ca rezultat afiarea unei ferestre de dialog
prezentat n fig.5.30, fereastr care se refer la proprietile obiectului selectat.
Afiarea proprietilor unui obiect se face pe grupe de proprieti, fiecare grup de
proprieti aflndu-se pe cte o fi.
Aa cum se observ din fig.5.30, cele cinci grupe de proprieti sunt:
Format grupeaz proprietile referitoare la nfiarea unui obiect
(culoare, dimensiune, mod de vizualizare, etc.);
Data grupeaz proprietile legate de datele asociate controlului respectiv
(sursa datelor, reguli de validare a datelor etc.);
Event grupeaz o list de aciuni la care este posibil a rspunde obiectul
crora le sunt asociate, ca urmare a apariiei unor evenimente;
Other grupeaz alte proprieti suplimentare asociate obiectului selectat;
137

Universitatea SPIRU HARET

All aceast fi listeaz toate proprietile obiectului selectat, proprieti


regsite de altfel i n grupele de proprieti enumerate mai sus.
Se prezint n continuare cteva dintre cele mai importante proprieti care
pot caracteriza un obiect dintr-un formular, acestea putnd varia n funcie de
controlul selectat.

Fig.5.30. Fereastra de dialog ce reprezint proprietile unei casete de text

Grupa de proprieti Format


Format aceast proprietate afecteaz doar modul de afiare a datelor, nu
afecteaz i modul n care sunt stocate aceste date. Funcioneaz la fel ca
proprietatea Format de la definirea cmpurilor din tabele, fiind asociat unor
controale legate.
DecimalPlaces poate fi utilizat mpreun cu proprietatea Format,
indicnd cte numere vor fi afiate dup virgul n cazul unor valori numerice.
Caption introducerea unui ir de caractere n aceast proprietate va avea ca
efect afiarea irului de caractere n interiorul controlului respectiv. Aceast
proprietate este asociat n special controalelor nelegate.
DisplayWhen stabilete n ce condiii este afiat controlul respectiv,
opiunile disponibile fiind Allways, PrintOnly, ScreenOnly.
Scrool Bars aceast proprietate are rolul de a afia n partea dreapt a
controlului o bar de derulare vertical n cazul n care controlul respectiv este
asociat unui cmp de tip memo.
Visible are ca efect vizualizarea sau ascunderea obiectului selectat.
Column Count indic numrul de coloane, fiind asociat unor controale de
tipul Combo Box sau List Box.
Fore Color aceast proprietate stabilete culoarea fonturilor.
138

Universitatea SPIRU HARET

Font Name, Font Size, Font Weight sunt proprieti care se refer la tipul
de font pe care utilizatorul dorete s l foloseasc, mrimea acestuia, precum i
grosimea fontului.
Grupa de proprieti Data
Control Source din punct de vedere al datelor care le afieaz acel control,
aceasta reprezint cea mai important proprietate. n aceast proprietate se
stabilete sursa nregistrrilor pe care le va afia controlul respectiv. n aceast
proprietate se va stabili numele tabelului sau interogrii care constituie sursa de
date pentru controlul respectiv (n cazul unui control legat), sau se va introduce
formula de calcul (n cazul n care obiectul este un control calculat). Dac n
aceast proprietate este stabilit o expresie de calcul, atunci SGBD Microsoft
Access va stabili automat protecia la scriere, utilizatorul neputnd s intervin n
modificarea valorii afiate de controlul respectiv.
Input Mask, Default Value, Validation Rule, Validation Text sunt
proprieti care funcioneaz la fel ca proprietile cu acelai nume din definirea
cmpurilor din tabele.
Row Source Type aceast proprietate indic tipul sursei din care vor fi luate
valorile din list (proprietate care apare la tipurile de controale Combo Box sau List
Box).
Bound Column va indica numrul coloanei din tabelul asociat controlului
cu care este legat.
Grupa de proprieti Other
Status Bar Text irul de caractere introdus n aceast proprietate va fi afiat
n bara de stare n momentul n care controlul va fi selectat. Se va folosi aceast
proprietate n momentul n care se va dori afiarea de informaii suplimentare
despre controlul selectat.
Enter Key Behavior aceast proprietate se folosete pentru controalele
legate de un cmp de tip Memo pentru a introduce date n tabel pe mai multe linii.
Dac utilizatorul dorete s introduc mai multe date n interiorul aceleiai celule,
va stabili valoarea acestei proprieti la New Line in Field, iar prin apsarea tastei
Enter, SGBD Microsoft Access va crea o nou linie n cadrul controlului, astfel
nct utilizatorul va putea introduce text adiional.
Tab Index aceast proprietate stabilete ordinea de selectare a controalelor
dintr-un formular. n mod prestabilit, SGBD Microsoft Access aloc ordinea de
selectare a controalelor n ordinea n care acestea au fost create n formular, fiecare
nou control creat fiind plasat ultimul n ordinea de selectare a controalelor.
Auto Tab dac valoarea acestei proprieti este setat pe Yes, controlul de
selecie se va deplasa automat de la un control la altul (prin apsarea tastei Enter
sau a tastei Tab), n ordinea stabilit de proprietatea Tab Index.
Tab Stop aceast proprietate nu se aplic controalelor de tipul check box,
option button sau toggle button. Dac valoarea acestei proprieti este No,
utilizatorul nu va putea realiza selecia controlului respectiv.
Proprieti ale subformularelor
Ca orice alt obiect din interiorul unui formular, subformularele sunt
caracterizate de anumite proprieti. Cele mai importante proprieti ale
subformularelor sunt proprietile LinkMasterFields i LinkChildFields.
139

Universitatea SPIRU HARET

Se pot folosi aceste dou proprieti mpreun pentru a specifica legturile


care exist ntre nregistrrile unui formular i nregistrrile unui subformular. Dac
aceste proprieti sunt stabilite, SGBD Microsoft Access va schimba automat
nregistrrile din subformular n momentul n care utilizatorul va trece la o alt
nregistrare din formularul principal.
n momentul n care se creeaz un subformular, SGBD Microsoft Access va
stabili automat proprietile LinkMasterFields i LinkChildFields numai n
urmtoarele condiii:
1) n cazul cnd att formularul principal, ct i subformularul sunt definite
pe tabele aflate n relaii directe (relaii ce au fost definite n fereastra
Relationships);
2) n cazul cnd formularul principal este construit pe un tabel care are
definit o cheie primar, iar subformularul este construit pe un tabel sau o
interogare care conine un cmp care are acelai nume i acelai tip de date ca i
cheia primar din tabelul pe care este construit formularul principal.
Odat stabilite aceste proprieti, se poate afirma c subformularul este
sincronizat cu formularul principal, n sensul c subformularul va afia doar acele
date care fac referire la nregistrrile din formularul principal.
Utilizarea unui formular
Dup cum s-a artat mai sus, formularele sunt folosite pentru vizualizarea
datelor sau pentru a introduce date ntr-o baz de date.
Utilizatorul are posibilitatea de a vizualiza un formular n dou moduri:
modul Form View sau modul Datasheet View.
Cnd se deschide un formular n modul Form View, acesta va afia datele
unui singur set de nregistrri, SGBD Microsoft Access plasnd pointerul pe prima
nregistrare. Deplasarea n cadrul formularului se face apsnd tasta Enter sau tasta
Tab. Deplasarea la un alt set de nregistrri se realizeaz utilizndu-se butoanele
din partea stng jos a formularului.
n modul de vizualizare Datasheet, SGBD Microsoft Access afieaz mai
multe seturi de nregistrri simultan sub forma unui tabel. Pentru a schimba modul
de vizualizare a formularului din Form View n modul de vizualizare Datasheet
View se apeleaz opiunea Datasheet View din meniul View dup ce a fost deschis
n prealabil formularul respectiv.
n ambele moduri de afiare ale formularului se gsete o nregistrare liber,
aceasta avnd rolul de a primi datele introduse n formular, atunci cnd utilizatorul
adaug un nou set de nregistrri. SGBD Microsoft Access salveaz n mod
automat datele introduse n formular atunci cnd utilizatorul trece la urmtorul set
de nregistrri.
5.6. Raportul
Raportul (Report) reprezint un obiect al unei baze de date Microsoft Access
cu ajutorul cruia utilizatorul poate prezenta anumite date sub form de rezumat,
eventual n format pregtit pentru tiprire. Prin intermediul rapoartelor utilizatorul
dispune de un control absolut asupra dimensiunilor i modului de prezentare a
datelor. De asemenea, rapoartele asigur prezentarea unor informaii de sintez
asupra rezultatelor prelucrrilor efectuate n baza de date.
140

Universitatea SPIRU HARET

Rapoartele nu modific datele din baza de date, parcurgerea nregistrrilor


realizndu-se n mod secvenial. SGBD Microsoft Access folosete pentru obinerea
unui raport o copie protejat la scriere a datelor.
Ca i n cazul formularelor, rapoartele sunt alctuite din dou categorii de
informaii [18]:
1. informaii de structur reprezentate de acele informaii de ordin
funcional stabilite la crearea raportului (controale, seciuni, elemente de grafic
decorative etc.);
2. informaii reprezentnd datele propriu-zise. Majoritatea informaiilor
dintr-un raport sunt culese din tabele, formulare sau interogri asociate raportului
respectiv.
Din punct de vedere al modului de creare, funcionare i utilizare, ntre
formulare i rapoarte, exist multe asemnri. Ambele clase de obiecte folosesc
seciuni i controale pentru prezentarea datelor, deci modul de creare al unui raport
va fi asemntor cu modul de creare al unui formular.
Aa cum se observ din fig.5.31, SGBD Microsoft Access 2003 asigur mai
multe metode de creare a unui raport, i anume:

Fig.5.31. Fereastra de dialog New Report

1. Design View prin aceast metod de creare a unui raport, utilizatorul are
controlul absolut asupra modului de aranjare a obiectelor n cadrul de proiectare a
raportului.
2. Report Wizard reprezint o metod rapid i uoar de creare a unui
raport, utilizatorul fiind asistat pe tot parcursul crerii raportului cu ntrebri
referitoare la sursele nregistrrilor, numele cmpurilor i formatul datelor. SGBD
Microsoft Access 2003 creeaz pe baza rspunsurilor utilizatorului raportul dorit.
3. AutoReport: Columnar sau AutoReport: Tabular SGBD Microsoft
Access 2003 genereaz n mod automat un raport n care datele sunt afiate ntr-o
141

Universitatea SPIRU HARET

coloan (pentru AutoReport: Columnar), sau sub form de tabel (pentru


AutoReport Tabular).
4. Chart Wizard aceast opiune asigur generarea unui raport n interiorul
cruia va fi prezentat un grafic.
5. Label Wizard aceast opiune are rolul de a crea etichete potale care pot
fi tiprite la imprimant pe suporturi speciale de hrtie (auotcolante, etichete
detaabile etc.).
n partea de jos a ferestrei de dialog New Report se afl o caset avnd n
partea dreapt un buton cu o sgeat desenat pe el. Dac utilizatorul execut un
clic de mouse pe acest buton va apare o list derulant care conine numele tuturor
tabelelor i interogrilor create n baza de date. Pentru crearea unui raport,
utilizatorul trebuie s aleag din lista derulant un tabel sau o interogare.
Crearea rapoartelor n modul Design View
Crearea unui raport se realizeaz n mod asemntor crerii formularelor. Ca
i n cazul crerii formularelor, SGBD Microsoft Access 2003 asigur un cadru de
proiectare, rigle gradate i caseta cu instrumente. Modul de folosire a acestora este
identic celui folosit pentru crearea formularelor.
Cadrul de proiectare este format din mai multe seciuni: antet i subsol de
pagin (Page Header i Page Footer), i o seciune Detail. n fiecare din aceste
seciuni, utilizatorul poate s introduc trei tipuri de controale:
1. Controale legate controale care sunt asociate unor cmpuri din tabele
sau interogri;
2. Controale nelegate controale care nu fac referire la nici un cmp definit
n baza de date;
3. Controale calculate controale care permit obinerea unor valori pe baza
unor expresii aritmetice sau logice.
Pentru a numerota paginile unui raport, utilizatorul trebuie s aleag opiunea
Page Numbers din meniul Insert, iar din caseta de dialog Page Numbers se pot
alege modul i locul de inserare a numerotrii paginilor.
Dac se dorete inserarea datei pe raport, se alege opiunea Date and Time
din meniul Insert i din caseta de dialog Date and Time se poate alege formatul n
care se dorete s apar aceast dat.
Configurarea paginii de tiprire a unui raport.
Configurarea paginii de tiprire a unui raport se realizeaz cu ajutorul
opiunii Page Setup. Pentru realizarea acestei configurri, se deschide raportul n
modul Preview i se execut un clic pe raportul afiat cu butonul din partea dreapt
a mouse-ului, din meniul rapid care apare se alege opiunea Page Setup. Pentru a
putea fi afiat un raport n modul Preview trebuie instalat n prealabil o
imprimant sau mcar un driver de imprimant, altfel SGBD Microsoft Access
2003 nu va putea vizualiza raportul.
Fereastra de dialog Page Setup asigur mai multe categorii de configurri,
categorii grupate n trei fie:
1. Margins n aceast fi utilizatorul are posibilitatea de a stabili
dimensiunea marginilor (spaiul care exist ntre textul scris i marginea efectiv a
paginii).
142

Universitatea SPIRU HARET

2. Pages cu ajutorul opiunilor existente n aceast fi, utilizatorul poate s


aleag orientarea paginii (Portrait sau Landscape) i dimensiunea paginii care va fi
folosit pentru imprimarea raportului.
3. Columns n cazul n care se dorete imprimarea unor rapoarte sub form
tabelar, se folosesc opiunile puse la dispoziie de aceast fi.
Pentru exemplificare, se creeaz raportul Furnizori dup tabelul cu acelai
nume, folosind modul de lucru cu ghidul (Create Report by Uzing Wizard). Se
obine raportul din fig.5.32.

Fig.5.32. Raportul Furnizori obinut n modul de lucru cu Wizard-ul

5.7. Paginile (Pages)


Paginile (Pages) sunt obiecte Access ce asigur accesarea bazelor de date
din reeaua Internet i WWW (World Wide Web) prin intermediul navigatoarelor
(browser-elor) Web. Aceste obiecte sunt necesare ca urmare a prelucrrii integrate
a datelor care circul n Internet sub forma unei aplicaii globale a datelor,
inclusiv pentru funcia de partajare a datelor.
SGBD Microsoft Access realizeaz suportul pentru Web n patru moduri [26]:
cu ajutorul instrumentelor de navigare n Web din interiorul bazei de date;
prin legturi ntre tabelele, interogrile, formularele i rapoartele din baza
de date, pe de o parte, i obiecte Web, pe de alt parte;
desfurarea de edine n timp real, prin Internet, cu participani situai la
distan;
crearea de pagini Web cu date din baze de date i posibilitatea de a salva
tabele, interogri, formulare i rapoarte ca pagini Web.
143

Universitatea SPIRU HARET

Cnd se apas butonul corespunztor obiectului Pages din fereastra Database,


n zona de opiuni se afieaz cele trei ci oferite de SGBD Microsoft Access:
Create data access page in Design View (crearea paginii de acces la date
cu ajutorul ferestrei de proiectare);
Create data access page by using wizard ((crearea paginii de acces la date
cu ajutorul ghidului);
Edit Web page that already exists (editarea paginii Web care deja exist).

Fig.5.33. Prezentarea barei cu instrumente Web din SGBD Microsoft Access 2003

Integrarea SGBD Microsoft Access n lucrul pe Web-ul de pe reeaua


Internet presupune folosirea unui browser Web, care permite, ntre altele,
introducerea unor comenzi on-line n bazele de date organizaionale (produse,
servicii, clieni, furnizori etc.).
Activarea unei hiperlegturi conduce la afiarea de ctre SGBD Microsoft
Access a unei bare cu instrumente Web (fig.5.33).
Bara cu instrumente Web conine butoane ce permit o navigare facil de la o
pagin la alta, nainte i napoi, inclusiv la pagini Web favorite i la paginile de
primire.
Exportul tabelelor, formularelor i rapoartelor din bazele de date sub SGBD
Microsoft Access n pagini Web statice se efectueaz n formatul specific limbajului
de marcare a hipertextelor, HTML (HyperText Markup Language). Controlul asupra
modului de prezentare a paginii Web se execut prin intermediul abloanelor HTML
(HTML templates), ce descriu structura unei astfel de pagini Web.
Atunci cnd se produce modificarea unor date din baza de date surs,
actualizarea paginilor Web se realizeaz sub forma paginilor Web dinamice.
Acestea se obin cu ajutorul metodei paginilor active pe server, ASP (Active Server
Pages), prin care browser-ul extrage n mod automat ultima actualizare a bazei de
date surs. Crearea unui fiier ASP se face pe baza numelui bazei de date, a
numelui i a parolei utilizatorului, a adresei URL a serverului Web ce constituie
destinaia pentru fiierul ASP respectiv.
144

Universitatea SPIRU HARET

Fig.5.34. Crearea unui cmp Hyperlink n tabelul Furnizori

Paginile de acces la date (Data Access Pages) reprezint pagini Web, scrise
n limbajul HTML dinamic (DHTML), ce sunt conectate direct la baza de date care
constituie sursa de date. Crearea acestor pagini de acces la date din bazele de date
Access se face prin utilizarea formularelor Access sau cu un wizard.
Cmp de tip hiperlegtur (Hyperlink) asigur un salt pe calea ctre
destinaia specificat (pagin Web sau fiier din reea). Crearea unui astfel de cmp
ntr-un tabel al unei baze de date se obine n modul de lucru cu fereastra de
proiectare (Design View), unde din lista Data Type se alege opiunea Hyperlink
(fig.5.34), dup care se salveaz (Save).
Dup crearea cmpului Hyperlink, se folosete butonul de inserare a
hiperlegturii (Insert Hyperlink) pentru crearea hiperlegturii n cmpul Hiperlink
sau ca hipertext n interiorul unui formular sau raport. Hiperlegtura este compus
din enunul de descriere a legturii, vizibil utilizatorului din adresa URL a
destinaiei legturii i din eticheta de ecran (ScreenTip) care se afieaz atunci
145

Universitatea SPIRU HARET

cnd indicatorul mouse-ului se gsete n zona legturii (fig.5.35). Pe bara de


legtur la (Link To) se execut clic pe opiunea fiier existent sau pagin Web
existent (Existing File or Web Page), se scrie textul hiperlegturii, se introduce
documentul legat (prin nume fiier sau adres URL), se creeaz eticheta de ecran
(clic pe ScreenTip) i se apas OK.

Fig.5.35. Fereastra de editare a hiperlegturilor (Edit Hyperlink)

Crearea unei pagini Web noi (Create New Page) se obine prin selecia
opiunii corespunztoare din fereastra Edit Hyperlink (fig.5.35). n acest fel se
realizeaz o hiperlegtur la un document nou. Textul care se va afia pentru
hiperlegtura creat se introduce n caseta Text to display (n exemplul
considerat n fig.5.35 textul este construct). Numele noului document (de exemplu,
const_1) se introduce n caseta Name of the new document. Se opteaz pentru
editarea n momentul lucrului (Edit the new document now) sau pentru editarea
noului document mai trziu (Edit the new document later). n final, se apas
butonul OK. Pentru exemplul considerat, se obine fereastra din fig.5.36.

146

Universitatea SPIRU HARET

Fig.5.36. Crearea unei pagini Web noi n SGBD Microsoft Access 2003

Legtura la un obiect din baza de date se obine n cadrul unui cmp


Hyperlink sau n timpul editrii unui formular sau unui raport n modul de lucru cu
fereastra de vizualizare (Insert Hyperlink), cu opiunea Obiect din aceast baz de
date (Object in This Database).
5.8. Macroinstruciunea (Macro-ul)
Macroinstruciunea sau macro-ul (Macro) reprezint un obiect Access care
definete un ansamblu de comenzi pe care sistemul Microsoft Access le execut
automat la apariia unor evenimente. Macro-urile pot fi ataate unui formular,
raport sau control n scopul automatizrii unor operaii de rutin (deschidere sau
nchidere de formulare, imprimarea unor rapoarte, filtrarea, verificarea sau
validarea unor date etc.).
Pentru realizarea unui macrou, se selecteaz din fereastra Database obiectul
Macro i se execut un clic pe butonul New, SGBD Microsoft Access 2003 afind
147

Universitatea SPIRU HARET

pe ecranul monitorului fereastra Macro (fig.5.37), sub forma unui tabel compus din
dou coloane i mai multe rnduri.

Fig.5.37. Modul Design View al unei ferestre Macro

1. Coloana Action conine o list derulant format din comenzi care au ca


efect aciuni prestabilite (ca, de exemplu, OpenForm, OpenReport etc.);
2. Coloana Comment se folosete pentru introducerea unor comentarii sau
pentru descrierea aciunilor pe care le realizeaz comanda respectiv.
n partea de jos a ferestrei Macro se afl o zon destinat specificrii unor
argumente. Argumentele furnizeaz SGBD Microsoft Access informaii suplimentare
asupra modului n care se vor ndeplini aciunile generate de comanda stabilit n
coloana Action (de exemplu, numele obiectului care va rspunde la aciunea
respectiv, sau modul n care vor fi afiate datele ca urmare a executrii comenzii).
SGBD Microsoft Access asigur o gam variat de comenzi care pot fi
asociate unor evenimente diverse i care pot avea impact asupra obiectelor din baza
de date.
n continuare, se prezint cele mai uzuale comenzi folosite ntr-o baz de
date, grupate pe categorii n funcie de tipul operaiilor i de efectul produs asupra
obiectelor crora le sunt asociate.
148

Universitatea SPIRU HARET

Comenzi asociate unor aciuni care au loc n formulare i rapoarte


Aceast categorie de comenzi permite utilizatorului, de regul, deplasarea
printre nregistrrile bazei de date.
FindRecord aceast comand se folosete pentru a localiza prima
nregistrare din baza de date care ntrunete condiiile specificate de argumentele
comenzii. Aceast comand poate accepta ca argumente urmtoarele valori:
1. Find What n dreptul acestui argument se specific informaia care se
dorete a se regsi n baza de date. Se pot introduce text, numere sau orice tip de
dat din care este format valoarea cutat.
2. Match specific unde se afl informaia respectiv n cadrul cmpului.
Se poate specifica o cutare a datelor n oricare parte a cmpului prin stabilirea
valorii argumentului la Any Part of Field, se poate stabili valoarea Whole Field
pentru acele informaii care ocup ntregul cmp, sau se poate stabili valoarea Start
of Field pentru a localiza acele informaii care se afl la nceputul cmpului.
3. Match Case specific dac aciunea de cutare este case-sensitive
(literele scrise cu majuscule trebuie s se potriveasc exact cu valoarea
argumentului Find What).
4. Search specific modul n care se desfoar procedura de cutare n
baza de date, pornind de la nregistrarea curent ctre nceputul nregistrrilor (Up),
sau ncepnd de la nregistrarea curent ctre sfritul nregistrrilor, sau toate
nregistrrile sunt cutate (All).
5. Find First specific de unde se ncepe aciunea de cutare, de la prima
nregistrare (Yes) sau de la nregistrarea curent (No).
FindNext aceast comand se folosete mpreun cu comanda FindRecord,
avnd rolul de a relua aciunea de cutare n scopul de a gsi o nou nregistrare
care conine aceleai informaii. Comanda FindNext nu are argumente, ea va gsi
urmtoarea nregistrare care ntrunete condiiile stabilite n comanda FindRecord.
GoToControl se poate folosi aceast comand pentru a realiza plasarea pe
un anumit cmp a unui tabel sau pentru a obine plasarea pe un anumit control a
unui formular sau raport. Se poate folosi aceast comand i pentru a naviga ntr-un
formular stabilind anumite condiii. Aceast comand accept un singur argument,
Control Name, care stabilete numele cmpului sau controlului pe care se dorete a
se realiza plasarea.
GoToRecord are rolul de a realiza poziionarea pe o anumit nregistrare
dintr-un tabel, formular sau interogare. Aceast comand are urmtoarele
argumente:
1. Object Type specific tipul obiectului care conine nregistrarea pe care se
dorete poziionarea (Tabel, Interogare, Formular, Server View sau Stored Procedure).
2. Object Name n acest argument se stabilete numele obiectului care
conine informaia pe care se dorete poziionarea. Caseta asociat acestui argument
conine o list derulant cu toate numele obiectelor definite n baza de date.
3. Record valorile stabilite pentru acest argument specific pe care nregistrare se va realiza poziionarea. Valorile acceptate sunt: Previous (nregistrarea
anterioar), Next (nregistrarea urmtoare), Last (ultima nregistrare), Go To
(utilizatorul va specifica pe a cta nregistrare va dori s se plaseze).
149

Universitatea SPIRU HARET

GoToPage aceast comand realizeaz poziionarea pe primul control al


unei pagini de formular. Se poate folosi aceast comand dac formularul creat
conine ntreruperi de pagin. Argumentele acestei comenzi sunt urmtoarele:
1. Page Number stabilete numrul de pagini cu care se dorete
schimbarea poziionrii.
2. Right stabilete poziia orizontal a locului de pe pagin care va apare
ncepnd de la marginea din stnga a ferestrei.
3. Down stabilete poziia vertical a locului de pe pagin care va apare
din partea superioar a ferestrei.
Se pot folosi argumentele Right i Down pentru formulare care au suprafaa
paginilor mai mare dect suprafaa pe care o poate afia monitorul calculatorului,
SGBD Microsoft Access putnd afia doar anumite pri ale unui formular.
Comenzi pentru rularea unor aplicaii
Acest grup de comenzi permite utilizatorului s execute o comand dintr-un
meniu, s lanseze o procedur sau o interogare sau s execute o alt macrocomand.
RunCode se poate utiliza aceast comand pentru a executa o procedur
Visual Basic. Aceast comand are doar un singur argument, Function Name, ce
permite ca n csua asociat acestui argument s se stabileasc numele procedurii
care se va executa.
RunMacro aceast comand are ca efect executarea unui macrou sau a
unui grup de macrouri. Argumentele acestei comenzi sunt urmtoarele:
1. Macro Name stabilete numele macroului care va fi executat. Csua
asociat acestui argument conine o list derulant cu toate macrourile definite n
baza de date.
2. Repeat Count indic numrul maxim de execuii a macroului. Dac
valoarea argumentului nu este stabilit, atunci macroul se va executa doar o singur
dat.
3. Repeat Expression stabilete o expresie care va fi evaluat cu adevrat
(True) sau fals (False), macroul oprindu-se din execuie dac expresia este
interpretat a fi fals. Aceast expresie va fi evaluat de fiecare dat cnd se va
executa macroul.
RunApp lanseaz n execuie o aplicaie MS-DOS sau o aplicaie Windows
(Word, Excel, Power Point etc.). Cu ajutorul acestei comenzi se pot transfera date
ntre diferite aplicaii i SGBD Microsoft Access folosind facilitatea DDE
(Dynamic Data Exchange) a sistemului de operare Windows. Aceast comand
dispune doar de un singur argument, Command Line, prin care linia de comand
este folosit pentru a porni o aplicaie. Aceast linie de comand trebuie s conin
obligatoriu calea spre locaia unde se afl aplicaia respectiv.
OpenQuery lanseaz n execuie o interogare. Argumentele asociate acestei
comenzi sunt urmtoarele:
1. Query Name n csua asociat acestui argument se va stabili numele
interogrii care se va executa. Aceast csu conine o list derulant cu toate
interogrile definite n baza de date.
2. View va stabili modul n care va fi executat interogarea respectiv,
valorile pentru acest argument fiind Design, Datasheet, Print Preview.
150

Universitatea SPIRU HARET

3. Data Mode- stabilete modul n care vor fi introduse datele. Aceast


opiune este valabil doar dac interogarea este executat n modul Datasheet.
Valorile pentru acest argument sunt Add utilizatorul poate aduga noi nregistrri,
dar nu le poate modifica pe cele vechi, Edit utilizatorul poate aduga nregistrri
noi i poate modifica pe cele vechi, Read Only utilizatorul poate doar vizualiza
datele rezultate n urma executrii interogrii.
Quit are ca efect terminarea sesiunii de lucru cu SGBD Microsoft Access.
Comanda Quit dispune doar de un singur argument, Options, care specific ce se
ntmpl cu obiectele create i nesalvate n momentul n care se nchide aplicaia.
Acest argument accept trei valori: Prompt afieaz o caset de dialog n care
utilizatorul este ntrebat dac va salva fiecare obiect n parte, Save All va salva
toate obiectele fr a se mai afia caseta de dialog i Exit se va prsi aplicaia
fr a se salva obiectele nou create.
Comenzi pentru manipularea obiectelor
Aceste comenzi se pot grupa n trei mari categorii:
comenzi care au ca rezultat modificarea structurii bazei de date
(CopyObject, DeleteObject, Rename);
comenzi care au ca rezultat modificarea modului de afiare pe ecranul
monitorului a obiectului la care face referire comanda respectiv (Maximize,
Minimize, Restore);
comenzi care au ca rezultat selectarea, deschiderea sau nchiderea unui
obiect al bazei de date (SelectObject, OpenForm, OpenQuery, OpenReport,
OpenModule, Close).
CopyObject se poate folosi aceast comand pentru a copia un obiect dintr-o
alt baz de date sau din cadrul aceleiai baze de date. n momentul n care se va
copia obiectul respectiv, acesta va fi redenumit. Argumente folosite de aceast
comand:
1. Destination Database n csua destinat acestui argument se vor
introduce calea i numele de destinaie a bazei de date n care se dorete copierea
obiectului respectiv.
2. New Name se va stabili un nume nou pentru obiectul respectiv. n cazul
n care copierea obiectului se va realiza n alt baz de date, acest argument va fi
lsat necompletat, copierea realizndu-se sub acelai nume.
3. Source Object Type stabilete tipul de obiect ce va fi copiat (Tabel,
Interogare, Raport etc).
4. Source Object Name numele obiectului ce va fi copiat. Csua de dialog
asociat acestui argument conine o list derulant cu toate obiectele definite n
baza de date.
DeleteObject aceast comand are ca efect tergerea unui obiect din baza de
date. De obicei, aceast comand se folosete la tergerea obictelor care au un
caracter temporar n baza de date. Folosete ca argumente Source Object Type i
Source Object Name, care funcioneaz la fel ca argumentele comenzii CopyObject.
Rename utilizatorul poate schimba numele unui obiect definit n baza de
date prin folosirea acestei comenzi. Aceast comand folosete urmtoarele
argumente:
151

Universitatea SPIRU HARET

1. New Name prin introducerea unui ir de caractere n csua asociat


acestui argument, utilizatorul stabilete un nou nume pentru un obiect.
2. Old Name csua asociat acestui argument conine o list derulant cu
toate numele obiectelor definite n baza de date.
3. Object Type stabilete tipul de obiect ce va fi redenumit.
Maximize, Minimize, Restore acest grup de comenzi are ca efect
maximizarea, minimizarea sau refacerea unei ferestre active. Acest grup de
comenzi nu deine argumente.
OpenForm, OpenQuery, OpenReport, OpenModule acest grup de comenzi
deschide un obiect al bazei de date. Cele mai importante argumente asociate
acestoe comenzi sunt:
1. Object Name indic numele obiectului care va fi deschis, acesta putnd
s aparin urmtoarelor categorii de obiecte: Form, Query, Report, Module etc.
Dac exist o comand de OpenForm, argumentul asociat acestei comenzi va fi
FormName i acesta va conine o list derulant cu toate numele formularelor
definite n baza de date.
2. View este un argument asociat comenzilor OpenForm, Open Query,
Open Report sau Open Module i va indica SGBD Microsoft Access n ce mod va
deschide un formular, o interogare sau un raport. Valorile prestabilite pentru acest
argument sunt: Form, Design, Print Preview, Datasheet.
3. Filter Name un filtru reprezentnd un set de criterii aplicate modului de
vizualizare a nregistrrilor.
4. Data Mode va indica modul n care vor fi introduse datele. Acest
argument se aplic doar formularelor deschise n modul Form View sau Datasheet
View. Cele trei valori pentru acest argument sunt: Add (utilizatorul poate deschide
acel formular doar pentru a introduce date; la fiecare deschidere a formularului nu
vor fi afiate datele care aparin tabelei asociate sau care au fost introduse ntr-o
sesiune anterioar), Edit (utilizatorul poate s introduc noi nregistrri i s le
modifice pe cele vechi), Read Only (utilizatorul poate doar s vizualizeze
nregistrrile din tabela asociat formularului respectiv).
Comenzi diverse
Hourglass aceast comand are ca efect schimbarea pointer-ului de la
mouse cu o clepsidr sau n oricare alt imagine aleas de utilizator. Aceast
comand este folosit pentru a da utilizatorului o indicaie vizual atunci cnd se
execut un macrou, iar timpul pentru execuia acelui macrou este foarte mare.
MsgBox aceast comand este folosit atunci cnd utilizatorul dorete
afiarea unor mesaje de avertizare n cazul nclcrii unor reguli de validare, sau
atunci cnd utilizatorul dorete afiarea pe ecranul monitorului a unor informaii
suplimentare legate de date sau proceduri.
Grupuri macro i condiiile asociate asociate macrourilor
Grupurile macro reunesc mai multe comenzi similare sau nrudite. Pentru a
uura modul de editare, salvare i adresare, acestea vor fi reunite sub acelai nume
de grup. Pentru a atribui un nume de grup comenzilor, se va folosi opiunea Macro
Names din meniul View.
152

Universitatea SPIRU HARET

Condiiile sunt expresii logice care permit executarea unor comenzi definite
n cadrul macrourilor. Aceste expresii sunt introduse n coloana Conditions activat
din meniul View. Fiecare expresie introdus n coloana Conditions va fi evaluat de
SGBD Microsoft Access prin True sau False. Aciunea StopMacro se utilizeaz
pentru ntreruperea repetrii inutile a condiiilor. Dac se dorete ca o aciune s
funcioneze numai cnd o condiie este adevrat (True), se va utiliza StopMacro,
care s testeze condiia False, iar dac trebuie trecut peste un grup de aciuni pentru
a testa o comand macro, se introduce valoarea zero n coloana Condition a fiecrei
linii care trebuie srit (zero este echivalent cu valoarea False). Pentru orice alte
aciuni pentru care se dorete s se verifice dac condiia de validare este adevrat,
se introduce n coloana Condition trei puncte, iar n coloana Action se introduce o
comand.
Comenzile macro au urmtoarele limite:
a) nu se poate reveni asupra unei operaii executate;
b) n mediul de lucru multiutilizator, n care exist o probabilitate destul de
mare de apariie a blocrii nregistrrilor sau fiierelor, erorile de blocare nu se pot
trata n interiorul unei comenzi macro;
c) dac o aplicaie creat n SGBD Microsoft Access este executabil
independent de acest sistem, o comand macro fr a avea ncorporat verificarea
de erori poate duce la distrugerea aplicaiei.
5.9. Modulul (Module)
5.9.1. Problematica general
Modulul (Module) este un obiect al SGBD Microsoft Access care este creat n
limbajul Visual Basic pentru aplicaii, VBA (Visual Basic for Applications) i este
destinat extinderii funciunilor specifice unei baze de date. Acest obiect Module
reprezint o alternativ a obiectului Macro prezentat n paragraful anterior, pentru
dezvoltarea de aplicaii n SGBD Microsoft Access.
Limbajul VBA reprezint limbajul specific ntregului pachet de birotic
Microsoft Office 2003 (pentru Word, Excel i Access). Instruciunile VBA sunt
asemntoare limbajului Visual Basic prezentat n capitolul 3. Sintaxa acestor
instruciuni este prezentat de un sistem de asisten online extins.
n programele principale ale pachetului Microsoft Office 2003, limbajul VBA
asigur posibilitatea nregistrrii automate a instruciunilor (secvenelor de
instruciuni), implementarea structurilor de control (secvenial, alternative i
repetitive) pentru controlul aplicaiilor, schimbul dinamic de date cu alte aplicaii
din familia Microsoft, capacitatea de a folosi funciile interfeei de programare a
aplicaiilor, API (Application Programming Interface) specific sistemului de
operare Windows. n plus, prin limbajul VBA se obine o aliniere la standardul de
realizare a conectivitii bazelor de date extinse, ODBC (Open-DataBase
Connectivity) prin care SGBD-uri diferite pot gestiona aceeai baz de date
(Microsoft Access, SQL Server, Paradox, FoxPro, dBase etc.).
Aceeai firm Microsoft a realizat VBScript (Visual Basic Scripting Edition),
limbaj de scripturi interpretat de browser-ul Internet Explorer.
153

Universitatea SPIRU HARET

5.9.2. Caracteristicile limbajului VBA


Limbajul VBA reprezint un limbaj de programare orientat pe obiecte, OOP
(Object-Oriented Programming), i condus de evenimente, EDP (Events-Driven
Programming pentru pachetul de birotic Microsoft Office 2003). Acest limbaj a
fost integrat n Microsoft Office cu scopul de a diversifica gama aplicaiilor oferite
de acest pachet de programe. Ca urmare, codul VBA se compileaz o dat cu
fiierul specific aplicaiei.
n pachetul Microsoft Office 2003 a fost inclus editorul Visual Basic, VBE
(Visual Basic Editor). n capitolul de Visual Basic s-a precizat rolul ferestrei de
editare a codului. Limbajul VBA percepe fiecare component a unei aplicaii ca un
obiect caracterizat de o mulime de proprieti i metode specifice i care include
att parte de coninut (formulare, meniuri, grafice, atribute etc.), ct i parte
funcional (mod de manipulare a coninutului).
n esen, ceea ce realizeaz o interfa grafic ntr-unul din componentele
Microsoft Office 2003, n cea mai mare parte, poate fi modelat i comandat prin
intermediul limbajului VBA.
Utilizatorul poate defini, cu ajutorul VBA, obiecte proprii care s corespund
cerinelor unei anumite aplicaii. n aceast aciune este necesar respectarea unei
ierarhii prestabilite de colecii de obiecte. Referirea unui obiect se obine prin
utilizarea numelui acestuia sau a indicelui numeric al obiectului. Ierarhia de obiecte
este parcurs de la nivelul superior ctre nivelul inferior prin separarea numelor
obiectelor cu ajutorul punctului.
Proprietile obiectelor sunt atribute care definesc caracteristicile acestor
obiecte. n afar de varianta cu fereastra Properties (descris n capitolul cu Visual
Basic), schimbarea proprietilor unui obiect se poate face cu ajutorul VBA. De
exemplu, Application.Caption=Clienti introduce noua denumire a tabelului
bazei de date Materiale, n locul vechii denumiri Beneficiari.
Aa cum s-a artat n capitolul 2, metodele sunt aciuni posibil a fi executate
de ctre obiect. Evenimentele, ca aciuni ale utilizatorului (clic-ul mouse-ului, de
exemplu), declaneaz execuia codului VBA asociat.
Limbajul VBA accept date standard (predefinite) i date create de utlizator,
astfel:
[Private/Public] Type nume_tip_dat
Element1 As tip_date
Element2 As tip_date
End Type.
Un exemplu de astfel de structur de date definit de utilizator:
Type Furnizor
Cod_furnizor As Long
Nume_furnizor As String
Prenume_furnizor As String
Adresa_furnizor As String
Telefon_furnizor As Long
Banca_furnizor As String
Cont_banca_furnizor As Single
End Type.
154

Universitatea SPIRU HARET

Operatorii limbajului VBA sunt aritmetici, de comparaie, de concatenare i


logici.
Instruciunile (comenzile) limbajului VBA asociate structurilor de control
fundamentale sunt:
a) alternative
IfThen Else End If.
Select CasecaseCaseCaseElseEnd Select.
b) Repetitive
Do (While, Until) Exit DoLoop
WhileWEnd
ForToStep [Exit For]Next
For eachIn[Exit For]Next
Componentele logice ale unui program VBA sunt procedurile (subrutinele).
O procedur execut o aciune (proceduri Sub) sau calculeaz o valoare
(procedur funcie). Dintre procedurile-funcie specifice VBA (care se acceseaz
din modului Expresion Builder) se menioneaz Space (numr), Switch () etc.
Procedurile sunt organizate n module. Modulele se ncadreaz n dou
categorii: modulele standard i modulele de clas. Modulele standard pot fi rulate
din orice loc al unei baze de date i sunt afiate n fereastra Database, n lista de
obiecte-modul (Modules Object). Modulele de clas sunt asociate unor anumite
obiecte (formulare, rapoarte). Mai multe module formeaz un proiect (Project). De
regul, numele proiectului coincide cu numele bazei de date.
n navigatorul pentru obiecte (Object Browser) se gsesc, organizate n
biblioteci (Libraries), obiectele, proprietile, metodele i evenimentele ce pot fi
folosite n realizarea procedurilor VBA.
5.9.3. Crearea unui modul standard i a unei proceduri Sub
Denumirile modulelor standard sunt afiate n zona Modules din fereastra
bazei de date. n fereastra Database se alege opiunea Modules de pe bara cu
obiecte (Objects), dup care se apas butonul New. Se afieaz editorul Visual
Basic, VBE (fig.5.38).
Procedura Sub ncepe cu linia Sub nume_procedur(argumente), continu cu
liniile corespunztoare instruciunilor VBA specifice procedurii i se termin cu
linia End Sub.
Se execut clic pe meniul Insert i apoi se selecteaz opiunea Procedure.
Dup afiarea ferestrei Add Procedure, se introduce numele procedurii (de
exemplu, proc_1) i se selecteaz opiunea Sub (la Type) i opiunea Public (la
Scope). Se apas butonul OK.
De exemplu, dac se dorete deschiderea unui tabel al bazei de date, se
utilizeaz obiectul DoCmd care se scrie cu punct n linia de sub numele procedurii.
La afiarea ferestrei de opiuni, se alege OpenTable, iar dup introducerea acestei
opiuni, se scrie numele tabelului ntre ghilimele.
155

Universitatea SPIRU HARET

Fig.5.38. Crearea modulului standard Modul_test

Se introduce o virgul i, dup afiarea opiunilor de stabilire a modului de


vizualizare, se alege opiunea ce desemneaz modul de vizualizare Normal
(acViewNormal). Se introduce din nou o virgul care permite alegerea opiunii de
deschidere a tabelului n editare (acEdit). n acelai mod se introduc i celelalte
comenzi necesare procedurii. n final, se salveaz cu opiunea Save As cu nume
(Modul_test). Rularea se efectueaz cu butonul Run. Se constat deschiderea i
afiarea tabelului Materiale din baza de date Construct.
n mod analog cu modulele standard, pot fi create cu VBE i module de clas.
5.10. Utilizarea evenimentelor ntr-o baz de date
n SGBD Microsoft Access, evenimentele constituie baza oricrei aplicaii
realizate. n comparaie cu modelul de programare procedural, modelul de
programare bazat pe evenimente (events-driven model) presupune c acestea
gestioneaz toate intrrile (acionrile de taste, acionarea butoanelor mouse-ului) i
decid la care program s fie aplicate aceste elemente. Programul primete mesajul
cu privire la apariia unui eveniment i execut secvena corespunztoare acelui
eveniment.
Dac un program nu dispune de evenimente cu care s lucreze, atunci el nu va
folosi unitatea central i utilizatorul nu va cunoate ce eveniment ar putea urma.
156

Universitatea SPIRU HARET

Programul obinut prin programarea bazat pe evenimente const dintr-o


serie de programe utilitare de tratare a evenimentelor. Fiecare program utilitar i
execut secvena de instruciuni atunci cnd are loc evenimentul specific, cum ar fi:
cnd utilizatorul a terminat editarea controlului sau intr i iese dintr-un control,
cnd se acioneaz o tast sau mouse-ul (cu simplu-clic sau dublu-clic) etc.
Evenimentele ofer ca posibiliti;
- rspunsul la editri;
- verificarea intrrilor;
- efectuarea modificrilor n baza de date;
- ascunderea controalelor nerelevante;
- pstrarea valorilor n spatele ecranului;
- prevenirea introducerilor de date incorecte;
- furnizarea unui sistem de asisten suplimentar;
- rezolvarea problemelor de blocare n regim de lucru multiutilizator;
- arhivarea nregistrrilor nainte ca acestea s fie terse.
Evenimentele au loc n timp ce un utilizator lucreaz cu controalele dintr-un
formular. Un rspuns programat pentru un eveniment se face utiliznd cmpul
Evenimente (Events) din caseta Proprieti (Properties). Valoarea introdus n
acest cmp poate fi:
- numele unei comenzi macro care se va executa;
- numele unei funcii Visual Basic care va fi executat; n acest caz, valoarea
introdus trebuie s fie precedat de semnul = i va include i parantezele de
funcie;
- Procedura eveniment (Event Procedure) pentru a se face referire la
elementul de tratare al evenimentului memorat mpreun cu formularul.
Evenimentele care pot avea loc ntr-o baz de date pot fi grupate n mai
multe categori:
a) Evenimente care fac referire la date acest gen de evenimente apare n
momentul n care se introduc, se terge sau se modific nregistrri n baza de date,
sau cnd se efectueaz deplasarea printre nregistrrile din baza de date. Aceste
evenimente apar, de regul, n cadrul formularelor. Dintre evenimentele de baz se
pot enumera:
1. AfterDelConfirm evenimentul apare dup confirmarea operaiunii de
tergere.
2. AfterInsert evenimentul apare dup ce a fost adugat o nou nregistrare
n baza de date.
3. AfterUpdate evenimentul are loc dup modificarea sau editarea unui
control, dar dup ce selecia a prsit controlul respectiv.
4. BeforeDelConfirm evenimentul intervine dup ce una sau mai multe
nregistrri sunt terse, dar nainte ca SGBD Microsoft Access s afieze fereastra
de dialog pentru confirmarea sau anularea aciunii de tergere.
5. BeforeInsert evenimentul apare n momentul n care se tiprete primul
caracter al unei noi nregistrri, dar dup ce vechea nregistrare a fost introdus n
baza de date.
6. BeforeUpdate evenimentul are loc nainte ca un control sau o nregistrare
s fie modificate, dar nainte ca selecia s prseasc controlul respectiv.
Evenimentul este proiectat pentru operaia de validare a datelor de intrare, astfel
157

Universitatea SPIRU HARET

nct dac datele introduse nu corespund logic, evenimentul poate fi ntrerupt, iar
utilizatorul va relua operaia. Dac se dorete acceptarea unei valori introduse, este
de preferat utilizarea evenimentului BeforeUpdate, al formularului, n loc de cel al
controlului. Evenimentul BeforeUpdate al controlului nu are loc dac utilizatorul
trece de control sau nu introduce valori.
7. OnChange acest eveniment se aplic numai n cazul controalelor i are
loc n momentul n care datele din control i schimb valoarea.
8. OnDelete evenimentul intervine cnd o nregistrare este tears din baza
de date, dar nainte de apariia mesajului de confirmare.
9. OnNotInList evenimentul survine n momentul n care se introduce ntr-o
caset combinat o valoare care nu se afl n lista casetei.
b) Evenimente de focalizare acest grup de evenimente apare n momentul n
care un control sau obiect din baza de date devine activ (este selectat de utilizator),
sau cnd devine inactiv. Evenimentele care aparin acestui grup de evenimente sunt:
1. OnEnter evenimentul apare n momentul n care cursorul se mut ntr-un
control, dar nainte de evenimentul GotFocus.
2. OnExit acest eveniment apare chiar nainte de operaia de prsire a
controlului respectiv, dar dup evenimentul LostFocus.
3. OnGotFocus se aplic controalelor i formularelor. Acest eveniment
intervine n momentul n care utilizatorul se plaseaz efectiv pe obiectul respectiv.
Utilizatorul are o focalizare efectiv la un formular doar dac acel formular nu
conine controale sau dac toate controalele vizibile sunt dezactivate.
4. OnLostFocus mecanismul de funcionare al acestui eveniment este
asemntor cu evenimentul OnGotFocus, cu deosebirea c acesta apare n
momentul n care utilizatorul mut focalizarea pe un alt control.
c) Evenimente asociate butoanelor de la tastatur (KeyDown, KeyUp i
KeyPress) aceste evenimente survin la apsarea i/sau eliberarea unei taste sau
combinaii de taste, atunci cnd controlul este selectat.
d) Evenimente asociate mouse-ului intervin n momentul n care utilizatorul
folosete butoanele de la mouse.
Evenimentele OnMouseDown i OnMouseUp asigur informaii despre
deplasamentul (offset-ul) fa de colul din stnga sus al controlului unde a avut loc
evenimentul. Pentru un obiect grafic, aceast metod folosete la detalierea
informaiilor prezentate pe suprafaa pe care s-a executat clic. SGBD Microsoft
Access nu conine evenimente pentru operaiile de tipul Drug-and-Drop (tragere cu
mouse-ul), dar acestea se pot simula prin utilizarea evenimentelor OnMouseDown
i OnMouseUp. Evenimentul OnMouseUp conine o informaie de offset, care
asigur date asupra poziiei de pe ecran n care a fost eliberat mouse-ul. Chiar dac,
ntre operaiile de apsare i de eliberare a butonului mouse-ului, acesta este mutat
n alt control, evenimentul OnMouseUp are loc pentru controlul care a recepionat
evenimentul OnMouseDown.
Evenimentele OnClick i OnDblClick apar n momentul n care utilizatorul
apas o dat sau de dou ori consecutiv pe butonul din partea stng de la mouse.

158

Universitatea SPIRU HARET

6. LIMBAJUL STRUCTURAT DE INTEROGARE SQL

Caracteristici generale
Limbajul SQL (Structured Query Language limbaj structurat de interogare)
este utilizat pentru manipularea i regsirea datelor din bazele de date relaionale.
SQL-ul pune la dispoziia programatorului sau a unui administrator de baze
de date urmtoarele faciliti [19]:
posibilitatea de modificare a structurii bazei de date;
posibilitatea schimbrii valorilor de configurare pentru securitatea
sistemului;
permite stabilirea i modificarea drepturilor date utilizatorilor asupra
bazelor de date sau a tabelelor;
permite interogarea unei baze de date;
ofer faciliti multiple referitoare la actualizarea coninutului unei baze
de date.
6.1. Noiuni de baz referitoare la SQL
O interogare SQL nu este neaprat o ntrebare pus bazei de date, ci, cel mai
adesea, o comand pentru executarea uneia dintre aciunile de mai jos:
s construiasc sau s tearg o baz de date;
s insereze, s modifice sau s tearg linii sau cmpuri;
s caute n tabele o anumit informaie i s returneze rezultatele ntr-o
anumit ordine;
s modifice securitatea informaiilor;
o simpl interogare (ntrebare).
Toate cuvintele scrise cu litere mari ar putea fi scrise i cu litere mici. Cu
litere mari se scriu cuvintele cheie SQL. Semnul punct i virgul (;) de la sfritul
expresiei indic programului SQL n linie de comand c interogarea este
terminat.
6.2. Blocurile componente ale operaiei
de regsire a datelor: SELECT i FROM
SELECT <NUME DE COLOAN> FROM <TABEL>
Se consider o baz de date MATERIALE ca model pentru urmtoarele
cteva exemple.
159

Universitatea SPIRU HARET

Baz de date model: MATERIALE


Nr. nreg
1
2
3
4
5
6
7

Cod
12345
12245
11145
21123
21124
31221
41124

Mat
Cherestea
Cherestea
Cherestea
Tabla
Tabla
Cot
Con

UM
kg
kg
kg
kg
kg
kg
kg

Cant
1000
1500
270
1221
125
1550
15500

Pret_ul
150000
140000
180000
120000
140000
120000
130000

Comand: SQL> SELECT * FROM MATERIALE;


(1)
Rezultatul este afiarea unui tabel identic cu cel de mai sus al bazei de date
model. Semnul asterisc (*) transmite bazei de date comanda de a returna toate
coloanele asociate cu tabelul dat descris n clauza FROM. Ele sunt returnate ntr-o
ordine hotrt de baza de date.
Semnul punct i virgul de la sfritul instruciunii informeaz interpretorul
c s-a terminat de scris interogarea.
Cnd coloanele nu se afieaz n alt ordine, se introduce de la tastatur
comanda:
Comand: SQL> SELECT Mat, Cant, Nr_nreg, Cod FROM MATERIALE (2)
Numele de coloane sunt separate prin cte o virgul, cu un spaiu dup
ultimul nume de coloan i nainte de urmtoarea clauz (n acest caz FROM).
Instruciunea ar putea fi scris, de asemenea, astfel:
Comand: SELECT Mat, Cant, Nr_nreg, Cod
FROM MATERIALE;
(3)
Selectarea coloanelor individuale
Dac selectm doar dou coloane, introducem de la tastatur urmtoarea
instruciune:
Comand: SQL> SELECT Mat, Cant, FROM MATERIALE
WHERE Mat=Cherestea;
(4)
Condiii
Pentru a regsi un anumit element sau grup de elemente n baza de date, sunt
necesare una sau mai multe condiii. n exemplul anterior, condiia este: Mat =
Cherestea .
Dac problema cere s gsim toate materialele care se gsesc n cantitate mai
mare de 1000 kg, putem introduce condiia: Cant >= 1000.
Condiiile fac posibile interogrile selective. n cea mai obinuit form a lor,
ele se compun dintr-o variabil, o constant i un operator de comparare. n primul
exemplu variabila este Mat, constanta este Cherestea i operatorul de comparare
este =. n al doilea exemplu, variabila este Cant, constanta este 1000 i operatorul
de comparare este >.
Conceptul de interogri selective n SQL se bazeaz pe ideea submulimilor.
O interogare selectiv returneaz o submulime de date.
Clauza WHERE
Sintaxa clauzei WHERE este:
WHERE <condiie de cutare>
S-a vzut n exemplul de mai sus (4) c prin aceast clauz s-a selectat
materialul Cherestea. mpreun cu SELECT i FROM, WHERE este cea mai
folosit clauz n SQL. Aceast clauz face interogrile selective.
160

Universitatea SPIRU HARET

6.3. Operatori utilizai n SQL


Operatorii se mpart n ase grupe distincte: aritmetici, de comparare,
caracter, logici, pentru mulimi i ali operatori.
6.3.1. Operatorii aritmetici
Operatorii aritmetici sunt plus (+), minus (-), mprire (/), nmulire (*) i
modulo (%). Primii patru sunt descrii chiar prin numele lor.
Dac se plaseaz civa operatori aritmetici ntr-o expresie fr paranteze, ei
sunt tratai n ordinea urmtoare: nmulire, mprire, modulo, adunare, apoi scdere.
Plus (+) Se introduce comanda:
SQL>
SELECT Mat, Pret_u,
Pret_u + 10000
FROM MATERIALE;
(5)
Aceast comand adaug 10000 de uniti monetare la fiecare pre unitar i
genereaz urmtorul rezultat:
Mat
Cherestea
Cherestea
Cherestea
Tabla
Tabla
Cot
Con

Pret_u
150000
140000
180000
120000
140000
120000
130000

Pret_u+10000
160000
150000
190000
130000
150000
130000
140000

Deoarece capul de tabel este neconcludent, acesta se modific prin introducerea comenzii:
SQL> SELECT Mat, Pret_u, (Pret_u + 10000) Pret_modif
FROM MATERIALE;
(6)
Se obine:
Mat
Cherestea
Cherestea
Cherestea
Tabla
Tabla
Cot
Con

Pret_u
150000
140000
180000
120000
140000
120000
130000

Pret_modif
160000
150000
190000
130000
150000
130000
140000

Se pot crea noi coloane care se pot redenumi n timpul execuiei. Redenumirea
coloanelor se face folosind sintaxa: <nume_coloan> alias.
Minus (-), nmulire (*), mprire (/) se folosesc similar cu operatorul
Plus(+).
161

Universitatea SPIRU HARET

Modulo (%) este un operator care returnez restul ntreg al unei mpriri. De
exemplu:
7%3=2
9%3=0
(7)
Operatorul modulo nu accept tipuri de date care conin zecimale, ca, de
exemplu, tipul real sau number.
6.3.2. Operatorii de comparaie
Operatorii de comparaie sunt: Egal (=), Mai mare dect (>), Mai mare sau
egal (>=), Mai mic dect (<), Mai mic sau egal (<=) i Inegalitate (<> sau !=).
Dup cum arat i numele lor, operatorii de comparaie compar expresiile i
returneaz una din urmtoarele trei valori: TRUE (adevrat), FALSE (fals), sau
UNKNOWN (necunoscut). Pentru a nelege noiunea UNKNOWN (necunoscut),
trebuie s-o asociem conceptului NULL (nul). n termenii folosii pentru baze de
date, NULL semnific absena datelor dintr-un cmp. Nu nseamn c o coloan
conine o valoare zero sau un spaiu. Un zero sau un spaiu sunt valori. NULL
nseamn c n cmpul respectiv nu se gsete nimic. Dac facei o comparaie de
genul cmp = no i cmp este NULL, comparaia va returna UNKOWN.
Egal (=). n clauza WHERE, semnul = este cel mai utilizat operator de
comparare, care, folosit singur, devine un mod facil de selectare a unei valori din
mai multe existente. Acest lucru se observ n exemplul (4).
Mai mare dect (>) i Mai mare sau egal (>=). Operatorul mai mare dect
(>) acioneaz n felul urmtor:
Comand: SELECT Nr_inreg, Cod, Mat, UM, Cant, Pret_u
FROM MATERIALE
(8)
WHERE Cant >1000 AND Mat=Cherestea;
Nr. nreg
2

Cod
12245

Mat
Cherestea

UM
kg

Cant
1500

Pret_u
140000

n mod similar acioneaz i ceilali operatori de comparaie Mai mare sau


egal (>=), Mai mic dect (<), Mai mic sau egal (<=) i Inegalitate (<> sau !=).
6.3.3. Operatorii caracter
Exist mai muli operatori caracter, dintre care se vor prezenta: LIKE,
UNDERSCORE, Concatenarea.
LIKE presupune a gsi ntr-o baz de date acele nregistrri care nu
corespund n totalitate unui model. Forma sa este urmtoarea:
SQL> SELECT *
FROM nume baz de date
(9)
WHERE nume-cmp LIKE expresie;
De multe ori, n expresia care urmeaz dup LIKE apare semnul de modulo
(%), care are rolul de caracter de nlocuire.
Exemplu:
SQL> SELECT *
FROM MATERIALE
WHERE Mat LIKE C%;
(10)
162

Universitatea SPIRU HARET

Execuia acestei comenzi are ca efect apariia acelor nregistrri n care Mat
ncepe cu litera C. De remarcar c LIKE difereniaz literele mari de literele mici.
UNDERSCORE. este un caracter de nlocuire doar pentru un singur caracter.
Pentru tabelul MATERIALE creat anterior se va exemplifica acest operator:
SQL> SELECT *
FROM MATERIALE
WHERE Mat LIKE Co_;
(11)
Nr. nreg
6
7

Cod
31221
41124

Mat
Cot
Con

UM
kg
kg

Cant
1550
15500

Pret_u
120000
130000

ntr-o instruciune SELECT pot aprea mai multe semne underscore. De


asemenea, se poate regsi o nregistrare sau mai multe dup un caracter situat
oriunde n irul de caractere.
Concatenarea presupune reunirea a dou sau mai multe iruri de caractere.
Pentru concatenare se folosete simbolul // sau +.
SQL>
SELECT Cod // Mat CodDenumire_material
FROM MATERIALE;
(12)
CodDenumire_material
12345Cherestea
12245Cherestea
11145Cherestea
21123Tabla
21124Tabla
31221Cot
41124Con
6.3.4. Operatorii logici
Operatorii logici sunt urmtorii: AND, OR, NOT.
Operatorul AND utilizat ntre dou expresii presupune ca ambele s fie
adevrate pentru ca acestea s returneze valoarea de adevr TRUE. Dac oricare
dintre expresii este fals, AND va returna valoarea FALSE. Acest operator a fost
utilizat n exemplul (8).
Operatorul OR este utilizat pentru nsumarea unei serii de condiii. Cnd cel
puin una dintre condiii este adevrat, OR returneaz valoarea TRUE.
Operatorul NOT
n cazul aplicrii unei condiii care are valoarea TRUE, operatorul NOT o va
schimba n FALSE. n situaia n care condiia care urmeaz operatorului NOT are
valoarea FALSE, ea va deveni TRUE.
6.3.5. Operatorii pentru mulimi
UNION i UNION ALL
UNION returneaz rezultatele a dou interogri (selecii), mai puin liniile
duplicate. UNION ALL returneaz rezultatele tuturor interogrilor (seleciilor),
mai puin liniile duplicate.
163

Universitatea SPIRU HARET

INTERSECT
Operatorul INTERSECT (intersecie) returneaz numai liniile comune gsite
n ambele interogri (selecii).
MINUS
MINUS (cea de DIFERENA) returneaz liniile din prima interogare
(selecie) care nu fac parte din a doua interogare (selecie).
6.3.6. Ali operatori, IN i BETWEEN
Cei doi operatori IN (n) i BETWEEN asigur folosirea unei forme scurte
pentru funcii diverse.
SQL>
SELECT *
FROM MATERIALE
WHERE Mat IN (Cherestea, Tabla);
(13)
SQL>
SELECT *
FROM MATERIALE
WHERE Pret_u BETWEEN 140000 AND 170000;
(14)
6.4. Funcii n SQL
Caracteristicile generale ale funciilor
Funciile din SQL permit executarea calculului sumei pe o coloan sau
conversia tuturor caracterelor unui ir n litere mari. Ele se clasific n:
Funcii pentru calculul totalurilor.
Funcii pentru data calendaristic i or.
Funcii aritmetice.
Funcii caracter.
Funcii de conversie.
Funcii diverse.
Aceste funcii dezvolt capacitatea de manipulare a informaiilor regsite pe
baza funciilor de baz ale SQL. Primele cinci funcii, COUNT, SUM, AVG, MAX
i MIN, sunt funcii pentru calculul totalurilor i sunt definite n standardul ANSI.
6.4.1. Funcii pentru calculul totalurilor
Aceste funcii se mai numesc funcii de grup. Ele returneaz o valoare bazat
pe valorile unei coloane.
Funcia COUNT returneaz numrul de linii care respect condiia din
clauza WHERE. SQL>
SELECT COUNT(*)
FROM MATERIALE
WHERE Pret_u < 140000;
(15)
Nr. nreg
4
6
7

Cod
21123
31221
41124

Mat
Tabla
Cot
Con

UM
kg
kg
kg

164

Universitatea SPIRU HARET

Cant
1221
1550
15500

Pret_u
120000
120000
130000

Funcia SUM returneaz suma tuturor valorilor dintr-o coloan.


Pentru tabelul MATERIALE, dac se calculeaz suma preurilor unitare
pentru materialele date, se va scrie:
SQL>
SELECT SUM (Pret_u) Total
FROM MATERIALE;
(16)
Total
980000
Funcia SUM are efect numai asupra cmpurilor numerice.
Funcia AVG calculeaz valoarea medie a unei coloane.
Funcia MAX returneaz valoarea maxim dintr-o coloan numeric a
tabelului.
Funcia MIN opereaz n acelai mod ca MAX, cu excepia faptului c
returneaz cea mai mic valoare dintr-o coloan.
Funcia VARIANCE are ca rezultat dispersia, adic ptratul unei deviaii
standard i opereaz numai cu numere sau cu variabile de tip numeric.
Funcia STDDEV calculeaz abaterea sau deviaia standard a unei coloane
de numere (sau variabile numerice).
Pentru aceste funcii se prezint un exemplu care le nglobeaz pe toate.
SQL> SELECT COUNT (*)
AVG (Pret_u)
MIN (Pret_u)
MAX (Pret_u)
STDDEV (Pret_u)
VARIANCE (Pret_u)
FROM MATERIALE;
(17)
6.4.2.Funcii dedicate pentru dat calendaristic i or
Funcia ADD_MONTHS (Adaug luni) adaug un numr de luni la o dat
calendaristic specificat n cadrul sau n afara instruciunii SELECT. Funcia
opereaz cu tipuri de dat caracter sau numeric, nsoit de o pereche de funcii
ajuttoare, TO CHAR i TO DATE.
Funcia LAST_DAY ntoarce ca rezultat ultima zi a unei luni specificate.
MONTHS_BETWEEN (Lunile dintre)
Funcia se folosete pentru a afla cte luni sunt ntre luna x i luna y.
Funcia NEW_TIME (Ora nou) servete dac se dorete a se corecta ora n
funcie de ora unui anumit teritoriu.
Funcia NEXT_DAY gsete numele primei zile din sptmn egal sau
ulterioar unei date calendaristice specificate.
Funcia SYSDATE (data i ora calendaristic a sistemului) returneaz data i
ora calendaristic a sistemului.
6.4.3. Funcii aritmetice
ABS returneaz valoarea absolut a unui numr indicat. Aceast funcie
transform toate numerele negative n numere pozitive i las numerele pozitive
neschimbate.
CEIL i FLOOR. Prima dintre aceste funcii, CEIL, returneaz cel mai mic
numr ntreg care este mai mare sau egal cu un argument dat. A doua, FLOOR,
face exact operaia invers, returnnd cel mai mare numr ntreg care este egal sau
mai mic cu un argument dat.
165

Universitatea SPIRU HARET

COS, COSH, SIN, SINH, TAN, TANH


Funciile COS, SIN, TAN ofer baza pentru numeroase operaii
trigonometrice. Funciile COSH, SINH, TANH returneaz valorile hiperbolice ale
argumentelor primite ca parametri. Toate aceste funcii opereaz presupunnd c
argumentul de intrare are valoarea n radiani.
EXP (exponenial) servete pentru a ridica constanta e la o putere.
LN i LOG sunt dou funcii se refer la logaritmi. Prima, LN, returneaz
logaritmul natural al argumentului primit ca valoare de intrare, iar LOG
returneaz logaritmul zecimal primit ca argument.
MOD
Standardul ANSI pentru operatorul modulo, %, este implementat uneori ca
funcia MOD. Interogarea:
POWER
Pentru a ridica un numr la putere, se utilizeaz funcia POWER. n aceast
funcie, primul argument este ridicat la puterea exprimat prin al doilea argument.
SIGN
Funcia SIGN returneaz valoarea 1 dac argumentul primit este mai mic
dect 0, 0 dac argumentul primit este egal cu 0 i 1 dac argumentul su este mai
mare dect 0.
SQRT
Funcia SQRT returneaz rdcina ptrat a argumentului primit. Deoarece
rdcina ptrat a unui numr negativ nu este definit, nu putem folosi aceast
funcie pentru numere negative.
6.4.4. Funcii caracter
CHR
Funcia CHR returneaz caracterul echivalent cu numrul folosit ca
argument. Caracterul este returnat n funcie de setul de caractere din numele
cmpului care aparine bazei de date.
CONCAT
Funcia CONCAT este echivalent semnului // (concatenare).
INITCAP
Aceast funcie configureaz un cuvnt astfel: prima liter din cuvnt este
liter mare, iar toate celelalte sunt caractere mici.
LOWER i UPPER
LOWER modific toate caracterele n litere mici, iar UPPER realizeaz
operaia invers.
LPAD i RPAD
Aceste dou funcii primesc minim dou i maxim trei argumente. Primul
este irul de caractere cu care trebuie s opereze. Al doilea argument este caracterul
de umplere al spaiilor adugate. Al treilea argument are ca valoare prestabilit
spaiu sau poate fi un singur caracter sau un ir de caractere.
LTRIM i RTRIM
Aceste funcii primesc unul sau dou argumente. Primul argument este un ir
de caractere. Al doilea argument opional este un caracter sau un ir de caractere
sau are valoarea prestabilit spaiu. Dac pentru al doilea argument se utilizeaz o
valoare diferit de spaiu, aceste funcii de aliniere vor alinia respectivul caracter n
acelai mod n care aliniaz i spaiile.
166

Universitatea SPIRU HARET

REPLACE
Funcia REPLACE execut operaiuni de nlocuire. Din cele trei argumente
ale sale, primul este irul care trebuie cutat. Al doilea argument este cheia de
cutare. Ultimul argument este irul opional de nlocuire. Dac al treilea argument
lipsete sau este NULL, toate secvenele identice cu cheia de cutare din irul
respectiv sunt eliminate i nu sunt nlocuite cu nimic.
SUBSTR
Aceast funcie are trei argumente i permite preluarea unei pri din irul
destinaie. Primul argument este irul destinaie. Al doilea argument este poziia
primului caracter ce trebuie afiat. Al treilea argument semnific numrul de
caractere care trebuie tiprite la ieire.
TRANSLATE
Funcia TRANSLATE primete, de asemenea, trei argumente. Primul este irul
destinaie. Apoi, este irul FROM, urmat de irul TO. Elementele irului destinaie, care
sunt identice cu irul FROM, sunt nlocuite cu elementele corespondente din irul TO.
INSTR
Se folosete pentru a gsi ntr-un ir un anumit caracter. Primul argument al
acestei funcii este irul destinaie. Al doilea argument este caracterul care trebuie gsit.
Urmtoarele dou argumente sunt numere ce reprezint locul de unde ncepe cutarea
n ir i, respectiv, al ctelea element este cel identic cu caracterul ce trebuie afiat.
LENGH
Funcia LENGH returneaz lungimea singurului argument (cmp) caracter pe
care l primete.
FUNCII DE CONVERSIE
Sunt trei funcii de conversie care pun la dispoziie o metod rapid de
convertire a unui tip de dat n alt tip de dat.
TO_CHAR
Modul uzual de operare a acestei funcii este conversia unui numr ntr-un
caracter. Alte implementri ale limbajului folosesc aceast funcie pentru a converti
n caracter alte tipuri de date, ca de exemplu DATE.
TO_NUMBER
Aceast funcie este perechea funciei TO_CHAR i primete ca parametru
un ir pe care l convertete ntr-un numr.
6.5. Clauze utilizate n SQL
Se prezint mai nti sintaxa general a instruciunii SELECT:
SELECT [DISTINCT / ALL] { *
| { [schema.] {tabel | vedere | instantaneu }.*
| expresie} [AS] c_alias]
[, {[schema.] {tabel | vedere | instantaneu}.*
| expresie} [AS] c_alias] ]..}
FROM [schema.] {tabel | vedere | instantaneu} [@ dblink] [t_alias]
[,[schema.] {tabel | vedere | instantaneu} [@ dblink] [t_alias]
[WHERE condiie]
[GROUP BY expresie [, expresie][HEAVING condiie] ]
[{UNION | UNION ALL | INTERSECT | MINUS} SELECT comanda]
[ORDER BY {expresie | poziie } [ASC | DESC]
[, {expresie | poziie} [ASC | DESC] ] ]
(18)
167

Universitatea SPIRU HARET

Clauza WHERE
Utiliznd doar SELECT i FROM, aciunea este limitat la returnarea tuturor
liniilor din tabel. Exist ns cuvntul cheie WHERE pentru stabilirea de selecii
asupra tabelului (exemplele 8 i 9).
Clauza STARTING WITH
Clauza STARTING WITH este o completare la clauza WHERE i opereaz
la fel ca LIKE (<exp>%).
Clauza ORDER BY
Cnd apare necesitatea ca rezultatele interogrii s fie prezentate ntr-o
anumit ordine, se utilizeaz clauza ORDER BY. Instruciunea SELECT FROM
ofer o list, iar n cazul n care nu s-a definit o cheie primar, interogarea va
aprea n ordinea introducerii nregistrrilor. Clauza ORDER BY ofer o metod
de ordonare a rezultatelor operaiilor. De exemplu, dac se dorete ordonarea listei
materialelor dup Cod, se procedeaz n modul urmtor:
SQL> SELECT *
FROM MATERIALE
ORDER BY Cod;
(19)
Clauza GROUP BY
SQL>
SELECT Mat, SUM (Pret_u) Total
FROM MATERIALE
GROUP BY Mat;
(20)
Clauza HAVING
SQL>
SELECT Mat, Pret_u
FROM PERSONAL
GROUP BY Mat
HAVING Pret_u < 140000;
(21)
Clauza HAVING permite folosirea de funcii totalizatoare ntr-o instruciune
de comparare, asigurnd pentru funciile totalizatoare ceea ce WHERE asigur
pentru nregistrrile individuale.
6.6. Jonciuni
Noiuni i obiective ale jonciunilor
O caracteristic de baz a SQL-ului este capacitatea de grupare i manipulare
a datelor din mai multe tabele. Tabelele foarte complexe care conin multe cmpuri
i multe nregistrri sunt mult mai greu de ntreinut dect cele mici i specifice. Or,
tocmai acest avantaj l ofer funcia JOIN din SQL. Jonciunile pe care le pune la
dispoziie SQL-ul sunt
Jonciuni externe.
Jonciuni stnga.
Jonciuni dreapta.
Echi-jonciuni.
Non-echi-jonciuni.
Jonciunea unui tabel cu el nsui (auto-jonciunea).
Regula de baz a jonciunilor este aceea c ele lipesc tabelele. Pentru
tabelele care intr n jonciune se folosesc alias-uri pentru a le deosebi.
Diferena ntre echi-jonciune i non-echi-jonciune este aceea c prima
utilizeaz semnul egal n instruciunea WHERE, n timp ce non-echi-jonciunea
folosete oricare alt semn de comparaie n afar de egal.
168

Universitatea SPIRU HARET

Exist, de asemenea, jonciuni externe care sunt complementare jonciunilor


interne. Jonciunea intern este aceea n care liniile unui tabel sunt combinate cu
liniile altui tabel, reprezentnd un numr total de linii dat de produsul numrului de
linii din fiecare tabel, linii folosite pentru a determina rezultatul unei clauze WHERE.
O jonciune intern are ca format general:
SQL>
SELECT alias1.cmp1, [alias1.cmp1,...],
alias2.cmp2, [alias2.cmp2,...]
FROM TABEL alias1
JOIN TABEL2 ON TABEL2.cmp <condiie>
(22)
O jonciune extern are aceeai form, numai c naintea cuvntului cheie
JOIN apare RIGHT OUTHER sau LEFT OUTHER.
Jonciunea unui tabel cu el nsui se comport ca JOIN-ul pe dou tabele diferite.
Subinterogri
O subinterogare este o interogare ale crei rezultate sunt transmise ca
argumente unei alte interogri. Ele sunt elementele de legtur ntre mai multe
interogri.
Imbricarea subinterogrilor
Imbricarea este operaia de lipire a mai multor subinterogri n serie, forma
general fiind:
SQL> SELECT *
FROM TABEL
WHERE
(23)
(subinterogare1(subinterogare2(subinterogare3);
Exist i subinterogri corelate, care permit folosirea unei referine externe.
6.7. Instruciuni de manipulare a datelor
Instruciunea INSERT
Instruciunea INSERT (Insereaz) este asociat operaiei de introducere a
datelor ntr-o baz de date. Ea poate fi: INSERT...VALUES i
INSERT...SELECT
Instruciunea INSERT...VALUES este utilizat la introducerea datelor ntrun tabel, nregistrare cu nregistrare. Este util pentru operaii care presupun lucrul
cu tabele care au nregistrri puine.
Forma general a comenzii este:
SQL>
INSERT INTO TABEL
(col1, col2, col3,)
VALUES (valoare1, valoare2, valoare3,)
(24)
Funcia principal a acestei instruciuni este adugarea unei nregistrri ntr-un
tabel folosind coloanele menionate i valorile corespondente. La inserarea datelor
ntr-un tabel prin folosirea acestei instruciuni, trebuie respectate urmtoarele reguli:
valorile folosite trebuie s aib acelai tip de dat ca i cmpurile n care
sunt adugate;
dimensiunea datei introduse trebuie s fie mai mic dect dimensiunea
coloanei. De exemplu, un ir de 25 de caractere nu poate fi scris ntr-un cmp de
10 caractere;
169

Universitatea SPIRU HARET

localizarea datei n lista VALUES trebuie s corespund locaiei din lista


de coloane n care este adugat (adic, prima valoare trebuie s fie introdus n
prima coloan, a doua
Inserarea valorilor NULL
Cnd este creat o coloan, i se poate atribui cteva caracteristici. Una dintre
aceste caracteristici este aceea c respectiva coloan ar putea avea (sau nu)
capacitatea de a conine valori NULL. O valoare NULL nseamn c valoarea este
vid. Nu este nici zero, n cazul unui ntreg, nici spaiu, n cazul unui ir. n locul
acestora nu exist nici un fel de dat n coloana nregistrrii respective. Cnd
coloana are definiia NOT NULL, nseamn c acestei coloane nu i se permite s
conin valori NULL, deci ea trebuie s conin o valoare.
Instruciunea INSERT este anulat n cazul n care aceast regul nu este
respectat i se recepioneaz un mesaj de descriere a erorii aprute.
Inserarea valorilor unice
Multe sisteme de gestiune a bazelor de date permit crearea unei coloane cu
atributul UNIQUE. Aceasta nseamn c, n tabelul respectiv, valorile din coloana
respectiv trebuie s fie completate n mod unic i, ca atare, nu pot aprea mai mult
de o singur dat. Aceast configurare poate genera probleme la inserarea sau
actualizarea valorilor ntr-o baz de date existent.
Instruciunea INSERTSELECT
Instruciunea INSERTVALUES este util la adugarea nregistrrilor
simple ntr-un tabel al bazei de date, dar are evident restriciile sale. n cazul
tabelelor cu nregistrri foarte numeroase, este mult mai indicat utilizarea
instruciunii INSERTSELECT. Aceast instruciune permite utilizatorului s
copieze ntr-un tabel informaii dintr-un alt tabel sau grup de tabele. Deseori,
pentru creterea performanei sunt create tabele de cutare. Tabelele de cutare pot
conine date care cuprind mai multe tabele din mai multe baze de date.
Sintaxa unei instruciuni INSERTSELECT este urmtoarea:
SQL>
INSERT INTO TABEL (col1, col2,)
SELECT Col1, Col2,
FROM TABEL
WHERE condiie de cutare;
(25)
Este important de reinut c ieirea unei interogri standard de tip SELECT
devine intrare ntr-un alt tabel al unei baze de date. Aceleai reguli se aplic n
cazul instruciunii INSERT...VALUES.
Sunt cteva reguli care trebuie respectate la folosirea instruciunii
INSERT...SELECT:
instruciunea SELECT nu poate selecta linii din tabelul care a fost inserat;
numrul de coloane din instruciunea INSERT...SELECT trebuie s fie
egal cu numrul de coloane returnate de instruciunea SELECT;
tipurile de date ale coloanelor din instruciunea INSERT SELECT trebuie
s fie aceleai cu tipurile de date ale coloanelor returnate de instruciunea SELECT.
Instruciunea UPDATE
Instruciunea UPDATE (Actualizeaz) are rolul de a actualiza valorile unui
tabel, dar este folosit i pentru modificarea valorilor din nregistrrile existente.
Sintaxa instruciunii UPDATE este urmtoarea:
170

Universitatea SPIRU HARET

SQL>
UPDATE TABEL
SET Col1 = Valoare1
[Col2 = Valoare2]
WHERE condiie de cutare
(26)
Aceast instruciune verific n primul rnd clauza WHERE. Pentru toate
nregistrrile din tabelul dat n care clauza WHERE este evaluat la valoarea
TRUE., valoarea corespunztoare este actualizat.
Instruciunea DELETE
La fel de frecvent ca i adugarea de date ntr-o baz de date, apare
necesitatea de tergere a altor date pe baza unei anumite operaii din program.
Sintaxa instruciunii DELETE (terge) este urmtoarea:
SQL>
DELETE FROM TABEL
WHERE condiie
(27)
Instruciunea DELETE are urmtoarele caracteristici:
Instruciunea DELETE nu poate fi folosit pentru tergerea unei valori
dintr-un cmp individual (pentru aceasta se folosete instruciunea UPDATE).
Instruciunea DELETE terge nregistrri complete dintr-un singur tabel.
Ca i instruciunile INSERT i UPDATE, operaia de tergere a
nregistrrilor dintr-un singur tabel poate determina apariia unor probleme de
integritate referenial n cadrul altor tabele. Acest aspect trebuie reinut atunci
cnd se modific datele dintr-o baz de date.
Prin folosirea instruciunii DELETE se pot terge numai nregistrri din
tabel, nu i tabelul. Pentru eliminarea unui tabel se folosete instruciunea DROP
TABLE.
CREATE TABLE construiete un tabel nou n formatul dat, iar DROP
TABLE terge tabelul respectiv. Instruciunea DROP TABLE elimin un tabel
pentru totdeauna, n timp ce DELETE FROM <TABEL> terge numai
nregistrrile dintr-un tabel.
6.8. Crearea i ntreinerea tabelelor
Instruciunea CREATE DATABASE are sintaxa general:
SQL> CREATE DATABASE NUME_BAZ_DE _DATE
(28)
Instruciunea CREATE TABLE are sintaxa general:
SQL> CREATE TABLE NUME_TABEL
(Cmp1 tip_de_dat [NOT NULL],
Cmp2 tip_de_dat [NOT NULL],
Cmp3 tip_de_dat [NOT NULL])
(29)
Instruciunea ALTER TABLE
n cazul n care baza de date nu poate memora toate datele necesare,
instruciunea ALTER TABLE permite administratorului de sistem sau
proiectantului s modifice structura unui tabel.
Sintaxa instruciunii ALTER TABLE este urmtoarea:
SQL> ALTER TABLE NUME_TABEL
<ADD Nume_coloan tip_de dat; |
MODIFY Nume_coloan tip_de dat;>
(30)
171

Universitatea SPIRU HARET

Instruciunea ALTER TABLE are o serie de restricii, cum sunt:


instruciunea nu poate fi utilizat pentru adugarea sau tergerea unor
cmpuri din baza de date;
se poate utiliza pentru modificarea atributului din NOT NULL n NULL
pentru un cmp al bazei de date, dar nu i n sens invers;
modificarea unui cmp din NULL n NOT NULL poate fi eficient fcut
cu aceast instruciune numai cnd cmpul respectiv nu conine valori NULL.
Instruciunea DROP TABLE servete pentru eliminarea unui tabel dintr-o
baz de date. Odat executat comanda DROP TABLE, nu se poate reveni asupra
ei. Comanda DROP TABLE este folosit de obicei dup ce s-a creat un tabel
temporar. Comanda DROP TABLE are sintaxa urmtoare:
SQL> DROP TABLE NUME_TABEL;
(31)

172

Universitatea SPIRU HARET

7. ELEMENTE FUNDAMENTALE
ALE SERVERELOR DE BAZE DE DATE

7.1. Arhitectura Client/Server


ntr-o reea de calculatoare i de comunicaii dintr-o organizaie economic,
unul dintre modelele de baz pe care se fundamenteaz funcionarea reelei l
constituie modelul client/server, susinut de arhitecturi adecvate n funcie de
numrul de entiti componente ale lanului de lucru n reea a unei aplicaii ale
crei elemente prezentare, procesare i date se gsesc pe acelai calculator sau
sunt distribuite pe calculatoare diferite (n varianta standard, datele sunt stocate pe
server, procesarea este divizat ntre server i client, iar prezentarea aparine
clientului). Aceste arhitecturi client/server pot fi cu dou entiti (two-tier), cu trei
entiti (three-tier) sau cu mai multe entiti (n-tier). Toate calculatoarele care se
gsesc ntre server i client alctuiesc ceea ce se denumete generic middleware
(mediul de mijloc).
Serverul, ca noiune de baz, prezint dou accepiuni:
un calculator dedicat pe care este instalat un soft pentru gestionarea
accesului ntr-o reea local de calculatoare (LAN), inclusiv gestionarea accesului
la resursele din reea din partea calculatoarelor staii de lucru (workstations);
un program (conceput pe un model de proces distinct) sau un calculator
care rspunde cererilor (requests) adresate de entitatea denumit client; clientul, n
acest caz, este un proces care are nevoie de un serviciu pe care trebuie s i-l
furnizeze serverul.
Ca urmare, noiunea de server trebuie considerat n reea sub cele dou
aspecte hard-soft (dualitatea hard-soft). Cea de-a doua accepiune prezentat mai sus
pentru server caracterizeaz arhitectura client/server ce permite divizarea procesului
specific aplicaiei n dou componente distincte, denumite client ( front-end ) i
server ( back-end ). De regul, componenta client este reprezentat de un
calculator mai puin pretenios, independent, ce se prezint utilizatorului cu toate
resursele la dispoziie. Spre deosebire de aceasta, componenta server este un sistem
de calcul (microcalculator puternic, minicalculator sau un calculator mare mainframe) cu caracteristici tehnologice maximale momentului implementrii n
mediu distribuit (gestionare date, partajare resurse ntre clieni, securitate sporit,
administrare avansat n cadrul reelei de calculatoare i de comunicaii).
Cu ajutorul arhitecturii client-server se obin: conectarea n reea a mai multe
calculatoare de diferite tipuri (mainframe i microcalculatoare), tratarea unitar a
bazelor de date aflate pe diferite calculatoare din reea, colaborarea categoriilor de
utilizatori (utilizatori finali, administratori ai bazelor de date, programatori).
173

Universitatea SPIRU HARET

ntre entitatea client i cea de server se poart un dialog permanent sau n


anumite momente, de tipul cerere (request) - rspuns (response). Clientul, prin
adresarea cererii de serviciu ctre server, interogheaz baza de date ce se gsete
stocat pe server. Serverul gestioneaz baza de date i rspunde interogrii adresate
de client. n dialogul client-server, pot exista urmtoarele cazuri: client-server, client
pasiv i server pasiv. Cazul cu client pasiv se ntlnete atunci cnd se realizeaz
conexiuni cu prelucrare gazd (host procesing) pe un server de tip mainframe, iar
clientul este un terminal cu rol neimportant n execuia operaiilor necesare efecturii
dialogului. Cazul cu server pasiv se constat atunci cnd cele mai multe aplicaii se
efectueaz de ctre client, serverul ndeplinind doar rolul de server de fiiere (File
Server) i/sau server de imprimare (Print Server). Cel mai eficient este cazul clientserver cnd activitile sunt divizate n mod echilibrat ntre client i server.
Exist i situaia n care cele dou entiti, server i client, sub aspect software,
pot coexista pe acelai calculator. Dac cele dou entiti sunt instalate pe acelai
calculator, atunci acest calculator are instalat un sistem de operare pentru multiprocesare, deoarece clientul i serverul reprezint procese distincte. n reeaua de
calculatoare i de comunicaii, un client poate adresa cereri ctre mai multe servere.
De asemenea, un server poate rspunde la cererile adresate de mai muli clieni.
n evoluia sa, arhitectura client-server a cunoscut mai multe generaii:
Generaia I, care se caracterizeaz prin faptul c server-ul stocheaz baza
de date relaional, iar clientul stocheaz i execut aplicaia client. Cererile SQL
sunt formulate de aplicaia client ctre SGBDR de pe server. Execuia acestor
cereri de interogare i transmiterea rspunsului se efectueaz de ctre entitatea
server. Entitatea client poate executa urmtoarele apeluri la transport:
- SendRequest, ceea ce nseamn: clientul anun serverul asupra operaiilor
ce urmeaz a fi executate;
- ReceiveReply, prin care se asigur recepionarea rspunsului de la server de
ctre client.
n acelai timp, la entitatea server, apelurile specifice sunt urmtoarele:
- ReceiveRequest, care semnific faptul c entitatea server recepioneaz
cereri de interogare de la entitatea client ;
- SendReply, care nseamn c serverul transmite rspunsul ctre entitatea
client, rspuns ce corespunde cererii de interogare adresate anterior.
Generaia a II-a, caracteristic anilor 90 ai secolului XX, orientat pe
obiecte. Entitatea server asigur mai multe clase de servicii clienilor: execuia
aplicaiilor; interfee grafice destinate dialogului cu utilizatorul; accesul la fiierele
i bazele de date administrate de SGBDR de pe server.
Exist mai multe tipuri de client-server, n funcie de importana acordat
unei sau alteia dintre componentele triadei stocare prelucrare prezentare:
1) client - server de prezentare, n care un proces este destinat funciei de
asigurare a dialogului cu utilizatorul, iar celelalte procese considerate realizeaz
gestionarea datelor i execuia aplicaiilor;
2) client - server de date, n care utilizatorul are acces la datele administrate
de server utiliznd o aplicaie-client, cu ajutorul cererilor de interogare SQL;
3) client - server de proceduri pentru prelucrare, n care aplicaia-client
poate realiza controlul execuiei procedurilor stocate pe server prin intermediul
unei interfee specializate.
174

Universitatea SPIRU HARET

Cel mai rspndit este tipul combinat client-server de date, de prezentare i


de proceduri pentru prelucrare care prezint urmtoarele componente (fig.7.1):
clienii, care se ocup cu gestionarea codului aplicaiei client i care dispun
de interfae interactive i prietenoase cu utilizatorii finali;
serverul, care stocheaz baza de date, gestioneaz conectarea i accesul la
baza de date, gestioneaz logica aplicaiei, asigur securitatea bazei de date;
reeaua, care asigur conectarea i comunicarea dintre clieni i server (1)
i ntre servere (2).
n general, aplicaiile client-server pot fi aplicaii cu baze de date distribuite,
aplicaii de pot electronic, aplicaii groupware (ce permite unui grup de
utilizatori dintr-o reea s colaboreze la realizarea unui anumit proiect i care ofer
servicii de comunicaii (e-mail), de planificare i de administrare a proiectelor, de
elaborare n comun a documentelor de diferite tipuri text, multimedia) etc.
Avantajele utilizrii arhitecturii client-server sunt multiple, dintre acestea
menionndu-se: administrarea centralizat, de pe server, a bazei de date;
micorarea dimensiunilor aplicaiilor; reducerea traficului n reea; securitate
sporit a bazelor de date stocate pe server; manipularea de ctre utilizatori,
conform drepturilor de acces, a procedurilor stocate.
n aplicaiile de baze de date pe Web se utilizeaz arhitectura cu trei niveluri:
client, aplicaie i date. Nivelul client permite unui utilizator s comunice cu baza
de date prin Web, cu ajutorul unei interfee specializate asigurate de ctre browserul Web la dispoziie.

Stocare baz de date


Conectare i acces la baza de date
Gestionare logic aplicaie
Asigurare securitate baz de date

Gestionare cod aplicaie client


Interfa interactiv cu
utilizatorul final

Fig.7.1. Arhitectura client-server de date, de prezentare


i de proceduri pentru prelucrare

Nivelul aplicaie reprezint nivelul cu aplicaii la ndemna utilizatorului


final, pe serverul Web care, prin intermediul protocolului HTTP, recepioneaz
cererile clienilor, le prelucreaz i le transmite ctre o alt aplicaie sau/i ctre
nivelul de date. Nivelul date conine sistemul de gestiune a bazelor de date (SGBD),
care conin, de regul, date multimedia.
175

Universitatea SPIRU HARET

7.2. Serverul de baze de date Microsoft SQL Server


Produsul Microsoft SQL Server face parte din categoria serverelor de baze
de date, care lucreaz cu aplicaii de tipul client-server i care presupune acces
concurent la o anumit baz de date. Referirile se efectueaz la versiunea Microsoft
SQL Server2000 care a fost precedat de versiunea Microsoft SQL Server 7.0. n
momentul redactrii prezentei lucrri, este anunat versiunea Microsoft SQL
Server 2005.
Stocarea informaiilor pe serverul de baze de date Microsoft SQL Server se
face n baze de date, fiiere i grupuri de fiiere. Microsoft SQL Server dispune de
un sistem de securitate propriu, pe baz de identificatori i conturi de utilizatori ai
bazelor de date.
SQL Server asigur crearea i gestionarea rolurilor la nivel de server, la
nivelul unei baze de date i la nivel de aplicaie; de asemenea, asigur permisiuni,
care pot fi alocate utilizatorilor i rolurilor. Rolurile SQL Server asigur gruparea
numelor utilizatorilor bazelor de date (grupuri Windows, utilizatori Windows sau
identificatori SQL Server). Atribuirea unui identificator pentru rol la nivel de
server se efectueaz cu ajutorul SQL Enterprise Manager. Rolurile la nivel de
aplicaie asigur aplicarea permisiunilor la un nivel mai nalt dect nivelul pe care
se gsete fiecare utilizator. Atunci cnd o aplicaie activeaz un rol la nivel de
aplicaie, se produce suspendarea tuturor permisiunilor utilizatorului. Activarea
rolurilor necesit parole. Fiecare baz de date cuprinde roluri (exist nou roluri
fixe sau predefinite i pot exista roluri ale utilizatorului) pentru care exist
proceduri. Fiecare rol al unei baze de date acord utilizatorilor un numr de
permisiuni i capabiliti. Numele rolului este necesar s fie unic la baza de date.
Apartenena la un rol fix al unei baze de date nu are legtur cu permisiunile
acordate pentru o alt baz de date.
SQL Server permite realizarea salvrilor de siguran (backup).
SQL Server este nsoit de utilitare i instrumente care asigur urmtoarele
servicii:
1. MSSQLServer, ce reprezint serverul propriu-zis de baze de date;
2. MSSearch, care asigur indexarea cmpurilor de tip text care opereaz sub
SQL Server;
3. SQLServerAgent, ce realizeaz planificarea operaiilor, gestionarea evenimentelor, replicarea, generarea avertismentelor;
4. MSDTC (Microsoft Distributed Transaction Coordinator), adic coordonatorul tranzaciilor distribuite pe mai multe servere;
5. MSSQLServerOLAPService, ce asigur serviciile de analiz a datelor prin
OLAP;
6. MSSQLServerADHelper, ce realizeaz integrarea activ a directoarelor
pentru SQL Server.
Instana n SQL reprezint o copie independent a unui server de baze de
date pe un calculator din categoria platformelor Microsoft Windows. Microsoft
SQl Server permite execuia a cel mult 16 astfel de instane. Instanele SQL Server
pot fi prestabilite (este acceptat o singur instan prestabilit pe un anumit
calculator) sau denumite (acele instane crora li s-a dat un nume la instalare).
Dou instane denumite de pe acelai calculator nu sunt acceptate cu acelai nume.
176

Universitatea SPIRU HARET

Firma Microsoft a realizat controlul fiecrui serviciu prin mai multe metode
realizabile prin utilitare i instrumente asociate SQL Server (instalate ntr-o copie
unic, indiferent de numrul de instane instalate ale SQL Server). Utilitarele
asociate SQL Server sunt urmtoarele:
SQL Server Books OnLine, ce reprezint manuale electronice sub form de
pagini HTML (de exemplu: Getting Started, SQL Server Architecture, Creating
and Maintaining dataBases, Creating and Using Data Warehouses etc.).
SQL Server Service Manager, care este un utilitar pentru controlul
serviciilor pentru SQL Server (SQL Server, MSDTC, SQL ServerAgent i
MSSearch).
Client Network, ce reprezint un utilitar care deservete procesul de
conectare a unui calculator client la SQL Server).
Server Network, care este un utilitar pentru indicarea bibliotecilor de reea
pe care le poate utiliza SQL Server (pentru bibliotecile ce conin date confideniale
la care nu se permite accesul, se execut criptarea de ctre server a cilor de
conectare la bibliotecile respective).
SQL Server Query Analyser, care este utilitarul destinat executrii
interogrilor sau a procedurilor memorate Transact-SQL.
SQL Server Enterprise Manager, ce reprezint un utilitar de tipul MMC
(Microsoft Management Console), adic consol de Management Microsoft ce
asigur interfaa grafic de dezvoltare i administrare din SQL Server.
SQL Server Profiler, ce reprezint utilitarul pentru monitorizarea ntregii
activiti executate de SQL Server.
Utilitarele prezentate mai sus se gsesc n meniul Start al SQL Server. n
afar de aceste utilitare de baz, au fost realizate instrumente pentru conectare,
pentru diagnosticarea serverului i pentru ntreinere.
Noiunea de replicare a fost explicat parial n capitolul destinat SGBD
Microsoft Access. Procesul de replicare n SQL Server este un proces complex ce
utilizeaz un scenariu de tip editor-abonat la care sunt asociate articole i
publicaii. Abonaii sunt calculatoarele utilizatorilor datelor. Un sistem SQL Server
poate juca n scenariul de tip editor-abonat unul, dou sau trei roluri din mulimea
de roluri {editor, abonat, distribuitor}. Rolul de distribuitor presupune
recepionarea tuturor modificrilor efectuate de abonai sau editori, memorarea
acestor date i apoi trimiterea lor la editori sau abonai, la un anumit moment.
Articolul reprezint un tabel sau o mulime de date dintr-un tabel, obinut prin
partiionare. Publicaia este ansamblul mai multor articole combinate. Articolele i
publicaiile pot fi primite de abonai prin efectuarea de abonamente. Abonamentele
pot fi configurate n abonamente de intrare (configurate la nivelul fiecrui abonat)
i abonamente de ieire (configurarea abonamentului se produce simultan cu
crearea publicaiei).
Replicarea asigur un mediu de lucru ce faciliteaz duplicarea i distribuirea
mai multor copii (replici) ale acelorai date, n mai multe baze de date din reea (n
mai multe locaii). n distribuirea datelor prin aceast metod se au n vedere
autonomia locaiei, consistena tranzacional (care nu trebuie s afecteze
consistena datelor) i latena distribuirii (ntrzierea).
SQL Server permite utilizarea urmtoarelor metode de distribuire a datelor [60]:
177

Universitatea SPIRU HARET

replicarea cu combinare (fiecare locaie i poate modifica copia local a


datelor replicate, astfel nct editorul combin modificrile primite de la aceste
locaii);
replicarea copiilor integrale (prin transferul unei copii de ansamblu a
datelor replicate de la editor la abonai);
replicarea tranzacional (adic tranzaciile sunt copiate de pe serverul
editor la abonai, fr existena reversului de la abonai la editor);
abonarea cu actualizare (la care acualizarea poate fi imediat, cu fir de
ateptate sau combinat imediat i cu fir de ateptare);
replicarea copiilor integrale cu actualizare la abonai (prin aceasta,
abonatul nu este necesar s se afle n contact permanent cu editorul);
replicarea tranzacional cu actualizare la abonai ;
tranzaciile distribuite (cu MSDTC, cu aplicarea simultan a tranzaciilor
la toi abonaii).
Replicarea este asigurat de cinci ageni: agent de distribuie, agent de citire
din jurnalele de tranzacii specifice tuturor bazelor de date publicate, agent de
combinare, agent de copiere i agent de citire din firul de ateptare.
Datele pot fi publicate pe Internet prin mai multe metode. Se apreciaz
([60],[67]) c una dintre cele mai sigure metode este tehnologia reelei private
virtuale, VPN (Virtual Private Network). Prin VPN se pot conecta dou reele prin
utilizarea Internetului, cu protocoalele specifice, folosind servere proxy
(intermediare) ctre serverele SQL.
SQL Server folosete patru baze de date:
- master, ce conine configurrile SQL Server-ului, precum i date care
privesc utilizatorii bazei de date;
- model, ce reprezint o baz de date model, care se duplic de fiecare dat
cnd utilizatorul creeaz o baz de date nou;
- tempdb, ce este o baz de date care stocheaz tabele temporare i
rezultatele intermediare ale unor interogri;
- msdb, ce este utilizat de SQLServerAgent pentru memorarea datelor cu
privire la sarcinile periodice (salvarea bazei de date, salvarea jurnalului etc).
O baz de date SQL Server este organizat pe mai multe niveluri:
componente logice ce sunt transparente utilizatorilor; tabele (tables) care conin
nregistrri ale bazei de date; vederi (views); indeci (indexes); proceduri stocate
(procedures); declanatori (triggers). Fizic, o baz de date include cel puin dou
fiiere (fiier primar de date, primary data file, cu date i referine asupra celorlalte
fiiere ale bazei de date; fiierul jurnal care nregistreaz toate modificrile
efectuate n baza de date). n cazul bazelor de date foarte mari, pot exista i fiiere
secundare (secondary data file).
La fiecare instalare a produsului Microsoft SQL Server sunt generate mai
multe baze de date: master, model, tempdb i msdb, precum i baze de date
utilizator (pubs, Northwind).
Metodele de creare a unei baze de date Microsoft SQL Server 2000 sunt
urmtoarele:
Database Creation Wizard.
SQL Server Enterprise Manager.
Cu ajutorul instruciunii CREATE DATABASE.
178

Universitatea SPIRU HARET

Crearea unei noi baze de date este echivalent cu execuia unei copii a bazei
de date model, prin extinderea pn la dimensiunea dorit, spaiul suplimentar fiind
completat cu pagini goale. Baza de date astfel creat utilizeaz fiiere pentru
stocarea fizic a datelor pe discul magnetic.
Salvarea bazelor de date n SQL Server se efectueaz complet, diferenial i
prin salvarea jurnalelor de tranzacii cu ajutorul SQL Server Enterprise Manager
sau cu Transact-SQL (ce va fi prezentat n paragraful urmtor). Copiile de
siguran (backup) servesc pentru o restaurare a bazelor de date n caz de defectri
ale serverului.
SQL Server are pus la punct un scenariu de restaurare a bazelor de date n
caz de dezastre. Se poate realiza recuperare automat sau manual. Recuperarea
automat reprezint un proces care se deruleaz la fiecare pornire a serviciului SQL
Server. Ca urmare, atunci cnd serverul se decupleaz din diferite motive, inclusiv
la avarii, procesul de recuperare automat se pornete la repornirea serverului. La
terminarea acestui proces de recuperare automat, bazele de date rmn ntr-o
form consistent din punct de vedere logic. Pentru recuperarea tuturor bazelor de
date, SQL Server utilizeaz baza de date model, dup care se creeaz baza de date
tempdb, se restaureaz baza de date msdb i, n final, bazele de date ale
utilizatorilor. Recuperarea manual reprezint procesul de recuperare a unei baze
de date a utilizatorului, prin restaurarea unei copii complete a bazei de date (sau
copie diferenial) sau restaurarea uneia sau mai multor copii pentru jurnalul de
tranzacii, n ordinea n care au fost generate. n momentul restaurrii, baza de date
nu trebuie s fie n uz (s nu fie activ comanda USE). Pentru aceasta, trebuie
reperat setul corespunztor de copii de siguran (cu comenzile RESTORE
LABELONLY, RESTORE HEADERONLY, RESTORE FILELISTONLY). n
continuare, se verific dac setul salvat este utilizabil (RESTORE
VERIFYONLY), se restaureaz complet sau difereniat baza de date i jurnalul de
tranzacii. Scenariile de recuperare sunt construite pentru diferite situaii ca
recuperarea datelor dup defectarea unui disc, recuperarea datelor dup pierderea
bazei de date master,
SQL Server asigur, aa cum s-a precizat mai sus, servicii de extragere a
datelor din bazele de date operaionale i de construire a depozitelor de date, dup
care aceste date din depozite sunt supuse analizei de tip OLAP. Acest serviciu este
tratat n capitolul consacrat bazelor de date n tehnologii avansate.
Microsoft SQL Server prezint urmtoarele avantaje:
- portabilitatea capacitatea de a funciona pe o mare varietate de platforme
hardware;
- compatibilitatea modelului de programare cu modelele folosite n ntreaga
gam de sisteme de operare Microsoft Windows (95, 98, 2000, XP);
- optimizarea capabilitilor sale pentru lucrul cu baze de date mari;
- execuia rapid a interogrilor SQL;
- posibilitatea de extragere i analiz a datelor pentru baze de date
multidimensionale;
- facilitatea de integrare cu alte produse software Microsoft.
179

Universitatea SPIRU HARET

7.3. Noiuni privind limbajul Transact_SQL pentru Microsoft SQL Server


Limbajul Transact_SQL, notat prescurtat T_SQL reprezint o variant
(dialect), compatibil pe scar larg cu standardul SQL-92 pentru limbajul
structurat de interogare, SQL (tratat n capitolul anterior) cu care se lucreaz pe
Microsoft SQL Server.
Comenzile T_SQL pot fi grupate, n funcie de nivelurile SQL Server, n
comenzi referitoare la baze de date, la tabele, la vederi (view-uri), la proceduri, la
gestionarea tranzaciilor, la declanatori.
a) Comenzi pentru baze de date
Crearea unei baze de date se face cu instruciunea CREATE. Sintaxa este
urmtoarea:
CREATE DATABASE nume
[ON PRIMARY (FILENAME = nume fiier1. mdf]
[LOG ON (FILENAME = nume fiier2. ldf)]
n care:
nume reprezint numele bazei de date;
ON PRIMARY arat faptul c nume fiier1. mdf reprezint fiierul primar al
bazei de date;
LOG ON specific numele fiierului jurnal prin nume fiier2. ldf.
Datele vor fi regsite n primul fiier, iar informaia pentru registrul de
tranzacii se va regsi n al doilea fiier. Se reamintete faptul c registrul de
tranzacii (fiierul jurnal) pentru o baz de date reprezint zona n care serverul
trateaz modificrile ce au fost efectuate asupra datelor din baza de date.
Exemple:
1) CREATE DATABASE MAT
S-a creat o baz de date denumit MAT, pentru care fiierul primar i fiierul
jurnal sunt generate automat.
2) CREATE DATABASE CLIENTI
ON PRIMARY (FILENAME = c\banca\dbCLIENTI.mdf ).
S-a creat o baz de date cu numele CLIENTI, pentru care fiierul primar de
date este: c\banca\db CLIENTI.mdf , iar fiierul jurnal este creat automat.
Pentru tergerea (eliminarea) unei baze de date se folosete comanda:
DROP DATABASE nume baz de date
Cu ajutorul acestei instruciuni se terge complet baza de date, inclusiv
datele i structura fizic de pe disc.
Exemplu:
DROP DATABASE MAT
b) Comenzi pentru tabele
Crearea unui tabel se face cu comanda CREATE TABLE, cu sintaxa:
CREATE TABLE [nume_baza_date.[proprietar], nume_tabel
(cmp 1 [, cmp 2, cmp 3] , unde fiecare cmp are sintaxa: nume tip dat
[IDENTITY]
[NULLNOT NULL]
{PRIMARY KEY FOREIGN KEY
REFERENCES tabel_ref (cimp_ref)
[ON DELETE{CASCADE NO ACTION}]
[ON UPDATE {CASCADE NO ACTION}]}
180

Universitatea SPIRU HARET

n care:
nume_baza_date - este numele bazei de date din care face parte tabelul;
proprietar este numele utilizatorului ce devine proprietarul tabelului;
nume este numele cmpului (coloanei) din tabel;
tip dat este tipul cmpului (coloanei) din tabel.
Datele n SQL Server 2000 reprezint atribute, variabile, parametri de
procedur, expresii, funcii sau proceduri stocate care returneaz o valoare. Aceste
date sunt incluse n obiectele SQL i pot fi de mai multe tipuri. Prin tipurile de date
sunt definite valorile pe care le poate stoca obiectul respectiv (natura datelor,
dimensiunea valorilor, precizia i scala la valori numerice). Tipurile de date n
SQL Server 2000 sunt tipuri de date de baz (tipurile acceptate de sistem) i tipuri
de date utilizator (tipurile definite n funcie de tipurile de baz, cu unele
caracteristici suplimentare adugate).
Tipurile de date de baz sunt numerice exacte, numerice aproximative, bit,
zecimale, monetare, dat calendaristic, ir de caractere, ir binar, ir de caractere
Unicod, cursor, sql_variant etc.
Tipurile de date numerice exacte sunt ntregi cu urmtoarele dimensiuni:
tinyint (ntregi pozitivi reprezentai pe 1 octet), smallint (reprezentai pe 2 octei),
int (reprezentai pe 4 octei) i bigint (reprezentai pe 8 octei).
Tipurile de date numerice aproximative sunt cu reprezentare n virgul
mobil: float [(q)], unde parametrul q reprezint numrul de bii utilizai pentru
reprezentarea mantisei (q=1-24 pentru o reprezentare pe 4 octei cu o precizie de 7
cifre zecimale i q=25-53 pentru o reprezentare pe 8 octei cu o precizie de 15 cifre
zecimale); real cu o reprezentare pe 4 octei (este similar cu float (24)).
Tipul de dat bit este un ntreg cu valorile 1, 0 sau NULL utilizat pentru
reprezentarea variabilelor booleene (logice) True, False sau nedefinit.
Tipurile de date zecimale sunt destinate pentru reprezentarea numerelor
zecimale, cu numr variabil de octei, astfel: decimal[(p[,s])] i numeric[(p[,s])],
unde precizia p reprezint numrul maxim posibil de cifre zecimale la stnga i la
dreapta punctului zecimal (p=1-38), iar scala s reprezint numrul de
zecimale(s=0-p).
Tipurile de date monetare sunt folosite pentru reprezentarea sumelor de bani
ntr-o anumit moned, astfel: money (8 octei) i smallmoney (4 octei).
Tipul de dat calendaristic asigur cu datetime reprezentarea datei i orei n
intervalul de la 1 ian.1753 pn la 31 dec.9999, cu o precizie de 1/3 sec, iar cu
smalldatetime reprezentarea datei i orei n intervalul de la 1 ian.1900 pn la 06
iun.2079, cu o precizie de 1 min. Datele constante de tip dat calendaristic se scriu
ntre apostroafe, n formate predefinite (`10 Jully 2004`, `12/28/04` etc.).
Tipul de dat ir de caractere asigur reprezentarea irurilor de caractere de
lungime fix sau variabil. Tipul char[(n)] definete un ir de caractere nonUnicod cu lungimea fix de n caractere (n=1-8000), iar tipul varchar[(n)] definete
un ir de caractere non-Unicod cu lungimea variabil de n caractere.
Tipul de dat ir de caractere Unicod definete irurile de caractere Unicod
de lungime fix sau variabil. Tipul nchar[(n)] definete un ir de caractere Unicod
cu lungimea fix de n caractere (n=1-8000), iar tipul nvarchar[(n)] definete un ir
de caractere Unicod cu lungimea variabil de n caractere. Acest tip de dat se
utilizeaz cnd datele pot prezenta dimensiuni dificil de estimat.
181

Universitatea SPIRU HARET

Tipul de dat cursor reprezint o referin la un cursor, iar tipul de dat


sql_variant este tipul de dat ce poate memora orice tip de dat specific SQL
Server, cu excepia celor de tip text, imagine, timestamp i sql_variant. Tipul de
dat timestamp permite generarea automat de ctre sistem a valorilor binare
pentru crearea etichetelor unice destinate tuplelor tabelelor bazei de date.
Ceea ce urmeaz n instruciunea de creare a tabelului, dup nume cmp i
tip dat, sunt constrngerile asociate tabelului.
IDENTITY se refer la o coloan (cmp) pentru care SQL Server realizeaz
incrementarea automat cu o unitate a cmpului respectiv. Aceast opiune se poate
folosi doar pentru tipurile de cmp: tinyint, smallint, int, bigint, decimal sau
numeric. IDENTITY se folosete, de regul, asociat cu opiunea PRIMARY KEY
pentru identificarea n mod unic a fiecrei nregistrri din tabel. Un tabel poate
conine numai un singur cmp IDENTITY.
Opiunile NULL i NOT NULL specific dac atributul la care se refer
permite sau nu permite valori NULL.
PRIMARY KEY arat cmpul care reprezint cheia primar.
FOREIGN KEY arat cmpul care este cheie extern, iar tabel_ref este
tabelul la care se face referin. Cimp_ref reprezint cmpul la care cheia extern
face referin.
ON DELETE cere care aciuni se pot produce cnd se terge tabelul.
CASCADE arat tergerea nregistrrilor corespunztoare din tabelele copil. NO
ACTION reprezint opiunea asumat prin lips.
Exemplu:
CREATE TABLE MATERIALE
(cod_mat int IDENTITY NOT NULL PRIMARY KEY,
den_mat char(15) NOT NULL,
cant smallint NOT NULL,
pret_unitar money NOT NULL)
Pentru fiecare cmp s-a specificat NOT NULL, adic nu poate conine valori
de tip NULL.
Exist posibilitatea s se genereze tabele temporare ce sunt eliminate
automat cnd utilizatorul ncheie sesiunea de lucru sau cnd legtura cu baza de
date este nchis.
Specificarea unui tabel creat temporar se efectueaz prin utilizarea
caracterului # (diez) n numele tabelului.
Exemplu:
CREATE TABLE # TEMP_MAT
Pentru a terge un tabel dintr-o baz de date se utilizeaz comanda:
DROP TABLE nume_tabel
c) Comenzi pentru vederi (view-uri)
Vederea (view-ul) reprezint un tabel virtual n care se pot prezenta unitar
date provenite prin interogare static din unul sau mai multe tabele ale unei baze de
date. Vederea este format dintr-o instruciune SELECT ce a fost compilat
anterior cu ajutorul comenzii CREATE VIEW. Dup crearea unei vederi (view),
aceasta se poate folosi ca orice alt tabel al bazei de date. Nu sunt acceptate vederi
temporare.
182

Universitatea SPIRU HARET

Sintaxa comenzii de creare a unei vederi (view) este urmtoarea:


CREATE VIEW nume_vedere
AS
comanda SQL SELECT
Restriciile impuse n utilizarea acestei comenzi sunt:
- nu se pot include clauzele ORDER BY, COMPUTE i COMPUTE BY;
- nu se poate include clauza INTO;
- nu se poate face referire la un tabel temporar.
Exemplu:
USE MAT
GO
CREATE VIEW MAT_CONSTRUCTII
AS
SELECT * FROM MAT
WHERE cod_mat BETWEEN 1001 AND 3999
GO
Pentru a elimina o vedere (view) din baza de date se utilizeaz comanda:
DROP VIEW nume_vedere.
Vederile la care criteriile de selecie sunt modificate pe baza evalurii
expresiilor din clauzele WHERE sau HAVING se numesc vederi dinamice.
Vederile (view-urile) reprezint un mecanism eficace pentru divizarea
datelor n subseturi, pe orizontal, pe vertical sau pe amndou direciile. Pentru
realizarea controlului introducerii i actualizrii datelor, vederile reprezint
alternative la restricii i declanatori.
d) Comenzi pentru proceduri
O baz de date poate conine i proceduri stocate permanent pe server i
pseudo-compilate la utilizare, care reprezint subprograme formate din pachete de
instruciuni SQL. Procedurile stocate sunt necesare pentru a nlocui seturi de
comenzi ce se execut repetat n cadrul unei aplicaii. Codul surs al procedurilor
stocate se gsete, alturi de cele ale opiunilor prestabilite, vederilor i
declanatorilor, n tabelul de sistem syscomments. Afiarea codului-surs al unei
proceduri stocate se poate efectua cu ajutorul procedurii de sistem sp_helptext.
Exist proceduri de sistem i proceduri ale utilizatorului. Procedurile de sistem
sunt proceduri care sunt rezidente n baza de date master i prezint prefixul sp_.
Procedurile de sistem se pot executa din orice baz de date.
Sintaxa comenzii de creare a unei proceduri stocate este:
CREATE PROCEDURE nume_procedura
[@ parametru1 tip dat [ = valoare1] OUTPUT]]
[@ parametru2 tip dat [ = valoare2] OUTPUT]]
AS
instruciuni SQL
unde:
OUTPUT indic faptul c parametrul este de ieire, adic va returna o
valoare. Parametrii de ieire pot fi numere ntregi, iruri de caractere, date
calendaristice, cursoare. Parametrii sunt trecui n procedurile stocate dup nume i
dup poziie. Procedurile stocate pot accepta maximum 1024 de parametri.
183

Universitatea SPIRU HARET

Pentru a executa o procedur, se utilizeaz comanda:


EXEC nume_procedura valoare1, valoare2,.
Pentru eliminarea unei proceduri din baza de date se folosete comanda:
DROP PROCEDURE nume_procedura.
Procedurile temporare au prefixul #.
Procedurile stocate sunt folosite n conformitate cu patru etape de baz:
creare, executare de ctre utilizator, compilare i executare de ctre serverul de
baze de date.
Procedurile stocate prezint avantaje legate de:
facilitarea modificrii datelor n acelai mod pentru toate aplicaiile de baze
de date;
creterea vitezei de execuie;
partajarea logicii de aplicaie ntre diferite aplicaii de baze de date;
simplificarea execuiei interogrilor cu parametri;
modularizarea aplicaiei;
reducerea cantitii de cod care circul n reea;
contribuia la realizarea securitii bazei de date.
e) Comenzi pentru gestionarea tranzaciilor
Tranzaciile sunt seturi formate din una sau mai multe operaii de baze de
date care sunt tratate n mod unitar (fie se termin toate cu succes, fie se termin
toate cu eec). Tranzacia este apreciat ca fiind unitatea operaional fundamental
pentru o baz de date. Tranzaciile SQL asigur unitatea i recuperabilitatea datelor
atunci cnd se produc deranjamente ale prii de hardware, erori ale sistemului de
operare, erori n aplicaii sau ale SQL Server. Conceptul de tranzacie se refer la
partea de server i presupune c un grup de comenzi executate n interiorul unei
tranzacii sunt terminate complet sau nu sunt realizate nici una (nu au efect asupra
bazei de date). De asemenea, dac o comand afecteaz mai multe linii, aceasta i
va produce efectul asupra tuturor liniilor afectate sau nu va modifica nici o linie. n
momentul n care tranzacia este executat n totalitate, atunci se produce i
salvarea modificrilor.
Tranzaciile asigur controlul concurent al mai multor utilizatori la baza de
date (tabel, vedere), precum i meninerea consistenei datelor prin ndeplinirea
restriciilor de integritate definite pentru baza de date.
O tranzacie definit de utilizator se poate construi dup urmtorul model:
BEGIN TRAN nume_tranzactie
comenzi SQL
COMMIT TRAN nume_tranzactie]
sau
ROLLBACK TRAN nume_tranzactie]
n care:
BEGIN marcheaz nceputul unei tranzacii, numele acesteia fiind opional;
COMMIT salveaz toate modificrile executate pe parcursul tranzaciei n
baza de date;
ROLLBACK anuleaz modificrile efectuate de comenzile tranzaciei. Cu
ajutorul acestei comenzi, baza de date este adus n starea iniial pe care o avea
naintea rulrii tranzaciei.
184

Universitatea SPIRU HARET

Exemplu:
SELECT TOP 4 cod_mat, den_mat FROM MAT ORDER BY cod_mat
BEGIN TRAN mat_vechi
DELETE MAT
SELECT TOP 4 cod_mat, den_mat FROM MAT ORDER BY cod_mat
GO
ROLLBACK TRAN mat_vechi
SELECT TOP 4 cod_mat, den_mat FROM MAT ORDER BY cod_mat
f) Comenzi pentru declanatori
Declanatorii (triggers) sunt un tip special de proceduri stocate care se
execut automat la apariia unui eveniment, cum ar fi: INSERT (inserare),
UPDATE (modificare) sau DELETE (tergere de nregistrri din baza de date).
Declanatorii sunt ataai tabelelor.
Un declanator poate fi construit cu comanda:
CREATE TRIGGER nume_declansator ON nume_tabel
FOR {INSERT, UPDATE, DELETE}
AS
Comenzi SQL
unde:
nume_declansator este numele declanatorului;
nume_tabel este tabelul la care se ataeaz declanatorul.
INSERT, UPDATE, DELETE permit specificarea evenimentului la care este
ataat declanatorul.
Exemplu:
USE MAT
GO
CREATE TRIGGER mat_DELETE ON MAT
FOR DELETE AS
IF CANT=0
DELETE MAT
GO
Variabile n limbajul Transact_SQL
O variabil local n limbajul Transact_SQL reprezint un obiect ce conine
o valoare de un anumit tip. Variabilele locale servesc n proceduri stocate sau n
declanatori pentru stocarea valorilor ce se testeaz prin comenzile de control sau
se returneaz de procedurile stocate, pentru transmiterea valorilor ca parametri la
proceduri stocate, pentru numrarea i controlul numrului de pai ai unei bucle
etc. Declararea variabilelor locale se efectueaz cu DECLARE:
DECLARE @ variabila_locala tip_dat
unde:
@ este simbolul folosit de procesorul de interogri pentru a identifica
variabilele locale.
Exemplu:
DECLARE @ cod_mat int, @ den_mat varchar(25), @cod_depozit int
Dac se folosete @@ naintea unei variabile, atunci procesorul de interogri
interpreteaz variabila ca variabil global.
185

Universitatea SPIRU HARET

Microsoft SQL Server utilizeaz i variabile globale de sistem, ca de


exemplu:
- @@ rowcount numrul de linii afectate de ultima comand;
- @@ total_read numrul de citiri de pe disc cnd se lanseaz SQL Server;
- @@ total_write numrul de scrieri pe disc cnd se lanseaz SQL Server.
Pentru atribuirea unei valori pentru o variabil, se alege ntre comanda SET
i comanda SELECT:
SET @ variabila = expresie
sau
SELECT @variabila = expresie
Exemplu:
DECLARE @den_mat varchar(25)
SET @ den_mat = ciment
sau
SELECT @ den_mat = ciment FROM MAT
Comanda SET este mai eficient dect comanda SELECT, dar comanda
SELECT poate fi folosit pentru a atribui valori mai mutor variabile:
SELECT @ cod_mat = 1001, @ den_mat = ciment FROM MAT
Afiarea mesajelor se poate obine prin folosirea comenzii:
PRINT @ variabila_locala @@ variabila_globala
text
Elemente de programare
Structura secvenial este evideniat prin utilizarea instruciunilor BEGIN,
pentru marcarea punctului de nceput, i END, pentru a marca punctul de sfrit al
unui bloc de comenzi SQL. Sintaxa blocului este:
BEGIN
comenzi SQL
END
Pentru implementarea structurii de control alternative cu dou ramuri se
folosete instruciunea IF cu urmtoarea sintax:
IF (condiie)
comand SQL bloc de comenzi SQL
[ELSE
comand SQL bloc de comenzi SQL]
Structura de control repetitiv se poate obine cu ajutorul instruciunii
WHILE cu urmtoarea sintax:
WHILE condiie
comand
care execut comanda att timp ct condiia este adevrat.
Tipul de date cursor
Cursorul, ca mod complementar de lucru, asigur selecia i parcurgerea
linie de linie a unui set de nregistrri care s-a obinut ca urmare a execuiei unei
comenzi SELECT. Pentru folosirea cursorului se parcurg urmtoarele etape:
1) crearea cursorului;
2) deschiderea cursorului;
3) parcurgerea cursorului;
186

Universitatea SPIRU HARET

4) nchiderea cursorului;
5) eliberarea memoriei alocate pentru cursor.
1) Crearea cursorului se execut cu instruciunea:
DECLARE nume_cursor
[FORWARD_ONLY SCROLLCURSOR]
FOR comand SQL_SELECT
unde:
FORWARD_ONLY cursorul poate fi parcurs doar de la prima la ultima
nregistrare i este mai rapid dect tipul SCROLL, care permite parcurgerea setului
de nregistrri n acest sens.
2) Deschiderea cursorului (popularea cursorului) se obine cu instruciunea:
OPEN nume_cursor
prin intermediul creia are loc execuia comenzii SELECT din clauza FOR.
3) Parcurgerea cursorului este realizat cu comanda:
FETCH [NEXT PRIORFIRSTLAST]
FROM nume_cursor
INTO @ variabila_1, @ variabila_2,.
Se realizeaz dou operaiuni, i anume:
a) transfer de valori ale cmpurilor din nregistrarea curent ctre
@variabila_1, @variabila_2,..;
b) se trece la urmtoarea nregistrare (NEXT este implicit), la nregistrarea
anterioar prin PRIOR, la prima FIRST sau la ultima nregistrare LAST.
Pentru parcurgerea cursorului se poate utiliza i o variabil global @@
sqlstatus care este actualizat permanent de SQL Server i poate avea una din
valorile urmtoare:
0) comanda FETCH s-a executat optim;
1) comanda FETCH a determinat apariia unei erori;
2) au fost parcurse toate nregistrrile din setul de date.
4) nchiderea cursorului se obine cu comanda:
CLOSE nume_cursor.
5) Eliberarea memoriei alocate pentru cursor se face cu instruciunea:
DEALLOCATE CURSOR nume_cursor
Exemplu: Se cere s se afieze codurile materialelor cu preul unitar mai mic
dect 4.000.000 lei.
Se declar dou variabile @cod_mat pentru codul materialului ca ntreg i
@pret_unitar virgul mobil (float). Se creeaz cursorul cursor_mat i se parcurg
nregistrrile din tabelul MAT.
DECLARE @ cod_mat int
DECLARE @ pret_unitar float
PRINT Lista preurilor mai mici ca 4000000
DECLARE cursor_mat CURSOR SCROLL FOR SELECT * FROM MAT
OPEN cursor_mat
FETCH FIRST FROM cursor_mat INTO @cod_mat, @pret_unitar
187

Universitatea SPIRU HARET

WHILE (@@ sqlstatus = 0)


BEGIN
IF (@pret_unitar < 4000000)
BEGIN
PRINT @ cod_mat
END
FETCH NEXT FROM cursor_mat INTO @cod_mat, @pret _unitar
END
7.4. Serverul de baze de date Oracle
Serverul de baze de date Oracle conine dou componente: o baz de date i
o instan.
Baza de date conine structura fizic i structura logic care se prezint
complet separate. Structura fizic a bazei de date este fundamentat pe fiierele
care constituie baza de date. Aceste fiiere sunt de mai multe tipuri: fiiere de date
(Data Files), fiiere jurnal (Redo Log Files) i fiiere de control (Control Files).
Fiierele de date conin datele din structurile logice ale bazei de date, tabelele i
indecii. Fiierele jurnal cuprind modificrile nregistrate efectuate asupra datelor.
Fiierele de control conin elemente prin care se specific structura fizic a bazei
de date (nume baz de date, nume fiiere de date, locaie fiier de date, nume fiier
jurnal, locaie fiier jurnal), data de creare a bazei de date). Structura logic a
bazei de date asigur modul n care se folosete spaiul fizic de stocare a bazei de
date i este format din spaii-tabel, segmente de memorie, extensii ale segmentelor
de memorie i blocuri de date (de exemplu, de 2KB).
Spaiul-tabel (Tables Space) servete pentru memorarea logic a datelor
bazei de date. Fiierele de date care conin, fizic, datele bazei de date, sunt asociate
acestor spaii-tabel. La crearea unui spaiu-tabel, sunt generate n mod automat
spaiul-tabel System (cu dicionarul de date al bazei de date) i fiierele de date
asociate. Pentru asigurarea separrii ntre dicionarul de date i datele bazei de date,
se creeaz spaii-tabel suplimentare pentru date (fig.7.2).
Spaiul-tabel Oracle este, de regul, activ pentru ca utilizatorii bazei de date
s poat accesa datele stocate pe server.
Obiectele schemei bazei de date Oracle cuprind structuri logice de tipul
tabele (tables), vederi (Views), instantanee (Snapshots), proceduri (Procedures),
secvene (Sequences), sinonime (Synonyms), indeci (Indexes), clustere i legturi
ale bazei de date (Databases Links). Fiecrui utilizator al bazei de date i se atribuie
o schem cu astfel de obiecte ce sunt stocate ntr-un spaiu-tabel al bazei de date.
Noiunile de tabel, vedere i procedur sunt cunoscute. Instantaneele sunt tabele ce
conin rspunsurile la cererile de interogare asupra tabelelor (Master Tables).
Secvena reprezint o ir de numere secveniale (ntregi cu lungimea maxim de 38
de cifre) generate de serverul Oracle i care sunt folosite pentru generarea cheilor
primare ale tabelelor bazei de date. Sinonimul reprezint un alias al unui obiect
Oracle ce nu se gsete n interiorul unei proceduri. Clusterele sunt grupri de
tabele frecvent accesate, memorate fizic n acelai blocuri de date. Indecii
reprezint structuri opionale asociate tabelelor i clusterelor i care servesc pentru
accelerarea execuiei instruciunilor SQL.
188

Universitatea SPIRU HARET

Fig.7.2. Memorarea logic i fizic a datelor pe serverul de baze de date Oracle

Segmentele cuprind extensii ce conin datele unei structuri logice de


memorare dintr-un spaiu-tabel. n Oracle se definesc patru tipuri de segmente:
segment de date, segment de index, segment de revenire i segment temporar.
Segmentul de date memoreaz datele din tabel, cluster i instantanee. Segmentul
index memoreaz datele unui index al bazei de date. Segmentul de revenire conine
nregistrri despre aciunile unei tranzacii SQL pentru a se putea realiza, la nevoie,
derularea napoi. Segmentul temporar conine un spaiu de lucru destinat prelucrrii
unui tabel ce servete pentru stocarea rezultatelor intermediare ale unei tranzacii
SQL. Tranzacia SQL reprezint o unitate logic de lucru care cuprinde instruciuni
SQL ce aparin unui singur utilizator.
Aa cum s-a artat i la Microsoft SQl Server, instana reprezint o copie
independent a serverului de baze de date pe acelai calculator cu originalul sau pe
alte calculatoare. Atunci cnd se pornete o instan a unei baze de date Oracle,
baza de date este identificat prin intermediul fiierului su de control. Instana
Oracle este format din zona de memorie global a sistemului, SGA (System
Global Area) ce conine datele i din procesele din fundal (Background Processes).
Instana Oracle prezint dou tipuri de procese: procese Oracle (ale serverului de
baze de date) i procese-utilizator (rularea aplicailor).
Arhitectura Oracle este prezentat n fig.7.3 [58]. Nucleul sistemului
cuprinde limbajul relaional de regsire a datelor (SQL*Plus) i limbajul procedural
propriu-zis (PL/SQL). Interfeele de dezvoltare a aplicaiilor cu baze de date sunt:
DEVELOPER pentru dezvoltarea de aplicaii;
DESIGNER pentru analiza aplicaiilor;
EXPRESS pentru analiza datelor multidimensionale;
EXPLORER pentru accesul la date;
ORACLE APPLICATIONS pentru dezvoltarea aplicaiilor de
ntreprindere (financiare, proiecte, de producie etc.);
Instrumentele de ntreinere sunt:
ADMINISTRATOR TOOLS utilitare pentru administratorul bazei de date;
189

Universitatea SPIRU HARET

BROWSERE, EDITOARE utilitare pentru cutare i ntreinere a bazelor


de date.
NET PRODUCTS utilitare pentru prelucrarea distribuit a datelor.
Instrumentele de baz (produse Oracle) asociate DEVELOPER Oracle ca
mediu de dezvoltare cooperativ, CDE Cooperative Development Environment sunt: Oracle Forms (pentru generarea meniurilor i a formularelor cu interfee
grafice utilizator complexe), Oracle Reports (crearea rapoartelor ca urmare a
interogrilor excutate asupra bazelor de date, inclusiv date de tip imagine), Oracle
Graphics (crearea aplicaiilor pentru vizualizarea datelor n formate grafice
personalizate de tipul diagramelor, desenelor i obiectelor multimedia).

SQL * Plus

DEVELOPER

PL/SQL

DESIGNER

Java
EXPRESS

Administrator
Tools

Browsere
Editoare

Net
Products

Fig.7.3. Arhitectura Oracle

Un server Oracle folosete structuri de memorie pentru gestionarea bazelor


de date: zona global a sistemului, SGA (System Global Area), zona global a
programului, PGA (Program Global Area) i zona de context, CA (Context Area).
SGA este format din buffere cache (memorii tampon n care sunt pstrate cele mai
frecvent solicitate date n scopul facilitrii accesului rapid la ele) ale bazei de date,
buffere jurnal i zona pool partajat. PGA este un buffer de memorie cu date despre
un proces server. CA este o zon de memorie alocat automat de sistem atunci
cnd un client lanseaz o comand SQL. Ea conine informaii necesare comenzilor
referitoare la adrese, format, rezultat etc.
n mod similar cu SQL Server, i n filosofia Oracle se lucreaz cu roluri ca
grupuri de privilegii nrudite acordate utilizatorilor individuali sau altor roluri. Se
deosebesc roluri aplicaie i roluri utilizator. Exist i roluri definite de sistem
(serverul Oracle dispune de cinci roluri predefinite).
190

Universitatea SPIRU HARET

Grupul de utilizatori Public este compus din toi utilizatorii bazei de date.
Rolurile acordate grupului de utilizatori Public sunt accesibile tuturor utilizatorilor
bazei de date.
7.5. Caracterizarea limbajului PL/SQL
pentru serverul de baze de date Oracle
Aa cum s-a menionat n paragraful precedent, n nucleul Oracle este inclus
limbajul procedural propriu-zis PL/SQL, Procedural Language SQL, ca o extensie
a SQL (ce este un limbaj neprocedural, aa cum s-a artat n capitolul precedent),
caracteristic sistemului Oracle. Prin acest limbaj, ce aparine generaiei a patra
(4GL), se realizeaz accesul la datele standard pentru bazele de date obiectrelaionale. n acelai timp, limbajul prezint caracteristici ale limbajelor de
programare structurate (3GL), cum sunt ciclul i saltul.
Limbajul PL/SQL asigur lucrul orientat pe obiecte, cu blocuri PL/SQL.
Aceste blocuri PL/SQL sunt caracteristice acestui limbaj i se definesc ca grupuri
de instruciuni SQL i PL/SQL. Blocurile PL/SQL sunt prelucrate de un motor
(engine) PL/SQL prezent pe server sau n utilitare Oracle. Motorul utilizat este
funcie de locul (server sau utilitar) de unde se apeleaz PL/SQL. Motorul
descompune blocul n instruciuni SQL (SQL_S) separate ce sunt aplicate unui
executor de instruciuni SQL ce se gsete pe serverul Oracle. Comenzile
procedurale (PS) sunt prelucrate de ctre executorul instruciunilor procedurale,
PSE (Procedural Statement Executor), aa cum se poate observa n fig.7.4. Prin
procesarea datelor la locul aplicaiei, se micoreaz traficul ctre server, ceea ce se
constituie ntr-un avantaj.

BLOC PL/SQL
SERVER ORACLE
MOTOR PL/SQL
PRELUCRARE
INSTRUCIUNI

PSE

EXECUTOR
INSTRUCIUNI
SQL

Fig.7.4. Procesul de execuie a unui bloc PL/SQL

Un bloc PL/SQL este format din patru seciuni de baz: antet (header,
opional), seciunea declarativ (opional), seciunea executabil i seciunea de
tratare a excepiilor (a erorilor, opional).
Structura general a unui bloc PL/SQL este:
Seciunea Header
IS
191

Universitatea SPIRU HARET

Seciunea Declarative
BEGIN
Seciunea executabil
EXCEPTION
Seciunea de tratare a excepiilor (erorilor)
END;
Blocurile pot fi anonime (fr nume, executate o singur dat), neanonime
(cu nume), proceduri, funcii sau declanatoare (triggere). Declararea i
iniializarea variabilelor (prefix v), a constantelor (prefix c), a cursoarelor i
excepiilor se efectueaz n seciunea Declarative (declarativ). Cursorul este o
zon de memorie folosit pentru executarea unor instruciuni SQL i pentru
stocarea informaiilor. Variabila cursor reprezint un cursor de tip dinamic.
Exemple de declarare i iniializare variabile i constante:
v_cod_mat NUMBER(5);
v _den_mat VARCHAR2(20);
v_cant NUMBER(4);
c_pret_unitar CONSTANT NUMBER:=200000;
v_rezerva_depozit BOOLEAN;
v_data_inreg DATE DEFAULT SYSDATE;
v_nume_gestionar VARCHAR2 DEFAULT Georgescu.
PL/SQL admite tipuri de date implicite (atributele %TYPE i %ROWTYPE).
Aceste date asigur declararea unei variabile n concordan cu declarri de variabile
anterioare. Atributul %TYPE realizeaz asignarea la o variabil a tipului de dat al
unei coloane dintr-un tabel, vedere (view) sau al unei variabile. Atributul
%ROWTYPE asigur declararea unei variabile de tip nregistrare (echivalentul unei
linii dintr-un tabel).
Un exemplu pentru %TYPE este acela n care denumirea tabelului
(MATERALE) i coloana den_mat din tabelul MATERALE prefixeaz %TYPE
astfel:
v_den_mat materiale.den_mat%TYPE;
Instruciunile PL/SQL sunt instruciuni de atribuire (:=), condiionale (IFTHE-ELSE), iterative (LOOPEND LOOP; FOR i IN LOOPEND LOOP),
de control secvenial (GOTO eticheta).
Un exemplu de utilizare a unei instruciuni iterative PL/SQL (de ciclare) i a
cursorului ce permite actualizri ale liniilor unui tabel clarific cele prezentate mai
sus. S se actualizeze preul unitar al cimentului (pret_unitar), din tabelul
MATERIALE, cu coeficientul 1,25.
DECLARE
CURSOR c1 IS
SELECT * FROM materiale WHERE den_mat=ciment
FOR UPDATE NOWAIT;
BEGIN
FOR matc IN c1 LOOP
UPDATE materiale
SET pret_unitar= pret_unitar*1.25
WHERE CURRENT OF c1;
END LOOP;
192

Universitatea SPIRU HARET

Se observ la declararea cursorului utilizarea clauzei FOR UPDATE. Ca


urmare, atunci cnd se folosete comanda UPDATE, clauza WHERE CURRENT
OF determin ca, n situaia n care cursorul este deschis, s se poat efectua
actualizarea unor linii din table.
n PL/SQL se pot compila proceduri i funcii care sunt apoi stocate n baza
de date (proceduri stocate); ulterior, aceste proceduri i funcii pot fi apelate, de
ctre utilizatorul cu un astfel de privilegiu, din orice bloc. Procedurile i funciile
locale sunt compilate ori de cte ori se execut blocul care are n compunere
procedurile i funciile respective.
O funcie utilizator achizitii care determin numrul tipurilor de materiale
(din tabelul MATERIALE) achiziionate de un client cu v_nume_client este creat
de subprogramul urmtor.
FUNCTION achizitii (v_nume_client.nume_client%TYPE)
RETURN INTEGER IS
c1_achizitie INTEGER;
BEGIN
SELECT COUNT (*) INTO c1_achizitie FROM materiale
WHERE nume_client=v_nume_client;
RETURN (c1_achiziie)
END;
Numrul de tipuri de materiale determinat mai sus poate coincide n practic
cu numrul de linii ale facturii, dac se creeaz, n loc de funcie o procedur i se
introduce la selecie, nume_client i data_factura.
Pachetul (package) n PL/SQL asigur ncapsularea, ca obiect al bazei de
date, sub forma unei uniti logice, a constantelor, variabilelor, funciilor,
procedurilor, tipurilor i cursoarelor. Un pachet nu poate fi apelat ca un
subprogram. Un pachet n PL/SQL are dou pri: specificarea pachetului
(package specification) i corpul pachetului (package body). Specificarea
pachetului reprezint interfaa cu aplicaii. Corpul pachetului implementeaz
specificaia ce conine declararea variabilelor, constantelor, funciilor, procedurilor
i excepiilor ce sunt accesibile utilizatorilor (Public).
Declanatorii (triggers) n PL/SQL, la nivel de baz de date sau la nivel de
aplicaie, sunt proceduri stocate n baza de date i asociate tabelelor, ce se execut
automat cnd au loc evenimente declanatoare asociate acestor proceduri. Un
declanator este acionat de comenzile SQL - INSERT, UPDATE, DELETE i
combinaii ale acestora de tip sum logic (OR).
Tranzaciile, ca seturi de operaii legate logic ntre ele, privite n mod unitar
i definite de sistem sau de utilizator, sunt implementate cu comenzile COMMIT
(finalizarea tranzaciei), ROLLBACK (anularea tranzaciei), SAVEPOINT
(marcarea subtranziiilor).
Tratarea excepiilor (erorilor) n PL/SQL se efectueaz, aa cum s-a artat
mai sus, n seciunea EXCEPTION. Excepia reprezint un eveniment specific de
tipul eroare Oracle, eroare sistem sau eroare utilizator care determin o aciune
particular de rspuns la acest eveniment. Cnd apare o eroare, un bloc al unui
program se termin. Pentru tratarea erorilor, se utilizeaz rutine speciale denumite
handlere. Excepiile PL/SQL pot fi excepii interne (predefinite i nepredefinite) i
excepii externe (definire de utilizator). Erorile nepredefinite corespund unor
193

Universitatea SPIRU HARET

excepii predefinite i nu prezint nume predefinit. Exemple de excepii interne


predefinite: DUP_VAL_ON_INDEX, adic detectarea inserrii unei valori
duplicate (pe serverul Oracle apare codificat ORA_00001), LOGIN_DENIED,
adic nume sau parol incorect (ORA_01017) etc. Excepiile definite de utilizator
sunt declarate n seciunea DECLARE din structura blocului PL/SQL i sunt
declanate efectiv cu comanda RAISE n seciunea executabil.
Pentru tratarea excepiilor, se folosesc funciile SQLCODE (returneaz
valoarea numeric a codului de eroare) i SQLERRM (ntoarce valoarea numeric
a codului de eroare).
7.6. Noiuni privind utilitarul SQL*Plus
din compunerea serverului de baze de date Oracle
Nucleul Oracle conine (fig.7.3) limbajul relaional de regsire a datelor,
sub forma unui utilitar denumit SQL*Plus. Acesta cuprinde toate comenzile SQL
i, n plus, asigur capabiliti de personalizare a rezultatelor interogrilor, de
control i editare a comenzilor SQL i a blocurilor PL/SQL, de gestiune a
tranzaciilor. Ca urmare, cu ajutorul acestui utilitar se realizeaz rapoarte, se
creeaz fiiere (script file), se definesc funcii de administrare a sistemului.
n continuare se prezint unele dintre funcionalitile suplimentare fa de
limbajul SQL, oferite de SQL*Plus.
Comenzile utilizatorului de SQL*Plus se introduc interactiv la apariia
prompterului SQL> i se ncadreaz ntr-una din urmtoarele trei categorii de
comenzi:
instruciuni SQL destinate accesrii bazei de date;
blocuri PL/SQL ce servesc pentru accesarea bazei de date (s-au prezentat
n paragraful precedent);
comenzi SQL*Plus.
Comenzile SQL pot fi scrise pe mai multe linii. Aceste comenzi sunt stocate
ntr-o memorie tampon SQL (buffer).
Salvarea coninutului buffer-ului ntr-un fiier de comenzi se efectueaz cu
comanda SAVE. Rularea unui fiier de comenzi se face cu comenzile START,
GET sau RUN nume_fisier. Cnd se dorete afiarea pe ecran numai a rezultatului
execuiei comenzilor din bufferul SQL, fr textul acestor comenzi, se folosete
comanda /. Un fiier de comenzi se poate realiza i cu ajutorul comenzii INPUT n
corelaie cu SAVE. De exemplu:
SQL>CLEAR BUFFER
SQL>INPUT
2 SELECT *
3 FROM MAT
4
SQL>SAVE CDA_SEL.SQL
SQL>@CDA_SEL
Obinerea informaiilor cu privire la structura tabelelor, sinonimelor,
vederilor (view-urilor) se efectueaz cu comanda DESCRIBE. Comentariile se
introduc cu comanda REMARK.
Editarea comenzilor se face cu ajutorul editorului astfel:
SQL>EDIT [nume_fisier[.extensie]].
194

Universitatea SPIRU HARET

Principalele comenzi de editare a comenzilor SQL*Plus sunt prezentate n


tabelul urmtor:
Nr.crt
1.
2.
3.
4.
5.
6.
7.
8.

Comanda
L
Ln
L*
I
A text
C/text_vechi/text_nou
DEL
CL BUFF

Efectul comenzii
Afieaz toate liniile din buffer (list)
Afieaz linia n (list)
Afieaz linia curent (list)
Adugare linii (input)
Adugare text la sfritul unei linii (append)
Schimb text_vechi cu text_nou (change)
terge linia curent (delete)
terge bufferul (clear buffer)

Formatarea rezultatelor unei cereri de interogare conduce la obinerea unui


raport. Formatarea coloanelor se efectueaz cu comanda COLUMN prin care se
obine afiarea atributelor coloanei (fr opiuni), iar cu opiuni se obine
schimbarea denumirii coloanei sau splitarea denumirii coloanei (opiunea
HEADING), formatarea coloanelor numerice (opiunea FORMAT), copierea
atributelor specifice unei coloane la alt coloan (opiunea LIKE) etc.
Pentru prezentare, spaiile i liniile rezumat se obin la rapoarte prin
intermediul comenzilor BREAK i COMPUTE. Definirea titlurilor unei pagini
(ecran cu date sau pagin tiprit) se efectueaz cu comenzile TTITLE (la
nceputul paginii) i, respectiv BTITLE (la sfritul paginii). Definirea nlimii
paginii se face cu comanda PAGESIZE, iar definirea limii paginii se efectueaz
cu comanda LINESIZE.
Rezultatele cererii de interogare se pot stoca ntr-un fiier sau se pot tipri la
imprimant cu comanda SPOOL.
Gestiunea tranzaciilor presupune, n primul rnd, activarea modului de
validare automat a tranzaciilor cu comanda: SET AUTOCOMMIT ON (cu OFF
se produce dezactivarea). Validarea unei tranzacii se face cu comanda COMMIT,
iar anularea acestei tranzacii se face cu comanda ROLLBACK.
n continuare se prezint un exemplu de utilizare a unor comenzi SQL*Plus,
prezentate mai sus, pentru rezolvarea urmtoarei probleme: S se creeze un fiier
care tiprete un raport ce cuprinde, pentru fiecare material selectat, cod_material,
den_material, cant, pret_unitar, valoare.
COLUMN cod_material HEADING CODMATERIAL FORMAT $9999
COLUMN den_material HEADING DENUMIREMATERIAL FORMAT A30
COLUMN cant HEADING CANTITATEMATERIAL FORMAT $9999.99
COLUMN pret _unitar HEADING PRETUNITAR FORMAT $9,999,999.99
COLUMN valoare HEADING VALOAREMATERIALE FORMAT
$9,999,999.99
SELECT cod_material, den_material, cant, pret_unitar, cant*pret_unitar valoare
FROM MAT WHERE pret_unitar<400000
ORDER BY cod_material
/
195

Universitatea SPIRU HARET

7.7. Alte servere de baze de date


Dei, n aceast lucrare, serverul de baze de date DB2 Universal Database
(UDB) al firmei IBM este prezentat n paragraful terminal al capitolului, se cuvine
s se reaminteasc aici rolul de pionierat pe care firma IBM l-a jucat n domeniul
bazelor de date, ca i n multe alte domenii ale tiinei calculatoarelor i
informaticii. E.F.Codd de la IBM Research, n 1969, a definit pentru prima dat
modelul relaional al datelor, iar n anul 1973 aceeai firm IBM a dezvoltat primul
SGBD relaional denumit SYSTEM R [www.ibm.com].
Serverul de baze de date IBM DB2 Universal Database (UDB) face parte
din suita de produse IBM DB2, alturi de DB2 Enterprise Extended Edition, DB2
pentru sistemul de operare OS/400, DB2 OLAP Server, DB2 Object Relational
Extenders, biblioteca digital - DB2 Digital Library i altele.
Componenta Control Center reprezint componenta pentru gestionarea
printr-o interfa unificat, toate resursele de baze de date DB2 (locale, distribuite
n reele LAN sau VPN).
Sistemul DB UDB 7 al firmei IBM este un sistem pentru platforme multiple
ce conine o tehnologie nucleu de SGBDR pentru aplicaii Web, suport date
multimedia, asigur suport pentru aplicaii de e-business, pentru aplicaii cu baze
de date distribuite i baze de date foarte mari VLDB (Very Large Data Bases),
pentru date multidimensionale, dispune de funcii de replicare a datelor din bazele
de date distribuite.
Tehnologia de SGBDR de tipul in-memory faciliteaz cutrile prin
fraze-cheie n aplicaiile Web. n ceea ce privete datele multimedia, sistemul DB2
are prevzute extender-e multimedia integrate n DB2 ce asigur prelucrarea
tipurilor de date specifice definite de utilizator, UDT (User Defined Types), nsoite
de funcii dependente de tip, atribute i motoare de cutare specializate. Obiectele
mari, LOB (Large Objects), ca i n Oracle, aparin unuia dintre urmtoarele tipuri
de date: obiecte mari cu iruri de caractere, CLOB (Character Large Object),
obiecte mari binare, BLOB (Binary Large Object), obiecte mari cu iruri de
caractere pe doi octei, DCLOB (Double CLOB).
IBM DB2 UDB 7 asigur suport pentru aplicaii de e-business prin integrarea
complet cu IBM WebSphere Commerce Suite, ca soluie complet de site Web cu
date de e-commerce securizat, cu aplicaiile de management al relaiilor cu clienii,
CRM (Customer Relationship Management), de planificare a resurselor ntreprinderii,
ERP (Enterpridse Resources Planning), de gestionare a lanului de aprovizionare,
SCM (Supply Chain Management), asigurnd gestionarea afacerilor organizaiei
(planificare producie/servicii, finane, contabilitate, resurse umane).
Suportul DB2 UDB 7 pentru aplicaii cu baze de date foarte mari include
configuraii cluster (spaii tabele repartizate fizic pe mai multe discuri sau noduri),
alocarea dinamic a spaiului.
Bazele de date universale, gestionate de sistemul de gestiune a bazelor de
date orientate pe obiecte, OODBMS, sunt referite pe nivelurile structural,
operaional i comportamental [56].
Serverul de baze de date Sybase utilizeaz conceptul de server adaptiv i de
arhitectur cu componente adaptive, ACA (Adaptive Component Architecture):
Adaptive Server Enterprise, Workplace Databases Solution, Adaptive Server IQ
(pentru DSS-uri), Sybase Replication Server.
196

Universitatea SPIRU HARET

8. BAZE DE DATE DISTRIBUITE

8.1. Despre necesitatea bazelor de date distribuite n aplicaiile economice


Cnd s-a prezentat clasificarea bazelor de date, s-a artat c, din punctul de
vedere al modului de localizare a datelor, bazele de date pot fi locale sau
distribuite. n capitolul anterior, au fost numeroase situaiile n care s-au fcut
referiri la categoria de baze de date distribuite, dndu-se explicaii succinte
referitoare la noiunile i elementele implicate. n consecin, este necesar o
aprofundare a acestor concepte ntr-un capitol separat.
S-a artat n capitolele anterioare ce este i cum se construiete o aplicaie
Access cu ajutorul creia se poate asigura gestionarea i partajarea datelor ntre
diferii utilizatori finali n reea. n cazul utilizatorilor conectai intermitent i
aleator la baza de date central i de la distan (de exemplu, prin intermediul
Internetului), a fost necesar dezvoltarea unei filosofii de lucru i a unor arhitecturi
adecvate care s rspund unor cerine multiple.
Arhitecturile client/server prezentate n capitolul anterior pot fi percepute ca
un caz particular al sistemelor distribuite.
Bazele de date distribuite apar ca o consecin fireasc a faptului c
organizaiile economice performante sunt distribuite logic n departamente, secii,
birouri, grupuri de lucru i distribuite geografic n locaii diferite ce reprezint
filiale ale acestei organizaii.
Abordarea bazelor de date distribuite, ca elemente fundamentale ale sistemelor
informatice integrate unei organizaii economice, trebuie s aib n vedere cele trei
tendine importante care redefinesc rolul acestora n aplicaiile economice:
1. Internetul i alte reele de calculatoare i de comunicaii pe arie larg,
WAN (Wide Area Network) conecteaz n timp real participanii cheie: vnztori,
productori, distribuitori i clieni.
2. Globalizarea pieii, a mediului de afaceri necesit stocarea i procesarea
unor cantiti mari de date (baze de date mari), distribuite n toate locaiile
geografice implicate ntr-o anumit activitate sau proces economic.
3. Transformarea SUA i a altor ri industrializate n societi
informaionale (economii informaionale) accentueaz importana eficienei
sistemelor informatice i de comunicaii n care bazele de date distribuite joac
rolul determinant prin aceea c stocheaz date ce susin informaii i cunotine, cu
ciclul de via din ce n ce mai scurt.
8.2. Concepte fundamentale
Aa cum s-a artat n capitolul 1 al lucrrii, fiierul reprezint unitatea
fundamental de stocare care (ntr-o definiie simplificat) asigur deosebirea unei
mulimi de date de alta de ctre sistemul de calcul.
Sistemul de fiiere este format din fiiere, directoare i informaiile necesare
pentru localizarea i accesul la ele. Fiecare fiier conine un grup de date, complet
197

Universitatea SPIRU HARET

denumit, cum este un program, o mulime de date folosit de un program sau un


document generat de utilizator (fig.8.1).
n exploatarea multiutilizator a sistemelor de calcul, datorit dezavantajelor
legate de accesul mai dificil la date, redundana ridicat a datelor, izolarea datelor,
descrierea independent a datelor, dependena programelor fa de date, se prefer
bazele de date i sistemele de gestiune a bazelor de date (SGBD sau DBMS,
DataBase Management System). Baza de date este o colecie organizat dup
regulile unui model de date (mulime de reguli destinate structurrii i manipulrii
datelor). Gestiunea bazelor de date presupune utilizarea ca interfa ntre programele
de aplicaie i bazele de date a unui sistem de gestiune a bazei de date (fig.8.2).

PROGRAM 1

FIIER 1

DESCRIERE DATE 1

PROGRAM 2

FIIER 2

DESCRIERE DATE 2

PROGRAM 3

FIIER 3

DESCRIERE DATE 3
Fig.8.1. Sistem de fiiere

PROGRAM DE
APLICAIE 1

BAZA
DE DATE

SISTEM DE
GESTIUNE
A BAZEI
DE DATE
(SGBD)

PROGRAM DE
APLICAIE 2

PROGRAM DE
APLICAIE 3
Fig.8.2. Gestiunea unei baze de date
198

Universitatea SPIRU HARET

SGBD soluioneaz cererile utilizatorilor referitoare la diversele aciuni


legate de baza de date i asigur stabilirea unor msuri de integritate i de
securitate. Aceast problematic a bazelor de date i SGBD-urilor asociate a fost
tratat pe larg n capitolul 4.
O baz de date distribuit, DDB (Distributed DataBase), este o colecie
format din mai multe baze de date logic interconectate i care sunt localizate n
nodurile unei reele de calculatoare i de comunicaii. n fapt, o DDB este o colecie
de site-uri distribuite interconectate cu ajutorul unei reele de comunicaii. Dintr-o
alt perspectiv, o DDB este o baz de date virtual cu componentele stocate fizic
ntr-un numr de baze de date reale diferite, localizate n site-uri diferite. Sistemul
de gestiune a bazei de date distribuite, DDBMS (Distributed DBMS), reprezint
softul ce asigur lucrul cu DDB prin integrarea i distribuirea acestor baze de date
(fig.8.3), furniznd un mecanism de acces care face distribuirea acestora
transparent pentru toi utilizatorii. Sistemul baze de date distribuite, DDBS
(Distributed DataBase System), este format din DDB i DDBMS.

REEA DE
CALCULATOARE

TEHNOLOGIE A
BAZEI DE DATE

distribuire

integrare

SISTEM BAZE DE
DATE DISTRIBUITE
(DDBS)
integrare
Fig.8.3. Determinrile ntr-un sistem baze de date distribuite (DDBS)

Este important de menionat c ntr-un sistem baze de date distribuite (DDBS)


operaia de integrare nu este similar cu aceea de centralizare. ntr-un cadru mai
larg, DDBS este inclus n conceptul de calcul distribuit, ce desemneaz un numr de
elemente de procesare autonome, nu n mod necesar omogene, care sunt
interconectate ntr-o reea de calculatoare i de comunicaii i care coopereaz n
scopul realizrii sarcinilor (task-uri) atribuite. Pentru calcul distribuit, exist mai
muli termeni sinonimi, cum sunt: prelucrarea datelor distribuite, multiprocesare,
procesare back-end, sisteme n time-sharing, sisteme modulare funcional etc. n
DDBS sunt distribuite logica prelucrrii, datele, funciile i controlul. Ca urmare, un
sistem baze de date distribuite, DDBS, se poate defini ca o colecie de baze de date
multiple, logic interlegate, distribuite n ntreaga reea de calculatoare i de
comunicaii. Este important de reinut c un DDBS nu este un sistem n time-sharing
i nici un sistem multiprocesor puternic sau slab cuplat. O baz de date centralizat,
199

Universitatea SPIRU HARET

CDB (Centralized DataBase), este o baz de date localizat ntr-unul din nodurile
reelei de calculatoare. Un sistem de gestiune a bazelor de date (SGBD) centralizat
ntr-o reea de calculatoare reprezint sistemul distribuit n care utilizatorii, prin
intermediul reelei de comunicaii asociate, acceseaz DDB (fig.8.4).
Un mediu specific unui sistem de gestiune a bazelor de date (SGBD)
distribuite, DDBMS, ofer posibilitatea accesrii bazelor de date distribuite (DDB)
din oricare locaie din reeaua de calculatoare prin intermediul reelei de comunicaii
asociate (fig.8.5). Aa cum se observ din configuraia DDBMS, datele sunt
memorate ntr-un numr de locaii (site-uri) ale reelei de calculatoare, iar fiecare site
conine, logic, un singur procesor. DDB pot fi astfel utilizate n orice organizaie care
are o structur organizatoric descentralizat, inclusiv n compunerea sistemelor
informatice pentru management, MIS (Management Information Systems) i a
sistemelor informatice pentru asistarea deciziei, DSS (Decision Support Systems).

SITE 2
SITE 3
SITE 1
REEA DE
COMUNICAII
SITE 4
SITE 6
SITE 5
Fig.8.4. Un SGBD centralizat ntr-o reea

DDBMS prezint avantaje legate de gestiunea transparent a datelor


distribuite, fragmentate i replicate, de mbuntirea fiabilitii i disponibilitii
prin intermediul tranzaciilor distribuite, de o dezvoltare mai facil i mai
economic a DDBMS. Gestiunea transparent presupune separarea semanticilor de
nivel ridicat de cele de nivel sczut (prin semantic se nelege n acest caz relaia
dintre cuvinte sau simboluri i semnificaia lor). Problema fundamental n DDBMS
este realizarea independenei datelor, adic separarea datelor de programele care le
manipuleaz.
200

Universitatea SPIRU HARET

Din punctul de vedere al oricrui utilizator, DDB este perceput ca o baz de


date centralizat. Actualizarea datelor replicate necesit implementarea controlului
concurenei distribuite. Proiectarea unei DDB se refer, ntre altele, la modul cum
este distribuit baza de date, cum se distribuie datele replicate i nereplicate i cum
se rezolv problema de gestionare a directoarelor. Directoarele (Directory)
reprezint cataloage ce conin elemente de gestiune a DDB. Prelucrarea
interogrilor asigur conversia tranzaciilor utilizatorului n manipularea datelor,
minimizeaz costurile de transmitere a datelor i de prelucrare local a acestor date
i optimizeaz aceste operaii. Controlul concurenei distribuite se refer la
sincronizarea acceselor concurente la DDB, consistena i izolarea efectelor
tranzaciilor i gestionarea blocrilor. Fiabilitatea privete modul cum
reacioneaz sistemul la defectri, atomicitatea i durabilitatea. Relaiile existente
ntre diferitele componente ale mediului DDBMS sunt sintetizate n fig.8.6. Este
interesant de precizat c ntre cerinele de prelucrare de interes general din sistemul
informatic i cerinele de prelucrare a bazelor de date exist o dihotomie. Sistemul
de operare al reelei sprijin DDB. Caracteristicile de sistem deschis i de
interoperabilitate al DDBS au condus la ideea dezvoltrii sistemelor multibaze de
date distribuite, DMDBS (Distributed Multi-DataBase Systems).

SITE 2
SITE 3
SITE 1
REEA DE
COMUNICAII
SITE 4
SITE 6
SITE 5

Fig.8.5. Configuraia unui sistem de gestiune a bazelor de date distribuite (DDBMS)

201

Universitatea SPIRU HARET

FIABILITATE

GESTIONAREA
DIRECTOARELOR

PROIECTAREA
DISTRIBUIRII

CONTROLUL
CONCURENEI

GESTIUNEA
BLOCRILOR

PRELUCRAREA
INTEROGRILOR
Fig.8.6. Relaiile existente ntre diferitele componente ale mediului DDBMS

Aa cum s-a artat mai sus, o baz de date distribuit, DDB (Distributed
Data-Base), reprezint o baz de date logic integrat (utilizatorii percep o singur
baz de date), dar fizic distribuit pe mai multe calculatoare distincte,
interconectate ntre ele. Utilizatorii interacioneaz cu o DDB n acelai mod n
care interacioneaz cu o baz de date centralizat. O DDB este compus din mai
multe baze de date locale (LDB) care sunt memorate n nodurile unei reele de
calculatoare (uneori, i dintr-o baz de date central, CDB). Baza de date central
primete de la bazele de date locale numai acele colecii de date a cror stocare este
justificat la nivelul CDB n scopul unor prelucrri centralizate la nivelul
sistemului informatic integrat.
DDB reprezint o baz de date global i este conceput dup o singur
schem conceptual global, cunoscut i accesat de utilizatorul global.
Utilizatorul local are acces i exploateaz una sau mai multe baze de date locale, n
limitele permisiunii acordate de softul de gestiune n reea la dispoziie.
Date C.J. [5] a identificat dousprezece obiective pentru DDB:
autonomia local a site-urilor componente ale unui sistem distribuit (n cea
mai mare msur); fiecare site component poate opera, de regul, cu datele din
bazele de date locale (LDB) fr a depinde de alt site;
absena unei dependene de un site central;
funcionarea continu datorit fiabilitii i disponibilitii crescute a
sistemelor distribuite la apariia ntreruperilor aleatoare;
existena transparenei (independena de localizare), adic pentru
utilizatorul final nu are importan unde sunt stocate fizic datele de care acesta are
nevoie;
independena de fragmentarea datelor, ceea ce nseamn c fragmentarea
datelor n DDB (prezentat n paragraful urmtor) nu afecteaz percepia
utilizatorului final, din punct de vedere logic, de nefragmentare a datelor;
independena de replicarea (reproducerea) datelor, adic replicarea
datelor nu afecteaz percepia utilizatorului final care, logic, se comport ca i cum
datele nu ar fi fost replicate;
procesarea distribuit a interogrilor;
202

Universitatea SPIRU HARET

gestionarea distribuit a tranzaciilor, prin care, tranzaciile, compuse din


mai muli ageni (agenii reprezint procese terminate sub denumirea de tranzacii pe
anumite site-uri), sunt refcute cu ajutorul protocolului de finalizare n dou faze
(finalizare/derulare napoi), iar controlul concurenei se obine prin regula de blocare;
independena de hardware);
independena de sistemul de operare;
independena de reeaua de calculatoare i de comunicaii;
independena de DDMBS.
Un DBMS pentru DDB, adic un DDBMS, asigur urmtoarele obiective:
a) transmiterea datelor la utilizatorii acestora (utilizatori care dispun de
dreptul i autoritatea de a le accesa);
b) asigurarea unui raport optim ntre centralizarea i descentralizarea
resurselor de date (o centralizare ridicat a resurselor de date determin costuri
foarte mari de prelucrare i transmitere a datelor la utilizatori);
c) creterea durabilitii i disponibilitii sistemului (sistem open, adic
deschis s primeasc oricnd noi structuri de baze de date n schema conceptual
global, precum i noi restructurri ale bazelor de date locale);
d) asigurarea proiectrii structurii organizatorice i funcionale a sistemului
informaional conform cu structura organizaiei deservite de sistem;
e) sporirea gradului de utilizare a sistemului informaional (mrirea
numrului de utilizatori efectivi).
n implementarea DDMBS este valabil aceeai filosofie ca i la decizia de
implementare a unei reele de calculatoare: o astfel de decizie are consecine pe
termen mediu i lung, implic investiii mari, nu mai poate fi schimbat dup
achiziia platformei de baz de un anumit tip dect cu plata renunrii n
totalitate la soluia iniial. Ca urmare, decizia de implementare a unui anumit
DDBMS implic nainte de toate alegerea unui furnizor de marc. Cei ase mari
productori de DDBMS - Oracle, Sybase, Informix, Microsoft, IBM i Computer
Associates monopolizeaz peste 90% din piaa mondial a domeniului.
8.3. Fragmentarea datelor n bazele de date distribuite
Principiul fundamental al bazelor de date distribuite const n faptul c,
pentru oricare dintre utilizatorii finali, baza de date distribuit trebuie s fie
perceput ca o baz de date nedistribuit.
O baz de date distribuit, DDB, este fragmentat (distribuit) pe baza
urmtoarelor principii:
dispunerea datelor stocate n nodul de producere i de utilizare a lor;
minimizarea cilor de transport de date n cadrul reelei de calculatoare.
Fragmentarea DDB se realizeaz pe dou niveluri [44]:
1) mulimea de colecii de date este partiionat n submulimi de colecii de date;
2) colecia de date este partiionat n fragmente (pe orizontal - cu aceeai
structur ca i colecia de date i pe vertical fragmentele conin fiecare numai o
parte din structura coleciei de date din care provin).
Fragmentele rezultate dup partiionarea DDB reprezint elemente de
distribuire a datelor. Ansamblul fragmentelor unei DDB stocate ntr-un nod al
reelei de calculatoare reprezint o baz de date local (LDB).
203

Universitatea SPIRU HARET

De regul, un fragment de date reprezint un derivat obinut prin orice


combinaie aleatoare de restricii i proiecii din baza de date. Se reamintete, de la
modelul relaional, c operaia de restricie asigur selecia anumitor nregistrri
(rnduri) dintr-un tabel al unei baze de date relaionale, iar operaia de proiecie
permite extragerea cmpurilor (coloanelor) specificate dintr-un tabel.
Dac se consider o variabil-de-relaie (variabila care face legtura ntre
cmpul reprezentnd cheia primar i cmpul reprezentnd o cheie extern) de
baz CL pentru entitatea CLIENTI (aa cum este perceput de utilizatorul final) ce
conine clienii-persoane juridice (Corporate) ai unei bnci, cu valorile eantion
prezentate n fig.8.7, se poate explica fragmentarea datelor. Dou fragmente de
date, cu numele de Cl _BUC i CL _CTA, se pot defini astfel:
FRAGMENT CL AS
CL_BUC FROM SITE `Bucuresti` WHERE CORP# = CORP#(`C1`)
OR
CORP# = CORP#(`C3`),
CL_CTA FROM SITE `Constanta` WHERE CORP# = CORP#(`C1`)
OR
CORP# = CORP#(`C2`)
OR
CORP# = CORP#(`C4`);
Tuplurile corespunztoare clienilor bncii ce opereaz n Bucureti sunt
memorate n site-ul din Bucureti, iar tuplurile clienilor bncii ce opereaz n
Constana sunt memorate n site-ul din Constana.
Bucureti

Constana

CL_BU

CL_CT

CL#

CORP#

SUMA_C

CL#

CORP#

SUMA_C

N1
N4

C1
C3

1200000
2450000

N2
N3
N5
N6

C2
C2
C4
C1

800000
1050000
4200000
2500000

CL
CL#

CORP#

SUMA_C

N1
N2
N3
N4
N5
N6

C1
C2
C2
C3
C4
C1

1200000
800000
1050000
2450000
4200000
2500000

Fig.8.7. Exemplu de fragmentare a datelor


204

Universitatea SPIRU HARET

Pe baza fragmentelor de date CL_BUC i CL_CTA se poate reconstitui


variabila-de-relaie de baz iniial CL cu ajutorul operaiei de reuniune a
fragmentelor de date. Trebuie precizat faptul c operaia de reuniune se folosete
pentru fragmentele orizontale, iar operaia de uniune se utilizeaz pentru fragmentele
verticale. n cazul operaiei de uniune, se pot combina dou tabele ntr-unul singur pe
baza valorilor comune ce exist ntr-un cmp (coloan) comun.
8.4. Gestiunea tranzaciilor
Tranzacia, n general, este o activitate individual ntr-un sistem de calcul
(de exemplu, actualizarea unui articol de inventar sau introducerea unei comenzi
efectuate de un client) [68]. n sistemele de gestiune a bazelor de date distribuite
(SGBDD), tranzacia reprezint o unitate logic de prelucrare prin intermediul
creia se realizeaz sigurana i consistena bazei de date [8]. O baz de date este
ntr-o stare consistent dac sunt ndeplinite toate constrngerile de integritate a
datelor. Baza de date se gsete n stare consistent att naintea executrii
tranzaciei, ct i dup executarea acesteia (n timpul executrii tranzaciei, baza de
date poate s fie n stare inconsistent). Sigurana bazei de date nseamn tolerana
acesteia fa de defectri i capacitatea de recuperare a datelor dup apariia unor
defectri. Consistena bazei de date semnific respectarea restriciilor de integritate
a datelor dup efectuarea uneia sau mai multor operaii de prelucrare n baza de
date (adugare, actualizare, tergere etc.).
n esen, o tranzacie este o succesiune de operaii de scriere i de citire a
bazei de date, precum i de operaii de calcul. O tranzacie este caracterizat de
punctul de nceput i de punctul de sfrit. Din acest punct de vedere, tranzaciile
se clasific n:
a) tranzacii implicite (punctul de nceput i cel de sfrit sunt automat
definite);
b) tranzacii explicite (utilizarea unor comenzi speciale pentru stabilirea
punctelor de nceput i sfrit ale tranzaciei).
n SQL-Server, tranzaciile explicite permit utilizatorului s grupeze un set
de comenzi SQL ntr-o tranzacie folosind comenzile BEGIN TRANSACTION i
COMMIT TRANSACTION, pentru precizarea punctelor de nceput i sfrit.
Utilizatorul poate el nsui defini punctele de salvare n cazul tranzaciilor
complexe, folosind comanda SAVE TRANSACTION, sau s deruleze napoi
tranzacia pn la punctul de nceput sau pn la un punct de salvare anterior,
folosind comanda ROLLBACK TRANSACTION.
Accesul unei baze de date distribuite (ce definete gestiunea tranzaciilor) se
face, de regul, n mod concurent, motiv pentru care tolerana la defectri i
meninerea consistenei bazei de date prin controlul concurenei devin cerine
prioritare pentru fiabilitatea bazei de date [8]. Tolerana la defectri privete
capacitatea bazei de date i a sistemului de gestiune a bazei de date de a face fa
defectelor dezastruoase astfel nct s nu se piard date (s existe posibilitatea
recuperrii datelor) i s nu fie afectat activitatea (operaiunea) n curs de
desfurare. Controlul concurenei se refer la mecanismele de sincronizare a
acceselor cu scopul de meninere a integritii bazei de date. n concluzie, cu
205

Universitatea SPIRU HARET

ajutorul toleranei la defectri i controlul concurenei se asigur sigurana i


consistena bazei de date.
Orice tranzacie trebuie s ia sfrit (cu rezultat pozitiv sau negativ) prin
executarea tuturor operaiilor prevzute de procedur. Ultima operaie executat n
acest caz este una de validare (commit). n caz contrar, ultima operaie efectuat
este una de abortare (abort) cu semnificaia c tranzacia nu a reuit executarea
tuturor operaiilor prevzute de procedur. Urmarea acestei situaii o constituie
anularea tuturor operaiilor efectuate asupra bazei de date i meninerea situaiei
dinaintea nceperii tranzaciei.
Tranzacia trebuie s ndeplineasc patru condiii, sintetizate prin acronimul
ACID atomicitate, consisten, izolare i durabilitate. Atomicitatea nseamn c
orice tranzacie reprezint o unitate elementar de prelucrare; execuia acesteia se
produce dup regula Totul sau nimic!. Consistena unei tranzacii semnific
proprietatea de transformare (corect din punct de vedere logic) a unei baze de date
dintr-o stare consistent ntr-o alt stare consistent. Altfel exprimat, sunt
meninute n permanen restriciile de integritate ale bazei de date (unicitatea
cheilor primare i integritatea referenial). Prin consisten este reflectat
corectitudinea operaiilor specifice tranzaciei. Izolarea reprezint proprietatea unei
tranzacii de a poseda accesul numai la strile consistente ale bazei de date (pe
timpul executrii operaiilor unei anumite tranzacii, pn la realizarea operaiei de
validare, celelalte tranzacii concurente nu au permis accesul la modificrile
provocate de operaiile acestei tranzacii asupra bazei de date). Prin intermediul
acestei proprieti este prevenit apariia fenomenului de abortare n cascad a
tranzaciilor (efectul de domino). Durabilitatea tranzaciei se refer la rezultatele
tranzaciei asupra bazei de date n sensul c acestea devin permanente (sunt scrise
n baza de date) dup terminarea tranzaciei. Durabilitatea se obine cu ajutorul
jurnalului (un fiier secvenial n care sunt nregistrate operaiile executate de
tranzacii). Jurnalul cuprinde istoria evoluiei ntregului sistem baz de date.
Pentru exemplificare, se consider tranzacia efectuat de un client al unei
bnci, tranzacie prin care efectueaz o plat din contul personal. Clientul bncii
efectueaz aceast tranzacie prin intermediul unei maini inteligente (multimat) n
sistemul self-banking.
Pentru simplificare, baza de date este format din trei relaii definite de:
CLIENT (Cod_client, Nume_client, Adresa_client, Telefon_client,
E_mail_client)
CONT_BANCAR (Nr_cont, Cod_client, Moneda, Suma_debitoare,
Suma_creditoare, Comision, Dobanda, Sold)
TRANZACTIE (Cod_tranzactie, Nr_cont, Suma _tranzactie, Detalii).
Atributele din relaii au semnificaia rezultat din denumirea lor. S-a pornit
de la premiza c un client al unei bnci (persoan juridic sau persoan fizic)
poate avea mai multe conturi bancare n cadrul aceleiai bnci (one-to-many).
Nr_cont se identific cu codul IBAN. S-au evideniat unele atribute dei acestea, n
practic, sunt codificate n Cod_client, Nr_cont i Cod_tranzactie. Cod_client
reprezint codul unic de nregistrare fiscal (CUIF) pentru persoane juridice,
respectiv codul numeric personal (CNP) pentru persoane fizice. Atributele
subliniate reprezint cheile primare ale relaiilor. Nu au fost evideniate atribute ca
Data_Tranzactie, Tip_tranzactie, Cont_destinatie etc. care au fost considerate,
206

Universitatea SPIRU HARET

pentru simplificare, incluse la Detalii. De asemenea, nu au fost evideniate


atributele care sunt legate de securitatea tranzaciei i a datelor.
Pentru efectuarea tranzaciei, clientul bncii introduce codul tranzaciei pe
care dorete s o efectueze i numrul contului bancar n care se vor reflecta efectele
tranzaciei care se va efectua.
Dac se folosete o interfa SQL pentru efectuarea tranzaciei, reprezentarea
tranzaciei de nregistrare a unei pli de ctre clientul bncii, n limbaj pseudocod,
se scrie astfel [8]:
Begin Transaction TRANZACTIE
Begin
Input (Cod_tranzactie, Nr_cont)
EXEC SQL
UPDATE CONT_BANCAR
Set Suma_debitoare=Suma_tranzactie
WHERE Nr_cont=Numar_cont
EXEC SQL
INSERT INTO TRANZACTIE (Cod_tranzactie, Nr_cont,
Suma_tranzactie, Detalii).
VALUES (Cod_tranz, Numar_cont, Suma_plata, NULL)
Output ( Plata a fost inregistrata!)
End.
n relaia CONT_BANCAR suma care constituie obiectul plii ce se va
efectua se scade din sold (se trece la suma_debitoare), iar n relaia TRANZACTIE
se scrie o nregistrare care materializeaz datele de identificare a tranzaciei. Nu sau luat n considerare toate operaiile de actualizate a datelor din baza de date
considerat.
Cnd tranzacia se termin cu succes, se produce n final operaia de
validare (COMMIT), iar n caz contrar, se produce operaia de abortare (ABORT
sau ROLLBACK). Cnd are loc abortarea, tranzacia este oprit, iar efectele
operaiilor deja efectuate sunt anulate, ceea ce nseamn c baza de date este adus
n starea pe care o avea naintea nceperii tranzaciei.
Cnd s-a produs validarea tranzaciei, efectele acestei tranzacii nu mai pot fi
anulate.
8.5. Protecia bazelor de date distribuite
Protecia bazelor de date distribuite reprezint un ansamblu de msuri umane
i faciliti oferite de SGBDD (DDBMS) prin care se asigur integritatea datelor
(corectitudinea datelor introduse) i securitatea datelor (accesul autorizat la date).
Protecia datelor se face prin salvarea lor n cazul unor defecte sau erori accidentale
([18],[19]).
Se deosebesc trei aspecte ale asigurrii integritii datelor:
a) asigurarea integritii semantice a datelor (prevenirea introducerii unor
date incorecte i a efecturii unor prelucrri greite);
b) controlul accesului concurent la date (prevenirea apariiei unor rezultate
incorecte din execuia concurent a unor prelucrri n regim multiutilizator);
207

Universitatea SPIRU HARET

c) salvarea i restaurarea bazei de date (refacerea acesteia atunci cnd a fost


afectat de funcionarea anormal sau de cderea SGBDD-ului, a sistemului de
operare sau ca urmare a unor defecte hardware).
Integritatea semantic a datelor. Introducerea unor date eronate n baza de
date sau prelucrri care furnizeaz rezultate greite trebuie prevenite prin includerea
n programele de aplicaie a unor secvene pentru testarea datelor i a unor faciliti
de asigurare a integritii semantice a datelor oferite de SGBDD. Concret, orice
operaie asupra datelor trebuie s respecte restriciile de integritate. Dup modul n
care sunt exprimate, restriciile de integritate sunt implicite i explicite.
Restriciile de integritate implicite nseamn existena verificrilor la introducerea datelor (nu se accept valori care nu aparin tipului de date specificat), precum
i, dac exist conceptul de cheie unic, la inserare se va verifica unicitatea cheii.
n modelul relaional exist dou restricii de integritate asociate cheilor
primare i cheilor externe, i anume:
1. Integritatea entitii, care presupune c nici un atribut ce particip la
formarea cheii primare a unei relaii nu poate primi o valoare NULL, aceasta din
motivul c o cheie primar trebuie s identifice n mod unic tuplurile unei relaii.
2. Integritatea referenial (referirii), adic orice valoare a unei chei externe
din relaia care refer trebuie s aib corespondent o cheie primar cu aceeai
valoare n relaia referit sau s fie NULL.
Restriciile de integritate explicite pot fi incluse n programele de aplicaie i
verificate n momentul execuiei sau pot fi memorate n dicionarul datelor i
verificate automat de SGBDD la fiecare operaie care se execut asupra anumitor
date.
Controlul accesului concurent la baza de date. n sistemul multiutilizator,
sistemul de operare asigur accesul concurent al programelor n execuie la resurse,
dup o anumit disciplin intern. n cazul aplicaiilor, care utilizeaz aceeai baz
de date, ntreruperea executrii unui proces pentru nceperea sau continuarea altora
poate conduce la alterarea datelor. Asigurarea integritii datelor, n acest context,
presupune existena unor faciliti speciale pentru controlul accesului concurent la
date la nivelul SGBDD-ului, i acestea sunt tranzaciile (paragraful 8.4).
Tehnica blocrii. O execuie neserial a unor tranzacii concurente este
considerat corect dac este serializabil, adic dac produce acelai rezultat ca i
execuia serial a acestor tranzacii. Tehnica utilizat de SGBDD pentru a asigura
execuia serializabil a tranzaciilor este tehnica blocrii. n cea mai simpl form,
blocarea unor date de ctre o tranzacie interzice celorlalte tranzacii accesul la
aceste date. Blocarea se poate aplica la nivelul ntregii baze de date, la nivelul unui
fiier, grup de nregistrri, nregistrare sau chiar la nivelul unui singur cmp, dar cu
implicaii diferite.
La aplicarea tehnicii blocrii, se urmresc dou aspecte:
a) n procesul de actualizare este interzis accesul celorlali utilizatori pn la
completarea acestei operaii;
b) accesul la datele pe care un utilizator le citete fr a le actualiza este
interzis utilizatorilor pentru operaia de actualizare, dar este permis pentru operaia
de citire.
208

Universitatea SPIRU HARET

Blocarea poate fi:


- pentru citire sau partajabil (datele pot fi folosite i de ali utilizatori, dar
numai pentru operaii de citire);
- pentru scriere sau exclusiv (datele nu pot fi accesate de alt utilizator).
Interblocarea resurselor intervine atunci cnd dou tranzacii blocheaz
anumite resurse, apoi fiecare solicit resursele blocate de cealalt. De aceea, la
nivelul SGBDD exist faciliti de prevenire sau de rezolvare a acestor situaii,
putndu-se implementa una din urmtoarele strategii:
1. Prevenirea blocrii, adic programele blocheaz toate resursele de care au
nevoie nc de la nceputul fiecrei tranzacii. Aceast strategie este dificil de
implementat, deoarece n cele mai multe cazuri este imposibil de precizat nainte,
ce resurse vor fi necesare pentru o tranzacie.
2. Soluionarea interblocrii. Se poate realiza prin utilizarea de ctre sistem
a unui graf al precedenelor care s reflecte dependenele dintre procese i anume
ordinea n care acestea trebuie executate.
Salvarea i restaurarea bazei de date au ca scop readucerea datelor la o form
consistent n urma unor evenimente ce au alterat corectitudinea lor, cum ar fi:
1) funcionarea anormal sau o cdere a SGBDD-ului sau a sistemului de
operare;
2) o defeciune a suportului fizic pe care este memorat baza de date.
SGBDD asigur acumularea de informaii despre derularea tranzaciilor pn
n momentul ntreruperii lucrului i aplicarea uneia din urmtoarele strategii de
restaurare:
- derularea napoi a tranzaciilor necompletate (cu ROLL-BACK), care
presupune anularea modificrilor fcute de acestea asupra bazei de date;
- derularea napoi a tranzaciilor completate, dar neefectuate n baza de date
(cu ROLLFORWARD), ce presupune efectuarea acelor transformri prin care baza
de date restaurat s conin rezultatele acestora (8).
Salvarea bazei de date este operaia prin care se stocheaz date n vederea
folosirii lor pentru o eventual restaurare. Volumul informaiilor care se salveaz,
natura lor i intervalul de timp dintre dou operaii succesive de salvare determin
strategia de salvare.
Datele salvate pot fi diferite combinaii ntre:
- copii ale bazei de date i copii ale jurnalelor acestora;
- jurnale ale tranzaciilor;
- jurnale ale imaginii nregistrrilor din baza de date.
Copiile bazei de date pot fi realizate automat de sistem la anumite intervale
de timp sau la comanda administratorului bazei de date, ori de cte ori este nevoie
i de obicei pe un alt suport magnetic dect cele pe care rezid baza de date. Aceste
copii pot fi utilizate doar n situaia n care prelucrrile efectuate ntre momentul
realizrii copiilor i cel al apariiei unei defeciuni pot fi reluate. Acest lucru este
posibil doar dac prelucrrile sunt efectuate ntr-o secven cunoscut, iar timpul
necesar pentru reprocesarea lor nu este foarte mare.
Durata mare de execuie pentru astfel de copii face ca anumite SGBDD-uri
s recurg la copii ale jurnalelor bazei de date. Volumul datelor care vor fi copiate
n acest caz va fi mai mic, iar procesul de restaurare va implica ntr-o msur mai
mic intervenia uman.
209

Universitatea SPIRU HARET

Jurnalul tranzaciilor este un fiier special ntreinut de SGBDD, n care sunt


memorate informaiile despre tranzaciile efectuate asupra bazei de date, cum sunt:
identificatorul sau codul tranzaciei;
momentul nceperii execuiei tranzaciei;
numrul terminalului sau identificatorul utilizatorului care a iniiat
tranzacia;
datele introduse;
nregistrrile modificate i tipul modificrii.
Jurnalul imaginilor se deosebete de jurnalul tranzaciilor prin aceea c el nu
conine descrierea operaiilor efectuate asupra bazei de date, ci efectul acestora.
Acest tip de jurnal poate avea una din formele:
jurnalul cu imaginea nregistrrilor dup modificare i, n acest caz,
conine copia fiecrei nregistrri care este modificat;
jurnalul cu imaginea nregistrrii nainte de modificare;
jurnalul care conine ambele tipuri de mai sus.
n funcie de defeciunea care a determinat ntreruperea lucrului, restaurarea
bazei de date se realizeaz automat de SGBDD sau manual, adic necesit
intervenie uman.
Restaurarea automat a bazei de date este executat de SGBDD dup
oprirea i restaurarea sistemului n urma unei cderi. Prin acest proces, baza de date
este adus ntr-o form consistent prin derularea napoi a tranzaciilor active n
momentul defeciunii i continuarea tranzaciilor nregistrate ca finalizate n fiierul
jurnal, dar care nu sunt nc reflectate n baza de date. O cerere de acces la date,
primit de SGBDD, va determina transferul unei pagini de disc n memoria
principal. Eventualele modificri ale datelor, aflate acum n memoria principal,
nu vor fi urmate imediat de rescrierea paginii respective pe disc.
Aceast operaie poate fi fcut periodic sau la o cerere explicit a sistemului
sau n cazul n care este nevoie de spaiu fizic pentru o alt pagin de disc
solicitat. Pagina care se va nlocui va fi aceea care nu a fost utilizat ntr-un
interval mare de timp. De obicei, sunt meninute n memorie paginile frecvent
utilizate, ceea ce duce la reducerea numrului de operaii de transfer ntre memoria
principal i memoria extern. Acelai regim de pstrare n memorie, pn la un
transfer ulterior pe disc, se aplic i informaiilor de jurnalizare a tranzaciilor.
Sincronizarea memoriei cu baza de date i fiierul jurnal se realizeaz prin
executarea unui punct de verificare (ceckpoint). SGBDD-ul poate executa punctul
de verificare la o comand explicit CHECKPOINT. Un punct de verificare
presupune executarea urmtoarelor operaii:
a) oprirea proceselor active la momentul respectiv;
b) forarea scrierea paginilor de memorie n jurnale i apoi n baza de date;
c) scrierea unei nregistrri speciale n jurnalul tranzaciilor, scriere necesar
la restaurarea i reluarea prelucrrilor, care indic starea fiecrui proces activ n
momentul executrii punctului de verificare, starea fiierelor temporare de lucru,
pointerii la cozile de mesaje;
d) continuarea proceselor anterior oprite (8).
Restaurarea manual a bazei de date este astfel denumit, deoarece implic
intervenie uman, i nu pentru c ar fi un proces manual. Este necesar n situaia
distrugerii suportului de memorie extern pe care rezid baza de date.
210

Universitatea SPIRU HARET

n cazul anumitor SGBDD-uri, acest proces se bazeaz doar pe efectuarea de


copii de siguran ale bazei de date.
Restaurarea va consta din ncrcarea celei mai recente copii a bazei de date
i reluarea prelucrrilor efectuate din momentul copierii i pn la producerea
defeciunii.
Copiile se pot realiza n una din urmtoarele maniere:
1. Deconectarea tuturor utilizatorilor de la baza de date, efectuarea copierii i
apoi conectarea utilizatorilor la baza de date.
2. Efectuarea copiilor n mod dinamic, adic n timp ce utilizatorii acceseaz
baza de date.
Aceast facilitate este util n regim de lucru on-line.
Copierea bazei de date va reflecta starea bazei de date la momentul
respectiv, inclusiv efectele tranzaciilor n curs de execuie. SGBDD-ul va realiza
automat derularea napoi a tranzaciilor n curs de execuie, obinndu-se astfel o
stare consistent a bazei de date.
Timpul consumat de operaia de copiere este dependent de mrimea bazei de
date, ca i de metoda de copiere utilizat. Acest parametru va fi luat n considerare
la stabilirea frecvenei de realizare a copiilor. Restaurarea manual este cu att mai
eficient, cu ct SGBDD-ul va permite i copierea fiierelor jurnal. n intervalul
dintre dou copieri ale bazei de date se vor realiza mai multe copii ale fiierului
jurnal, se vor stabili punctele de verificare, n felul acesta asigurndu-se
sincronizarea memoriei cu fiierul jurnal i cu baza de date.
Tranzaciile inactive din jurnal vor fi terse din fiier.
Procesul de restaurare presupune ncrcarea celei mai recente copii a bazei de
date, urmat de ncrcarea copiilor jurnalului n ordinea n care au fost efectuate.
Asigurarea securitii bazei de date presupune interzicerea accesului
neautorizat la date i se realizeaz cu un set de msuri de protecie uman, software
i hardware. Astfel, se pot stabili parole pe baza crora s fie permis accesul la
resursele sistemului de calcul. SGBDD-ul poate activa i un jurnal pentru urmrirea
accesului la baza de date, pe baza lui fiind posibil detectarea ncercrilor de acces
neautorizat. Pentru cererile de I/O transmise sistemului de operare de SGBDD sunt
posibile verificri suplimentare referitoare la utilizarea corect a fiierelor sau a
funciilor sistemului de operare.
Hardware-ul poate oferi i el o protecie suplimentar prin transferarea
datelor numai n zone de memorie care sunt controlate de SGBDD.
Modalitile de asigurare a securitii bazei de date sunt:
1. Autorizarea i controlul accesului la date, care presupun identificarea
utilizatorilor, restricionarea accesului acestora la date, precum i stabilirea de
restricii pentru datele accesate.
SGBDD-urile actuale folosesc, pentru identificarea utilizatorului, parole,
fiecare parol fiind asociat cu anumite drepturi de acces la date. SGBDD-ul va
menine pentru fiecare parol o list de privilegii pentru user-ul care folosete acea
parol.
User-ii pot fi asociaii unor grupuri, la drepturile fiecruia adugndu-se
drepturile stabilite pentru grupul respectiv. Administratorul bazei de date este userul, care, implicit, are toate drepturile asupra bazei de date, precum i dreptul de a
stabili sau revoca privilegii pentru ceilali utilizatori.
211

Universitatea SPIRU HARET

Utilizatorii obinuii sunt cei care nu au n proprietate obiecte i nu au alte


privilegii dect cele motenite ca membri ai unui grup sau menionate explicit de
administratorul bazei de date sau proprietarii de obiecte.
2. Definirea i utilizarea viziunilor (a schemei externe a bazei de date).
Viziunile sunt partiii logice ale bazei de date. Ele sunt definite pentru diferii
utilizatori n raport cu necesitile acestora de a avea acces la date. Securitatea
datelor va fi asigurat prin definirea tuturor drepturilor necesare unui utilizator
pentru o viziune i revocarea drepturilor pentru obiecte iniiale.
Utilizatorul nu va avea acces la efectuarea unor operaii asupra vizunii care s
afecteze obiectele iniiale.
3. Realizarea de proceduri speciale. Sunt SGBDD-uri ce au facilitatea
definirii unor proceduri care s fie pstrate la nivelul sistemului, ntr-o form
precompilat. n aceste proceduri se vor specifica explicit operaiile care se vor
efectua asupra datelor.
4. Criptarea datelor este operaia de codificare a datelor pe timpul stocrii
sau al transportului lor, astfel nct descifrarea lor s poat fi fcut numai de
posesorii autorizai de cod. La nivelul SGBDD-ului, aceast facilitate are dou
forme:
a) existena unor rutine speciale care realizeaz criptarea datelor la cerere sau
automat;
b) existena unor instrumente care permit utilizatorului s-i realizeze rutine
proprii de criptare.
8.6. Baze de date online
8.6.1. Problematica general
Bazele de date online reprezint un tip special de baze de date distribuite care
este folosit ntr-un mediu de tipul Internet, Extranet sau Intranet. Din punctul de
vedere al utilizatorului final din organizaia economic, este mai puin important
unde este localizat baza de date (pe Intranet-ul organizaional, pe Extranet sau pe
Internet), ci dac i satisface cerinele imediate, sub aspect cantitativ i calitativ, de
informare sau pentru asistarea deciziei.
Reeaua Intranet este o reea local de calculatoare i de comunicaii pentru
organizaii mari care asigur, prin tehnologia Web, cerinele de informare i
documentare ale angajailor si, iar prin extensie, prin cont i parol de acces
(reeaua Extranet), i ale utilizatorilor externi agreai de organizaie (clieni,
furnizori, colaboratori externi etc.). Reeaua Intranet poate s existe complet
separat de reeaua Internet.
Arhitectura Intranet este prezentat, dup BDASEIG [64], n fig.8.8.
Serverul Web, denumit i server HTTP, este un server software care
folosete protocolul de transfer al hipertextelor, HTTP (HyperText Transfer
Protocol) pentru a furniza documente HTML i scripturi asociate la cererea
utilizatorilor finali. Prin intermediul unor interfee standard de tipul API
(Application Programming Interface) sau CGI (Common Gateway Interface), se
212

Universitatea SPIRU HARET

pot executa pe server programe sau scripturi prin care sunt accesate bazele de date
online de diverse tipuri i organizate dup diverse modele de date. Se reamintete
c scriptul este un program compus dintr-un set de instruciuni cu privire la o
aplicaie sau la un program utilitar. n aplicaiile Web, scripturile sunt utilizate
pentru obinerea interactivitii i personalizrii paginilor Web.
n cadrul acestei reele Intranet, serviciile furnizate sunt de acces la bazele
de date (de unde se obin date sub form de informaii i cunotine), de
comunicaii i partajarea resurselor informatice, pentru accesarea i dezvoltarea
aplicaiilor, de administrare, securitate i transport etc. Aceste servicii sunt
mprite pe opt niveluri (Forrester Research,[64]). ntre acestea se regsesc o serie
de servicii informaionale specializate ca pagini Web, transfer de fiiere realizabil
prin intermediul protocolului FTP, (File Transfer Protocol), groupware, tiri
(News), circulaia documentelor, videoconferine i audioconferine, forumuri
electronice.

MESAGERIE
PROGRAME

GROUPWARE
NEWS

SMTP/POP

API
(BROWSER

INTERFEE
STANDARD

TCP/IP

WEB)

FTP

DIRECTOARE
CU FIIERE

JAVA

CLIENT
MAIL

Fig.8.8. Arhitectura reelei Intranet

Paginile Web sunt documente Web, cu legturi la alte documente Web, ce


sunt formate din fiiere HTML, fiiere asociate pentru grafic i scripturi, stocate
ntr-un director personalizat pe un server Web, ce se identific printr-o adres de
resurs tip Internet, URL (Uniform Resource Locator). Paginile Web interactive
conin i applet-uri Java (programe ce se execut ntr-o aplicaie cu browser, adic
213

Universitatea SPIRU HARET

program de navigare n reelele de tipul Intranet, Extranet i Internet). Mai multe


documente Web, intercorelate ntre ele, formeaz un site Web. Un server Web
poate stoca mai multe site-uri Web (pentru persoane fizice i firme mici), dup cum
mai multe servere Web pot gzdui acelai site Web (organizaiile mari).
Transferul de fiiere se efectueaz n directoare de fiiere, cataloage sau
dosare (folders).
Groupware asigur unui grup de utilizatori din reeaua Intranet posibilitatea
de a colabora la realizarea unui proiect.
Serviciile Web reprezint n esen o familie de aplicaii bazate pe
protocoalele Web ce pot fi combinate i integrate n aplicaiile comerciale (B2B,
B2C) pe Intranet, Extranet, respectiv Internet. n afara protocolului HTTP,
reamintit mai sus i apreciat ca destul de nesigur, sunt utilizate alte protocoale
standard ca XML i SOAP. Protocolul XML (extensible Markup Language) este o
form condensat a limbajului standard generalizat de marcare, SGML (Standard
Generalized Markup Language), iar protocolul de acces la obiecte simple, SOAP
(Simple Object Access Protocol) permite schimbul de date structurate sub form
de obiecte. Limbajul de descriere a serviciilor Web, WSDL (Web Service
Description Language) este un format XML creat pentru a asigura
interoperabilitatea sporit a serviciilor Web cu instrumentele de dezvoltare.
Mesageria, ca activitate de livrare a mesajelor (e-mail, fax), se realizeaz
prin intermediul protocolului TCP/IP de transfer al mesajelor simple n reea,
SMTP (Simple Mail Transfer Protocol), al protocolului pentru serverele de e-mail
(oficiile potale electronice), POP3 (Post Office Protocol) i a protocolului de
acces interactiv la pota electronic, IMAP (Interactive Mail Access Protocol).
Serverele proxy sau intermediare realizeaz selecia mesajelor, reducnd astfel
traficul prin reea. Prin extensia potei electronice s-a obinut circulaia
documentelor (workflow) n Intranet.
Videoconferinele i audioconferinele asigur interactivitatea utilizatorilor
pasivi, prin legturi punct la punct sau multipunct, cu soft specializat (de exemplu,
CU-SeeMe).
Bazele de date online din Intranet sunt consultate prin intermediul
navigatoarelor (browser-elor). Motoarele de cutare (Search Engine) au devenit
din ce n ce mai puternice n regsirea informaiilor dup cuvinte-cheie i grupuri
de cuvinte-cheie.
Accesarea bazelor de date online este facilitat de realizarea paginilor Web
dinamice.
8.6.2. Pagini Web statice i dinamice
Paginile Web statice se realizeaz cu ajutorul limbajului HTML. n
Microsoft Access, prin funcia de export (meniul principal File, opiunea
Export), paginile Web pot prelua date dintr-un tabel, formular, interogare sau
raport. Succesiunea de comenzi pentru un tabel MATERIALE este urmtoarea:
selecie obiect de vizualizat dup nume din fereastra Database (table); meniul
principal File; opiunea Export; fereastra Export Table MATERIALE As; caseta
Save As Type cu opiunea HTML Documents; butonul Save.
214

Universitatea SPIRU HARET

Paginile Web dinamice pun n eviden schimbrile survenite n baza de date


online i se adapteaz permanent la aceste modificri, nefiind necesar generarea lor
ca la paginile Web statice realizate cu limbajul HTML. Produsul Microsoft Access
2000, respectiv 2002, 2003, asigur generarea paginilor Web dinamice de tipul ASP
(Active Server Pages) sau IDC/HTX. Tehnologia ASP pentru Web asigur scriptarea pe partea de server pentru realizarea interactivitii documentelor indiferent de
platforma de lucru a prii de client. Utilizatorul are acces cu un editor peste codul
generat de Access pentru eventuale modificri ale elementelor de design al paginilor
sau legate de datele accesate. Pot fi adugate n pagini diverse script-uri (JavaScript).
Aceste pagini dinamice pot fi generate cu Access numai n cazul obiectelor de tipul
tabel, interogare sau raport i pot fi recepionate pentru publicare pe servere Web de
tipul Microsoft Internet Information Server(IIS) sau Personal Web Server (PWS).
Serverele Web de tipul IIS funcioneaz sub sistemele de operare ncepnd cu
Microsoft Windows 2000, n timp ce PWS funcioneaz sub toate versiunile
sistemului de operare Microsoft Windows [64].
Legtura dintre baza de date i pagina Web presupune definirea naintea
generrii paginii Web dinamice a unui nume al sursei de date, DSN (Data Source
Name) prin intermediul facilitii de conectivitate a bazelor de date deschise,
ODBC (Open DataBase Connectivity).
Paginile Web dinamice generate cu produsul Access de tip ASP cuprind cod
text n limbajul HTML i acces la baza de date generat n limbajul VBScript.
Limbajul VBScript folosete colecia de obiecte ADO (ActiveX DataBase Object)
i limbajul de interogare structurat, SQL. ADO reprezint o interfa la OLE
DataBase, de tipul interfeelor de programare a aplicaiilor, API (Application
Programming Interface), care permite accesul la date direct dintr-o baz de date.
Produsul Microsoft Access, prin obiectele de tipul Data Access Pages ce se
gsesc n fereastra Database, la seciunea Pages, asigur crearea unui fiier separat
de baza de date pentru pagini Web. Legtura ctre pagina Web este stocat n
obiectul din baza de date ce asigur accesarea bazei de date din Access de pe
Internet cu ajutorul browser-ului Microsoft Internet Explorer. Crearea unui obiect
de tipul pagin Web se realizeaz prin apsarea butonului New, dup care se alege
una dintre urmtoarele opiuni:
Design View, ce asigur proiectarea manual a paginii Web (este similar
cu shortcut-ul Create data access page in design view);
Existing Web Pages, ce asigur proiectarea unei pagini Web avnd ca
model o pagin Web existent n mediul de lucru (este similar cu shortcut-ul Edit
Web page that already exists);
Page Wizard, care asigur asistarea generrii paginii Web (este similar cu
shortcut-ul Create data access page by using wizard);
AutoPage:Columnar, ce asigur crearea automat a paginii Web ce are
aspectul unei coloane din tabelul sau interogarea selectat pentru prezentare.
n fereastra New Data Access Page se selecteaz tabelul sau interogarea
bazei de date care constituie sursa de date pentru pagina Web (de exemplu,
MATERIALE) i apoi se apas butonul OK. n modul Design View apar ferestrele
Page 1: Data Access Page, Field List i Alignment and Sizing. n lista de cmpuri,
215

Universitatea SPIRU HARET

Field List, se selecteaz cmpurile ce vor fi reprezentate n pagina Web (fig.8.9). n


fereastra Page 1: Data Access Page apare un formular special care va fi accesibil
cu un browser Web.

Fig.8.9. Crearea formularului pentru pagina Web


ce vizualizeaz tabelul MATERIALE

8.7. Visual Basic. NET i bazele de date distribuite


Aa cum s-a artat mai sus, bazele de date distribuite (DDB) sunt baze de
date implementate n reeaua de calculatoare i de comunicaii prin intermediul
partiiilor componente ce sunt dispuse n diferite noduri ale reelei. Aceste baze de
date pot fi centrale sau locale. O entitate client poate executa, de regul, dou
tipuri de operaii asupra unei baze de date distribuite: citire (situaia n care nu se
efectueaz modificri asupra bazei de date) i scriere (adugare de noi nregistrri,
tergerea unor nregistrri n baza de date, modificarea coninutului unor
nregistrri). Efectele operaiei de scriere se obin dac entitatea client dispune de
permisiunea necesar acestui scop.
216

Universitatea SPIRU HARET

ntre aplicaia entitii client i sistemul de gestiune a bazelor de date


distribuite (DDBMS) de pe serverul de date se interpune un program specializat,
adaptor de date sau driver, care ndeplinete funcia de translator ntre limbajul
aplicaiei clientului i limbajul specific DDBMS.
Tehnologia Microsoft pentru platforma .NET, denumit ADO.NET
realizeaz accesul la bazele de date relaionale i la etichetele XML. ADO.NET
(Active Data Object) semnific obiecte de date active ce fac parte din clasele
specifice DataSet (tabele, rnduri, coloane, relaii etc.), sursele de date pentru .NET
Framework i definiiile formulate pentru tipuri particularizate specifice, de
exemplu SQL Server. Etichetele XML (eXtensible Markup Language) desemneaz,
alturi de atributele XML, informaii referitoare la elementele XML din
compunerea documentelor XML (etichet de nceput, element, etichet de sfrit):
&lt; Nume_banca =BCR din Bucuresti&gt;

Sursa de date
pentru
.NET
FRAMEWORK

Setul de date
locale

DataSet

XML
Fig.8.10. Prile componente ale arhitecturii generale
de acces la date distribuite ADO.NET

Prile componente ale arhitecturii generale ADO.NET sunt baza de date


(DataBase), sursa de date .NET (Data Provider) i setul de date locale DataSet, aa
cum se prezint pe site-ul www.Microsoft.com (fig.8.10) i n dicionarul de
calculatoare Microsoft.
Serverul de date realizeaz o conexiune temporar cu entitatea client numai
pe durata unei operaii de citire sau a unei operaii de scriere. Altfel exprimat,
ADO.NET utilizeaz un model deconectat n scopul gestionrii bazelor de date.
Pentru efectuarea unor operaii asupra bazei de date de pe serverul de date
este necesar parcurgerea urmtoarelor etape [10]:
stabilirea parametrilor de realizare a conexiunii client/server;
instanierea unui obiect ce aparine clasei Data Adapter, prin intermediul
cruia clientul adreseaz serverului comenzi din categoriile selecie (Select),
adugare (Insert), tergere (Delete), actualizare (Update), dup care recepioneaz
rezultatele aciunii ntr-o baz de date local;
construirea bazei de date locale cu ajutorul unei comenzi din adaptor
(Data Adapter);
217

Universitatea SPIRU HARET

procesarea datelor din setul de date locale (DataSet) prin modificare i


transmiterea rezultatelor acestor prelucrri la serverul de date (Microsoft SQL
Server, Oracle DB etc.).
Locul adaptorului de date n arhitectura client/server este prezentat n fig.8.11.
Prin intermediul lui Microsoft Visual Basic.NET se pot realiza conexiunile la
baze de date i se pot construi seturile de date locale. Entitatea client stocheaz
imaginea setului de date de care are nevoie de pe serverul de baze de date, ntr-un
obiect local. Dup aceast operaie, se produce deconectarea clientului de la
serverul de baze de date. Dac sunt efectuate modificri asupra nregistrrilor
setului local de date, ADO.NET realizeaz actualizarea modificrilor pe server la
urmtoarea conectare ce este destinat salvrilor prelucrrilor efectuate.
Pentru interogarea bazei de date de pe server, exist mai multe metode:
utilizarea frazelor SQL generate n mod automat de adaptorul de date
(SELECT);
crearea unor proceduri noi ce se memoreaz;
utilizarea procedurilor deja memorate.

Set de date local


(DataSet)
la Client

Adaptor de
date (Data
Adapter)

Server de date
(SQL Server,
Oracle DB)

Fig.8.11. Locul adaptorului de date n arhitectura client/server

Aceste metode apar ca opiuni ale ferestrei de alegere a tipului de interogare


din Data Adapter.
Setul de date local n ADO.NET reprezint o colecie DataTable Collection,
compus din mai multe tabele ce sunt obiecte DataTable. Obiectele DataTable
reprezint imaginile unor tabele ale cror coloane sunt stocate n
DataColumnCollection, ale cror restricii sunt coninute n ConstraintCollection,
ale cror rnduri sunt stocate n DataRowCollection. De asemenea, relaiile ntre
tabelele bazei de date relaionale sub form de obiecte DataRelation sunt stocate n
DataRelationCollection.
Setul de date local poate fi populat cu nregistrri noi prin comanda Fill
(umple) care exist la adaptorul de date. Accesul la elementele din setul de date local
se execut pe baza structurii ierarhice, care, n sens descresctor, arat astfel: setul de
date local (DataSet), tabele (Tables), rnduri (Rows), cmpuri (Fields), itemi (Items).
Formularul de lucru n VB.NAT se realizeaz n aceeai manier cu cea
prezentat la capitolul de Visual Basic (casete cu text, etichete, liste etc.). n cazul
fiecrui set de date local pot fi vizualizate, din meniul contextual, proprietile
cmpurilor acestuia, sub form de ferestre cu dou coloane. Aceste proprieti nu
pot fi modificate de utilizator.

218

Universitatea SPIRU HARET

9. BAZE DE DATE N TEHNOLOGII AVANSATE

Cercetrile n domeniul bazelor de date n tehnologii avansate (advanced


database) evideniaz cteva tendine relevante concretizate n baze de date
orientate obiect, baze de date relaionale orientate obiect, baze de date active, baze
de date distribuite, baze de date online.
Bazele de date orientate obiect, bazele de date distribuite i bazele de date
online au fost tratate n alte capitole ale acestei lucrri. n prezentul capitol,
accentul este pus pe prezentarea caracteristicilor bazelor de date active i
sistemelor asociate acestora, precum i pe prezentarea ctorva specificiti ale
bazelor de date relaionale orientate obiect.
S-a artat (paragraful 4.2) c, din punctul de vedere al evoluiei generaiilor
de baze de date (sistemelor de gestiune a bazelor de date), generaia bazelor de
date n tehnologii avansate cuprinde, n principal, bazele de date active:
Baze de date deductive.
Baze de date multidimensionale.
Baze de date multimedia.
Bazele de date active sunt caracterizate de comportamentul lor dinamic n
raport cu schimbrile ce survin n interiorul acestora sau cu evenimentele ce se
produc n afara acestora. Acest comportament dinamic al bazelor de date active
este descris de regulile eveniment condiie aciune (ECA). Aceasta nseamn
c atunci cnd (when) un eveniment se produce, se testeaz o condiie i dac (if)
aceasta este adevrat la evaluare, atunci (then) se execut o aciune.
9.1. Bazele de date deductive
Bazele de date deductive sunt denumite i baze de date inteligente sau baze de
date bazate pe logic i sunt caracterizate de posibilitatea gestionrii adaptive a
datelor n conformitate cu cerinele utilizatorilor n luarea deciziilor economice.
Bazele de date deductive sunt baze mari de date supuse analizei i interpretrii.
Sistemul de gestiune aferent acestor baze de date deductive cuprinde instrumente de
realizare automat a raionamentelor realizate prin programare logic. Programarea
logic reprezint un tip de programare bazat pe raionamente, n care programul este
compus din fapte i reguli i are ca rezultat concluzii. Unul dntre limbajele de
programare care asigur implementarea acestui tip de programare este limbajul
Prolog. Prin raionament se nelege un proces de deducie (inferen) aplicat asupra
219

Universitatea SPIRU HARET

setului de fapte i reguli. Faptele (facts) sunt informaii declarative, cu reprezentare


simbolic, ce servesc pentru descrierea relaiilor care se refer la unul sau mai multe
obiecte ale problemei de rezolvat. Relaiile descriu legturile dintre obiecte. Noiunea
de obiect a fost detaliat n paragraful 2.4. Regulile (rules) sunt utilizate pentru
definirea i deducerea de noi fapte i relaii dintre faptele cunoscute. Motoarele de
inferen reprezint elementele efective de prelucrare, ce pornesc de la fapte ca date
de intrare (baza de fapte) i prin construirea de raionamente pe baza regulilor,
conduc la obinerea de noi fapte.
Elementele de baz ale programrii logice, ale sistemelor de inteligen
artificial i ale limbajului Prolog vor fi detaliate la cursul de Sisteme expert de
gestiune care se studiaz n anii urmtori la specializarea Contabilitate i
informatic de gestiune. n lucrarea de fa se prezint numai cteva noiuni
introductive n scopul ntregirii imaginii de ansamblu asupra generaiilor de baze
de date, sisteme de gestiune i tehnologii de stocare i prelucrare asociate acestora.
Fundamentarea matematic a bazelor de date deductive este bazat pe
universul Herbrand, adic setul de simboluri de tip constant din limbajul L, limbaj
care nu conine simboluri funcie, dar conine cel puin simboluri predicative.
Simbolul predicativ este specific predicatelor (predicates) ca elemente de baz n
procesarea datelor prin programarea logic i care reprezint relaiile din expresiile
cu fapte. Baza Herbrand cuprinde ansamblul faptelor posibile despre baza de date
i se constituie ntr-un sistem nchis.
Bazele de date deductive utilizeaz, n principal, logica propoziiilor de
ordinul I, adic acel limbaj formal ce conine un alfabet, reguli de sintax, axiome
i o regul de deducie de tipul cnd (when)...dac (if)... atunci (then) ... Este de
menionat diferena esenial dintre regulile de producie specifice sistemelor
expert (premis sau condiieconcluzie) i regulile specifice sistemelor de
gestiune a bazelor de date active (evenimentcondiie aciune).
Bazele de date deductive prezint dou componente: componenta asociat
modulului relaional (SGBDR pentru baza de fapte) i componenta asociat
modulului programrii logice (pentru realizarea interogrilor). Cuplarea dintre
SGBDR i modulul programrii logice (sistemul de raionamente) poate s fie
cuplare slab (realizat numai n anumite momente de timp) sau cuplare strns
(interaciune continu, permanent). Prin integrarea complet a instrumentelor de
realizare automat a raionamentelor n cadrul SGBDR se obine un sistem de
gestiune a bazelor de date deductive cu limbaj de descriere a datelor, limbaj de
manipulare a datelor i limbaj de reguli. Pe baza limbajului Prolog i a unei
interfee specializate n lucrul cu baze de date, s-a realizat limbajul Datalog.
Limbajul Datalog este un limbaj declarativ orientat pe programarea logic acceptat
la limbaj standard destinat bazelor de date deductive. Un program realizat n
limbajul Datalog este o secven cu definiii de proprieti. Sintaxa limbajului nu
conine predicate speciale i utilizeaz logica propoziiilor de ordinul I, fr
simboluri de funcie.
Bazele de date deductive sunt n curs de cercetare i de punere la punct a unor
soluii practice n strns legtur cu dezvoltrile din domeniul inteligenei
artificiale.
220

Universitatea SPIRU HARET

9.2. Bazele de date multidimensionale


Bazele de date multidimensionale (MDB, Multidimensional DataBase)
reprezint [64] un ansamblu de date, constituite prin extracie sau transformare de
date, avnd ca surse bazele de date (fiierele) interne sau externe dintr-o
organizaie, date ce variaz n timp, sunt organizate multidimensional i sunt
exploatate prin intermediul interogrilor convenionale sau prin tehnici de analiz
simpl (OLAP) sau prin tehnici de analiz n tehnologii avansate (Data Mining).
Sursele de date interne sunt bazele de date operaionale din organizaie,
adic acele baze de date specifice domeniilor de gestiune ale organizaiei
(producie-servicii, comercial-marketing, cercetare-dezvoltare, financiar-contabil,
resurse umane) ce stocheaz datele ce se refer la tranzaciile (evenimentele)
specifice domeniului de gestiune considerat.
Sursele de date externe sunt reprezentate de datele provenite de la alte
organizaii de coordonare sau de sintez.
Prelucrarea datelor din bazele de date operaionale se realizeaz potrivit
conceptului de prelucrare interactiv (online) a tranzaciilor, OLTP (On-Line
Transaction Processing), ce reliefeaz caracteristicile acestor prelucrri: volum
limitat de date accesate, previzibilitatea interogrilor realizate de utilizatorii finali,
numr mic de intrri/ieiri asociat fiecrei tranzacii, prezen sporadic i slab a
elementelor de analiz.
Bazele de date multidimensionale servesc pentru obinerea de noi informaii sau
pentru deducerea de noi cunotine prin interogare cu ajutorul limbajului SQL, prin
prelucrare analitic online (analiz simpl) OLAP (OnLine Analytical Processing)
sau prin tehnologia de rafinare inteligent (avansat) a datelor Data Mining.
n tabelul 9.1. este prezentat, [64], o comparaie ntre bazele de date
operaionale i bazele de date multidimensionale.
Tabelul 9.1.
Comparaie ntre bazele de date operaionale i bazele de date multidimensionale
Nr.
crt.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.

Caracteristica
de comparaie
Destinaia
principal
Structurarea
datelor
Modele utilizate

Bazele de date
operaionale
Gestiunea curent
a tranzaciilor
Pe procese
funcionale
Relaional,
normalizate

Bazele de date
multidimensionale
Component a sistemelor informatice
pentru asistarea deciziilor
Pe subiecte ale managementului

Date
Agregarea datelor
Actualizare
Grad de consolidare
Percepie
Numr utilizatori
Accesare
Mrime
Numr de
nregistrri

Actuale
Nu
Imediat
Foarte sczut
Tabele detaliate
Mare
Citire i scriere
Sute MB zeci GB
Mic

Temporale sau istorice


Da
n momente diferite
Foarte ridicat
Multidimensional, rezumat
Mic
Numai citire
Zeci GB zeci TB
Mare

Stea, fulg de nea, puin normalizate

221

Universitatea SPIRU HARET

Depozite de date
La nivelul de management de exploatare, datele sunt stocate n baze de date i
sunt gestionate cu SGBD-uri, prin prelucrarea tranzaciilor online, OLTP. Extragerea
datelor relevante i obinerea informaiilor consolidate ale organizaiei, necesare
nivelurilor superioare de management (de nivel mediu i strategic) se efectueaz prin
prelucrarea analitic online, OLAP. Se obin, la acest nivel, depozitele de date (Data
Warehouse), ce sunt un produs al mediului organizaional (sistem informatic
integrat) i al tehnologiilor informaiilor i ale comunicaiilor (IT&C) cele mai
avansate. Depozitele de date conin volume mari de date (terabytes) ce servesc ca
date de intrare pentru cele mai sofisticate tehnici i tehnologii de analiz i sintez.
Depozitele de date sunt organizate separat de bazele de date operaionale ale
organizaiei. Aceste baze de date operaionale asigur datele pentru depozite de date,
dup ce sunt mai nti extrase, curate, transformate i stocate. Depozitele de date
servesc pentru implementarea fizic a unor modele de date pentru asistarea deciziilor
de importan strategic pentru organizaie.
Caracteristicile fundamentale ale depozitelor de date sunt [1]: orientarea pe
subiecte, integrarea, caracterul istoric i persistena datelor. Orientarea pe subiecte
semnific faptul c un depozit de date este focalizat pe modelarea i analiza datelor
pentru asistarea deciziilor. Integrarea presupune utilizarea, pentru construirea unui
depozit de date, a mai multor surse de date heterogene (fiiere de date, baze de date
relaionale, nregistrri referitoare la tranzaciile online, surse de date externe
organizaiei etc.). Caracterul istoric al depozitelor de date este dat de durata de
stocare i folosire a datelor din depozitele de date (de regul, de la nceputul stocrii
electronice a datelor din organizaie). Persistena datelor din depozitele de date se
refer la caracterul permanent de stocare, cu atributul de citete-numai (read-only).
Un sistem informatic de asistare a deciziei, DSS (Decision Support System)
asist luarea deciziei de management prin combinarea datelor, a modelelor i
instrumentelor analitice sofisticate i a softului ntr-un singur sistem informatic
puternic bazat pe depozite de date care poate sprijini luarea deciziilor structurate i
semistructurate.
Produsele informatice Microsoft SQL Server 7.0 sau 2000 conin
instrumentul destinat serviciilor de analiz a datelor din depozitele de date,
Analysis Services, denumit OLAP Services. n acest scop se utilizeaz conceptul de
exploatare a datelor din depozitele de date, Microsoft Repository, prin folosirea
metadatelor (Microsoft MetaData Services).
Datele provenite din operaiunile curente ale organizaiei (OLTP) sau din
sistemele motenite sunt stocate n baze de date i sunt manipulate, aa cum s-a
prezentat n lucrarea de fa, cu ajutorul sistemelor de gestiune a bazelor de date
(SGBD). Periodic, aceste date sunt extrase i asamblate n cadrul nivelurilor superioare de management ale organizaiei economice sub forma depozitelor de date
(Data Warehouse), servind astfel pentru analiza i extragerea informaiilor utile
nivelurilor de management mediu i strategic. Datele sunt depozitate pe categorii
de interes i sunt corelate n timp (perioade mari de timp) pentru a putea fi folosite
pentru analiz i interogare online. Elementele depozitelor de date sunt tabelele de
fapte, dimensiunile i nivelurile de centralizare. Dimensiunile depozitelor de date
sunt imense (zeci i sute de TB, terabaii). Tabelul de fapte este elementul
constitutiv al depozitului de date ce const n date i informaii (fapte) referitoare la
obiectul de activitate al companiei, produsele/serviciile oferite i vndute/realizate,
costurile de producie, preurile practicate, detalii privind livrarea acestor
222

Universitatea SPIRU HARET

produse/asigurarea serviciilor ctre beneficiari, date despre furnizori, colaboratori


i beneficiari/clieni, performanele personalului companiei etc. Tabelul de
dimensiuni depoziteaz date i informaii pe baza conceptului de dimensiune
(aceasta poate reprezenta entitile de msurare a timpului ora, ziua, sptmna,
luna, trimestrul, semestrul, anul, cincinalul, deceniul, secolul -, entitile geografice
(localitatea, statul, regiunea, continentul -, entitile de producie - categorie,
denumire, cod, tip, calitate, cantitate vndut, pre unitar etc. Nivelurile de
centralizare servesc pentru creterea vitezei de rspuns la analiza i interogarea
depozitelor de date prin structurarea datelor n funcie de diverse criterii timp,
categorii de produse, zon geografic, categorii de clieni etc.
9.3. Bazele de date multimedia
Multimedia reprezint, n sens larg, ansamblul mijloacelor (mediilor) de
comunicare prin intermediul crora se realizeaz o percepie vizual i auditiv,
sub diverse forme, a informaiilor destinate unui utilizator anume. Principalul
avantaj oferit de multimedia este dat de accesul rapid i facil la cunoatere i
informare. Suportul esenial al dezvoltrii multimediei este dat de progresele
IT&C. Ca urmare, n acest context al informaticii i tiinei calculatoarelor,
multimedia poate fi definit ca o combinaie interactiv a mai multor tipuri de date:
sunete, grafic, animaie i secvene video. n Dicionarul de calculatoare
Microsoft se precizeaz c multimedia reprezint un subset al hipermediei n care
elementele specifice multimediei sunt integrate cu hipertextul. Hipertextul este un
text legat sub forma unei reele complexe de asociaii, n care parcurgerea are
caracter nesecvenial (detaliile au fost date la cursul de Informatic de gestiune
baze, cnd au fost studiate elemente ale limbajului HTML). Exist mai multe
standarde hipermedia: HTML (HyperText Markup Language) i variantele sale
ulterioare, MHEG (Multimedia Hypermedia Expert Group), HyTime, Dexter
Hypermedia, ODA, Acrobat PDF(Portable Document Format) etc.
Bazele de date multimedia, MMDB (Multimedia DataBases) sunt destinate
stocrii datelor multimedia (prin extensie, datelor hipermedia). Structurile de
stocare sunt eficiente i sunt realizate dup arbori speciali (de exemplu, Quadtree,
Rtree sau combinaii ale acestora). Bazele de date multimedia sunt baze de date
foarte mari deoarece stocarea datelor video i audio necesit spaii de memorie
imense. Pe cale de consecin, interogarea acestor baze de date cere timp destul de
mare. De aceea, regsirea datelor multimedia presupune aplicarea unor metode
specifice. Datele multimedia sunt date dinamice i baza de date multimedia este o
baz de date activ. Bazele de date multimedia sunt i baze de date reactive, n
sensul c exist posibilitatea de modificare a strii mediului ca urmare a producerii
unor evenimente externe: o secven video sau o pies muzical pot fi modificate,
inclusiv prin alterarea coninutului acestora. Pentru datele multimedia lipsete
modelul abstract de date (specific tipurilor de date alfanumerice).
Datele multimedia sunt structurate pe obiecte complexe, compuse din date de
tipuri elementare. De exemplu, o aplicaie de prezentare i reclam bancar poate fi
format din desene animate, sunet corespunztor imaginilor i secvene de film din
activitatea de front-office la una dintre sucursalele bncii. Obiecte complexe utilizate n realizarea spotului publicitar pot fi regsite i la monitoarele ATM-urilor
223

Universitatea SPIRU HARET

bncii atunci cnd clientul efectueaz o operaiune de scoatere a numerarului din


contul propriu.
n aplicaiile cu baze de date multimedia, accesul la date reprezint, n
realitate, interaciunea dintre utilizator i date, la nivel de obiect i la nivel de
mediu de comunicare.
Bazele de date multimedia sunt astfel organizate dup modelul orientat pe
obiecte, pe mai multe niveluri [54]: structura funcional sau tehnologic, structura
relaional, structura de interogare sau dinamic i structura de prezentare sau de
sistem. n cazul structurii funcionale sau tehnologice a bazelor de date multimedia,
sunt evideniate funciile de generare, achiziie, compresie, stocare, manipulare etc.
a datelor multimedia ce sunt, ulterior, integrate cu datele de tipuri clasice. n ceea ce
privete structura relaional, datele multimedia provenite din surse diferite,
heterogene (audio, video, animaie, imagini vectoriale, imagini raster, texte ASCII,
date formatate) sunt corelate static n conformitate cu modelul orientat pe obiecte. n
cazul structurii de interogare sau dinamic, metodele de regsire a datelor
multimedia se utilizeaz n funcie de tipul datelor i modul de interaciune a
utilizatorului cu baza de date multimedia. n sfrit, structura de prezentare sau de
sistem se refer la independena bazei de date fa de platforma de lucru a utilizatorului, la mecanismele de acces concurent la baza de date, la modul de obinere a
interfeelor grafice destinate utilizatorului, la scurtarea timpului de regsire a datelor
multimedia i la apropierea acestuia de cel al aplicaiilor n timp real (run-time).
Sistemele de gestiune a bazelor de date multimedia se fundamenteaz pe
abordarea incremental ce are la baz modele intermediare de date asociate
datelor grafice. Imaginile sunt interpretate ca tranziie de stri pe baza nivelelor de
recunoatere a strilor obiectelor dintr-o imagine anume (scen). Cnd tranziia
nceteaz se obine momentul de definire i stocare a unui model abstract al
imaginii, cu cuvinte-cheie asociate. Exist limbaje de descriere a imaginilor video
de tipul scenelor prin care fiecrui segment grafic din compunerea unei scene i se
asociaz atribute (culoare, poziie, direcie de deplasare, efecte speciale).
SGBD multimedia sunt caracterizate de urmtoarele particulariti: datele
multimedia sunt complexe, n volume mari i de tipuri variate; obiectele
multimedia sunt mari, BLOB (Binary Large Objects); gestionarea datelor
multimedia implic operaiuni complexe de sincronizare i de distribuire n timp i
spaiu a datelor multimedia de tipuri diferite; suportul tehnic (adic gama de
periferice ale sistemului informatic n a crui compunere intr bazele de date
multimedia i SGBD asociat) este diversificat.
Se pot da ca exemple de SGBD multimedia [56]:
SGBD multimedia orientat obiect, STORM (Structural and Temporal
Object Oriented Multimedia) ce integreaz operatori structurali (tuple, set, list) cu
relaii temporale (equal, after, before);
Modelul orientat obiect, MOAP (Multimedia Object and Application
Model), ce reprezint obiectele multimedia sub forma unei ierarhii de clase orientate
obiect, iar aplicaiile multimedia interactive sunt obinute pe baza scenariilor bazate
pe aplicaii i evenimente sistem, cu obiecte definite temporal i spaial.
SGBD multimedia realizeaz stocarea i transmiterea pe canalele de comunicaii
a datelor multimedia sub form comprimat. Exist tehnici de compresie avansate care
realizeaz comprimarea datelor multimedia cu rate de compresie situate ntre 10:1 i
50:1 pentru imagini, respectiv 2000:1 pentru semnal video [56]. Compresia datelor
224

Universitatea SPIRU HARET

multimedia se execut dup standarde ca JPEG (Joint Photographic Expert Group)


rata de compresie 15:1, MPEG (Moving Pictures Expert Group) rata de compresie a
imaginilor n micare 200:1, iar a semnalului audio 10:1.
Crearea bazelor de date multimedia se realizeaz cu soft specializat (cu
funcii de stocare i de consultare). De exemplu, Multimedia Toolbox, ce aparine
firmei Asymetrix, este un instrument de realizat cri multimedia, orientat pe
programare vizual, sub sistemul de operare Microsoft Windows. Limbajul de
programare de tip script ncorporat n Multimedia Toolbox se numete OpenScript
i servete pentru descrierea scenariului aplicaiei.
Datele multimedia sunt afiate i transmise sub form de fluxuri (stream-uri)
continue n timp.
Bazele de date multimedia se folosesc cu precdere n descrierea i prezentarea
produselor (un magazin virtual pe Internet mall electronic utilizeaz n mod
obligatoriu baze de date multimedia cu imaginile produselor ce se ofer spre
vnzare), n administraia electronic, e-government (descrierea formularelor de
contabilitate, a formularelor de nregistrare a plii impozitelor i taxelor, a
documentelor specifice obinerii permisului auto, n activitatea de instruire i
educaie (tutori inteligeni, enciclopedii multimedia educaionale), n activitatea de
documentare (documente hipertext) etc.
9.4. Bazele de date relaionale orientate obiect
Prin extinderea facilitilor oferite de bazele de date relaionale cu includerea
structurilor de date complexe de natura obiectelor, s-au obinut baze de date
relaionale orientate obiect. SGBD-ul asociat bazelor de date relaionale orientate
obiect, OORDBMS (Object-Oriented Relational DataBases Management System),
include elemente din SGBD relaional (RDBMS) i din SGBD orientat pe obiecte
(OODBMS).
Conceptul de domeniu din teoria bazelor de date relaionale este echivalent cu
conceptul de clas de obiecte din teoria bazelor de date orientate pe obiecte. Se
consider ns erori s se echivaleze variabila de relaie din lumea relaional cu
clasa de obiecte din lumea obiectelor i s se amestece relaiile cu pointerii [5] prin
care se afecteaz integritatea conceptual a modelului relaional. Se reamintete
aici c pointerii sunt variabile ce conin adrese pentru itemi de date (itemii de date
pot fi cuvinte, serii de numere sau nregistrri din fiiere) sau pentru instruciuni.
Revenind la una dintre ideile de baz prezentate mai sus, pe cale de consecin,
tabelele nu pot fi egalate cu clasele.
Stonebraker a realizat o matrice de clasificare a SGBD (fig.9.1) care ajut la
o mai bun nelegere a interaciunilor dintre cele dou modele pentru baze de date
(relaional i orientat pe obiecte). Exemplele tipice asociate celor patru cuadrani
(sferturi) ai matricei Stonebraker sunt:
pentru cuadrantul 1 procesorul de texte clasic;
pentru cuadrantul 2 aplicaiile economice (din domeniul afacerilor);
pentru cuadrantul 3 aplicaiile de proiectare asistat de calculator, CAD
(Computer Aided Design);
pentru cuadrantul 4 aplicaiile cu baze de date multimedia.
225

Universitatea SPIRU HARET

INTEROGARE
PREZENT

2. Aplicaii pentru
date simple cu cerine
de interogri ad-hoc

4. Aplicaii pentru date


complexe cu cerine
de interogri ad-hoc

INTEROGARE
ABSENT

1. Aplicaii pentru date


simple fr cerine
de interogri ad-hoc

3. Aplicaii pentru date


complexe fr cerine
de interogri ad-hoc

DATE SIMPLE

DATE COMPLEXE

Fig.9.1. Matricea de clasificare a SGBD (matricea lui Stonebraker)

Interogarea ad-hoc a unei baze de date semnific, n acest caz, interogarea


imediat efectuat asupra bazei de date.
Dac se ia, ca exemplu, o baz de date ce conine produsele unei firme de
aparatur electronic i se adaug la aceast baz de date imagini cu produsele
respective, se pune problema determinrii acelor produse electronice care satisfac o
anumit caracteristic de design (aspect exterior). Este necesar prelucrarea
imaginilor produselor electronice (ca obiecte) pentru a obine rspunsul la
problema ridicat. Caracteristicile dorite la selecie se descriu printr-o metod
ataat obiectului.
Se pot crea tabele prin intermediul caracteristicii de motenire (inheritance)
specific obiectelor. Crearea unor funcii la nivel de nregistrare, la nivel de tabel i
chiar la nivel de baz de date sunt ci de soluionare a problemelor practice care
depesc cadrul bazelor de date relaionale, conducnd la ideea de baz de date
relaional orientat obiect.
Bazele de date relaionale orientate obiect asigur utilizarea la interogare a
metodelor obiectelor diverse i a unor noi operatori pentru obiecte, precum i
posibilitatea definirii propriilor metode pentru obiectele folosite din partea
utilizatorului final.
Date C.J. [5] demonstreaz c un sistem obiect-relaional prezint mai multe
caracteristici, printre care:
cerina de interogare ad-hoc, cu definirea vederilor (view-urilor) i
constrngeri de integritate declarative;
definirea dinamic a claselor pentru rezultatele interogrilor ad-hoc;
metode ce includ mai multe clase;
posibilitatea accesului dual interactiv i programat la baza de date;
existena regulilor pentru chei externe sau strine etc.
n cazul ultimelor versiuni ale SGBD Oracle, a fost implementat modelul
obiect-relaional de date. Descrierea modului de lucru cu blocuri n PL/SQL a fost
efectuat n capitolul dedicat serverelor de baze de date. Blocurile pot fi folosite i
pentru ncapsularea obiectelor.

226

Universitatea SPIRU HARET

BIBLIOGRAFIE

1. Airinei, D., Depozite de date, Editura Polirom, Iai, 2002.


2. Bsc, O., Baze de date, Editura ALL, Bucureti, 1997.
3. Bott, E., Leonhard, W. - Microsoft Office XP, Editura Teora, Bucureti, 2002.
4. Cristea, V.; Athanasiu, I.; Kalisz, E.; Iorga, V., Tehnici de programare, Editura
Teora, Bucureti, 1998.
5. Date, C.J., Baze de date, Ediia a opta, Pearson Addison Wesley, Editura Plus,
Bucureti, 2004.
6. Davidescu, N., Fril, L., Fril, R., Bunea, A., Cozgarea, A., Sisteme
informatice financiar-contabile, Editura All Back, Bucureti, 1999.
7. Davidescu, D.N., Proiectarea sistemelor informatice prin limbajul Unified
Modeling Language (PSI 2), Editura All Beck, Bucureti, 2003.
8. Dollinger, R., Baze de date i gestiunea tranzaciilor, Editura Albastr, ClujNapoca, 2001.
9. Dollinger, R., Utilizarea sistemului SQL Server (SQL 7.0, SQL 2000), Editura
Albastr, Cluj-Napoca, 2002.
10. Dospinescu, O., Dezvoltarea aplicaiilor n Visual Basic.NET, Editura Polirom,
Iai, 2004.
11. Drgnescu, M., acad. - Societatea informaional i a cunoaterii. Vectorii
societii cunoaterii, Studiu tematic, Academia Romn, www.academiaromana.ro.
12. Filip, Fl.Gh., Decizie asistat de calculator. Decizii, decideni. Metode i
instrumente de baz, Editura Tehnic i Editura Expert, Bucureti, 2002.
13. Fnaru, L.; Brava, I., Visual Basic. Primii pai i urmtorii, Editura Polirom,
Iai, 2002.
14. Forta, B., SQL pentru nceptori, Editura Teora, Bucureti, 2002.
15. Fotache, D., SQL. Dialecte DB2, Oracle, Visual Fox Pro, Editura Polirom, Iai,
2001.
16. Fotache, D., Groupware. Metode, tehnici i tehnologii pentru grupuri de lucru,
Editura Polirom, Iai, 2002.
17. Fusaru, D.; Udric, M.; Cocianu, C., Programarea orientat pe obiecte, Editura
Fundaiei Romnia de Mine, Bucureti, 1999.
18. Fusaru, D.; Mare, M.D; Mihai, G., Visual Basic i Access, Editura Fundaiei
Romnia de Mine, Bucureti, 2001.
19. Fusaru, D., Arhitectura bazelor de date. Mediul SQL, Editura Fundaiei Romnia
de Mine, Bucureti, 2002.
20. Fusaru, D.; Gherasim, Z.; Andronie, M.; Bra, A.; Stroe, P., Aplicaii economice
n Visual Basic i Access, Editura Fundaiei Romnia de Mine, Bucureti, 2003.
21. Gherasim, Z.; Andronie, M.; Popescu-Bodorin, N., Informatic managerial n
activitatea de educaie fizic i sport, Editura Fundaiei Romnia de Mine, Bucureti,
2004.
22. Habracken, J., Access 2002 pentru nceptori, Editura Teora, Bucureti, 2003.
227

Universitatea SPIRU HARET

23. Henderson, K., The Gurus Guide to Transact-SQL, 1st Edition, Pearson
Education, Inc., Addison Wesley, 2000.
24. Hernandez, M.J., Proiectarea bazelor de date, Editura Teora, Bucureti, 2003.
25. Ionescu, B., Ionescu, I., Mihai, F., Pan, A., Stanciu, A., Oancea, M., Mihailov, G.
Informatica utilizatorului: Word, Excel, PowerPoint, Outlook, VBA, Editura Infomega,
Bucureti, 2004.
26. Johnson, S. - Microsoft Office. Access 2003, Editura Teora, Bucureti, 2004.
27. Kovacs, S., Programarea interfeelor cu Visual Basic 6.0, elemente de baz,
Editura Albastr, Cluj-Napoca, 2002.
28. Laudon, K., Laudon, J., Essentials of Management Information Systems,
Organization and Technology in the Networked Enterprise, Fourth Edition, JWS, New York,
2001.
29. Lungu, I.; Bodea, C.; Bdescu, C.; Ioni, C., Baze de date: organizare,
proiectare i implementare, Editura ALL, Bucureti, 1995.
30. Mihalca, R.; Fabian, C.; U, A.; Simion, F., Analiz i proiectare orientat obiect.
Instrumente de tip Case, Editura Societatea Autonom de Informatic, Bucureti, 1998.
31. Militaru, G., Sisteme informatice pentru management, Editura Bic All, Bucureti,
2004.
32. Munteanu, A., Auditul sistemelor informaionale contabile, Cadru general,
Editura Polirom, Iai, 2001.
33. Nstase, P.; Mihai, F.; Coscescu, L.; Covrig, L.; Stanciu, A., Tehnologia bazelor
de date: Access 2000, Editura Economic, Bucureti, 2000.
34. Nicolaescu, I.; Gherasim, Z., Managementul resurselor informaionale ale
organizaiei, Editura Academiei Tehnice Militare, Bucureti, 2004.
35. Oprea, D., Analiza i proiectarea sistemelor informaionale economice, Editura
POLIROM, Iai, 1999.
36. Oprea, D., Protecia i securitatea informaiilor, Editura POLIROM, Iai, 2003.
37. Patriciu, V.V., Ene-Pietroanu, M., Bica, I., Vduva, C., Voicu, N., Securitatea
comerului electronic, Editura All, Bucureti, 2001.
38. Ptru, B., Aplicaii n Visual Basic, Editura Teora, Bucureti, 2002.
39. Prv, B., Dezvoltarea rapid a aplicaiilor cu Visual Basic, Editura Gil, Zalu, 2003.
40. Perry, G., Iniiere n programarea calculatoarelor, Editura Teora, Bucureti, 2000.
41. Peterson, J.V., Baze de date pentru nceptori, Editura BIC ALL, Bucureti, 2002.
42. Popa, Gh.; Iliescu, M.; Berbec, Fl.; Ivancenco, V.; Andronache, V., Visual
Basic, Editura CISON, Bucureti, 1999.
43. Popa, Gh.; Iliescu, M.; Udric, M., Baze de date Access. Culegere de probleme,
Editura CISON, Bucureti, 2001
44. Popescu, I., Modelarea bazelor de date, Editura Tehnic, Bucureti, 2001.
45. Popescu, M., Baze de date relaionale, Editura Academiei Tehnice Militare,
Bucureti, 2001.
46. Popovici, M.D., Popovici, I.M., Rican, J.G., Proiectare i implementare
software, Editura Teora, Bucureti, 1998.
47. Rahmel, D., Programarea bazelor de date cu Visual Basic 6 n 24 de ore,
Editura Teora, Bucureti, 2001.
48. Rcu, L.; Vlduu, I.; oav, G., Limbaje de programare i sisteme de gestiune a
bazelor de date, Editura Fundaiei Romnia de Mine, Bucureti, 2000.
49. Roca, I., Macovei, E., Davidescu, N., Rileanu, V., Proiectarea sistemelor
informatice financiar-contabile, Editura Didactic i Pedagofic, Bucureti, 1993.
50. Sabu, G., Avram, V., Sisteme informatice pentru management, Editura Oscar
Print, 2000.
228

Universitatea SPIRU HARET

51. Sabu, G. L.- Premise ale procesului tranziiei de la societatea industrial la


societatea cunoaterii, Studiu tematic, Academia Romn, www.academiaromana.ro.
52. Saporta, G.; tefnescu, V., Analiza datelor i informatic, cu aplicaii la studii
de pia i sondaje de opinie, Editura Economic, Bucureti, 1996.
53. Sdeanu, M., IT&C, Managementul strategic al tehnologiei informaiei i comunicaiilor, vol.1. Organizaia i Infrastructura IT&C Centrate-Web, vol.2. Microeconomia IR&C,
Managementul proiectelor IT&C i Managementul total al calitii, Editura Romnia Liber,
Bucureti, 2003.
54. Smeureanu, I., Drul, G., Multimedia. Concepte i practic, Editura Cison,
Bucureti, 1997.
55. Somnea, D.; Calciu, M., Ghidul managerului pentru noile tehnologii informatice
i de comunicaie, Editura LUCMAN, Bucureti, 2002.
56. Stanciu-Timofte, C., Baze de date pentru comer electronic pe Internet, Editura
Oscar Print, Bucureti, 2002.
57. Stanciu, V., Proiectarea sistemelor informatice de gestiune, Editura Cison,
Bucureti, 2000.
58. Velicanu, M., Lungu, I., Muntean, M., Iorga, M., Ionescu, S., Oracle, platform
pentru baze de date, Editura Petrion, Bucureti, 2002.
59. Waite, M.; Lafore, R., Structuri de date i algoritmi n Java, Editura Teora,
Bucureti, 1999.
60. Waymire, R.; Sawtell, R., Sams Teach Yourself Microsoft SQL Server 2000 in
21 Days, Sams Publishing, 2001.
61. Winemiller, E.; Roff, J.T.; Heyman, B.; Groom, R., Visual Basic 6.0, Baze de
date, Editura Teora, Bucureti, 2001.
62. Zaharie, D., Albescu, F., Bojan, F., Ivancenco, V., Vasilescu, C., Sisteme
informatice pentru asistarea deciziei, Editura Dual Tech, Bucureti, 2001.
63. Zaharie, D., Roca, I., Proiectarea obiectual a sistemelor informatice, Editura
Dual Tech, Bucureti, 2002.
64. *** - BDASEIG, Baze de date. Fundamente teoretice i practice, Editura
InfoMega, Bucureti, 2002.
65. *** - Dicionar de matematic i cibernetic n economie, Editura tiinific i
Enciclopedic, Bucureti, 1979.
66. *** - Microsoft Visual Basic 6.0. Ghidul programatorului, Editura Teora,
Bucureti, 2002.
67. *** - Microsoft SQL Server 2000, Books Online.
68. *** - Microsoft Dicionar de calculatoare, Ediia a II-a, Editura Teora,
Bucureti, 2002.
69. *** - Gartner Reports, 2002-2004.

229

Universitatea SPIRU HARET

230

Universitatea SPIRU HARET

ANEX
ABREVIERI I NOIUNI UTILIZATE N LUCRARE

Abs, funcie, 3.4.4.3


Abstractizarea datelor, 2.4
Acces secvenial, 1.4
Acces direct, 1.4
ActiveX, 3.1
Actualizare structur de date, 1.4
ADO (ActiveX Database Object), 8.6.2
AI, Artificial Intelligence, inteligen
artificial, 9.1
Algebr relaional, 4.3
Algoritm, 2.3
ALTER TABLE, 6.8
AND, 3.4.4.2
API (Application Programming
Interface), 5.9.1
Aplicaie informatic, 2.3; 3.3.5; 3.4.6
Aplicaie informatic dirijat prin
evenimente, 2.4
Append (fiier), 3.4.5
Access, 5.1; 5.2
Arbore binar (Binary Tree), 1.4
Arbore bicolor (Bicolor Tree), 1.4
Arbore echilibrat, 1.4
Arbore 2-3-4 (2-3-4 tree), 1.4
Arhitectur client/server, 7.1
Arhitectur sistem baz de date, 4.1
Arhitectur SGBD-OO, 4.4
Asc, funcie, 3.4.4.3
Asociere (relaie), 1.5
Asociere binar, 1.5
Asociere complex, 1.5
Asociere de tip unu-la-unu, 1.5
Asociere de tip unu-la-multi, 1.5
Asociere de tip multi-la-multi, 1.5
Asociere parial, 1.5
Asociere total, 1.5
Asociere recursiv, 1.5
ASP (Active Server Pages), 5.7

Atribut, 1.2; 1.5; 4.3


Atribut cheie, 1.2
Atribut compus, 1.2
Atribut non-cheie, 1.2
Backup, salvare de siguran, 8.5
Bara cu instrumente VB, 3.2
Bara cu instrumente Web, 5.7
Bara de meniuri vb, 3.2
BASIC, 3.1
Baz de date, 4.1
Baz de date centralizat, 4.1
Baz de date deductiv. 9.1
Baz de date distribuit, 4.1; 8.1
Baz de date n tehnologii avansate, 9.1
Baz de date multidimensional, 9.2
Baz de date multimedia, 9.3
Baz de date online, 8.6
Baz de date orientat obiect, 4.4
Baz de date relaional, 4.3
Baz de date relaional orientat obiect, 9.4
BD, baz de date.
BDR, 4.3
Binary (fiier), 3.4.5
Boolean, 3.4.2
Break Mode, 3.2
Breakpoints, 3.2
Browser Web, 5.7
Buton Design, 5.2.2
Buton New, 5.2.2
Buton Web, 5.7
Byte, 3.4.2
Calcul relaional, 4.3
Cardinalitate, 1.5
Cardinalitate finit, 1.4
Cardinalitate infinit, 1.4
CDB, Central DataBase, baz de date
central, 4.1 ; 8.2
231

Universitatea SPIRU HARET

CDO (Class-Defining Object), 4.4


CGI (Common Gateway Interface), 8.6.1
Cheie, 1.5; 4.3
Cheie candidat, 4.3
Cheie primar (Primary Key), 4.3
Cheie extern, 4.3
Chr, funcie, 3.4.4.3
Ciclare, 3.4.4.4
Citire (Read) date, 2.2
Cmp (field), 1.5; 2.4
Cmp de tip hiperlegtur (Hyperlink), 5.7
Claritatea algoritmului, 2.3
Clas de preceden, 3.4.4.2
Clas obiect, 2.4; 4.4
Clauz SQL, 6.5
Client, 7.1
Client/Server, 7.1
Close, fiier, 3.4.5
Coad (queue), 1.4
Cod, 3.3.4
Code Editor, 3.2
Cod-surs, 2.3
Colecie de date, 4.1
COM, 3.1
Compilare, 2.3
Constant, 2.3; 3.4.3
Consultare structur de date, 1.4
Control, 3.1; 5.5
Cos, funcie, 3.4.4.3
Creare structur de date, 1.4
CREATE DATABASE, 6.8: 7.3
CREATE TABLE, 7.3
Crystal Report, 3.1
Cunotin (Knowledge), 1.1
Cutia cu instrumente (Toolbox), 3.2
Currency, 3.4.2
Data Mining, mineritul datelor, 4.2
Database, fereastr Microsoft Access, 5.2.2
Data Report, 3.1
Data Type, 5.3.1
Dat, 1.1
Dat elementar, 1.2
Date, tip dat i funcie, 3.4.2 ; 3.4.4.3
Date definite de utilizator, 1.4
Date predefinite, 1.4
DBMS, Data-Base Management System,
sistem de gestiune a bazei de date (SGBD),
4.1; 8.2

DDBMS, Distributed DBMS, 4.1; 8.2


DDB, Distributed Data-Base, baz de date
distribuit, 4.1 ; 8.2
DDE, 3.1
DDL, Data Definition Language, limbaj
de definire a datelor, 4.1
Declaraie (Declaration), 2.3
DELETE, 6.7
Depozit de date (Data Warehouse), 4.2
Deschidere fiier VB, 3.4.5
Design Mode, 3.2
Dicionar de date (Data Dictionary), 4.1
Dim, 3.4.3
DML, Data Manipulating Language, limbaj
de manipulare a datelor, 4. 1
DoLoop, 3.4.4.4
Domeniu, 4.3
Double, 3.4.2
DROP TABLE, 6.8
DSDL, Data Storage Description Language,
limbaj de descriere a stocrii datelor, 4.1
DSS, Decision Support Systems, sisteme
informatice de asistare a deciziei.
DTP, Desktop Publishing, tehnoredactarea
computerizat.
e-book, Electronic Book, carte electronic.
e-business, Electronic Business,
afaceri electronice.
e-commerce, Electronic Commerce,
comer electronic.
e-conomy, New Economy, noua economie.
EDI (Electronic Data Interchange), 2.3
Editare de legturi (link-editare), 2.3
Editor de legturi, 2.3
Editor de meniu, 3.2
e-learning, Electronic Learning, nvare
electronic, nvmnt la distan.
Entitate, 1.2; 1.5
e-mail, Electronic Mail, pot electronic.
end-user, utilizator final.
Erori de sintax, 2.3
Etape realizare baz de date, 4.1
Etichete inteligente (Smart Tags), 5.1
Eveniment (Event), 2.4; 5.10
Exactitatea algoritmului, 2.3
Execuie aplicaie informatic, 3.3.5
Expresie, 3.4.4.1
Extensie clas, 2.4

232

Universitatea SPIRU HARET

Fereastra Database, 5.2.2


Fereastra de proiectare a formularului, 3.2
Fereastra de editare a codului, 3.2
Fereastra Relationship, 5.3.2
Field Name, 5.3.1
Fiier de date (Data File), 1.1
Fiier executabil, 3.3.1
Fiier proiect, 3.3.1
Fiier n Visual Basic, 3.4.5
Focalizare, 3.3.2
Form (formular), 3.3; 5.5
Form Design, 3.2
Form Layout, 3.2
Format, funcie, 3.4.4.3
Fragmentare baz de date, 8.3
FIFO (First-In, First-Out), 1.4
Finitudinea algoritmului, 2.3
ForNext, 3.4.4.4
Forme normale ale relaiilor, 4.3
Formular (Form), 3.3.2; 5.5
FROM, 6.2
FTP (File Transfer Protocol), 8.6.1
Funcie (Function), 2.3
Funcie de editare, 3.4.4.3
Funcie financiar, 3.4.4.3
Funcie n SQL, 6.4
Funcie pentru ir de caractere, 3.4.4.3
Funcie Visual Basic, 3.4.4.3
Funcii generale SGBD, 4.1
Fuzionare structur de date, 1.4
Generaie de baze de date, 4.2
Gestiune economic, 2.1
Gestiune tranzacii, 7.3; 8.4
Get (fiiere n VB), 3.4.5
Global, 3.4.3
Graf (graph), 1.4
Graf complet, 1.4
Graf orientat, 1.4
Group By (clauz SQL), 6.5
Groupware, 8.6.1
Having (clauz SQL), 6.5
HTML, HyperText Markup Language,
limbaj de marcare a hipertextelor, 5.7
HTTP, HyperText Transfer Protocol,
protocol de transfer al hipertextelor, 8.6.1
Hyperlink, 5.7

ID, identificator, 5.1


Identitate obiect, 2.4
Identificator, 2.3; 3.4.1
IfThenElseEnd If, 3.4.4.4
IMAP (Interactive Mail Access Protocol), 8.6.1
Immediate, 3.2
InfoCom, sisteme informatice i de
comunicaii, 1.1
Inconsistena datelor, 1.2
Index, 1.4
Informatic de gestiune, 1.1; 2.1
Informaie, 1.1
Input, fiier, 3.4.5
INSERT, 6.7
Instan, 4.4
Instan a clasei de obiecte, 2.4
Instruciune (Statement), 2.3
Instruciune alternativ, 3.4.4.4
Instruciune repetitiv, 3.4.4.4
Instruciune de manipulare a datelor, 6.7
Instruciune Visual Basic, 3.4.4
Instruciuni SQL de manipulare a datelor, 6.7
Integer, 3.4.2
Interclasare date, 2.2
Interfa aplicaie, 3.3.2
Interfa (list de metode), 2.4
Interfa public, 2.4
Interfa privat, 2.4
Interogare (Query), 5.4
Interogare de aciune, 5.4
Interogare de grup, 5.4
Interogare de selecie, 5.4
INTERSECT, 6.3.5
ISDN, Integrated Services Digital Network,
reea digital de servicii integrate, 1.1
IT&C, Information Technology and
Communications, tehnologiile informaiei i
ale comunicaiilor, 1.1
nregistrare (Record), 1.5; 4.1
ncapsulare (Embedding), 2.4; 4.4
Jonciune SQL, 6.6
KBE, Knowledge-Based Economy,
economie bazat pe cunotine, 1.1
KBS, Knowledge-Based Society, societate
bazat pe cunotine, 1.1
233

Universitatea SPIRU HARET

KBS, Knowledge-Based Systems, sisteme


bazate pe cunotine, 1.1
KDD, Knowledge Discovery in Database, 4.2
LAN, Local Area Network, reea local
de calculatoare i de comunicaii, 8.2
LDB, Local DataBase, baz de date local, 8.2
Left, funcie, 3.4.4.3
Len, funcie, 3.4.4.3
Let, 3.4.4.1
LIKE, 6.3.3
Limbaj de definire a datelor, 4.1
Limbaj de descriere a stocrii datelor, 4.1
Limbaj de macroasamblare, 2.3
Limbaj de manipulare a datelor, 4.1
Limbaj de nivel jos, 2.3
Limbaj de nivel nalt, 2.3
Limbaj de programare, 2.3
Limbaj neprocedural, 2.3
Limbaj procedural, 2.3
Limbaj pseudocod, 2.3
Limbaj structurat de interogare (SQL), 6.1
Line Input (fiier), 3.4.5
LIST, 2.3
List de metode (interfa), 2.4
List nlnuit (Chain List), 1.4
LIFO (Last-In, First-Out), 1.4
Locals, 3.2
Long, 3.4.2
Macro, 5.8
Macroinstruciune, 2.3; 5.8
MASM, 2.3
MBD, 5.1
MDI (Multiple Document Interface), 3.3.2
Mediu integrat de dezvoltare (IDE), 2.3; 3.2
Meniu contextual VB, 3.2
Menu Editor, 3.2
Mesagerie electronic, 8.6.1
Metod, 4.4
Metod de comportament obiect, 2.4
Microsoft Jet Database Engine, 3.1
Microsoft Visual Basic 6.0, 3.2
Microsoft Visual Studio 6.0, 3.2
Mid, funcie, 3.4.4.3
MIS (Management Information Systems), 8.2
Mod, 3.4.4.2
Model de date, 1.5
Model de date ierarhic, 1.5; 4.2

Model de date orientat obiect, 1.5


Model de date relaional, 1.5; 4.2
Modelarea datelor, 1.5
Modul, 3.3.1; 5.8
Module, 5.8
Motenire (Inheritance), 2.4; 4.4
Motenire dinamic, 2.4
Motenire multipl, 2.4
Motenire simpl, 2.4
Motenire static, 2.4
Motor de cutare (Search Engine), 8.6.1
Movil (Heap), 1.4
MS, Microsoft
MsgBox (caset de mesaje), 5.8
Mutare control, 3.3.2
Nivel fizic baz de date, 4.1
Nivel logic baz de date, 4.1
Nivel virtual baz de date, 4.1
NOT, 3.4.4.2
Notaia ungar, 3.4.1
Now, funcie, 3.4.4.3
NULL, valoare, 4.3
Obiect, 2.4; 4.4
OBP, 2.3; 2.4
Obiective DDB, 8.2
Obiective SGBD, 4.1
ODBC, 3.1; 5.9.1
Object, 3.4.2
Object Browser, 3.2
OLAP, On Line Analytical Processing,
prelucrare analitic online, 4.2
OLE, Object Linking and Embedding,
ncapsularea i legarea obiectelor, 3.1
OLTP, On Line Transactional Processing,
prelucrare online a tranzaciilor, 4.2
OO, Object-Oriented, orientat pe obiecte, 4.4
OODB, 4.4
OODBMS, Object-Oriented DBMS, SGBD
orientat pe obiecte, 4.2
OOP, Object-Oriented Programming,
programare orientat pe obiecte, 2.3 ; 2.4 ; 4.2
Open (fiier), 3.4.5
Operator binar, 3.4.4.2
Operator unar, 3.4.4.2
Operatori aritmetici, 6.3.1
Operatori caracter, 6.3.3
Operatori de comparaie, 6.3.2

234

Universitatea SPIRU HARET

Operatori logici, 6.3.4


Operatori pentru mulimi, 6.3.5
Operatorul IN, 6.3.6
Operatorul BETWEEN, 6.3.6
Operatori VB, 3.4.4.2
Operaii asupra unei baze de date, 4.1
OR, 3.4.4.2
Oracle, 7.4
Order By (clauz SQL), 6.5
Organizarea datelor, 1.2
Output (fiier), 3.4.5
Pagin de acces la date
(Data Access Pages), 5.7
Pagin Web, 5.7
Pagin Web dinamic, 5.7
Partajare date, 4.1
Persistena, 2.4; 4.4
PL/SQL, 7.5
Polimorfism, 2.4
POP (Post Office Protocol), 8.6.1
Populare baz de date, 4.1
Precizare proprieti, 3.3.3
Prelucrare automat a datelor, 2.2
Problema de rezolvat, 2.3
Procedur (Procedure), 2.3
Procedur Sub, 5.9.3
Program executabil, 2.3
Program-obiect, 2.3
Program pe calculator, 2.3
Program-surs, 2.3
Programare dirijat de evenimente, 3.1
Programare orientat pe obiecte, 2.4
Programare structurat, 3.1
Proiectare aplicaie, 3.3
Project Explorer, 3.2
Properties, 3.2
Proprietate obiect, 3.3.3
Protecie baz de date, 8.5
Prolog, 2.3
Punct de ntrerupere, 3.2
Put (fiier), 3.4.5
QBE, Query by Example, limbajul
de interogare prin exemple, 5.1; 5.4
Query, 5.4
RAD (Rapid Application Development), 3.1
Raft de date (Data Marts), 4.2

Ran, 3.4.4.1
Random (fiier),
Raport, 5.6
RDB (Relational DataBase), 4.2; 4.3
Reguli Codd, 4.3
Reguli de integritate, 4.3
Redimensionare control, 3.3.2
Reguli de scriere VB, 3.4.1
Relationship, 5.3.2
Relaie, 1.3; 1.5; 4.3
Relaie binar, 1.3
Relaie de echivalen, 1.3
Relaie de ordine, 1.3
Relaie ntre tabele, 5.3.2
Replicare, 7.2
RI, restricie de integritate.
Right, funcie, 3.4.4.3
Rnd, funcie, 3.4.4.3
Run Mode, 3.2
Schema logic, 2.3
Scriere (Write) date, 2.2
Scriere cod, 3.3.4
SDI (Single Document Interface), 3.3.2
Securitate baze de date, 8.5
SELECT, 6.2
Select Query, 5.4
Server, 7.1
Server de baze de date, 7.1
Server proxy, 8.6.1
SGBD-OO, 4.4
SGBD, sistem de gestiune a bazei de date, 4.1
SGML (Standard Generalized Markup
Language), 8.6.1
Sistem bazat pe cunotine, 1.1
Sistem de gestiune a bazelor de date,
SGBD, 4.1
SI, sistem informatic, 1.1; 2.2
Sin, funcie, 3.4.4.3
Sistem baz de date, 4.1
Sistem informaional, 1.1
Sistem relaional, 4.2
SI SC, societatea informaional
societatea cunoaterii, 1.1.
SIG, sistem informatic de gestiune.
SMTP (Simple Mail Transfer Protocol), 8.6.1
SOAP (Simple Object Access Protocol), 8.6.1
Societate informaional (Information
Society), 1.1
235

Universitatea SPIRU HARET

Societate informatic, 1.1


Societate bazat pe cunotine
(Knowledge-Based Society), 1.1
Specificarea metodei (semntura), 2.4
SQL, (Structured Query Language)
limbaj structurat de interogare, 6.1
SQL *Plus, 7.6
SQL Server, 7.2
Sqr, funcie, 3.4.4.3
Stare obiect, 2.4
STARTING WITH (clauz SQL), 6.5
Static, 3.4.3
Stiv (Stack), 1.4
Str, funcie, 3.4.4.3
String, 3.4.2
Structura de control alternativ, 2.3
Structura de control repetitiv, 2.3
Structura de control secvenial, 2.3
Structur de date, 1.4; 2.3
Structur de date arborescent, 1.4
Structur de date dinamic, 1.4
Structur de date fizic, 1.4
Structur de date liniar, 1.4
Structur de date logic, 1.4
Structur de date punctual, 1.4
Structur de date recursiv, 1.4
Structur de date reea, 1.4
Structur de date relaional, 1.4
Structur de date static, 1.4
Subprogram, 2.3
SUM, 6.4.1

Timer, funcie, 3.4.4.3


Tip abstract de dat, 2.4
Tip de dat, 3.4.2
Tip de legtur, 1.5
Tip obiect, 2.4
Tip structur de date, 1.4
Toolbox, 3.2
Tools VB, 3.2
TPS, Transition Processing Systems,
sisteme informatice de prelucrare
a tranzaciilor, 8.4
Transact SQL, 7.3
Tranzacie, 8.4
Tuplu, 4.3
UML, Unified Modeling Language,
limbaj unificat de modelare
Universalitatea algoritmului, 2.3
UNDERSCORE, 6.3.3
UNION, 6.3.5
UPDATE, 6.7
Valoare, 1.2
Variabil, 2.3; 3.4.
Variant, 3.4.2
VBA, 5.1; 5.9.2
VBE (Visual Basic Editor), 5.9.3
VBScript, 5.9.1
Ventilare structur de date, 1.4
Videoconferin, 8.6.1
Visual Basic, 3.1
Visual Basic.NET, 8.7

ablon HTML, 6.7


Tabel (Table), 1.4; 5.3
Tabel de dispersie (Hash Table), 1.4
Tablet PC, 5.1
Table Wizard, 5.3.1
Tablou ordonat, 1.4
TASM, 2.3
Tehnica entitate-asociere, 1.5
Time, funcie, 3.4.4.3

WAN, Wide Area Network, reea extins


(pe arie larg) de calculatoare i de
comunicaii, 8.1
Watch, 3.2
Where (clauz SQL), 6.2
WSDL (Web Service Description
Language), 8.6.1
www, World Wide Web, pagini Web.
XML, Extensible Markup Language,
limbaj de marcare extins, 5.1

236

Universitatea SPIRU HARET

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