Sunteți pe pagina 1din 236

ZENOVIC GHERASIM

PROGRAMARE ŞI BAZE DE DATE

Universitatea SPIRU HARET


Descrierea CIP a Bibliotecii Naţionale a României
GHERASIM, ZENOVIC
Programare şi baze de date / Zenovic Gherasim.
Bucureşti: Editura Fundaţiei România de Mâine, 2005
236p.; 23,5cm
Bibliogr.

ISBN: 973-725-096-6

159.91(075.8)

© Editura Fundaţiei România de Mâine, 2005

Redactor: Constantin FLOREA


Tehnoredactor: Vasilichia IONESCU
Georgiana (GÎRJOI) GHEORGHE
Coperta: Maria ANDRONIE
Bun de tipar: 16.12.2004; Coli tipar: 14,75
Format: 16/70×100
Editura şi Tipografia Fundaţiei România de Mâine
Splaiul Independenţei nr.313, Bucureşti, 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 FUNDAŢIEI ROMÂNIA DE MÂINE


Bucureşti, 2005

Universitatea SPIRU HARET


Universitatea SPIRU HARET
CUPRINS

Cuvânt înainte ……………………………………………………………………... 9


1. Dată, informaţie şi cunoştinţă. Organizarea datelor în vederea prelucrării
automate cu ajutorul calculatoarelor electronice ………………………….… 11
1.1. Conceptele de societate informaţională – societate a cunoaşterii.
Sistem informaţional, sistem informatic, sistem bazat pe cunoştinţe.
Dată, informaţie şi cunoştinţă ………………………………………………. 11
1.2. Noţiuni fundamentale utilizate în organizarea datelor ……………………... 15
1.3. Relaţiile dintre date …………………………………………………………. 17
1.4. Structuri de date …………………………………………………………….. 19
1.5. Modele de date ……………………………………………………………... 22
2. Rezolvarea problemelor economice cu ajutorul programelor pe calculator.
Programare …………………………………………………………………….. 25
2.1. Despre necesitatea cunoaşterii şi însuşirii elementelor de bază ale programării 25
2.2. Noţiuni de bază specifice procesului de prelucrare automată a datelor ……. 26
2.3. Noţiuni de bază referitoare la programare ………………………………….. 28
2.4. Elementele de bază ale programării orientate pe obiecte …………………... 40
3. Limbajul de programare Visual Basic …………………………………….…. 44
3.1. Caracteristicile generale ale mediului integrat de dezvoltare Visual Basic … 44
3.2. Componentele de bază ale mediului integrat de dezvoltare Visual Basic ….. 45
3.3. Proiectarea aplicaţiilor în limbajul Visual Basic …………………………… 49
3.3.1. Fişierul proiect ……………………………………………………….. 49
3.3.2. Crearea interfeţei aplicaţiei …………………………………………... 51
3.3.3. Precizarea proprietăţilor ……………………………………………… 55
3.3.4. Scrierea codului ……………………………………………………… 58
3.3.5. Execuţia aplicaţiei informatice în Visual Basic ……………………… 60
3.4. Elementele limbajului de programare Visual Basic ………………………... 63
3.4.1. Unele reguli de scriere ……………………………………………….. 63
3.4.2. Tipuri de date ………………………………………………………… 64
3.4.3. Variabile şi constante ………………………………………………… 65
3.4.4. Instrucţiuni Visual Basic ……………………………………………... 67
3.4.4.1. Construirea expresiilor ………………………………………. 67
3.4.4.2. Operatori Visual Basic ………………………………………. 67
3.4.4.3. Funcţii Visual Basic …………………………………………. 68
3.4.4.4. Implementarea structurilor de control al execuţiei unui program 70
3.4.5. Crearea fişierelor în limbajul Visual Basic …………………………... 72
3.4.6. Exemplu de aplicaţie informatică în limbajul Visual Basic …………. 74
5

Universitatea SPIRU HARET


4. Teoria bazelor de date şi a sistemelor de gestiune a bazelor de date ……….. 80
4.1. Organizarea datelor în baze de date. Sisteme de gestiune a bazelor de date .. 80
4.2. Generaţii de baze de date şi de sisteme de gestiune a bazelor de date asociate 87
4.3. Baze de date relaţionale …………………………………………………….. 89
4.4. Baze de date orientate obiect ……………………………………………….. 93
5. Sistemul de gestiune a bazelor de date Microsoft Access ……………………. 99
5.1. Prezentarea sistemului Microsoft Access …………………………………… 99
5.2. Cunoaşterea mediului de lucru Microsoft Access …………………………... 103
5.2.1. Definirea componentelor principale ale SGBD Microsoft Access …... 103
5.2.2. Deschiderea şi închiderea unei baze de date în Microsoft Access …... 105
5.3. Tabelul ……………………………………………………………………… 108
5.3.1. Crearea unui tabel ……………………………………………………. 108
5.3.2. Realizarea relaţiilor între tabele ……………………………………… 114
5.4. Interogarea ………………………………………………………………….. 118
5.5. Formularul ………………………………………………………………….. 131
5.6. Raportul …………………………………………………………………….. 140
5.7. Paginile (Pages) …………………………………………………………….. 143
5.8. Macroinstrucţiunea (Macro-ul) …………………………………………….. 148
5.9. Modulul (Module) ………………………………………………………….. 153
5.9.1. Problematica generală ………………………………………………... 153
5.9.2. Carateristicile limbajului VBA ………………………………………. 154
5.9.3. Crearea unui modul standard şi a unei proceduri Sub ……………….. 155
5.10. Utilizarea evenimentelor într-o bază de date ……………………………… 156
6. Limbajul structurat de interogare, SQL ……………………………………... 159
6.1. Noţiuni de bază referitoare la SQL …………………………………………. 159
6.2. Blocurile componente ale operaţiei de regăsire a datelor: SELECT şi FROM 159
6.3. Operatori utilizaţi în SQL …………………………………………………... 161
6.3.1. Operatorii aritmetici ………………………………………………….. 161
6.3.2. Operatorii de comparaţie …………………………………………….. 162
6.3.3. Operatorii caracter …………………………………………………… 162
6.3.4. Operatorii logici ……………………………………………………… 163
6.3.5. Operatorii pentru mulţimi ……………………………………………. 163
6.3.6. Alţi operatori, IN şi BEETWEEN …………………………………… 164
6.4. Funcţii în SQL ……………………………………………………………… 164
6.4.1. Funcţii pentru calculul totalurilor ……………………………………. 164
6.4.2. Funcţii dedicate pentru dată calendaristică şi oră ……………………. 165
6.4.3. Funcţii aritmetice …………………………………………………….. 165
6.4.4. Funcţii caracter ………………………………………………………. 166
6.5. Clauze utilizate în SQL …………………………………………………….. 167
6.6. Joncţiuni ……………………………………………………………………. 168
6.7. Instrucţiuni de manipulare a datelor ………………………………………... 169
6.8. Crearea şi întreţinerea tabelelor …………………………………………….. 171
7. Elemente fundamentale ale serverelor de baze de date ……………………... 173
7.1. Arhitectura Client/Server …………………………………………………… 173
7.2. Serverul de baze de date Microsoft SQL Server …………………………… 176
7.3. Noţiuni privind limbajul Transact_SQL pentru Microsoft SQL Server ……. 180
7.4. Serverul de baze de date Oracle ……………………………………………. 188
7.5. Caracterizarea limbajului PL/SQL pentru serverul de baze de date Oracle ... 191
6

Universitatea SPIRU HARET


7.6. Noţiuni privind utilitarul SQL*Plus din compunerea serverului de baze
de date Oracle ………………………………………………………………. 194
7.7. Alte servere de baze de date ………………………………………………... 196
8. Baze de date distribuite ………………………………………………………... 197
8.1. Despre necesitatea bazelor de date distribuite în aplicaţiile economice ……. 197
8.2. Concepte fundamentale …………………………………………………….. 197
8.3. Fragmentarea datelor în bazele de date distribuite …………………………. 203
8.4. Gestiunea tranzacţiilor ……………………………………………………… 205
8.5. Protecţia bazelor de date distribuite ………………………………………... 207
8.6. Baze de date online …………………………………………………………. 212
8.6.1. Problematica generală ……………………………………………….. 212
8.6.2. Pagini Web statice şi dinamice ………………………………………. 214
8.7 Visual Basic.NET şi bazele de date distribuite ……………………………... 216
9. Baze de date în tehnologii avansate …………………………………………... 219
9.1. Bazele de date deductive …………………………………………………… 219
9.2. Bazele de date multidimensionale ………………………………………….. 221
9.3. Bazele de date multimedia ………………………………………………….. 223
9.4. Bazele de date relaţionale orientate obiect …………………………………. 225
Bibliografie ………………………………………………………………………… 227
Anexă: Abrevieri şi noţiuni utilizate în lucrare ……………………………………. 231

Universitatea SPIRU HARET


8

Universitatea SPIRU HARET


Cuvânt înainte

Această lucrare este destinată studenţilor facultăţilor economice care studiază disciplina
Informatică de gestiune (Limbaje şi SGBD). Cartea poate fi utilă şi studenţilor din alte
facultăţi care studiază limbaje de programare şi sisteme de gestiune a bazelor de date. În
acelaşi timp, ea poate fi utilizată ca punct de plecare pentru revizuirea şi completarea
cunoştinţelor de către absolvenţii de facultate care urmează cursurile de masterat.
Parcurgerea cărţii presupune ca studentul să-şi fi însuşit deja cursurile de Informatică
de gestiune (Bazele informaticii) şi Birotică.
Lucrarea conţine noţiunile şi conceptele de bază din teoriile moderne ale programării ş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 relaţionale Microsoft Access şi a limbajului structurat de interogare SQL. În
carte au fost incluse mai puţine aplicaţii economice complexe, deoarece studentul are la
dispoziţie lucrarea Aplicaţii economice în Visual Basic şi Access, apărută în Editura Fundaţiei
România de Mâine, î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 prelucrărilor
tranzacţionale on-line (OLTP) către cel al prelucrărilor analitice on-line (OLAP) şi o
introducere pentru disciplina care va fi parcursă în anii următori de studii Sisteme informatice
de asistare a deciziei. De altfel, însuşirea cunoştinţelor de la cursul de Informatică de gestiune
(Limbaje şi SGBD) condiţionează înţelegerea şi celorlate cursuri de specialitate Informatică
de gestiune (Proiectarea sistemelor informatice), Auditarea sistemelor informatice şi Sisteme
expert de gestiune.
Pentru întocmirea lucrării, s-au folosit numeroase referinţe bibliografice atât din
literatura autohtonă, cât şi din cea străină.

Noiembrie 2004 Autorul,

Universitatea SPIRU HARET


10

Universitatea SPIRU HARET


1. DATĂ, INFORMAŢIE ŞI CUNOŞTINŢĂ.
ORGANIZAREA DATELOR ÎN VEDEREA PRELUCRĂRII
AUTOMATE CU AJUTORUL CALCULATOARELOR ELECTRONICE

1.1. Conceptele de societate informaţională – societate a cunoaşterii.


Sistem informaţional, sistem informatic, sistem bazat pe cunoştinţe.
Dată, informaţie şi cunoştinţă

Noţiunea de societate informaţională (Information Society) descrie o


economie şi o societate în care colectarea, stocarea, prelucrarea, transmiterea,
diseminarea şi utilizarea informaţiilor şi cunoştinţelor, inclusiv dezvoltarea
tehnicilor de comunicaţie 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 societăţii informaţionale care foloseşte progresele
tehnicii de calcul în toate domeniile de activitate economico-socială. Societatea
bazată pe cunoştinţe (Knowledge-Based Society) este o parte a societăţii
informatice care utilizează IT&C preponderent pentru prelucrarea datelor sub
formă de cunoştinţe. Considerând un nivel superior (pe modelul de dezvoltare în
spirală al societăţii umane), cel mai cuprinzător concept este cel de societate a
cunoaşterii (Knowledge Society). Societatea cunoaşterii este fundamentată pe
acumularea şi utilizarea de date sub formă de informaţii şi cunoştinţe la nivel
social. După acad. Mihai Drăgănescu [11], societatea cunoaşterii reprezintă mai
mult decât societatea informaţională şi decât societatea informatică, înglobându-le
de fapt pe acestea. Societatea cunoaşterii foloseşte piese (pieces) ale cunoaşterii.
Societatea informaţională are la bază sistemele informaţionale, societatea
informatică – sistemele informatice, iar societatea bazată pe cunoştinţe se
fundamentează pe sistemele bazate pe cunoştinţe (Knowledge-Based Systems).
Sintagma folosită de Romano Prodi, fostul preşedinte al Comisiei Europene, este
de economie bazată pe cunoştinţe (Knowledge-Based Economy, KBE); această
KBE reprezintă cea mai rafinată parte a noii economii (New Economy), prin noua
economie înţelegându-se economia specifică societăţii informaţionale– societăţii
cunoaşterii (SI - SC).
În Dicţionarul explicativ al limbii române, sistemul este definit ca fiind un
ansamblu de elemente dependente (componente, principii, reguli, relaţii etc.) care
formează un întreg organizat, pe baza unui plan prestabilit, cu scopul realizării unui
anumit obiectiv.
11

Universitatea SPIRU HARET


Sistemul informaţional reprezintă acel sistem de prelucrare a informaţiilor,
împreună cu resursele organizaţionale asociate, cum sunt resursele umane, tehnice
şi financiare ce furnizează şi distribuie informaţia. Ierarhia informaţională a SI-SC
este prezentată în fig.1.1.
Sistemul informatic reprezintă partea automatizată a sistemului informaţional
ce realizează prelucrarea datelor şi informaţiilor folosind un sistem de calcul; este
un ansamblu de echipamente şi programe pe calculator (software) care asigură
prelucrarea datelor.
Sistemul bazat pe cunoştinţe este o parte a sistemului informatic care
procesează cunoştinţe într-o cantitate determinantă şi semnificativă. După acad.
Mihai Drăgănescu, cunoştinţa este informaţie cu înţeles şi informaţie care
acţionează. Cunoştinţa semnifică ceea ce este cunoscut. Într-o altă percepţie,
cunoştinţele sunt informaţii dobândite prin instruire (educaţie) şi practică
(experienţă). La modul general, datele sunt reprezentate convenţional prin numere,
mărimi, relaţii etc. şi sunt folosite la rezolvarea problemelor sau sunt obţinute
printr-o activitate de cercetare. Informaţia reprezintă elementele de noutate despre
un fenomen, proces etc. Noutatea caracteristică noţiunii de informaţie este
percepută de utilizator numai în momentul intrării în contact cu această informaţie.
Ca urmare, din punct de vedere informatic, datele sunt informaţii sau cunoştinţe
reprezentate simbolic şi înregistrate în vederea gestionării (evidenţei) şi/sau
prelucrării. Rezultatul prelucrării este tot o dată care, prin interpretare, se
transformă iniţial în informaţie şi apoi (nu întotdeauna) în cunoştinţă.

SOCIETATEA
CUNOAŞTERII

Fig.1.1. Ierarhia informaţională a societăţii informaţionale-societăţii cunoaşterii

12

Universitatea SPIRU HARET


Caracterul de dată, informaţie sau cunoştinţă este relativ (adică se schimbă
în funcţie de contextul ce defineşte însuşirea de noutate pentru informaţie şi de
înţeles şi utilitate prin acţiune pentru cunoştinţă). De exemplu, şeful Georgescu îi
dă ca sarcină subalternului Ionescu să înregistreze zilnic, pe ore, prezentarea
clienţilor la filiala băncii, pentru efectuarea diferitelor operaţiuni, pe categorii de
clienţi – persoane fizice (retail) şi persoane juridice (corporate). Ionescu îşi
desfăşoară activitatea într-un birou la intrarea în sectorul de front-office. El constată
că primii clienţi sosiţi la ora 09.01, la deschiderea băncii, sunt în număr de trei,
două persoane fizice şi o persoană juridică şi că ora arătată de ceasul electronic din
birou este de 9 şi un minut (09.01). 09.01 este o dată pentru că reprezintă
informaţia înregistrată de ceas despre momentului efectuării primei observaţii în
ziua respectivă de către Ionescu. Interpretată de Ionescu, data (valoarea de 09.01)
se transformă în informaţia că ora este de 9 şi un minut. În acest fel, Ionescu intră
în posesia unei informaţii despre ora sosirii clienţilor în data de 2 iulie. Data
calendaristică 2 iulie, înainte de a fi înregistrată de Ionescu, reprezintă informaţia
de identificare a zilei calendaristice. Aceeaşi informaţie este comunicată şi şefului
Georgescu. Meticulos, Ionescu întocmeşte un tabel cu următorul cap de tabel: data,
ora şi minutul, număr clienţi persoane fizice, număr clienţi 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 informaţii înregistrate sau notate pentru oricare alt utilizator). În ziua de 2
iulie procedează la fel cu toţi clienţii filialei băncii. Pe data de 3 iulie, Ionescu,
constată că la ora 09 şi 14 minute sosesc doi clienţi persoane fizice. 09.14 iniţial
este o dată, ca informaţie înregistrată de ceasul electronic, care interpretată de
Ionescu, devine informaţie. Ionescu comunică imediat informaţiile despre dinamica
sosirii clienţilor băncii şefului său, dar nu are timp să le înregistreze în tabel în ziua
respectivă, astfel încât, până a doua zi, când le înregistrează, acestea îşi pierd
însuşirea de noutate, transformându-se în cunoştinţe despre dinamica sosirii zilnice
a clienţilor băncii, cunoştinţe ce sunt utile pentru perfecţionarea serviciilor
asigurate de personalul sectorului de front-office al filialei băncii. Pe data de 4
iulie, Ionescu înregistrează, înainte de deschiderea filialei băncii, pe a noua linie
din tabel: 3 iulie, 09.14, 2, 0, (similar, pe liniile următoare) elemente ce reprezintă
date, cunoştinţe înregistrate sau notate. Tot pe data de 4 iulie, Ionescu înregistrează
în tabel datele ce reprezintă informaţiile aferente zilei respective: 4 iulie, 09.08, 2,
3, elemente ce sunt date ce reprezintă informaţii înregistrate sau notate. La sfârşitul
lunii, Ionescu prezintă şefului Georgescu tabelul solicitat cu dinamica sosirii
zilnice a clienţilor băncii, împreună cu următoarele elemente de sinteză: valorile
statistice procentuale clienţi persoane fizice – clienţi persoane juridice şi cu un
grafic cu numărul de clienţi sosiţi pe zile şi ore. Tabelul întocmit de Ionescu
conţine datele obţinute prin înregistrarea informaţiilor şi/sau cunoştinţelor despre
dinamica sosirii clienţilor filialei băncii şi datele statistice obţinute prin prelucrarea
acestora, reprezentate valoric sau sub formă de grafic. Interpretate de Georgescu,
la prima citire, aceste date devin informaţii, după care documentul ce conţine
tabelul, valorile statistice privind categoriile de clienţi şi graficul sosirii clienţilor
cu date despre ora şi minutul sosirii acestora este introdus într-un dosar (folder).
Este important de precizat că dosarul cu filele documentului conţine date care citite
acum, reprezintă cunoştinţe despre dinamica sosirii clienţilor. La sfârşitul anului,
13

Universitatea SPIRU HARET


Ionescu îşi foloseşte abilităţile în utilizarea instrumentelor birotice oferite de
calculatorul electronic şi întocmeşte o situaţie de sinteză cu dinamica sosirii
clienţilor pentru semestrul II al anului. Concluziile rezultate din sinteză reprezintă,
în primul moment, informaţii atât pentru Ionescu, cât şi pentru şeful lui, Georgescu,
după care devin cunoştinţe înregistrate sub formă de date în documentul de sinteză.
Delimitarea între cele trei concepte înrudite – informaţii, cunoştinţe şi date -
este fundamentală pentru clarificările conceptuale ale SI-SC. Sistemele de calcul
electronic (calculatoarele electronice) au prelucrat, încă de la apariţia lor, date care,
uneori, s-au prezentat sub formă de informaţii, alteori sub formă de cunoştinţe. Se
apreciază [51] că în ultimii 20 de ani preocupările privind îmbunătăţirea fluxului de
informaţii în derularea afacerilor au determinat generalizarea utilizării conceptului
de informaţie. La acest lucru au contribuit, în principal, evoluţiile tehnologice care
au făcut posibilă înregistrarea masivă a informaţiilor în baze de date, folosind
sistemele de calcul, trecându-se astfel direct de la conceptul de informaţie la
conceptul de dată şi reciproc, prin obţinerea de noi informaţii prin interpretarea
datelor înregistrate şi prelucrate prin utilizarea sistemelor de calcul.
Valoarea informaţiei constă în potenţialul acesteia de a fi transformată în
cunoaştere [51], prin interpretarea la nivel de individ sau grup de indivizi. Atunci
când o persoană interpretează informaţia în aşa fel încât să o poată utiliza,
informaţia se transformă în cunoaştere. De exemplu, în cazul unui agent de bursă
ce urmăreşte evoluţia indicilor bursieri, informaţia pe care o receptează prin citirea
punctajelor respective (date înregistrate electronic) îi asigură cunoaşterea pe baza
căreia ia decizia de acţiune pentru clientul său.
Cunoaşterea reprezintă un amestec dinamic de experienţe sociale, valori
spirituale şi informaţii contextuale, precum şi experienţă personală profesionalizată
ce formează cadrul de evaluare şi încorporare de noi experienţe şi informaţii.
Cunoaşterea îşi are începuturile şi se foloseşte în mintea cunoscătorilor. În
organizaţii, adesea, cunoaşterea este materializată nu numai prin datele din
documente sau arhive, ci şi în cutumele, rutina, procesele, practicile şi normele
organizaţionale.
Acumularea de informaţii şi cunoştinţe conduce, la nivel social, la cunoaştere
(în vederea gestionării, prelucrării şi utilizării). Cunoaşterea reprezintă informaţie
tezaurizată în experienţa unui individ sau a unei colectivităţi. Ceea ce are mai
valoros experienţa umană este depozitat, în acelaşi timp, sub formă de date pe
diferitele mijloace de stocare, care, interpretate, generează noi informaţii ce
îmbogăţesc cunoaşterea ca proces social.
Cunoaşterea nu reprezintă o creaţie originală, ci este procesul de descoperire
treptată a complexităţii universului real reprezentat de realitatea înconjurătoare,
naturală şi socială, şi de reconfigurare, re-relaţionare continuă a componentelor
acesteia descoperite anterior cu informaţii nou primite, în încercarea de a se ajunge
la cunoaşterea întregului pe care îl reprezintă realitatea aceasta atât de complexă.
Produsele anterioare ale cunoaşterii devin elemente componente ale unei cunoaşteri
din ce în ce mai vaste [51].
„Oceanul” informaţional actual necesită nu numai eforturi de stocare a
datelor, informaţiilor şi cunoştinţelor, ci mai cu seamă de selecţie, la momentul
oportun, a celor mai relevante şi utile dintre acestea.
14

Universitatea SPIRU HARET


Aşa cum s-a arătat, societatea cunoaşterii reprezintă mai mult decât
societatea informaţională şi decât societatea informatică, înglobându-le de fapt pe
acestea. Cunoaşterea este informaţie cu înţeles şi informaţie care acţionează. De
aceea, societatea cunoaşterii nu este posibilă decât inclusă în societatea infor-
maţională şi nu poate fi separată de aceasta (fig.1.1). În acelaşi timp, ea este mai
mult decât societatea informaţională prin rolul major care revine informaţiei–cu-
noaştere în societate. Cel mai bun înţeles al societăţii cunoaşterii este probabil
acela de societate informaţională şi a cunoaşterii [11].
Societatea cunoaşterii are în vedere [11]:
– extinderea şi aprofundarea cunoaşterii ştiinţifice şi a adevărului despre
existenţă;
– utilizarea şi managementul cunoaşterii existente sub forma cunoaşterii
tehnologice şi organizaţionale;
– producerea de cunoaştere tehnologică nouă prin inovare;
– diseminarea fără precedent a cunoaşterii către toţi cetăţenii prin mijloace
noi, folosind cu prioritate Internetul şi cartea electronică; utilizarea metodelor de
învăţare prin procedee electronice (e-learning).
În societatea cunoaşterii 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 societăţii informaţionale şi a
cunoaşterii.
În concluzie, informatica este ştiinţa prelucrării automate a datelor.
Informatica de gestiune este acea parte a informaticii care prelucrează automat
datele de evidenţă şi control vehiculate în cadrul unei organizaţii economice. Ca
urmare, esenţa tuturor sistemelor informatice prezentate mai sus este gestionarea
datelor care, interpretate de factorul uman, devin uneori, aşa cum s-a arătat în acest
paragraf, informaţii sau cunoştinţe.

1.2. Noţiuni fundamentale utilizate în organizarea datelor

Datele sunt stocate în memoria internă şi memoria externă a oricărui sistem


de calcul. Organizarea datelor se referă la procesul de definire şi structurare a
datelor în colecţii de date, precum şi la realizarea legăturilor între elementele unei
colecţii şi între colecţiile de date. Organizarea datelor se proiectează în scopul
regăsirii automate a acestora după diverse criterii.
Obiectivele organizării datelor sunt, în principal, următoarele:
• timp de acces minim la date;
• apariţia o singură dată a datelor în sistem;
• spaţiu de memorie internă şi externă pentru date cât mai mic;
• reflectarea prin organizare a tuturor legăturilor dintre procesele economice
pe care aceste date le reprezintă;
• posibilitatea modificării structurii datelor şi a relaţiilor dintre date fără a
produce schimbări în programele care le gestionează.
Tehnicile de organizare a datelor în colecţii de date sunt: fişierul de date şi
baza de date.
15

Universitatea SPIRU HARET


Fişierul de date reprezintă o colecţie de date memorată pe un suport tehnic
într-o succesiune de înregistrări. Accesul la o înregistrare din fişierul de date se
obţine prin parcurgerea înregistrărilor fişierului în secvenţa în care au fost stocate
(acces secvenţial) sau pe baza unei chei de identificare care să permită regăsirea
rapidă a înregistrării (acces direct). Accesul direct se obţine prin indexarea
fişierelor, adică prin crearea unor tabele de indecşi care pentru fiecare valoare a
atributului cheie primară (atribut care permite identificarea în mod unic a unei
înregistrări din fişier) să conţină adresa corespunzătoare (în cadrul fişierului) a
fiecărei înregistrări.
Sistemele informatice moştenite foloseau cu preponderenţă organizarea
datelor în fişiere de date. Această organizare a datelor în fişiere de date prezintă
următoarele dezavantaje [18]:
• redundanţă mare (stocarea aceloraşi date în mai multe fişiere);
• acces dificil la date; exploatarea multiutilizator a datelor necesită operaţii
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 adăugare, modificare, ştergere, generează conflicte
atunci când mai mulţi utilizatori doresc să modifice simultan aceleaşi date;
• dependenţa programelor faţă de date; deoarece datele se descriu în
programe, modificările din structura datelor obligă la efectuarea de corecturi în
programele pe calculator;
• problemele neprevăzute nu obţin răspunsuri rapide;
• fiecare dată este descrisă independent în toate fişierele în care apare; dacă
într-un fişier se modifică formatul şi valoarea unei date, acea modificare nu se
transmite automat, pentru aceeaşi dată, în toate fişierele de date; ca urmare, pentru
aceeaşi dată se creează posibilitatea apariţiei de valori diferite în fişiere diferite
(inconsistenţa datelor);
• nu se menţine integritatea datelor, atunci când fişierul este realizat cu
limbaje diferite.
Creşterea necesarului de date, informaţii şi cunoştinţe pentru agenţii
economici şi progresele tehnologiilor informaţiei şi ale comunicaţiilor (IT&C) au
determinat organizarea datelor în baze de date (teoria bazelor de date este expusă
pe larg în capitolul 4 al lucrării). O bază de date este un fişier format din
înregistrări (records) sau rânduri, fiecare conţinând câmpuri (fields) sau coloane şi
o mulţime de operaţii de căutare, sortare, recombinare etc.
În proiectarea şi înţelegerea unui sistem informatic, organizarea datelor
reprezintă o etapă fundamentală care presupune:
1) definirea, structurarea, ordonarea şi gruparea datelor în colecţii de date
omogene;
2) stabilirea legăturilor între date, între elementele unei colecţii de date şi
între colecţiile de date, după o ierarhie bine precizată;
3) memorarea datelor pe un suport informaţional prelucrabil într-un sistem
de calcul.
Noţiunile fundamentale folosite în organizarea datelor sunt entitatea,
atributul şi valoarea. Între acestea există legături de interdependenţă astfel:
– o entitate are mai multe atribute, iar atributele au o anumită mulţime de valori;
16

Universitatea SPIRU HARET


– entitatea reprezintă un obiect concret sau abstract definit prin proprietăţile 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 societăţi comerciale poate fi
reprezentat prin mulţimea de perechi: (NUME, POPESCU); (PRENUME, ION);
(LOCALITATE, BUCUREŞTI); (TELEFON, 0213211231); (BANCA, BCR);
(CONT_BANCAR, RO15RZBR0000070002170022).
Mulţimea atributelor M_ATR = (NUME, PRENUME, LOCALITATE,
TELEFON, BANCA, CONT_BANCAR) poate fi asociată mai multor clienţi ai
societăţii comerciale. Ca urmare, atributele nu caracterizează doar o entitate, ci o
clasă de entităţi care este denumită entitate de grup. Elementele unei entităţi de
grup prezintă drept caracteristică aceeaşi mulţime de atribute. Ca urmare, entităţile
din cadrul unei entităţi de grup sunt de acelaşi tip, definindu-se astfel un tip de
entitate.
Atributul este denumit şi câmp sau caracteristică. Un câmp 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 obţin prin concatenarea mai multor atribute elementare.
Atributul care identifică în mod unic o entitate se numeşte atribut-cheie.
Caracteristicile care nu identifică în mod unic o entitate se numesc atribute
non-cheie.
Noţiunea 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
informaţia sau cunoştinţa 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ă mărime care se află la o adresă absolută.

1.3. Relaţiile dintre date

Între date există relaţii sau legături diferite. Între datele care aparţin unor
tipuri de entităţi se pot realiza două feluri de legături:
– prima legătură se exprimă prin apartenenţa datelor la entitate;
– a doua legătură se defineşte pentru entităţile de acelaşi tip sau de tipuri
diferite.

17

Universitatea SPIRU HARET


Exemple:
a) Dacă se notează cu SALARIATI mulţimea salariaţilor unei societăţi
comerciale, între datele a1 şi a2 ce aparţin acestei mulţimi, se pot defini relaţii de
tipul:
– a1 are aceeaşi funcţie de încadrare cu a2;
– a1 are acelaşi salariu cu a2;
– a1 are aceeaşi vârstă cu a2 etc.
b) Se consideră două clase de entităţi: PRODUSE_BANCARE şi CLIENTI.
Între datele acestor două clase de entităţi se pot defini relaţiile:
– un produs bancar poate fi achiziţionat de unul sau mai mulţi clienţi ai băncii;
– un client al băncii poate achiziţiona unul sau mai multe produse bancare.
Relaţia binară
Dacă se notează cu F mulţimea furnizorilor unei societăţi comerciale, se
afirmă că relaţia „oferă acelaşi produs cu” asociază fiecărui furnizor din mulţimea
F pe toţi cei care oferă acelaşi produs, cu condiţia să facă parte din mulţimea F.
Acest aspect poate fi pus în evidenţă prin intermediul unei mulţimi de perechi
ordonate (f1, f2) cu proprietatea că elementelor f1 le sunt asociate elementele f2
prin relaţia „oferă acelaşi produs cu”.
L = {(f1, f2) ∈FxF/f1,f2 ∈F şi „f1 oferă acelaşi produs cu f2”}.
Se face menţiunea că folosirea notaţiilor F şi L pentru definiţiile prezentate
mai jos este realizată cu scop didactic şi nu reduce generalitatea acestor definiţii.
Definiţie. Fie F o colecţie oarecare de date nevidă. Se numeşte relaţie binară
pe F o submulţime L a produsului cartezian F x F care satisface o proprietate
(legătură).
Prin notaţia (f1, f2) ∈L se înţelege că ”f1 este în relaţia sau legătura L cu f2“
sau”f1 este asociat lui f2 prin relaţia L”. Se foloseşte şi notaţia f1 L f2.
Definiţie. Fie F o mulţime nevidă de date. O relaţie binară L definită pe F se
numeşte relaţie de echivalenţă dacă este reflexivă, simetrică şi tranzitivă.
a. Relaţia sau legătura L definită pe mulţimea F este reflexivă dacă pentru
oricare f1∈F, se realizează f1 L f1.
b1. Relaţia L definită pe mulţimea F este simetrică dacă (∀) f1, f2 ∈F şi
f1 L f2 implică f2 L f1.
b2. Relaţia L definită pe mulţimea F este antisimetrică dacă (∀) f1, f2 ∈F,
f1 L f2 şi f2 L f1 implică f1=f2.
c. Relaţia 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.
Definiţie. Fie F o colecţie de date. Dacă pentru (∀) f1, f2, ∈F, cu proprietatea
că f1 L f2 sau f2 L f1 se afirmă că relaţia dintre elementele colecţiei este relaţie de
ordine totală.
Definiţie. Fie F o colecţie de date. Dacă o relaţie binară L, definită pe F este
reflexivă, antisimetrică şi tranzitivă, atunci relaţia L este o relaţie de ordine.

18

Universitatea SPIRU HARET


Definiţie. Dacă o relaţie binară L, definită pe F este reflexivă şi tranzitivă,
atunci relaţia L este o relaţie de preordine.

1.4. Structuri de date

Structura de date este o colecţie de date între care s-a stabilit un ansamblu de
relaţii pe baza cărora funcţionează un mecanism de selecţie şi identificare a
componentelor. Altfel exprimat, o structură de date reprezintă un anumit
aranjament al datelor atunci când sunt stocate în memoria unui calculator. Datele
din structurile de date pot fi manipulate cu ajutorul algoritmilor, în mai multe
moduri, sortând datele sau căutând un anumit element. Structurile de date, în afara
situaţiei de instrumente de programare, servesc pentru stocarea şi modelarea unor
date din universul real.
Mulţimea de date, asociată structurii de date, poate cuprinde datele unui tip
sau ale mai multor tipuri de entităţi. Componentele structurii se identifică prin
nume sau prin poziţia pe care o deţin în structură în raport cu ordinea specificată.
În situaţia în care pentru localizarea unei componente se parcurg toate
celelalte componente dinaintea ei, structura are acces secvenţial. În schimb, atunci
când o componentă poate fi selectată fără 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 următoarele operaţii:
• crearea (înseamnă memorarea datelor iniţiale pe suportul de stocare);
• actualizarea (schimbarea stării structurii prin adăugare, modificare sau
ştergere de elemente, modificarea valorii sau relaţiilor 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ă aceeaşi organizare şi asupra cărora se
execută aceleaşi operaţii formează un anumit tip de structuri de date. Tipul de
structură de date reprezintă o mulţime ordonată de date între care s-au stabilit
anumite relaţii şi pentru care realizarea operaţiilor 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 acelaşi tip);
• eterogene (componentele au tipuri diferite).
Când structura de date se descompune în structuri de date de acelaşi tip,
atunci structura obţinută este denumită recursivă.
După nivelul de structurare al datelor, se deosebesc:
• structura fizică (structura de date care se referă la modul de implementare
pe suporţi tehnici informaţionali);
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 modificării valorilor şi a structurilor,
se identifică:
• structuri statice – pe tot parcursul existenţei acestora prezintă acelaşi număr
de componente şi în aceeaşi ordine (adică au cardinalitate finită, prin cardinalitate
înţelegând numărul elementelor mulţimii);
• structuri dinamice (permit modificarea valorilor şi a structurii de date prin
aplicarea unor operatori; aceste structuri de date au cardinalitate infinită deoarece
prezintă un număr nelimitat de componente).
O structură logică poate fi implementată atât ca structură statică, cât şi ca
structură dinamică. Există însă şi structuri logice ce nu pot fi implementate static.
În organizarea datelor trebuie definite atât structura logică, cât şi cea fizică, deorece
cele două nivele se condiţionează 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ă (când există o relaţie de ordine totală între
elementele colecţiei de date; primul element nu are predecesori; ultimul element nu
are succesori; între date se stabilesc relaţii de tipul ”unu-la-unu”; când 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 defineşte când există o relaţie de
ordine între elementele colecţiei de date; există un element unic care este denumit
nodul rădăcină (root node);orice nod diferit de nodul rădăcină prezintă un
predecessor imediat unic; orice nod care nu este terminal prezintă un număr finit
de succesori imediaţi; între noduri se stabilesc relaţii de tipul ”unu-la-mulţi”);
• structura de date reţea (acest tip de structură de date se defineşte când
există o relaţie de preordine între elementele colecţiei de date; un nod prezintă mai
mulţi predecesori; un nod poate fi predecesor pentru propriul său predecesor; între
elementele reţelei se stabilesc relaţii de tipul ”mulţi-la-mulţi”);
• structura de date relaţională (acest tip de structură de date este formată din
mai multe tabele, relaţii 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 evidenţierea 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 relaţionale, aşa cum
se prezintă în capitolul 4 al lucrării).
La tablou, indexul se referă la o valoare care permite accesul direct la
structura de date fără a mai necesita parcurgerea secvenţială a ansamblului de
elemente. Indexul poate fi şi o listă cu cuvinte-cheie şi date asociate care indică
locaţiile unde se găsesc fişiere sau înregistrări de pe un suport magnetic. La bazele
de date, indexul este o listă cu chei de înregistrări dintr-o bază de date.
20

Universitatea SPIRU HARET


Tabelul 1.1.
Definirea şi caracteristicile unor structuri de date
Denumire Definire Avantaje Dezavantaje
Tablou În programare, listă de Inserare şi acces
(table) elemente, implementată rapid, când indexul
Căutare şi
sub forma unui vector de este cunoscut.
ştergere greoaie,
Tablou ordonat înregistrări sau a unei liste Căutare mai rapidă
dimensiune
înlănţuite. În bazele de date în comparaţie
fixată
relaţionale, structură cu linii cu tablourile
şi coloane. neordonate.
Coadă (queue) Structură realizată după Accesul la date se
metoda „primul sosit, execută în ordinea
primul plecat”, FIFO introducerii acestor
Acces greoi
(First-In, First-Out) date.
la celelalte
Stivă Structură realizată după Accesul la date se
elemente.
(stack) metoda „ultimul sosit, execută în ordinea
primul plecat”, LIFO inversă introducerii
(Last-In, First-Out) acestor date.
Listă înlănţuită Structură de date sub formă Inserare
(chain list) de listă în care fiecare şi ştergere rapide
element al listei asigură Căutare greoaie.
o adresă pentru următorul
element consecutiv al listei.
Arbore binar Structură de date sub forma Căutare, inserare şi Algoritmul de
(binary tree) unui arbore ordonat ştergere rapide ştergere este
de gradul doi. (arbore echilibrat). complicat.
Arbore bicolor Arbori binari la care fiecare
(bicolor tree) nod dispune de caracteristica
culoare – roşie sau neagră. Structuri de date
Arbore 2-3-4 Arbori multicăi în care fiecare complexe.
(2-3-4 tree) nod poate prezenta cel mult
patru succesori (fii).
Tabel de Structură de date funda- Structura de date Ştergere
dispersie mentată pe transformarea unui cea mai rapidă greoaie. Acces
(hash table) domeniu de valori ale unei (inserare rapidă şi lent atunci când
anumite chei într-un domeniu acces rapid pe nu se cunoaşte
de indici dintr-un tablou. baza unei chei). cheia.
Movilă (heap) Tip de arbore binar complet Inserare, ştergere
Acces greoi
implementat printr-un tablou. şi acces rapide la
la celelalte
elementul maxim
elemente.
sau minim.
Graf (graph) Structură formată din noduri Modelează situaţii Anumiţi algo-
şi arce ca legături dintre din universul real. ritmi sunt greoi
noduri. şi complicaţi.

21

Universitatea SPIRU HARET


La arbori, fiecare nod al arborelui, cu excepţia nodului rădăcină, este
succesorul unui nod unic. Fiecare nod admite unul sau mai mulţi subarbori ca
succesori sau nu deţine nici un succesor şi se denumeşte 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. Înălţimea
arborelui reprezintă drumul de lungime maximă. Un arbore care are ordinul
superior lui doi se numeşte arbore multicăi. Arborele echilibrat este un arbore la
care diferenţa dintre drumurile de la rădăcină la orice nod terminal este cel mult
unu. Un arbore este ordonat dacă, într-un mod de parcurgere prestabilit,
elementele considerate satisfac o relaţie 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 excepţia frunzelor, prezintă doi succesori (fii).
Tabelele de dispersie sunt structuri de date ce semnifică lista tuturor intrărilor
într-un fişier în concordanţă cu numerele de dispersie ce le aparţin. Codurile de
dispersie (hash codes) folosite la obţinerea tabelelor de dispersie sunt derivate din
codurile ASCII pe baza unor funcţii de dispersie.
Movila (heap-ul) serveşte pentru implementarea cozilor cu priorităţi (acele
cozi care permit ştergerea elementului cu cheia maximă sau minimă).
Graful complet este graful ale cărui noduri sunt conectate două câte 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 serveşte pentru prelucrarea datelor cu ajutorul calculatorului


electronic. Definirea unui model de date cuprinde următoarele:
• structura modelului;
• operatorii care se utilizează la manipularea structurilor de date;
• stabilirea regulilor de integritate pentru menţinerea corectitudinii datelor.
Definirea structurii modelului cuprinde definirea obiectelor (entităţilor) şi a
caracteristicilor asociate (atributelor). Se utilizează următoarele elemente: câmpul
(cel mai mic element al structurii), grupul simplu sau compus (set compus din
câmpuri multiple şi grupuri) şi înregistrarea (ansamblu de câmpuri sau grupuri
care constituie şi elementul generic al structurii). Relaţiile dintre înregistrările unei
entităţi (obiect) sau mai multor entităţi (obiecte) independente se materializează
într-o legătură dintre o realizare a înregistrării părinte şi una sau mai multe
realizări ale înregistrării copil. Prin entitate se înţelege un obiect al universului real
supus modelării, obiect caraterizat de o identitate proprie, de o existenţă proprie şi
de o familie de caracteristici care semnifică proprietăţile acestui obiect. Relaţiile
sunt denumite şi asocieri.
Pentru realizarea unei reprezentări grafice (sub formă de diagrame) a
structurii modelului se utilizează tehnica entitate-asociere, care constă în
identificarea componentelor (entităţilor), identificarea asocierilor dintre entităţi şi
codificarea lor, identificarea atributelor şi precizarea atributelor de identificare a
entităţilor. Fiecare entitate prezintă mai multe realizări. Legăturile dintre entităţi
22

Universitatea SPIRU HARET


sunt reprezentate prin arce neorientate sau orientate (fig.1.2), care stabilesc
legătura între nodurile ce reprezintă entităţile participante la asociere. Semnificaţia
legăturii este exprimată printr-un nume acordat legăturii. Legătura se reprezintă cu
un nod etichetă (sub formă de romb) dispus pe arc ca nod intermediar.

Fig. 1.2. Reprezentarea relaţiei CLIENŢI-PRODUSE şi a cardinalităţii

Tipul sau forma legăturii se evidenţiază cu ajutorul cardinalităţii. În figura


1.2 este reprezentată grafic cardinalitatea legăturii între CLIENŢI-PRODUSE.
Cardinalitatea legăturilor semnifică numărul minim şi numărul maxim de realizări
(instanţe) de entitate care pot fi asociate cu o realizare a partenerului de asociere.
Cardinalitatea se reprezintă prin perechi de numere, câte o pereche pentru fiecare
entitate din cadrul legăturii. Din fig.1.2 se observă că un anumit produs poate fi
achiziţionat de mai mulţi clienţi şi un client poate cumpăra mai multe produse.
Perechea (1,n) este asociată entităţii CLIENTI şi semnifică faptul că un client poate
să achiziţioneze un produs sau poate să achiziţioneze mai multe produse. Perechea
(0,n) este asociată entităţii PRODUSE şi semnifică faptul că un produs poate să nu
fie achiziţionat de nici un client sau poate să fie achiziţionat de mai mulţi clienţi.
Între entităţi se pot stabili următoarele tipuri de legături:
1. După cardinalitatea asocierii şi după gradul asocierii (maximele
cardinalităţii) se deosebesc:
– asocieri de tipul „unu la unu” (one-to-one);
– asocieri de tipul „unu la mulţi” (one-to-many);
– asocieri de tipul „mulţi la mulţi” (many-to-many).
2. După cardinalitatea asocierii şi după obligativitatea participării entităţilor
la asociere (minimele cardinalităţii) se diferenţiază:
– asocieri parţiale (acele asocieri care nu obligă participarea la asociere a
tuturor entităţilor vizate);
– asociere totale (complete).
3. Simultan, după gradul asocierii şi după obligativitatea participării la
asociere, tipurile de legături se diferenţiază în:
– asocieri parţiale de tip „unu la unu”;
– asocieri totale de tip „unu la unu”;
– asocieri parţiale de tip „unu la mulţi”;
– asocieri totale de tip „unu la mulţi”;
– asocieri parţiale de tip „mulţi la mulţi”;
– asocieri totale de tip „mulţi la mulţi”.
4. După numărul de entităţi distincte care participă la asociere se definesc:
– asocieri binare (asocieri între două entităţi distincte);
– asocieri recursive (asocieri ale entităţilor cu ele însele);
– asocieri complexe (asocieri între mai mult de două entităţi distincte).
23

Universitatea SPIRU HARET


Atributele reprezintă proprietăţi distincte ale entităţilor, însă ele se pot referi
şi la asocierile dintre entităţi. După complexitate, atributele se clasifică în atribute
simple sau elementare şi în atribute complexe (compuse din mai multe atribute
elementare). După realizările pe care le pot prezenta atributele, acestea pot fi
monovaloare, multivaloare, obligatorii sau opţionale. Un atribut de identificare
este denumit cheie, atunci când este caracterizat prin unicitatea valorii sale pentru
fiecare instanţă a entităţii (de exemplu, cod_client pentru entitatea CLIENTI,
cod_produs, pentru entitatea PRODUSE. Atributele cheie se marchează prin
subliniere sau printr-o săgeată spre entitatea căreia îi aparţin.
Operatorii utilizaţi în modelele de date sunt citire, memorare, modificare,
joncţiune etc. Pentru asigurarea corectitudinii datelor se folosesc reguli de
integritate.
Cele mai importante modele de date sunt modelul ierarhic, modelul reţea,
modelul relaţional şi modelul orientat obiect.
Modelul ierarhic conţine ca structuri de bază tipuri de înregistrări care
grupează toate atributele unei entităţi. Acest model posedă ierarhia ca tip de
structură. Această ierarhie dispune de un tip de înregistrare definit ca rădăcină/root
şi mai multe tipuri de înregistrări subordonate, legate sub formă de arbore, motiv
pentru care modelul este denumit şi arborescent.
Nodul din arbore care nu este rădăcină sau nod final, are un singur nod
superior şi unul sau mai multe noduri inferioare. Legătura de la un nod superior la
unul inferior este de tipul 1→m, iar legătura de la un nod inferior la unul superior
este de tipul 1→1. Datorită existenţei celor două structuri, modelul oferă operatori
separaţi, şi anume:
• operatori de citire pentru tipul de înregistrare;
• operatori de citire pentru tipul ierarhie;
• operatori de memorare pentru tipuri de înregistrări;
• operatori de memorare pentru ierarhie.
În cazul modelului reţea, datele sunt reprezentate ca la modelul ierarhic, cu
deosebirea că fiecare inferior poate avea mai mulţi superiori. Structurile specifice
modelului reţea pot să fie tipul de înregistrări (asigură atributele unei entităţi) şi
tipul de set (asigură legăturile între tipurile de înregistrare).
Modelul relaţional este fundamentat pe teoria matematică a relaţiilor,
caracterizându-se printr-o singură structură de date şi anume relaţia sau tabelul. Un
astfel de model poate fi perceput ca o mulţime de tabele obţinute prin metoda
normalizării. Normalizarea porneşte de la o mulţime de atribute sau câmpuri de
date şi de la o mulţime de dependenţe funcţionale dintre atribute. Normalizarea
permite obţinerea unei scheme conceptuale a modelului relaţional î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 entităţile desemnate (mai multe detalii sunt prezen-
tate în capitolul 3).

24

Universitatea SPIRU HARET


2. REZOLVAREA PROBLEMELOR ECONOMICE CU AJUTORUL
PROGRAMELOR PE CALCULATOR. PROGRAMARE

2.1. Despre necesitatea cunoaşterii


şi însuşirii elementelor de bază ale programării

Rezolvarea problemelor, în general, şi a problemelor economice în particular,


cu ajutorul programelor pe calculator necesită cunoaşterea şi însuşirea noţiunilor
fundamentale referitoare la programare. Problemele economice prezintă o serie de
particularităţi legate de caracterul proceselor şi fenomenelor economice din care fac
parte: existenţa unor modele (inclusiv bazate pe relaţii matematice), volumul mare de
date stocate în baze de date şi în depozite de date, operaţii relativ puţine şi de
complexitate redusă (în comparaţie, de exemplu, cu calculele tehnico-inginereşti),
prelucrări şi reprezentări statistice etc. Toate aceste particularităţi sunt luate în
considerare la rezolvarea problemelor economice, în special a celor de gestiune.
Informatica de gestiune reprezintă în esenţă informatica aplicată în domeniul
prelucrării automate a datelor asupra evidenţei şi controlului activităţilor şi bunurilor
unei organizaţii economice. Gestiunea unei organizaţii economice constă în
totalitatea activităţilor desfăşurate pentru evidenţa resurselor acesteia (umane,
materiale, financiare şi informaţionale), încredinţate, spre administrare, factorilor de
decizie, pentru realizarea scopurilor specifice domeniului său de activitate.
În prezent, dar mai cu seamă în viitor, nu există şi nu va exista nici un loc de
muncă fără calculator conectat în reţea, în special în domeniile contabilitate şi
financiar-bancar. Viitorul economist trebuie să cunoască principiile şi elementele
de bază ale programării şi să câştige deprinderi adecvate, cel puţin din următoarele
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 perfecţionarea aplicaţiilor informatice
economice ce pot fi realizate nemijlocit de către economist;
• economistul poartă un dialog permanent cu specialistul informatician în
ceea ce priveşte perfecţionarea sistemelor şi instrumentelor informatice complexe
dedicate rezolvării problemelor economice.
Este inutil să se insiste mai mult, la capitolul motivaţie, asupra importanţei
programării şi bazelor de date pentru viitorul economist cu specializarea
contabilitate şi informatică de gestiune, în care sintagma informatică de gestiune
reprezintă a doua jumătate a întregului. Acest fapt îi conferă viitorului economist
dreptul de a profesa şi în categoria profesioniştilor în informatică, dar, în acelaşi
timp, generează şi obligaţia de a-şi însuşi în mod corespunzător fundamentele
programării şi ale bazelor de date.
25

Universitatea SPIRU HARET


2.2. Noţiuni de bază specifice procesului
de prelucrare automată a datelor

Orice sistem de calcul (adică acel sistem tehnic care asigură execuţia
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 condiţiile cerute de societatea
informaţională – societatea cunoaşterii (concepte prezentate în capitolul 1 al
lucrării) ş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 rândul ei, software-ul
de bază (sistemul de operare sau sistemul de programe de bază) şi software-ul de
aplicaţie (sau sistemul de programe aplicative). În continuare sunt prezentate
noţiunile de bază specifice procesului de prelucrare automată a datelor.
În capitolul 1 al lucrării s-a prezentat noţiunea de sistem informatic. A
rezultat astfel că orice sistem informatic conţine unul sau mai multe sisteme de
calcul (hard şi soft), cărora li se adaugă restul bazei tehnico-materiale, baza
ştiinţifico-metodologică, baza informaţională, resursele umane şi cadrul
organizatoric. Baza tehnico-materială conţine echipamentele de culegere, verificare
şi transmitere date, echipamentele de teleprelucrare, suporturile de stocare a datelor
şi calculatorul propriu-zis. Baza ştiinţifico-metodologică cuprinde modelele
matematice ale proceselor şi fenomenelor economice şi metodologii de realizare a
sistemelor informatice. Baza informaţională se referă la date, fluxuri şi circuite
informaţionale, cataloage şi dicţionare de date etc.
Un sistem informatic are funcţia de prelucrare automată a datelor pentru
obţinerea informaţiilor necesare procesului de conducere sau de informare.
Din cele arătate mai sus, rezultă că procesul de prelucrare automată a datelor
presupune existenţa simultană a următoarelor 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 ieşire sau
rezultatele prelucrărilor. Î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 reţinut
că datele de intrare sunt introduse printr-o operaţie de citire - read, iar datele ce
reprezintă rezultate sunt obţinute printr-o operaţie de scriere –write sau de tipărire
- print a rezultatelor (fig.2.1).

CITIRE
PRELUCRĂRI SCRIERE
DATE DE
REZULTATE
INTRARE

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 producătoare a părţii 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 către 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 aplicaţia informatică şi sunt reprezentate într-o structură
accesibilă calculatorului. Datele sunt organizate în colecţii de date (detaliile sunt
prezentate în capitolul 4) în funcţie de condiţiile specifice impuse de sistemul
informaţional existent şi de dorinţele utilizatorilor finali din procesul de decizie.
Procesul de prelucrare automată a datelor are loc într-o succesiune controlată
de operator, adică, în accepţiunea 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 următoarele operaţii [18]:
• pregătirea datelor iniţiale, de regulă manual, în vederea introducerii lor
în procesul de prelucrare automată (citire), ce presupune verificarea, sortarea şi
codificarea acestor date în funcţie de documentele primare existente; verificarea
datelor presupune confirmarea concordanţei între valorile prezente în documentele
primare şi valorile care trebuie să existe în conformitate cu aplicaţia 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 precizări ale utilizatorului;
codificarea datelor înseamnă operaţia de atribuire de semne numerice, alfabetice
sau alfanumerice unor date cu scopul de a optimiza numărul de semne cu care se
scriu şi se prelucrează, de exemplu, elementele specifice sistemului informaţional
financiar-contabil; noţiunea de document primar (de evidenţă primară) este cea
definită în contabilitate, ca primă etapă a funcţiei contabile, adică acel document în
care se consemnează pentru prima dată o operaţie economico-financiară (facturi,
chitanţe, cecuri etc). Fiecare eveniment ce prezintă un efect economic se înscrie
într-un document primar în momentul şi în locaţia în care s-a produs;
• introducerea datelor iniţiale în calculator, adică în memoria internă sau
memoria externă a sistemului de calcul; introducerea datelor iniţiale poate fi făcută
direct de la tastatură (în regim conversaţional) sau de pe un suport tehnic accesibil
calculatorului;
• prelucrarea propriu-zisă a datelor, ceea ce înseamnă execuţia automată
de către calculator a tuturor operaţiilor prestabilite prin program (validări de date,
sortări, interclasări, comparări şi testări); 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 obţine un şir (vector) de date ce conţine toate elementele
unor vectori iniţiali ordonaţi; compararea datelor este tipul de prelucrare prin care
se verifică existenţa unor relaţii de ordine între două date; relaţia de ordine a fost
definită la cursul de matematică şi este o relaţie binară pe o mulţime de date ce
stabileşte ordinea de parcurgere a elementelor mulţimii; testarea datelor este tipul
27

Universitatea SPIRU HARET


de prelucrare prin care se verifică un ansamblu de date ce sunt pregătite pentru
buna funcţionare a unui program;
• prezentarea rezultatelor prelucrării, adică afişarea pe ecranul moni-
torului sau imprimarea pe hârtie; când rezultatele sunt folosite în prelucrări
ulterioare, ele sunt stocate pe suporţi magnetici.
Etapele şi operaţiile prezentate mai sus se încadrează în ”triada de aur”
specifică oricărui sistem de calcul: stocare – prelucrare– prezentare date.

2.3. Noţiuni de bază referitoare la programare

Rezolvarea unei probleme reprezintă procesul de concepere şi de


implementare a unei strategii de găsire a unei soluţii sau de conversie la
normalitate a unor stări generate de condiţii nedorite sau neaşteptate. În activitatea
de concepere a programelor destinate calculatoarelor electronice, problema de
rezolvat este definită, detaliată şi transformată într-un proiect pe baza căruia 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 instrucţiuni (comenzi) ce se execută
de sistemul de calcul cu scopul de a efectua o succesiune de acţiuni sau un tip
prestabilit de activitate.
Noţiunea de dată a fost prezentată pe larg în capitolul 1. Instrucţiunea sau
comanda semnifică un enunţ ce specifică o acţiune într-un limbaj de programare.
Programul pe calculator (sau, mai simplu, programul) are în compunere, de
regulă, două tipuri de enunţuri: declaraţii şi instrucţiuni. Declaraţia este asocierea
dintre un identificator şi anumite informaţii. Această asociere este formală la
realizarea programului şi devine efectivă în timpul compilării sau în timpul
execuţiei programului. Declaraţia priveşte modul de organizare a datelor de intrare,
pe timpul prelucrării, precum şi a datelor de ieşire (rezultatelor). Identificatorul
reprezintă orice şir de caractere alfanumerice ce se foloseşte în calitate de:
• nume de variabilă sau constantă într-un program;
• etichetă de regăsire a unui punct din program;
• nume de procedură sau de funcţie;
• nume ataşat unei unităţi logice de memorie externă (hard disc, dischetă,
compact disc, memorie flash etc.).

DATE
(STRUCTURI DE
DATE) LIMBAJ DE
PROGRAM 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). Noţiunea de algoritm nu are o definiţie riguroasă. Algoritmul
este o metodă, un procedeu, o reţetă, o soluţionare a unei probleme, fără însă a
realiza echivalenţa cu aceşti termeni.
Dicţionarele de informatică definesc algoritmul ca:
• o descriere a schemei de realizare a unui eveniment cu ajutorul unei
mulţimi finite de acţiuni elementare predenumite, realizabile a priori şi având o
durată limitată în timp;
• un concept folosit pentru a desemna o mulţime finită de operaţii cunoscute
care, executate într-o ordine bine stabilită, pornind de la o mulţime de valori (date)
de intrare conduc la obţinerea în timp finit a unei alte mulţimi de valori, valori
(date) de ieşire;
• o secvenţă finită de paşi prin care se rezolvă o problemă logică sau
matematică.
În realizarea unui algoritm este necesară satisfacerea următoarelor patru
condiţii (proprietăţi):
• claritatea, ceea ce înseamnă ca algoritmul să fie bine definit (cu
specificaţii riguroase şi fără ambiguităţi);
• exactitatea (determinismul), adică în fiecare moment al execuţiei
algoritmului, se cunosc cu exactitate următoarea operaţie, precum şi modul de
execuţie a fiecărei operaţii; descrierea cu exactitate asigură execuţia algoritmului
pe un sistem de calcul;
• universalitatea, ceea ce semnifică faptul că orice algoritm, fiind cât mai
universal cu putinţă, asigură rezolvarea unei clase largi de probleme;
• finitudinea, ce constă în faptul că algoritmul este finit în spaţiu (ca
descriere) şi asigură obţinerea rezultatului într-un timp determinat de execuţie,
adică după un anumit număr finit de paşi.
După gândirea 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ă enunţuri: standard şi nestandard; enunţurile nestandard sunt
fraze în limbajul natural ce se folosesc, de regulă, în programare pentru
reprezentarea formei iniţiale a algoritmilor; enunţurile standard exprimă operaţii ce
dispun de corespondenţe directe în instrucţiunile limbajului de programare.
Schema logică asigură reprezentarea sub formă grafică a algoritmilor.
Schema logică de program se deosebeşte de schema logică de sistem. Schema
logică de sistem descrie operaţiile de prelucrare a datelor pe sistemul de calcul, cu
focalizare pe sursele de date, documentele primare ce le conţin, activităţile ce se
execută asupra lor, modul de stocare şi de prezentare a rezultatelor prelucrării.
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 semnificaţiile prezentate în figura 2.3.
29

Universitatea SPIRU HARET


BLOC BLOC
INTRODUCERE/EXTRAGERE DESCHIDERE/
DATE (INTRARE/IEŞIRE) ÎNCHIDERE FIŞIERE

BLOC ATRIBUIRE
BLOC DECIZIE
(SALT CONDIŢIONAT)

BLOC ÎNCEPUT /SFÂRŞIT


BLOC PROCEDURĂ DE PROGRAM (TERMINATOR)

CONECTORI PE PAGINĂ CONECTORI DE PAGINĂ

BANDĂ MAGNETICĂ DOCUMENT IMPRIMAT

LINII DE LEGĂTURĂ Î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ă ieşire. Această
posibilitate se bazează pe teorema lui Boehm şi Jacopini care arată că orice
algoritm poate fi reprezentat ca o combinaţie a celor trei structuri de control
fundamentale: secvenţială, alternative şi repetitive.
Structura de control secvenţială (liniară) cuprinde o succesiune de blocuri
care se execută unul după altul, figura 2.4.a.
Structurile de control alternative (cu ramificaţii) corespund unui bloc de
prelucrare care se execută în functie de satisfacerea unei condiţii (fig. 2.4.b, c şi d).
Aceste structuri de control prezintă următoarele forme:
• structura de control alternativă cu două ramificaţii (If…Then…Else), fig.2.4 b;
• structura de control alternativă cu mai multe ramificaţii (imbricată), fig.2.4 c;
• structura de control alternativă generalizată (Case-Of), fig.2.4 d.
Structurile de control repetitive (de ciclare) asigură repetarea prelucrării unor
secvenţe de program (fig. 2.4.e). Formele structurilor de control repetitive sunt:
• structura repetitivă fără contor condiţionată anterior (While Do);
• structura repetitivă fără contor condiţionată posterior (Repeat …Until);
• structura repetitivă cu contor condiţionată anterior (Do…For);
• structura repetitivă cu contor condiţionată posterior (Do…For).
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 funcţiilor. Mai multe programe
alcătuiesc împreună o aplicaţie informatică (fig.2.5). Clasic, aplicaţia informatică
are o structură statică arborescentă, adică este formată dintr-un program principal
care apelează subprograme. Subprogramele sunt independente în conformitate cu
principiile programării structurate (programe constituite din subprograme sau
module şi folosirea structurilor de control fundamentale).
Aplicaţia informatică este dedicată unui anumit domeniu de activitate
economică (de exemplu, aplicaţie informatică de contabilitate, aplicaţie informatică
pentru managementul resurselor umane, aplicaţie informatică pentru gestiunea
creditelor bancare etc.). Noţiunea de aplicaţie informatică nu este similară cu aceea
de sistem informatic (definit în capitolul 1).
Limbajul de programare este un limbaj artificial ce se foloseşte pentru
definirea unui şir de instrucţiuni 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,
căreia îi sunt associate constante, tipuri de date şi variabile şi care execută, de
regulă, un task unic. Task-ul este un subprogram sau aplicaţie autonomă rulată ca o
entitate independentă. Funcţia (function) este un subprogram sau rutină care
returnează o singură valoare prin însăşi numele funcţiei. Spre deosebire de funcţie,
procedura poate returna mai multe valori atunci când este rulată. Variabila este, în
programare, o locaţie de memorie în care se stochează date de un anumit tip şi care
pot fi modificate pe timpul execuţiei programului. Constanta desemnează o entitate
cu nume ce reprezintă o valoare care nu se modifică pe timpul execuţiei unui
program. Structura de date este o schemă de organizare a datelor cu scopul de a
31

Universitatea SPIRU HARET


simplifica operaţiile de prelucrare sau de a uşura 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, mulţime etc.

Fig. 2.4.c. Structura alternativă imbricată

32

Universitatea SPIRU HARET


i=1 i=n
i=2

SECVENŢA SECVENŢA ... SECVENŢA


1 2 n

STRUCTURA ALTERNATIVĂ GENERALIZATĂ


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

Instrucţiunea este formată din două elemente distincte: codul operatorului şi


operanzii (datele supuse operaţiei elementare reprezentate prin cod). În funcţie de
tipul prelucrării pe care o execută, instrucţiunile se clasifică în:
• instrucţiuni de prelucrare propriu-zisă;
• instrucţiuni de organizare (structurare), care realizează concordanţa
logică între algoritm şi succesiunea internă a secvenţelor de program.
Instrucţiunile de prelucrare propriu-zisă se grupează în:
¾ instrucţiuni de intrare-ieşire, care stabilesc sensul fluxului de date în
sistemul de calcul, fişierul de date asupra căruia se efectuează operaţia şi
echipamentul periferic pe care se găseşte acest fişier de date; fişierul de date este o
colecţie de date stocată pe un suport tehnic într-o succesiune de înregistrări;
¾ instrucţiunile de calcul, ce precizează natura operaţiei, adresele operanzilor
care participă la calcul şi a operaţiei aritmetice;
¾ instrucţiunile de transfer (atribuire), ce realizează transferul datelor,
precizând 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 ooo o
o o o
o o o

Subprogram m Subprogram n
Subprogram z

PROGRAM 1 PROGRAM 2 PROGRAM l

APLICAŢIE INFORMATICĂ

Fig.2.5. Noţiunea de aplicaţie informatică

Client

Nume Prenume Adresa Telefon Banca

Localitatea Strada Nr Bloc Scara Etaj Apart


Fig.2.6. Structura de date Client

35

Universitatea SPIRU HARET


36

Universitatea SPIRU HARET


Fig.2.7. Fazele elaborării unui produs-program

Instrucţiunile de organizare sunt următoarele:


¾ instrucţiunile de comparare (decizie logică), care asigură compararea a doi
sau mai mulţi operanzi, rezultatul fiind categorisit ca „adevărat” (True) sau „fals”
(False);
¾ instrucţiunile de salt, ce realizează trecerea de la secvenţa de instrucţiuni
curentă din program la o secvenţă de instrucţiuni situată în alt punct al
programului.
Indiferent de limbajul de programare folosit pentru rezolvarea problemei,
realizarea unui program presupune parcurgerea următoarelor etape (fig.2.7):
1. Analiza problemei de rezolvat şi realizarea algoritmului, etapă ce
presupune elaborarea unui enunţ complet al problemei, stabilirea modalităţilor de
organizare şi de reprezentare a datelor de intrare şi de ieşire, elaborarea schemei
37

Universitatea SPIRU HARET


logice de sistem care defineşte echipamentele din configuraţia 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 instrucţiunile unui limbaj
de programare; pentru această codificare, se foloseşte un editor de texte; acest
editor poate fi independent sau poate face parte din mediul integrat de dezvoltare
(IDE); se obţine 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
instrucţiuni cod-maşină. Această operaţie de traducere se obţine, î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ă nerespectării sintaxei generale a unei instrucţiuni) sunt
depistate şi afişate. Erorile de sintaxă sunt eliminate prin corecţii aduse
programului-sursă, după care operaţia de compilare este reluată. Este important de
menţionat faptul că în etapa de compilare nu se depistează erorile logice din
program; erorile logice sunt greşeli produse la realizarea algoritmului de calcul.
4. Editarea de legături (linkeditarea), ce asigură includerea codului obiect al
programului (programul-obiect) într-un ansamblu executabil (programul
executabil), care cuprinde şi module specifice sistemului de operare, funcţii de
bibliotecă etc. cu ajutorul componentei denumită editor de legături (linkeditor).
Eventualele erori ce apar conduc la corecţii î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 exploatării programului.

Problematica generală a limbajelor de programare


Limbajul de programare reprezintă un limbaj artificial ce se foloseşte pentru
definirea unui şir de instrucţiuni care pot fi prelucrate şi executate pe un sistem de
calcul. Noţiunea de instrucţiune 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ă
mulţimea simbolurilor utilizate pentru scriere în limbajul de programare respectiv.
Vocabularul este compus din mulţimea cuvintelor întrebuinţate în limbaj.
Gramatica limbajului de programare este reprezentată de ansamblul regulilor de
scriere, cu preponderenţă sub aspect sintactic (mulţimea regulilor de formare a
instrucţiunilor), cu luarea în consideraţie a regulilor de punctuaţie şi a semanticii
(semnificaţiilor conferite cuvintelor) şi extrem de puţin sub aspect morfologic
(ansamblul regulilor de modificare a formei cuvintelor, în contextul utilizării lor).
38

Universitatea SPIRU HARET


Operaţia de compilare a fost descrisă în paragraful anterior. Operaţia de
interpretare asigură execuţia instrucţiune cu instrucţiune (la comanda pas cu pas a
operatorului) a unui program.
Limbajele de programare au evoluat istoric în concordanţă cu dezvoltarea şi
progresele părţii de hard a sistemelor de calcul. În anul 1944, când firma IBM şi
Universitatea Harvard au realizat primul calculator electronic denumit MARK 1,
programarea s-a efectuat în limbaj cod-maşină (generaţia zero, 0 GL), sub forma
unei succesiuni de instrucţiuni în cod binar. Primul limbaj de programare (generaţia
1, 1 GL) este definit după anul 1950, pentru calculatorul electronic UNIVAC 1,
sub denumirea de program asamblor, care automatizează programarea
calculatoarelor prin simbolizarea instrucţiunilor, operanzilor şi adreselor de
memorie sub formă de mnemonice şi prin translatarea programelor din forma scrisă
cu mnemonice în limbaj cod-maşină. 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 funcţie de domeniul
de aplicaţii informatice căruia îi este destinat (limbaje specializate, pentru aplicaţii
economice – limbajul Cobol, pentru aplicaţii tehnico-inginereşti, limbajul
FORTRAN, pentru aplicaţii de inteligenţă artificială, limbajele Lisp şi Prolog) sau
sunt universale (de exemplu, limbajele de programare PL/1 şi Ada). Tendinţa de
„ieşire” a limbajelor de programare din laboratoarele firmelor de calculatoare şi de
facilitare a însuşirii 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 către firmele specializate se menţionează limbajele C
(cu variantele sale ulterioare C++, C#), Java, Ada.
Dintre limbajele de nivel jos (apropiate de cod-maşină) se menţionează
limbajele de macroasamblare (MASM, TASM), ce aparţin generaţiei 2 (2 GL), la
care se realizează gruparea unor secvenţe de instrucţiuni realizatoare ale unor
operaţii repetitive, de rutină, într-o macroinstrucţiune (instrucţiune a limbajului de
macroasamblare). Macroinstrucţiunile sunt standard (specifice limbajului de
programare) sau sunt definite de utilizator. Fiecare tip de microprocesor, ce
defineşte sistemul de calcul, dispune de propriile său limbaj cod-maşină şi limbaj
de asamblare.
Limbajele de programare pot fi procedurale şi neprocedurale. Limbajul
procedural sau imperativ, ce defineşte generaţia 3 (3 GL), este limbajul de
programare în care elementul esenţial al programării este procedura (exemple:
Basic, C, Pascal, Cobol, Fortran, Ada etc.). Limbajul procedural necesită o
detaliere atentă a ansamblului de instrucţiuni ce urmează a fi executate în scopul
realizării unei sarcini (task) precizate şi este independent de sistemul de calcul.
Limbajele neprocedurale sunt limbaje de nivel foarte înalt, din generaţia 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 operaţiilor 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-MAŞINĂ (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ă răspândire în România în
deceniul 9 al secolului trecut), Informix, Oracle, Sybase, Microsoft Access.
Din categoria limbajelor de programare specializate fac parte limbajele
inteligenţei 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ă moştenirea ş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 menţionează
Pascal, C++, C#, SmallTalk, Simula, Java etc.

2.4. Elementele de bază ale programării 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ă moştenirea ş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 comparaţie cu alte
obiecte. Metodele de comportament ale obiectului reprezintă elementele comporta-
mentale ale acestuia în momentul accesării. Prin comportament, obiectul îşi pune în
evidenţă apartenenţa 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 defineşte proprietăţile
obiectului la un anumit moment). Elementele ce aparţin colecţiei de obiecte descrise
40

Universitatea SPIRU HARET


într-o clasă reprezintă instanţe 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 entităţi complexe, obiectele sunt
constituite din alte obiecte şi din valori. Distincţia între obiecte şi valori se realizează
prin intermediul stării 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 operaţie de creare (new).
Clasa reprezintă o implementare a unui tip abstract de date ce încapsulează
două tipuri de atribute: câmpuri sau proprietăţi şi metode sau operaţii ale tipului
respectiv. Câmpurile sunt private adică sunt ascunse în reprezentarea obiectului.
Metodele sunt publice adică accesibile utilizatorului. Altfel exprimat, clasa defineşte
o categorie de obiecte cu proprietăţi şi metode ce se moştenesc într-o subclasă.
Subclasa sau clasa derivată defineşte comportamentul obiectului derivat dintr-o
clasă considerată de bază. Clasa este un model de realizare a obiectelor de acelaşi tip
şi se defineşte cu ajutorul unui limbaj declarativ sau pe cale grafică. Clasa are un
nume, prezintă operaţii externe sau metode, are o reprezentare internă (ca expresie a
valorilor diverselor stări ale instanţelor de clasă) şi foloseşte cod ce implementează
atât operaţiile externe, cât şi descrierile reprezentării interne a obiectelor. Clasa există
conceptual chiar şi atunci când nu conţine obiecte şi este un şablon pentru generarea
şi manipularea obiectelor şi este accesată de utilizator cu ajutorul interfeţei specifice
clasei. Specificarea metodei se numeşte semnătură, iar modul de implementare
constituie corpul metodei. Noţiunea de clasă este asociată în special cu faza de
execuţie şi presupune: generarea de obiecte (new) şi memorarea mulţimii de obiecte
care reprezintă instanţele claselor. O clasă descrie obiectele, crearea unui obiect
realizându-se prin luarea în consideraţie a unei expresii de tip. Tipul reprezintă o
descriere abstractă a unui grup de entităţi asemănătoare. Obiectul prezintă valorile lui
proprii, lista atributelor şi metodelor fiind gestionate de clasă. Pentru majoritatea
limbajelor OOP, ansamblul instanţelor unei clase reprezintă o colecţie care are
acelaşi nume cu clasa şi care se numeşte extensie a clasei. Obiectele reprezintă
instanţe (manifestări) ale claselor din care fac parte.
Tipul de dată este folosit pentru descrierea unei mulţimi de obiecte care au
aceeaşi reprezentare. Fiecărui tip de dată i se asociază anumite operaţii cum ar fi
de exemplu: operaţii aritmetice pentru date numerice, concatenări pentru şirurile
de caractere, modificări 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ă atât structura
obiectului, cât ş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: interfaţa (listă de metode) şi
implementarea (descrierea structurii interne a datelor obiectului şi realizarea
procedurilor de implementare a metodelor interfeţei). 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


Diferenţa dintre tipul de dată şi clasă este următoarea: tipul de dată este
destinat pentru definirea de declaraţii utilizate pentru controlul static al expresiilor
de limbaj, în timp ce clasele sunt şabloane destinate generării şi manipulării
obiectelor care prezintă proprietăţi şi comportament comun.
Între clase şi obiecte se stabilesc relaţii astfel: asociaţii binare între două
clase, asociaţii n-are între mai multe clase, relaţii între obiect şi clasa din care face
parte, relaţii între obiectele aceleiaşi clase. În fig.2.9 sunt prezentate, sub forma
unei grafici sugestive, relaţiile dintre clase şi obiecte, în conexiune directă cu
noţiunea de moştenire ce este prezentată în continuare.
Există mai multe paradigme ale modelului folosit de OOP: moştenirea,
încapsularea, polimorfismul, abstractizarea datelor, persistenţa, 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.
Moştenirea asigură transferarea de proprietăţi şi metode de la clasa-părinte către
un obiect nou (fig.2.9). Prin moştenire sunt generate tipuri noi de obiecte şi clase într-o
ierarhie. Prin moştenire, în OOP se elimină rescrierea şi recodificarea programelor,
asigurându-se reutilizarea codului. Un obiect nou moşteneşte operaţii 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 aplicaţii prin intermediul OOP constă în gruparea
informaţiilor generale în clase care sunt apoi specializate pas cu pas în subclase cu
comportament particular.
Aşa cum s-a arătat deja, metodele reprezintă operaţii ce pot regăsi sau
actualiza starea unui obiect. Această stare a obiectului este memorată în variabilele
instanţelor sale. Într-o ierarhie de moşteniri, o metodă definită pentru o clasă este
moştenită de subclasele sale. Moştenirea este implementată static sau dinamic.
Moştenirea statică înseamnă adăugarea câmpurilor moştenite, situaţie în care
redefinirea unei clase obligă la actualizarea tuturor subclaselor. Moştenirea
dinamică se realizează fără a se copia câmpurile moştenite şi obligă la parcurgerea
legăturilor de moştenire. În cazul moştenirii dinamice, actualizarea se efectuează
mai rapid, în timp ce execuţia este mai puţin eficientă. Moştenirea poate fi simplă
sau multiplă. Moştenirea simplă se produce atunci când o subclasă moşteneşte
proprietăţi şi metode ale unei singure clase-părinte. Moştenirea multiplă se
realizează când o subclasă posedă mai multe clase-părinte.
Încapsularea reprezintă proprietatea ce defineşte posibilitatea de a ascunde
prin mascare atributele proprii unui obiect şi modul în care se execută metodele.
Astfel, sunt protejate obiectele în situaţia efectuării greşite a unor manipulări
exterioare. Un obiect poate fi accesat numai prin metodele asociate la crearea sa.
Polimorfismul defineşte caracteristica unei metode de a se comporta în mod
diferit în funcţie de clasa de obiecte căreia îi aparţine. Polimorfismul asigură
invocarea pentru obiectele de diferite tipuri a metodelor cu acelaşi nume, dar
semantică şi implementare diferită. O metodă se comportă diferit în funcţie de
clasa de obiecte căreia îi aparţine.
Abstractizarea datelor se realizează prin faptul că înseşi clasele sunt expresia
unei abstracţii. Obiectele dintr-o clasă prelucrează datele modelului clasei căreia îi
aparţin. Utilizatorul obţine comunicarea cu obiectele prin mesaje ce se transmit
prin interfaţa ce specifică metodele posibile.
42

Universitatea SPIRU HARET


Fig. 2.9. Relaţiile între clase şi obiecte

Persistenţa este o proprietate a obiectelor care implică existenţa acestora şi


după încetarea procesului ce le-a creat. Starea obiectului şi codul corespunzător
metodelor sunt memorate în baza de date. Tipurile obiectelor pot fi declarate
persistente prin folosirea cuvântului cheie persistent la momentul declarării,
variabila fiind şi ea constrânsă la un tip persistent.
Evenimentul reprezintă o acţiune 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 aplicaţii informatice. Ca urmare,
evenimentele se pot produce în mod interactiv sau programat. Într-o aplicaţie
informatică dirijată prin evenimente, codul nu urmăreşte o cale prestabilită, ci
secvenţe de program executate ca răspuns la apariţia evenimentelor. Succesiunea în
care se produc aceste evenimente determină secvenţa 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 aplicaţii
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.
Când acest mediu de programare asistă utilizatorul (programatorul) în toate etapele
de realizare a unui program, el se numeşte mediu de dezvoltare. Când toate
componentele de asistare a utilizatorului (programatorului) sunt integrate în cadrul
aceluiaşi mediu de dezvoltare, el se numeşte mediu integrat de dezvoltare.
Termenul visual din denumirea IDE Visual Basic semnifică faptul că
aplicaţiile informatice dezvoltate în VB dispun de interfeţe grafice ce sunt
proiectate vizual de către utilizator. Pentru aceasta, utilizatorul are la dispoziţie un
set de elemente vizuale standard ce pot fi folosite la proiectarea unei interfeţe
grafice, denumite elemente de control, sau, pe scurt, controale (Controls). Aceste
controale sunt dispuse în ferestrele aplicaţiei, ferestre denumite formulare (Forms),
concomitent cu stabilirea proprietăţilor acestora (în fereastra Properties) la dorinţa
utilizatorului şi în conformitate cu necesităţile aplicaţiei.
Termenul Basic din compunerea IDE Visual Basic arată tipul limbajului de
programare utilizat pentru realizarea programelor (secvenţelor de cod) corespunzătoare
evenimentelor generate de acţionarea controalelor dispuse în formularul specific
aplicaţiei. Limbajul de programare Basic (acronim provenit din denumirea în limba
engleză – Beginner’s All-purpose Symbolic Instruction Code), definit la începutul
anilor ’60 ai secolului XX, a cunoscut numeroase versiuni şi dezvoltări 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 programării structurate
(programării bazate pe obiecte), programării dirijate de evenimente, orientării
spre prelucrarea bazelor de date (manipulare şi interogare).
Tabelul 3.1.
Versiunile produsului informatic Visual Basic
Versiunea Anul Standard Professional Enterprise Control Instrumente
lansării Edition Edition Edition Creation BackOffice
Edition
3.0 1991 DA DA - - -
4.0 1994 DA DA DA - -
5.0 1996 DA DA DA DA -
6.0 1998 DA DA DA - DA
.NET 2002 DA DA DA - DA
44

Universitatea SPIRU HARET


Aplicaţiile informatice realizate cu VB pot interacţiona cu alte aplicaţii
Windows prin intermediul unor interfeţe specializate: OLE (Object Linking and
Embedding) – legarea şi încapsularea obiectelor, ce asigură afişarea datelor din alte
aplicaţii şi modificarea acestor date din interiorul aplicaţiei care le-a generat; COM
(Component Object Model) – model de legare şi comunicare între obiecte distribuite
Windows; ActiveX – tehnologie soft Microsoft ce reuneşte componente OLE şi
COM; DDE (Dynamic Data Exchange) – schimb dinamic de date (conversaţie) între
aplicaţii Windows; ODBC (Open DataBase Connectivity) – conectivitatea bazelor de
date deschise, adică posibilitatea conectării aplicaţiilor client la multiple servere de
fişiere sau de baze de date; Crystal Report sau Data Report – proiectarea vizuală a
rapoartelor unei aplicaţii VB; Microsoft Jet Database Engine – motorul sistemului
de gestiune a bazelor de date Microsoft Access (capitolul 5) ce asigură acelaşi limbaj
de manipulare a datelor între VB şi Access.
Visual Basic face parte din clasa de medii de dezvoltare rapidă a aplicaţiilor,
RAD (Rapid Application Development), alături de Microsoft Visual C++, Power
Builder, Borland Delphi ş.a. ce prezintă următoarele caracteristici: realizare rapidă
a aplicaţiilor informatice, necesităţi acceptabile de resurse informatice la execuţie,
separarea proiectării prelucrărilor de proiectarea interfeţei, integrează proiectarea
interfeţei, 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 execuţie 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 apariţia 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 acţiuni, 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 proprietăţilor Properties (6),
fereastra Form Layout (7), fereastra Immediate (8), fereastra Locals (9), fereastra
Watch (10), utilitarul Object Browser (11), aşa cum sunt prezentate în fig.3.2.
Ferestrele care nu apar la pornirea VB şi sunt necesare pentru lucru pot fi activate
prin următoarea succesiune de comenzi: bara cu meniuri – View – poziţionare 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
afişează poziţia (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 destinaţia prezentată în fig.3.3. Meniurile contextuale
cuprind comenzi rapide pentru acţiunile efectuate în mod frecvent. Pentru
deschiderea unui meniu contextual se poziţionează vârful 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 stânga mouse-ului.
Cutia cu instrumente, Toolbox (fereastra 2 din fig.3.2), asigură instrumentele
predefinite folosite în timpul proiectării formularului pentru a introduce controale
pe acesta. Utilizatorul poate crea propriile controale, imagini sau grafică prin
46

Universitatea SPIRU HARET


selecţia opţiunii AddTab din meniul contextual. Rolul fiecărui 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 interfeţei dintre utilizator şi secvenţele 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 aplicaţiei informatice. Fiecare
formular sau modul de cod din cadrul aplicaţiei 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) serveşte numai


la proiectarea aplicaţiei pentru afişarea colecţiei de fişiere ce conţin formularele şi
modulele din cadrul proiectului aflat în lucru (curent). Unele fişiere sunt încărcate
în mod automat de către sistem, iar alte fişiere sunt realizate de către utilizator
(programator). Fişierele care se găsesc în fereastră (proiect) se pot grupa pe
categorii cu ajutorul butonului Toggle Folders. Butonul View Object serveşte
pentru vizualizarea obiectului selectat (current), iar butonul View Code este folosit
pentru vizualizarea codului.
Fereastra de stabilire a proprietăţilor, Properties (fereastra 6 din fig.3.2)
asigură afişarea valorilor proprietăţilor pentru formularul sau controlul selectat. O
proprietate reprezintă o caracteristică a unui obiect (titlu, dimensiuni, poziţie,
culoare etc.). Această fereastră de stabilire a proprietăţilor 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 vizuali-
zarea aspectului formularului.
Fereastra Immediate (fereastra 8 din fig.3.2) este o fereastră suplimentară
utilizată în procesul de depanare a aplicaţiilor informatice rulate din interiorul
mediului IDE. Mediul VB 6.0 permite funcţionarea în trei moduri de lucru:
proiectare (design mode), rulare normală (run mode) şi execuţie cu întrerupere
(break mode). Execuţia cu întrerupere (pas cu pas) se utilizează la depanarea
aplicaţiei pe baza punctelor de întrerupere (breakpoints) stabilite în prealabil.
Fereastra Immediate permite introducerea de secvenţe de cod care se execută
imediat sau afişarea valorilor unor expresii.
Fereastra Locals (fereastra 9 din fig.3.2) este destinată, la depanarea
programelor VB, pentru afişarea 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 acţiunii (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ă afişarea


obiectelor disponibile în IDE ce pot fi utilizate de proiect. Utilitarul serveşte, de
asemenea, pentru a examina obiecte din VB şi din alte aplicaţii, pentru a constata
ce metode şi proprietăţi sunt disponibile în cazul acestor obiecte şi pentru a prelua
coduri de program în propria aplicaţie informatică.
Editorul de meniu (Menu Editor) permite proiectarea meniurilor asociate
formularelor. Pentru afişarea ferestrei corespunzătoare (fig.3.5), se apasă butonul
cu acelaşi nume de pe bara cu instrumente (fig.3.3) sau prin opţiunea Menu Editor
din meniul Tools. Fiecare meniu are nume, proprietăţi şi mod de accesare asociat.

48

Universitatea SPIRU HARET


Fig.3.5. Fereastra corespunzătoare editorului de meniu (Menu Editor)

3.3. Proiectarea aplicaţiilor în limbajul Visual Basic

Pentru a proiecta o aplicaţie informatică în limbajul Visual Basic, este


necesară parcurgerea următoarelor trei etape:
1. Crearea interfeţei.
2. Precizarea proprietăţilor.
3. Scrierea codului.
Crearea interfeţei se efectuează cu ajutorul formularelor (Forms). Acestea
servesc pentru a genera ferestre şi casete de dialog, în calitate de containere pentru
elemente care se găsesc în partea ascunsă a aplicaţiei. Precizarea proprietăţilor se
realizează prin intermediul ferestrei Properties, după selecţia prealabilă a
obiectului. Scrierea codului se execută folosind fereastra de editare a codului, Code
Editor. Crearea aplicaţiilor în VB se face în modul de proiectare Design Mode, iar
execuţia acestora se efectuează în modul de rulare normală, Run Mode. Înainte de
prezentarea în detaliu a celor trei etape de proiectare a unei aplicaţii în VB, se
tratează fişierul proiect.

3.3.1. Fişierul proiect


Termenul de proiect în VB este similar cu aplicaţia informatică, astfel că el
cuprinde o listă a fişierelor care intră în compunerea aplicaţiei. Fişierul proiect este
un fişier 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 (fişierul grup de proiecte are extensia .VBG). În lista de fişiere a unui
proiect pot fi incluse următoarele tipuri de fişiere:
¾ fişier pentru formular (.FRM);
¾ fişier pentru formular care cuprinde controale cu proprietăţi care prezintă
ca valori date binare (.FRX);
¾ fişier pentru clasă de module (.CLS);
¾ fişier pentru modul standard (.BAS);
¾ fişier pentru control utilizator (.VBX – DDL-uri pentru controale pe 16 biţi
şi .OCX - DDL-uri pentru controale pe 32 de biţi ).
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ă). Aşa 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 defineşte 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 puţin un modul (modul de formular sau modul de cod).
Atunci când au fost definite toate componentele unui proiect, acesta poate fi
transformat direct într-un fişier executabil (.EXE), astfel:
1) din meniul File (fig.3.6, opţiunea notată 6), se selectează opţiunea Make …
EXE…;
2) se introduce numele fişierului 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) serveşte pentru crearea unui proiect nou, adăugând un nou
formular şi, eventual, module, referinţe şi obiecte utilizator cuprinse în fişierul
Auto32ld.VBP;
• Open Project (2) deschide un proiect existent, cu formularele, modulele şi
obiectele utilizator listate în fişierul 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, fişierul proiect al aplicaţiei
existente împreună cu toate formularele, clasele de module şi modulele standard.
50

Universitatea SPIRU HARET


Aşa cum se deduce din descrierea opţiunilor de salvare a proiectului de mai
sus, realizarea aplicaţiei este terminată atunci când se selectează comanda Save
Project As…(5) din meniul File sau când se selectează butonul Save Project din
linia de butoane. Mediul Visual Basic solicită salvarea, pe rând, a formularului şi
apoi a proiectului prin introducerea numelui, dar şi a unităţii logice de memorie,
precum şi a căii unde se doreşte a avea loc salvarea. În mod implicit, mediul Visual
Basic asigură salvarea în locaţia C:\Program Files\Microsoft Visual Studio\VB98
(Save In). Pentru salvarea unui proiect, se recomandă particularizarea numelui
proiectului şi folosirea unei unităţi logice de memorare şi a unei căi personalizate a
utilizatorului pentru fiecare proiect, ca, de exemplu:
Homes(D:)\Student\Facultatea\Grupa\Nume_prenume_student\Nume proiect.
Când 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 fişiere. Un
fişier, cum este, de exemplu, un formular, poate aparţine 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 interfeţei aplicaţiei


Crearea interfeţei unei aplicaţii se realizează cu ajutorul unui obiect denumit
formular (Form). În multe lucrări destinate VB, echivalentul românesc pentru
Form este formă. În lucrarea de faţă s-a preferat denumirea de formular, deşi cea
de formă este mai apropiată de termenul în limba engleză (crearea formularului
înseamnă de fapt „turnarea” controalelor într-o formă adecvată interfeţei aplicaţiei).
Motivul preferinţei pentru „formular” este asigurarea lizibilităţii apariţiei denumirii
acestui obiect în explicaţiile din cuprinsul lucrării, deşi, în dicţionarele limbii
române, formularul, în general, este definit ca un imprimat cu mai multe spaţii 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 aplicaţie. Controalele nu pot funcţiona în afara formularului. Ele sunt
obiecte care eliberează programul de sarcinile legate de intrările şi ieşirile generate
de acţiunile utilizatorului, concentrând eforturile pe operaţiile de prelucrare a
datelor. Avantajul controalelor din VB este că ele se aseamănă foarte mult cu
controalele standard ce apar în sistemul de operare Windows (meniuri, butoane,
casete). Controalele uşurează munca de programare în sensul că sunt eliminate
instrucţiunile care să ghideze utilizatorul asupra acţiunilor pe care acesta trebuie să
le întreprindă. La proiectarea interfeţei aplicaţiei (Design Mode), fereastra de
proiectare a formularului serveşte pentru dispunerea controalelor necesare proiectului.
La rularea programului (Run Mode), formularul îndeplineşte 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 găsesc linii punctate cu rolul de a asigura orientarea utilizatorului, iar la
marginea ferestrei sunt dispuse mânerele de redimensionare a formularului. Este
bine ca, încă de la crearea formularului, să se opteze pentru o dimensiune potrivită
a formularului în raport cu numărul de controale introduse şi de dimensiunile
acestora; nu este estetic şi nici practic să rămână zone mari nefolosite pe suprafaţa
formularului.
Un formular include descrierea grafică a acestuia, controalele sale,
proprietăţile, constantele, variabilele şi procedurile externe, subrutinele de tratare a
evenimentelor, procedurile generale. Fiecărui formular îi corespunde un modul de
formular (Form Module).
Clasa de module (Class Module) este asemănătoare formularului, dar nu
dispune de interfaţă utilizator vizibilă. Clasa de module poate fi folosită pentru
crearea obiectelor utilizator, cuprinzând secvenţe de cod pentru metodele şi
proprietăţile obiectelor definite. Obiectele care aparţin aceleaşi 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 interfaţa
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ă părinte) ce poate fi
redimensionată. Pentru a obţine comutarea între modurile de lucru SDI şi MDI se
realizează următoarea succesiune de acţiuni:
1) se selectează Options (opţiuni) din meniul Tools; efectul este apariţia
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 opţiuni (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 menţiunea că această casetă cu instrumente (Toolbox) este
configurabilă. Adăugarea sau scoaterea de controale din caseta cu instrumente
(Toolbox) se obţine din meniul Project, opţiunea Components (opţiunea 8 din
fig.3.7), în care se validează controlul dorit (aşa cum este prezentat în fig.3.9 pentru
controlul Shockwave Flash).

Fig.3.9. Modul de adăugare a unui control


la cutia cu instrumente (Toolbox)

53

Universitatea SPIRU HARET


Introducerea unui control din cutia cu instrumente (Toolbox) pe suprafaţa
formularului se obţine prin parcurgerea etapelor următoare:
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
acţionează butonul din stânga al mouse-lui;
b) se mută cursorul mouse-ului pe suprafaţa formularului, în poziţia în care
va fi colţul stâng al controlului;
c) se efectuează succesiunea de operaţii de tipul Drug and Drop până se
dimensionează după dorinţă controlul selectat;
d) se eliberează butonul stâng al mouse-ului.
O altă modalitate de introducere a controlului selectat pe suprafaţa
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 suprafaţa formularului se face după o anumită
logică legată de succesiunea operaţiilor importante de introducere date, prelucrare
şi afişare rezultate. Fiecare control este caracterizat de un ansamblu de proprietăţi
ce se referă la descrierea comportamentului sau aspectului unui control. Lăţimea
sau înălţimea unui control se măsoară în twip (un twip reprezentând cel mai mic
punct adresabil de pe ecran, cu dimensiunea de 1/1440 inch). Aşa cum se va arăta
în paragraful următor, fereastra Properties permite modificarea între limite
prestabilite a valorilor diferitelor proprietăţi ale controalelor.
Focalizarea reprezintă operaţiunea de punere în evidenţă a unui control la un
moment dat; mai precis, acel control devine activ prin focalizare. Acel control
activ se mai numeşte şi focar (focus). Acest lucru se pune în evidenţă printr-o linie
punctată în jurul controlului sau printr-un titlu îngroşat. Mutarea focarului de la un
control la altul se efectuează prin intermediul tastelor Tab sau Shift+Tab. Apăsarea
tastei Enter va determina acţiunea 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 apăsarea succesivă a
tastei Tab. În momentul activării formularului, este stabilit primul control care este
focalizat. Proprietăţile comune tuturor controalelor din formular care stabilesc
ordinea de parcurgere a controalelor sunt TabIndex (poziţia) ş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 evidenţiată
printr-o literă subliniată. Prin acţiunea Alt+litera subliniată, se provoacă acţiunea
controlului respectiv. Litera subliniată se introduce cu ajutorul proprietăţii Caption
prin precedare de un ampersand (&).
Redimensionarea unui control introdus deja pe suprafaţa formularului se
obţine astfel:
1) se selectează controlul de redimensionat prin click executat cu mouse-ul în
interiorul suprafeţei acestui control. Pe marginile controlului apar mânerele de
redimensionare;
2) se fixează cursorul mouse-ului în dreptul unui mâner de redimensionare şi se
mişcă ţinând apăsat butonul stâng al mouse-ului, până se obţine dimensiunea dorită.
Mânerele situate în colţurile suprafeţei controlului redimensionează controalele
atât pe verticală, cât şi pe orizontală, iar mânerele dispunse pe laturi redimensionează
controlul numai într-o singură direcţie;
54

Universitatea SPIRU HARET


3) se eliberează butonul stâng al mouse-ului.
Mutarea unui control pe suprafaţa formularului se realizează cu mouse-ul
prin tehnica Drug and Drop.
După finalizarea proiectării formularului, blocarea tuturor controalelor pe
suprafaţa formularului se obţine din meniul Format cu opţiunea 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 execuţiei aplicaţiei.
Pentru exemplificarea etapei de creare a interfeţei aplicaţiei, în continuare se
propune să se introducă controalele pentru un formular care să constituie interfaţa
pentru următoarea aplicaţie informatică:
Să se realizeze un program în limbajul Visual Basic care să calculeze
valoarea totală a unei facturi de materiale. Deocamdată, factura conţine un singur
material la o rulare a programului. Datele de intrare sunt: număr factură (Nrf), data
facturii (Df), codul materialului (Codmat), denumirea materialului (Denmat),
cantitate (Cant) şi preţul 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 rulării programului se vor afişa în casete text separate pentru
valoare material fără TVA (Vmftva), valoare material cu TVA (Vmctva), valoare
factură fără TVA (Vfftva) şi valoare factură cu TVA (Vfctva).
Se vor prevedea butoane de comandă (Command Button) pentru calculul şi
afişarea unui material (fără TVA şi cu TVA) – butonul CALCULEAZA şi pentru
calculul valorii facturii (fără TVA şi cu TVA) – butonul AFISEAZA.
Pentru afişarea denumirilor pentru datele de intrare (Nrf, Df, Codmat,
Denmat, Cant şi Pu), a datelor intermediare (Vmftva şi Vmctva) şi a datelor de
ieşire sau rezultatelor (Vfftva şi Vfctva), se folosesc controale de tip etichetă
(Label). Aceste controale de tip etichetă se găsesc î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 mânerelor de
dimensionare (Label1…Label10). Î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 enunţul aplicaţiei informatice (un singur material pe factură), pentru
introducerea datelor de intrare şi afişarea datelor intermediare şi de ieşire
(Text1…Text2), precum şi cu butoanele de comandă (Command Button) ce se vor
folosi pentru declanşarea procedurilor de calcul (Command1), de afişare a valorii
facturii (Command2) şi de ieşire din program (Command3). Aspectul formularului
astfel obţinut este prezentat în fig.3.10.

3.3.3. Precizarea proprietăţilor


Precizarea proprietăţilor î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 (afişează numele
şi tipul obiectului selectat, adică obiectul curent) şi caseta Settings – setări
(afişează alfabetic sau pe categorii lista proprietăţilor – stânga şi lista cu valorile
sau setările proprietăţilor – dreapta).
55

Universitatea SPIRU HARET


1
Fig.3.10. Crearea formularului pentru
aplicaţia informatică cu factura de materiale

Fig.3.11. Fereastra Properties


56

Universitatea SPIRU HARET


Activarea ferestrei Properties se poate obţine prin succesiunea de comenzi
meniu principal – View – Properties Window sau cu ajutorul tastei funcţionale F4.
Precizarea proprietăţilor se obţine prin parcurgerea următoarele etape:
1) dacă nu este afişată, se activează fereastra Properties; se selectează
obiectul căruia urmează să i se precizeze proprietăţile; în acest moment, se afişează
automat proprietăţile cu valorile implicite pentru obiectul selectat;
2) din lista alfabetică sau lista pe categorii a proprietăţilor se selectează
denumirea proprietăţii la care se vor modifica valorile sau setările existente;
3) în coloana valorilor sau setărilor din dreapta se tastează sau se selectează
valorile dorite pentru proprietate.
Pentru a asocia o pictogramă unui formular se atribuie o valoare proprietăţii
icon pentru acel formular.
Pentru exemplificarea etapei de precizare a proprietăţilor, se continuă
aplicaţia cu factura materiale din paragraful 3.3.2, precizându-se proprietăţile 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 obţine prin introducerea în
fereastra Properties a numelui (Name) frmMat şi a etichetei (Caption) FACTURA
MATERIALE.
Personalizarea numelui pentru controalele de tip etichetă (Label) se obţine
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
obţine 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 obţine prin introducerea în fereastra Properties a:
• cmdCalcul (Name), CALCULEAZA (Caption);
• cmdAfisare (Name), AFISARE VALOARE FACTURA (Caption);
• cmdExit (Name), IESIRE (Caption).
57

Universitatea SPIRU HARET


Explicaţiile privind formarea numelui obiectelor cu prefixe standard vor fi
date în paragraful 3.4.1.
Aspectul formularului obţinut prin precizarea proprietăţilor formularului şi
controalelor incluse este prezentat în fig.3.12.

Fig.3.12. Introducerea proprietăţilor formularului şi controalelor incluse


pentru aplicaţia informatică cu factura de materiale

3.3.4. Scrierea codului


După proiectarea formularului şi precizarea proprietăţilor, urmează scrierea
codului care constă în asocierea unor secvenţe de cod pentru toate controalele din
formular, adică moduri de acţiune la diverse evenimente.
Codul conţine constante, declaraţii de variabile şi instrucţiuni scrise în
limbajul de programare Visual Basic, în conformitate cu algoritmul de calcul.
Legarea efectivă de control sau fereastră a secvenţelor de cod se obţine de către
utilizator (programator) în mod conversaţional.
Pentru scrierea codului se deschide fereastra de editare a codului (Code
Editor), fig.3.13., prin dublu-click executat cu butonul stâng al mouse-ului
poziţionat 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 reacţionează 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 numeşte
procedură eveniment. Procedura-eveniment asociată unui control are numele
alcătuit 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 când 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ă următoarea succesiune
de acţiuni: caseta Object → se specifică numele obiectului din formularul curent
(adică cel care este focalizat) pentru care se scrie codul → caseta cu listă
Procedure → selecţie nume eveniment asociat obiectului selectat (de exemplu,
procedura Click implicită pentru controlul buton de comandă, Command Button)
→ şablon pentru procedura-eveniment → între declaraţiile Private Sub şi End Sub,
se introduce de la tastatură codul în conformitate cu algoritmul de calcul.
Se poate opta pentru afişarea tuturor procedurilor în aceeaşi fereastră de cod
sau pentru afişarea unei singure proceduri la un moment dat.
Pentru afişarea tuturor procedurilor în cadrul aceleiaşi fereastre de cod, se
execută clic pe butonul de vizualizare a întregului modul, Full Module View
(fig.3.13.), în colţul din stânga-jos al ferestrei de editare a codului, Code Editor sau
se execută următoarea succesiune de acţiuni: meniul Tools → caseta de dialog
Options (fig.3.12.) → secţiunea Editor (1) → grupul de setări pentru fereastră,
Window Settings (2), bifă în caseta de validare din stânga lui Default to Full
Module View (3). În acelaşi grup de setări pentru fereastră, caseta de validare din
stânga lui Procedure Separator (4) serveşte la adăugarea sau eliminarea unei linii
de separaţie între proceduri (fig.3.14.).
Pentru afişarea unei singure proceduri la un moment dat, se execută click pe
butonul de vizualizare a procedurii, Procedure View (fig.3.13.), în colţul din
stânga-jos al ferestrei de editare a codului, Code Editor sau se execută următoarea
succesiune de acţiuni: meniul Tools → caseta de dialog Options (fig.3.14.) →
secţiunea Editor (1) → în grupul de setări pentru fereastră, Window Settings (2), se
şterge bifa din caseta de validare din stânga lui Default to Full Module View (3).
59

Universitatea SPIRU HARET


Fig.3.14. Fereastra de opţiuni, Options a meniului de instrumente, Tools

Pentru exemplificarea etapei de scriere a codului unei aplicaţii informatice în


Visual Basic, se continuă aplicaţia 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. Explicaţiile privind logica scrierii acestui cod vor
fi date în paragraful 3.4. Codul pentru aplicaţia cu factura de materiale este
prezentat în fig.3.15.

3.3.5. Execuţia aplicaţiei informatice în Visual Basic


După parcurgerea etapelor de creare a interfeţei (proiectarea formularului), de
precizare a proprietăţilor şi de scriere a codului, toate fişierele aplicaţiei sunt
salvate şi se trece de la modul de proiectare (Design Mode) la modul de rulare
(execuţie) a proiectului (Run Mode).
Pentru a lansa în execuţie aplicaţia, se alege opţiunea Start din meniul Run
(fig.3.16) sau se acţionează tasta funcţională F5 sau se execută cu butonul stâng al
mouse-ului click pe butonul Start de pe bara cu instrumente.
Terminarea rulării proiectului se efectuează cu opţiunea End din meniul Run
(fig.3.16) sau prin apăsarea butonului de închidere (Close) a ferestrei aplicaţiei
(colţul din dreapta sus al ferestrei) sau prin apăsarea butonului End de la bara cu
instrumente (fig.3.3). După terminarea execuţiei aplicaţiei, mediul VB revine în
modul de proiectare (Design Mode).
Prin rularea proiectului, se obţine fişierul executabil. Aşa cum s-a arătat în
paragraful 3.3.1, fişierul executabil se poate obţine direct din meniul File cu
opţiunea Make …EXE (fig.3.3).

60

Universitatea SPIRU HARET


Fig.3.15. Codul pentru aplicaţia cu factura de materiale introdus
în fereastra de editare a codului

Reluând aplicaţia cu factura de materiale din paragrafele 3.3.2, 3.3.3 şi


3.3.4, această aplicaţie 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 unităţile de măsură, acestea fiind topuri, bucăţi, role,
cutii) şi se obţin rezultatele prezentate în fig.3.17, pentru setul de date nr.2 din
tabelul 3.2.

61

Universitatea SPIRU HARET


Fig.3.16. Comanda execuţiei unei aplicaţii în VB

Tabelul 3.2.
Exemple de seturi de date de intrare pentru aplicaţia
cu factura de materiale consumabile pentru tehnica de calcul
Nr. Numar Data Cod Denumire Pret
Cantitate
crt. factura factura material material unitar
1 16844 16/10/2004 41000825 Hirtie xerox 30 120000
2 16844 16/10/2004 41081320 Cartus imprimanta 5 4280000
3 16844 16/10/2004 41061223 Hirtie fax 5 230000
4 16844 16/10/2004 41081422 Ribon 10 620000
5 16844 16/10/2004 41061154 Toner copiator 3 1200000

Fig.3.17. Rezultatele rulării aplicaţiei cu factura de materiale


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

62

Universitatea SPIRU HARET


3.4. Elementele limbajului de programare Visual Basic

3.4.1. Unele reguli de scriere


O proprietate esenţială 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 căruia îi aparţine. Ca urmare, s-a adoptat convenţia conform căreia un
nume trebuie să fie format dintr-un prefix din trei litere (dat de notaţia ungară) şi
numele propriu-zis cu semnificaţie 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 Prefix standard Exemple
Data dat datSalarii
Form frm frmMateriale, frmClienti
Command Button cmd, btn cmdCalcul, btnExit
Label lbl lblDobinda, lblSumaInitiala
TextBox txt txtDobinda, txtSumaInitiala
Menu mnu mnuEvaluare
Check Box chk chkImpozit
Frame fra fraSelectie
Image img imgOrase, imgProfesori
List Box lst lstDiscipline, lstStudenti
Option Button opt optCursuri
Picture Box pic picTools

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


literă şi pot conţine 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
compuşi din şiruri de caractere. Literalii pot fi de tipul literali şiruri de caractere şi
sunt scrişi între ghilimele, şi de tipul literali numerici – zecimali (în baza 10), octali
(în baza 8), hexazecimali (în baza 16). Identificatorii pot fi predefiniţi (cuvinte
rezervate şi cuvinte-cheie ce desemnează instrucţiuni, funcţii, operatori, metode)
sau pot fi definiţi de utilizator (ce desemnează obiecte, variabile, tipuri de date,
constante, etichete, proceduri). Instrucţiunile specifice limbajului Visual Basic se
obţin prin combinarea literalilor, identificatorilor şi cuvintelor rezervate. Pentru
lizibilitatea codului, fiecare instrucţiune se scrie pe o linie separată. Dacă o
instrucţiune nu încape pe o linie, se poate continua pe linia următoare prin
caracterul underscore (_). Se pot folosi 20 astfel de linii de continuare a unei
instrucţiuni.
Numele sunt folosite la setarea proprietăţilor la momentul execuţiei şi în
stabilirea numelor procedurilor pentru evenimentele obiectelor. Setarea
proprietăţilor la momentul execuţiei se obţine 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) corespunzător procedurilor eveniment, pentru scrierea codului.
Formatul fiecărei 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 ataşează un obiect. Visual Basic construieşte automat un
cadru de lucru (framework) pentru fiecare dintre procedurile eveniment. Utilizatorul
care construieşte aplicaţia trebuie să scrie codul procedurilor eveniment la care
corespunde aplicaţia.

3.4.2. Tipuri de date


Tipurile de date reprezintă natura datelor în cadrul unui limbaj de pro-
gramare. Î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 română Tip engleză Sufix Memorie Interval de valori (domeniu)
ocupată
- 1 0…255
Octet Byte
Întreg Integer % 2 -32768…+32767
Întreg lung Long & 4 2.147.483.648…+2.147.483.647
(integer)
Logic Boolean - 2 True, False
Real simplă Single 4 -3,40 e38…+3,40 e38
precizie (floating) !
Real dublă Double 8 -1,8 e308…+1,8 e308
precizie (floating) #
Monedă Currency @ 8 -9,22 e14…+9,22 e14
Dată Date - 8 Jan 01/100-dec 31/9999
Obiect Object - 4 Adresa unui obiect
Şir de String $ 1 octet/ Şir de caractere alfanumerice
caractere caracter
Nedefinit Variant - - Şir, numere, dată

Tipurile de date definte de utilizator se obţin prin combinarea mai multor


tipuri de date existente în structuri de date.
Declararea tipurilor de date definite de utilizator se efectuează în secţiunea
Declaration (din modulul standard) cu Type…End 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 următoarea 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ă locaţii de memorie
în care se stochează valori ce se modifică pe timpul execuţiei 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.
Corespunzător variabilei care se doreşte 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 conţine: valori
numerice, şiruri de caractere sau dată calendaristică.
b) Implicit. Declararea implicită este dată prin folosirea sufixului
corespunzător. 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 instrucţiunilor care
utilizează variabilele respective şi permite identificarea, gestionarea corectă a
65

Universitatea SPIRU HARET


apariţiei 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 cuvântul cheie Dim:
Dim Denumire_material As String
Dim Cantitate As Integer
Dim Pret_unitar As Single.
Variabilele declarate la nivelul procedurilor îşi vor păstra valorile numai pe
timpul rulării procedurilor respective. Din acest motiv se mai numesc şi variabile
locale.
Pentru ca variabilele să-şi păstreze valorile şi după terminarea procedurii, se
foloseşte domeniul procedurilor în care variabilele se declară static, cuvântul-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 menţin
valorile la nivelul formularului (modulului), relativ la toate procedurile prin
declararea variabilelor cu Dim, dar în partea de declaraţii a obiectului general, în
fereastra de cod a formularului.
Pentru domeniul domeniul nivelului global, o variabilă este disponibilă
tuturor procedurilor prezentate în aplicaţie, prin declararea în partea de declaraţii a
obiectului general din fereastra de cod a unui modul cu ajutorul cuvântului cheie
Global. De exemplu:
Global Nr_factura As Long
Global Data_factura As Date.
În cazul mai multor variabile cu acelaşi nume, variabilele locale au vala-
bilitate numai în cadrul procedurilor. La părăsirea acestor proceduri se folosesc
variabilele cu acelaşi nume, dar definite la nivel superior.
Procedura de introducere a acestor variabile globale este următoarea:
• se execută dublu-click oriunde în fereastra formularului pentru a deschide
fereastra de editare a codului (sau se selectează opţiunea View Code din fereastra
Project);
• se declară variabilele din formular astfel:
Option Explicit (forţează declararea variabilelor)
Global Nr_factura As Long
Global Data_factura As Date.
Constante simbolice utilizate în Visual Basic
În cele mai multe situaţii, funcţiile şi obiectele limbajului Visual Basic
necesită argumente pentru efectuarea operaţiilor 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 va-
riabile. Domeniul de valabilitate al unei constante este similar cu cel al variabilelor.

3.4.4. Instrucţiuni Visual Basic

3.4.4.1. Construirea expresiilor


Cea mai simplă instrucţiune 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 cuvântul Let, dar este obligat să exprime
numele variabilei şi expresia pe baza căreia se deduce conţinutul.
Vmftva = Cant *Pu
Vfftva =Vfftva + Vmftva
Nume_client = „Georgescu Constantin”
Instrucţiunile se scriu de obicei pe o singură linie fără delimitator. Pentru a
putea scrie mai multe instrucţiuni pe o linie se foloseşte separatorul „:”.
Observaţie: se recomandă folosirea atentă a acestui delimitator când este fo-
losită structura If …End If. Dacă o instrucţiune este foarte lungă, ea poate continua
pe următoarea 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 cuvântul 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 prezentaţi în
tabelul 3.5. Precedenţa operatorilor (clasele de precedenţă) se referă la ordinea în
care se execută operaţiile într-o expresie care conţine mai multe tipuri de operatori.
Primii sunt executaţi operatorii de concatenare, după care urmează operatorii
arithmetic, operatorii de comparare şi, la sfârşit, 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 Operator Operaţia
1. And, Or, Not Logică
2. Mod Modulo
3. <,>,<=,>=,=,<> Comparare
+ Adunare
- Scădere
4. ^ Exponenţiere (ridicare la putere)
\ Împărţire întreagă
5. * Înmulţire
/ Împărţire
() [] Stabilire prioritate calcul
6. &, + Concatenare şir de caractere

3.4.4.3. Funcţii Visual Basic


Funcţia (Function) reprezintă o mulţime ordonată de instrucţiuni creată în
scopul îndeplinirii unei sarcini (task) bine precizată şi repetabilă. Funcţia returnează
un singur rezultat. Funcţiile Visual Basic sunt predefinite sau definite de utilizator.
Visual Basic asigură o bibliotecă variată de funcţii predefinite. În tabelul 3.6 sunt
prezentate principalele funcţii predefinite specifice limbajului Visual Basic.

Tabelul 3.6.
Principalele funcţii predefinite ale limbajului Visual Basic
Funcţie Valoare returnată
Abs Valoarea absolută a unui număr
Asc Codul ASCII sau ANSI al unui caracter
Chr Caracterul corespunzător unui cod ASCII sau ANSI
Cos Cosinusul unui unghi
Date Data curentă ca şir de caractere
Format Dată sau număr convertite la un şir de caractere
Left Selectează partea stângă a unui şir de caractere
Len Numărul de caractere dintr-un şir de caractere (lungimea şirului de caractere)
Mid Selectează o parte din şirul de caractere
Now Data şi ora curentă
Right Selectează partea de sfârşit a unei şir de caractere
Rnd Generarea aleatoare a unui număr
Sin Sinusul unui unghi
Sqr Rădăcină pătrată dintr-un număr
Str Număr transformat într-un şir de caractere
Time Timpul curent dat ca şir de caractere
Timer Număr de secunde rămase până la miezul nopţii (ora „0”)
68

Universitatea SPIRU HARET


Funcţii 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 începând cu cel din
stânga. De exemplu:
?Left$(“Fiscalitate”,4) ‘Fisc
InStr ([Pornire de la], şir-complet, şir-căutat) – returnează poziţia primei
apariţii a subşirului căutat dintr-un şir complet. De exemplu:
?InStr(“Informatica de gestiune”, “gest”) ‘16
?InStr(4,“Informatica de gestiune”, “gest”) ‘12
LTrim (expresie-şir) – elimină spaţiile de la începutul şirului. De exemplu:
?LTrim(“ Moneda”) ‘”Moneda”
RTrim (expresie-şir) – elimină spaţiile de la sfârşitul unui şir. De exemplu:
?RTrim(“PROFIT “) ‘”PROFIT”
Trim (expresie-şir) – elimină spaţiile de la începutul şi sfârşitul şirului. De
exemplu:
?Trim(“ CREDIT “) ‘”CREDIT”
Mid (expresie-şir, poziţie, lungime) – returnează o parte a unui şir. De
exemplu:
?Mid(“IMOBILIZARI”,4,3) ‘BIL
Val (şir) – transformă un şir într-un număr. De exemplu:
?Val(“132.74”) ‘132.74
Funcţii de editare
Format – se utilizează pentru a afişa o expresie într-o formă dorită de
utilizator, care poate fi:
- Fixed – afişează cel puţin o cifră în stânga şi două cifre în dreapta punctului
zecimal;
- Standard – afişează numărul cu virgule de separare a miilor, cel puţin o
cifră în stânga şi două în dreapta punctului zecimal;
- Currency – afişează cu semnul $, cu virgule de separare a miilor şi două
cifre în dreapta punctului zecimal (9).
Funcţii 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 funcţii este:
DDB (cost; valoare reziduală; durată; perioadă; factor) unde:
cost – costul iniţial al investiţiei;
valoarea reziduală – valoarea rămasă la sfârşitul perioadei de amortizare;
durata – durata de funcţionare dată prin număr de perioade în care investiţia
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
investiţii.
IPMT – calculează şi returnează suma dobânzilor unei investiţii pentru o
perioadă dată.
IRR – calculează şi returnează rata de rentabilitate internă pentru fluxurile
financiare, atât pozitive, cât şi negative finanţate la rate diferite.
MIRR – ca şi IRR numai că se referă la rata de rentabilitate internă a unei
investiţii fără a ţine seama de costurile de finanţare şi de plusvalorile de reinvestire.
NPFR – calculează şi returnează numărul de plăţi pentru o investiţie dată.
NPV – se referă la valoarea actuală netă a unei investiţii pe baza fluxurilor
financiare variabile.
PMT – ajută la obţinerea sumei totale a fiecărei rambursări periodice a unei
investiţii şi ratele dobânzii constante. Sintaxa acesteia este:
PMT (rate, nper, pv) unde:
rate – este rata dobânzii;
nper – numărul total de perioade de plată pe perioada de viaţă a anuităţii;
pv – valoarea prezentă a împrumutului (o valoare negativă).
PPMT – calculează partea vărsământului principal al unui împrumut pentru o
perioadă dată .
PV (Present Value)– se obţine valoarea actuală a unei investiţii.
RATE – se foloseşte pentru obţinerea ratei dobânzii pe perioada unei investiţii
date.
SLN – se obţine 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 execuţiei unui program
În paragraful 2.3. s-au prezentat cele trei structuri de control fundamentale:
structura de control secvenţială (liniară), structurile de control alternative (cu
ramificaţii) şi structurile de control repetitive (de ciclare). Tuturor acestor structuri de
control fundamentale le sunt asociate instrucţiuni specifice în limbajul de programare
Visual Basic, cu ajutorul cărora poate fi controlată logica de execuţie a oricărei
secvenţe de program în Visual Basic. Acestor instrucţiuni li se alătură comenzile
asociate operaţiunilor de intrare/ieşire specifice introducerii datelor de intrare,
respectiv extragerii rezultatelor prelucrărilor, precum şi instrucţiunile de transfer.
Instrucţiuni alternative (sau cu structură alternativă)
• Instrucţiunea If – cea mai simplă formă a acestei instrucţiuni este:
If condiţie Then instrucţiune
De exemplu: If TVA=0.19 Then Vmctva=Vmftva + TVA * Vmftva
Când în instrucţiunea If, după cuvântul cheie Then urmează mai multe
instrucţiuni, sintaxa generală a instrucţiunii este:
If condiţie Then
Secvenţă de instrucţiuni
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 instrucţiunii 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
• Instrucţiunea Select Case
Instrucţiunea Select Case se foloseşte în cazul când sunt precizate mai multe
selecţii.
Sintaxa generală a instrucţiunii este următoarea:
Select Case variabilă
Case Is variabilă sau expresie instrucţiuni

Case Is variabilă sau expresie instrucţiune
Case Else
instrucţiune
End Select
De exemplu, pentru selecţia persoanelor după categoria de vârstă
(Categoria_varsta) se procedează astfel:
Select Case Vârsta
Case Is 5
Categoria_varsta = ”Copii sub 12 ani”
Case Is 13 TO 19
Categoria_varsta = ”Adolescenţi”
Case Is 20 TO 35, 50, 60 TO 65
Categoria_varsta = ”Adulţi”
Case Is > 65
Categoria_varsta = ”Bătrâni”
Case Else
Categoria_varsta = ”Alte categorii”
End Select
Instrucţiuni repetitive
Ciclarea este asigurată prin formatul general Do … Loop. Ciclările
implementează operaţiile care se repetă de un anumit număr de ori, ciclarea
repetându-se până când se îndeplineşte o condiţie specificată, întâlnită la începutul
sau sfârşitul ciclării.
• Instrucţiuni care implementează structuri de control repetitive
condiţionate anterior
Din această categorie fac parte instrucţiunile Do {While|Until}…Loop şi
While …Wend care au următoarele 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
Când conditie este adevărată (True), se execută secvenţa imediată de
instrucţiuni. Instrucţiunea While …Wend nu permite ieşirea forţată din ciclare.
• Instrucţiuni care implementează structuri de control repetitive condi-
ţionate posterior
Din această categorie fac parte instrucţiunile Do …Loop {While|Until}care au
următoarea sintaxă generală:
Do
[Secventa_instructiuni_1]
[Exit Do]
[Secventa_instructiuni_2]
Loop {While|Until} conditie
Un exemplu de utilizare a instrucţiunii Do …Loop Until este următorul:
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ă până când răspunsul la întrebarea “CONTINUATI?” va fi
No (Nu).
• Instrucţiuni care implementează structuri de control repetitive cu contor
În acest caz, numărul de iteraţii este cunoscut. Din această categorie face
parte instrucţiunea For … Next care are următoarea 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 instrucţiuni este următorul:
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 fişierelor în limbajul Visual Basic


Limbajul Visual Basic oferă posibilitatea lucrului cu fişiere (definite în
capitolul 1). Fişierele pot stoca date de tipuri diferite (date numerice, text, imagini).
Accesul la datele unui fişier poate fi: binar; secvenţial; aleator.
Pentru accesul binar, trebuie localizat în fişier numărul de caractere care
urmează a fi citite sau scrise. Pentru accesul secvenţial, trebuie parcurse toate
72

Universitatea SPIRU HARET


înregistrările care preced înregistrarea dorită. Accesul aleator este un acces direct
la înregistrările de mărime fixă, fără a necesita citirea înregistrărilor precedente.
Operaţiile care se pot executa asupra fişierelor sunt:
1) deschiderea fişierelor;
2) închiderea fişierelor;
3) exploatarea fişierelor în acces secvenţial;
4) exploatarea fişierelor în acces aleator.
1. Pentru deschiderea unui fişier se foloseşte comanda OPEN. Orice fişier,
înainte de a se lucra cu el, trebuie să fie deschis. Comanda OPEN alocă zone de
memorie tampon pentru operaţiile de intrare/ieşire şi specifică modul de acces
asociat zonei tampon.
Formatul general al acestei comenzi este:
OPEN nume-fişier FOR mod deschidere AS # număr-fişier LEN = expresie
în care:
• nume-fişier – este un şir de caractere care desemnează numele de fişier dar
poate cuprinde şi un director şi o unitate de disc. Dacă fişierul nu există în
momentul deschiderii lui, el va fi creat când se execută comanda OPEN.
• mod de deschidere – specifică modul în care se deschide acel fişier. Pentru
accesul secvenţial se poate specifica: APPEND pentru adăugare de noi înregistrări
la sfârşitul fişierului deja existent; INPUT – pentru citirea înregistrărilor din fişier;
OUTPUT – pentru crearea unui nou fişier.
Pentru accesul binar se specifică BINARY, iar pentru accesul aleator,
RANDOM.
• număr-fişier – este un număr cuprins între 1-511. În modurile Binary,
Input sau Random se poate deschide un fişier utilizând un număr nou, fără a
închide în prealabil copia deschisă anterior; în modurile Append sau Output trebuie
să se închidă în prealabil fişierul pentru a-l putea deschide cu un alt număr; pentru
lucrul simultan cu mai multe fişiere în expresia
#număr-fişier se utilizează funcţia FREEFILE care returnează următorul număr de
fişier care poate fi utilizat în instrucţiunea OPEN;
• expresie – este un număr mai mic sau egal cu 32767.
În cazul utilizării fişierelor deschise RANDOM, acest număr corespunde
lungimii unei înregistrări.
2. Închiderea fişierelor se execută prin intermediul comenzii CLOSE care are
urmãtoarea sintaxă generală:
CLOSE listă-numere-fişiere
în care:
• listă-numere-fişiere specifică unul sau mai multe numere separate prin
virgulă. Când acest argument este absent, se închid toate fişierele. Când se închid
fişierele care au fost deschise în mod Append sau Output toate datele care sunt în
zona tampon acordată fişierului vor fi scrise în fişier înainte de a fi închis. La
execuţia instrucţiunii CLOSE, asocierea dintre fişier şi numărul lui este dezactivată.
3. Exploatarea fişierelor în acces secvenţial. Tipul de acces secvenţial este
utilizat pentru a citi sau scrie o înregistrare de aceeaşi lungime sau pentru fişiere
compuse din înregistrări de lungimi diferite.
Comanda PRINT # scrie datele linie cu linie într-un fişier secvenţial deschis
în mod Output sau Append.
Sintaxa generală a acestei comenzi este:
Print # număr-fişier, listă-expresii
73

Universitatea SPIRU HARET


unde:
• număr-fişier este numele fişierului.
• lista-expresii este o expresie şir sau numerică sau o listă de expresii care se
scrie în fişier. Pentru a scrie o linie goală după număr-fişier se pune virgulă.
Comanda LINE INPUT # este folosită pentru a citi o linie dintr-un fişier
secvenţial. Linia citită este atribuită unei variabile şir. Sintaxa comenzii este:
LINE INPUT # număr-fişier, nume-variabilă
în care:
• număr-fişier este numărul fişierului;
• nume-variabilă este o variabilă şir.
LINE INPUT # citeşte din fişier caracter cu caracter până întâlneşte retur de
car, chr (13) sau retur de car şi salt la linie nouă chr (13) + chr (10).
4. Exploatarea fişierelor în acces aleator. La deschiderea fişierului în acces
RANDOM se precizează lungimea înregistrării. Scrierea unei înregistrări în fişier
se face cu comanda PUT # care scrie dintr-o variabilă într-un fişier. Sintaxa
comenzii este:
PUT [#] număr-fişier, număr înregistrare, nume-variabilă
în care:
• număr-fişier este numărul fişierului;
• număr înregistrare reprezintă lungimea înregistrării determinând poziţia
scrierii;
• nume-variabilă este numele variabilei care conţine datele care urmează a fi
scrise.
Citirea unei înregistrări din fişier se face citind într-o variabilă dată din fişier.
Comanda este GET # de forma:
GET [#] număr-fişier, număr-înregistrare, nume-variabilă,
în care:
• număr-fişier este numărul alocat în prealabil fişierului;
• număr-înregistrare este numărul înregistrării care înmulţit cu lungimea
înregistrării stabileşte poziţia citirii;
• nume-variabilă este numele variabilei care conţine datele care urmează a fi
citite.

3.4.6. Exemplu de aplicaţie informatică în limbajul Visual Basic


Se reia aplicaţia informatică în Visual Basic cu calculul şi afişarea valorii
facturii de materiale din paragrafele 3.3.2, 3.3.3, 3.3.4 şi 3.3.5, cu următorul enunţ:
Să se realizeze un program în limbajul Visual Basic care să calculeze
valoarea totală (fără TVA şi cu TVA) a unei facturi de materiale. Factura conţine
un număr precizat de materiale. Datele de intrare sunt: numărul de materiale de pe
factură (Nrm), număr factură (Nrf), data facturii (Df), codul materialului (Codmat),
denumirea materialului (Denmat), cantitate (Cant) şi preţul 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 ieşire sau rezultatele rulării
programului (Vfftva şi Vfctva) se vor afişa î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 afişarea valorii facturii de
materiale cu un număr precizat de materiale. Trebuie arătat faptul că în această
variantă de rezolvare a problemei, casetele text servesc numai pentru afişare 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 afişarea, sub formă de
tabel, pe formular, a datelor de intrare, a datelor intermediare şi a rezultatelor
rulării aplicaţiei. În această variantă de rezolvare a problemei, nu se mai folosesc
casete text (TextBox).
În ambele variante de rezolvare a problemei, se prevăd butoane de comandă
(Command Button) pentru calculul şi afişarea unui material (fără TVA şi cu TVA)
– butonul CALCULEAZA, pentru calculul valorii facturii (fără TVA şi cu TVA) –
butonul AFISEAZA (pentru afişarea valorii facturii – fără TVA şi cu TVA) şi
pentru ieşirea 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), condiţionată anterior care se implementează cu
instrucţiunea For …Next.
Codul programului în limbajul Visual Basic, pentru varianta 1 de rezolvare,
este următorul:
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 rulării programului în prima variantă de rezolvare a problemei
sunt prezentat în fig.3.19.

Fig.3.19. Rezultatele rulării 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ă fără contor condiţionată posterior. Implementarea acestei structuri în
program se va face cu instrucţiunea 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 următorul:
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 rulării 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 rulării 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 informaţii relevante, corecte


(exacte) şi la timp. Aşa cum s-a arătat în capitolul 1, aceste informaţii sunt memorate
sub formă de date în fişiere, care trebuie să fie aranjate (organizate) şi întreţinute
astfel încât utilizatorii să obţină cu uşurinţă informaţiile de care au nevoie.
Managementul datelor este o parte foarte importantă a sistemului informatic
organizaţional economic, deoarece influenţează viteza cu care pot fi obţinute datele
şi deci poate fi luată decizia. Există situaţii când viteza de luare a deciziei este o
chestiune de supravieţuire pentru organizaţia economică.
Un sistem de calcul din compunerea sistemului informatic are organizate
datele într-o ierarhie care începe cu biţi şi octeţi (bytes) şi continuă cu câmpuri,
înregistrări, fişiere, baze de date şi depozite de date.
Sistemul bază de date se defineşte ca fiind ansamblul de colecţii organizate
de date, împreună cu descrierea datelor şi a relaţiilor dintre ele, care reprezintă,
complet, corect şi coerent, universul real al organizaţie economice (comparti-
mentului specializat al acesteia) prin caracteristicile relevante (reprezentative) ale
elementelor sale, percepute de sistem prin semantica lor (semnificaţia lor reală) şi
prin legăturile dintre aceste caracteristici (fig. 4.1). Conceptul de bază de date a fost
introdus în anul 1969, cu prilejul prezentării primului raport CODASYL. Ulterior, şi
alte grupuri de lucru specializate (IIBM, ANSI, DBTG) şi-au adus contribuţia la
standardizarea conceptelor din teoria bazelor de date.

Percepţie
DOMENIUL CONCEPTUAL
Reprezentare
DOMENIUL
SEMANTIC
UNIVERS BAZA DE
DATE
REAL **********
COLECŢII
DE DATE
CARACTE- SGBD
RISTICI

Percepţie,
Reprezentare

Fig.4.1. Definirea conceptului de bază de date


80

Universitatea SPIRU HARET


Colecţia de date se defineşte ca fiind mulţimea de valori (date) pe care le
iau caracteristicile reprezentative ale unui element din universul real al
organizaţiei economice, dacă la fiecare moment de timp se aplică asupra lor un
predicat, o acţiune din realitatea organizaţiei economice, împreună cu domeniile
de definiţie 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ă
coerenţa datelor, în raport cu universul real al organizaţiei economice reprezentat.
Se reaminteşte că tipurile de structuri logice de date sunt: punctuală, liniară,
arborescentă, reţea, relaţională, 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 funcţie de tipul
stabilit pentru legăturile dintre datele din colecţiile de date (ierarhic, reţea,
relaţional, orientat pe obiecte), s-au realizat mai multe modele abstracte de
reprezentare a datelor, dar fiecăruia î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 atât pentru denumirea
structurii de date a unui sistem bază de date, cât şi pentru denumirea modelului
abstract de reprezentare a datelor care o determină. Mai mult chiar, conceptul de
bază de date denumeşte atât colecţia organizată, cît ş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ă
interfaţa dintre baza de date şi utilizator.
O bază de date trebuie să satisfacă următoarele condiţii:
• structura bazei de date trebuie să asigure informaţiile necesare şi suficiente
pentru îndeplinirea cerinţelor de informare şi decizie;
• să asigure o independenţă sporită a datelor faţă de programe şi invers;
• să se realizeze o redundanţă (cardinalitatea informaţiilor colecţiilor 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 conversaţional. Accesarea bazei de date se realizează prin
aplicaţii generale, programe de aplicaţie, limbaje de manipulare autonome
(procedurale şi neprocedurale), interfeţe specializate cu limbajele de programare
clasice etc., local sau de la distanţă, prin utilizarea calculatoarelor singulare sau a
reţelelor de calculatoare. Rezultatele interogărilor utilizatorilor se prezintă sub formă
vizuală, listată, prin memorare pe diverşi suporţi 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 gestionării, prelucrării, distribuirii şi utilizării multiple, folosind
sistemele de calcul, programele utilitare şi programele de aplicaţie.
Pornind de la funcţia sa, un sistem bază de date este format, ca structură
generală, din: colecţii de date, baza de date, SGBD, programe de aplicaţie şi
utilitare, precum şi utilizatori. Dacă conceptul de bază de date denumeşte atât
81

Universitatea SPIRU HARET


colecţiile de date, cât ş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 specificaţiile utilizatorilor finali (end-users), programatorii de
aplicaţie, având la dispoziţie 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 aplicaţie. Aşa cum s-a precizat deja,
interfaţa dintre baza de date şi schema BD, utilitare şi programele de aplicaţie este
sistemul de gestiune a bazei de date, SGBD.
Obiectivele unui SGBD sunt, în principal, următoarele:
• asigurarea independenţei datelor faţă de aplicaţie;
• asigurarea redundanţei minime şi controlate a datelor;
• asigurarea tuturor facilităţilor posibile de exploatare a datelor;
• asigurarea securităţii şi protecţiei datelor împotriva accesului neautorizat
(inclusiv prin criptarea datelor);
• asigurarea coerenţei şi integrităţii datelor împotriva ştergerilor accidentaşle
sau intenţionate;
• asigurarea partajării datelor (accesul concurent al utilizatorilor la baza de
date);
• asigurarea nivelului de performanţă globală (volum mare de date
complexe gestionate cu un timp de răspuns acceptabil la adresarea cererilor de
interogare din partea utilizatorilor multipli).
Funcţiile generale ale unui SGBD sunt:
1) descrierea datelor (definirea structurii bazei de date prin intermediul
limbajului de definire a datelor);
2) manipularea datelor (încărcarea, actualizarea, prelucrarea şi regăsirea
datelor cu ajutorul limbajului de manipulare a datelor);
3) utilizarea bazei de date (de către 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 stocării datelor (DSDL, Data Storage Description
Language).
Limbajul de definire a datelor asigură, în principal:
• definirea tuturor tipurilor de înregistrări şi de câmpuri de date, precum şi
asocierea corespondenţei acestora cu nivelul conceptual;
• specificarea ordinii logice a câmpurilor de date;
• definirea câmpurilor ce vor fi folosite drept chei de căutare;
• definirea drepturilor de acces;
• definirea legăturilor între tipurile de înregistrări.
82

Universitatea SPIRU HARET


Limbajul de manipulare a datelor permite:
• parcurgerea structurilor şi a legăturilor existente;
• accesul la înregistrări prin adresă sau prin conţinutul acestora;
• actualizări ale înregistrărilor;
• reordonări ale câmpurilor de date;
• definirea tranzacţiilor şi a condiţiilor de eroare.
Limbajul de descriere a stocării datelor oferă posibilităţi de:
• asociere a fişierelor la programele de aplicaţie, a dispozitivelor fizice,
alocare de spaţii de memorie;
• specificarea zonelor de lucru permanente şi tranzitorii;
• definirea şi izolarea datelor confidenţiale;
• specificarea structurilor de memorare, a mecanismelor de adresare, a
modului de translatare a înregistrării logice în înregistrare fizică;
• crearea indecşilor asociaţi cheilor de căutare.
Operaţiile ce se execută asupra unei baze de date sunt:
• creare;
• încărcare (populare);
• consultare: căutare (selecţie);
• actualizare: modificare, adăugare articole noi, ştergerea unor articole,
ordonare (sortare, indexare), prelucrare etc.

PROGRAM UTILIZATORI
DE APLICAŢIE

Baza SGBD
SCHEMA BD ADMINISTRATOR
de date
UTILITARE PROGRAMATOR
DE APLICAŢIE

Fig.4.2. Arhitectura unui sistem bază de date

Dicţionarul de date (Data Dictionary) este un fişier care memorează


definiţiile datelor şi caracteristicile lor ca: folosirea, reprezentarea fizică, pro-
prietatea (cine este responsabil pentru întreţinerea lor), autorizarea şi securitatea.
Prin faptul că reprezintă un inventar al datelor conţinute într-o bază de date,
dicţionarul de date este un important instrument de management organizaţional. În
realizarea acestor dicţionare de date se folosesc metadatele. Metadatele reprezintă
date despre date (nume, conţinut, semnificaţie, proprietar etc.).
O bază de date este compusă dintr-o mulţime de atribute (câmpuri,
coloane) şi are asociată o mulţime de date (linii, rânduri, înregistrări, articole). O

83

Universitatea SPIRU HARET


înregistrare (record) reprezintă o asociere a valorilor pentru fiecare câmp (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 SCHEMA SCHEMA


EXTERNĂ 2 CONCEPTUALĂ FIZICĂ

SCHEMA
EXTERNĂ n

Fig.4.3. Niveluri de organizare a datelor într-o bază de date

Nivelul logic sau extern (nivelul programatorului de aplicaţie) califică o


structură de date ce are o realitate în planul semnificaţiei sau utilizării, dar nu şi în
implementarea fizică; califică forma în care fiecare utilizator vede structurarea
datelor, în funcţie de aplicaţia pe care o foloseşte sau în funcţie de resursele de date
pe care administratorul bazei de date i le pune la dispoziţie. Nivelul virtual sau
conceptual (nivelul administratorului bazei de date) se referă la definirea structurii
datelor din baza de date astfel încât aceasta să îndeplinească cerinţele tuturor
utilizatorilor, în condiţii de redundanţă minimă şi controlată a acesteia. Nivelul fizic
(nivelul inginerului de sistem) priveşte 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 (concepţia CODASYL). Astfel, se
poate concluziona că SGBD (DBMS) asigură legătura dintre nivelul conceptual
(virtual) şi nivelul fizic.
O înregistrare virtuală se poate prezenta sub forma unei sau mai multor
înregistrări fizice şi poate participa la construirea unei sau mai multor înregistrări
logice.
Într-o bază de date ideală, datele sunt definite o singură dată şi folosite ori
de câte ori este necesar.

84

Universitatea SPIRU HARET


În funcţie de locul în care sunt memorate colecţiile de date ce formează
baza de date, se deosebesc:
• baze de date centralizate, CDB (Centralized DataBases), în situaţia în care
toate colecţiile care formează baza de date sunt stocate pe un singur calculator;
• baze de date distribuite, DDB (Distributed DataBases), în situaţia în care
colecţiile care formează baza de date sunt răspândite în nodurile unei reţele de
calculatoare şi de comunicaţii. Bazele de date distribuite sunt prezentate în
capitolul 8 al lucrării.
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 lucrării).
Realizarea unei baze de date se obţine prin parcurgerea etapelor prezentate
în fig.4.4.
Conţinutul 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 legăturilor dintre acestea sau
analiza structurală în urma căreia se defineşte modelul structural sau static al
sistemului economic;
b) analiza stărilor sistemului şi a tranzacţiilor posibile între aceste stări în
raport cu anumite evenimente. În urma acestei analize rezultă modelul dinamic sau
temporal;
c) analiza cerinţelor informaţionale, în urma căreia se defineşte modelul
funcţional al sistemului economic;
d) integrarea modelelor sistemului economic (structural, dinamic şi
funcţional) în scopul corelării şi completării lor.
Se face menţiunea că analiza funcţională a sistemului are ca scop
determinarea transformărilor de date care se produc în cadrul sistemului în scopul
satisfacerii cerinţelor informaţionale specifice acestui sistem. Transformările de
date se vor prezenta sub forma unei diagrame de flux a prelucrărilor (modelul
funcţional), în care nodurile reflectă procesele de prelucrare informaţională şi
arcele fluxurile informaţionale 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
spaţiul de memorare a datelor şi poate conduce la creşterea eficienţei prelucrării
datelor. Scopul normalizării este de a minimiza redundanţa datelor.
Erorile de introducere a datelor pot să compromită precizia şi validitatea
bazei de date. Utilizatorul poate să fie uneori în situaţia de a nu conştientiza faptul
că el introduce date incorecte. Datele incorecte pot proveni, în primul rând, de la
apăsarea greşită a unor taste. Cele mai multe SGBD-uri pot preveni, dar nu pot
elimina introducerile incorecte de date. Informaţia furnizată de rutinele de
prelucrare şi de rapoarte este la fel de precisă şi corectă în măsura în care aceste
caracteristici sunt prezente şi la datele stocate în bazele de date.
85

Universitatea SPIRU HARET


ANALIZĂ SISTEM
(DOMENIU ECONOMIC ŞI
CERINŢE INFORMAŢIONALE ASOCIATE)

PROIECTAREA STRUCTURII BAZEI DE DATE


(SCHEME CONCEPTUALE)

POPULAREA (ÎNCĂRCAREA) BAZEI DE DATE CU DATE

EXPLOATAREA ŞI ÎNTREŢINEREA
BAZEI DE DATE

Fig.4.4. Etapele de realizare a bazelor de date

Formatul de câmp menţine consistenţa datelor prin asigurarea unei


structuri de introducere a datelor, aşa cum se arată în fig.4.5.

X – cifră,
Format câmp A - literă
CONT LA BANCĂ

ROXXAAAAXXXXXXXXXXXXXXXX

Exemplu RO96RXBR0000000431267982

Fig.4.5. Formatul de câmp pentru CONT LA BANCA


86

Universitatea SPIRU HARET


Proiectantul bazei de date poate să preîntâmpine introducerea datelor
incorecte prin:
- specificarea unui anumit format de câmp destinat pentru introducerea
datelor (formatul de câmp este de fapt o imagine a modului în care trebuie să arate
data atunci când această dată este introdusă în baza de date);
- utilizarea regulilor de validare a câmpurilor (acele specificaţii prin care se
filtrează datele introduse într-un anumit câmp), a casetelor cu liste sau a formatelor
predefinite.

4.2. Generaţii de baze de date


şi de sisteme de gestiune a bazelor de date asociate

În evoluţia istorică, bazele de date şi sistemele de gestiune a bazelor de


date (SGBD) asociate au cunoscut trei generaţii:
• sistemele ierarhice şi reţea;
• sistemele relaţionale;
• sistemele în tehnologie avansată (orientate obiect, relaţionale orientate
obiect, deductive, distribuite, multibaze, active, multimedia, online etc.).
Sistemele ierarhice şi reţea reprezintă datele la nivel de articol, prin legături
ierarhice (arbore) sau de tip graf reţea. Deoarece datele prezintă o slabă independenţă
fizică, SGBD (DBMS) este mai complicat şi mai greoi în comparaţie 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
entităţi şi legături funcţionale dintre ele) serveşte pentru descrierea, la nivel logic, a
structurilor de date specifice sistemelor ierarhice şi reţea.
Sistemele relaţionale tratează entităţile ca nişte relaţii. Modelul relaţional
(ce aparţine lui E.F.Codd) reprezintă un model formal de organizare conceptuală a
datelor, ce realizează reprezentarea legăturilor dintre date, având la bază teoria
matematică a relaţiilor. Un sistem relaţional este compus formal dintr-o bază de
date relaţională, o colecţie de operatori relaţionali, regulile de integritate care
guvernează utilizarea cheilor în model şi un set de asocieri. Elementele de definire
a modelului relaţional corespund celor trei componente ale ingineriei software:
informaţie, proces, integritate. Problematica de detaliu a sistemelor de gestiune a
bazelor de date relaţionale este tratată în paragraful următor.
Sistemele de gestiune a bazelor de date în tehnologii avansate elimină cea
mai mare parte a acestor dezavantaje. Aşa cum s-a arătat în capitolul 2, în
programarea orientată pe obiecte, OOP (Object-Oriented Programming), efortul
esenţial este direcţionat pentru definirea obiectelor. Obiectele de acelaşi tip
formează o clasă ce cuprinde, alături de date, şi metodele de acces la aceste date.
Datele sunt transparente numai pentru metodele asociate clasei respective
(încapsularea datelor). Prin funcţiile denumite constructori şi destructori, se
realizează controlul asupra creerii şi ştergerii unui anumit obiect. Prin moştenire, se
obţin clase derivate ce moştenesc proprietăţile (date şi funcţii) claselor-părinte. Prin
reunirea tehnicilor bazelor de date cu acelea ale limbajelor orientate obiect s-au
87

Universitatea SPIRU HARET


obţinut 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 concurenţi. OODBMS prezintă următoarele
avantaje:
• integrarea descrierii structurale şi comportamentale;
• posibilităţi superioare de deducţie (ierarhie de clase, moştenire);
• considerarea aspectelor dinamice în cadrul aplicaţiilor;
• îmbunătăţirea interfeţei cu utilizatorii.
Se apreciază, totuşi, că administrarea obiectelor complexe este mai dificilă
decât accesul la relaţii prin cereri SQL, specific bazelor de date relaţionale.
Avantajele incontestabile ale tehnologiei orientate obiect au fost combinate
cu acelea ale modelului relaţional, rezultând bazele de date relaţionale orientate
obiect.
Relaţiile sunt mulţimi de înregistrări ce reprezintă fapte. Cunoştinţele se
definesc ca aseţiuni generale şi abstracte asupra faptelor. Pe baza faptelor
cunoscute tezaurizate în cunoştinţe, se pot deduce noi fapte printr-un proces de
raţionamente. Bazele de date deductive ce folosesc programarea logică (specifică
inteligenţei artificiale) administrează cunoştinţe 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 esenţial de analiză a datelor, inclusiv istorice,
pentru toată organizaţia, o bază de date optimizată în acest scop defineşte o Data
Warehouse (depozit de date), după principiul procesării analitice, OLAP (On-Line
Analytical Processing). Sistemele tranzacţionale (ce se folosesc pentru prelucrarea
datelor operaţionale ale organizaţiei economice) au la bază principiul procesării
tranzacţionale online, OLTP (On-Line Transactional Processing), de control la un
moment dat al unei singure tranzacţii. Data Warehouse admite interogări ce nu
sunt predefinite şi oferă răspunsuri ad-hoc pe baza analizelor datelor ce se referă la
întreaga organizaţie. Data Warehouse se subdivide în baze de date departamentale
(domenii de gestiune ale organizaţiei), denumite rafturi de date (Data Marts).
Realizarea sistemelor de sprijin al deciziilor, DSS (Decision Support
Systems), implică un proces laborios de descoperire a informaţiilor utile din cadrul
bazelor mari de date. Procesul este denumit Data Mining (« mineritul datelor ») sau
de descoperire a cunoştinţelor în baza de date, KDD (Knowledge Discovery in
Databases).
O bază de date OLAP poate să fie bază de date relaţională, dar şi bază de
date multidimensională. Structura unei baze de date multidimensionale conţine
obiecte de următoarele tipuri: variabile, dimensiuni, niveluri, ierarhii, atribute.
Acestea sunt tratate mai pe larg în capitolul 9 (studenţii 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 relaţionale

Termenul de bază de date relaţională (BDR) a fost introdus de E.F.Codd


de la firma IBM în anul 1969. Modelul relaţional este fundamentat pe reguli,
structuri şi operaţii. Regulile stabilesc modul de manipulare a datelor, structurile
sunt obiecte definite ce conţin date şi care sunt accesibile utilizatorului, iar
operaţiile reprezintă acţiuni 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 relaţională şi care sunt prezentate în tabelul 4.1.
Tabelul 4.1
Nr. Conţinutul regulii Comentarii
regulii
R0 SGBD gestionează datele la nivel de Conceptul de bază este relaţia.
relaţie (exclusiv pe baza caracteristicilor
relaţionale).
R1 Toate datele din baza de date Catalogul conţine denumiri de tabele,
relaţională se reprezintă explicit sub coloane, domenii, restricţii de
forma unor valori într-un tabel (regula integritate etc.
reprezentării logice a datelor).
R2 Datele individuale dintr-un tabel sunt Datele sunt accesibile prin numele
accesate prin specificarea numelui tabelului, a liniei şi a coloanei.
tabelului, a valorii cheii primare şi a
coloanei (regula garantării accesului
la date)
R3 Valorile NULL (inexistenţa datelor) Valoarea NULL semnifică „nimic”. A
sunt tipuri de date acceptate (regula nu se confunda cu zero (0).
referitoare la valorile NULL).
R4 Baza de date relaţională reprezintă Metadatele sunt date despre date.
descrierea bazei de date în format Regula nu face diferenţieri între tratarea
logic simplificat sub formă de tabele datelor şi a metadatelor.
(regula metadatelor).
R5 Modelul relaţional permite imple- SQL este limbajul de bază pentru
mentarea mai multor limbaje (regula realizarea interogărilor asupra bazei de
de permisiune a limbajelor multiple). date.
R6 Dacă vederea curentă reprezintă un Toate tabelele virtuale ce teoretic sunt
tabel, toate vederile (view-urile) sunt posibil de actualizat, trebuie să fie în
actualizabile (regula actualizării mod practic actualizate.
vederilor).
R7 În operaţiile de schimbare a conţi- Modelul relaţional abordează relaţiile
nutului bazelor de date, se lucrează la de bază şi pe cele derivate ca pe un
un moment dat pe toată relaţia (regula singur operand destinat operaţiilor de
referitoare la actualizări, inserări şi actualizare (update), inserare (insert) şi
ştergeri în baza de date). ştergere (delete) efectuate asupra datelor.
R8 Structura logică a bazei de date se Programele de aplicaţie nu trebuie să
prezintă complet separată de structura fie influenţate de schimbările survenite
fizică a bazei de date (regula referitoare în modul de reprezentare a datelor sau
la independenţa fizică a datelor). în metodele de acces.
89

Universitatea SPIRU HARET


R9 Atunci când bazei de date i se aduc Programele de aplicaţie nu trebuie să
modificări neconforme, datele se fie influenţate de schimbările efectuate
conservă (regula referitoare la asupra relaţiilor bazelor de date.
independenţa logică a datelor).
R10 Restricţiile de integritate sunt definte Restricţiile de integritate sunt create în
în limbajul folosit de sistem (regula limbajul SQL şi se stochează în
referitoare la restricţiile de integritate). dicţionarul bazei de date şi nu în
aplicaţiile individuale.
R11 Accesarea datelor pe server de către Este presupusă producerea unui proces
client se produce în mod continuu de copiere a datelor dintr-o bază de
(regula referitoare la distribuirea date localizată la distanţă.
geografică a datelor).
R12 Regulile şi restricţiile de integritate nu Nu trebuie folosit un limbaj de nivel
pot fi evitate de nici un limbaj de scăzut orientat pe prelucrarea pe tupluri.
acces la date (regula referitoare la
prelucrarea datelor la nivel de bază).

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


13 reguli ale lui Codd.
Aşa cum s-a arătat, o bază de date relaţională reprezintă o colecţie de
relaţii (tabele în accepţiunea uzuală, memorate fizic în fişiere). Coloanele tabelului
se numesc atribute, iar liniile se numesc tupluri.
Baza de date relaţională (RDB) este compusă dintr-o mulţime de domenii
şi o mulţime de relaţii peste care se aplică o mulţime de asocieri. Domeniul este
definit ca mulţimea obiectelor de acelaşi tip. Relaţia este o mulţime rezultată ca
urmare a agregării (corespondenţei) a două sau mai multe mulţimi. O relaţie în
accepţiunea 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 (relaţia) referitor la MATERIALE:

Cod_material Denumire_material Cantitate Pret_unitar


01212 Tablă 1200 180000
03214 Cornier 400 420000
04301 Cherestea 850 210000

Fiecare linie descrie un anumit material. Coloanele conţin 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 preţurilor unitare, în acest caz, este:
D4: {pret_unitar ⎢pret_unitar∈[180000,420000]}.
Mulţimea 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


Relaţia L se defineşte prin tupluri corespunzătoare din tabel:
L:<”01212”,”TABLA”,”1200”,”180000”>, <”03214”,”CORNIER”,”400”,”420000”>}.
Într-o relaţie, este necesar ca tuplurile să fie distincte (nu se permit valori
duplicate). Ca urmare, se observă că relaţia este reprezentată prin tabelul
bidimensional în care coloanele sunt domenii iar liniile sunt tupluri. Numărul
tuplurilor unei relaţii este cardinalul relaţiei. Numărul valorilor unui tuplu este
gradul relaţiei. Schema unei relaţii este formată din numele relaţiei şi lista
atributelor (pentru fiecare atribut este necesară specificarea domeniului asociat).
Modelul relaţional este format din două mulţimi de operatori pe relaţii:
algebra relaţională şi calculul relaţional.
E.F.Codd a definit algebra relaţională ca o colecţie de operaţii pe relaţii,
astfel încât o anumită operaţie dispune de operanzi de tipul relaţie şi are ca rezultat
tot o relaţie. Tipurile de operaţii acceptate de algebra relaţională sunt operaţii de
bază (reuniunea, diferenţa, proiecţia, produsul cartezian ş.a.), operaţii derivate
(intersecţia şi diviziunea) şi operaţii suplimentare (selecţia, splitarea unei relaţii,
complementarea unei relaţii, închiderea tranzitivă, joncţiunea etc.). Algebra
relaţională permite derivarea procedurală a relaţiilor.
Se prezintă ca exemplu reuniunea. Reuniunea (notată cu OR, ∪, APPEND
sau UNION) este o operaţie definită pe relaţiile Rel1 şi Rel2 (cu aceeaşi schemă),
ce generează o nouă relaţie Rel3 (cu schema identică cu a relaţiilor Rel1 şi Rel2)
care este formată din reuniunea tuplurilor relaţiilor Rel1 şi Rel2 (fig.4.6).
Calculul relaţional conţine mulţimea operatorilor din modelul relaţional şi
este o adaptare a calculului cu predicate (o relaţie este identificată cu un predicat)
pentru domeniul BDR. Calculul relaţional asigură definirea neprocedurală,
declarativă a relaţiilor. Relaţiile sunt precizate prin proprietăţile tuplurilor. Iniţial,
în BDR, variabilele definite asupra relaţiilor aveau valori care reprezentau tupluri
de relaţie (variabile tuplu), obţinându-se calculul relaţional orientat pe tuplu. Când
variabilele operează asupra domeniilor – aşa cum se petrec lucrurile în prezent –
ele sunt variabile domeniu şi determină calculul relaţional orientat pe domeniu.
Regulile de integritate sunt aserţiuni pe care datele ce formează baza de
date trebuie să le satisfacă şi sunt în număr de trei: unicitatea cheii (cheia primară
trebuie să fie unică şi minimală), integritatea entităţii (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).
Constrângerile structurale sunt de trei tipuri: de cheie, de referinţă şi de entitate.

Rel1

OR Rel3

Rel2
Fig.4.6. Diagrama operaţiei reuniune
91

Universitatea SPIRU HARET


Cheia unei relaţii reprezintă o mulţime minimală de atribute ale căror
valori identifică în mod unic un tuplu într-o relaţie. Diferitele chei posibile se
numesc chei-candidat. Cheia candidat aleasă pentru a identifica efectiv tupluri se
numeşte cheie primară.
Conceptele folosite pentru descrierea formală, uzuală şi fizică a
elementelor de bază ale organizării datelor în baze de date relaţionale sunt
prezentate în tabelul 4.2. [44].
Tabelul 4.2
Formal Uzual Fizic
Relaţie Tablou Fişier
Tuplu Linie Inregistrare
Atribut Coloană Câmp
Domeniu Tip de dată Tip de dată

Definirea proprietăţilor structurale ale relaţiilor se realizează prin tehnica


normalizării. Se afirmă că o relaţie se găseşte într-o formă normală particulară dacă
îndeplineşte un număr specificat de restricţii. Normalizarea se obţine printr-un
număr de paşi succesivi, în cadrul unui proces reversibil, până la realizarea formei
dorite. Forma normală a unei relaţii este necesară deoarece formele normale nu
produc anomalii în actualizarea datelor unei baze de date relaţionale. Tipurile de
restricţii folosite la formele normale ale relaţiilor sunt restricţiile asupra valorilor
atributelor, restricţiile referitoare la dependenţa atributelor secundare de chei,
restricţiile cu privire la dependenţa atributelor principale de toate atributele. Se
folosesc următoarele forme normale:
• 1NF (forma normală 1). O relaţie se găseşte în 1NF dacă domeniile pe
care sunt definite atributele relaţiei sunt formate numai din valori elementare. Un
tuplu nu trebuie să conţină atribute sau grupuri de atribute repetitive (nu se admit
duplicate).
• 2NF (forma normală 2). O relaţie se află în 2NF dacă este în 1NF şi
oricare dintre atributele non-cheie este dependent funcţional complet de cheia
primară a relaţiei.
• 3NF (forma normală 3). O relaţie se găseşte în 3NF dacă este în 2NF şi
atributele non-cheie nu sunt dependente tranzitiv de cheia primară a relaţiei.
• BCNF (forma normală Boyce-Codd). O relaţie este în BCNF dacă
dependenţele funcţionale netriviale ce pot apare în cadrul relaţiei conţin, în partea
stângă, ca determinant, o cheie-candidat.
• 4NF (forma normală 4). O relaţie se găseşte în 4NF dacă în cadrul
acesteia nu se manifestă mai mult decât o dependenţă multivaloare.
• 5NF (forma normală 5). O relaţie L se găseşte în 5NF dacă fiecare
dependenţă joncţiune este implicată printr-o cheie-candidat a lui L.
Bazele de date relaţionale conţin structuri de date simple şi intuitive. Ele
prezintă avantaje legate de existenţa unui ansamblu integrat de utilitare bazat pe un
limbaj evoluat de programare (generatoare de meniuri, generatoare de forme,
generatoare de aplicaţii, generatoare de etichete), de existenţa unor limbaje speciale
92

Universitatea SPIRU HARET


de definire şi de manipulare a datelor, precum şi de independenţa completă în
descrierea logică a datelor (în termeni de relaţii) şi în descrierea fizică a datelor (în
termen de fişiere). Dintre dezavantajele bazelor de date relaţionale, se menţionează
imposibilitatea utilizării obiectelor complexe şi dinamice, a administrării datelor
distribuite şi a cunoştinţelor.

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 prezentând 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 menţiunea că între partea de limbaje de programare şi partea de baze de
date există multe elemente comune; cu toate acestea, aceste părţi sunt diferite:
• un program pe calculator este gândit 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
situaţia bazelor de date orientate pe obiecte, de regulă, problemele se complică. Ca
urmare, se cuvine să se judece în mod nuanţat atunci când se încearcă reliefarea
avantajelor utilizării 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
aplicaţii; extinderea posibilităţilor de generalizare şi agregare a relaţiilor; evoluţia
către multimedia şi hipermedia (sunet, imagine, texte).
2. Capacitatea de deducţie superioară (ierarhie de clase, moştenire).
3. Îmbunătăţirea interfeţei 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, creând posibilitatea de definire a unor tipuri de
date care combină atât structura de date, cât şi definirea procedurii. Un model de
date orientat pe obiecte are la bază noţiunea de entitate conceptuală şi defineşte un
obiect ca o colecţie de proprietăţi care descriu entitatea. O comparaţie între
noţiunile clasice şi cele asociate bazelor de date orientate pe obiecte este
prezentată, după Date [5], în tabelul 4.1.
Tabelul 4.3
Nr.crt Noţiunea specifică obiectelor Noţiunea clasică de comparaţie
1. Obiect nemutabil (care nu se poate muta) Valoare
2. Obiect mutabil (care se poate muta) Variabilă
3. Clasa de obiecte Tip
4. Metoda Operator
5. Mesaj Invocarea de operator

93

Universitatea SPIRU HARET


Obiectul reprezintă conceptual o unitate identificabilă cu conţinut propriu, care
se deosebeşte de ceea ce o înconjoară. Fiecare obiect dispune de un identificator unic,
denumit ID al obiectului, OID (Object ID). Două obiecte cu OID diferiţi sunt
diferite, chiar dacă sunt identice sub toate aspectele transparente utilizatorului.
Deşi tentaţia iniţială este de a considera obiecte doar unităţile ce se pot muta,
prin obiecte se desemnează atât unităţile fixe cât şi cele mutabile. Fiecare obiect
posedă un tip care semnifică o clasă de obiecte. Instanţa unui obiect reprezintă un
obiect individual. Obiectele sunt încapsulate. Structura obiectului şi modul de
acţiune 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 numeşte încapsulare. Încapsularea presupune independenţa
fizică de date. Astfel, prin încapsulare, reprezentarea internă a unui obiect poate să fie
modificată fără a fi nevoie ca aplicaţiile care utilizează obiectul să fie rescrise.
Starea unui obiect este exprimată prin valorile atributelor sale. Colecţia de
atribute trebuie aleasă astfel încât 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 numeşte „semnătură”.
Comportamentul unui obiect reprezintă un set de metode sau operaţii care
acţionează 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ă următoarele elemente:
a) structura de date;
b) specificarea operaţiilor;
c) implementarea operaţiilor.
Structura unui obiect şi operaţiile (metodele) permise pentru acel obiect sunt
definite împreună.
Metodele şi atributele nu sunt vizibile din „exteriorul” obiectului. Un obiect
răspunde 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ă. Interfaţa
publică este compusă din definiţiile interfeţelor (corespunzătoare semnăturilor
specificaţiei). Interfaţa publică nu face parte din obiectul corespunzător. Această
interfaţă publică este inclusă în obiectul de definire a clasei, CDO (Class-Defining
Object). CDO este obiectul ce defineşte clasa pentru care obiectul considerat
reprezintă o instanţă (este similar unui descriptor). Memoria privată este compusă
din variabile de instanţă (atribute sau membri) ale căror 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).
Persistenţa este o proprietate a datelor sau a obiectelor care presupune
existenţa lor pe o durată mai mare în comparaţie cu aceea a procesului care le-a
94

Universitatea SPIRU HARET


generat. Persistenţa reprezintă proprietatea prin care starea bazei de date asigură
execuţia 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ă acelaşi fel de atribute şi acelaşi comportament fac
parte din acelaşi tip sau clasă. În raport cu această caracteristică există două
categorii de sisteme orientate pe obiecte [18]:
a) sisteme care admit ca noţiune de bază clasa, cum ar fi: VISION,
ORION, G-BASSE;
b) sisteme care admit ca noţiune de bază tipul, cum sunt: C++, Simula, O2.
Într-un sistem orientat pe obiecte, tipul sintetizează elementele comune ale
unui set de obiecte cu aceleaşi caracteristici. Acest sistem are ca şi componente,
interfaţa şi implementarea. Interfaţa este partea vizibilă pentru utilizator şi constă
într-o listă de operaţii. Implementarea presupune descrierea structurii interne a
datelor obiectului şi realizarea procedurilor de implementare a operaţiilor interfeţei.
Un tip este construit recursiv, începând cu tipurile de bază: caracter, întreg,
real, şir de caractere, boolean. Constructorii de tipuri sunt: tuplul, lista, setul şi
clasa. O listă este o colecţie ordonată de obiecte ale aceleiaşi clase sau de valori ale
aceluiaşi tip. Elementele unei liste sunt accesibile direct prin rangul lor.
Operaţiile permise asupra listelor sunt: afectarea (=), comparaţia (= =),
concatenarea (+), accesul direct ([i]), apartenenţa (in), sublista ([i ; j]), numărarea
(count ( ) ), înlocuirea, ştergerea (list ( ) ), inserarea ([:i]+=), iteraţia ( { }).
Noţiunea de clasă, deşi are aceeaşi specificaţie cu cea de tip, este asociată cu
faza de execuţie. Ea presupune generarea de obiecte prin operaţia „new” aplicată
unei clase şi stocarea setului de obiecte care reprezintă instanţele clasei. Descrierea
clasei serveşte ca şablon pentru crearea obiectele noi.
O clasă este un tip abstract de date care defineşte atât structura obiectelor
din clasa respectivă, cât şi mulţimea metodelor existente pentru aceste obiecte.
Astfel, obiectele din aceeaşi clasă prezintă aceleaşi atribute şi aceleaşi metode şi
răspund la acelaşi mesaj.
Moştenirea
Într-o bază de date orientată pe obiecte, clasele sunt aranjate într-o ierarhie
în care fiecare clasă moşteneşte toate atributele şi metodele superclasei din care
face parte [18]. Moştenirea conduce la reutilizarea codului. Moştenirea reprezintă
mecanismul de realizare a definirii unei clase în care derivă variabilele de instanţă
şi metodele din altă definire de clasă. Când o clasă moşteneşte, ea este considerată
ca subclasă. Conceptele de subclasă şi superclasă sunt analoge conceptelor de
generalizare şi specializare.
Obiectele, clasele şi moştenirea formează baza modelului de date orientat pe
obiecte şi presupune următoarele aspecte:
• obiectele sunt entităţi de bază care înglobează structuri de date şi operaţii;
• 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 moştenire;
95

Universitatea SPIRU HARET


• definirea unei clase este mecanismul de specificare a schemei bazei de date;
• definirea unei clase poate include variabile de instanţă, având tipuri de
date definite de sistem sau de utilizator;
• schema bazei de date poate fi extinsă dinamic prin definirea de noi clase.
Operaţiile modelului de date orientat pe obiecte
Operaţiile se pot grupa în modul următor:
a) obiectele comunică între ele prin mesaje;
b) un mesaj poate fi trimis instanţelor mai multor clase;
c) metodele pot fi definite, şterse sau modificate;
d) clasele pot fi definite şi actualizate prin operaţii de creare, ştergere şi
modificare;
e) instanţa unei clase poate fi actualizată prin metode care modifică valorile
variabilelor propriei instanţe, aceasta modificând starea internă a obiectului.
Într-o serie de implementări, definirile de clasă sunt ele însele obiecte, numite
obiecte de clasă. Obiectele clasă sunt instanţe ale unei clase generice sau ale unei
metaclase. Operaţiile 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 următoarelor operaţii:
• toate obiectele trebuie să respecte protocolul specificat de definirile lor de
clasă;
• obiectele sunt încapsulate, acest lucru presupunând 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ă fără să aibă asignat un identificator. Dacă un obiect este
şters sau mutat, identificatorul său 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 relaţiile structurale.
Modificarea schemei presupune:
1. Definirea unei taxonomii şi a unui model al schimbărilor. Taxonomia
defineşte un set de schimbări semnificative ale schemei, iar modelul furnizează o
bază pentru specificarea semanticilor schimbărilor schemei;
2. Implementarea schimbărilor schemei. Aceste schimbări pot fi:
a) schimbări referitoare la modul de definire a unei clase. Acestea includ
schimbările atributelor şi metodelor definite pentru o clasă, cum ar fi: schimbarea
numelui sau domeniul unui atribut, adăugarea, ştergerea unui atribut sau a unei
metode;
b) schimbări referitoare la structura ierarhiei de clase, care includ adăugarea
sau ştergerea unei clase şi schimbarea relaţiilor 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 foloseşte
tehnica top-down, care constă în identificarea componentelor după care se stabilesc
corelaţiile între ele şi se rafinează succesiv în „cascadă” componentele sale. Se
poate utiliza şi metoda bottom-up, prin care mai întâi se identifică componentele
funcţionale pe baza cărora se vor identifica, în colecţiile 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) conţine structuri şi reguli orientate către lucrul cu obiecte, incluzând:
• 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;
• funcţii;
• un constructor de tip reuniune;
• o compunere recursivă a elementelor anterioare.
În proiectarea SGBD-OO se au în vedere următoarele:
Principiul 1. SGBD-OO utilizează funcţii care conţin metode şi proceduri
ale bazei de date, cu restricţia ca acestea să fie cât mai compacte, încapsulate,
ermetizate. Încapsularea funcţiilor îl ajută pe programatorul de aplicaţie să asocieze
funcţiile pe care şi le creează cu colecţiile utilizate.
Principiul 2. SGBD-OO şi în general SGBD–urile din generaţia a treia vor
prelua avantajele SGBD–urilor din generaţia a doua. În plus, se caută o modalitate
de acces la o înregistrare existentă într-o colecţie oarecare şi aceasta se poate
realiza prin utilizarea unui sistem de pointeri către identificatorii de obiecte.
Principiul 3. SGBD-OO trebuie să poată conecta şi limbaje din generaţia a patra.
Un SGBD-OO lucrează cu obiecte complexe, obiecte care se obţin prin
aplicarea de constructori asupra obiectelor simple.
Identitatea obiectelor. Orice obiect există independent de valorile atributelor
sale, ceea ce conduce la două relaţii posibile:
- identitatea a două obiecte, adică sunt unul şi acelaşi obiect;
- egalitatea a două obiecte, adică au aceeaşi valoare.
Arhitectura SGBD-OO cuprinde trei componente:
1. Gestionarul de obiecte (Object Manager) furnizează interfaţa dintre
procesele externe şi SGBD-OO.
2. Server-ul de obiecte (asigură gestiunea tranzacţiei şi gestiunea stocului de
obiecte).
3. Stocul rezident de obiecte.
Gestionarul de obiecte asigură implementarea completă a modelului de date-
obiecte pentru utilizatorul extern. Acest lucru include posibilitatea de a defini
structurile şi de a executa operaţiile specificate prin model. El primeşte cereri de
creare de definiri de clase, de modificare a definirilor de clase deja existente, de
manipulare a mesajelor generate de un program de aplicaţie în execuţie.
Server-ul de obiecte asigură refacerea, inserţia, ştergerea şi actualizarea
obiectelor în stocul rezident de obiecte. Un singur server poate manipula tranzacţii
transmise de la mai mulţi 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 regăsirea obiectelor.
Prelucrarea mesajelor. Gestionarul de obiecte asigură interfaţa dintre
procesele externe şi SGBD-OO. El primeşte mesaje pentru obiecte individuale,
97

Universitatea SPIRU HARET


realizează legături dinamice şi operaţii de verificare a tipului şi expediază cerinţa
externă pentru obiecte, către server-ul de obiecte.
Transmiterea de mesaje şi prelucrarea cererii pot fi reprezentate astfel:
- controlul sesiunii (menţinerea spaţiului local de lucru al utilizatorului
extern pentru operaţii efectuate asupra bazei de date);
- legătura dinamică (selectarea unei metode pentru un mesaj trimis unui
obiect în momentul execuţiei);
- crearea de noi obiecte sau instanţe de clasă trebuie iniţiată de gestionarul
de obiecte;
- transmiterea cerinţelor obiectului şi actualizarea acestuia;
- transmiterea cererii. Cererile pot fi translatate în planuri de execuţie în care
selecţia şi regăsirea 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 regăsite de
server-ul de obiecte din stocul rezident de obiecte.
Definirea şi modificarea schemei constă din următoarele 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 dicţionar de date.
2. Extensibilitatea schemei bazei de date. Aceasta include prelucrarea
declaraţiilor limbajului de baza de date, specificând crearea, mutarea sau
identificarea definirilor de clasă.
3. Redefinirea dinamică a clasei (evoluţiei schemei).
Gestionarul de obiecte trimite cerinţe pentru regăsirea şi actualizarea
definirilor de clasă, server-ului de obiecte. Gestiunea tranzacţiilor este asigurată de
server-ul de obiecte. Gestiunea stocului de obiecte se referă la menţinerea nivelului
fizic de organizare a bazei de date obiect (ODB) şi la asigurarea căilor de acces
necesare realizării accesului eficient la stocul de obiecte.
Funcţiile de bază ale stocului de date-obiect se caracterizează ca fiind:
1. Suport pentru rezidenţă, adică obiectele create şi adăugate trebuie reţinute
ş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. Facilităţi de arhivare şi asigurare de rezerve (dubluri).
Caracteristicile care asigură regăsirea şi actualizarea obiectelor stocate pot fi:
a) suport pentru căi de acces care este necesar pentru a asigura regăsirea şi
actualizarea eficientă a datelor stocate în baze de date mari. Aceasta include
indexarea obiectelor pentru a permite regăsirea eficientă a obiectelor individuale,
dar şi indexarea obiectelor prin valorile variabilelor de instanţă, pentru regăsirea
subseturilor de obiecte pentru satisfacerea cererilor;
b) tipuri de indecşi specializaţi pentru obiecte;
c) gruparea obiectelor în acelaşi 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 relaţionale (SGBDR) care este inclus în compunerea pachetului de
birotică Microsoft Office si care lucrează sub sistemul de operare Microsoft
Windows. Ca urmare, Microsoft Access foloseşte toate facilităţile 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 relaţional al datelor ce a
fost prezentat pe larg în paragraful 4.3 şi modelul orientat pe obiecte (unui obiect îi
sunt asociate evenimente şi proprietăţi). În comparaţie cu alte SGBDR, produsul
Microsoft Access dispune de toate componentele unei baze de date stocate într-un
fişier cu extensia MDB.
Sistemul de gestiune a bazelor de date relaţionale Microsoft Access conservă
avantajele sistemelor de gestiune, asigurând astfel interfaţa între baza de date şi
utilizator. SGBD Microsoft Access permite definirea, consultarea şi actualizarea
bazelor de date şi, în plus, partajarea datelor între mai mulţi utilizatori.
Se apreciază că mai mult de 20 de utilizatori pot lucra simultan la o bază de
date Access.
Pentru execuţia comenzilor prin intermediul interfeţei grafice a SGBD
Microsoft Access se asigură următoarele posibilităţi: meniuri, instrumente specifice
(unelte ca butoane, casete etc), casete de dialog, combinaţii 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 modalităţi de realizare a aplicaţiilor
pentru baze de date sub SGBD Microsoft Access: interfaţa standard Access,
interfaţa SQL, cu ajutorul VBA, interfeţele Access pentru comunicarea cu alte
SGBD-uri (Paradox, FoxPro, dBase etc.), interfeţele Access cu alte aplicaţii
Windows. Aplicaţiile î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 interogărilor asupra bazei de date. Aceste interogări sunt obţinute
prin intermediul limbajului de interogare structurată, SQL.
Produsul Microsoft Access este compatibil cu tehnologia ActiveX, care este
specifică aplicaţiilor de tipul client/server.

99

Universitatea SPIRU HARET


SGBD Microsoft Access 2000 reprezintă o variantă îmbunătăţită a versiunii
anterioare (Access 97) destinată bazelor de date relaţionale, sub sistemul de operare
pe 32 biţi Windows 2000 sau Windows NT. Îmbunătăţirile aduse faţă de versiunea
anterioară sunt, în esenţă, următoarele [18]:

• Caracteristici fundamentale:
a) performanţa care este legată, în primul rând, de superioritatea sistemului
de operare pe 32 de biţi (dar cu posibilitatea de a avea o memorie RAM de cel
puţin 32 MB);
b) lansarea în execuţie a sistemului presupune precizarea unui formular cu
deschidere automată şi opţiuni de afişare 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 către mai mulţi utilizatori) şi la staţiile
din reţea neconectate, înregistrările fiind sincronizate şi după încetarea lucrului;
e) DatabaseWizard (programul „vrăjitor” pentru baze de date) are
posibilitatea de a asigura crearea de tabele, interogări, formulare şi rapoarte pentru
mai multe baze de date obişnuite;
f) fereastra Database (baza de date) asigură afişarea detaliilor fiecărui obiect
(descrierea, data creării, data ultimei modificări).

• Posibilităţi de filtrare şi sortare:


a) proprietăţile 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ţă obişnuită;
c) filtrarea prin selecţie presupune că setul curent de înregistrări poate fi
limitat la înregistrările care corespund datelor selectate la momentul respectiv prin
executarea unui singur clic de mouse.

• Tabele:
a) AutoNumber (Număr cu incrementare automată) înlocuieşte tipul Counter
(Numărător), facilitând astfel utilizarea valorilor aleatoare şi tipul ReplicationID
(Identificator multiplicare), necesare bazelor de date copie;
b) controlul modular de afişare permite definirea pentru fiecare câmp a tipului
controlului prestabilit (casetă de text, casetă combinată, casetă de validare ş.a.);
c) LookupWizard (programul „vrăjitor” de căutare) este utilizat în special
pentru a introduce proprietăţile corespunzătoare câmpurilor utilizate în calitate de
chei externe (străine).

• 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) instanţele oferă posibilitatea creării şi deschiderii simultane a mai multor
variante ale aceluiaşi 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) proprietăţile datelor AllowAdditions (permit adăugările) şi AllowDeletions
(permit ştergerile), asigură posibilităţile de control asupra modului de utilizare a
unui formular.

• Controale:
a) apariţia unui nou tip de eveniment, şi anume Change (schimbă), care
permite operaţii de căutare între apăsările tastelor;
b) apariţia unui text cu explicaţii de utilizare a instrumentelor, care presupune
definirea unui text cu explicaţii (ToolTip) pentru toate controalele;
c) casetele combinate sunt mult mai rapide decât în versiunile anterioare,
îndeosebi în manipularea unui volum foarte mare de date;
d) posibilitatea metamorfozării, care presupune schimbarea controalelor dintr-
un tip într-altul, ca de exemplu schimbarea unei casete de text într-o casetă
combinată;
e) Memos (câmpurile memo) presupun asocierea automată a barei de derulare
verticală şi cu diverse opţiuni de tipul EnterKeyBehavior (introducere a modului de
comportare a tastei).

• Rapoarte:
a) apariţia posibilităţii asocierii unui raport filtrului curent dintr-un formular, prin
utilizarea proprietăţilor Filter şi FilterOn;
b) NoData reprezintă un eveniment nou folosit pentru detectarea rapoartelor
fără date;
c) afişările anticipate asigură afişarea simultană a mami multor pagini şi, de
asemenea, modificări ale opţiunilor Zoom. Afişările anticipate sunt mult mai
rapide, datorită faptului că evenimentele sunt declanşate o singură dată.

• Visual Basic pentru aplicaţii (VBA):


a) interfaţa presupune fereastra Watch (supraveghere), posibilităţi 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
rândul lor alte tipuri (standard sau definite de utilizator) şi, de asemenea, ca datele
returnate prin funcţii să fie de aceste tipuri;
c) argumentele opţionale permit crearea de funcţii care utilizează un număr
variabil de argumente, prin folosirea opţiunii ParamArray (tablou de parametri);
d) utilizarea funcţiilor în aşa fel încât funcţiile pot fi folosite fără a fi
desemnate, astfel că se elimină necesitatea apariţiei variabilelor false;
e) prin acceptarea valorilor nule, funcţia Nz() transformă o valoare nulă în
orice valoare specificată de utilizator;
101

Universitatea SPIRU HARET


f) VBA este mult mai puternic decât AccessBasic, datorită posibilităţilor de
compilare condiţionată, operaţiilor OLE (Object Linking and Embedding) extinse şi
utilizării noilor tipuri de date (ca, de exemplu, boolean, octet, dată calendaristică).
Faţă de versiunea Microsoft Access 2000, versiunea Microsoft Access 2002
(XP) prezintă următoarele îmbunătăţiri:
• un nou format de fişiere, cu menţinerea formatului Microsoft Access 2000,
din motive de compatibilitate la lucrul în reţeaua în care se găsesc versiuni diferite
ale Microsoft Office;
• panouri pentru sarcini (task-uri) în format nou care apar în partea dreaptă a
aplicaţiei (New File, Office Clipboard, Clip Gallery);
• posibilitatea de a anula şi reface mai multe acţiuni atunci când 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 sistem-
client (cu salvarea locală a datelor);
• adăugarea dictării 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ă următoarele caracteristici noi [26]:
• protecţia împortiva macroinstrucţiunilor realizate în Visual Basic pentru
aplicaţii, VBA (Visual Basic for Applications); în acest scop, se stabileşte un nivel
de securitate, astfel încât se cere o confirmare ori de câte ori se deschide o bază de
date ce este posibil să conţină macroinstrucţiuni în cod VBA;
• vizualizarea datelor cu privire la dependenţa obiectelor; prin vizualizarea
unei liste de obiecte ce sunt dependente unele de altele se creează posibilitatea de a
menţine suplimentar o bază de date şi de a elimina astfel o posibilă sursă de erori;
• introducerea opţiunilor de corectare automată; în acest scop, butonul
AutoCorrectOptions (opţiuni de corectare automată) apare afişat lângă textul ce a
fost supus corecturii automate; există şi posibilitatea de dezactivare a butonului
AutoCorrectOptions prin intermediul unui click pe buton urmat de selecţia
corespunzătoare;
• blocarea funcţiilor ce se pot prezenta ca potenţial nesigure; este eliminată
astfel posibilitatea de folosire a acestora în expresii ce utilizează modul îmbunătăţit
Microsoft Jet Expression Service;
• opţiune de actualizare a proprietăţilor pentru toate controalele ce sunt
asociate unui câmp; în modul de vizualizare a ferestrei de proiectare, Table
Design, este afişată o opţiune de actualizare a proprietăţii pentru controale asociate
câmpului;
• Etichete inteligente (Smart Tags), adică acele etichete asociate oricărui
câmp din tabele, interogări, formulare, rapoarte sau paginilor de acces la datele din
baza de date, ce permit integrarea directă în SGBD Access a acţiunilor executate, de
102

Universitatea SPIRU HARET


regulă, în alte programe de aplicaţie; prin intermediul butonului SmartTagActions
care apare afişat pe ecran pot fi executate acţiunile dorite. Butonul
AutoCorrectOptions prezentat mai sus reprezintă o etichetă inteligentă;
• Suport pentru temele Microsoft Windows XP; când se selectează o altă
temă decât 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 îmbunătăţită î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 fişierelor
XML similare;
• Posibilităţi extinse de detectare a erorilor din formulare şi din rapoarte;
există o funcţie 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 fişiere-
document Office prin scriere de mână pe dispozitive Tablet PC);
• Asigurarea copiilor de siguranţă pentru proiecte sau baze de date;
• Realizarea importului, exportului şi legării 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 funcţii îmbunătăţite pentru fonturi în modurile de
vizualizare SQL;
• Includerea unui sistem de asistenţă funcţie de context în modul de
vizualizare SQL al unei interogări dintr-o bază de date Access.

5.2. Cunoaşterea mediului de lucru Microsoft Access

5.2.1. Definirea componentelor principale ale SGBD Microsoft Access


SGBD Microsoft Access 2003 (XP, 2000) asigură posibilitatea manipulării
datelor în conformitate cu cerinţele 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 obţinerea facilă a rezultatelor tipărite.
O bază de date Microsoft Access reprezintă o colecţie de obiecte de tipul:
tabele, formulare, interogări, rapoarte, pagini, macroinstrucţiuni şi module.
Obiectele Microsoft Access sunt percepute prin „ceea ce fac”[42],
comportamentul lor mascând elemente de structură internă. În momentul în care
obiectul a fost creat, el poate fi utilizat şi în alte aplicaţii, compuse din obiecte care
interacţionează 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 schimbările de stare pe care acestea le declanşează
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ă câmp (field), iar fiecare rând al tabelului constituie o înregistrare
(record). Înregistrările unui tabel respectă aceeaşi structură de câmpuri. La crearea
unui tabel nou se solicită definirea câmpurilor, atribuindu-se fiecăruia o denumire
unică şi indicându-i SGBD Access tipul de date corespunzător. Ulterior se pot
adăuga şi alte câmpuri, cu condiţia reproiectării eventualelor formulare şi rapoarte
care folosesc datele tabelului în structura anterioară acestei operaţii.
Interogarile (Queries) sunt obiecte Access ce reprezintă întrebări pe care
utilizatorul le formulează în legătură cu numite informaţii din baza de date. În
momentul în care utilizatorul porneşte la construcţia unei interogări, acesta trebuie
să aibă deja o viziune de ansamblu asupra datelor pe care doreşte să le regăsească,
şi anume: ce câmpuri 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
interogări în SGBD Access reprezintă un proces simplu şi rapid de aşezare a
tabelelor şi a câmpurilor 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 dispoziţia utilizatorilor un produs performant de regăsire a datelor
într-o bază de date. Succesul limbajului QBE a fost atât de mare, încât 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 (când formularul este asociat unui tabel), precum şi vizualizării
datelor datelor din baza de date (când formularul este asociat unei interogări). Astfel,
cu ajutorul formularelor se pot efectua câteva operaţii tipice în baza de date, şi anume
operaţii de adăugare, 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 căruia utilizatorul are posibilitatea de a prezenta date
selectate în rezumat, inclusiv în format pentru tipărire. Prin intermediul rapoartelor
utilizatorul are un control complet asupra dimensiunilor şi modului de prezentare a
datelor de ieşire. De asemenea, rapoartele permit prezentarea unor informaţii de
sinteză rezultate ca urmare a prelucrărilor executate în baza de date. Rapoartele se
diferenţiază de formulare prin faptul că în timp ce formularul este proiectat pentru
a avea un acces aleator la date, el bazându-se pe un set dinamic al datelor,
rapoartele nu modifică niciodată datele din baza de date, parcurgerea înregistrărilor
realizându-se în mod secvenţial (SGBD Microsoft Access utilizează pentru
obţinerea 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 prelucrării integrate a datelor care circulă în Internet sub forma
unei aplicaţii globale a datelor, inclusiv pentru funcţia de partajare a datelor.

104

Universitatea SPIRU HARET


Macroinstrucţiunile sau macro-urile (Macros) reprezintă obiecte Access care
definesc ansamble de comenzi pe care sistemul Microsoft Access le execută
automat la apariţia unor evenimente. Macro-urile pot fi ataşate unui formular,
raport sau control în scopul automatizării unor operaţii 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 aplicaţii, VBA (Visual Basic for Applications), destinate extinderii
posibilităţilor funcţionale 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 opţiunea Task Pane de unde se alege panoul de lucru dorit cu clic
pe săgeata 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… serveşte pentru căutarea unui nume sau a unei locaţii de
fişier. De asemenea, Search for… poate fi utilă pentru căutarea unei proprietăţi într-
o 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 opţiunea Open din meniul File sau cu butonul Open de pe bara
cu instrumente, urmată de numele bazei de date.
Crearea unui nou fişier se face cu opţiunea Task Pane (fig.5.1). Pentru o bază
de date nouă se alege opţiunea Blank database… din meniul New (Fig.5.2).

Fig.5.2. Alegerea opţiunii 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 afişează obiectele care formează baza de date
(fig.5.3). Fereastra Database pune la dispoziţie utilizatorului o metodă simplă de
gestionare a obiectelor care compun baza de date. În fereastra Database sunt
afişate, în partea stângă 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), afişate în
partea de sus a ferestrei Database, sunt utilizate pentru crearea, modificarea şi
respectiv afişarea obiectului curent.
Obiectele create vor fi afişate în lista cu obiecte situată în mijlocul ferestrei
Database. În interiorul acestei liste se mai află trei opţiuni rapide de creare a
obiectelor.
Obiectele gestionate cu SGBD Microsoft Access, împreună cu elementele de
control care le sunt asociate, conţin proprietăţi şi declanşează apariţia unor tipuri
de evenimente.

106

Universitatea SPIRU HARET


Fig.5.3. Fereastra Database

Pentru modificarea proprietăţilor unui obiect, se selectează din partea stângă


a ferestrei Database eticheta corespunzătoare tipului de obiect. Această operaţie
are ca efect afişarea în ordine alfabetică (în lista cu obiecte) a tuturor obiectelor de
acelaşi tip.
Se execută un clic cu butonul din partea dreaptă a mouse-ului pe obiectul a
cărui proprietate se doreşte a se modifica, iar din meniul rapid care apare se pot
efectua următoarele:
– deschiderea obiectului respectiv pentru a consulta datele conţinute în el;
– deschiderea obiectului în modul Design pentru a efectua modificări de
structură;
– salvarea obiectului respectiv sub un alt nume;
– vizualizarea conţinutului obiectului înainte de a-l trimite pentru tipărire;
– realizarea unei copii a conţinutului 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 când este nevoie de un tabel similar cu unul
deja creat. SGBD Access cere confirmarea copierii tabelului cu toate datele pe care
le conţine, 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 opţiunii Open din meniul rapid, are ca
efect o afişare a obiectului selectat pentru o utilizare normală.
Butonul Design (proiectare), sau alegerea opţiunii Design din meniul rapid,
asigură ca obiectul selectat să fie deschis în modul de afişare Design în vederea
efectuării modificărilor necesare tipului de aplicaţie 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 obţine informaţii de
ajutor prin intermediul meniului Help de pe bara cu instrumente. Prin introducerea
unui sau mai multor cuvinte-cheie în caseta Search for… se obţin explicaţii
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ă câmp (field), iar
fiecare rând al tabelului constituie o înregistrare (record). Înregistrările unui tabel
respectă structura de câmpuri a tabelului. La crearea unui tabel nou se solicită
definirea câmpurilor, atribuindu-se fiecăruia o denumire unică şi indicându-i
SGBD Microsoft Access tipul de date corespunzător. Ulterior, se pot adăuga şi alte
câmpuri, cu condiţia reproiectării eventualelor formulare şi rapoarte care folosesc
datele tabelului în structura anterioară acestei operaţii.
Pentru crearea unui tabel, se poate utiliza una dintre următoarele 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 opţiunii Create table by using wizard
(program „vrăjitor” dedicat tabelelor) asigură asistarea pe întregul parcurs de
construcţie a unui tabel, definind prin intermediul unui dialog cu utilizatorul
numele şi tipul de câmpuri 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 opţiuni disponibile (fig.5.4):
1. Datasheet View – permite crearea unui tabel în modul Datasheet (foaie de
date), având 10 câmpuri (coloane) şi 21 de înregistrări (rânduri) libere, pregătit
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 opţiunii Design View presupune parcurgerea a
trei paşi pentru definirea unui câmp în structura unui tabel: stabilirea numelui
câmpului, stabilirea tipului de dată asociată acelui câmp şi stabilirea proprietăţilor
acestuia.
Când se alege această modalitate de construcţie a unui tabel, pe ecranul
monitorului este afişată 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 câmpurilor), alcătuită dintr-un tabel
format din trei coloane, şi o a doua zonă aflată în partea de jos a ferestrei, zonă în
care se stabilesc proprietăţile câmpului.
109

Universitatea SPIRU HARET


Zona de declarare a câmpurilor este formată dintr-un tabel compus din trei
coloane:
• Coloana Field Name – în această coloană se declară numele câmpurilor.
SGBD Microsoft Access permite folosirea unor nume de câmpuri de maxim 64 de
caractere, inclusiv spaţiile. În construcţia numelui unui câmp se pot folosi litere
mari şi mici, avându-se în vedere ca aceste nume să nu prezinte aceeaşi denumire
cu numele utilizate ca proprietăţi de SGBD Microsoft Access.
• Coloana Data Type – indică ce tip de date vor fi memorate în acel câmp şi
câtă memorie se va aloca pentru acel câmp.
• Coloana Description (Descriere) – în această coloană se poate scrie de
către utilizator un text explicativ cu scopul de a detalia destinaţia câmpului.
Tipurile de date asociate câmpurilor definesc tipurile de câmpuri şi sunt
următoarele:
1. Text
Un câmp text are, implicit, 50 de caractere, dar se poate opta pentru orice
lungime cuprinsă între 1 şi 255.
2. Memo
Câmpurile memo constau numai din text şi au maxim 255 de caractere, în
acestea putând fi incluse şi secvenţele de salt la început de rând/salt la rând nou.
Aceste câmpuri sunt utilizate pentru a scrie comentarii.
3. Număr (Number)
Tipul Number include mai multe subtipuri de date, care diferă prin modul de
stocare şi viteza de răspuns, şi anume:
• subtipul Byte (octet) care acceptă numai valori întregi pozitive (fără 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 fracţionare cu maxim şapte cifre
semnificative;
• subtipul Double (numere reale reprezentate în virgulă mobilă dublă
precizie) acoperă domeniul numerelor fracţionare cu maxim 14 cifre semnificative;
• subtipul ReplicationID (identificator duplicare sau identificator
multiplicare); această valoare este reprezentată pe 16 octeţi şi a fost creată cu
scopul de a asigura un identificator unic global pentru bazele de date în care trebuie
realizate sincronizările 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 octeţi, ora fiind reprezentată ca o fracţiune
dintr-o zi.
Sistemul introduce automat data curentă prin proprietatea Default Value
(valoare implicită) a câmpului = Date(). Se poate folosi opţiunea = Now() pentru a
stoca ora şi data. Proprietatea Format trebuie să fie stabilită pentru toate câmpurile
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ă până la sutimi de cent. Din punct de vedere al reprezentării interne,
tipul valută este un număr în virgulă fixă.
6. Număr cu incrementare automată (AutoNumber)
Datele de acest tip au proprietatea că sunt incrementate automat
(AutoNumber) şi pot primi valori întregi lungi secvenţiale. Tipul este numit
Counter (numărător).
7. Tipul Da/Nu (Yes/No)
Datele de acest tip sunt booleene. Ca urmare, primesc valorile True/False
(adevărat/fals) şi sunt afişate într-una din formele True/False, respectiv On/Off.
8. Obiect OLE
Tipul de câmp OLE (Object Linking and Embedding) este destinat păstrării
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 proprietăţile câmpurilor este formată din
următoarele opţiuni:
1. Proprietatea Field Size (dimensiunea câmpului) depinde de tipul câmpului
(Text, Number şi Autonumber). Această proprietate stabileşte dimensiunea maximă
a datelor care pot fi stocate în tipul de câmp respectiv.
2. Proprietatea Format
Opţiunea stabilită pentru această proprietate afectează modul în care SGBD
Microsoft Access afişează datele. Conţinutul ş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 conţine
informaţii despre modul de afişare a valorilor pozitive, negative sau nule. Exemple:
- $#,##0.00 - afişează numere pozitive în format valută;
- ($#,#00)[Red] – afişează numerele negative cu roşu;
- “ “ – valorile nule sunt suprimate;
- “Unknown”[Green] - cuvântul “unknown” scris în verde indică o
valoare nulă.
3. Proprietatea Input Mask (masca de intrare)
Prin intermediul acestei proprietăţi este controlată introducerea datelor în
cadrul câmpului. Masca de intrare determină, pentru fiecare caracter al câmpului,
dacă este opţional 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
număr cu valoarea absolută mai mare decât 1000 şi mai mic decât 1.000.000. Este
nevoie de cel puţin o zecimală, iar caracterul # permite introducerea caracterelor
negative. Masca de intrare Password determină afişarea tuturor caracterelor dintr-
un câmp cu asteriscuri.
4. Proprietatea Caption
Valoarea proprietăţii Caption (titlu) este utilizată pentru a afişa titlurile
numelor de câmp în modul de afişare Datasheet. Dacă proprietatea Caption este
necompletată, titlul este stabilit de numele câmpului.
111

Universitatea SPIRU HARET


5.Proprietăţile Validation Rule/Validation Text
Proprietatea Validation Rule (regula de validare) se utilizează pentru defini
anumite cerinţe pe care trebuie să le îndeplinească datele introduse într-un câmp
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 proprietătii Validation Rule are scopul de a reduce
numărul de erori care pot apare în momentul introducerii datelor de către utilizator.
6.Proprietatea Required
Proprietatea Required (necesară) se utilizează în momentul în care se doreşte
introducerea în câmpul respectiv a unei valori în mod expres, deci valoarea câmpului
respectiv nu poate fi NULL (vidă).
7. Proprietatea Indexed
Indecşii asigură mecanismul de regăsire rapidă a datelor. Un câmp se
indexează în următoarele condiţii:
– câmpul cuprinde valori cu gamă largă de variaţie;
– câmpul va fi folosit în mod semnificativ în criteriile de selecţie sau sortare.
Indexul cheie primară (Primary Key) prevede câte un pointer (indicator) unic
spre fiecare înregistrare şi reprezintă ordinea de afişare prestabilită pentru tabele.
Celelalte câmpuri pot fi indexate cu opţiunea No Duplicates (fără duplicate),
respectiv Duplicates OK (sunt permise duplicatele). Un index desemnat cu
opţiunea Duplicates OK nu va prezenta aceleaşi performanţe ca un index unic.
Există şi posibilitatea creării de indecşi pe baza mai multor câmpuri, utilizând
fereastra Indexes (din meniul View).
Atunci când utilizatorul a stabilit denumirea câmpurilor, tipul de dată ce poate
fi acceptat în acel câmp precum şi proprietăţile aferente câmpurilor respective, se
închide fereastra de dialog Table. După aceasta, SGBD Access afişează fereastra de
dialog Save în interiorul căreia utilizatorul denumeşte tabelul creat.
Metoda de creare a tabelelor cu ajutorul opţiunii Table Wizard reprezintă
cea mai rapidă metodă de creare a unui tabel. Alegerea opţiunii Table Wizard din
fereastra New Table are ca rezultat afişarea pe ecranul monitorului a ferestrei de
dialog Table Wizard.
Această fereastră, prezentată în figura 5.6, este compusă din:
• un grup de două opţiuni Business şi Personal, care oferă posibilitatea de a
alege categoria de tabele dorite;
• o listă Sample Tables, care conţine exemple de tabele corespunzătoare
opţiunii alese;
• o listă Sample Fields, care conţine exemple de câmpuri corespunzătoare
tipului de tabel ales;
• patru butoane pentru activarea câmpurilor (este posibil ca în tabelul final
să se transfere toate câmpurile disponibile din lista Sample Fields sau să se
transfere numai câmpurile necesare, unu câte unu);
• o casetă Fields in my new table, care se vizualizează numele câmpurilor
selectate de utilizator;

112

Universitatea SPIRU HARET


• un buton Rename Field cu ajutorul căruia utilizatorul poate modifica
denumirea câmpului.

Fig.5.6. Fereastra Table Wizard


pentru crearea tabelelor cu ajutorul ghidului

După ce utilizatorul a ales tipul de tabel şi câmpurile care vor face parte din
tabelul respectiv, acesta poate să treacă mai departe executând 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 lăsa SGBD Microsoft Access să
stabilească singur numele tabelului şi cheia primară.

Modul de lucru cu înregistrările


La deschiderea unui tabel, pe ecran apar informaţii similare cu cele prezente
într-o foaie de calcul. Acest mod de prezentare în SGBD Microsoft Access este
denumit Datasheet (foaie de calcul). Denumirea câmpurilor apare deasupra fiecărei
coloane. Pentru a selecta toată coloana se execută clic pe numele unui câmp.
Fiecare înregistrare are un buton denumit Record Selector (selectorul înregistrării),
dispus în stânga sa. Înregistrarea selectată în mod curent este marcată cu un
triunghi în acest buton. Ultimul rând al unei foi de gardă este un rând liber, el fiind
marcat cu un asterisc în butonul Record Selector. Acest rând 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 evidenţia faptul că
modificările realizate în cursul editării nu au fost salvate. Când apare simbolul 0,
înseamnă că în regimul de lucru multiutilizator o procedură sau un utilizator a
blocat înregistrarea, nepermiţând editarea ei (fig.5.7).

113

Universitatea SPIRU HARET


Fig.5.7. Vizualizarea datelor din tabelul Materiale

Când se închide foaia de date sau se trece la o altă înregistrare, modificările


făcute asupra unei înregistrări sunt automat salvate. În cazul în care se doreşte
salvarea unei înregistrări imediat după ce a fost modificată (fără a trece automat la
o alta), se tastează concomitent SHIFT+ENTER sau se selectează opţiunea Save
Record din meniul Records (înregistrări).
Dacă un tabel are mai multe înregistrări, butoanele de navigare printre
acestea (Record Navigation) aflate la capătul din stânga al barei de derulare
orizontale sunt foarte utile şi ele sunt următoarele:
- First Record (prima înregistrare);
- Previous Record (înregistrarea anterioară);
- Next Record (înregistrarea următoare);
- Last Record (ultima înregistrare);
- New Record (înregistrare nouă).
Între aceste butoane, SGBD Microsoft Access afişează numărul înregistrării
curente, care reflectă doar ordinea curentă de afişare, neputând fi utilizat pentru
identificarea unei anumite înregistrări, întrucât se schimbă atunci când înregistrările
sunt adăugate, şterse, filtrate sau sortate.

5.3.2. Realizarea relaţiilor între tabele


Atunci când se creează tabele într-o bază de date relaţională, acestea prezintă
o existenţă de sine stătătoare. Pentru a lega tabelele între ele, pentru a crea o
relaţie, se utilizează fereastra Relationships, fereastră pe care se poate activa fie din
bara de meniuri standard, fie din meniul Tools. Pentru a defini o relaţie, se adaugă
114

Universitatea SPIRU HARET


în fereastra Relatioships tabelele între care se doreşte să existe legături şi se trage
dintr-un tabel câmpul care trebuie legat spre câmpul corespunzător din celălalt
tabel. Ca regulă generală, se va lega un câmp care reprezintă o cheie primară din
tabelul-părinte cu un câmp care reprezintă cheie externă (străină) în tabelul-fiu.
Cheia externă este un atribut sau o mulţime de atribute care are aceleaşi
valori cu un atribut sau un grup de atribute aparţinând tabelului-părinte, acest
atribut sau grup de atribute jucând rolul de cheie primară în tabelul-părinte.
Pentru validarea relaţiei între cele două tabele, cheia externă trebuie să fie de
acelaşi tip şi să aibă aceeaşi dimensiune cu a cheii primare.
Pentru exemplificare (fig.5.8), se ia în considerare baza de date
CONSTRUCT pentru evidenţa materialelor de construcţii, care conţine tabelele
Furnizori, Facturi, Materiale, Depozite şi Gestionari.

Fig.5.8. Tabelele bazei de date CONSTRUCT

Tabelele bazei de date CONSTRUCT au următoarele 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,
selectând obiectul Tables din fereastra Database, executând un clic pe butonul New
şi alegând, pentru definirea tabelelor, modul de lucru cu fereastra de proiectare,
Design View.
După stabilirea structurii fiecărui tabel şi a proprietăţilor aferente fiecărui
câmp în parte (a tipului de date pe care să îl accepte câmpul respectiv, a
dimensiunii câmpului, a regulilor de validare pentru anumite câmpuri etc.), se
stabileşte, pentru fiecare tabel în parte, care câmp (atribut) va reprezenta cheia
115

Universitatea SPIRU HARET


primară. În exemplul considerat, denumirile de atribute (câmpuri) subliniate
reprezintă cheile primare pentru tabelele respective.
În continuare, se adaugă în fereastra Relationships cele cinci tabele şi se
creează relaţiile dintre acestea prin intermediul câmpurilor chei primare (în
tabelele-părinte) – chei externe (în tabelele-fiu). Ca mod de realizare a relaţiilor, în
tabelul Furnizori se execută un clic pe cheia primară Cod_f şi se trage către tabelul
Materiale unde în dreptul câmpului Cod_f (cheia externă) se eliberează butonul
mouse-ului. Cheia primară se recunoaşte după caracterele bolduite. Imediat după
această operaţie, se afişează fereastra de editare a relaţiei (Edit Relationship), aşa
cum se prezintă în fig.5.9.

Fig.5.9. Fereastra de editare a relaţiei (EditRelationship)


dintre tabelele Furnizori şi Materiale

În fereastra de editare a relaţiei dintre tabelele Furnizori şi Materiale în


tabelul din stânga sus sunt prezentate cele două tabele prin intermediul cheilor de
legătură cod_f. Se forţează integritatea referenţială prin introducerea bifei în caseta
din faţa Enforce Referential Integrity apasă apoi butonul Create. Legătura stabilită
între tabele este marcată printr-o linie, care se numeşte linie de corelare. Tipul
relaţiei stabilite este de unu-la-mulţi (One-To-Many), aspect reflectat prin scrierea
pe linia de corelare ce defineşte relaţia a cifrei 1 (pentru One) şi a simbolului
infinit, ∞ (pentru Many). Aceste numere şi simboluri indică cardinalitatea relaţiei.
În practică, în procesul de modelare a bazei de date, cardinalitatea se evidenţiază
printr-un cuplu de numere întregi de forma (x,y), în care x reprezintă cardinalitatea
minimală (numărul minim de entităţi care participă la realizarea asocierii), iar y
reprezintă cardinalitatea maximală (numărul maxim de entităţi 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
decât de un singur furnizor. Deci, în procesul de modelare a bazei de date, relaţia
care se stabileşte între două tabele trebuie evidenţiată în dublu sens, conform figurii
5.10.
În acelaşi mod se procedează şi cu relaţiile dintre celelalte tabele componente
ale bazei de date CONSTRUCT. În final, se obţine schema relaţională din fig.5.11.

Cod_f Cod_Mat
Den_f 1:1 1:m Den_mat
Adresa_f Cod_f
Telefon_f Livrează Cod_dep
Banca_f Nr_fact
Cont_f
Pagina Web

Fig.5.10. Relaţiile dintre tabelele Furnizori şi Materiale

Fig.5.11. Editarea relaţiilor (Relationship) dintre tabelele bazei de date CONSTRUCT

Revenind la fereastra de editare a relaţiei din fig.5.9, în partea de jos a


ferestrei Edit Relationship există trei casete de validare: Enforce Referential
Integrity (Întărirea integrităţii referenţiale), Cascade Update Related Fields
(Reactualizarea în cascadă a câmpurilor legate) şi Cascade Delete Related Records
(Ştergerea în cascadă a înregistrărilor legate). Validarea acestor casete va avea
următoarele semnificaţii:
• validarea casetei Enforce Referential Integrity – atunci când se va întări
integritatea referenţială într-o relaţie care leagă două tabele va exista siguranţa că

117

Universitatea SPIRU HARET


înregistrările aflate în tabelele vor fi valabile (vor respecta regulile de integritate
referenţială). Dacă se încalcă vreuna dintre regulile asociate tabelelor, aflate în
relaţie, SGBD Microsoft Access va afişa un mesaj şi nu va permite modificarea
datelor.
Restricţiile 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, păstrându-se în acelaşi
timp integritatea referenţială;
• validarea casetei Cascade Update Related Fields – atunci când se
selectează această casetă, modificarea unei valori a unei chei primare va duce
automat la modificarea valorilor din câmpurile asociate;
• validarea casetei Cascade Delete Related Records - atunci când se va
selecta această casetă, ştergerea unei valori a cheii primare din tabelul-părinte va
avea ca efect ştergerea tuturor valorilor din câmpurile asociate aparţinând
tabelului-fiu.

5.4. Interogarea
Interogarea (Query) este un obiect Access ce reprezintă o întrebare pe care
utilizatorul o formulează cu privire la numite informaţii din baza de date. În
momentul în care utilizatorul porneşte la construcţia unei interogări, acesta trebuie
să aibă deja o viziune de ansamblu asupra datelor pe care doreşte să le regăsească,
şi anume: ce câmpuri 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
interogări în Microsoft Access reprezintă un proces simplu şi rapid de aşezare a
tabelelor şi a câmpurilor necesare pe o grilă QBE (Query by Example).
Clasificarea interogărilor
Cele mai utilizate interogări sunt interogările denumite interogări de
selecţie. O interogare permite:
- vizualizarea sau modificarea datelor;
- selectarea acelor înregistrări care satisfac criteriile impuse de utilizator;
- limitarea unei proceduri la câmpurile care sunt relevante;
- sortarea înregistrărilor într-o ordine specificată.
Atunci când este executată o interogare de selecţie, rezultatul va fi o
mulţime de înregistrări aparţinând unui tabel sau mai multor tabele. Această
mulţime poartă numele de dynaset (setul dinamic rezultat al interogării). Un
dynaset reprezintă o vedere dinamică asupra datelor care sunt subiectul interogări
respective. Aceasta înseamnă că atunci când datele din tabelele sursă ale interogării
suferă modificări, automat rezultatul interogării va fi şi el modificat [18].
O a doua mare categorie de interogări este reprezentată de interogările de
acţiune. Aceste interogări au rolul de a modifica anumite date, în cadrul unei
singure operaţii. Aceste modificări cuprind capacitatea de a şterge, de a adăuga, a
modifica anumite valori dintr-un tabel, ca şi de a crea un tabel nou. Aceste
interogări de acţiune sunt: interogările pentru ştergere (Delete Query), interogările
pentru adăugare (Append Query), interogările pentru reactualizare (Update
Query) şi interogările al căror rezultat este crearea unui tabel nou în baza de date
(Make-Table Query).
118

Universitatea SPIRU HARET


Crearea interogărilor
Atunci când se doreşte 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 afişând caseta de dialog New Query.
Aşa cum se observă din figura 5.12, fereastra New Query permite cinci
moduri de realizare a unei interogări şi anume:
1. Design View – alegând această opţiune de creare a unei interogări,
utilizatorul va porni de la zero, cu un obiect blanc în definirea interogării;
2. Simple Query Wizard – alegând această opţiune, utilizatorul va fi ajutat,
pe tot parcursul creării unei interogări de selecţie, de ghidul de lucru al SGBD de
tip Wizard, care adresează întrebări referitoare la tabelele şi câmpurile care se
doresc a fi selectate, iar pe baza răspunsurilor obţinute, se va construi interogarea;
3. Crosstab Query Wizard – această opţiune funcţionează similar cu opţiunea
Simple Query Wizard, doar că de această dată wizard-ul va construi o interogare
prin încrucişarea tabelelor;
4. Find Duplicates Query Wizard – wizard va construi o interogare care va
regăsi înregistrări duble;
5. Find Unmatched Query Wizard – funcţionează identic ca şi opţiunea Find
Duplicates Query Wizard, dar de această dată rezultatul va fi construirea unei
interogări care va găsi înregistrările fără corespondent în cadrul tabelelor.

Fig.5.12. Fereastra de dialog New Query

Construirea interogărilor de selecţie


Interogările de selecţie reprezintă cel mai des întâlnit tip de interogare. Cu
ajutorul acestui tip de interogare se pot regăsi date din unul sau mai multe tabele, se
pot grupa datele după anumite criterii sau se pot efectua anumite calcule.
Opţiunea Design View deschide o fereastră Select Query (Interogare de
selecţie), 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 înregistrărilor, pe care le doreşte să le vizualizeze, prin folosirea mouse-
ului pentru a selecta, trage sau manipula obiectele din cadrul ferestrei.
Fereastra Select Query este alcătuită din două secţiuni: secţiunea pentru
tabele şi o secţiune sub formă de grilă pentru specificarea câmpurilor de vizualizat
şi a unor condiţi de selectare a înregistrărilor (fig.5.13).
Pentru construcţia interogării se execută dublu-clic pe denumirile tabelelor
care vor furniza datele necesare pentru construirea interogării. Fereastra Show
Tables are o etichetă pentru selectarea interogărilor şi a tabelelor.
De asemenea, se poate crea o interogare stivă, aducând înregistrări dintr-o
altă interogare (trăgâdu-le cu mouse-ul). După ce tabelele au fost selectate,
fereastra Show Tables este închisă. Pentru a adăuga un alt tabel ulterior, acesta se
poate selecta cu mouse-ul în cadrul interogării din fereastra Database, sau se alege
opţiunea Show Tables din meniul Query, după care se va selecta tabelul
suplimentar. Astfel, câmpurile implicate în interogare sunt adăugate grilei de ieşire.
Pentru a adăuga un câmp dintr-un tabel, se execută un dublu-clic pe el şi se
trage pe grilă. Acelaşi efect îl are şi selectarea lui din lista derulantă a rândului
Field. Pentru a selecta mai multe câmpuri în stilul Windows, se procedează în
modul următor: Shift+Clic pentru a selecta o secvenţă continuă de câmpuri sau
Ctrl+Clic pentru a selecta câmpuri individuale.
Pentru a selecta toate câmpurile dintr-un tabel, se execută dublu-clic pe
numele tabelului. Selectarea unui câmp în grila interogării se face executând clic pe
bara mică de culoare gri aflată în imediata apropiere, deasupra numelui câmpului.
Câmpul poate fi şters, acţionând tasta Del sau câmpul se poate deplasa cu ajutorul
mouse-ului către o nouă poziţie.
Dacă se lucrează cu mai multe tabele, fereastra Select Query afişează liniile
de legătură între câmpurile în care au fost definite relaţiile. Asocierile (Joins)
corespunzătoare definesc modul în care interogarea selectează înregistrările.
Deoarece câmpurile cheie primară şi cheie secundară au în mod frecvent acelaşi
nume, SGBD Microsoft Access prezintă în cadrul grilei numele tabelului imediat
sub numele câmpului.
Specificarea criteriilor
Criteriile reprezintă restricţiile care se stabilesc într-o interogare, pentru a
identifica anumite înregistrări din baza de date. Aceasta înseamnă că din întregul
set dinamic rezultat al unei interogări se vor selecta pentru afişare doar acele
înregistrări care corespund intereselor utilizatorului. Pentru a obţine acest lucru
trebuie să se furnizeze SGBD Microsoft Access condiţiile de selectare.
Sub rândul Field, grila de interogare conţine un rând Sort. Selectarea
opţiunii Ascending (Ascendent) sub numele unui câmp determină sortarea
interogării în ordine crescătoare. Opţiunea Descending (Descendent) execută
sortarea elementelor în mod descrescător. Dacă este necesară sortarea cu mai multe
câmpuri, SGBD Microsoft Access sortează secvenţial de la stânga la dreapta. În
cazul unor criterii de selecţie, acestea se vor introduce în rândul Criteria. Dacă se
introduc mai multe valori în acelaşi rând de criterii sub câmpuri diferite, SGBD
Microsoft Access selectează numai înregistrările care îndeplinesc toate condiţiile
menţionate. Dacă aceste criterii sunt introduse pe rânduri diferite, o înregistrare va
fi inclusă când va îndeplini oricare dintre criteriile menţionate. Operatorii de
comparare admişi de SGBD Microsoft Access sunt evidenţiaţi în tabelul 5.1.
120

Universitatea SPIRU HARET


Tabelul 5.1
Operatorii de comparare în SGBD Microsoft Access
Operator Semnificaţia Exemplu Rezultat
> Mai mare decât > 50 Valori peste 50
< Mai mic decât < “P” Toate valorile de la A la P
>= Mai mare sau egal cu >=[Maxim] Cel puţin la fel de mare cu
valoarea din câmpul Maxim
<= Mai mic sau egal cu <=Date() – 10 Cel puţin cu 10 zile în urmă
= Corespondenţă(egalitate) = “Unix1” Exact cinci caractere
Like Comparare cu un nume Like Dacă Ciment apare în cadrul
generic **Ciment** câmpului
Between În cadrul gamei Between 1 De la 1 la 8 inclusiv
And 8
<>, not 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 adăugat automat la
referirile care implică valoarea Null. Delimitatorul diez este adăugat automat
datelor calendaristice, iar delimitatorul ghilimele se adaugă de o parte şi alta a
textului. Referirile la numele de câmpuri se fac prin includerea acestora în
paranteze drepte.
De exemplu, se cere ca din baza de date CONSTRUCT, pentru a urmări
primirea facturilor de la furnizori, să se vizualizeze înregistrările care se referă la
facturile primite de la furnizorii care au adresa_f în municipiul Timişoara, iar
modul de vizualizare a acestora să fie în ordinea alfabetică a numelor.
În acest scop se construieşte o interogare în modul Design View prin
selectarea grupului de obiecte Query din fereastra Database, executând un clic de
mouse pe butonul New şi alegând din fereastra de dialog New Query modul Design
View de creare a interogării 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 câmpurile care
interesează (fig.5.13).
Pentru a vizualiza doar furnizorii din municipiul Timişoara, este necesar ca la
intersecţia coloanei în care se află definit câmpul Adresa_f, cu rândul Criteria, să
se introducă valoarea Timisoara. Această specificare va limita rezultatul interogării
doar la afişarea înregistrărilor din baza de date care se referă la furnizorii din
Timisoara. Utilizatorul are posibilitatea de a introduce criterii suplimentare care se
pot referi la acelaşi câmp sau se pot referi la câmpuri diferite. Atunci când se
stabilesc mai multe criterii în mai multe celule Criteria, în mod automat SGBD
Microsoft Access le va combina utilizând operatorii logici And sau Or, în funcţie de
locul în care se află stabilite aceste criterii. Dacă criteriile se află în celule diferite
ale aceluiaşi rând, SGBD Microsoft Access va utiliza operatorul And, returnând ca
rezultat acele înregistrări care îndeplinesc toate condiţiile.
121

Universitatea SPIRU HARET


Fig.5.13. Fereastra Select Query cu exemplul de creare a interogării de selecţie FF1

Dacă criteriile se află stabilite pe rânduri diferite, SGBD Microsoft Access


va utiliza operatorul Or, returnând ca rezultat înregistrările care îndeplinesc oricare
dintre criterii.
Pentru a satisface cea de-a doua cerinţă (furnizorii să fie vizualizaţi în ordine
alfabetică a numelor), la intersecţia coloanei în care se află definit câmpul Den_f
(denumire furnizor) cu rândul Sort se stabileşte ca ordinea de sortare a
înregistrărilor să fie Ascending.
În figura 5.13 este prezentată întreaga fereastră Select Query, creată pentru a
răspunde cerinţelor enunţate mai sus, iar în figura 5.14 este prezentat rezultatul
acestei interogări.
Atunci când este executată o interogare, datele găsite sunt afişate sub forma unei
foi de date care va conţine câmpurile selectate din tabele şi afişate în rândul Field a
grilei QBE, precum şi datele care întrunesc criteriile stabilite în rândul Criteria.
În cazul în care utilizatorul nu cunoaşte întreaga valoare a unui câmp, sau în
cazul în care el doreşte să găsească 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 doreşte să se
găsească din baza de date înregistrările care se referă la furnizorul Ergo, dar nu
există siguranţa asupra numelui întreg al furnizorului. În acest caz, se poate face
apel la operatorul Like, introducând în celula Criteria a câmpului Den_f expresia
122

Universitatea SPIRU HARET


Like „Ergo”. De asemenea, dacă nu se cunoaşte numărul de caractere din valoarea
câmpului respectiv, se pot utiliza caractere de înlocuire (*), introducând drept
criteriu Like „Er*”. Acest caracter specifică un număr necunoscut de caractere.
Dacă se cunoaşte numărul de caractere din componenţa valorii căutate, se poate
folosi caracterul de înlocuire (?), introducând drept criteriu Like „Er??”. Acest
caracter specifică doar un singur caracter necunoscut, introducându-se în expresie
un număr de caractere de înlocuire egal cu numărul de caractere necunoscut.

Fig.5.14. Afişarea rezultatelor interogării de selecţie FF1

Calcularea totalurilor
În procesul de prelucrare a datelor, la un anumit moment, utilizatorul este
nevoit să definească interogări care se referă la grupuri de date. Acest tip de
interogări care efectuează calcule asupra unor grupuri de înregistrări poartă numele
de interogări de grup.
SGBD Microsoft Access pune la dispoziţia utilizatorului diverse tipuri de
calcule (funcţii de grup), cum sunt:
Sum – returnează suma tuturor valorilor din câmpul în care este asociată.
Min – returneză cea mai mică valoare a unui câmp.
Max – returneză cea mai mare valoare a unui câmp.
Avg – calculează valoarea medie a unui câmp.
Count – returnează numărul de înregistrări care respectă condiţia din clauza
Where.
Pentru a putea avea acces la aceste funcţii este necesar să se schimbe tipul
interogării în Totals. Această schimbare se realizează executând un clic de mouse pe
butonul Totals din bara Query Design sau alegând opţiunea Totals din meniul View.
Rezultatul acestei schimbări va avea ca rezultat introducerea unui rând suplimentar în
123

Universitatea SPIRU HARET


grila QBE, denumit Total. Fiecare celulă (intersecţia unui rând cu o coloană), din
dreptul rândului Total conţine o listă derulantă cu toate funcţiile totalizatoare.
Pentru exemplificare, se consideră aceeaşi bază de date CONSTRUCT şi,
atunci când se urmăreşte evidenţa facturilor primite de la furnizori, se presupune că
se doreşte să se cunoască numărul total de furnizori care au adresa în municipiul
Timisoara. Din tabelul Furnizori se aduc în grila QBE câmpul Den_f şi câmpul
Adresa_f. Pentru rezolvarea cerinţei, este necesar ca interogarea să grupeze mai
întâi furnizorii conform Adresa_f utilizând o clauză Group By şi un criteriu a cărui
valoare este Timisoara, după care aceasta va efectua calculul totalurilor pentru
fiecare grup în parte, utilizând funcţia Count. Atunci când se va executa această
interogare totalizatoare, foaia de date care reprezintă rezultatul interogării va fi un
instantaneu, adică un set de înregistrări care nu va putea fi modificat.
În figura 5.15 este prezentată interogarea totalizatoare, care răspunde
cerinţelor enunţate mai sus, urmată de rezultatul obţinut.

Fig. 5.15. Interogarea totalizatoare pentru calcularea numărului


de furnizori din Timisoara

De multe ori, în cadrul operaţiilor de prelucrare ale bazei de date, este necesar
să se utilizeze expresii de calcul mai complexe. Funcţiile totalizatoare puse la
dispoziţie 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 doreşte 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 preţul pe unitatea de produs
(notat în baza de date Pret_unitar). Se selectează câmpurile care prezintă interes
pentru problema enunţată şi se aduc în grila QBE. La sfârşit într-o ultimă coloană a
124

Universitatea SPIRU HARET


grilei QBE se defineşte un nou câmp cu numele Valoare şi se introduce expresia de
calcul pentru acest câmp astfel: Valoare:[Pret_unitar]*[Cant].
Pentru a avea un control mai amănunţit asupra înregistrărilor care vor fi
afişate, se pot stabili anumiţi parametri în cadrul interogărilor. Prin stabilirea
acestor parametri, înainte ca interogarea să se execute, se va afişa una sau mai
multe casete de dialog predefinite care vor cere utilizatorului să introducă valorile
parametrilor. Stabilirea câmpurilor ce vor fi utilizate ca parametri, se realizează
prin introducerea unei propoziţii, cuprinsă între paranteze drepte, în celula Criteria
a câmpului respectiv. De exemplu, se presupune că se doreşte construirea unei
interogări de selecţie care să afişeze numerele facturilor, dar înainte de a se executa
interogarea se doreşte 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 selecţie care corespunde calculului valorii materialelor de construcţii facturate.
În figura 5.17 este prezentat rezultatul interogării de selecţie î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 interogări
este prezentat în figura 5.19.

Modificarea conţinutului tabelelor prin utilizarea interogărilor de acţiune


O interogare de acţiune este capabilă de a efectua modificări ale unor
înregistrări care se pot afle în tabele diferite. SGBD Microsoft Access pune la
dispoziţia utilizatorilor patru tipuri de interogări de acţiune: interogări de tipul
Make Table, interogări pentru ştergerea unor înregistrări (Delete Query), interogări
pentru adăugare (Update Query) şi interogări de adăugare a unor date (Append
Query).

Fig.5.16. Calculul valorii materialelor facturate cu ajutorul interogării de selecţie

125

Universitatea SPIRU HARET


Fig.5.17. Rezultatul interogării de selecţie pentru calculul valorii materialelor facturate

Fig.5.18. Fereastra de introducere a valorii parametrului Den_f

Fig.5.19. Rezultatul interogării de selecţie la introducerea parametrului Den_f (fig.5.18)

Interogarea de acţiune Make Table (construire Tabel)


Interogarea Make Table are ca scop crearea unui nou tabel, format din date
parţiale sau aparţinând în totalitate unui tabel, sau date aparţinând mai multor
tabele. Ca o observaţie, trebuie precizat că datele cuprinse în noul tabel nu
moştenesc proprietăţile câmpurilor din tabelul din care provin.
De exemplu, se presupune că se doreşte să se construiască, în baza de date
care urmăreşte evidenţa facturilor primite de la furnizori, un nou tabel, care să
conţină informaţii care există deja în baza de date. În acest scop se va proiecta o
interogare în care se vor aduce pe grila QBE toate câmpurile ce prezintă interes
pentru problemă. Apoi se va modifica tipul interogării din Select Query în Make
Table Query. Schimbarea tipului de interogare se realizează fie acţionând butonul
Query Type din bara Query Design, fie alegând opţiunea Make Table Query din
126

Universitatea SPIRU HARET


meniul Query. Odată modificat tipul de interogare, SGBD Microsoft Access va
afişa 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 afişată fereastra de dialog Make Table. În
figura 5.21 sunt afişate tabelul şi câmpurile care alcătuiesc rezultatul interogării de
acţiune Make Table.

Fig.5.20. Fereastra de dialog Make Table la crearea interogării de acţiune

Fig.5.21. Rezultatul interogării de acţiune

Acest tip de interogare este folosit pentru eliminarea unui grup de înregistrări
din unul sau mai multe tabele. Pentru a crea o astfel de interogare se porneşte de la
o interogare Select Query, după care se selectează opţiunea Delete Query din lista
derulantă Query Type de pe bara Query Design sau din meniul Query. Metoda cea
mai indicată pentru generarea unei interogări de tipul Delete Query constă în
crearea într-o etapă anterioară a unei interogări Select Query şi verificarea
rezultatelor acesteia în modul de afişare Datasheet. După ce s-a verificat care date
se vor şterge, se poate transforma interogarea de selecţie în interogare de ştergere.
Un câmp care se doreşte a fi şters este adăugat grilei QBE, asupra lui putând să
acţioneze două opţiuni: From (De la) şi Where (Unde).
127

Universitatea SPIRU HARET


Dacă interogarea conţine mai multe tabele, aceste opţiuni indică ştergerea de
înregistrări din toate tabelele folosind From sau indică ştergerea selectivă, după
criterii de selecţie stabilite anterior, cu opţiunea Where. Dacă tabelul în care se
operează ştergerile este implicat în diverse relaţii cu alte tabele, iar integritatea
referenţială este configurată astfel încât să permită ştergerea în cascadă, atunci
înregistrările asociate se vor putea şterge, chiar dacă tabelele respective nu apar în
fereastra Query Design.
Pentru a recupera spaţiul eliberat prin ştergerea unor înregistrări, se închide
baza de date şi se alege opţiunea 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 doreşte ştergerea din baza de date, în situaţia
în care se urmăreşte evidenţa facturilor primite de la furnizori, a înregistrărilor care
se referă la furnizorul Electron SA. Pentru aceasta se creează o interogare de
selecţie ca în exemplele precedente. Apoi se va schimba tipul de interogare din
Select Query în interogare de tipul Delete Query prin alegerea opţiunii 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 construcţia
acestei interogări au stabilite între ele o relaţie de tipul unu la mulţi, cu integritatea
referenţială stabilită la opţiunea Cascade Delete Related Records, vor fi şterse toate
înregistrările asociate care se referă la furnizorul Electron SA.

Fig.5.22. Fereastra de construire a interogării de ştergere Delete Query

Interogarea de acţiune Update (pentru reactualizare)


Cu ajutorul acestui tip de interogări se pot efectua modificări globale într-un
grup de înregistrări. Interogarea este selectată prin opţiunea Update din pictograma
Query Type. Un rând nou, etichetat UpdateTo (actualizează la), este adăugat grilei

128

Universitatea SPIRU HARET


QBE, urmând ca valorile de actualizare să fie introduse în acest rând. Modul de
afişare Datasheet oferă posibilitatea verificării înregistrărilor selectate pentru
actualizare înainte de actualizarea tabelului. În situaţia în care sunt permise
actualizările în cascadă (Cascade Updates), Update determină apariţia
modificărilor corespunzătoare în tabelele asociate.
De exemplu, se presupune că intervin modificări de preţuri la materialele din
baza de date CONSTRUCT. Pentru a efectua această reactualizare de preţuri în
baza de date, în interogarea care se construieşte, se face referire la tabelul Facturi.
În grila QBE se aduce câmpul Pret_unitar şi câmpul Cod_mat, se schimbă tipul de
interogare în Update Query, în celula Criteria din dreptul câmpului Cod_mat se va
stabili un parametru, iar în celula UpdateTo a câmpului Pret_unitar se va introduce
noua valoare a preţului. Acest exemplu este prezentat în figura 5.23.

Fig.5.23. Fereastra de creare a interogării de actualizare Update Query

Atunci când se execută interogarea de actualizare, Update Query, apare o


fereastră de dialog în care trebuie introdus codul materialului (Cod_mat) al cărui
preţ unitar se va actualiza.

Interogarea de acţiune Append (pentru adăugare)


Acest tip de interogare se foloseşte pentru a insera înregistrări din unul sau
mai multe tabele-sursă într-un tabel-ţintă. Aceste interogări sunt utile în cazul în
care se doreşte adăugarea unor câmpuri pe baza unor anumite criterii. Adăugarea
de date este posibilă chiar dacă tabelul sursă conţine câmpuri care nu se regăsesc în
tabelul destinaţie. În acest caz, SGBD Microsoft Access adaugă numai datele
comune, restul de înregistrări 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 numeşte Furnizori recenţi, acesta conţinând date despre noii furnizori de
materiale de construcţii. Utilizatorul va dori să adauge în tabelul Furnizori datele
conţinute de tabelul Furnizori recenţi. Astfel, tabelul-ţintă este Furnizori, iar
tabelul Furnizori recenţi este tabelul-sursă.
Realizarea unei interogări de acest tip presupune mai întâi proiectarea unei
interogări care să conţină câmpurile ce definesc tabela Furnizori recenţi, apoi se va
schimba tipul de interogare în Append Query. În momentul când se va schimba
tipul de interogare, SGBD Microsoft Access va afişa 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 acţiune Append care răspunde cerinţelor de mai sus.

Fig.5.25. Interogare de acţiune de tip adăugare Append Query

130

Universitatea SPIRU HARET


5.5. Formularul

Formularul (Form) reprezintă un obiect Access destinat introducerii datelor


într-o bază de date (când formularul este asociat unui tabel), precum şi vizualizării
datelor datelor din baza de date (când formularul este asociat unei interogări).
Astfel, cu ajutorul formularelor se pot efectua câteva operaţii tipice în baza de
date, şi anume operaţii de adăugare, modificare sau de ştergere a unor date din baza
de date.
Un formular conţine două categorii de informaţii [18]:
1) informaţii de structură – reprezintă informaţiile referitoare la alcătuirea şi
vizualizarea formularului (mărimea formularului, aşezarea în formular a atributelor
şi controalelor, proprietăţile 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 conţine un formular pot fi obiecte asociate unor
câmpuri 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 afişa anumite date conţinute
de tabele) şi obiecte care prin apariţia unor evenimente pot declanşa anumite acţiuni.

Crearea unui formular


SGBD Microsoft Access 2003 pune la dispoziţia 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
acţiuni vor avea ca rezultat afişarea 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 asigurând asistenţa pe toată durata procesului de creare a
formularului. Ca şi în cazul opţiunii Table Wizard, se pun întrebări în legătură cu
modul în care se doreşte construirea acelui formular, făcând anumite sugestii,
culegând informaţiile asupra opţiunilor utilizatorului şi, pe baza acestor opţiuni,
creând, în final, formularul dorit.
• AutoForm: Columnar – alegerea acestei metode are ca rezultat crearea în
mod automat a unui formular simplu, fără ca SGBD Microsoft Access să solicite
vreo informaţie suplimentară. Formularul este afişat în mod automat având
câmpurile dispuse şi aliniate unul sub celălalt. 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 având câmpurile unei
înregistrări aliniate pe un rând. Acest tip de formular conţine în partea superioară
numele asociat fiecărui câmp, iar în cazul în care tabelul asociat conţine multe
înregistrări, în partea dreaptă a formularului apare o bară derulantă.
• AutoForm: Datasheet – permite crearea unui formular având un mod de
vizualizare identic cu cel al tabelului căruia îi este asociat, introducerea datelor prin
intermediul acestui formular realizându-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 interogării 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 căruia se afişează un grafic.
• PivotTable Wizard – creează un formular în interiorul căruia 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 conţine denumirea tuturor tabelelor şi interogărilor 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
afişând pe ecranul monitorului fereastra Form. Această fereastră este prevăzută pe
margini cu două rigle (o riglă verticală, situată în partea stângă a ferestrei, şi o riglă
orizontală, situată în partea de sus a ferestrei Form), ajutând utilizatorul pentru
alinierea obiectelor care vor face parte din acest formular; şi un cadru pentru
proiectare în interiorul căruia vor fi plasate obiectele dorite de utilizator.
Obiectele care fac parte din formular poartă denumirea de controale. O parte
dintre aceste controale pot fi ataşate unor câmpuri din tabelul sau interogarea
132

Universitatea SPIRU HARET


asociată formularului respectiv, aceste controale având 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 căror 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 conţine ca operanzi date utilizate în formularul respectiv.
Atunci când se optează pentru crearea unui formular în modul Design View,
SGBD Microsoft Access 2003 oferă posibilitatea utilizatorului de a stabili el însuşi
amplasarea controalelor în interiorul cadrului de proiectare, astfel încât 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 evidenţiază şi caseta cu instrumente (Toolbox) şi lista
de câmpuri a tabelului asociat.
Adăugarea controalelor
În interiorul cadrului de proiectare se pot plasa diferite obiecte de tipul
controalelor. Pentru a adăuga un control nou unui formular, trebuie să existe afişată
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 dispoziţie de caseta cu instrumente
sunt următoarele:
1. Label – creează o etichetă care afişează un text, putând fi folosită ca titlu
în formularul respectiv;

Fig. 5.27. Fereastra Form, caseta cu instrumente şi lista cu câmpuri


133

Universitatea SPIRU HARET


2. Text Box – creează o casetă tip text, cu ajutorul căreia se pot afişa anumite
date din baza de date;
3. Option Group – creează o casetă de grup care grupează în interiorul său
mai multe controale înrudite (butoane de validare sau de opţiuni);
4. Toggle Button – creează un buton de comutare, buton caracterizat de două
stări Yes/No, True/False, sau On/Off;
5. Option Button – creează un buton de opţiune. De obicei se folosesc mai
multe butoane de opţiuni grupate în interiorul unei casete de grup pentru a putea
permite efectuarea unor alegeri între mai multe variante (variantele alese
excluzându-se reciproc);
6. Check Box – creează o casetă de validare, funcţionând la fel ca un buton
de opţiune singura diferenţă constând în faptul că se pot alege simultan mai multe
opţiuni, variantele neexcluzându-se reciproc;
7. Combo Box – creează o casetă combinată. Acest tip de control arată
aproape la fel ca o casetă de tip text, diferenţa constând în existenţa unui buton cu
săgeată în partea dreaptă a casetei. Controlul de acest tip se foloseşte în cazul când,
în câmpul asociat obiectului se doreşte introducerea unor date care se află deja
stocate în alt tabel, utilizatorul având posibilitatea de a alege anumite valori din
lista derulantă;
8. List Box – creează o casetă de tip listă. Acest tip de control funcţionează
la fel ca şi Combo Box, diferenţa constând în faptul că List Box va afişa tot timpul
valorile existente în câmpul asociat;
9. Command Button – creează un buton de comandă, cu ajutorul căruia
utilizatorul poate executa anumite operaţii (acţiuni);
10. Image – introduce în formular o imagine existentă într-un fişier având
extensia .bmp, .wmf, .emf, .gif, sau .jpeg;
11. Unbound Object Frame – creează în interiorul cadrului de proiectare a
formularului, un spaţiu folosit de un obiect nelegat;
12. Bound Object Frame – funcţionează la fel ca Unbound Object Frame, dar
spaţiul va fi folosit de un obiect legat;
13. Page Break – creează o întrerupere de pagină;
14. Tab Control – creează un formular alcătuit din mai multe fişe. Acest tip
de control este foarte util în momentul în care utilizatorul lucrează cu foarte multe
informaţii, informaţii care pot fi împărţite în mai multe categorii omogene, fiecare
categorie de informaţii fiind grupată pe câte o fişă;
15. Subform/Subreport – creează un subformular în cadrul unui alt formular,
fiind necesar atunci când se doreşte afişarea simultană a datelor aflate în două sau
mai multe tabele legate de o relaţie;
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
afişa, filtra, organiza sau analiza date, controale pentru grafice sau pentru text
animat etc.
Pentru a adăuga un control în formular, se acţionează butonul corespunzător
controlului dorit din casete cu instrumente, după care se execută un clic în zona din
interiorul cadrului de proiectare în care se doreşte 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ă
executând un clic pe controlul dorit. SGBD Microsoft Access 2003 înconjoară
controlul selectat cu un chenar prevăzut pe margini cu mici pătrate negre folosite
pentru redimensionarea controlului sau pentru mutarea acestuia în altă zonă. Dacă
se doreşte ştergerea controlului din cadrul de proiectare a formularului, după
selecţia controlului dorit se apasă tasta DEL.
În fig.5.28 sunt prezentate caseta cu instrumente, precum şi denumirea
fiecărui control.

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

Adăugarea controalelor legate


Pentru a adăuga un control care este legat de un câmp din tabelul asociat
formularului, se va afişa în prealabil fereastra Field List executând un clic pe
pictograma Field List din bara de instrumente standard, sau alegând Field List din
meniul View. După afişarea listei cu câmpuri, se selectează câmpurile care prezintă
interes şi, ţinând butonul de la mouse apăsat, se vor trage câmpurile din fereastra
Field List peste cadrul de proiectare. În mod implicit, SGBD Microsoft Access
2003 creează o casetă de text legată de câmp şi o etichetă indicând numele
câmpului respectiv.
135

Universitatea SPIRU HARET


Adăugarea controalelor calculate
În general, într-o bază de date nu este recomandat să se definească în tabele
atribute care reprezintă câmpuri calculate, acestea mărind în mod artificial
dimensiunea bazei de date. Totuşi, se impune la un moment dat evidenţierea unor
atribute ale căror 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 acţionează butonul
corespunzător 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.
Adăugarea controalelor nelegate
Acest tip de controale defineşte obiectele din interiorul unui formular, cărora
nu le sunt asociate atribute sau câmpuri calculate definite în baza de date.
Controalele nelegate sunt reprezentate de obicei de butoane de comenzi care
îndeplinesc în baza de date anumite acţiuni (de exemplu deschiderea altor
formulare, închiderea formularelor etc.).
Adăugarea subformularelor
Utilizatorul este nevoit deseori să-şi construiască formulare care să conţină
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 conţine subformulare să funcţioneze corect, tabelul
căruia îi este asociat subformularul trebuie să se afle în relaţie directă cu tabelul
căruia îi este asociat formularul principal. Dacă între două tabele există o relaţie de
„unu la mulţi”, formularul principal afişează o înregistrare din tabelul primar în
modul Single Form, iar subformularul afişează mai multe înregistrări din tabelul
asociat în modul Continous sau Datasheet (formularul arată înregistrările din partea
unu a relaţiei, iar subformularul arată înregistrările din partea mulţi a relaţiei). Atunci
când utilizatorul trece la o altă înregistrare din formularul principal, SGBD Access
actualizează automat subformularul cu înregistrările asociate corespunzător.
Subformularul este o metodă prin care se evidenţiază relaţiile între tabele. Există mai
multe metode pentru a crea un subformular, şi anume:
1. Se construieşte 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 afişare Design şi se trage cu
mouse-ul numele subformularului din fereastra Database în cadrul formularului
principal.
Diferenţa dintre un formular şi un subformular constă în aceea că acel câmp
care este considerat ca fiind câmpul de legătură nu trebuie să fie inclus, deoarece el
136

Universitatea SPIRU HARET


este afişat 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 aplicaţie.
Pentru exemplificarea construirii unui formular, se reia baza de date
CONSTRUCT. Se foloseşte modul de creare a formularului cu ajutorul ghidului
(Create Form by Unng Wizard). Când apare fereastra New Form, se alege opţiunea
Form Wizard şi se selectează tabelul sursă de date Furnizori. La apariţia ferestrei
Form Wizard, se selectează câmpurile cu săgeata spre dreapta şi se apasă butonul
OK. Se aleg opţiunea Columnar (coloană), stilul de afişare Standard, iar apoi, după
stabilirea numelui de fişier (FURNIZ1), se apasă butonul Finish. Formularul astfel
obţinut, se poate folosi în modul de lucru Open pentru vizualizarea înregistrărilor
existente sau pentru realizarea de actualizări în baza de date (fig.5.29).

Fig.5.29. Formularul Furniz1 în modul de lucru Open

Proprietăţile unui formular


Fiecare obiect definit în cadrul de proiectare a formularului este caracterizat
de anumite proprietăţi. Aceste proprietăţi determină modul de vizualizare şi de
comportament al obiectului respectiv. Pentru afişarea proprietăţilor unui obiect, se
selectează în prealabil obiectul respectiv, se execută un clic pe selecţie cu butonul
din partea dreaptă a mouse-ului, iar din meniul rapid care apare se va alege
opţiunea Properties. Aceasta are ca rezultat afişarea unei ferestre de dialog
prezentată în fig.5.30, fereastră care se referă la proprietăţile obiectului selectat.
Afişarea proprietăţilor unui obiect se face pe grupe de proprietăţi, fiecare grupă de
proprietăţi aflându-se pe câte o fişă.
Aşa cum se observă din fig.5.30, cele cinci grupe de proprietăţi sunt:
Format – grupează proprietăţile referitoare la înfăţişarea unui obiect
(culoare, dimensiune, mod de vizualizare, etc.);
Data – grupează proprietăţile legate de datele asociate controlului respectiv
(sursa datelor, reguli de validare a datelor etc.);
Event – grupează o listă de acţiuni la care este posibil a răspunde obiectul
cărora le sunt asociate, ca urmare a apariţiei unor evenimente;
Other – grupează alte proprietăţi suplimentare asociate obiectului selectat;
137

Universitatea SPIRU HARET


All – această fişă listează toate proprietăţile obiectului selectat, proprietăţi
regăsite de altfel şi în grupele de proprietăţi enumerate mai sus.
Se prezintă în continuare câteva dintre cele mai importante proprietăţi care
pot caracteriza un obiect dintr-un formular, acestea putând varia în funcţie de
controlul selectat.

Fig.5.30. Fereastra de dialog ce reprezintă proprietăţile unei casete de text

Grupa de proprietăţi Format


Format – această proprietate afectează doar modul de afişare a datelor, nu
afectează şi modul în care sunt stocate aceste date. Funcţionează la fel ca
proprietatea Format de la definirea câmpurilor din tabele, fiind asociată unor
controale legate.
DecimalPlaces – poate fi utilizată împreună cu proprietatea Format,
indicând câte numere vor fi afişate după virgulă în cazul unor valori numerice.
Caption – introducerea unui şir de caractere în această proprietate va avea ca
efect afişarea şirului de caractere în interiorul controlului respectiv. Această
proprietate este asociată în special controalelor nelegate.
DisplayWhen – stabileşte în ce condiţii este afişat controlul respectiv,
opţiunile disponibile fiind Allways, PrintOnly, ScreenOnly.
Scrool Bars – această proprietate are rolul de a afişa în partea dreaptă a
controlului o bară de derulare verticală în cazul în care controlul respectiv este
asociat unui câmp de tip memo.
Visible – are ca efect vizualizarea sau ascunderea obiectului selectat.
Column Count – indică numărul de coloane, fiind asociată unor controale de
tipul Combo Box sau List Box.
Fore Color – această proprietate stabileşte culoarea fonturilor.
138

Universitatea SPIRU HARET


Font Name, Font Size, Font Weight – sunt proprietăţi care se referă la tipul
de font pe care utilizatorul doreşte să îl folosească, mărimea acestuia, precum şi
grosimea fontului.
Grupa de proprietăţi Data
Control Source – din punct de vedere al datelor care le afişează acel control,
aceasta reprezintă cea mai importantă proprietate. În această proprietate se
stabileşte sursa înregistrărilor pe care le va afişa controlul respectiv. În această
proprietate se va stabili numele tabelului sau interogării 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 protecţia la scriere, utilizatorul neputând să intervină în
modificarea valorii afişate de controlul respectiv.
Input Mask, Default Value, Validation Rule, Validation Text – sunt
proprietăţi care funcţionează la fel ca proprietăţile cu acelaşi nume din definirea
câmpurilor 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 numărul coloanei din tabelul asociat controlului
cu care este legat.
Grupa de proprietăţi Other
Status Bar Text – şirul de caractere introdus în această proprietate va fi afişat
în bara de stare în momentul în care controlul va fi selectat. Se va folosi această
proprietate în momentul în care se va dori afişarea de informaţii suplimentare
despre controlul selectat.
Enter Key Behavior – această proprietate se foloseşte pentru controalele
legate de un câmp de tip Memo pentru a introduce date în tabel pe mai multe linii.
Dacă utilizatorul doreşte să introducă mai multe date în interiorul aceleiaşi celule,
va stabili valoarea acestei proprietăţi la New Line in Field, iar prin apăsarea tastei
Enter, SGBD Microsoft Access va crea o nouă linie în cadrul controlului, astfel
încât utilizatorul va putea introduce text adiţional.
Tab Index – această proprietate stabileşte 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 proprietăţi este setată pe Yes, controlul de
selecţie se va deplasa automat de la un control la altul (prin apăsarea 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 proprietăţi este No,
utilizatorul nu va putea realiza selecţia controlului respectiv.
Proprietăţi ale subformularelor
Ca orice alt obiect din interiorul unui formular, subformularele sunt
caracterizate de anumite proprietăţi. Cele mai importante proprietăţi ale
subformularelor sunt proprietăţile LinkMasterFields şi LinkChildFields.
139

Universitatea SPIRU HARET


Se pot folosi aceste două proprietăţi împreună pentru a specifica legăturile
care există între înregistrările unui formular şi înregistrările unui subformular. Dacă
aceste proprietăţi sunt stabilite, SGBD Microsoft Access va schimba automat
înregistrările 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 proprietăţile LinkMasterFields şi LinkChildFields numai în
următoarele condiţii:
1) în cazul când atât formularul principal, cât şi subformularul sunt definite
pe tabele aflate în relaţii directe (relaţii ce au fost definite în fereastra
Relationships);
2) în cazul când formularul principal este construit pe un tabel care are
definită o cheie primară, iar subformularul este construit pe un tabel sau o
interogare care conţine un câmp care are acelaşi nume şi acelaşi tip de date ca şi
cheia primară din tabelul pe care este construit formularul principal.
Odată stabilite aceste proprietăţi, se poate afirma că subformularul este
sincronizat cu formularul principal, în sensul că subformularul va afişa doar acele
date care fac referire la înregistrările din formularul principal.
Utilizarea unui formular
După cum s-a arătat 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.
Când se deschide un formular în modul Form View, acesta va afişa datele
unui singur set de înregistrări, SGBD Microsoft Access plasând pointerul pe prima
înregistrare. Deplasarea în cadrul formularului se face apăsând tasta Enter sau tasta
Tab. Deplasarea la un alt set de înregistrări se realizează utilizându-se butoanele
din partea stângă jos a formularului.
În modul de vizualizare Datasheet, SGBD Microsoft Access afişează mai
multe seturi de înregistrări simultan sub forma unui tabel. Pentru a schimba modul
de vizualizare a formularului din Form View în modul de vizualizare Datasheet
View se apelează opţiunea Datasheet View din meniul View după ce a fost deschis
în prealabil formularul respectiv.
În ambele moduri de afişare ale formularului se găseşte o înregistrare liberă,
aceasta având rolul de a primi datele introduse în formular, atunci când utilizatorul
adaugă un nou set de înregistrări. SGBD Microsoft Access salvează în mod
automat datele introduse în formular atunci când utilizatorul trece la următorul set
de înregistrări.

5.6. Raportul

Raportul (Report) reprezintă un obiect al unei baze de date Microsoft Access


cu ajutorul căruia utilizatorul poate prezenta anumite date sub formă de rezumat,
eventual în format pregătit pentru tipărire. Prin intermediul rapoartelor utilizatorul
dispune de un control absolut asupra dimensiunilor şi modului de prezentare a
datelor. De asemenea, rapoartele asigură prezentarea unor informaţii de sinteză
asupra rezultatelor prelucrărilor efectuate în baza de date.
140

Universitatea SPIRU HARET


Rapoartele nu modifică datele din baza de date, parcurgerea înregistrărilor
realizându-se în mod secvenţial. SGBD Microsoft Access foloseşte pentru obţinerea
unui raport o copie protejată la scriere a datelor.
Ca şi în cazul formularelor, rapoartele sunt alcătuite din două categorii de
informaţii [18]:
1. informaţii de structură – reprezentate de acele informaţii de ordin
funcţional stabilite la crearea raportului (controale, secţiuni, elemente de grafică
decorative etc.);
2. informaţii reprezentând datele propriu-zise. Majoritatea informaţiilor
dintr-un raport sunt culese din tabele, formulare sau interogări asociate raportului
respectiv.
Din punct de vedere al modului de creare, funcţionare şi utilizare, între
formulare şi rapoarte, există multe asemănări. Ambele clase de obiecte folosesc
secţiuni şi controale pentru prezentarea datelor, deci modul de creare al unui raport
va fi asemănător cu modul de creare al unui formular.
Aşa 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 uşoară de creare a unui
raport, utilizatorul fiind asistat pe tot parcursul creării raportului cu întrebări
referitoare la sursele înregistrărilor, numele câmpurilor şi formatul datelor. SGBD
Microsoft Access 2003 creează pe baza răspunsurilor utilizatorului raportul dorit.
3. AutoReport: Columnar sau AutoReport: Tabular – SGBD Microsoft
Access 2003 generează în mod automat un raport în care datele sunt afişate într-o

141

Universitatea SPIRU HARET


coloană (pentru AutoReport: Columnar), sau sub formă de tabel (pentru
AutoReport Tabular).
4. Chart Wizard – această opţiune asigură generarea unui raport în interiorul
căruia va fi prezentat un grafic.
5. Label Wizard – această opţiune are rolul de a crea etichete poştale care pot
fi tipărite la imprimantă pe suporturi speciale de hârtie (auotcolante, etichete
detaşabile etc.).
În partea de jos a ferestrei de dialog New Report se află o casetă având în
partea dreaptă un buton cu o săgeată desenată pe el. Dacă utilizatorul execută un
clic de mouse pe acest buton va apare o listă derulantă care conţine numele tuturor
tabelelor şi interogărilor 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 asemănător creării formularelor. Ca
şi în cazul creării 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 secţiuni: antet şi subsol de
pagină (Page Header şi Page Footer), şi o secţiune Detail. În fiecare din aceste
secţiuni, utilizatorul poate să introducă trei tipuri de controale:
1. Controale legate – controale care sunt asociate unor câmpuri din tabele
sau interogări;
2. Controale nelegate – controale care nu fac referire la nici un câmp definit
în baza de date;
3. Controale calculate – controale care permit obţinerea unor valori pe baza
unor expresii aritmetice sau logice.
Pentru a numerota paginile unui raport, utilizatorul trebuie să aleagă opţiunea
Page Numbers din meniul Insert, iar din caseta de dialog Page Numbers se pot
alege modul şi locul de inserare a numerotării paginilor.
Dacă se doreşte inserarea datei pe raport, se alege opţiunea Date and Time
din meniul Insert şi din caseta de dialog Date and Time se poate alege formatul în
care se doreşte să apară această dată.
Configurarea paginii de tipărire a unui raport.
Configurarea paginii de tipărire a unui raport se realizează cu ajutorul
opţiunii Page Setup. Pentru realizarea acestei configurări, se deschide raportul în
modul Preview şi se execută un clic pe raportul afişat cu butonul din partea dreaptă
a mouse-ului, din meniul rapid care apare se alege opţiunea Page Setup. Pentru a
putea fi afişat un raport în modul Preview trebuie instalată în prealabil o
imprimantă sau măcar un driver de imprimantă, altfel SGBD Microsoft Access
2003 nu va putea vizualiza raportul.
Fereastra de dialog Page Setup asigură mai multe categorii de configurări,
categorii grupate în trei fişe:
1. Margins – în această fişă utilizatorul are posibilitatea de a stabili
dimensiunea marginilor (spaţiul care există între textul scris şi marginea efectivă a
paginii).
142

Universitatea SPIRU HARET


2. Pages – cu ajutorul opţiunilor 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 doreşte imprimarea unor rapoarte sub formă
tabelară, se folosesc opţiunile puse la dispoziţie de această fişă.
Pentru exemplificare, se creează raportul Furnizori după tabelul cu acelaşi
nume, folosind modul de lucru cu ghidul (Create Report by Uzing Wizard). Se
obţine raportul din fig.5.32.

Fig.5.32. Raportul Furnizori obţinut în modul de lucru cu Wizard-ul

5.7. Paginile (Pages)

Paginile (Pages) sunt obiecte Access ce asigură accesarea bazelor de date


din reţeaua Internet şi WWW (World Wide Web) prin intermediul navigatoarelor
(browser-elor) Web. Aceste obiecte sunt necesare ca urmare a prelucrării integrate
a datelor care circulă în Internet sub forma unei aplicaţii globale a datelor,
inclusiv pentru funcţia 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 legături între tabelele, interogările, formularele şi rapoartele din baza
de date, pe de o parte, şi obiecte Web, pe de altă parte;
• desfăşurarea de şedinţe în timp real, prin Internet, cu participanţi situaţi la
distanţă;
• crearea de pagini Web cu date din baze de date şi posibilitatea de a salva
tabele, interogări, formulare şi rapoarte ca pagini Web.
143

Universitatea SPIRU HARET


Când se apasă butonul corespunzător obiectului Pages din fereastra Database,
în zona de opţiuni se afişează cele trei căi 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 reţeaua


Internet presupune folosirea unui browser Web, care permite, între altele,
introducerea unor comenzi on-line în bazele de date organizaţionale (produse,
servicii, clienţi, furnizori etc.).
Activarea unei hiperlegături conduce la afişarea de către SGBD Microsoft
Access a unei bare cu instrumente Web (fig.5.33).
Bara cu instrumente Web conţine 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 când se produce modificarea unor date din baza de date sursă,
actualizarea paginilor Web se realizează sub forma paginilor Web dinamice.
Acestea se obţin 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 fişier ASP se face pe baza numelui bazei de date, a
numelui şi a parolei utilizatorului, a adresei URL a serverului Web ce constituie
destinaţia pentru fişierul ASP respectiv.
144

Universitatea SPIRU HARET


Fig.5.34. Crearea unui câmp 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”.
Câmp de tip hiperlegătură (Hyperlink) asigură un salt pe calea către
destinaţia specificată (pagină Web sau fişier din reţea). Crearea unui astfel de câmp
într-un tabel al unei baze de date se obţine în modul de lucru cu fereastra de
proiectare (Design View), unde din lista Data Type se alege opţiunea Hyperlink
(fig.5.34), după care se salvează (Save).
După crearea câmpului Hyperlink, se foloseşte butonul de inserare a
hiperlegăturii (Insert Hyperlink) pentru crearea hiperlegăturii în câmpul Hiperlink
sau ca hipertext în interiorul unui formular sau raport. Hiperlegătura este compusă
din enunţul de descriere a legăturii, vizibil utilizatorului din adresa URL a
destinaţiei legăturii şi din eticheta de ecran (ScreenTip) care se afişează atunci
145

Universitatea SPIRU HARET


când indicatorul mouse-ului se găseşte în zona legăturii (fig.5.35). Pe bara de
„legătură la” (Link To) se execută clic pe opţiunea fişier existent sau pagină Web
existentă (Existing File or Web Page), se scrie textul hiperlegăturii, se introduce
documentul legat (prin nume fişier sau adresă URL), se creează eticheta de ecran
(clic pe ScreenTip) şi se apasă OK.

Fig.5.35. Fereastra de editare a hiperlegăturilor (Edit Hyperlink)

Crearea unei pagini Web noi (Create New Page) se obţine prin selecţia
opţiunii corespunzătoare din fereastra Edit Hyperlink (fig.5.35). În acest fel se
realizează o hiperlegătură la un document nou. Textul care se va afişa pentru
hiperlegătura 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 târziu (Edit the new document later). În final, se apasă
butonul OK. Pentru exemplul considerat, se obţine fereastra din fig.5.36.

146

Universitatea SPIRU HARET


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

Legătura la un obiect din baza de date se obţine în cadrul unui câmp


Hyperlink sau în timpul editării unui formular sau unui raport în modul de lucru cu
fereastra de vizualizare (Insert Hyperlink), cu opţiunea Obiect din această bază de
date (Object in This Database).

5.8. Macroinstrucţiunea (Macro-ul)

Macroinstrucţiunea sau macro-ul (Macro) reprezintă un obiect Access care


defineşte un ansamblu de comenzi pe care sistemul Microsoft Access le execută
automat la apariţia unor evenimente. Macro-urile pot fi ataşate unui formular,
raport sau control în scopul automatizării unor operaţii 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 afişând
147

Universitatea SPIRU HARET


pe ecranul monitorului fereastra Macro (fig.5.37), sub forma unui tabel compus din
două coloane şi mai multe rânduri.

Fig.5.37. Modul Design View al unei ferestre Macro

1. Coloana Action – conţine o listă derulantă formată din comenzi care au ca


efect acţiuni prestabilite (ca, de exemplu, OpenForm, OpenReport etc.);
2. Coloana Comment – se foloseşte pentru introducerea unor comentarii sau
pentru descrierea acţiunilor pe care le realizează comanda respectivă.
În partea de jos a ferestrei Macro se află o zonă destinată specificării unor
argumente. Argumentele furnizează SGBD Microsoft Access informaţii suplimentare
asupra modului în care se vor îndeplini acţiunile generate de comanda stabilită în
coloana Action (de exemplu, numele obiectului care va răspunde la acţiunea
respectivă, sau modul în care vor fi afişate datele ca urmare a executării 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 funcţie de tipul operaţiilor şi de efectul produs asupra
obiectelor cărora le sunt asociate.
148

Universitatea SPIRU HARET


Comenzi asociate unor acţiuni care au loc în formulare şi rapoarte
Această categorie de comenzi permite utilizatorului, de regulă, deplasarea
printre înregistrările bazei de date.
FindRecord – această comandă se foloseşte pentru a localiza prima
înregistrare din baza de date care întruneşte condiţiile specificate de argumentele
comenzii. Această comandă poate accepta ca argumente următoarele valori:
1. Find What – în dreptul acestui argument se specifică informaţia care se
doreşte a se regăsi în baza de date. Se pot introduce text, numere sau orice tip de
dată din care este formată valoarea căutată.
2. Match – specifică unde se află informaţia respectivă în cadrul câmpului.
Se poate specifica o căutare a datelor în oricare parte a câmpului prin stabilirea
valorii argumentului la Any Part of Field, se poate stabili valoarea Whole Field
pentru acele informaţii care ocupă întregul câmp, sau se poate stabili valoarea Start
of Field pentru a localiza acele informaţii care se află la începutul câmpului.
3. Match Case – specifică dacă acţiunea de căutare este case-sensitive
(literele scrise cu majuscule trebuie să se potrivească exact cu valoarea
argumentului Find What).
4. Search – specifică modul în care se desfăşoară procedura de căutare în
baza de date, pornind de la înregistrarea curentă către începutul înregistrărilor (Up),
sau începând de la înregistrarea curentă către sfârşitul înregistrărilor, sau toate
înregistrările sunt căutate (All).
5. Find First – specifică de unde se începe acţiunea de căutare, de la prima
înregistrare (Yes) sau de la înregistrarea curentă (No).
FindNext – această comandă se foloseşte împreună cu comanda FindRecord,
având rolul de a relua acţiunea de căutare în scopul de a găsi o nouă înregistrare
care conţine aceleaşi informaţii. Comanda FindNext nu are argumente, ea va găsi
următoarea înregistrare care întruneşte condiţiile stabilite în comanda FindRecord.
GoToControl – se poate folosi această comandă pentru a realiza plasarea pe
un anumit câmp a unui tabel sau pentru a obţine plasarea pe un anumit control a
unui formular sau raport. Se poate folosi această comandă şi pentru a naviga într-un
formular stabilind anumite condiţii. Această comandă acceptă un singur argument,
Control Name, care stabileşte numele câmpului sau controlului pe care se doreşte a
se realiza plasarea.
GoToRecord – are rolul de a realiza poziţionarea pe o anumită înregistrare
dintr-un tabel, formular sau interogare. Această comandă are următoarele
argumente:
1. Object Type – specifică tipul obiectului care conţine înregistrarea pe care se
doreşte poziţionarea (Tabel, Interogare, Formular, Server View sau Stored Procedure).
2. Object Name – în acest argument se stabileşte numele obiectului care
conţine informaţia pe care se doreşte poziţionarea. Caseta asociată acestui argument
conţine o listă derulantă cu toate numele obiectelor definite în baza de date.
3. Record – valorile stabilite pentru acest argument specifică pe care înre-
gistrare se va realiza poziţionarea. Valorile acceptate sunt: Previous (înregistrarea
anterioară), Next (înregistrarea următoare), Last (ultima înregistrare), Go To
(utilizatorul va specifica pe a câta înregistrare va dori să se plaseze).

149

Universitatea SPIRU HARET


GoToPage – această comandă realizează poziţionarea pe primul control al
unei pagini de formular. Se poate folosi această comandă dacă formularul creat
conţine întreruperi de pagină. Argumentele acestei comenzi sunt următoarele:
1. Page Number – stabileşte numărul de pagini cu care se doreşte
schimbarea poziţionării.
2. Right – stabileşte poziţia orizontală a locului de pe pagină care va apare
începând de la marginea din stânga a ferestrei.
3. Down – stabileşte poziţia 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 suprafaţa
paginilor mai mare decât suprafaţa pe care o poate afişa monitorul calculatorului,
SGBD Microsoft Access putând afişa doar anumite părţi ale unui formular.
Comenzi pentru rularea unor aplicaţii
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ă macro-
comandă.
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 căsuţa 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 următoarele:
1. Macro Name – stabileşte numele macroului care va fi executat. Căsuţa
asociată acestui argument conţine o listă derulantă cu toate macrourile definite în
baza de date.
2. Repeat Count – indică numărul maxim de execuţii a macroului. Dacă
valoarea argumentului nu este stabilită, atunci macroul se va executa doar o singură
dată.
3. Repeat Expression – stabileşte o expresie care va fi evaluată cu adevărat
(True) sau fals (False), macroul oprindu-se din execuţie dacă expresia este
interpretată a fi falsă. Această expresie va fi evaluată de fiecare dată când se va
executa macroul.
RunApp – lansează în execuţie o aplicaţie MS-DOS sau o aplicaţie Windows
(Word, Excel, Power Point etc.). Cu ajutorul acestei comenzi se pot transfera date
între diferite aplicaţii ş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 aplicaţie. Această linie de comandă trebuie să conţină
obligatoriu calea spre locaţia unde se află aplicaţia respectivă.
OpenQuery – lansează în execuţie o interogare. Argumentele asociate acestei
comenzi sunt următoarele:
1. Query Name – în căsuţa asociată acestui argument se va stabili numele
interogării care se va executa. Această căsuţă conţine o listă derulantă cu toate
interogările 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- stabileşte modul în care vor fi introduse datele. Această
opţiune este valabilă doar dacă interogarea este executată în modul Datasheet.
Valorile pentru acest argument sunt Add – utilizatorul poate adăuga noi înregistrări,
dar nu le poate modifica pe cele vechi, Edit – utilizatorul poate adăuga înregistrări
noi şi poate modifica pe cele vechi, Read Only – utilizatorul poate doar vizualiza
datele rezultate în urma executării interogării.
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
întâmplă cu obiectele create şi nesalvate în momentul în care se închide aplicaţia.
Acest argument acceptă trei valori: Prompt – afişează o casetă de dialog în care
utilizatorul este întrebat dacă va salva fiecare obiect în parte, Save All – va salva
toate obiectele fără a se mai afişa caseta de dialog şi Exit – se va părăsi aplicaţia
fără 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 afişare 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 aceleiaşi 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 căsuţa destinată acestui argument se vor
introduce calea şi numele de destinaţie a bazei de date în care se doreşte 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
lăsat necompletat, copierea realizându-se sub acelaşi nume.
3. Source Object Type – stabileşte tipul de obiect ce va fi copiat (Tabel,
Interogare, Raport etc).
4. Source Object Name – numele obiectului ce va fi copiat. Căsuţa de dialog
asociată acestui argument conţine 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 foloseşte la ştergerea obictelor care au un
caracter temporar în baza de date. Foloseşte ca argumente Source Object Type şi
Source Object Name, care funcţionează la fel ca argumentele comenzii CopyObject.
Rename – utilizatorul poate schimba numele unui obiect definit în baza de
date prin folosirea acestei comenzi. Această comandă foloseşte următoarele
argumente:
151

Universitatea SPIRU HARET


1. New Name – prin introducerea unui şir de caractere în căsuţa asociată
acestui argument, utilizatorul stabileşte un nou nume pentru un obiect.
2. Old Name – căsuţa asociată acestui argument conţine o listă derulantă cu
toate numele obiectelor definite în baza de date.
3. Object Type – stabileşte 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 deţine 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 putând
să aparţină următoarelor categorii de obiecte: Form, Query, Report, Module etc.
Dacă există o comandă de OpenForm, argumentul asociat acestei comenzi va fi
FormName şi acesta va conţine 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 reprezentând un set de criterii aplicate modului de
vizualizare a înregistrărilor.
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 afişate datele care aparţin tabelei asociate sau care au fost introduse într-o
sesiune anterioară), Edit (utilizatorul poate să introducă noi înregistrări şi să le
modifice pe cele vechi), Read Only (utilizatorul poate doar să vizualizeze
înregistrările 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 indicaţie vizuală atunci când se
execută un macrou, iar timpul pentru execuţia acelui macrou este foarte mare.
MsgBox – această comandă este folosită atunci când utilizatorul doreşte
afişarea unor mesaje de avertizare în cazul încălcării unor reguli de validare, sau
atunci când utilizatorul doreşte afişarea pe ecranul monitorului a unor informaţii
suplimentare legate de date sau proceduri.
Grupuri macro şi condiţiile asociate asociate macrourilor
Grupurile macro reunesc mai multe comenzi similare sau înrudite. Pentru a
uşura modul de editare, salvare şi adresare, acestea vor fi reunite sub acelaşi nume
de grup. Pentru a atribui un nume de grup comenzilor, se va folosi opţiunea Macro
Names din meniul View.
152

Universitatea SPIRU HARET


Condiţiile 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. Acţiunea StopMacro se utilizează
pentru întreruperea repetării inutile a condiţiilor. Dacă se doreşte ca o acţiune să
funcţioneze numai când o condiţie este adevărată (True), se va utiliza StopMacro,
care să testeze condiţia False, iar dacă trebuie trecut peste un grup de acţiuni pentru
a testa o comandă macro, se introduce valoarea zero în coloana Condition a fiecărei
linii care trebuie sărită (zero este echivalent cu valoarea False). Pentru orice alte
acţiuni pentru care se doreşte să se verifice dacă condiţia de validare este adevărată,
se introduce în coloana Condition trei puncte, iar în coloana Action se introduce o
comandă.
Comenzile macro au următoarele limite:
a) nu se poate reveni asupra unei operaţii executate;
b) în mediul de lucru multiutilizator, în care există o probabilitate destul de
mare de apariţie a blocării înregistrărilor sau fişierelor, erorile de blocare nu se pot
trata în interiorul unei comenzi macro;
c) dacă o aplicaţie creată în SGBD Microsoft Access este executabilă
independent de acest sistem, o comandă macro fără a avea încorporată verificarea
de erori poate duce la distrugerea aplicaţiei.

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 aplicaţii, VBA (Visual Basic for Applications) şi este
destinat extinderii funcţiunilor specifice unei baze de date. Acest obiect Module
reprezintă o alternativă a obiectului Macro prezentat în paragraful anterior, pentru
dezvoltarea de aplicaţii în SGBD Microsoft Access.
Limbajul VBA reprezintă limbajul specific întregului pachet de birotică
Microsoft Office 2003 (pentru Word, Excel şi Access). Instrucţiunile VBA sunt
asemănătoare limbajului Visual Basic prezentat în capitolul 3. Sintaxa acestor
instrucţiuni este prezentată de un sistem de asistenţă online extins.
În programele principale ale pachetului Microsoft Office 2003, limbajul VBA
asigură posibilitatea înregistrării automate a instrucţiunilor (secvenţelor de
instrucţiuni), implementarea structurilor de control (secvenţială, alternative şi
repetitive) pentru controlul aplicaţiilor, schimbul dinamic de date cu alte aplicaţii
din familia Microsoft, capacitatea de a folosi funcţiile interfeţei de programare a
aplicaţiilor, API (Application Programming Interface) specifică sistemului de
operare Windows. În plus, prin limbajul VBA se obţine o aliniere la standardul de
realizare a conectivităţii bazelor de date extinse, ODBC (Open-DataBase
Connectivity) prin care SGBD-uri diferite pot gestiona aceeaşi bază de date
(Microsoft Access, SQL Server, Paradox, FoxPro, dBase etc.).
Aceeaşi 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 aplicaţiilor oferite
de acest pachet de programe. Ca urmare, codul VBA se compilează o dată cu
fişierul specific aplicaţiei.
Î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 aplicaţii ca un
obiect caracterizat de o mulţime de proprietăţi şi metode specifice şi care include
atât parte de conţinut (formulare, meniuri, grafice, atribute etc.), cât şi parte
funcţională (mod de manipulare a conţinutului).
Î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ă
cerinţelor unei anumite aplicaţii. În această acţiune este necesară respectarea unei
ierarhii prestabilite de colecţii de obiecte. Referirea unui obiect se obţine prin
utilizarea numelui acestuia sau a indicelui numeric al obiectului. Ierarhia de obiecte
este parcursă de la nivelul superior către nivelul inferior prin separarea numelor
obiectelor cu ajutorul punctului.
Proprietăţile obiectelor sunt atribute care definesc caracteristicile acestor
obiecte. În afară de varianta cu fereastra Properties (descrisă în capitolul cu Visual
Basic), schimbarea proprietăţilor 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.
Aşa cum s-a arătat în capitolul 2, metodele sunt acţiuni posibil a fi executate
de către obiect. Evenimentele, ca acţiuni ale utilizatorului (clic-ul mouse-ului, de
exemplu), declanşează execuţia 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 comparaţie, de concatenare şi
logici.
Instrucţiunile (comenzile) limbajului VBA asociate structurilor de control
fundamentale sunt:
a) alternative
• If…Then… Else… End If.
• Select Case…case…Case…Case…Else…End Select.
b) Repetitive
• Do (While, Until)… Exit Do…Loop
• While…WEnd
• For…To…Step [Exit For]…Next
• For each…In…[Exit For]…Next
Componentele logice ale unui program VBA sunt procedurile (subrutinele).
O procedură execută o acţiune (proceduri Sub) sau calculează o valoare
(procedură funcţie). Dintre procedurile-funcţie specifice VBA (care se accesează
din modului Expresion Builder) se menţionează Space (număr), 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 afişate î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 găsesc, organizate în
biblioteci (Libraries), obiectele, proprietăţile, 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 afişate în zona Modules din fereastra
bazei de date. În fereastra Database se alege opţiunea Modules de pe bara cu
obiecte (Objects), după care se apasă butonul New. Se afişează editorul Visual
Basic, VBE (fig.5.38).
Procedura Sub începe cu linia Sub nume_procedură(argumente), continuă cu
liniile corespunzătoare instrucţiunilor VBA specifice procedurii şi se termină cu
linia End Sub.
Se execută clic pe meniul Insert şi apoi se selectează opţiunea Procedure.
După afişarea ferestrei Add Procedure, se introduce numele procedurii (de
exemplu, proc_1) şi se selectează opţiunea Sub (la Type) şi opţiunea Public (la
Scope). Se apasă butonul OK.
De exemplu, dacă se doreşte deschiderea unui tabel al bazei de date, se
utilizează obiectul DoCmd care se scrie cu punct în linia de sub numele procedurii.
La afişarea ferestrei de opţiuni, se alege OpenTable, iar după introducerea acestei
opţiuni, se scrie numele tabelului între ghilimele.

155

Universitatea SPIRU HARET


Fig.5.38. Crearea modulului standard Modul_test

Se introduce o virgulă şi, după afişarea opţiunilor de stabilire a modului de


vizualizare, se alege opţiunea ce desemnează modul de vizualizare Normal
(acViewNormal). Se introduce din nou o virgulă care permite alegerea opţiunii de
deschidere a tabelului în editare (acEdit). În acelaşi mod se introduc şi celelalte
comenzi necesare procedurii. În final, se salvează cu opţiunea Save As cu nume
(Modul_test). Rularea se efectuează cu butonul Run. Se constată deschiderea şi
afişarea 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 oricărei aplicaţii
realizate. În comparaţie cu modelul de programare procedural, modelul de
programare bazat pe evenimente (events-driven model) presupune că acestea
gestionează toate intrările (acţionările de taste, acţionarea butoanelor mouse-ului) şi
decid la care program să fie aplicate aceste elemente. Programul primeşte mesajul
cu privire la apariţia unui eveniment şi execută secvenţa corespunzătoare acelui
eveniment.
Dacă un program nu dispune de evenimente cu care să lucreze, atunci el nu va
folosi unitatea centrală şi utilizatorul nu va cunoaşte ce eveniment ar putea urma.

156

Universitatea SPIRU HARET


Programul obţinut prin programarea bazată pe evenimente constă dintr-o
serie de programe utilitare de tratare a evenimentelor. Fiecare program utilitar îşi
execută secvenţa de instrucţiuni atunci când are loc evenimentul specific, cum ar fi:
când utilizatorul a terminat editarea controlului sau intră şi iese dintr-un control,
când se acţionează o tastă sau mouse-ul (cu simplu-clic sau dublu-clic) etc.
Evenimentele oferă ca posibilităţi;
- răspunsul la editări;
- verificarea intrărilor;
- efectuarea modificărilor în baza de date;
- ascunderea controalelor nerelevante;
- păstrarea 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 înregistrărilor înainte ca acestea să fie şterse.
Evenimentele au loc în timp ce un utilizator lucrează cu controalele dintr-un
formular. Un răspuns programat pentru un eveniment se face utilizând câmpul
Evenimente (Events) din caseta Proprietăţi (Properties). Valoarea introdusă în
acest câmp poate fi:
- numele unei comenzi macro care se va executa;
- numele unei funcţii Visual Basic care va fi executată; în acest caz, valoarea
introdusă trebuie să fie precedată de semnul “=” şi va include şi parantezele de
funcţie;
- 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ă înregistrări în baza de date,
sau când se efectuează deplasarea printre înregistrările 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 operaţiunii de
ştergere.
2. AfterInsert – evenimentul apare după ce a fost adăugată o nouă înregistrare
în baza de date.
3. AfterUpdate – evenimentul are loc după modificarea sau editarea unui
control, dar după ce selecţia a părăsit controlul respectiv.
4. BeforeDelConfirm – evenimentul intervine după ce una sau mai multe
înregistrări sunt şterse, dar înainte ca SGBD Microsoft Access să afişeze fereastra
de dialog pentru confirmarea sau anularea acţiunii de ştergere.
5. BeforeInsert – evenimentul apare în momentul în care se tipăreşte primul
caracter al unei noi înregistrări, 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 selecţia să părăsească controlul respectiv.
Evenimentul este proiectat pentru operaţia de validare a datelor de intrare, astfel
157

Universitatea SPIRU HARET


încât dacă datele introduse nu corespund logic, evenimentul poate fi întrerupt, iar
utilizatorul va relua operaţia. Dacă se doreşte 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 când o înregistrare este ştearsă din baza
de date, dar înainte de apariţia 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 când devine inactiv. Evenimentele care aparţin 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 operaţia de părăsire 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
conţine controale sau dacă toate controalele vizibile sunt dezactivate.
4. OnLostFocus – mecanismul de funcţionare al acestui eveniment este
asemănător 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 apăsarea şi/sau eliberarea unei taste sau
combinaţii de taste, atunci când controlul este selectat.
d) Evenimente asociate mouse-ului – intervin în momentul în care utilizatorul
foloseşte butoanele de la mouse.
Evenimentele OnMouseDown şi OnMouseUp asigură informaţii despre
deplasamentul (offset-ul) faţă de colţul din stânga sus al controlului unde a avut loc
evenimentul. Pentru un obiect grafic, această metodă foloseşte la detalierea
informaţiilor prezentate pe suprafaţa pe care s-a executat clic. SGBD Microsoft
Access nu conţine evenimente pentru operaţiile de tipul Drug-and-Drop (tragere cu
mouse-ul), dar acestea se pot simula prin utilizarea evenimentelor OnMouseDown
şi OnMouseUp. Evenimentul OnMouseUp conţine o informaţie de offset, care
asigură date asupra poziţiei de pe ecran în care a fost eliberat mouse-ul. Chiar dacă,
între operaţiile de apăsare şi de eliberare a butonului mouse-ului, acesta este mutat
în alt control, evenimentul OnMouseUp are loc pentru controlul care a recepţionat
evenimentul OnMouseDown.
Evenimentele OnClick şi OnDblClick apar în momentul în care utilizatorul
apasă o dată sau de două ori consecutiv pe butonul din partea stângă 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 regăsirea datelor din bazele de date relaţionale.
SQL-ul pune la dispoziţia programatorului sau a unui administrator de baze
de date următoarele facilităţi [19]:
¾ posibilitatea de modificare a structurii bazei de date;
¾ posibilitatea schimbării 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ă facilităţi multiple referitoare la actualizarea conţinutului unei baze
de date.

6.1. Noţiuni de bază referitoare la SQL

O interogare SQL nu este neapărat o întrebare pusă bazei de date, ci, cel mai
adesea, o comandă pentru executarea uneia dintre acţiunile de mai jos:
¾ să construiască sau să şteargă o bază de date;
¾ să insereze, să modifice sau să şteargă linii sau câmpuri;
¾ să caute în tabele o anumită informaţie şi să returneze rezultatele într-o
anumită ordine;
¾ să modifice securitatea informaţiilor;
¾ 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 sfârşitul
expresiei indică programului SQL în linie de comandă că interogarea este
terminată.

6.2. Blocurile componente ale operaţiei


de regăsire a datelor: SELECT şi FROM

SELECT <NUME DE COLOANĂ> FROM <TABEL>


Se consideră o bază de date MATERIALE ca model pentru următoarele
câteva exemple.

159

Universitatea SPIRU HARET


Bază de date model: MATERIALE
Nr. înreg Cod Mat UM Cant Pret_ul
1 12345 Cherestea kg 1000 150000
2 12245 Cherestea kg 1500 140000
3 11145 Cherestea kg 270 180000
4 21123 Tabla kg 1221 120000
5 21124 Tabla kg 125 140000
6 31221 Cot kg 1550 120000
7 41124 Con kg 15500 130000

Comandă: SQL> SELECT * FROM MATERIALE; (1)


Rezultatul este afişarea 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 hotărâtă de baza de date.
Semnul punct şi virgulă de la sfârşitul instrucţiunii informează interpretorul
că s-a terminat de scris interogarea.
Când coloanele nu se afişează î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 câte o virgulă, cu un spaţiu după
ultimul nume de coloană şi înainte de următoarea clauză (în acest caz FROM).
Instrucţiunea ar putea fi scrisă, de asemenea, astfel:
Comandă: SELECT Mat, Cant, Nr_înreg, Cod
FROM MATERIALE; (3)
Selectarea coloanelor individuale
Dacă selectăm doar două coloane, introducem de la tastatură următoarea
instrucţiune:
Comandă: SQL> SELECT Mat, Cant, FROM MATERIALE
WHERE Mat=’Cherestea’; (4)
Condiţii
Pentru a regăsi un anumit element sau grup de elemente în baza de date, sunt
necesare una sau mai multe condiţii. În exemplul anterior, condiţia este: Mat =
’Cherestea ’.
Dacă problema cere să găsim toate materialele care se găsesc în cantitate mai
mare de 1000 kg, putem introduce condiţia: Cant >= 1000.
Condiţiile fac posibile interogările selective. În cea mai obişnuită 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 interogări selective în SQL se bazează pe ideea submulţimilor.
O interogare selectivă returnează o submulţime de date.
Clauza WHERE
Sintaxa clauzei WHERE este:
WHERE <condiţie de căutare>
S-a văzut î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 interogările selective.
160

Universitatea SPIRU HARET


6.3. Operatori utilizaţi în SQL

Operatorii se împart în şase grupe distincte: aritmetici, de comparare,


caracter, logici, pentru mulţimi şi alţi operatori.

6.3.1. Operatorii aritmetici


Operatorii aritmetici sunt plus (+), minus (-), împărţire (/), înmulţire (*) şi
modulo (%). Primii patru sunt descrişi chiar prin numele lor.
Dacă se plasează câţiva operatori aritmetici într-o expresie fără paranteze, ei
sunt trataţi în ordinea următoare: înmulţire, împărţire, modulo, adunare, apoi scădere.
Plus (+) Se introduce comanda:
SQL> SELECT Mat, Pret_u,
Pret_u + 10000
FROM MATERIALE; (5)
Această comandă adaugă 10000 de unităţi monetare la fiecare preţ unitar şi
generează următorul rezultat:

Mat Pret_u Pret_u+10000


Cherestea 150000 160000
Cherestea 140000 150000
Cherestea 180000 190000
Tabla 120000 130000
Tabla 140000 150000
Cot 120000 130000
Con 130000 140000

Deoarece capul de tabel este neconcludent, acesta se modifică prin intro-


ducerea comenzii:
SQL> SELECT Mat, Pret_u, (Pret_u + 10000) Pret_modif
FROM MATERIALE; (6)
Se obţine:

Mat Pret_u Pret_modif


Cherestea 150000 160000
Cherestea 140000 150000
Cherestea 180000 190000
Tabla 120000 130000
Tabla 140000 150000
Cot 120000 130000
Con 130000 140000

Se pot crea noi coloane care se pot redenumi în timpul execuţiei. Redenumirea
coloanelor se face folosind sintaxa: <nume_coloană> alias.
Minus (-), Înmulţire (*), Împărţire (/) se folosesc similar cu operatorul
Plus(+).
161

Universitatea SPIRU HARET


Modulo (%) este un operator care returneză restul întreg al unei împărţiri. De
exemplu:
7%3=2
9%3=0 (7)
Operatorul modulo nu acceptă tipuri de date care conţin zecimale, ca, de
exemplu, tipul real sau number.

6.3.2. Operatorii de comparaţie


Operatorii de comparaţie sunt: Egal (=), Mai mare decât (>), Mai mare sau
egal (>=), Mai mic decât (<), Mai mic sau egal (<=) şi Inegalitate (<> sau !=).
După cum arată şi numele lor, operatorii de comparaţie compară expresiile şi
returnează una din următoarele trei valori: TRUE (adevărat), FALSE (fals), sau
UNKNOWN (necunoscut). Pentru a înţelege noţiunea UNKNOWN (necunoscut),
trebuie s-o asociem conceptului NULL (nul). În termenii folosiţi pentru baze de
date, NULL semnifică absenţa datelor dintr-un câmp. Nu înseamnă că o coloană
conţine o valoare zero sau un spaţiu. Un zero sau un spaţiu sunt valori. NULL
înseamnă că în câmpul respectiv nu se găseşte nimic. Dacă faceţi o comparaţie de
genul câmp = no şi câmp este NULL, comparaţia 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 decât (>) şi Mai mare sau egal (>=). Operatorul mai mare decât
(>) acţionează în felul următor:
Comandă: SELECT Nr_inreg, Cod, Mat, UM, Cant, Pret_u
FROM MATERIALE (8)
WHERE Cant >1000 AND Mat=’Cherestea’;

Nr. înreg Cod Mat UM Cant Pret_u


2 12245 Cherestea kg 1500 140000

În mod similar acţionează şi ceilalţi operatori de comparaţie Mai mare sau


egal (>=), Mai mic decât (<), Mai mic sau egal (<=) şi Inegalitate (<> sau !=).

6.3.3. Operatorii caracter


Există mai mulţi operatori caracter, dintre care se vor prezenta: LIKE,
UNDERSCORE, Concatenarea.
LIKE presupune a găsi într-o bază de date acele înregistrări care nu
corespund în totalitate unui model. Forma sa este următoarea:
SQL> SELECT *
FROM nume bază de date (9)
WHERE nume-câmp 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


Execuţia acestei comenzi are ca efect apariţia acelor înregistrări în care Mat
începe cu litera C. De remarcar că LIKE diferenţiază 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 Cod Mat UM Cant Pret_u


6 31221 Cot kg 1550 120000
7 41124 Con kg 15500 130000

Într-o instrucţiune SELECT pot apărea mai multe semne underscore. De


asemenea, se poate regăsi 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 foloseşte 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 următorii: AND, OR, NOT.
Operatorul AND utilizat între două expresii presupune ca ambele să fie
adevărate pentru ca acestea să returneze valoarea de adevăr 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 condiţii. Când cel
puţin una dintre condiţii este adevărată, OR returnează valoarea TRUE.
Operatorul NOT
În cazul aplicării unei condiţii care are valoarea TRUE, operatorul NOT o va
schimba în FALSE. În situaţia în care condiţia care urmează operatorului NOT are
valoarea FALSE, ea va deveni TRUE.

6.3.5. Operatorii pentru mulţimi


UNION şi UNION ALL
UNION returnează rezultatele a două interogări (selecţii), mai puţin liniile
duplicate. UNION ALL returnează rezultatele tuturor interogărilor (selecţiilor),
mai puţin liniile duplicate.
163

Universitatea SPIRU HARET


INTERSECT
Operatorul INTERSECT (intersecţie) returnează numai liniile comune găsite
în ambele interogări (selecţii).
MINUS
MINUS (cea de DIFERENŢA) returnează liniile din prima interogare
(selecţie) care nu fac parte din a doua interogare (selecţie).

6.3.6. Alţi operatori, IN şi BETWEEN


Cei doi operatori IN (În) şi BETWEEN asigură folosirea unei forme scurte
pentru funcţii 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. Funcţii în SQL

Caracteristicile generale ale funcţiilor


Funcţiile din SQL permit executarea calculului sumei pe o coloană sau
conversia tuturor caracterelor unui şir în litere mari. Ele se clasifică în:
¾ Funcţii pentru calculul totalurilor.
¾ Funcţii pentru data calendaristică şi oră.
¾ Funcţii aritmetice.
¾ Funcţii caracter.
¾ Funcţii de conversie.
¾ Funcţii diverse.
Aceste funcţii dezvoltă capacitatea de manipulare a informaţiilor regăsite pe
baza funcţiilor de bază ale SQL. Primele cinci funcţii, COUNT, SUM, AVG, MAX
şi MIN, sunt funcţii pentru calculul totalurilor şi sunt definite în standardul ANSI.

6.4.1. Funcţii pentru calculul totalurilor


Aceste funcţii se mai numesc funcţii de grup. Ele returnează o valoare bazată
pe valorile unei coloane.
Funcţia COUNT returnează numărul de linii care respectă condiţia din
clauza WHERE. SQL> SELECT COUNT(*)
FROM MATERIALE
WHERE Pret_u < 140000; (15)

Nr. înreg Cod Mat UM Cant Pret_u


4 21123 Tabla kg 1221 120000
6 31221 Cot kg 1550 120000
7 41124 Con kg 15500 130000
164

Universitatea SPIRU HARET


Funcţia SUM returnează suma tuturor valorilor dintr-o coloană.
Pentru tabelul MATERIALE, dacă se calculează suma preţurilor unitare
pentru materialele date, se va scrie:
SQL> SELECT SUM (Pret_u) Total
FROM MATERIALE; (16)
Total
980000
Funcţia SUM are efect numai asupra câmpurilor numerice.
Funcţia AVG calculează valoarea medie a unei coloane.
Funcţia MAX returnează valoarea maximă dintr-o coloană numerică a
tabelului.
Funcţia MIN operează în acelaşi mod ca MAX, cu excepţia faptului că
returnează cea mai mică valoare dintr-o coloană.
Funcţia VARIANCE are ca rezultat dispersia, adică pătratul unei deviaţii
standard şi operează numai cu numere sau cu variabile de tip numeric.
Funcţia STDDEV calculează abaterea sau deviaţia standard a unei coloane
de numere (sau variabile numerice).
Pentru aceste funcţii 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.Funcţii dedicate pentru dată calendaristică şi oră


Funcţia ADD_MONTHS (Adaugă luni) adaugă un număr de luni la o dată
calendaristică specificată în cadrul sau în afara instrucţiunii SELECT. Funcţia
operează cu tipuri de dată caracter sau numeric, însoţită de o pereche de funcţii
ajutătoare, TO CHAR şi TO DATE.
Funcţia LAST_DAY întoarce ca rezultat ultima zi a unei luni specificate.
MONTHS_BETWEEN (Lunile dintre)
Funcţia se foloseşte pentru a afla câte luni sunt între luna x şi luna y.
Funcţia NEW_TIME (Ora nouă) serveşte dacă se doreşte a se corecta ora în
funcţie de ora unui anumit teritoriu.
Funcţia NEXT_DAY găseşte numele primei zile din săptămână egală sau
ulterioară unei date calendaristice specificate.
Funcţia SYSDATE (data şi ora calendaristică a sistemului) returnează data şi
ora calendaristică a sistemului.

6.4.3. Funcţii aritmetice


ABS returnează valoarea absolută a unui număr indicat. Această funcţie
transformă toate numerele negative în numere pozitive şi lasă numerele pozitive
neschimbate.
CEIL şi FLOOR. Prima dintre aceste funcţii, CEIL, returnează cel mai mic
număr întreg care este mai mare sau egal cu un argument dat. A doua, FLOOR,
face exact operaţia inversă, returnând cel mai mare număr întreg care este egal sau
mai mic cu un argument dat.
165

Universitatea SPIRU HARET


COS, COSH, SIN, SINH, TAN, TANH
Funcţiile COS, SIN, TAN oferă baza pentru numeroase operaţii
trigonometrice. Funcţiile COSH, SINH, TANH returnează valorile hiperbolice ale
argumentelor primite ca parametri. Toate aceste funcţii operează presupunând că
argumentul de intrare are valoarea în radiani.
EXP (exponenţială) serveşte pentru a ridica constanta ’e’ la o putere.
LN şi LOG sunt două funcţii 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
funcţia MOD. Interogarea:
POWER
Pentru a ridica un număr la putere, se utilizează funcţia POWER. În această
funcţie, primul argument este ridicat la puterea exprimată prin al doilea argument.
SIGN
Funcţia SIGN returnează valoarea –1 dacă argumentul primit este mai mic
decât 0, 0 dacă argumentul primit este egal cu 0 şi 1 dacă argumentul său este mai
mare decât 0.
SQRT
Funcţia SQRT returnează rădăcina pătrată a argumentului primit. Deoarece
rădăcina pătrată a unui număr negativ nu este definită, nu putem folosi această
funcţie pentru numere negative.

6.4.4. Funcţii caracter


CHR
Funcţia CHR returnează caracterul echivalent cu numărul folosit ca
argument. Caracterul este returnat în funcţie de setul de caractere din numele
câmpului care aparţine bazei de date.
CONCAT
Funcţia CONCAT este echivalentă semnului // (concatenare).
INITCAP
Această funcţie configurează un cuvânt astfel: prima literă din cuvânt este
literă mare, iar toate celelalte sunt caractere mici.
LOWER şi UPPER
LOWER modifică toate caracterele în litere mici, iar UPPER realizează
operaţia inversă.
LPAD şi RPAD
Aceste două funcţii 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 spaţiilor adăugate. Al treilea argument are ca valoare prestabilită
spaţiu sau poate fi un singur caracter sau un şir de caractere.
LTRIM şi RTRIM
Aceste funcţii primesc unul sau două argumente. Primul argument este un şir
de caractere. Al doilea argument opţional este un caracter sau un şir de caractere
sau are valoarea prestabilită spaţiu. Dacă pentru al doilea argument se utilizează o
valoare diferită de spaţiu, aceste funcţii de aliniere vor alinia respectivul caracter în
acelaşi mod în care aliniază şi spaţiile.
166

Universitatea SPIRU HARET


REPLACE
Funcţia REPLACE execută operaţiuni de înlocuire. Din cele trei argumente
ale sale, primul este şirul care trebuie căutat. Al doilea argument este cheia de
căutare. Ultimul argument este şirul opţional de înlocuire. Dacă al treilea argument
lipseşte sau este NULL, toate secvenţele identice cu cheia de căutare din şirul
respectiv sunt eliminate şi nu sunt înlocuite cu nimic.
SUBSTR
Această funcţie are trei argumente şi permite preluarea unei părţi din şirul
destinaţie. Primul argument este şirul destinaţie. Al doilea argument este poziţia
primului caracter ce trebuie afişat. Al treilea argument semnifică numărul de
caractere care trebuie tipărite la ieşire.
TRANSLATE
Funcţia TRANSLATE primeşte, de asemenea, trei argumente. Primul este şirul
destinaţie. Apoi, este şirul FROM, urmat de şirul TO. Elementele şirului destinaţie, care
sunt identice cu şirul FROM, sunt înlocuite cu elementele corespondente din şirul TO.
INSTR
Se foloseşte pentru a găsi într-un şir un anumit caracter. Primul argument al
acestei funcţii este şirul destinaţie. Al doilea argument este caracterul care trebuie găsit.
Următoarele două argumente sunt numere ce reprezintă locul de unde începe căutarea
în şir şi, respectiv, al câtelea element este cel identic cu caracterul ce trebuie afişat.
LENGH
Funcţia LENGH returnează lungimea singurului argument (câmp) caracter pe
care îl primeşte.
FUNCŢII DE CONVERSIE
Sunt trei funcţii de conversie care pun la dispoziţie o metodă rapidă de
convertire a unui tip de dată în alt tip de dată.
TO_CHAR
Modul uzual de operare a acestei funcţii este conversia unui număr într-un
caracter. Alte implementări ale limbajului folosesc această funcţie pentru a converti
în caracter alte tipuri de date, ca de exemplu DATE.
TO_NUMBER
Această funcţie este perechea funcţiei TO_CHAR şi primeşte ca parametru
un şir pe care îl converteşte într-un număr.

6.5. Clauze utilizate în SQL

Se prezintă mai întâi sintaxa generală a instrucţiunii 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 condiţie]
[GROUP BY expresie [, expresie]…[HEAVING condiţie] ]
[{UNION | UNION ALL | INTERSECT | MINUS} SELECT comanda]
[ORDER BY {expresie | poziţie } [ASC | DESC]
[, {expresie | poziţie} [ASC | DESC] ] …] (18)
167

Universitatea SPIRU HARET


Clauza WHERE
Utilizând doar SELECT şi FROM, acţiunea este limitată la returnarea tuturor
liniilor din tabel. Există însă cuvântul cheie WHERE pentru stabilirea de selecţii
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
Când apare necesitatea ca rezultatele interogării să fie prezentate într-o
anumită ordine, se utilizează clauza ORDER BY. Instrucţiunea SELECT FROM
oferă o listă, iar în cazul în care nu s-a definit o cheie primară, interogarea va
apărea în ordinea introducerii înregistrărilor. Clauza ORDER BY oferă o metodă
de ordonare a rezultatelor operaţiilor. De exemplu, dacă se doreşte ordonarea listei
materialelor după Cod, se procedează în modul următor:
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 funcţii totalizatoare într-o instrucţiune
de comparare, asigurând pentru funcţiile totalizatoare ceea ce WHERE asigură
pentru înregistrările individuale.

6.6. Joncţiuni

Noţiuni şi obiective ale joncţiunilor


O caracteristică de bază a SQL-ului este capacitatea de grupare şi manipulare
a datelor din mai multe tabele. Tabelele foarte complexe care conţin multe câmpuri
şi multe înregistrări sunt mult mai greu de întreţinut decât cele mici şi specifice. Or,
tocmai acest avantaj îl oferă funcţia JOIN din SQL. Joncţiunile pe care le pune la
dispoziţie SQL-ul sunt
¾ Joncţiuni externe.
¾ Joncţiuni stânga.
¾ Joncţiuni dreapta.
¾ Echi-joncţiuni.
¾ Non-echi-joncţiuni.
¾ Joncţiunea unui tabel cu el însuşi (auto-joncţiunea).
Regula de bază a joncţiunilor este aceea că ele „lipesc” tabelele. Pentru
tabelele care intră în joncţiune se folosesc alias-uri pentru a le deosebi.
Diferenţa între echi-joncţiune şi non-echi-joncţiune este aceea că prima
utilizează semnul egal în instrucţiunea WHERE, în timp ce non-echi-joncţiunea
foloseşte oricare alt semn de comparaţie în afară de egal.
168

Universitatea SPIRU HARET


Există, de asemenea, joncţiuni externe care sunt complementare joncţiunilor
interne. Joncţiunea internă este aceea în care liniile unui tabel sunt combinate cu
liniile altui tabel, reprezentând un număr total de linii dat de produsul numărului de
linii din fiecare tabel, linii folosite pentru a determina rezultatul unei clauze WHERE.
O joncţiune internă are ca format general:
SQL> SELECT alias1.câmp1, [alias1.câmp1,...],
alias2.câmp2, [alias2.câmp2,...]
FROM TABEL alias1
JOIN TABEL2 ON TABEL2.câmp <condiţie> (22)
O joncţiune externă are aceeaşi formă, numai că înaintea cuvântului cheie
JOIN apare RIGHT OUTHER sau LEFT OUTHER.
Joncţiunea unui tabel cu el însuşi se comportă ca JOIN-ul pe două tabele diferite.

Subinterogări
O subinterogare este o interogare ale cărei rezultate sunt transmise ca
argumente unei alte interogări. Ele sunt elementele de legătură între mai multe
interogări.
Imbricarea subinterogărilor
Imbricarea este operaţia de lipire a mai multor subinterogări în serie, forma
generală fiind:
SQL> SELECT *
FROM TABEL
WHERE (23)
(subinterogare1(subinterogare2(subinterogare3);
Există şi subinterogări corelate, care permit folosirea unei referinţe externe.

6.7. Instrucţiuni de manipulare a datelor

Instrucţiunea INSERT
Instrucţiunea INSERT (Inserează) este asociată operaţiei de introducere a
datelor într-o bază de date. Ea poate fi: INSERT...VALUES şi
INSERT...SELECT
Instrucţiunea INSERT...VALUES este utilizată la introducerea datelor într-
un tabel, înregistrare cu înregistrare. Este utilă pentru operaţii care presupun lucrul
cu tabele care au înregistrări puţine.
Forma generală a comenzii este:
SQL> INSERT INTO TABEL
(col1, col2, col3,…)
VALUES (valoare1, valoare2, valoare3,…) (24)
Funcţia principală a acestei instrucţiuni este adăugarea unei înregistrări într-un
tabel folosind coloanele menţionate şi valorile corespondente. La inserarea datelor
într-un tabel prin folosirea acestei instrucţiuni, trebuie respectate următoarele reguli:
¾ valorile folosite trebuie să aibă acelaşi tip de dată ca şi câmpurile în care
sunt adăugate;
¾ dimensiunea datei introduse trebuie să fie mai mică decât dimensiunea
coloanei. De exemplu, un şir de 25 de caractere nu poate fi scris într-un câmp de
10 caractere;
169

Universitatea SPIRU HARET


¾ localizarea datei în lista VALUES trebuie să corespundă locaţiei din lista
de coloane în care este adăugată (adică, prima valoare trebuie să fie introdusă în
prima coloană, a doua
Inserarea valorilor NULL
Când este creată o coloană, i se poate atribui câteva caracteristici. Una dintre
aceste caracteristici este aceea că respectiva coloană ar putea avea (sau nu)
capacitatea de a conţine valori NULL. O valoare NULL înseamnă că valoarea este
vidă. Nu este nici zero, în cazul unui întreg, nici spaţiu, în cazul unui şir. În locul
acestora nu există nici un fel de dată în coloana înregistrării respective. Când
coloana are definiţia NOT NULL, înseamnă că acestei coloane nu i se permite să
conţină valori NULL, deci ea trebuie să conţină o valoare.
Instrucţiunea INSERT este anulată în cazul în care această regulă nu este
respectată şi se recepţionează un mesaj de descriere a erorii apărute.
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 apărea mai mult
de o singură dată. Această configurare poate genera probleme la inserarea sau
actualizarea valorilor într-o bază de date existentă.
Instrucţiunea INSERT…SELECT
Instrucţiunea INSERT…VALUES este utilă la adăugarea înregistrărilor
simple într-un tabel al bazei de date, dar are evident restricţiile sale. În cazul
tabelelor cu înregistrări foarte numeroase, este mult mai indicată utilizarea
instrucţiunii INSERT…SELECT. Această instrucţiune permite utilizatorului să
copieze într-un tabel informaţii dintr-un alt tabel sau grup de tabele. Deseori,
pentru creşterea performanţei sunt create tabele de căutare. Tabelele de căutare pot
conţine date care cuprind mai multe tabele din mai multe baze de date.
Sintaxa unei instrucţiuni INSERT…SELECT este următoarea:
SQL> INSERT INTO TABEL (col1, col2,…)
SELECT Col1, Col2,…
FROM TABEL
WHERE condiţie de căutare; (25)
Este important de reţinut că ieşirea unei interogări standard de tip SELECT
devine intrare într-un alt tabel al unei baze de date. Aceleaşi reguli se aplică în
cazul instrucţiunii INSERT...VALUES.
Sunt câteva reguli care trebuie respectate la folosirea instrucţiunii
INSERT...SELECT:
¾ instrucţiunea SELECT nu poate selecta linii din tabelul care a fost inserat;
¾ numărul de coloane din instrucţiunea INSERT...SELECT trebuie să fie
egal cu numărul de coloane returnate de instrucţiunea SELECT;
¾ tipurile de date ale coloanelor din instrucţiunea INSERT SELECT trebuie
să fie aceleaşi cu tipurile de date ale coloanelor returnate de instrucţiunea SELECT.
Instrucţiunea UPDATE
Instrucţiunea UPDATE (Actualizează) are rolul de a actualiza valorile unui
tabel, dar este folosită şi pentru modificarea valorilor din înregistrările existente.
Sintaxa instrucţiunii UPDATE este următoarea:
170

Universitatea SPIRU HARET


SQL> UPDATE TABEL
SET Col1 = Valoare1
[Col2 = Valoare2]…
WHERE condiţie de căutare (26)
Această instrucţiune verifică în primul rând clauza WHERE. Pentru toate
înregistrările din tabelul dat în care clauza WHERE este evaluată la valoarea
TRUE., valoarea corespunzătoare este actualizată.
Instrucţiunea DELETE
La fel de frecvent ca şi adăugarea de date într-o bază de date, apare
necesitatea de ştergere a altor date pe baza unei anumite operaţii din program.
Sintaxa instrucţiunii DELETE (Şterge) este următoarea:
SQL> DELETE FROM TABEL
WHERE condiţie (27)
Instrucţiunea DELETE are următoarele caracteristici:
¾ Instrucţiunea DELETE nu poate fi folosită pentru ştergerea unei valori
dintr-un câmp individual (pentru aceasta se foloseşte instrucţiunea UPDATE).
Instrucţiunea DELETE şterge înregistrări complete dintr-un singur tabel.
¾ Ca şi instrucţiunile INSERT şi UPDATE, operaţia de ştergere a
înregistrărilor dintr-un singur tabel poate determina apariţia unor probleme de
integritate referenţială în cadrul altor tabele. Acest aspect trebuie reţinut atunci
când se modifică datele dintr-o bază de date.
¾ Prin folosirea instrucţiunii DELETE se pot şterge numai înregistrări din
tabel, nu şi tabelul. Pentru eliminarea unui tabel se foloseşte instrucţiunea DROP
TABLE.
CREATE TABLE construieşte un tabel nou în formatul dat, iar DROP
TABLE şterge tabelul respectiv. Instrucţiunea DROP TABLE elimină un tabel
pentru totdeauna, în timp ce DELETE FROM <TABEL> şterge numai
înregistrările dintr-un tabel.

6.8. Crearea şi întreţinerea tabelelor

Instrucţiunea CREATE DATABASE are sintaxa generală:


SQL> CREATE DATABASE NUME_BAZĂ_DE _DATE (28)
Instrucţiunea CREATE TABLE are sintaxa generală:
SQL> CREATE TABLE NUME_TABEL
(Câmp1 tip_de_dată [NOT NULL],
Câmp2 tip_de_dată [NOT NULL],
Câmp3 tip_de_dată [NOT NULL]…) (29)
Instrucţiunea ALTER TABLE
În cazul în care baza de date nu poate memora toate datele necesare,
instrucţiunea ALTER TABLE permite administratorului de sistem sau
proiectantului să modifice structura unui tabel.
Sintaxa instrucţiunii ALTER TABLE este următoarea:
SQL> ALTER TABLE NUME_TABEL
<ADD Nume_coloană tip_de dată; |
MODIFY Nume_coloană tip_de dată;> (30)
171

Universitatea SPIRU HARET


Instrucţiunea ALTER TABLE are o serie de restricţii, cum sunt:
¾ instrucţiunea nu poate fi utilizată pentru adăugarea sau ştergerea unor
câmpuri din baza de date;
¾ se poate utiliza pentru modificarea atributului din NOT NULL în NULL
pentru un câmp al bazei de date, dar nu şi în sens invers;
¾ modificarea unui câmp din NULL în NOT NULL poate fi eficient făcută
cu această instrucţiune numai când câmpul respectiv nu conţine valori NULL.
Instrucţiunea DROP TABLE serveşte 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 următoare:
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 reţea de calculatoare şi de comunicaţii dintr-o organizaţie economică,


unul dintre modelele de bază pe care se fundamentează funcţionarea reţelei îl
constituie modelul client/server, susţinut de arhitecturi adecvate în funcţie de
numărul de entităţi componente ale lanţului de lucru în reţea a unei aplicaţii ale
cărei elemente – prezentare, procesare şi date – se găsesc pe acelaşi calculator sau
sunt distribuite pe calculatoare diferite (în varianta standard, datele sunt stocate pe
server, procesarea este divizată între server şi client, iar prezentarea aparţine
clientului). Aceste arhitecturi client/server pot fi cu două entităţi (two-tier), cu trei
entităţi (three-tier) sau cu mai multe entităţi (n-tier). Toate calculatoarele care se
găsesc între server şi client alcătuiesc ceea ce se denumeşte generic middleware
(mediul de mijloc).
Serverul, ca noţiune de bază, prezintă două accepţiuni:
• un calculator dedicat pe care este instalat un soft pentru gestionarea
accesului într-o reţea locală de calculatoare (LAN), inclusiv gestionarea accesului
la resursele din reţea din partea calculatoarelor – staţii de lucru (workstations);
• un program (conceput pe un model de proces distinct) sau un calculator
care răspunde 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, noţiunea de server trebuie considerată în reţea sub cele două
aspecte hard-soft (dualitatea hard-soft). Cea de-a doua accepţiune prezentată mai sus
pentru server caracterizează arhitectura client/server ce permite divizarea procesului
specific aplicaţiei în două componente distincte, denumite client (« front-end ») şi
server (« back-end »). De regulă, componenta client este reprezentată de un
calculator mai puţin pretenţios, independent, ce se prezintă utilizatorului cu toate
resursele la dispoziţie. Spre deosebire de aceasta, componenta server este un sistem
de calcul (microcalculator puternic, minicalculator sau un calculator mare -
mainframe) cu caracteristici tehnologice maximale momentului implementării în
mediu distribuit (gestionare date, partajare resurse între clienţi, securitate sporită,
administrare avansată în cadrul reţelei de calculatoare şi de comunicaţii).
Cu ajutorul arhitecturii client-server se obţin: conectarea în reţea a mai multe
calculatoare de diferite tipuri (mainframe şi microcalculatoare), tratarea unitară a
bazelor de date aflate pe diferite calculatoare din reţea, 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) - răspuns (response). Clientul, prin
adresarea cererii de serviciu către server, interoghează baza de date ce se găseşte
stocată pe server. Serverul gestionează baza de date şi răspunde interogării adresate
de client. În dialogul client-server, pot exista următoarele cazuri: client-server, client
pasiv şi server pasiv. Cazul cu client pasiv se întâlneşte atunci când se realizează
conexiuni cu prelucrare gazdă (host procesing) pe un server de tip mainframe, iar
clientul este un terminal cu rol neimportant în execuţia operaţiilor necesare efectuării
dialogului. Cazul cu server pasiv se constată atunci când cele mai multe aplicaţii se
efectuează de către client, serverul îndeplinind doar rolul de server de fişiere (File
Server) şi/sau server de imprimare (Print Server). Cel mai eficient este cazul client-
server când activităţile sunt divizate în mod echilibrat între client şi server.
Există şi situaţia în care cele două entităţi, server şi client, sub aspect software,
pot coexista pe acelaşi calculator. Dacă cele două entităţi sunt instalate pe acelaşi
calculator, atunci acest calculator are instalat un sistem de operare pentru multi-
procesare, deoarece clientul şi serverul reprezintă procese distincte. În reţeaua de
calculatoare şi de comunicaţii, un client poate adresa cereri către mai multe servere.
De asemenea, un server poate răspunde la cererile adresate de mai mulţi clienţi.
În evoluţia sa, arhitectura client-server a cunoscut mai multe generaţii:
• Generaţia I, care se caracterizează prin faptul că server-ul stochează baza
de date relaţională, iar clientul stochează şi execută aplicaţia client. Cererile SQL
sunt formulate de aplicaţia client către SGBDR de pe server. Execuţia acestor
cereri de interogare şi transmiterea răspunsului se efectuează de către entitatea
server. Entitatea client poate executa următoarele apeluri la transport:
- SendRequest, ceea ce înseamnă: clientul anunţă serverul asupra operaţiilor
ce urmează a fi executate;
- ReceiveReply, prin care se asigură recepţionarea răspunsului de la server de
către client.
În acelaşi timp, la entitatea server, apelurile specifice sunt următoarele:
- ReceiveRequest, care semnifică faptul că entitatea server recepţionează
cereri de interogare de la entitatea client ;
- SendReply, care înseamnă că serverul transmite răspunsul către entitatea
client, răspuns ce corespunde cererii de interogare adresate anterior.
• Generaţia a II-a, caracteristică anilor ’90 ai secolului XX, orientată pe
obiecte. Entitatea server asigură mai multe clase de servicii clienţilor: execuţia
aplicaţiilor; interfeţe grafice destinate dialogului cu utilizatorul; accesul la fişierele
şi bazele de date administrate de SGBDR de pe server.
Există mai multe tipuri de client-server, în funcţie de importanţa acordată
unei sau alteia dintre componentele « triadei » stocare – prelucrare – prezentare:
1) client - server de prezentare, în care un proces este destinat funcţiei de
asigurare a dialogului cu utilizatorul, iar celelalte procese considerate realizează
gestionarea datelor şi execuţia aplicaţiilor;
2) client - server de date, în care utilizatorul are acces la datele administrate
de server utilizând o aplicaţie-client, cu ajutorul cererilor de interogare SQL;
3) client - server de proceduri pentru prelucrare, în care aplicaţia-client
poate realiza controlul execuţiei procedurilor stocate pe server prin intermediul
unei interfeţe specializate.
174

Universitatea SPIRU HARET


Cel mai răspândit este tipul combinat client-server de date, de prezentare şi
de proceduri pentru prelucrare care prezintă următoarele componente (fig.7.1):
• clienţii, care se ocupă cu gestionarea codului aplicaţiei client şi care dispun
de interfaţe interactive şi prietenoase cu utilizatorii finali;
• serverul, care stochează baza de date, gestionează conectarea şi accesul la
baza de date, gestionează logica aplicaţiei, asigură securitatea bazei de date;
• reţeaua, care asigură conectarea şi comunicarea dintre clienţi şi server (1)
şi între servere (2).
În general, aplicaţiile client-server pot fi aplicaţii cu baze de date distribuite,
aplicaţii de poştă electronică, aplicaţii groupware (ce permite unui grup de
utilizatori dintr-o reţea să colaboreze la realizarea unui anumit proiect şi care oferă
servicii de comunicaţii (e-mail), de planificare şi de administrare a proiectelor, de
elaborare în comun a documentelor de diferite tipuri – text, multimedia) etc.
Avantajele utilizării arhitecturii client-server sunt multiple, dintre acestea
menţionându-se: administrarea centralizată, de pe server, a bazei de date;
micşorarea dimensiunilor aplicaţiilor; reducerea traficului în reţea; securitate
sporită a bazelor de date stocate pe server; manipularea de către utilizatori,
conform drepturilor de acces, a procedurilor stocate.
În aplicaţiile de baze de date pe Web se utilizează arhitectura cu trei niveluri:
client, aplicaţie şi date. Nivelul client permite unui utilizator să comunice cu baza
de date prin Web, cu ajutorul unei interfeţe specializate asigurate de către browser-
ul Web la dispoziţie.

• Stocare bază de date • Gestionare cod aplicaţie client


• Conectare şi acces la baza de date • Interfaţă interactivă cu
• Gestionare logică aplicaţie utilizatorul final
• Asigurare securitate bază de date

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


şi de proceduri pentru prelucrare

Nivelul aplicaţie reprezintă nivelul cu aplicaţii la îndemâna utilizatorului


final, pe serverul Web care, prin intermediul protocolului HTTP, recepţionează
cererile clienţilor, le prelucrează şi le transmite către o altă aplicaţie sau/şi către
nivelul de date. Nivelul date conţine sistemul de gestiune a bazelor de date (SGBD),
care conţin, 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 aplicaţii 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 redactării prezentei lucrări, este anunţată versiunea Microsoft SQL
Server 2005.
Stocarea informaţiilor pe serverul de baze de date Microsoft SQL Server se
face în baze de date, fişiere şi grupuri de fişiere. 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 aplicaţie; 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
aplicaţie asigură aplicarea permisiunilor la un nivel mai înalt decât nivelul pe care
se găseşte fiecare utilizator. Atunci când o aplicaţie activează un rol la nivel de
aplicaţie, 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 număr de
permisiuni şi capabilităţi. Numele rolului este necesar să fie unic la baza de date.
Apartenenţa la un rol fix al unei baze de date nu are legătură cu permisiunile
acordate pentru o altă bază de date.
SQL Server permite realizarea salvărilor de siguranţă (backup).
SQL Server este însoţit de utilitare şi instrumente care asigură următoarele
servicii:
1. MSSQLServer, ce reprezintă serverul propriu-zis de baze de date;
2. MSSearch, care asigură indexarea câmpurilor de tip text care operează sub
SQL Server;
3. SQLServerAgent, ce realizează planificarea operaţiilor, gestionarea eve-
nimentelor, replicarea, generarea avertismentelor;
4. MSDTC (Microsoft Distributed Transaction Coordinator), adică coordo-
natorul tranzacţiilor 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.
Instanţa î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 execuţia a cel mult 16 astfel de instanţe. Instanţele SQL Server
pot fi prestabilite (este acceptată o singură instanţă prestabilită pe un anumit
calculator) sau denumite (acele instanţe cărora li s-a dat un nume la instalare).
Două instanţe denumite de pe acelaşi calculator nu sunt acceptate cu acelaşi nume.
176

Universitatea SPIRU HARET


Firma Microsoft a realizat controlul fiecărui serviciu prin mai multe metode
realizabile prin utilitare şi instrumente asociate SQL Server (instalate într-o copie
unică, indiferent de numărul de instanţe instalate ale SQL Server). Utilitarele
asociate SQL Server sunt următoarele:
• 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 deserveşte procesul de
conectare a unui calculator client la SQL Server).
• Server Network, care este un utilitar pentru indicarea bibliotecilor de reţea
pe care le poate utiliza SQL Server (pentru bibliotecile ce conţin date confidenţiale
la care nu se permite accesul, se execută criptarea de către server a căilor de
conectare la bibliotecile respective).
• SQL Server Query Analyser, care este utilitarul destinat executării
interogărilor 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ă interfaţa grafică de dezvoltare şi administrare din SQL Server.
• SQL Server Profiler, ce reprezintă utilitarul pentru monitorizarea întregii
activităţi executate de SQL Server.
Utilitarele prezentate mai sus se găsesc în meniul Start al SQL Server. În
afară de aceste utilitare de bază, au fost realizate instrumente pentru conectare,
pentru diagnosticarea serverului şi pentru întreţinere.
Noţiunea de replicare a fost explicată parţial î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
publicaţii. Abonaţii sunt calculatoarele utilizatorilor datelor. Un sistem SQL Server
poate juca în scenariul de tip editor-abonat unul, două sau trei roluri din mulţimea
de roluri {editor, abonat, distribuitor}. Rolul de distribuitor presupune
recepţionarea tuturor modificărilor efectuate de abonaţi sau editori, memorarea
acestor date şi apoi trimiterea lor la editori sau abonaţi, la un anumit moment.
Articolul reprezintă un tabel sau o mulţime de date dintr-un tabel, obţinută prin
partiţionare. Publicaţia este ansamblul mai multor articole combinate. Articolele şi
publicaţiile pot fi primite de abonaţi prin efectuarea de abonamente. Abonamentele
pot fi configurate în abonamente de intrare (configurate la nivelul fiecărui abonat)
şi abonamente de ieşire (configurarea abonamentului se produce simultan cu
crearea publicaţiei).
Replicarea asigură un mediu de lucru ce facilitează duplicarea şi distribuirea
mai multor copii (replici) ale aceloraşi date, în mai multe baze de date din reţea (în
mai multe locaţii). În distribuirea datelor prin această metodă se au în vedere
autonomia locaţiei, consistenţa tranzacţională (care nu trebuie să afecteze
consistenţa datelor) şi latenţa distribuirii (întârzierea).
SQL Server permite utilizarea următoarelor metode de distribuire a datelor [60]:

177

Universitatea SPIRU HARET


• replicarea cu combinare (fiecare locaţie îşi poate modifica copia locală a
datelor replicate, astfel încât editorul combină modificările primite de la aceste
locaţii);
• replicarea copiilor integrale (prin transferul unei copii de ansamblu a
datelor replicate de la editor la abonaţi);
• replicarea tranzacţională (adică tranzacţiile sunt copiate de pe serverul
editor la abonaţi, fără existenţa reversului de la abonaţi la editor);
• abonarea cu actualizare (la care acualizarea poate fi imediată, cu fir de
aşteptate sau combinată – imediată şi cu fir de aşteptare);
• replicarea copiilor integrale cu actualizare la abonaţi (prin aceasta,
abonatul nu este necesar să se afle în contact permanent cu editorul);
• replicarea tranzacţională cu actualizare la abonaţi ;
• tranzacţiile distribuite (cu MSDTC, cu aplicarea simultană a tranzacţiilor
la toţi abonaţii).
Replicarea este asigurată de cinci agenţi: agent de distribuţie, agent de citire
din jurnalele de tranzacţii specifice tuturor bazelor de date publicate, agent de
combinare, agent de copiere şi agent de citire din firul de aşteptare.
Datele pot fi publicate pe Internet prin mai multe metode. Se apreciază
([60],[67]) că una dintre cele mai sigure metode este tehnologia reţelei private
virtuale, VPN (Virtual Private Network). Prin VPN se pot conecta două reţele prin
utilizarea Internetului, cu protocoalele specifice, folosind servere proxy
(intermediare) către serverele SQL.
SQL Server foloseşte patru baze de date:
- master, ce conţine configurările 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ă
când utilizatorul creează o bază de date nouă;
- tempdb, ce este o bază de date care stochează tabele temporare şi
rezultatele intermediare ale unor interogări;
- 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 conţin
înregistrări ale bazei de date; vederi (views); indecşi (indexes); proceduri stocate
(procedures); declanşatori (triggers). Fizic, o bază de date include cel puţin două
fişiere (fişier primar de date, primary data file, cu date şi referinţe asupra celorlalte
fişiere ale bazei de date; fişierul jurnal care înregistrează toate modificările
efectuate în baza de date). În cazul bazelor de date foarte mari, pot exista şi fişiere
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
următoarele:
• Database Creation Wizard.
• SQL Server Enterprise Manager.
• Cu ajutorul instrucţiunii CREATE DATABASE.
178

Universitatea SPIRU HARET


Crearea unei noi baze de date este echivalentă cu execuţia unei copii a bazei
de date model, prin extinderea până la dimensiunea dorită, spaţiul suplimentar fiind
completat cu pagini goale. Baza de date astfel creată utilizează fişiere pentru
stocarea fizică a datelor pe discul magnetic.
Salvarea bazelor de date în SQL Server se efectuează complet, diferenţial şi
prin salvarea jurnalelor de tranzacţii cu ajutorul SQL Server Enterprise Manager
sau cu Transact-SQL (ce va fi prezentat în paragraful următor). Copiile de
siguranţă (backup) servesc pentru o restaurare a bazelor de date în caz de defectări
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 când serverul se decuplează din diferite motive, inclusiv
la avarii, procesul de recuperare automată se porneşte la repornirea serverului. La
terminarea acestui proces de recuperare automată, bazele de date rămân î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 diferenţială) sau restaurarea uneia sau mai multor copii pentru jurnalul de
tranzacţii, în ordinea în care au fost generate. În momentul restaurării, baza de date
nu trebuie să fie în uz (să nu fie activă comanda USE). Pentru aceasta, trebuie
reperat setul corespunzător 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 diferenţiat baza de date şi jurnalul de
tranzacţii. Scenariile de recuperare sunt construite pentru diferite situaţii ca
recuperarea datelor după defectarea unui disc, recuperarea datelor după pierderea
bazei de date master,
SQL Server asigură, aşa cum s-a precizat mai sus, servicii de extragere a
datelor din bazele de date operaţionale ş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ă următoarele avantaje:
- portabilitatea – capacitatea de a funcţiona 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 capabilităţilor sale pentru lucrul cu baze de date mari;
- execuţia rapidă a interogărilor 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. Noţiuni 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 funcţie de nivelurile SQL Server, în
comenzi referitoare la baze de date, la tabele, la vederi (view-uri), la proceduri, la
gestionarea tranzacţiilor, la declanşatori.
a) Comenzi pentru baze de date
Crearea unei baze de date se face cu instrucţiunea CREATE. Sintaxa este
următoarea:
CREATE DATABASE nume
[ON PRIMARY (FILENAME = ′ nume fişier1. mdf’]
[LOG ON (FILENAME = ′ nume fişier2. ldf’)]
în care:
nume reprezintă numele bazei de date;
ON PRIMARY arată faptul că nume fişier1. mdf reprezintă fişierul primar al
bazei de date;
LOG ON specifică numele fişierului jurnal prin nume fişier2. ldf.
Datele vor fi regăsite în primul fişier, iar informaţia pentru registrul de
tranzacţii se va regăsi în al doilea fişier. Se reaminteşte faptul că registrul de
tranzacţii (fişierul jurnal) pentru o bază de date reprezintă zona în care serverul
tratează modificările 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 fişierul primar şi fişierul
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 fişierul primar de
date este: ′c\banca\db CLIENTI.mdf ′, iar fişierul jurnal este creat automat.
Pentru ştergerea (eliminarea) unei baze de date se foloseşte comanda:
DROP DATABASE nume bază de date
Cu ajutorul acestei instrucţiuni 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
(câmp 1 [, câmp 2, câmp 3…] …, unde fiecare câmp are sintaxa: nume tip dată
[IDENTITY]
[NULL⏐NOT 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 câmpului (coloanei) din tabel;
tip dată – este tipul câmpului (coloanei) din tabel.
Datele în SQL Server 2000 reprezintă atribute, variabile, parametri de
procedură, expresii, funcţii 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 funcţie de tipurile de bază, cu unele
caracteristici suplimentare adăugate).
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 următoarele dimensiuni:
tinyint (întregi pozitivi reprezentaţi pe 1 octet), smallint (reprezentaţi pe 2 octeţi),
int (reprezentaţi pe 4 octeţi) şi bigint (reprezentaţi pe 8 octeţi).
Tipurile de date numerice aproximative sunt cu reprezentare în virgulă
mobilă: float [(q)], unde parametrul q reprezintă numărul de biţi utilizaţi pentru
reprezentarea mantisei (q=1-24 pentru o reprezentare pe 4 octeţi cu o precizie de 7
cifre zecimale şi q=25-53 pentru o reprezentare pe 8 octeţi cu o precizie de 15 cifre
zecimale); real cu o reprezentare pe 4 octeţi (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 număr variabil de octeţi, astfel: decimal[(p[,s])] şi numeric[(p[,s])],
unde precizia p reprezintă numărul maxim posibil de cifre zecimale la stânga şi la
dreapta punctului zecimal (p=1-38), iar scala s reprezintă numărul de
zecimale(s=0-p).
Tipurile de date monetare sunt folosite pentru reprezentarea sumelor de bani
într-o anumită monedă, astfel: money (8 octeţi) şi smallmoney (4 octeţi).
Tipul de dată calendaristică asigură cu datetime reprezentarea datei şi orei în
intervalul de la 1 ian.1753 până 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 până 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)] defineşte un şir de caractere non-
Unicod cu lungimea fixă de n caractere (n=1-8000), iar tipul varchar[(n)] defineşte
un şir de caractere non-Unicod cu lungimea variabilă de n caractere.
Tipul de dată şir de caractere Unicod defineşte şirurile de caractere Unicod
de lungime fixă sau variabilă. Tipul nchar[(n)] defineşte un şir de caractere Unicod
cu lungimea fixă de n caractere (n=1-8000), iar tipul nvarchar[(n)] defineşte un şir
de caractere Unicod cu lungimea variabilă de n caractere. Acest tip de dată se
utilizează când 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 excepţia celor de tip text, imagine, timestamp şi sql_variant. Tipul de
dată timestamp permite generarea automată de către sistem a valorilor binare
pentru crearea etichetelor unice destinate tuplelor tabelelor bazei de date.
Ceea ce urmează în instrucţiunea de creare a tabelului, după nume câmp şi
tip dată, sunt constrângerile asociate tabelului.
IDENTITY se referă la o coloană (câmp) pentru care SQL Server realizează
incrementarea automată cu o unitate a câmpului respectiv. Această opţiune se poate
folosi doar pentru tipurile de câmp: tinyint, smallint, int, bigint, decimal sau
numeric. IDENTITY se foloseşte, de regulă, asociată cu opţiunea PRIMARY KEY
pentru identificarea în mod unic a fiecărei înregistrări din tabel. Un tabel poate
conţine numai un singur câmp IDENTITY.
Opţiunile NULL şi NOT NULL specifică dacă atributul la care se referă
permite sau nu permite valori NULL.
PRIMARY KEY arată câmpul care reprezintă cheia primară.
FOREIGN KEY arată câmpul care este cheie externă, iar tabel_ref este
tabelul la care se face referinţă. Cimp_ref reprezintă câmpul la care cheia externă
face referinţă.
ON DELETE cere care acţiuni se pot produce când se şterge tabelul.
CASCADE arată ştergerea înregistrărilor corespunzătoare din tabelele copil. NO
ACTION reprezintă opţiunea 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 câmp s-a specificat NOT NULL, adică nu poate conţine valori
de tip NULL.
Există posibilitatea să se genereze tabele temporare ce sunt eliminate
automat când utilizatorul încheie sesiunea de lucru sau când legătura 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 instrucţiune 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 următoarea:
CREATE VIEW nume_vedere
AS
comanda SQL SELECT
Restricţiile 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 selecţie sunt modificate pe baza evaluării
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 amândouă direcţiile. Pentru
realizarea controlului introducerii şi actualizării datelor, vederile reprezintă
alternative la restricţii şi declanşatori.
d) Comenzi pentru proceduri
O bază de date poate conţine şi proceduri stocate permanent pe server şi
pseudo-compilate la utilizare, care reprezintă subprograme formate din pachete de
instrucţiuni SQL. Procedurile stocate sunt necesare pentru a înlocui seturi de
comenzi ce se execută repetat în cadrul unei aplicaţii. Codul sursă al procedurilor
stocate se găseşte, alături de cele ale opţiunilor prestabilite, vederilor şi
declanşatorilor, în tabelul de sistem syscomments. Afişarea 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
instrucţiuni SQL
unde:
OUTPUT – indică faptul că parametrul este de ieşire, adică va returna o
valoare. Parametrii de ieşire pot fi numere întregi, şiruri de caractere, date
calendaristice, cursoare. Parametrii sunt trecuţi în procedurile stocate după nume şi
după poziţie. 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 foloseşte comanda:
DROP PROCEDURE nume_procedura.
Procedurile temporare au prefixul #.
Procedurile stocate sunt folosite în conformitate cu patru etape de bază:
creare, executare de către utilizator, compilare şi executare de către serverul de
baze de date.
Procedurile stocate prezintă avantaje legate de:
• facilitarea modificării datelor în acelaşi mod pentru toate aplicaţiile de baze
de date;
• creşterea vitezei de execuţie;
• partajarea logicii de aplicaţie între diferite aplicaţii de baze de date;
• simplificarea execuţiei interogărilor cu parametri;
• modularizarea aplicaţiei;
• reducerea cantităţii de cod care circulă în reţea;
• contribuţia la realizarea securităţii bazei de date.
e) Comenzi pentru gestionarea tranzacţiilor
Tranzacţiile sunt seturi formate din una sau mai multe operaţii de baze de
date care sunt tratate în mod unitar (fie se termină toate cu succes, fie se termină
toate cu eşec). Tranzacţia este apreciată ca fiind unitatea operaţională fundamentală
pentru o bază de date. Tranzacţiile SQL asigură unitatea şi recuperabilitatea datelor
atunci când se produc deranjamente ale părţii de hardware, erori ale sistemului de
operare, erori în aplicaţii sau ale SQL Server. Conceptul de tranzacţie se referă la
partea de server şi presupune că un grup de comenzi executate în interiorul unei
tranzacţii 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 tranzacţia este executată în totalitate, atunci se produce şi
salvarea modificărilor.
Tranzacţiile asigură controlul concurent al mai multor utilizatori la baza de
date (tabel, vedere), precum şi menţinerea consistenţei datelor prin îndeplinirea
restricţiilor de integritate definite pentru baza de date.
O tranzacţie definită de utilizator se poate construi după următorul model:
BEGIN TRAN nume_tranzactie
comenzi SQL
COMMIT TRAN nume_tranzactie]
sau
ROLLBACK TRAN nume_tranzactie]
în care:
BEGIN marchează începutul unei tranzacţii, numele acesteia fiind opţional;
COMMIT salvează toate modificările executate pe parcursul tranzacţiei în
baza de date;
ROLLBACK anulează modificările efectuate de comenzile tranzacţiei. Cu
ajutorul acestei comenzi, baza de date este adusă în starea iniţială pe care o avea
înaintea rulării tranzacţiei.
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 declanşatori
Declanşatorii (triggers) sunt un tip special de proceduri stocate care se
execută automat la apariţia unui eveniment, cum ar fi: INSERT (inserare),
UPDATE (modificare) sau DELETE (ştergere de înregistrări din baza de date).
Declanşatorii sunt ataşaţi tabelelor.
Un declanşator poate fi construit cu comanda:
CREATE TRIGGER nume_declansator ON nume_tabel
FOR {INSERT, UPDATE, DELETE}
AS
Comenzi SQL
unde:
nume_declansator – este numele declanşatorului;
nume_tabel – este tabelul la care se ataşează declanşatorul.
INSERT, UPDATE, DELETE permit specificarea evenimentului la care este
ataşat declanşatorul.
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 conţine
o valoare de un anumit tip. Variabilele locale servesc în proceduri stocate sau în
declanşatori 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 numărarea şi controlul numărului de paşi ai unei bucle
etc. Declararea variabilelor locale se efectuează cu DECLARE:
DECLARE @ variabila_locala tip_dată
unde:
@ este simbolul folosit de procesorul de interogări pentru a identifica
variabilele locale.
Exemplu:
DECLARE @ cod_mat int, @ den_mat varchar(25), @cod_depozit int
Dacă se foloseşte @@ înaintea unei variabile, atunci procesorul de interogări
interpretează variabila ca variabilă globală.
185

Universitatea SPIRU HARET


Microsoft SQL Server utilizează şi variabile globale de sistem, ca de
exemplu:
- @@ rowcount – numărul de linii afectate de ultima comandă;
- @@ total_read – numărul de citiri de pe disc când se lansează SQL Server;
- @@ total_write – numărul de scrieri pe disc când 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ă decât comanda SELECT, dar comanda
SELECT poate fi folosită pentru a atribui valori mai mutor variabile:
SELECT @ cod_mat = 1001, @ den_mat = ciment FROM MAT
Afişarea mesajelor se poate obţine prin folosirea comenzii:
PRINT @ variabila_locala @@ variabila_globala
⏐′ text′
Elemente de programare
Structura secvenţială este evidenţiată prin utilizarea instrucţiunilor BEGIN,
pentru marcarea punctului de început, şi END, pentru a marca punctul de sfârşit al
unui bloc de comenzi SQL. Sintaxa blocului este:
BEGIN
comenzi SQL
END
Pentru implementarea structurii de control alternative cu două ramuri se
foloseşte instrucţiunea IF cu următoarea sintaxă:
IF (condiţie)
comandă SQL ⏐bloc de comenzi SQL
[ELSE
comandă SQL ⏐bloc de comenzi SQL]
Structura de control repetitivă se poate obţine cu ajutorul instrucţiunii
WHILE cu următoarea sintaxă:
WHILE condiţie
comandă
care execută comanda atât timp cât condiţia este adevărată.
Tipul de date cursor
Cursorul, ca mod complementar de lucru, asigură selecţia şi parcurgerea
linie de linie a unui set de înregistrări care s-a obţinut ca urmare a execuţiei unei
comenzi SELECT. Pentru folosirea cursorului se parcurg următoarele 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 instrucţiunea:
DECLARE nume_cursor
[FORWARD_ONLY ⏐SCROLL⏐CURSOR]
FOR comandă SQL_SELECT
unde:
FORWARD_ONLY – cursorul poate fi parcurs doar de la prima la ultima
înregistrare şi este mai rapid decât tipul SCROLL, care permite parcurgerea setului
de înregistrări în acest sens.
2) Deschiderea cursorului (popularea cursorului) se obţine cu instrucţiunea:
OPEN nume_cursor
prin intermediul căreia are loc execuţia comenzii SELECT din clauza FOR.
3) Parcurgerea cursorului este realizată cu comanda:
FETCH [NEXT ⏐PRIOR⏐FIRST⏐LAST]
FROM nume_cursor
INTO @ variabila_1, @ variabila_2,…….
Se realizează două operaţiuni, şi anume:
a) transfer de valori ale câmpurilor din înregistrarea curentă către
@variabila_1, @variabila_2,…..;
b) se trece la următoarea î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 următoare:
0) comanda FETCH s-a executat optim;
1) comanda FETCH a determinat apariţia unei erori;
2) au fost parcurse toate înregistrările din setul de date.
4) Închiderea cursorului se obţine cu comanda:
CLOSE nume_cursor.
5) Eliberarea memoriei alocate pentru cursor se face cu instrucţiunea:
DEALLOCATE CURSOR nume_cursor
Exemplu: Se cere să se afişeze codurile materialelor cu preţul unitar mai mic
decât 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
înregistrările din tabelul MAT.
DECLARE @ cod_mat int
DECLARE @ pret_unitar float
PRINT ’Lista preţurilor 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 conţine două componente: o bază de date şi


o instanţă.
Baza de date conţine structura fizică şi structura logică care se prezintă
complet separate. Structura fizică a bazei de date este fundamentată pe fişierele
care constituie baza de date. Aceste fişiere sunt de mai multe tipuri: fişiere de date
(Data Files), fişiere jurnal (Redo Log Files) şi fişiere de control (Control Files).
Fişierele de date conţin datele din structurile logice ale bazei de date, tabelele şi
indecşii. Fişierele jurnal cuprind modificările înregistrate efectuate asupra datelor.
Fişierele de control conţin elemente prin care se specifică structura fizică a bazei
de date (nume bază de date, nume fişiere de date, locaţie fişier de date, nume fişier
jurnal, locaţie fişier jurnal), data de creare a bazei de date). Structura logică a
bazei de date asigură modul în care se foloseşte spaţiul fizic de stocare a bazei de
date şi este formată din spaţii-tabel, segmente de memorie, extensii ale segmentelor
de memorie şi blocuri de date (de exemplu, de 2KB).
Spaţiul-tabel (Tables Space) serveşte pentru memorarea logică a datelor
bazei de date. Fişierele de date care conţin, fizic, datele bazei de date, sunt asociate
acestor spaţii-tabel. La crearea unui spaţiu-tabel, sunt generate în mod automat
spaţiul-tabel System (cu dicţionarul de date al bazei de date) şi fişierele de date
asociate. Pentru asigurarea separării între dicţionarul de date şi datele bazei de date,
se creează spaţii-tabel suplimentare pentru date (fig.7.2).
Spaţiul-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),
secvenţe (Sequences), sinonime (Synonyms), indecşi (Indexes), clustere şi legături
ale bazei de date (Databases Links). Fiecărui utilizator al bazei de date i se atribuie
o schemă cu astfel de obiecte ce sunt stocate într-un spaţiu-tabel al bazei de date.
Noţiunile de tabel, vedere şi procedură sunt cunoscute. Instantaneele sunt tabele ce
conţin răspunsurile la cererile de interogare asupra tabelelor (Master Tables).
Secvenţa reprezintă o şir de numere secvenţiale (î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 găseşte în interiorul unei proceduri. Clusterele sunt grupări de
tabele frecvent accesate, memorate fizic în acelaşi blocuri de date. Indecşii
reprezintă structuri opţionale asociate tabelelor şi clusterelor şi care servesc pentru
accelerarea execuţiei instrucţiunilor 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 conţin datele unei structuri logice de


memorare dintr-un spaţiu-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 conţine
înregistrări despre acţiunile unei tranzacţii SQL pentru a se putea realiza, la nevoie,
derularea înapoi. Segmentul temporar conţine un spaţiu de lucru destinat prelucrării
unui tabel ce serveşte pentru stocarea rezultatelor intermediare ale unei tranzacţii
SQL. Tranzacţia SQL reprezintă o unitate logică de lucru care cuprinde instrucţiuni
SQL ce aparţin unui singur utilizator.
Aşa cum s-a arătat şi la Microsoft SQl Server, instanţa reprezintă o copie
independentă a serverului de baze de date pe acelaşi calculator cu originalul sau pe
alte calculatoare. Atunci când se porneşte o instanţă a unei baze de date Oracle,
baza de date este identificată prin intermediul fişierului său de control. Instanţa
Oracle este formată din zona de memorie globală a sistemului, SGA (System
Global Area) ce conţine datele şi din procesele din fundal (Background Processes).
Instanţa Oracle prezintă două tipuri de procese: procese Oracle (ale serverului de
baze de date) şi procese-utilizator (rularea aplicaţilor).
Arhitectura Oracle este prezentată în fig.7.3 [58]. Nucleul sistemului
cuprinde limbajul relaţional de regăsire a datelor (SQL*Plus) şi limbajul procedural
propriu-zis (PL/SQL). Interfeţele de dezvoltare a aplicaţiilor cu baze de date sunt:
• DEVELOPER – pentru dezvoltarea de aplicaţii;
• DESIGNER – pentru analiza aplicaţiilor;
• EXPRESS – pentru analiza datelor multidimensionale;
• EXPLORER – pentru accesul la date;
• ORACLE APPLICATIONS – pentru dezvoltarea aplicaţiilor de
întreprindere (financiare, proiecte, de producţie etc.);
Instrumentele de întreţinere sunt:
• ADMINISTRATOR TOOLS – utilitare pentru administratorul bazei de date;

189

Universitatea SPIRU HARET


• BROWSERE, EDITOARE – utilitare pentru căutare şi întreţinere 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 interfeţe
grafice utilizator complexe), Oracle Reports (crearea rapoartelor ca urmare a
interogărilor excutate asupra bazelor de date, inclusiv date de tip imagine), Oracle
Graphics (crearea aplicaţiilor pentru vizualizarea datelor în formate grafice
personalizate de tipul diagramelor, desenelor şi obiectelor multimedia).

DEVELOPER SQL * Plus

DESIGNER
PL/SQL

Java
EXPRESS

Administrator Browsere Net


Tools Editoare Products

Fig.7.3. Arhitectura Oracle

Un server Oracle foloseşte 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 păstrate cele mai
frecvent solicitate date în scopul facilitării 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
când un client lansează o comandă SQL. Ea conţine informaţii 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 aplicaţie ş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 toţi 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

Aşa cum s-a menţionat î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, aşa cum s-a arătat în capitolul precedent),
caracteristic sistemului Oracle. Prin acest limbaj, ce aparţine generaţiei a patra
(4GL), se realizează accesul la datele standard pentru bazele de date obiect-
relaţionale. În acelaşi 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 instrucţiuni 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
funcţie de locul (server sau utilitar) de unde se apelează PL/SQL. Motorul
descompune blocul în instrucţiuni SQL (SQL_S) separate ce sunt aplicate unui
executor de instrucţiuni SQL ce se găseşte pe serverul Oracle. Comenzile
procedurale (PS) sunt prelucrate de către executorul instrucţiunilor procedurale,
PSE (Procedural Statement Executor), aşa cum se poate observa în fig.7.4. Prin
procesarea datelor la locul aplicaţiei, se micşorează traficul către server, ceea ce se
constituie într-un avantaj.

BLOC PL/SQL
SERVER ORACLE

MOTOR PL/SQL

EXECUTOR
PRELUCRARE
PSE INSTRUCŢIUNI
INSTRUCŢIUNI SQL

Fig.7.4. Procesul de execuţie a unui bloc PL/SQL

Un bloc PL/SQL este format din patru secţiuni de bază: antet (header,
opţională), secţiunea declarativă (opţională), secţiunea executabilă şi secţiunea de
tratare a excepţiilor (a erorilor, opţională).
Structura generală a unui bloc PL/SQL este:
Secţiunea Header
IS
191

Universitatea SPIRU HARET


Secţiunea Declarative
BEGIN
Secţiunea executabilă
EXCEPTION
Secţiunea de tratare a excepţiilor (erorilor)
END;
Blocurile pot fi anonime (fără nume, executate o singură dată), neanonime
(cu nume), proceduri, funcţii sau declanşatoare (triggere). Declararea şi
iniţializarea variabilelor (prefix v), a constantelor (prefix c), a cursoarelor şi
excepţiilor se efectuează în secţiunea Declarative (declarativă). Cursorul este o
zonă de memorie folosită pentru executarea unor instrucţiuni SQL şi pentru
stocarea informaţiilor. Variabila cursor reprezintă un cursor de tip dinamic.
Exemple de declarare şi iniţializare 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 declarări 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;
Instrucţiunile PL/SQL sunt instrucţiuni de atribuire (:=), condiţionale (IF-
THE-ELSE), iterative (LOOP…END LOOP; FOR i IN …LOOP…END LOOP),
de control secvenţial (GOTO eticheta).
Un exemplu de utilizare a unei instrucţiuni iterative PL/SQL (de ciclare) şi a
cursorului ce permite actualizări ale liniilor unui tabel clarifică cele prezentate mai
sus. Să se actualizeze preţul 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 când se foloseşte comanda UPDATE, clauza WHERE CURRENT
OF determină ca, în situaţia în care cursorul este deschis, să se poată efectua
actualizarea unor linii din table.
În PL/SQL se pot compila proceduri şi funcţii care sunt apoi stocate în baza
de date (proceduri stocate); ulterior, aceste proceduri şi funcţii pot fi apelate, de
către utilizatorul cu un astfel de privilegiu, din orice bloc. Procedurile şi funcţiile
locale sunt compilate ori de câte ori se execută blocul care are în compunere
procedurile şi funcţiile respective.
O funcţie utilizator achizitii care determină numărul tipurilor de materiale
(din tabelul MATERIALE) achiziţionate de un client cu v_nume_client este creată
de subprogramul următor.
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_achiziţie)
END;
Numărul de tipuri de materiale determinat mai sus poate coincide în practică
cu numărul de linii ale facturii, dacă se creează, în loc de funcţie o procedură şi se
introduce la selecţie, nume_client şi data_factura.
Pachetul (package) în PL/SQL asigură încapsularea, ca obiect al bazei de
date, sub forma unei unităţi logice, a constantelor, variabilelor, funcţiilor,
procedurilor, tipurilor şi cursoarelor. Un pachet nu poate fi apelat ca un
subprogram. Un pachet în PL/SQL are două părţi: specificarea pachetului
(package specification) şi corpul pachetului (package body). Specificarea
pachetului reprezintă interfaţa cu aplicaţii. Corpul pachetului implementează
specificaţia ce conţine declararea variabilelor, constantelor, funcţiilor, procedurilor
şi excepţiilor ce sunt accesibile utilizatorilor (Public).
Declanşatorii (triggers) în PL/SQL, la nivel de bază de date sau la nivel de
aplicaţie, sunt proceduri stocate în baza de date şi asociate tabelelor, ce se execută
automat când au loc evenimente declanşatoare asociate acestor proceduri. Un
declanşator este acţionat de comenzile SQL - INSERT, UPDATE, DELETE şi
combinaţii ale acestora de tip sumă logică (OR).
Tranzacţiile, ca seturi de operaţii legate logic între ele, privite în mod unitar
şi definite de sistem sau de utilizator, sunt implementate cu comenzile COMMIT
(finalizarea tranzacţiei), ROLLBACK (anularea tranzacţiei), SAVEPOINT
(marcarea subtranziţiilor).
Tratarea excepţiilor (erorilor) în PL/SQL se efectuează, aşa cum s-a arătat
mai sus, în secţiunea EXCEPTION. Excepţia reprezintă un eveniment specific de
tipul eroare Oracle, eroare sistem sau eroare utilizator care determină o acţiune
particulară de răspuns la acest eveniment. Când apare o eroare, un bloc al unui
program se termină. Pentru tratarea erorilor, se utilizează rutine speciale denumite
handlere. Excepţiile PL/SQL pot fi excepţii interne (predefinite şi nepredefinite) şi
excepţii externe (definire de utilizator). Erorile nepredefinite corespund unor
193

Universitatea SPIRU HARET


excepţii predefinite şi nu prezintă nume predefinit. Exemple de excepţii interne
predefinite: DUP_VAL_ON_INDEX, adică detectarea inserării unei valori
duplicate (pe serverul Oracle apare codificată ORA_00001), LOGIN_DENIED,
adică nume sau parolă incorectă (ORA_01017) etc. Excepţiile definite de utilizator
sunt declarate în secţiunea DECLARE din structura blocului PL/SQL şi sunt
declanşate efectiv cu comanda RAISE în secţiunea executabilă.
Pentru tratarea excepţiilor, se folosesc funcţiile SQLCODE (returnează
valoarea numerică a codului de eroare) şi SQLERRM (întoarce valoarea numerică
a codului de eroare).

7.6. Noţiuni privind utilitarul SQL*Plus


din compunerea serverului de baze de date Oracle

Nucleul Oracle conţine (fig.7.3) limbajul relaţional de regăsire a datelor,


sub forma unui utilitar denumit SQL*Plus. Acesta cuprinde toate comenzile SQL
şi, în plus, asigură capabilităţi de personalizare a rezultatelor interogărilor, de
control şi editare a comenzilor SQL şi a blocurilor PL/SQL, de gestiune a
tranzacţiilor. Ca urmare, cu ajutorul acestui utilitar se realizează rapoarte, se
creează fişiere (script file), se definesc funcţii de administrare a sistemului.
În continuare se prezintă unele dintre funcţionalităţile suplimentare faţă de
limbajul SQL, oferite de SQL*Plus.
Comenzile utilizatorului de SQL*Plus se introduc interactiv la apariţia
prompterului SQL> şi se încadrează într-una din următoarele trei categorii de
comenzi:
• instrucţiuni SQL destinate accesării 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 conţinutului buffer-ului într-un fişier de comenzi se efectuează cu
comanda SAVE. Rularea unui fişier de comenzi se face cu comenzile START,
GET sau RUN nume_fisier. Când se doreşte afişarea pe ecran numai a rezultatului
execuţiei comenzilor din bufferul SQL, fără textul acestor comenzi, se foloseşte
comanda /. Un fişier de comenzi se poate realiza şi cu ajutorul comenzii INPUT în
corelaţie cu SAVE. De exemplu:
SQL>CLEAR BUFFER
SQL>INPUT
2 SELECT *
3 FROM MAT
4
SQL>SAVE CDA_SEL.SQL
SQL>@CDA_SEL
Obţinerea informaţiilor 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 următor:

Nr.crt Comanda Efectul comenzii


1. L Afişează toate liniile din buffer (list)
2. Ln Afişează linia n (list)
3. L* Afişează linia curentă (list)
4. I Adăugare linii (input)
5. A text Adăugare text la sfârşitul unei linii (append)
6. C/text_vechi/text_nou Schimbă text_vechi cu text_nou (change)
7. DEL Şterge linia curentă (delete)
8. CL BUFF Şterge bufferul (clear buffer)

Formatarea rezultatelor unei cereri de interogare conduce la obţinerea unui


raport. Formatarea coloanelor se efectuează cu comanda COLUMN prin care se
obţine afişarea atributelor coloanei (fără opţiuni), iar cu opţiuni se obţine
schimbarea denumirii coloanei sau splitarea denumirii coloanei (opţiunea
HEADING), formatarea coloanelor numerice (opţiunea FORMAT), copierea
atributelor specifice unei coloane la altă coloană (opţiunea LIKE) etc.
Pentru prezentare, spaţiile şi liniile rezumat se obţin la rapoarte prin
intermediul comenzilor BREAK şi COMPUTE. Definirea titlurilor unei pagini
(ecran cu date sau pagină tipărită) se efectuează cu comenzile TTITLE (la
începutul paginii) şi, respectiv BTITLE (la sfârşitul paginii). Definirea înălţimii
paginii se face cu comanda PAGESIZE, iar definirea lăţimii paginii se efectuează
cu comanda LINESIZE.
Rezultatele cererii de interogare se pot stoca într-un fişier sau se pot tipări la
imprimantă cu comanda SPOOL.
Gestiunea tranzacţiilor presupune, în primul rând, activarea modului de
validare automată a tranzacţiilor cu comanda: SET AUTOCOMMIT ON (cu OFF
se produce dezactivarea). Validarea unei tranzacţii se face cu comanda COMMIT,
iar anularea acestei tranzacţii se face cu comanda ROLLBACK.
În continuare se prezintă un exemplu de utilizare a unor comenzi SQL*Plus,
prezentate mai sus, pentru rezolvarea următoarei probleme: Să se creeze un fişier
care tipăreşte un raport ce cuprinde, pentru fiecare material selectat, cod_material,
den_material, cant, pret_unitar, valoare.

COLUMN cod_material HEADING ‘COD⎜MATERIAL’ FORMAT $9999


COLUMN den_material HEADING ‘DENUMIRE⎜MATERIAL’ FORMAT A30
COLUMN cant HEADING ‘CANTITATE⎜MATERIAL’ FORMAT $9999.99
COLUMN pret _unitar HEADING ‘PRET⎜UNITAR’ FORMAT $9,999,999.99
COLUMN valoare HEADING ‘VALOARE⎜MATERIALE’ 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

Deşi, î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 ştiinţei calculatoarelor şi
informaticii. E.F.Codd de la IBM Research, în 1969, a definit pentru prima dată
modelul relaţional al datelor, iar în anul 1973 aceeaşi firmă IBM a dezvoltat primul
SGBD relaţional denumit SYSTEM R [www.ibm.com].
Serverul de baze de date IBM DB2 Universal Database (UDB) face parte
din suita de produse IBM DB2, alături 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 reţele LAN sau VPN).
Sistemul DB UDB 7 al firmei IBM este un sistem pentru platforme multiple
ce conţine o tehnologie nucleu de SGBDR pentru aplicaţii Web, suportă date
multimedia, asigură suport pentru aplicaţii de e-business, pentru aplicaţii cu baze
de date distribuite şi baze de date foarte mari VLDB (Very Large Data Bases),
pentru date multidimensionale, dispune de funcţii de replicare a datelor din bazele
de date distribuite.
Tehnologia de SGBDR de tipul « in-memory » facilitează căutările prin
fraze-cheie în aplicaţiile Web. În ceea ce priveşte datele multimedia, sistemul DB2
are prevăzute extender-e multimedia integrate în DB2 ce asigură prelucrarea
tipurilor de date specifice definite de utilizator, UDT (User Defined Types), însoţite
de funcţii dependente de tip, atribute şi motoare de căutare specializate. Obiectele
mari, LOB (Large Objects), ca şi în Oracle, aparţin unuia dintre următoarele 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 octeţi, DCLOB (Double CLOB).
IBM DB2 UDB 7 asigură suport pentru aplicaţii de e-business prin integrarea
completă cu IBM WebSphere Commerce Suite, ca soluţie completă de site Web cu
date de e-commerce securizat, cu aplicaţiile de management al relaţiilor cu clienţii,
CRM (Customer Relationship Management), de planificare a resurselor întreprinderii,
ERP (Enterpridse Resources Planning), de gestionare a lanţului de aprovizionare,
SCM (Supply Chain Management), asigurând gestionarea afacerilor organizaţiei
(planificare producţie/servicii, finanţe, contabilitate, resurse umane).
Suportul DB2 UDB 7 pentru aplicaţii cu baze de date foarte mari include
configuraţii cluster (spaţii tabele repartizate fizic pe mai multe discuri sau noduri),
alocarea dinamică a spaţiului.
Bazele de date „universale”, gestionate de sistemul de gestiune a bazelor de
date orientate pe obiecte, OODBMS, sunt referite pe nivelurile structural,
operaţional ş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 aplicaţiile economice

Când s-a prezentat clasificarea bazelor de date, s-a arătat 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 situaţiile în care s-au făcut
referiri la categoria de baze de date distribuite, dându-se explicaţii succinte
referitoare la noţiunile şi elementele implicate. În consecinţă, este necesară o
aprofundare a acestor concepte într-un capitol separat.
S-a arătat în capitolele anterioare ce este şi cum se construieşte o aplicaţie
Access cu ajutorul căreia se poate asigura gestionarea şi partajarea datelor între
diferiţi utilizatori finali în reţea. În cazul utilizatorilor conectaţi 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ă răspundă unor cerinţe 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ă
organizaţiile economice performante sunt distribuite logic în departamente, secţii,
birouri, grupuri de lucru şi distribuite geografic în locaţii diferite ce reprezintă
filiale ale acestei organizaţii.
Abordarea bazelor de date distribuite, ca elemente fundamentale ale sistemelor
informatice integrate unei organizaţii economice, trebuie să aibă în vedere cele trei
tendinţe importante care redefinesc rolul acestora în aplicaţiile economice:
1. Internetul şi alte reţele de calculatoare şi de comunicaţii pe arie largă,
WAN (Wide Area Network) conectează în timp real participanţii cheie: vânzători,
producători, distribuitori şi clienţi.
2. Globalizarea pieţii, a mediului de afaceri necesită stocarea şi procesarea
unor cantităţi mari de date (baze de date mari), distribuite în toate locaţiile
geografice implicate într-o anumită activitate sau proces economic.
3. Transformarea SUA şi a altor ţări industrializate în societăţi
informaţionale (economii informaţionale) accentuează importanţa eficienţei
sistemelor informatice şi de comunicaţii în care bazele de date distribuite joacă
rolul determinant prin aceea că stochează date ce susţin informaţii şi cunoştinţe, cu
ciclul de viaţă din ce în ce mai scurt.

8.2. Concepte fundamentale

Aşa cum s-a arătat în capitolul 1 al lucrării, fişierul reprezintă unitatea


fundamentală de stocare care (într-o definiţie simplificată) asigură deosebirea unei
mulţimi de date de alta de către sistemul de calcul.
Sistemul de fişiere este format din fişiere, directoare şi informaţiile necesare
pentru localizarea şi accesul la ele. Fiecare fişier conţine un grup de date, complet
197

Universitatea SPIRU HARET


denumit, cum este un program, o mulţime 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, redundanţa ridicată a datelor, izolarea datelor,
descrierea independentă a datelor, dependenţa 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 colecţie organizată după
regulile unui model de date (mulţime de reguli destinate structurării şi manipulării
datelor). Gestiunea bazelor de date presupune utilizarea ca interfaţă între programele
de aplicaţie şi bazele de date a unui sistem de gestiune a bazei de date (fig.8.2).

PROGRAM 1
FIŞIER 1
DESCRIERE DATE 1

PROGRAM 2
FIŞIER 2
DESCRIERE DATE 2

PROGRAM 3
FIŞIER 3
DESCRIERE DATE 3

Fig.8.1. Sistem de fişiere

PROGRAM DE
APLICAŢIE 1

SISTEM DE
BAZA GESTIUNE PROGRAM DE
DE DATE A BAZEI APLICAŢIE 2
DE DATE
(SGBD)

PROGRAM DE
APLICAŢIE 3
Fig.8.2. Gestiunea unei baze de date
198

Universitatea SPIRU HARET


SGBD soluţionează cererile utilizatorilor referitoare la diversele acţiuni
legate de baza de date şi asigură stabilirea unor măsuri 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 colecţie
formată din mai multe baze de date logic interconectate şi care sunt localizate în
nodurile unei reţele de calculatoare şi de comunicaţii. În fapt, o DDB este o colecţie
de site-uri distribuite interconectate cu ajutorul unei reţele de comunicaţii. Dintr-o
altă perspectivă, o DDB este o bază de date virtuală cu componentele stocate fizic
într-un număr 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), furnizând un mecanism de acces care face distribuirea acestora
transparentă pentru toţi utilizatorii. Sistemul baze de date distribuite, DDBS
(Distributed DataBase System), este format din DDB şi DDBMS.

REŢEA DE TEHNOLOGIE A
CALCULATOARE BAZEI DE DATE

distribuire integrare

SISTEM BAZE DE
DATE DISTRIBUITE
(DDBS)

integrare
Fig.8.3. Determinările într-un sistem baze de date distribuite (DDBS)

Este important de menţionat că într-un sistem baze de date distribuite (DDBS)


operaţia 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 număr de
elemente de procesare autonome, nu în mod necesar omogene, care sunt
interconectate într-o reţea de calculatoare şi de comunicaţii şi care cooperează în
scopul realizării sarcinilor (task-uri) atribuite. Pentru calcul distribuit, există mai
mulţi termeni sinonimi, cum sunt: prelucrarea datelor distribuite, multiprocesare,
procesare back-end, sisteme în time-sharing, sisteme modulare funcţional etc. În
DDBS sunt distribuite logica prelucrării, datele, funcţiile şi controlul. Ca urmare, un
sistem baze de date distribuite, DDBS, se poate defini ca o colecţie de baze de date
multiple, logic interlegate, distribuite în întreaga reţea de calculatoare şi de
comunicaţii. Este important de reţinut 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
reţelei de calculatoare. Un sistem de gestiune a bazelor de date (SGBD) centralizat
într-o reţea de calculatoare reprezintă sistemul distribuit în care utilizatorii, prin
intermediul reţelei de comunicaţii asociate, accesează DDB (fig.8.4).
Un mediu specific unui sistem de gestiune a bazelor de date (SGBD)
distribuite, DDBMS, oferă posibilitatea accesării bazelor de date distribuite (DDB)
din oricare locaţie din reţeaua de calculatoare prin intermediul reţelei de comunicaţii
asociate (fig.8.5). Aşa cum se observă din configuraţia DDBMS, datele sunt
memorate într-un număr de locaţii (site-uri) ale reţelei de calculatoare, iar fiecare site
conţine, logic, un singur procesor. DDB pot fi astfel utilizate în orice organizaţie 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
REŢEA DE
COMUNICAŢII
SITE 4

SITE 6
SITE 5
Fig.8.4. Un SGBD centralizat într-o reţea

DDBMS prezintă avantaje legate de gestiunea transparentă a datelor


distribuite, fragmentate şi replicate, de îmbunătăţirea fiabilităţii şi disponibilităţii
prin intermediul tranzacţiilor distribuite, de o dezvoltare mai facilă şi mai
economică a DDBMS. Gestiunea transparentă presupune separarea semanticilor de
nivel ridicat de cele de nivel scăzut (prin semantică se înţelege în acest caz relaţia
dintre cuvinte sau simboluri şi semnificaţia lor). Problema fundamentală în DDBMS
este realizarea independenţei datelor, adică separarea datelor de programele care le
manipulează.
200

Universitatea SPIRU HARET


Din punctul de vedere al oricărui utilizator, DDB este percepută ca o bază de
date centralizată. Actualizarea datelor replicate necesită implementarea controlului
concurenţei 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 conţin elemente de gestiune a DDB. Prelucrarea
interogărilor asigură conversia tranzacţiilor utilizatorului în manipularea datelor,
minimizează costurile de transmitere a datelor şi de prelucrare locală a acestor date
şi optimizează aceste operaţii. Controlul concurenţei distribuite se referă la
sincronizarea acceselor concurente la DDB, consistenţa şi izolarea efectelor
tranzacţiilor şi gestionarea blocărilor. Fiabilitatea priveşte modul cum
reacţionează sistemul la defectări, atomicitatea şi durabilitatea. Relaţiile existente
între diferitele componente ale mediului DDBMS sunt sintetizate în fig.8.6. Este
interesant de precizat că între cerinţele de prelucrare de interes general din sistemul
informatic şi cerinţele de prelucrare a bazelor de date există o dihotomie. Sistemul
de operare al reţelei sprijină DDB. Caracteristicile de sistem deschis şi de
interoperabilitate al DDBS au condus la ideea dezvoltării sistemelor multibaze de
date distribuite, DMDBS (Distributed Multi-DataBase Systems).

SITE 2

SITE 3
SITE 1
REŢEA DE
COMUNICAŢII
SITE 4

SITE 6
SITE 5

Fig.8.5. Configuraţia unui sistem de gestiune a bazelor de date distribuite (DDBMS)

201

Universitatea SPIRU HARET


FIABILITATE

GESTIONAREA CONTROLUL GESTIUNEA


PROIECTAREA
DIRECTOARELOR CONCURENŢEI BLOCĂRILOR
DISTRIBUIRII

PRELUCRAREA
INTEROGĂRILOR

Fig.8.6. Relaţiile existente între diferitele componente ale mediului DDBMS

Aşa cum s-a arătat 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 interacţionează cu o DDB în acelaşi mod în
care interacţionează cu o bază de date centralizată. O DDB este compusă din mai
multe baze de date locale (LDB) care sunt memorate în nodurile unei reţele de
calculatoare (uneori, şi dintr-o bază de date centrală, CDB). Baza de date centrală
primeşte de la bazele de date locale numai acele colecţii de date a căror stocare este
justificată la nivelul CDB în scopul unor prelucrări 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 reţea la dispoziţie.
Date C.J. [5] a identificat douăsprezece obiective pentru DDB:
• autonomia locală a site-urilor componente ale unui sistem distribuit (în cea
mai mare măsură); fiecare site component poate opera, de regulă, cu datele din
bazele de date locale (LDB) fără a depinde de alt site;
• absenţa unei dependenţe de un site central;
• funcţionarea continuă datorită fiabilităţii şi disponibilităţii crescute a
sistemelor distribuite la apariţia întreruperilor aleatoare;
• existenţa transparenţei (independenţa de localizare), adică pentru
utilizatorul final nu are importanţă unde sunt stocate fizic datele de care acesta are
nevoie;
• independenţa de fragmentarea datelor, ceea ce înseamnă că fragmentarea
datelor în DDB (prezentată în paragraful următor) nu afectează percepţia
utilizatorului final, din punct de vedere logic, de nefragmentare a datelor;
• independenţa de replicarea (reproducerea) datelor, adică replicarea
datelor nu afectează percepţia utilizatorului final care, logic, se comportă ca şi cum
datele nu ar fi fost replicate;
• procesarea distribuită a interogărilor;
202

Universitatea SPIRU HARET


• gestionarea distribuită a tranzacţiilor, prin care, tranzacţiile, compuse din
mai mulţi agenţi (agenţii reprezintă procese terminate sub denumirea de tranzacţii pe
anumite site-uri), sunt refăcute cu ajutorul protocolului de finalizare în două faze
(finalizare/derulare înapoi), iar controlul concurenţei se obţine prin regula de blocare;
• independenţa de hardware);
• independenţa de sistemul de operare;
• independenţa de reţeaua de calculatoare şi de comunicaţii;
• independenţa de DDMBS.
Un DBMS pentru DDB, adică un DDBMS, asigură următoarele 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) creşterea durabilităţii şi disponibilităţii sistemului (sistem open, adică
deschis să primească oricând noi structuri de baze de date în schema conceptuală
globală, precum şi noi restructurări ale bazelor de date locale);
d) asigurarea proiectării structurii organizatorice şi funcţionale a sistemului
informaţional conformă cu structura organizaţiei deservite de sistem;
e) sporirea gradului de utilizare a sistemului informaţional (mărirea
numărului de utilizatori efectivi).
În implementarea DDMBS este valabilă aceeaşi filosofie ca şi la decizia de
implementare a unei reţele de calculatoare: o astfel de decizie are consecinţe pe
termen mediu şi lung, implică investiţii mari, nu mai poate fi schimbată după
achiziţia platformei de bază de un anumit tip decât cu « plata » renunţării în
totalitate la soluţia iniţială. Ca urmare, decizia de implementare a unui anumit
DDBMS implică înainte de toate alegerea unui furnizor de marcă. Cei şase mari
producători de DDBMS - Oracle, Sybase, Informix, Microsoft, IBM şi Computer
Associates – monopolizează peste 90% din piaţa 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
următoarelor principii:
• dispunerea datelor stocate în nodul de producere şi de utilizare a lor;
• minimizarea căilor de transport de date în cadrul reţelei de calculatoare.
Fragmentarea DDB se realizează pe două niveluri [44]:
1) mulţimea de colecţii de date este partiţionată în submulţimi de colecţii de date;
2) colecţia de date este partiţionată în fragmente (pe orizontală - cu aceeaşi
structură ca şi colecţia de date şi pe verticală – fragmentele conţin fiecare numai o
parte din structura colecţiei de date din care provin).
Fragmentele rezultate după partiţionarea DDB reprezintă elemente de
distribuire a datelor. Ansamblul fragmentelor unei DDB stocate într-un nod al
reţelei de calculatoare reprezintă o bază de date locală (LDB).
203

Universitatea SPIRU HARET


De regulă, un fragment de date reprezintă un derivat obţinut prin orice
combinaţie aleatoare de restricţii şi proiecţii din baza de date. Se reaminteşte, de la
modelul relaţional, că operaţia de restricţie asigură selecţia anumitor înregistrări
(rânduri) dintr-un tabel al unei baze de date relaţionale, iar operaţia de proiecţie
permite extragerea câmpurilor (coloanelor) specificate dintr-un tabel.
Dacă se consideră o variabilă-de-relaţie (variabila care face legătura între
câmpul reprezentând cheia primară şi câmpul reprezentând o cheie externă) de
bază CL pentru entitatea CLIENTI (aşa cum este percepută de utilizatorul final) ce
conţine clienţii-persoane juridice (Corporate) ai unei bănci, cu valorile eşantion
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 corespunzătoare clienţilor băncii ce operează în Bucureşti sunt


memorate în site-ul din Bucureşti, iar tuplurile clienţilor băncii ce operează în
Constanţa sunt memorate în site-ul din Constanţa.

Bucureşti Constanţa
CL_BU CL_CT

CL# CORP# SUMA_C CL# CORP# SUMA_C


N1 C1 1200000 N2 C2 800000
N4 C3 2450000 N3 C2 1050000
N5 C4 4200000
N6 C1 2500000

CL
CL# CORP# SUMA_C
N1 C1 1200000
N2 C2 800000
N3 C2 1050000
N4 C3 2450000
N5 C4 4200000
N6 C1 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-relaţie de bază iniţială CL cu ajutorul operaţiei de reuniune a
fragmentelor de date. Trebuie precizat faptul că operaţia de reuniune se foloseşte
pentru fragmentele orizontale, iar operaţia de uniune se utilizează pentru fragmentele
verticale. În cazul operaţiei de uniune, se pot combina două tabele într-unul singur pe
baza valorilor comune ce există într-un câmp (coloană) comun.

8.4. Gestiunea tranzacţiilor

Tranzacţia, î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), tranzacţia reprezintă o unitate logică de prelucrare prin intermediul
căreia se realizează siguranţa şi consistenţa bazei de date [8]. O bază de date este
într-o stare consistentă dacă sunt îndeplinite toate constrângerile de integritate a
datelor. Baza de date se găseşte în stare consistentă atât înaintea executării
tranzacţiei, cât şi după executarea acesteia (în timpul executării tranzacţiei, baza de
date poate să fie în stare inconsistentă). Siguranţa bazei de date înseamnă toleranţa
acesteia faţă de defectări şi capacitatea de recuperare a datelor după apariţia unor
defectări. Consistenţa bazei de date semnifică respectarea restricţiilor de integritate
a datelor după efectuarea uneia sau mai multor operaţii de prelucrare în baza de
date (adăugare, actualizare, ştergere etc.).
În esenţă, o tranzacţie este o succesiune de operaţii de scriere şi de citire a
bazei de date, precum şi de operaţii de calcul. O tranzacţie este caracterizată de
punctul de început şi de punctul de sfârşit. Din acest punct de vedere, tranzacţiile
se clasifică în:
a) tranzacţii implicite (punctul de început şi cel de sfârşit sunt automat
definite);
b) tranzacţii explicite (utilizarea unor comenzi speciale pentru stabilirea
punctelor de început şi sfârşit ale tranzacţiei).
În SQL-Server, tranzacţiile explicite permit utilizatorului să grupeze un set
de comenzi SQL într-o tranzacţie folosind comenzile BEGIN TRANSACTION şi
COMMIT TRANSACTION, pentru precizarea punctelor de început şi sfârşit.
Utilizatorul poate el însuşi defini punctele de salvare în cazul tranzacţiilor
complexe, folosind comanda SAVE TRANSACTION, sau să deruleze înapoi
tranzacţia până la punctul de început sau până la un punct de salvare anterior,
folosind comanda ROLLBACK TRANSACTION.
Accesul unei baze de date distribuite (ce defineşte gestiunea tranzacţiilor) se
face, de regulă, în mod concurent, motiv pentru care toleranţa la defectări şi
menţinerea consistenţei bazei de date prin controlul concurenţei devin cerinţe
prioritare pentru fiabilitatea bazei de date [8]. Toleranţa la defectări priveşte
capacitatea bazei de date şi a sistemului de gestiune a bazei de date de a face faţă
defectelor dezastruoase astfel încât să nu se piardă date (să existe posibilitatea
recuperării datelor) şi să nu fie afectată activitatea (operaţiunea) în curs de
desfăşurare. Controlul concurenţei se referă la mecanismele de sincronizare a
acceselor cu scopul de menţinere a integrităţii bazei de date. În concluzie, cu
205

Universitatea SPIRU HARET


ajutorul toleranţei la defectări şi controlul concurenţei se asigură siguranţa şi
consistenţa bazei de date.
Orice tranzacţie trebuie să ia sfârşit (cu rezultat pozitiv sau negativ) prin
executarea tuturor operaţiilor prevăzute de procedură. Ultima operaţie executată în
acest caz este una de validare (commit). În caz contrar, ultima operaţie efectuată
este una de abortare (abort) cu semnificaţia că tranzacţia nu a reuşit executarea
tuturor operaţiilor prevăzute de procedură. Urmarea acestei situaţii o constituie
anularea tuturor operaţiilor efectuate asupra bazei de date şi menţinerea situaţiei
dinaintea începerii tranzacţiei.
Tranzacţia trebuie să îndeplinească patru condiţii, sintetizate prin acronimul
ACID – atomicitate, consistenţă, izolare şi durabilitate. Atomicitatea înseamnă că
orice tranzacţie reprezintă o unitate elementară de prelucrare; execuţia acesteia se
produce după regula „Totul sau nimic!”. Consistenţa unei tranzacţii 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
menţinute în permanenţă restricţiile de integritate ale bazei de date (unicitatea
cheilor primare şi integritatea referenţială). Prin consistenţă este reflectată
corectitudinea operaţiilor specifice tranzacţiei. Izolarea reprezintă proprietatea unei
tranzacţii de a poseda accesul numai la stările consistente ale bazei de date (pe
timpul executării operaţiilor unei anumite tranzacţii, până la realizarea operaţiei de
validare, celelalte tranzacţii concurente nu au permis accesul la modificările
provocate de operaţiile acestei tranzacţii asupra bazei de date). Prin intermediul
acestei proprietăţi este prevenită apariţia fenomenului de abortare în cascadă a
tranzacţiilor (efectul de domino). Durabilitatea tranzacţiei se referă la rezultatele
tranzacţiei asupra bazei de date în sensul că acestea devin permanente (sunt scrise
în baza de date) după terminarea tranzacţiei. Durabilitatea se obţine cu ajutorul
jurnalului (un fişier secvenţial în care sunt înregistrate operaţiile executate de
tranzacţii). Jurnalul cuprinde istoria evoluţiei întregului sistem bază de date.
Pentru exemplificare, se consideră tranzacţia efectuată de un client al unei
bănci, tranzacţie prin care efectuează o plată din contul personal. Clientul băncii
efectuează această tranzacţie prin intermediul unei maşini inteligente (multimat) în
sistemul self-banking.
Pentru simplificare, baza de date este formată din trei relaţii 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 relaţii au semnificaţia rezultată din denumirea lor. S-a pornit
de la premiza că un client al unei bănci (persoană juridică sau persoană fizică)
poate avea mai multe conturi bancare în cadrul aceleiaşi bănci (one-to-many).
Nr_cont se identifică cu codul IBAN. S-au evidenţiat unele atribute deşi 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 relaţiilor. Nu au fost evidenţiate 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 evidenţiate
atributele care sunt legate de securitatea tranzacţiei şi a datelor.
Pentru efectuarea tranzacţiei, clientul băncii introduce codul tranzacţiei pe
care doreşte să o efectueze şi numărul contului bancar în care se vor reflecta efectele
tranzacţiei care se va efectua.
Dacă se foloseşte o interfaţă SQL pentru efectuarea tranzacţiei, reprezentarea
tranzacţiei de înregistrare a unei plăţi de către clientul băncii, î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 relaţia CONT_BANCAR suma care constituie obiectul plăţii ce se va
efectua se scade din sold (se trece la suma_debitoare), iar în relaţia TRANZACTIE
se scrie o înregistrare care materializează datele de identificare a tranzacţiei. Nu s-
au luat în considerare toate operaţiile de actualizate a datelor din baza de date
considerată.
Când tranzacţia se termină cu succes, se produce în final operaţia de
validare (COMMIT), iar în caz contrar, se produce operaţia de abortare (ABORT
sau ROLLBACK). Când are loc abortarea, tranzacţia este oprită, iar efectele
operaţiilor deja efectuate sunt anulate, ceea ce înseamnă că baza de date este adusă
în starea pe care o avea înaintea începerii tranzacţiei.
Când s-a produs validarea tranzacţiei, efectele acestei tranzacţii nu mai pot fi
anulate.

8.5. Protecţia bazelor de date distribuite

Protecţia bazelor de date distribuite reprezintă un ansamblu de măsuri umane


şi facilităţi oferite de SGBDD (DDBMS) prin care se asigură integritatea datelor
(corectitudinea datelor introduse) şi securitatea datelor (accesul autorizat la date).
Protecţia datelor se face prin salvarea lor în cazul unor defecte sau erori accidentale
([18],[19]).
Se deosebesc trei aspecte ale asigurării integrităţii datelor:
a) asigurarea integrităţii semantice a datelor (prevenirea introducerii unor
date incorecte şi a efectuării unor prelucrări greşite);
b) controlul accesului concurent la date (prevenirea apariţiei unor rezultate
incorecte din execuţia concurentă a unor prelucrări în regim multiutilizator);
207

Universitatea SPIRU HARET


c) salvarea şi restaurarea bazei de date (refacerea acesteia atunci când a fost
afectată de funcţionarea anormală sau de căderea 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 prelucrări care furnizează rezultate greşite trebuie prevenite prin includerea
în programele de aplicaţie a unor secvenţe pentru testarea datelor şi a unor facilităţi
de asigurare a integrităţii semantice a datelor oferite de SGBDD. Concret, orice
operaţie asupra datelor trebuie să respecte restricţiile de integritate. După modul în
care sunt exprimate, restricţiile de integritate sunt implicite şi explicite.
Restricţiile de integritate implicite înseamnă existenţa verificărilor la introdu-
cerea datelor (nu se acceptă valori care nu aparţin tipului de date specificat), precum
şi, dacă există conceptul de cheie unică, la inserare se va verifica unicitatea cheii.
În modelul relaţional există două restricţii de integritate asociate cheilor
primare şi cheilor externe, şi anume:
1. Integritatea entităţii, care presupune că nici un atribut ce participă la
formarea cheii primare a unei relaţii nu poate primi o valoare NULL, aceasta din
motivul că o cheie primară trebuie să identifice în mod unic tuplurile unei relaţii.
2. Integritatea referenţială (referirii), adică orice valoare a unei chei externe
din relaţia care referă trebuie să aibă corespondentă o cheie primară cu aceeaşi
valoare în relaţia referită sau să fie NULL.
Restricţiile de integritate explicite pot fi incluse în programele de aplicaţie şi
verificate în momentul execuţiei sau pot fi memorate în dicţionarul datelor şi
verificate automat de SGBDD la fiecare operaţie 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 execuţie la resurse,
după o anumită disciplină internă. În cazul aplicaţiilor, care utilizează aceeaşi bază
de date, întreruperea executării unui proces pentru începerea sau continuarea altora
poate conduce la alterarea datelor. Asigurarea integrităţii datelor, în acest context,
presupune existenţa unor facilităţi speciale pentru controlul accesului concurent la
date la nivelul SGBDD-ului, şi acestea sunt tranzacţiile (paragraful 8.4).
Tehnica blocării. O execuţie neserială a unor tranzacţii concurente este
considerată corectă dacă este serializabilă, adică dacă produce acelaşi rezultat ca şi
execuţia serială a acestor tranzacţii. Tehnica utilizată de SGBDD pentru a asigura
execuţia serializabilă a tranzacţiilor este tehnica blocării. În cea mai simplă formă,
blocarea unor date de către o tranzacţie interzice celorlalte tranzacţii accesul la
aceste date. Blocarea se poate aplica la nivelul întregii baze de date, la nivelul unui
fişier, grup de înregistrări, înregistrare sau chiar la nivelul unui singur câmp, dar cu
implicaţii diferite.
La aplicarea tehnicii blocării, se urmăresc două aspecte:
a) în procesul de actualizare este interzis accesul celorlalţi utilizatori până la
completarea acestei operaţii;
b) accesul la datele pe care un utilizator le citeşte fără a le actualiza este
interzis utilizatorilor pentru operaţia de actualizare, dar este permis pentru operaţia
de citire.
208

Universitatea SPIRU HARET


Blocarea poate fi:
- pentru citire sau partajabilă (datele pot fi folosite şi de alţi utilizatori, dar
numai pentru operaţii de citire);
- pentru scriere sau exclusivă (datele nu pot fi accesate de alt utilizator).
Interblocarea resurselor intervine atunci când două tranzacţii blochează
anumite resurse, apoi fiecare solicită resursele blocate de cealaltă. De aceea, la
nivelul SGBDD există facilităţi de prevenire sau de rezolvare a acestor situaţii,
putându-se implementa una din următoarele strategii:
1. Prevenirea blocării, adică programele blochează toate resursele de care au
nevoie încă de la începutul fiecărei tranzacţii. Această strategie este dificil de
implementat, deoarece în cele mai multe cazuri este imposibil de precizat înainte,
ce resurse vor fi necesare pentru o tranzacţie.
2. Soluţionarea interblocării. Se poate realiza prin utilizarea de către sistem
a unui graf al precedenţelor care să reflecte dependenţele 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) funcţionarea anormală sau o cădere a SGBDD-ului sau a sistemului de
operare;
2) o defecţiune a suportului fizic pe care este memorată baza de date.
SGBDD asigură acumularea de informaţii despre derularea tranzacţiilor până
în momentul întreruperii lucrului şi aplicarea uneia din următoarele strategii de
restaurare:
- derularea înapoi a tranzacţiilor necompletate (cu ROLL-BACK), care
presupune anularea modificărilor făcute de acestea asupra bazei de date;
- derularea înapoi a tranzacţiilor completate, dar neefectuate în baza de date
(cu ROLLFORWARD), ce presupune efectuarea acelor transformări prin care baza
de date restaurată să conţină rezultatele acestora (8).
Salvarea bazei de date este operaţia prin care se stochează date în vederea
folosirii lor pentru o eventuală restaurare. Volumul informaţiilor care se salvează,
natura lor şi intervalul de timp dintre două operaţii succesive de salvare determină
strategia de salvare.
Datele salvate pot fi diferite combinaţii între:
- copii ale bazei de date şi copii ale jurnalelor acestora;
- jurnale ale tranzacţiilor;
- jurnale ale imaginii înregistrărilor 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 câte ori este nevoie
şi de obicei pe un alt suport magnetic decât cele pe care rezidă baza de date. Aceste
copii pot fi utilizate doar în situaţia în care prelucrările efectuate între momentul
realizării copiilor şi cel al apariţiei unei defecţiuni pot fi reluate. Acest lucru este
posibil doar dacă prelucrările sunt efectuate într-o secvenţă cunoscută, iar timpul
necesar pentru reprocesarea lor nu este foarte mare.
Durata mare de execuţie 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 măsură mai
mică intervenţia umană.
209

Universitatea SPIRU HARET


Jurnalul tranzacţiilor este un fişier special întreţinut de SGBDD, în care sunt
memorate informaţiile despre tranzacţiile efectuate asupra bazei de date, cum sunt:
– identificatorul sau codul tranzacţiei;
– momentul începerii execuţiei tranzacţiei;
– numărul terminalului sau identificatorul utilizatorului care a iniţiat
tranzacţia;
– datele introduse;
– înregistrările modificate şi tipul modificării.
Jurnalul imaginilor se deosebeşte de jurnalul tranzacţiilor prin aceea că el nu
conţine descrierea operaţiilor efectuate asupra bazei de date, ci efectul acestora.
Acest tip de jurnal poate avea una din formele:
– jurnalul cu imaginea înregistrărilor după modificare şi, în acest caz,
conţine copia fiecărei înregistrări care este modificată;
– jurnalul cu imaginea înregistrării înainte de modificare;
– jurnalul care conţine ambele tipuri de mai sus.
În funcţie de defecţiunea care a determinat întreruperea lucrului, restaurarea
bazei de date se realizează automat de SGBDD sau manual, adică necesită
intervenţie umană.
Restaurarea automată a bazei de date este executată de SGBDD după
oprirea şi restaurarea sistemului în urma unei căderi. Prin acest proces, baza de date
este adusă într-o formă consistentă prin derularea înapoi a tranzacţiilor active în
momentul defecţiunii şi continuarea tranzacţiilor înregistrate ca finalizate în fişierul
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 modificări ale datelor, aflate acum în memoria principală,
nu vor fi urmate imediat de rescrierea paginii respective pe disc.
Această operaţie poate fi făcută periodic sau la o cerere explicită a sistemului
sau în cazul în care este nevoie de spaţiu 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 menţinute în memorie paginile frecvent
utilizate, ceea ce duce la reducerea numărului de operaţii de transfer între memoria
principală şi memoria externă. Acelaşi regim de păstrare în memorie, până la un
transfer ulterior pe disc, se aplică şi informaţiilor de jurnalizare a tranzacţiilor.
Sincronizarea memoriei cu baza de date şi fişierul 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 următoarelor operaţii:
a) oprirea proceselor active la momentul respectiv;
b) forţarea scrierea paginilor de memorie în jurnale şi apoi în baza de date;
c) scrierea unei înregistrări speciale în jurnalul tranzacţiilor, scriere necesară
la restaurarea şi reluarea prelucrărilor, care indică starea fiecărui proces activ în
momentul executării punctului de verificare, starea fişierelor 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ă
intervenţie umană, şi nu pentru că ar fi un proces manual. Este necesară în situaţia
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 încărcarea celei mai recente copii a bazei de date
şi reluarea prelucrărilor efectuate din momentul copierii şi până la producerea
defecţiunii.
Copiile se pot realiza în una din următoarele 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 tranzacţiilor în curs de execuţie. SGBDD-ul va realiza
automat derularea înapoi a tranzacţiilor în curs de execuţie, obţinându-se astfel o
stare consistentă a bazei de date.
Timpul consumat de operaţia de copiere este dependent de mărimea bazei de
date, ca şi de metoda de copiere utilizată. Acest parametru va fi luat în considerare
la stabilirea frecvenţei de realizare a copiilor. Restaurarea manuală este cu atât mai
eficientă, cu cât SGBDD-ul va permite şi copierea fişierelor jurnal. În intervalul
dintre două copieri ale bazei de date se vor realiza mai multe copii ale fişierului
jurnal, se vor stabili punctele de verificare, în felul acesta asigurându-se
sincronizarea memoriei cu fişierul jurnal şi cu baza de date.
Tranzacţiile inactive din jurnal vor fi şterse din fişier.
Procesul de restaurare presupune încărcarea celei mai recente copii a bazei de
date, urmată de încărcarea copiilor jurnalului în ordinea în care au fost efectuate.
Asigurarea securităţii bazei de date presupune interzicerea accesului
neautorizat la date şi se realizează cu un set de măsuri de protecţie umană, software
şi hardware. Astfel, se pot stabili parole pe baza cărora să fie permis accesul la
resursele sistemului de calcul. SGBDD-ul poate activa şi un jurnal pentru urmărirea
accesului la baza de date, pe baza lui fiind posibilă detectarea încercărilor de acces
neautorizat. Pentru cererile de I/O transmise sistemului de operare de SGBDD sunt
posibile verificări suplimentare referitoare la utilizarea corectă a fişierelor sau a
funcţiilor sistemului de operare.
Hardware-ul poate oferi şi el o protecţie suplimentară prin transferarea
datelor numai în zone de memorie care sunt controlate de SGBDD.
Modalităţile de asigurare a securităţii bazei de date sunt:
1. Autorizarea şi controlul accesului la date, care presupun identificarea
utilizatorilor, restricţionarea accesului acestora la date, precum şi stabilirea de
restricţii 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
menţine pentru fiecare parolă o listă de privilegii pentru user-ul care foloseşte acea
parolă.
User-ii pot fi asociaţii unor grupuri, la drepturile fiecăruia adăugându-se
drepturile stabilite pentru grupul respectiv. Administratorul bazei de date este user-
ul, care, implicit, are toate drepturile asupra bazei de date, precum şi dreptul de a
stabili sau revoca privilegii pentru ceilalţi utilizatori.
211

Universitatea SPIRU HARET


Utilizatorii obişnuiţi sunt cei care nu au în proprietate obiecte şi nu au alte
privilegii decât cele moştenite ca membri ai unui grup sau menţionate explicit de
administratorul bazei de date sau proprietarii de obiecte.
2. Definirea şi utilizarea viziunilor (a schemei externe a bazei de date).
Viziunile sunt partiţii logice ale bazei de date. Ele sunt definite pentru diferiţi
utilizatori în raport cu necesităţile 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 iniţiale.
Utilizatorul nu va avea acces la efectuarea unor operaţii asupra vizunii care să
afecteze obiectele iniţiale.
3. Realizarea de proceduri speciale. Sunt SGBDD-uri ce au facilitatea
definirii unor proceduri care să fie păstrate la nivelul sistemului, într-o formă
precompilată. În aceste proceduri se vor specifica explicit operaţiile care se vor
efectua asupra datelor.
4. Criptarea datelor este operaţia de codificare a datelor pe timpul stocării
sau al transportului lor, astfel încât descifrarea lor să poată fi făcută numai de
posesorii autorizaţi de cod. La nivelul SGBDD-ului, această facilitate are două
forme:
a) existenţa unor rutine speciale care realizează criptarea datelor la cerere sau
automat;
b) existenţa 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 organizaţia economică, este mai puţin important
unde este localizată baza de date (pe Intranet-ul organizaţional, pe Extranet sau pe
Internet), ci dacă îi satisface cerinţele imediate, sub aspect cantitativ şi calitativ, de
informare sau pentru asistarea deciziei.
Reţeaua Intranet este o reţea locală de calculatoare şi de comunicaţii pentru
organizaţii mari care asigură, prin tehnologia Web, cerinţele de informare şi
documentare ale angajaţilor săi, iar prin extensie, prin cont şi parolă de acces
(reţeaua Extranet), şi ale utilizatorilor externi agreaţi de organizaţie (clienţi,
furnizori, colaboratori externi etc.). Reţeaua Intranet poate să existe complet
separat de reţeaua Internet.
Arhitectura Intranet este prezentată, după BDASEIG [64], în fig.8.8.
Serverul Web, denumit şi server HTTP, este un server software care
foloseşte protocolul de transfer al hipertextelor, HTTP (HyperText Transfer
Protocol) pentru a furniza documente HTML şi scripturi asociate la cererea
utilizatorilor finali. Prin intermediul unor interfeţe 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 reaminteşte
că scriptul este un program compus dintr-un set de instrucţiuni cu privire la o
aplicaţie sau la un program utilitar. În aplicaţiile Web, scripturile sunt utilizate
pentru obţinerea interactivităţii şi personalizării paginilor Web.
În cadrul acestei reţele Intranet, serviciile furnizate sunt de acces la bazele
de date (de unde se obţin date sub formă de informaţii şi cunoştinţe), de
comunicaţii şi partajarea resurselor informatice, pentru accesarea şi dezvoltarea
aplicaţiilor, de administrare, securitate şi transport etc. Aceste servicii sunt
împărţite pe opt niveluri (Forrester Research,[64]). Între acestea se regăsesc o serie
de servicii informaţionale specializate ca pagini Web, transfer de fişiere realizabil
prin intermediul protocolului FTP, (File Transfer Protocol), groupware, ştiri
(News), circulaţia documentelor, videoconferinţe şi audioconferinţe, forumuri
electronice.

GROUPWARE
MESAGERIE NEWS
PROGRAME SMTP/POP

API
INTERFEŢE (BROWSER TCP/IP
STANDARD
WEB)

FTP

DIRECTOARE JAVA
CLIENT
CU FIŞIERE MAIL

Fig.8.8. Arhitectura reţelei Intranet

Paginile Web sunt documente Web, cu legături la alte documente Web, ce


sunt formate din fişiere HTML, fişiere 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
conţin şi applet-uri Java (programe ce se execută într-o aplicaţie cu browser, adică
213

Universitatea SPIRU HARET


program de navigare în reţelele 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 găzdui acelaşi site Web (organizaţiile mari).
Transferul de fişiere se efectuează în directoare de fişiere, cataloage sau
dosare (folders).
Groupware asigură unui grup de utilizatori din reţeaua Intranet posibilitatea
de a colabora la realizarea unui proiect.
Serviciile Web reprezintă în esenţă o familie de aplicaţii bazate pe
protocoalele Web ce pot fi combinate şi integrate în aplicaţiile 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 reţea,
SMTP (Simple Mail Transfer Protocol), al protocolului pentru serverele de e-mail
(oficiile poştale electronice), POP3 (Post Office Protocol) şi a protocolului de
acces interactiv la poşta electronică, IMAP (Interactive Mail Access Protocol).
Serverele proxy sau intermediare realizează selecţia mesajelor, reducând astfel
traficul prin reţea. Prin extensia poştei electronice s-a obţinut circulaţia
documentelor (workflow) în Intranet.
Videoconferinţele şi audioconferinţele asigură interactivitatea utilizatorilor
pasivi, prin legături 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 căutare (Search Engine) au devenit
din ce în ce mai puternice în regăsirea informaţiilor 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 funcţia de export (meniul principal File, opţiunea
Export…), paginile Web pot prelua date dintr-un tabel, formular, interogare sau
raport. Succesiunea de comenzi pentru un tabel MATERIALE este următoarea:
selecţie obiect de vizualizat după nume din fereastra Database (table); meniul
principal File; opţiunea Export…; fereastra Export Table ‘MATERIALE’ As; caseta
Save As Type cu opţiunea HTML Documents; butonul Save.
214

Universitatea SPIRU HARET


Paginile Web dinamice pun în evidenţă schimbările survenite în baza de date
online şi se adaptează permanent la aceste modificări, 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ă script-
area pe partea de server pentru realizarea interactivităţii documentelor indiferent de
platforma de lucru a părţii de client. Utilizatorul are acces cu un editor peste codul
generat de Access pentru eventuale modificări ale elementelor de design al paginilor
sau legate de datele accesate. Pot fi adăugate î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 recepţionate pentru publicare pe servere Web de
tipul Microsoft Internet Information Server(IIS) sau Personal Web Server (PWS).
Serverele Web de tipul IIS funcţionează sub sistemele de operare începând cu
Microsoft Windows 2000, în timp ce PWS funcţionează sub toate versiunile
sistemului de operare Microsoft Windows [64].
Legătura dintre baza de date şi pagina Web presupune definirea înaintea
generării paginii Web dinamice a unui nume al sursei de date, DSN (Data Source
Name) prin intermediul facilităţii 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 foloseşte colecţia de obiecte ADO (ActiveX DataBase Object)
şi limbajul de interogare structurată, SQL. ADO reprezintă o interfaţă la OLE
DataBase, de tipul interfeţelor de programare a aplicaţiilor, 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
găsesc în fereastra Database, la secţiunea Pages, asigură crearea unui fişier separat
de baza de date pentru pagini Web. Legătura către 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 apăsarea butonului New, după care se alege
una dintre următoarele opţiuni:
• 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 având 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 generării 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 câmpuri,
215

Universitatea SPIRU HARET


Field List, se selectează câmpurile 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

Aşa cum s-a arătat mai sus, bazele de date distribuite (DDB) sunt baze de
date implementate în reţeaua de calculatoare şi de comunicaţii prin intermediul
partiţiilor componente ce sunt dispuse în diferite noduri ale reţelei. Aceste baze de
date pot fi centrale sau locale. O entitate client poate executa, de regulă, două
tipuri de operaţii asupra unei baze de date distribuite: citire (situaţia în care nu se
efectuează modificări asupra bazei de date) şi scriere (adăugare de noi înregistrări,
ştergerea unor înregistrări în baza de date, modificarea conţinutului unor
înregistrări). Efectele operaţiei de scriere se obţin dacă entitatea client dispune de
permisiunea necesară acestui scop.
216

Universitatea SPIRU HARET


Între aplicaţia entităţii 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 îndeplineşte funcţia de translator între limbajul
aplicaţiei clientului şi limbajul specific DDBMS.
Tehnologia Microsoft pentru platforma .NET, denumită ADO.NET
realizează accesul la bazele de date relaţionale şi la etichetele XML. ADO.NET
(Active Data Object) semnifică obiecte de date active ce fac parte din clasele
specifice DataSet (tabele, rânduri, coloane, relaţii etc.), sursele de date pentru .NET
Framework şi definiţiile formulate pentru tipuri particularizate specifice, de
exemplu SQL Server. Etichetele XML (eXtensible Markup Language) desemnează,
alături de atributele XML, informaţii referitoare la elementele XML din
compunerea documentelor XML (etichetă de început, element, etichetă de sfârşit):
&lt; Nume_banca =”BCR” din Bucuresti”&gt;

Sursa de date Setul de date


pentru locale
.NET DataSet
FRAMEWORK

XML
Fig.8.10. Părţile componente ale arhitecturii generale
de acces la date distribuite ADO.NET

Părţile componente ale arhitecturii generale ADO.NET sunt baza de date


(DataBase), sursa de date .NET (Data Provider) şi setul de date locale DataSet, aşa
cum se prezintă pe site-ul www.Microsoft.com (fig.8.10) şi în dicţionarul de
calculatoare Microsoft.
Serverul de date realizează o conexiune temporară cu entitatea client numai
pe durata unei operaţii de citire sau a unei operaţii de scriere. Altfel exprimat,
ADO.NET utilizează un model deconectat în scopul gestionării bazelor de date.
Pentru efectuarea unor operaţii asupra bazei de date de pe serverul de date
este necesară parcurgerea următoarelor etape [10]:
• stabilirea parametrilor de realizare a conexiunii client/server;
• instanţierea unui obiect ce aparţine clasei Data Adapter, prin intermediul
căruia clientul adresează serverului comenzi din categoriile selecţie (Select),
adăugare (Insert), ştergere (Delete), actualizare (Update), după care recepţionează
rezultatele acţiunii î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 prelucrări 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ă operaţie, se produce deconectarea clientului de la
serverul de baze de date. Dacă sunt efectuate modificări asupra înregistrărilor
setului local de date, ADO.NET realizează actualizarea modificărilor pe server la
următoarea conectare ce este destinată salvărilor prelucrărilor 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.

Adaptor de Server de date


Set de date local (SQL Server,
(DataSet) date (Data
Adapter) Oracle DB)
la Client

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

Aceste metode apar ca opţiuni ale ferestrei de alegere a tipului de interogare


din Data Adapter.
Setul de date local în ADO.NET reprezintă o colecţie DataTable Collection,
compusă din mai multe tabele ce sunt obiecte DataTable. Obiectele DataTable
reprezintă imaginile unor tabele ale căror coloane sunt stocate în
DataColumnCollection, ale căror restricţii sunt conţinute în ConstraintCollection,
ale căror rânduri sunt stocate în DataRowCollection. De asemenea, relaţiile între
tabelele bazei de date relaţionale sub formă de obiecte DataRelation sunt stocate în
DataRelationCollection.
Setul de date local poate fi populat cu înregistrări 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 descrescător, arată astfel: setul de
date local (DataSet), tabele (Tables), rânduri (Rows), câmpuri (Fields), itemi (Items).
Formularul de lucru în VB.NAT se realizează în aceeaşi manieră cu cea
prezentată la capitolul de Visual Basic (casete cu text, etichete, liste etc.). În cazul
fiecărui set de date local pot fi vizualizate, din meniul contextual, proprietăţile
câmpurilor acestuia, sub formă de ferestre cu două coloane. Aceste proprietăţi nu
pot fi modificate de utilizator.

218

Universitatea SPIRU HARET


9. BAZE DE DATE ÎN TEHNOLOGII AVANSATE

Cercetările în domeniul bazelor de date în tehnologii avansate (advanced


database) evidenţiază câteva tendinţe relevante concretizate în baze de date
orientate obiect, baze de date relaţionale 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 lucrări. În prezentul capitol,
accentul este pus pe prezentarea caracteristicilor bazelor de date active şi
sistemelor asociate acestora, precum şi pe prezentarea câtorva specificităţi ale
bazelor de date relaţionale orientate obiect.
S-a arătat (paragraful 4.2) că, din punctul de vedere al evoluţiei generaţiilor
de baze de date (sistemelor de gestiune a bazelor de date), generaţia 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 schimbările 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 – condiţie – acţiune (ECA). Aceasta înseamnă
că atunci când (when) un eveniment se produce, se testează o condiţie şi dacă (if)
aceasta este adevărată la evaluare, atunci (then) se execută o acţiune.

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 gestionării adaptive a
datelor în conformitate cu cerinţele utilizatorilor în luarea deciziilor economice.
Bazele de date deductive sunt baze mari de date supuse analizei şi interpretării.
Sistemul de gestiune aferent acestor baze de date deductive cuprinde instrumente de
realizare automată a raţionamentelor realizate prin programare logică. Programarea
logică reprezintă un tip de programare bazată pe raţionamente, î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 raţionament se înţelege un proces de deducţie (inferenţă) aplicat asupra
219

Universitatea SPIRU HARET


setului de fapte şi reguli. Faptele (facts) sunt informaţii declarative, cu reprezentare
simbolică, ce servesc pentru descrierea relaţiilor care se referă la unul sau mai multe
obiecte ale problemei de rezolvat. Relaţiile descriu legăturile dintre obiecte. Noţiunea
de obiect a fost detaliată în paragraful 2.4. Regulile (rules) sunt utilizate pentru
definirea şi deducerea de noi fapte şi relaţii 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 raţionamente pe baza regulilor,
conduc la obţinerea de noi fapte.
Elementele de bază ale programării 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 următori la specializarea Contabilitate şi
informatică de gestiune. În lucrarea de faţă se prezintă numai câteva noţiuni
introductive în scopul întregirii imaginii de ansamblu asupra generaţiilor 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 conţine simboluri funcţie, dar conţine cel puţin simboluri predicative.
Simbolul predicativ este specific predicatelor (predicates) ca elemente de bază în
procesarea datelor prin programarea logică şi care reprezintă relaţiile 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 propoziţiilor de
ordinul I, adică acel limbaj formal ce conţine un alfabet, reguli de sintaxă, axiome
şi o regulă de deducţie de tipul când (when)...dacă (if)... atunci (then) ... Este de
menţionat diferenţa esenţială dintre regulile de producţie specifice sistemelor
expert (premisă sau condiţie→concluzie) şi regulile specifice sistemelor de
gestiune a bazelor de date active (eveniment→condiţie →acţiune).
Bazele de date deductive prezintă două componente: componenta asociată
modulului relaţional (SGBDR pentru baza de fapte) şi componenta asociată
modulului programării logice (pentru realizarea interogărilor). Cuplarea dintre
SGBDR şi modulul programării logice (sistemul de raţionamente) poate să fie
cuplare slabă (realizată numai în anumite momente de timp) sau cuplare strânsă
(interacţiune continuă, permanentă). Prin integrarea completă a instrumentelor de
realizare automată a raţionamentelor în cadrul SGBDR se obţine 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
interfeţe 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 definiţii de proprietăţi. Sintaxa limbajului nu
conţine predicate speciale şi utilizează logica propoziţiilor de ordinul I, fără
simboluri de funcţie.
Bazele de date deductive sunt în curs de cercetare şi de punere la punct a unor
soluţii practice în strânsă legătură cu dezvoltările din domeniul inteligenţei
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 extracţie sau transformare de
date, având ca surse bazele de date (fişierele) interne sau externe dintr-o
organizaţie, date ce variază în timp, sunt organizate multidimensional şi sunt
exploatate prin intermediul interogărilor convenţionale 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 operaţionale din organizaţie,
adică acele baze de date specifice domeniilor de gestiune ale organizaţiei
(producţie-servicii, comercial-marketing, cercetare-dezvoltare, financiar-contabil,
resurse umane) ce stochează datele ce se referă la tranzacţiile (evenimentele)
specifice domeniului de gestiune considerat.
Sursele de date externe sunt reprezentate de datele provenite de la alte
organizaţii de coordonare sau de sinteză.
Prelucrarea datelor din bazele de date operaţionale se realizează potrivit
conceptului de prelucrare interactivă (online) a tranzacţiilor, OLTP (On-Line
Transaction Processing), ce reliefează caracteristicile acestor prelucrări: volum
limitat de date accesate, previzibilitatea interogărilor realizate de utilizatorii finali,
număr mic de intrări/ieşiri asociat fiecărei tranzacţii, prezenţă sporadică şi slabă a
elementelor de analiză.
Bazele de date multidimensionale servesc pentru obţinerea de noi informaţii sau
pentru deducerea de noi cunoştinţe 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 comparaţie între bazele de date
operaţionale şi bazele de date multidimensionale.
Tabelul 9.1.
Comparaţie între bazele de date operaţionale şi bazele de date multidimensionale
Nr. Caracteristica Bazele de date Bazele de date
crt. de comparaţie operaţionale multidimensionale
1. Destinaţia Gestiunea curentă Componentă a sistemelor informatice
principală a tranzacţiilor pentru asistarea deciziilor
2. Structurarea Pe procese Pe subiecte ale managementului
datelor funcţionale
3. Modele utilizate Relaţional, Stea, fulg de nea, puţin normalizate
normalizate
4. Date Actuale Temporale sau istorice
5. Agregarea datelor Nu Da
6. Actualizare Imediată În momente diferite
7. Grad de consolidare Foarte scăzut Foarte ridicat
8. Percepţie Tabele detaliate Multidimensională, rezumată
9. Număr utilizatori Mare Mic
10. Accesare Citire şi scriere Numai citire
11. Mărime Sute MB – zeci GB Zeci GB – zeci TB
12. Număr de Mic Mare
înregistrări
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 tranzacţiilor online, OLTP. Extragerea
datelor relevante şi obţinerea informaţiilor consolidate ale organizaţiei, necesare
nivelurilor superioare de management (de nivel mediu şi strategic) se efectuează prin
prelucrarea analitică online, OLAP. Se obţin, la acest nivel, depozitele de date (Data
Warehouse), ce sunt un produs al mediului organizaţional (sistem informatic
integrat) şi al tehnologiilor informaţiilor şi ale comunicaţiilor (IT&C) cele mai
avansate. Depozitele de date conţin 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 operaţionale ale
organizaţiei. Aceste baze de date operaţionale asigură datele pentru depozite de date,
după ce sunt mai întâi extrase, curăţate, transformate şi stocate. Depozitele de date
servesc pentru implementarea fizică a unor modele de date pentru asistarea deciziilor
de importanţă strategică pentru organizaţie.
Caracteristicile fundamentale ale depozitelor de date sunt [1]: orientarea pe
subiecte, integrarea, caracterul istoric şi persistenţa 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 (fişiere de date, baze de date
relaţionale, înregistrări referitoare la tranzacţiile online, surse de date externe
organizaţiei 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 stocării
electronice a datelor din organizaţie). Persistenţa datelor din depozitele de date se
referă la caracterul permanent de stocare, cu atributul de « citeşte-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 conţin
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 operaţiunile curente ale organizaţiei (OLTP) sau din
sistemele moştenite sunt stocate în baze de date şi sunt manipulate, aşa 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 supe-
rioare de management ale organizaţiei economice sub forma depozitelor de date
(Data Warehouse), servind astfel pentru analiza şi extragerea informaţiilor 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, terabaiţi). Tabelul de fapte este elementul
constitutiv al depozitului de date ce constă în date şi informaţii (fapte) referitoare la
obiectul de activitate al companiei, produsele/serviciile oferite şi vândute/realizate,
costurile de producţie, preţurile practicate, detalii privind livrarea acestor
222

Universitatea SPIRU HARET


produse/asigurarea serviciilor către beneficiari, date despre furnizori, colaboratori
şi beneficiari/clienţi, performanţele personalului companiei etc. Tabelul de
dimensiuni depozitează date şi informaţii pe baza conceptului de dimensiune
(aceasta poate reprezenta entităţile de măsurare a timpului – ora, ziua, săptămâna,
luna, trimestrul, semestrul, anul, cincinalul, deceniul, secolul -, entităţile geografice
– (localitatea, statul, regiunea, continentul -, entităţile de producţie - categorie,
denumire, cod, tip, calitate, cantitate vândută, preţ unitar etc. Nivelurile de
centralizare servesc pentru creşterea vitezei de răspuns la analiza şi interogarea
depozitelor de date prin structurarea datelor în funcţie de diverse criterii – timp,
categorii de produse, zonă geografică, categorii de clienţi etc.

9.3. Bazele de date multimedia

Multimedia reprezintă, în sens larg, ansamblul mijloacelor (mediilor) de


comunicare prin intermediul cărora se realizează o percepţie vizuală şi auditivă,
sub diverse forme, a informaţiilor destinate unui utilizator anume. Principalul
avantaj oferit de multimedia este dat de accesul rapid şi facil la cunoaştere şi
informare. Suportul esenţial al dezvoltării multimediei este dat de progresele
IT&C. Ca urmare, în acest context al informaticii şi ştiinţei calculatoarelor,
multimedia poate fi definită ca o combinaţie interactivă a mai multor tipuri de date:
sunete, grafică, animaţie şi secvenţe video. În Dicţionarul 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 reţele complexe de asociaţii, în care parcurgerea are
caracter nesecvenţial (detaliile au fost date la cursul de Informatică de gestiune –
baze, când 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
stocării datelor multimedia (prin extensie, datelor hipermedia). Structurile de
stocare sunt eficiente şi sunt realizate după arbori speciali (de exemplu, Quadtree,
Rtree sau combinaţii ale acestora). Bazele de date multimedia sunt baze de date
foarte mari deoarece stocarea datelor video şi audio necesită spaţii de memorie
imense. Pe cale de consecinţă, interogarea acestor baze de date cere timp destul de
mare. De aceea, regăsirea 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 stării mediului ca urmare a producerii
unor evenimente externe: o secvenţă video sau o piesă muzicală pot fi modificate,
inclusiv prin alterarea conţinutului acestora. Pentru datele multimedia lipseşte
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 aplicaţie de prezentare şi reclamă bancară poate fi
formată din desene animate, sunet corespunzător imaginilor şi secvenţe de film din
activitatea de front-office la una dintre sucursalele băncii. Obiecte complexe utili-
zate în realizarea spotului publicitar pot fi regăsite şi la monitoarele ATM-urilor
223

Universitatea SPIRU HARET


băncii atunci când clientul efectuează o operaţiune de scoatere a numerarului din
contul propriu.
În aplicaţiile cu baze de date multimedia, accesul la date reprezintă, în
realitate, interacţiunea 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 funcţională sau tehnologică, structura
relaţională, structura de interogare sau dinamică şi structura de prezentare sau de
sistem. În cazul structurii funcţionale sau tehnologice a bazelor de date multimedia,
sunt evidenţiate funcţiile de generare, achiziţie, compresie, stocare, manipulare etc.
a datelor multimedia ce sunt, ulterior, integrate cu datele de tipuri clasice. În ceea ce
priveşte structura relaţională, datele multimedia provenite din surse diferite,
heterogene (audio, video, animaţie, 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 regăsire a datelor
multimedia se utilizează în funcţie de tipul datelor şi modul de interacţiune a
utilizatorului cu baza de date multimedia. În sfârşit, structura de prezentare sau de
sistem se referă la independenţa bazei de date faţă de platforma de lucru a utili-
zatorului, la mecanismele de acces concurent la baza de date, la modul de obţinere a
interfeţelor grafice destinate utilizatorului, la scurtarea timpului de regăsire a datelor
multimedia şi la apropierea acestuia de cel al aplicaţiilor î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 tranziţie de stări pe baza nivelelor de
recunoaştere a stărilor obiectelor dintr-o imagine anume (scenă). Când tranziţia
încetează se obţine 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 fiecărui segment grafic din compunerea unei scene i se
asociază atribute (culoare, poziţie, direcţie de deplasare, efecte speciale).
SGBD multimedia sunt caracterizate de următoarele particularităţi: datele
multimedia sunt complexe, în volume mari şi de tipuri variate; obiectele
multimedia sunt mari, BLOB (Binary Large Objects); gestionarea datelor
multimedia implică operaţiuni complexe de sincronizare şi de distribuire în timp şi
spaţiu a datelor multimedia de tipuri diferite; suportul tehnic (adică gama de
periferice ale sistemului informatic în a cărui 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
relaţii 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 aplicaţiile multimedia interactive sunt obţinute pe baza scenariilor bazate
pe aplicaţii şi evenimente sistem, cu obiecte definite temporal şi spaţial.
SGBD multimedia realizează stocarea şi transmiterea pe canalele de comunicaţii
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 mişcare 200:1, iar a semnalului audio 10:1.
Crearea bazelor de date multimedia se realizează cu soft specializat (cu
funcţii de stocare şi de consultare). De exemplu, Multimedia Toolbox, ce aparţine
firmei Asymetrix, este un instrument de realizat cărţi multimedia, orientat pe
programare vizuală, sub sistemul de operare Microsoft Windows. Limbajul de
programare de tip script încorporat în Multimedia Toolbox se numeşte OpenScript
şi serveşte pentru descrierea scenariului aplicaţiei.
Datele multimedia sunt afişate şi transmise sub formă de fluxuri (stream-uri)
continue în timp.
Bazele de date multimedia se folosesc cu precădere î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
vânzare), în administraţia electronică, e-government (descrierea formularelor de
contabilitate, a formularelor de înregistrare a plăţii impozitelor şi taxelor, a
documentelor specifice obţinerii permisului auto, în activitatea de instruire şi
educaţie (tutori inteligenţi, enciclopedii multimedia educaţionale), în activitatea de
documentare (documente hipertext) etc.

9.4. Bazele de date relaţionale orientate obiect

Prin extinderea facilităţilor oferite de bazele de date relaţionale cu includerea


structurilor de date complexe de natura obiectelor, s-au obţinut baze de date
relaţionale orientate obiect. SGBD-ul asociat bazelor de date relaţionale orientate
obiect, OORDBMS (Object-Oriented Relational DataBases Management System),
include elemente din SGBD relaţional (RDBMS) şi din SGBD orientat pe obiecte
(OODBMS).
Conceptul de domeniu din teoria bazelor de date relaţionale 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 relaţie din lumea relaţională cu
clasa de obiecte din lumea obiectelor şi să se amestece relaţiile cu pointerii [5] prin
care se afectează integritatea conceptuală a modelului relaţional. Se reaminteşte
aici că pointerii sunt variabile ce conţin adrese pentru itemi de date (itemii de date
pot fi cuvinte, serii de numere sau înregistrări din fişiere) sau pentru instrucţiuni.
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ă înţelegere a interacţiunilor dintre cele două modele pentru baze de date
(relaţional şi orientat pe obiecte). Exemplele tipice asociate celor patru cuadranţi
(sferturi) ai matricei Stonebraker sunt:
• pentru cuadrantul 1 – procesorul de texte clasic;
• pentru cuadrantul 2 – aplicaţiile economice (din domeniul afacerilor);
• pentru cuadrantul 3 – aplicaţiile de proiectare asistată de calculator, CAD
(Computer Aided Design);
• pentru cuadrantul 4 – aplicaţiile cu baze de date multimedia.

225

Universitatea SPIRU HARET


2. Aplicaţii pentru 4. Aplicaţii pentru date
INTEROGARE
date simple cu cerinţe complexe cu cerinţe
PREZENTĂ
de interogări ad-hoc de interogări ad-hoc

1. Aplicaţii pentru date 3. Aplicaţii pentru date


INTEROGARE
simple fără cerinţe complexe fără cerinţe
ABSENTĂ
de interogări ad-hoc de interogări 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 conţine produsele unei firme de
aparatură electronică şi se adaugă la această bază de date imagini cu produsele
respective, se pune problema determinării acelor produse electronice care satisfac o
anumită caracteristică de design (aspect exterior). Este necesară prelucrarea
imaginilor produselor electronice (ca obiecte) pentru a obţine răspunsul la
problema ridicată. Caracteristicile dorite la selecţie se descriu printr-o metodă
ataşată obiectului.
Se pot crea tabele prin intermediul caracteristicii de moştenire (inheritance)
specifică obiectelor. Crearea unor funcţii la nivel de înregistrare, la nivel de tabel şi
chiar la nivel de bază de date sunt căi de soluţionare a problemelor practice care
depăşesc cadrul bazelor de date relaţionale, conducând la ideea de bază de date
relaţională orientată obiect.
Bazele de date relaţionale 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-relaţional prezintă mai multe
caracteristici, printre care:
• cerinţa de interogare ad-hoc, cu definirea vederilor (view-urilor) şi
constrângeri de integritate declarative;
• definirea dinamică a claselor pentru rezultatele interogărilor ad-hoc;
• metode ce includ mai multe clase;
• posibilitatea accesului dual – interactiv şi programat – la baza de date;
• existenţa regulilor pentru chei externe sau străine etc.
În cazul ultimelor versiuni ale SGBD Oracle, a fost implementat modelul
obiect-relaţional 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, Iaşi, 2002.


2. Bâscă, O., Baze de date, Editura ALL, Bucureşti, 1997.
3. Bott, E., Leonhard, W. - Microsoft® Office XP, Editura Teora, Bucureşti, 2002.
4. Cristea, V.; Athanasiu, I.; Kalisz, E.; Iorga, V., Tehnici de programare, Editura
Teora, Bucureşti, 1998.
5. Date, C.J., Baze de date, Ediţia a opta, Pearson Addison Wesley, Editura Plus,
Bucureşti, 2004.
6. Davidescu, N., Frăţilă, L., Frăţilă, R., Bunea, A., Cozgarea, A., Sisteme
informatice financiar-contabile, Editura All Back, Bucureşti, 1999.
7. Davidescu, D.N., Proiectarea sistemelor informatice prin limbajul Unified
Modeling Language (PSI 2), Editura All Beck, Bucureşti, 2003.
8. Dollinger, R., Baze de date şi gestiunea tranzacţiilor, Editura Albastră, Cluj-
Napoca, 2001.
9. Dollinger, R., Utilizarea sistemului SQL Server (SQL 7.0, SQL 2000), Editura
Albastră, Cluj-Napoca, 2002.
10. Dospinescu, O., Dezvoltarea aplicaţiilor în Visual Basic.NET, Editura Polirom,
Iaşi, 2004.
11. Drăgănescu, M., acad. - Societatea informaţională şi a cunoaşterii. Vectorii
societăţii cunoaşterii, Studiu tematic, Academia Română, www.academiaromana.ro.
12. Filip, Fl.Gh., Decizie asistată de calculator. Decizii, decidenţi. Metode şi
instrumente de bază, Editura Tehnică şi Editura Expert, Bucureşti, 2002.
13. Fânaru, L.; Brava, I., Visual Basic. Primii paşi… şi următorii, Editura Polirom,
Iaşi, 2002.
14. Forta, B., SQL pentru începători, Editura Teora, Bucureşti, 2002.
15. Fotache, D., SQL. Dialecte DB2, Oracle, Visual Fox Pro, Editura Polirom, Iaşi,
2001.
16. Fotache, D., Groupware. Metode, tehnici şi tehnologii pentru grupuri de lucru,
Editura Polirom, Iaşi, 2002.
17. Fusaru, D.; Udrică, M.; Cocianu, C., Programarea orientată pe obiecte, Editura
Fundaţiei România de Mâine, Bucureşti, 1999.
18. Fusaru, D.; Mareş, M.D; Mihai, G., Visual Basic şi Access, Editura Fundaţiei
România de Mâine, Bucureşti, 2001.
19. Fusaru, D., Arhitectura bazelor de date. Mediul SQL, Editura Fundaţiei România
de Mâine, Bucureşti, 2002.
20. Fusaru, D.; Gherasim, Z.; Andronie, M.; Bâra, A.; Stroe, P., Aplicaţii economice
în Visual Basic şi Access, Editura Fundaţiei România de Mâine, Bucureşti, 2003.
21. Gherasim, Z.; Andronie, M.; Popescu-Bodorin, N., Informatică managerială în
activitatea de educaţie fizică şi sport, Editura Fundaţiei România de Mâine, Bucureşti,
2004.
22. Habracken, J., Access 2002 pentru începători, Editura Teora, Bucureşti, 2003.
227

Universitatea SPIRU HARET


23. Henderson, K., The Guru’s Guide to Transact-SQL, 1st Edition, Pearson
Education, Inc., Addison Wesley, 2000.
24. Hernandez, M.J., Proiectarea bazelor de date, Editura Teora, Bucureşti, 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,
Bucureşti, 2004.
26. Johnson, S. - Microsoft® Office. Access 2003, Editura Teora, Bucureşti, 2004.
27. Kovacs, S., Programarea interfeţelor 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.; Bădescu, C.; Ioniţă, C., Baze de date: organizare,
proiectare şi implementare, Editura ALL, Bucureşti, 1995.
30. Mihalca, R.; Fabian, C.; Uţă, A.; Simion, F., Analiză şi proiectare orientată obiect.
Instrumente de tip Case, Editura Societatea Autonomă de Informatică, Bucureşti, 1998.
31. Militaru, G., Sisteme informatice pentru management, Editura Bic All, Bucureşti,
2004.
32. Munteanu, A., Auditul sistemelor informaţionale contabile, Cadru general,
Editura Polirom, Iaşi, 2001.
33. Năstase, P.; Mihai, F.; Cosăcescu, L.; Covrig, L.; Stanciu, A., Tehnologia bazelor
de date: Access 2000, Editura Economică, Bucureşti, 2000.
34. Nicolaescu, I.; Gherasim, Z., Managementul resurselor informaţionale ale
organizaţiei, Editura Academiei Tehnice Militare, Bucureşti, 2004.
35. Oprea, D., Analiza şi proiectarea sistemelor informaţionale economice, Editura
POLIROM, Iaşi, 1999.
36. Oprea, D., Protecţia şi securitatea informaţiilor, Editura POLIROM, Iaşi, 2003.
37. Patriciu, V.V., Ene-Pietroşanu, M., Bica, I., Văduva, C., Voicu, N., Securitatea
comerţului electronic, Editura All, Bucureşti, 2001.
38. Pătruţ, B., Aplicaţii în Visual Basic, Editura Teora, Bucureşti, 2002.
39. Pârv, B., Dezvoltarea rapidă a aplicaţiilor cu Visual Basic, Editura Gil, Zalău, 2003.
40. Perry, G., Iniţiere în programarea calculatoarelor, Editura Teora, Bucureşti, 2000.
41. Peterson, J.V., Baze de date pentru începători, Editura BIC ALL, Bucureşti, 2002.
42. Popa, Gh.; Iliescu, M.; Berbec, Fl.; Ivancenco, V.; Andronache, V., Visual
Basic, Editura CISON, Bucureşti, 1999.
43. Popa, Gh.; Iliescu, M.; Udrică, M., Baze de date Access. Culegere de probleme,
Editura CISON, Bucureşti, 2001
44. Popescu, I., Modelarea bazelor de date, Editura Tehnică, Bucureşti, 2001.
45. Popescu, M., Baze de date relaţionale, Editura Academiei Tehnice Militare,
Bucureşti, 2001.
46. Popovici, M.D., Popovici, I.M., Rican, J.G., Proiectare şi implementare
software, Editura Teora, Bucureşti, 1998.
47. Rahmel, D., Programarea bazelor de date cu Visual Basic 6 în 24 de ore,
Editura Teora, Bucureşti, 2001.
48. Râcu, L.; Vlăduţu, I.; Şoavă, G., Limbaje de programare şi sisteme de gestiune a
bazelor de date, Editura Fundaţiei România de Mâine, Bucureşti, 2000.
49. Roşca, I., Macovei, E., Davidescu, N., Răileanu, V., Proiectarea sistemelor
informatice financiar-contabile, Editura Didactică şi Pedagofică, Bucureşti, 1993.
50. Sabău, G., Avram, V., Sisteme informatice pentru management, Editura Oscar
Print, 2000.
228

Universitatea SPIRU HARET


51. Sabău, G. L.- Premise ale procesului tranziţiei de la societatea industrială la
societatea cunoaşterii, Studiu tematic, Academia Română, www.academiaromana.ro.
52. Saporta, G.; Ştefănescu, V., Analiza datelor şi informatică, cu aplicaţii la studii
de piaţă şi sondaje de opinie, Editura Economică, Bucureşti, 1996.
53. Sădeanu, M., IT&C, Managementul strategic al tehnologiei informaţiei şi comuni-
caţiilor, vol.1. Organizaţia şi Infrastructura IT&C Centrate-Web, vol.2. Microeconomia IR&C,
Managementul proiectelor IT&C şi Managementul total al calităţii, Editura România Liberă,
Bucureşti, 2003.
54. Smeureanu, I., Drulă, G., Multimedia. Concepte şi practică, Editura Cison,
Bucureşti, 1997.
55. Somnea, D.; Calciu, M., Ghidul managerului pentru noile tehnologii informatice
şi de comunicaţie, Editura LUCMAN, Bucureşti, 2002.
56. Stanciu-Timofte, C., Baze de date pentru comerţ electronic pe Internet, Editura
Oscar Print, Bucureşti, 2002.
57. Stanciu, V., Proiectarea sistemelor informatice de gestiune, Editura Cison,
Bucureşti, 2000.
58. Velicanu, M., Lungu, I., Muntean, M., Iorga, M., Ionescu, S., Oracle, platformă
pentru baze de date, Editura Petrion, Bucureşti, 2002.
59. Waite, M.; Lafore, R., Structuri de date şi algoritmi în Java, Editura Teora,
Bucureşti, 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, Bucureşti, 2001.
62. Zaharie, D., Albescu, F., Bojan, F., Ivancenco, V., Vasilescu, C., Sisteme
informatice pentru asistarea deciziei, Editura Dual Tech, Bucureşti, 2001.
63. Zaharie, D., Roşca, I., Proiectarea obiectuală a sistemelor informatice, Editura
Dual Tech, Bucureşti, 2002.
64. *** - BDASEIG, Baze de date. Fundamente teoretice şi practice, Editura
InfoMega, Bucureşti, 2002.
65. *** - Dicţionar de matematică şi cibernetică în economie, Editura Ştiinţifică şi
Enciclopedică, Bucureşti, 1979.
66. *** - Microsoft Visual Basic 6.0. Ghidul programatorului, Editura Teora,
Bucureşti, 2002.
67. *** - Microsoft SQL Server 2000, Books Online.
68. *** - Microsoft Dicţionar de calculatoare, Ediţia a II-a, Editura Teora,
Bucureşti, 2002.
69. *** - Gartner Reports, 2002-2004.

229

Universitatea SPIRU HARET


230

Universitatea SPIRU HARET


ANEXĂ
ABREVIERI ŞI NOŢIUNI UTILIZATE ÎN LUCRARE

Abs, funcţie, 3.4.4.3 Atribut, 1.2; 1.5; 4.3


Abstractizarea datelor, 2.4 Atribut cheie, 1.2
Acces secvenţial, 1.4 Atribut compus, 1.2
Acces direct, 1.4 Atribut non-cheie, 1.2
ActiveX, 3.1
Actualizare structură de date, 1.4 Backup, salvare de siguranţă, 8.5
ADO (ActiveX Database Object), 8.6.2 Bara cu instrumente VB, 3.2
AI, Artificial Intelligence, inteligenţă Bara cu instrumente Web, 5.7
artificială, 9.1 Bara de meniuri vb, 3.2
Algebră relaţională, 4.3 BASIC, 3.1
Algoritm, 2.3 Bază de date, 4.1
ALTER TABLE, 6.8 Bază de date centralizată, 4.1
AND, 3.4.4.2 Bază de date deductivă. 9.1
API (Application Programming Bază de date distribuită, 4.1; 8.1
Interface), 5.9.1 Bază de date în tehnologii avansate, 9.1
Aplicaţie informatică, 2.3; 3.3.5; 3.4.6 Bază de date multidimensională, 9.2
Aplicaţie informatică dirijată prin Bază de date multimedia, 9.3
evenimente, 2.4 Bază de date online, 8.6
Append (fişier), 3.4.5 Bază de date orientată obiect, 4.4
Access, 5.1; 5.2 Bază de date relaţională, 4.3
Arbore binar (Binary Tree), 1.4 Bază de date relaţională orientată obiect, 9.4
Arbore bicolor (Bicolor Tree), 1.4 BD, bază de date.
Arbore echilibrat, 1.4 BDR, 4.3
Arbore 2-3-4 (2-3-4 tree), 1.4 Binary (fişier), 3.4.5
Arhitectură client/server, 7.1 Boolean, 3.4.2
Arhitectură sistem bază de date, 4.1 Break Mode, 3.2
Arhitectură SGBD-OO, 4.4 Breakpoints, 3.2
Asc, funcţie, 3.4.4.3 Browser Web, 5.7
Asociere (relaţie), 1.5 Buton Design, 5.2.2
Asociere binară, 1.5 Buton New, 5.2.2
Asociere complexă, 1.5 Buton Web, 5.7
Asociere de tip „unu-la-unu”, 1.5 Byte, 3.4.2
Asociere de tip „unu-la-multi”, 1.5
Asociere de tip „multi-la-multi”, 1.5 Calcul relaţional, 4.3
Asociere parţială, 1.5 Cardinalitate, 1.5
Asociere totală, 1.5 Cardinalitate finită, 1.4
Asociere recursivă, 1.5 Cardinalitate infinită, 1.4
ASP (Active Server Pages), 5.7 CDB, Central DataBase, bază de date
centrală, 4.1 ; 8.2
231

Universitatea SPIRU HARET


CDO (Class-Defining Object), 4.4 DDBMS, Distributed DBMS, 4.1; 8.2
CGI (Common Gateway Interface), 8.6.1 DDB, Distributed Data-Base, bază de date
Cheie, 1.5; 4.3 distribuită, 4.1 ; 8.2
Cheie candidat, 4.3 DDE, 3.1
Cheie primară (Primary Key), 4.3 DDL, Data Definition Language, limbaj
Cheie externă, 4.3 de definire a datelor, 4.1
Chr, funcţie, 3.4.4.3 Declaraţie (Declaration), 2.3
Ciclare, 3.4.4.4 DELETE, 6.7
Citire (Read) date, 2.2 Depozit de date (Data Warehouse), 4.2
Câmp (field), 1.5; 2.4 Deschidere fişier VB, 3.4.5
Câmp de tip hiperlegătură (Hyperlink), 5.7 Design Mode, 3.2
Claritatea algoritmului, 2.3 Dicţionar de date (Data Dictionary), 4.1
Clasă de precedenţă, 3.4.4.2 Dim, 3.4.3
Clasă obiect, 2.4; 4.4 DML, Data Manipulating Language, limbaj
Clauză SQL, 6.5 de manipulare a datelor, 4. 1
Client, 7.1 Do…Loop, 3.4.4.4
Client/Server, 7.1 Domeniu, 4.3
Close, fişier, 3.4.5 Double, 3.4.2
Coadă (queue), 1.4 DROP TABLE, 6.8
Cod, 3.3.4 DSDL, Data Storage Description Language,
Code Editor, 3.2 limbaj de descriere a stocării datelor, 4.1
Cod-sursă, 2.3 DSS, Decision Support Systems, sisteme
Colecţie de date, 4.1 informatice de asistare a deciziei.
COM, 3.1 DTP, Desktop Publishing, tehnoredactarea
Compilare, 2.3 computerizată.
Constantă, 2.3; 3.4.3
Consultare structură de date, 1.4 e-book, Electronic Book, carte electronică.
Control, 3.1; 5.5 e-business, Electronic Business,
Cos, funcţie, 3.4.4.3 afaceri electronice.
Creare structură de date, 1.4 e-commerce, Electronic Commerce,
CREATE DATABASE, 6.8: 7.3 comerţ electronic.
CREATE TABLE, 7.3 e-conomy, New Economy, noua economie.
Crystal Report, 3.1 EDI (Electronic Data Interchange), 2.3
Cunoştinţă (Knowledge), 1.1 Editare de legături (link-editare), 2.3
Cutia cu instrumente (Toolbox), 3.2 Editor de legături, 2.3
Currency, 3.4.2 Editor de meniu, 3.2
e-learning, Electronic Learning, învăţare
Data Mining, „mineritul” datelor, 4.2 electronică, învăţământ la distanţă.
Database, fereastră Microsoft Access, 5.2.2 Entitate, 1.2; 1.5
Data Report, 3.1 e-mail, Electronic Mail, poştă electronică.
Data Type, 5.3.1 end-user, utilizator final.
Dată, 1.1 Erori de sintaxă, 2.3
Dată elementară, 1.2 Etape realizare bază de date, 4.1
Date, tip dată şi funcţie, 3.4.2 ; 3.4.4.3 Etichete inteligente (Smart Tags), 5.1
Date definite de utilizator, 1.4 Eveniment (Event), 2.4; 5.10
Date predefinite, 1.4 Exactitatea algoritmului, 2.3
DBMS, Data-Base Management System, Execuţie aplicaţie informatică, 3.3.5
sistem de gestiune a bazei de date (SGBD), Expresie, 3.4.4.1
4.1; 8.2 Extensie clasă, 2.4
232

Universitatea SPIRU HARET


Fereastra Database, 5.2.2 ID, identificator, 5.1
Fereastra de proiectare a formularului, 3.2 Identitate obiect, 2.4
Fereastra de editare a codului, 3.2 Identificator, 2.3; 3.4.1
Fereastra Relationship, 5.3.2 If…Then…Else…End If, 3.4.4.4
Field Name, 5.3.1 IMAP (Interactive Mail Access Protocol), 8.6.1
Fişier de date (Data File), 1.1 Immediate, 3.2
Fişier executabil, 3.3.1 InfoCom, sisteme informatice şi de
Fişier proiect, 3.3.1 comunicaţii, 1.1
Fişier în Visual Basic, 3.4.5 Inconsistenţa datelor, 1.2
Focalizare, 3.3.2 Index, 1.4
Form (formular), 3.3; 5.5 Informatică de gestiune, 1.1; 2.1
Form Design, 3.2 Informaţie, 1.1
Form Layout, 3.2 Input, fişier, 3.4.5
Format, funcţie, 3.4.4.3 INSERT, 6.7
Fragmentare bază de date, 8.3 Instanţă, 4.4
FIFO (First-In, First-Out), 1.4 Instanţă a clasei de obiecte, 2.4
Finitudinea algoritmului, 2.3 Instrucţiune (Statement), 2.3
For…Next, 3.4.4.4 Instrucţiune alternativă, 3.4.4.4
Forme normale ale relaţiilor, 4.3 Instrucţiune repetitivă, 3.4.4.4
Formular (Form), 3.3.2; 5.5 Instrucţiune de manipulare a datelor, 6.7
FROM, 6.2 Instrucţiune Visual Basic, 3.4.4â
FTP (File Transfer Protocol), 8.6.1 Instrucţiuni SQL de manipulare a datelor, 6.7
Funcţie (Function), 2.3 Integer, 3.4.2
Funcţie de editare, 3.4.4.3 Interclasare date, 2.2
Funcţie financiară, 3.4.4.3 Interfaţă aplicaţie, 3.3.2
Funcţie în SQL, 6.4 Interfaţă (listă de metode), 2.4
Funcţie pentru şir de caractere, 3.4.4.3 Interfaţă publică, 2.4
Funcţie Visual Basic, 3.4.4.3 Interfaţă privată, 2.4
Funcţii generale SGBD, 4.1 Interogare (Query), 5.4
Fuzionare structură de date, 1.4 Interogare de acţiune, 5.4
Interogare de grup, 5.4
Generaţie de baze de date, 4.2 Interogare de selecţie, 5.4
Gestiune economică, 2.1 INTERSECT, 6.3.5
Gestiune tranzacţii, 7.3; 8.4 ISDN, Integrated Services Digital Network,
Get (fişiere în VB), 3.4.5 reţea digitală de servicii integrate, 1.1
Global, 3.4.3 IT&C, Information Technology and
Graf (graph), 1.4 Communications, tehnologiile informaţiei şi
Graf complet, 1.4 ale comunicaţiilor, 1.1
Graf orientat, 1.4 Înregistrare (Record), 1.5; 4.1
Group By (clauză SQL), 6.5 Încapsulare (Embedding), 2.4; 4.4
Groupware, 8.6.1
Having (clauză SQL), 6.5 Joncţiune SQL, 6.6
HTML, HyperText Markup Language,
limbaj de marcare a hipertextelor, 5.7 KBE, Knowledge-Based Economy,
HTTP, HyperText Transfer Protocol, economie bazată pe cunoştinţe, 1.1
protocol de transfer al hipertextelor, 8.6.1 KBS, Knowledge-Based Society, societate
Hyperlink, 5.7 bazată pe cunoştinţe, 1.1
233

Universitatea SPIRU HARET


KBS, Knowledge-Based Systems, sisteme Model de date orientat obiect, 1.5
bazate pe cunoştinţe, 1.1 Model de date relaţional, 1.5; 4.2
KDD, Knowledge Discovery in Database, 4.2 Modelarea datelor, 1.5
Modul, 3.3.1; 5.8
LAN, Local Area Network, reţea locală Module, 5.8
de calculatoare şi de comunicaţii, 8.2 Moştenire (Inheritance), 2.4; 4.4
LDB, Local DataBase, bază de date locală, 8.2 Moştenire dinamică, 2.4
Left, funcţie, 3.4.4.3 Moştenire multiplă, 2.4
Len, funcţie, 3.4.4.3 Moştenire simplă, 2.4
Let, 3.4.4.1 Moştenire statică, 2.4
LIKE, 6.3.3 Motor de căutare (Search Engine), 8.6.1
Limbaj de definire a datelor, 4.1 Movilă (Heap), 1.4
Limbaj de descriere a stocării datelor, 4.1 MS, Microsoft
Limbaj de macroasamblare, 2.3 MsgBox (casetă de mesaje), 5.8
Limbaj de manipulare a datelor, 4.1 Mutare control, 3.3.2
Limbaj de nivel jos, 2.3
Limbaj de nivel înalt, 2.3 Nivel fizic bază de date, 4.1
Limbaj de programare, 2.3 Nivel logic bază de date, 4.1
Limbaj neprocedural, 2.3 Nivel virtual bază de date, 4.1
Limbaj procedural, 2.3 NOT, 3.4.4.2
Limbaj pseudocod, 2.3 Notaţia ungară, 3.4.1
Limbaj structurat de interogare (SQL), 6.1 Now, funcţie, 3.4.4.3
Line Input (fişier), 3.4.5 NULL, valoare, 4.3
LIST, 2.3
Listă de metode (interfaţă), 2.4 Obiect, 2.4; 4.4
Listă înlănţuită (Chain List), 1.4 OBP, 2.3; 2.4
LIFO (Last-In, First-Out), 1.4 Obiective DDB, 8.2
Locals, 3.2 Obiective SGBD, 4.1
Long, 3.4.2 ODBC, 3.1; 5.9.1
Object, 3.4.2
Macro, 5.8 Object Browser, 3.2
Macroinstrucţiune, 2.3; 5.8 OLAP, On Line Analytical Processing,
MASM, 2.3 prelucrare analitică online, 4.2
MBD, 5.1 OLE, Object Linking and Embedding,
MDI (Multiple Document Interface), 3.3.2 încapsularea şi legarea obiectelor, 3.1
Mediu integrat de dezvoltare (IDE), 2.3; 3.2 OLTP, On Line Transactional Processing,
Meniu contextual VB, 3.2 prelucrare online a tranzacţiilor, 4.2
Menu Editor, 3.2 OO, Object-Oriented, orientată pe obiecte, 4.4
Mesagerie electronică, 8.6.1 OODB, 4.4
Metodă, 4.4 OODBMS, Object-Oriented DBMS, SGBD
Metodă de comportament obiect, 2.4 orientat pe obiecte, 4.2
Microsoft Jet Database Engine, 3.1 OOP, Object-Oriented Programming,
Microsoft Visual Basic 6.0, 3.2 programare orientată pe obiecte, 2.3 ; 2.4 ; 4.2
Microsoft Visual Studio 6.0, 3.2 Open (fişier), 3.4.5
Mid, funcţie, 3.4.4.3 Operator binar, 3.4.4.2
MIS (Management Information Systems), 8.2 Operator unar, 3.4.4.2
Mod, 3.4.4.2 Operatori aritmetici, 6.3.1
Model de date, 1.5 Operatori caracter, 6.3.3
Model de date ierarhic, 1.5; 4.2 Operatori de comparaţie, 6.3.2

234

Universitatea SPIRU HARET


Operatori logici, 6.3.4 Ran, 3.4.4.1
Operatori pentru mulţimi, 6.3.5 Random (fişier),
Operatorul IN, 6.3.6 Raport, 5.6
Operatorul BETWEEN, 6.3.6 RDB (Relational DataBase), 4.2; 4.3
Operatori VB, 3.4.4.2 Reguli Codd, 4.3
Operaţii asupra unei baze de date, 4.1 Reguli de integritate, 4.3
OR, 3.4.4.2 Redimensionare control, 3.3.2
Oracle, 7.4 Reguli de scriere VB, 3.4.1
Order By (clauză SQL), 6.5 Relationship, 5.3.2
Organizarea datelor, 1.2 Relaţie, 1.3; 1.5; 4.3
Output (fişier), 3.4.5 Relaţie binară, 1.3
Relaţie de echivalenţă, 1.3
Pagină de acces la date Relaţie de ordine, 1.3
(Data Access Pages), 5.7 Relaţie între tabele, 5.3.2
Pagină Web, 5.7 Replicare, 7.2
Pagină Web dinamică, 5.7 RI, restricţie de integritate.
Partajare date, 4.1 Right, funcţie, 3.4.4.3
Persistenţa, 2.4; 4.4 Rnd, funcţie, 3.4.4.3
PL/SQL, 7.5 Run Mode, 3.2
Polimorfism, 2.4
POP (Post Office Protocol), 8.6.1 Schema logică, 2.3
Populare bază de date, 4.1 Scriere (Write) date, 2.2
Precizare proprietăţi, 3.3.3 Scriere cod, 3.3.4
Prelucrare automată a datelor, 2.2 SDI (Single Document Interface), 3.3.2
Problema de rezolvat, 2.3 Securitate baze de date, 8.5
Procedură (Procedure), 2.3 SELECT, 6.2
Procedură Sub, 5.9.3 Select Query, 5.4
Program executabil, 2.3 Server, 7.1
Program-obiect, 2.3 Server de baze de date, 7.1
Program pe calculator, 2.3 Server proxy, 8.6.1
Program-sursă, 2.3 SGBD-OO, 4.4
Programare dirijată de evenimente, 3.1 SGBD, sistem de gestiune a bazei de date, 4.1
Programare orientată pe obiecte, 2.4 SGML (Standard Generalized Markup
Programare structurată, 3.1 Language), 8.6.1
Proiectare aplicaţie, 3.3 Sistem bazat pe cunoştinţe, 1.1
Project Explorer, 3.2 Sistem de gestiune a bazelor de date,
Properties, 3.2 SGBD, 4.1
Proprietate obiect, 3.3.3 SI, sistem informatic, 1.1; 2.2
Protecţie bază de date, 8.5 Sin, funcţie, 3.4.4.3
Prolog, 2.3 Sistem bază de date, 4.1
Punct de întrerupere, 3.2 Sistem informaţional, 1.1
Put (fişier), 3.4.5 Sistem relaţional, 4.2
SI – SC, societatea informaţională –
QBE, Query by Example, limbajul societatea cunoaşterii, 1.1.
de interogare prin exemple, 5.1; 5.4 SIG, sistem informatic de gestiune.
Query, 5.4 SMTP (Simple Mail Transfer Protocol), 8.6.1
SOAP (Simple Object Access Protocol), 8.6.1
RAD (Rapid Application Development), 3.1 Societate informaţională (Information
Raft de date (Data Marts), 4.2 Society), 1.1
235

Universitatea SPIRU HARET


Societate informatică, 1.1 Timer, funcţie, 3.4.4.3
Societate bazată pe cunoştinţe Tip abstract de dată, 2.4
(Knowledge-Based Society), 1.1 Tip de dată, 3.4.2
Specificarea metodei (semnătura), 2.4 Tip de legătură, 1.5
SQL, (Structured Query Language) Tip obiect, 2.4
limbaj structurat de interogare, 6.1 Tip structură de date, 1.4
SQL *Plus, 7.6 Toolbox, 3.2
SQL Server, 7.2 Tools VB, 3.2
Sqr, funcţie, 3.4.4.3 TPS, Transition Processing Systems,
Stare obiect, 2.4 sisteme informatice de prelucrare
STARTING WITH (clauză SQL), 6.5 a tranzacţiilor, 8.4
Static, 3.4.3 Transact SQL, 7.3
Stivă (Stack), 1.4 Tranzacţie, 8.4
Str, funcţie, 3.4.4.3 Tuplu, 4.3
String, 3.4.2
Structura de control alternativă, 2.3 UML, Unified Modeling Language,
Structura de control repetitivă, 2.3 limbaj unificat de modelare
Structura de control secvenţială, 2.3 Universalitatea algoritmului, 2.3
Structură de date, 1.4; 2.3 UNDERSCORE, 6.3.3
Structură de date arborescentă, 1.4 UNION, 6.3.5
Structură de date dinamică, 1.4 UPDATE, 6.7
Structură de date fizică, 1.4
Structură de date liniară, 1.4 Valoare, 1.2
Structură de date logică, 1.4 Variabilă, 2.3; 3.4.
Structură de date punctuală, 1.4 Variant, 3.4.2
Structură de date recursivă, 1.4 VBA, 5.1; 5.9.2
Structură de date reţea, 1.4 VBE (Visual Basic Editor), 5.9.3
Structură de date relaţională, 1.4 VBScript, 5.9.1
Structură de date statică, 1.4 Ventilare structură de date, 1.4
Subprogram, 2.3 Videoconferinţă, 8.6.1
SUM, 6.4.1 Visual Basic, 3.1
Visual Basic.NET, 8.7
Şablon HTML, 6.7
WAN, Wide Area Network, reţea extinsă
Tabel (Table), 1.4; 5.3 (pe arie largă) de calculatoare şi de
Tabel de dispersie (Hash Table), 1.4 comunicaţii, 8.1
Tablet PC, 5.1 Watch, 3.2
Table Wizard, 5.3.1 Where (clauză SQL), 6.2
Tablou ordonat, 1.4 WSDL (Web Service Description
TASM, 2.3 Language), 8.6.1
Tehnica entitate-asociere, 1.5 www, World Wide Web, pagini Web.
Time, funcţie, 3.4.4.3 XML, Extensible Markup Language,
limbaj de marcare extins, 5.1

236

Universitatea SPIRU HARET

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