an2 informatica de gestiune limbaje

236
ZENOVIC GHERASIM PROGRAMARE ŞI BAZE DE DATE

Upload: florescu

Post on 12-Aug-2015

135 views

Category:

Documents


17 download

TRANSCRIPT

Page 1: An2 Informatica de Gestiune Limbaje

ZENOVIC GHERASIM

PROGRAMARE ŞI BAZE DE DATE

Page 2: An2 Informatica de Gestiune Limbaje

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: [email protected]

Page 3: An2 Informatica de Gestiune Limbaje

UNIVERSITATEA SPIRU HARET

ZENOVIC GHERASIM

PROGRAMARE ŞI BAZE DE DATE

EDITURA FUNDAŢIEI ROMÂNIA DE MÂINE Bucureşti, 2005

Page 4: An2 Informatica de Gestiune Limbaje
Page 5: An2 Informatica de Gestiune Limbaje

5

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

Page 6: An2 Informatica de Gestiune Limbaje

6

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

Page 7: An2 Informatica de Gestiune Limbaje

7

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

Page 8: An2 Informatica de Gestiune Limbaje

8

Page 9: An2 Informatica de Gestiune Limbaje

9

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,

Page 10: An2 Informatica de Gestiune Limbaje

10

Page 11: An2 Informatica de Gestiune Limbaje

11

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.

Page 12: An2 Informatica de Gestiune Limbaje

12

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ţă.

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

SOCIETATEA CUNOAŞTERII

Page 13: An2 Informatica de Gestiune Limbaje

13

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,

Page 14: An2 Informatica de Gestiune Limbaje

14

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.

Page 15: An2 Informatica de Gestiune Limbaje

15

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.

Page 16: An2 Informatica de Gestiune Limbaje

16

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;

Page 17: An2 Informatica de Gestiune Limbaje

17

– 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.

Page 18: An2 Informatica de Gestiune Limbaje

18

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.

Page 19: An2 Informatica de Gestiune Limbaje

19

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);

Page 20: An2 Informatica de Gestiune Limbaje

20

• 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.

Page 21: An2 Informatica de Gestiune Limbaje

21

Tabelul 1.1. Definirea şi caracteristicile unor structuri de date

Denumire Definire Avantaje Dezavantaje Tablou (table)

Inserare şi acces rapid, când indexul

este cunoscut. Tablou ordonat

În programare, listă de elemente, implementată sub forma unui vector de

înregistrări sau a unei liste înlănţuite. În bazele de date relaţionale, structură cu linii

şi coloane.

Căutare mai rapidă în comparaţie cu tablourile neordonate.

Căutare şi ştergere greoaie,

dimensiune fixată

Coadă (queue) Structură realizată după metoda „primul sosit, primul plecat”, FIFO (First-In, First-Out)

Accesul la date se execută în ordinea introducerii acestor

date. Stivă (stack)

Structură realizată după metoda „ultimul sosit, primul plecat”, LIFO (Last-In, First-Out)

Accesul la date se execută în ordinea inversă introducerii

acestor date.

Acces greoi la celelalte elemente.

Listă înlănţuită (chain list)

Structură de date sub formă de listă în care fiecare

element al listei asigură o adresă pentru următorul

element consecutiv al listei.

Inserare şi ştergere rapide

Căutare greoaie.

Arbore binar (binary tree)

Structură de date sub forma unui arbore ordonat

de gradul doi.

Algoritmul de ştergere este complicat.

Arbore bicolor (bicolor tree)

Arbori binari la care fiecare nod dispune de caracteristica culoare – roşie sau neagră.

Arbore 2-3-4 (2-3-4 tree)

Arbori multicăi în care fiecare nod poate prezenta cel mult

patru succesori (fii).

Căutare, inserare şi ştergere rapide

(arbore echilibrat).

Structuri de date complexe.

Tabel de dispersie (hash table)

Structură de date funda-mentată pe transformarea unui

domeniu de valori ale unei anumite chei într-un domeniu

de indici dintr-un tablou.

Structura de date cea mai rapidă

(inserare rapidă şi acces rapid pe

baza unei chei).

Ştergere greoaie. Acces lent atunci când nu se cunoaşte

cheia. Movilă (heap) Tip de arbore binar complet

implementat printr-un tablou. Inserare, ştergere şi acces rapide la elementul maxim

sau minim.

Acces greoi la celelalte elemente.

Graf (graph) Structură formată din noduri şi arce ca legături dintre

noduri.

Modelează situaţii din universul real.

Anumiţi algo-ritmi sunt greoi şi complicaţi.

Page 22: An2 Informatica de Gestiune Limbaje

22

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

Page 23: An2 Informatica de Gestiune Limbaje

23

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).

Page 24: An2 Informatica de Gestiune Limbaje

24

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).

Page 25: An2 Informatica de Gestiune Limbaje

25

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.

Page 26: An2 Informatica de Gestiune Limbaje

26

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).

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

CITIRE DATE DE INTRARE

PRELUCRĂRI SCRIERE REZULTATE

Page 27: An2 Informatica de Gestiune Limbaje

27

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

Page 28: An2 Informatica de Gestiune Limbaje

28

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.).

Fig.2.2. Compunerea unui program pe calculator

PROGRAM

DATE (STRUCTURI DE

DATE)

ALGORITMI

LIMBAJ DE PROGRAMARE

Page 29: An2 Informatica de Gestiune Limbaje

29

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.

Page 30: An2 Informatica de Gestiune Limbaje

30

Fig.2.3. Tipuri de blocuri din compunerea schemelor logice

BLOC INTRODUCERE/EXTRAGERE

DATE (INTRARE/IEŞIRE)

BLOC DESCHIDERE/

ÎNCHIDERE FIŞIERE

BLOC ATRIBUIRE BLOC DECIZIE (SALT CONDIŢIONAT)

BLOC PROCEDURĂ BLOC ÎNCEPUT /SFÂRŞIT

DE PROGRAM (TERMINATOR)

CONECTORI PE PAGINĂ CONECTORI DE PAGINĂ

BANDĂ MAGNETICĂ DOCUMENT IMPRIMAT

LINII DE LEGĂTURĂ ÎNTRE BLOCURI

Page 31: An2 Informatica de Gestiune Limbaje

31

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

Page 32: An2 Informatica de Gestiune Limbaje

32

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ă

Page 33: An2 Informatica de Gestiune Limbaje

33

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.

SECVENŢA 1

SECVENŢA 2

. . . SECVENŢA n

i=1 i=2 i=n

Page 34: An2 Informatica de Gestiune Limbaje

34

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

Page 35: An2 Informatica de Gestiune Limbaje

35

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

Fig.2.6. Structura de date Client

o o o

Subprogram 1

Subprogram 2

o o o

Subprogram m

PROGRAM 1

Subprogram 1

Subprogram 2

o o o

Subprogram n

PROGRAM 2 PROGRAM l

Subprogram z

o o o

Subprogram 1

Subprogram 2

APLICAŢIE INFORMATICĂ

Client

Nume Prenume Adresa Telefon Banca

Localitatea Strada Nr Bloc Scara Etaj Apart

Page 36: An2 Informatica de Gestiune Limbaje

36

Page 37: An2 Informatica de Gestiune Limbaje

37

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

Page 38: An2 Informatica de Gestiune Limbaje

38

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).

Page 39: An2 Informatica de Gestiune Limbaje

39

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.

Page 40: An2 Informatica de Gestiune Limbaje

40

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

HARDWARE

LIMBAJ COD-MAŞINĂ (0 GL)

LIMBAJ DE ASAMBLARE (1 GL)

LIMBAJE DE MACROASAMBLARE (2 GL)

LIMBAJE DE NIVEL ÎNALT (3 GL)

LIMBAJE DE NIVEL FOARTE ÎNALT (4 GL)

Page 41: An2 Informatica de Gestiune Limbaje

41

î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.

Page 42: An2 Informatica de Gestiune Limbaje

42

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.

Page 43: An2 Informatica de Gestiune Limbaje

43

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ă.

Page 44: An2 Informatica de Gestiune Limbaje

44

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 lansării

Standard Edition

Professional Edition

Enterprise Edition

Control Creation Edition

Instrumente BackOffice

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

Page 45: An2 Informatica de Gestiune Limbaje

45

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

Page 46: An2 Informatica de Gestiune Limbaje

46

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

Page 47: An2 Informatica de Gestiune Limbaje

47

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.

Page 48: An2 Informatica de Gestiune Limbaje

48

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.

Page 49: An2 Informatica de Gestiune Limbaje

49

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 ).

Page 50: An2 Informatica de Gestiune Limbaje

50

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.

Page 51: An2 Informatica de Gestiune Limbaje

51

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.

Page 52: An2 Informatica de Gestiune Limbaje

52

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)

Page 53: An2 Informatica de Gestiune Limbaje

53

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)

Page 54: An2 Informatica de Gestiune Limbaje

54

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;

Page 55: An2 Informatica de Gestiune Limbaje

55

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).

Page 56: An2 Informatica de Gestiune Limbaje

56

1 Fig.3.10. Crearea formularului pentru

aplicaţia informatică cu factura de materiale

Fig.3.11. Fereastra Properties

Page 57: An2 Informatica de Gestiune Limbaje

57

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).

Page 58: An2 Informatica de Gestiune Limbaje

58

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.

Page 59: An2 Informatica de Gestiune Limbaje

59

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).

Page 60: An2 Informatica de Gestiune Limbaje

60

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).

Page 61: An2 Informatica de Gestiune Limbaje

61

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.

Page 62: An2 Informatica de Gestiune Limbaje

62

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. crt.

Numar factura

Data factura

Cod material

Denumire material Cantitate Pret

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.

Page 63: An2 Informatica de Gestiune Limbaje

63

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).

Page 64: An2 Informatica de Gestiune Limbaje

64

Î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 ocupată

Interval de valori (domeniu)

Octet Byte - 1 0…255

Întreg Integer % 2 -32768…+32767 Întreg lung Long

(integer) & 4 2.147.483.648…+2.147.483.647

Logic Boolean - 2 True, False Real simplă

precizie Single

(floating) !

4 -3,40 e38…+3,40 e38

Real dublă precizie

Double (floating)

#

8 -1,8 e308…+1,8 e308

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

caractere String $ 1 octet/

caracter Şir de caractere alfanumerice

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

Page 65: An2 Informatica de Gestiune Limbaje

65

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

Page 66: An2 Informatica de Gestiune Limbaje

66

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.

Page 67: An2 Informatica de Gestiune Limbaje

67

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.).

Page 68: An2 Informatica de Gestiune Limbaje

68

Tabelul 3.5. Clasele de precedenţă ale operatorilor în Visual Basic

Clasa Operator Operaţia 1. And, Or, Not Logică 2. Mod Modulo

<,>,<=,>=,=,<> Comparare 3. + -

Adunare Scădere

^ Exponenţiere (ridicare la putere) 4. \ Împărţire întreagă * /

Înmulţire Împărţire

5.

( ) [ ] 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”)

Page 69: An2 Informatica de Gestiune Limbaje

69

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.

Page 70: An2 Informatica de Gestiune Limbaje

70

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

Page 71: An2 Informatica de Gestiune Limbaje

71

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,

Page 72: An2 Informatica de Gestiune Limbaje

72

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

Page 73: An2 Informatica de Gestiune Limbaje

73

î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

Page 74: An2 Informatica de Gestiune Limbaje

74

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

Page 75: An2 Informatica de Gestiune Limbaje

75

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

Page 76: An2 Informatica de Gestiune Limbaje

76

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

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

Page 77: An2 Informatica de Gestiune Limbaje

77

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.

Page 78: An2 Informatica de Gestiune Limbaje

78

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

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

Vfftva = 0; Vfctva = 0;

Vmftva= Cant * Pu; Vmctva=Vmftva + TVA * Vmftva;

Vfftva=Vfftva + Vmftva;

Page 79: An2 Informatica de Gestiune Limbaje

79

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

Page 80: An2 Informatica de Gestiune Limbaje

80

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.

Fig.4.1. Definirea conceptului de bază de date

UNIVERS

REAL

DOMENIUL CONCEPTUAL

COLECŢII DE DATE

DOMENIUL SEMANTIC

**********

CARACTE- RISTICI

BAZA DE DATE

SGBD

Percepţie Reprezentare

Percepţie, Reprezentare

Page 81: An2 Informatica de Gestiune Limbaje

81

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

Page 82: An2 Informatica de Gestiune Limbaje

82

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.

Page 83: An2 Informatica de Gestiune Limbaje

83

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.

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

Baza de date

SGBD

PROGRAM DE APLICAŢIE

SCHEMA BD

UTILITARE

UTILIZATORI

ADMINISTRATOR

PROGRAMATOR DE APLICAŢIE

Page 84: An2 Informatica de Gestiune Limbaje

84

î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).

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.

SCHEMA EXTERNĂ 1

SCHEMA EXTERNĂ 2

SCHEMA EXTERNĂ n

SCHEMA CONCEPTUALĂ

SCHEMA FIZICĂ

NIVEL LOGIC NIVEL VIRTUAL NIVEL FIZIC

Page 85: An2 Informatica de Gestiune Limbaje

85

Î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.

Page 86: An2 Informatica de Gestiune Limbaje

86

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.

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

Format câmp CONT LA BANCĂ

ROXXAAAAXXXXXXXXXXXXXXXX

Exemplu RO96RXBR0000000431267982

X – cifră, A - literă

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

Page 87: An2 Informatica de Gestiune Limbaje

87

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

Page 88: An2 Informatica de Gestiune Limbaje

88

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).

Page 89: An2 Informatica de Gestiune Limbaje

89

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.

regulii Conţinutul regulii Comentarii

R0 SGBD gestionează datele la nivel de relaţie (exclusiv pe baza caracteristicilor relaţionale).

Conceptul de bază este relaţia.

R1 Toate datele din baza de date relaţională se reprezintă explicit sub forma unor valori într-un tabel (regula reprezentării logice a datelor).

Catalogul conţine denumiri de tabele, coloane, domenii, restricţii de integritate etc.

R2 Datele individuale dintr-un tabel sunt accesate prin specificarea numelui tabelului, a valorii cheii primare şi a coloanei (regula garantării accesului la date)

Datele sunt accesibile prin numele tabelului, a liniei şi a coloanei.

R3 Valorile NULL (inexistenţa datelor) sunt tipuri de date acceptate (regula referitoare la valorile NULL).

Valoarea NULL semnifică „nimic”. A nu se confunda cu zero (0).

R4 Baza de date relaţională reprezintă descrierea bazei de date în format logic simplificat sub formă de tabele (regula metadatelor).

Metadatele sunt date despre date. Regula nu face diferenţieri între tratarea datelor şi a metadatelor.

R5 Modelul relaţional permite imple-mentarea mai multor limbaje (regula de permisiune a limbajelor multiple).

SQL este limbajul de bază pentru realizarea interogărilor asupra bazei de date.

R6 Dacă vederea curentă reprezintă un tabel, toate vederile (view-urile) sunt actualizabile (regula actualizării vederilor).

Toate tabelele virtuale ce teoretic sunt posibil de actualizat, trebuie să fie în mod practic actualizate.

R7 În operaţiile de schimbare a conţi-nutului bazelor de date, se lucrează la un moment dat pe toată relaţia (regula referitoare la actualizări, inserări şi ştergeri în baza de date).

Modelul relaţional abordează relaţiile de bază şi pe cele derivate ca pe un singur operand destinat operaţiilor de actualizare (update), inserare (insert) şi ştergere (delete) efectuate asupra datelor.

R8 Structura logică a bazei de date se prezintă complet separată de structura fizică a bazei de date (regula referitoare la independenţa fizică a datelor).

Programele de aplicaţie nu trebuie să fie influenţate de schimbările survenite în modul de reprezentare a datelor sau în metodele de acces.

Page 90: An2 Informatica de Gestiune Limbaje

90

R9 Atunci când bazei de date i se aduc modificări neconforme, datele se conservă (regula referitoare la independenţa logică a datelor).

Programele de aplicaţie nu trebuie să fie influenţate de schimbările efectuate asupra relaţiilor bazelor de date.

R10 Restricţiile de integritate sunt definte în limbajul folosit de sistem (regula referitoare la restricţiile de integritate).

Restricţiile de integritate sunt create în limbajul SQL şi se stochează în dicţionarul bazei de date şi nu în aplicaţiile individuale.

R11 Accesarea datelor pe server de către client se produce în mod continuu (regula referitoare la distribuirea geografică a datelor).

Este presupusă producerea unui proces de copiere a datelor dintr-o bază de date localizată la distanţă.

R12 Regulile şi restricţiile de integritate nu pot fi evitate de nici un limbaj de acces la date (regula referitoare la prelucrarea datelor la nivel de bază).

Nu trebuie folosit un limbaj de nivel scăzut orientat pe prelucrarea pe tupluri.

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”>.

Page 91: An2 Informatica de Gestiune Limbaje

91

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.

Fig.4.6. Diagrama operaţiei reuniune

Rel1

OR

Rel2

Rel3

Page 92: An2 Informatica de Gestiune Limbaje

92

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

Page 93: An2 Informatica de Gestiune Limbaje

93

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

Page 94: An2 Informatica de Gestiune Limbaje

94

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

Page 95: An2 Informatica de Gestiune Limbaje

95

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;

Page 96: An2 Informatica de Gestiune Limbaje

96

• 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

Page 97: An2 Informatica de Gestiune Limbaje

97

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,

Page 98: An2 Informatica de Gestiune Limbaje

98

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.

Page 99: An2 Informatica de Gestiune Limbaje

99

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.

Page 100: An2 Informatica de Gestiune Limbaje

100

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;

Page 101: An2 Informatica de Gestiune Limbaje

101

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;

Page 102: An2 Informatica de Gestiune Limbaje

102

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

Page 103: An2 Informatica de Gestiune Limbaje

103

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

Page 104: An2 Informatica de Gestiune Limbaje

104

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.

Page 105: An2 Informatica de Gestiune Limbaje

105

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.

Page 106: An2 Informatica de Gestiune Limbaje

106

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.

Page 107: An2 Informatica de Gestiune Limbaje

107

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.

Page 108: An2 Informatica de Gestiune Limbaje

108

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

Page 109: An2 Informatica de Gestiune Limbaje

109

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.

Page 110: An2 Informatica de Gestiune Limbaje

110

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).

Page 111: An2 Informatica de Gestiune Limbaje

111

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.

Page 112: An2 Informatica de Gestiune Limbaje

112

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;

Page 113: An2 Informatica de Gestiune Limbaje

113

• 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).

Page 114: An2 Informatica de Gestiune Limbaje

114

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ă

Page 115: An2 Informatica de Gestiune Limbaje

115

î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

Page 116: An2 Informatica de Gestiune Limbaje

116

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

Page 117: An2 Informatica de Gestiune Limbaje

117

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.

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ă

Cod_f Den_f Adresa_f Telefon_f Banca_f Cont_f Pagina Web

Cod_Mat Den_mat Cod_f Cod_dep Nr_fact

Livrează

1:1 1:m

Page 118: An2 Informatica de Gestiune Limbaje

118

î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).

Page 119: An2 Informatica de Gestiune Limbaje

119

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

Page 120: An2 Informatica de Gestiune Limbaje

120

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.

Page 121: An2 Informatica de Gestiune Limbaje

121

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

generic Like **Ciment**

Dacă Ciment apare în cadrul câmpului

Between În cadrul gamei Between 1 And 8

De la 1 la 8 inclusiv

<>, 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.

Page 122: An2 Informatica de Gestiune Limbaje

122

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

Page 123: An2 Informatica de Gestiune Limbaje

123

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

Page 124: An2 Informatica de Gestiune Limbaje

124

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

Page 125: An2 Informatica de Gestiune Limbaje

125

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

Page 126: An2 Informatica de Gestiune Limbaje

126

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

Page 127: An2 Informatica de Gestiune Limbaje

127

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).

Page 128: An2 Informatica de Gestiune Limbaje

128

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

Page 129: An2 Informatica de Gestiune Limbaje

129

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.

Page 130: An2 Informatica de Gestiune Limbaje

130

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

Page 131: An2 Informatica de Gestiune Limbaje

131

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

Page 132: An2 Informatica de Gestiune Limbaje

132

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

Page 133: An2 Informatica de Gestiune Limbaje

133

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

Page 134: An2 Informatica de Gestiune Limbaje

134

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

Page 135: An2 Informatica de Gestiune Limbaje

135

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.

Page 136: An2 Informatica de Gestiune Limbaje

136

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

Page 137: An2 Informatica de Gestiune Limbaje

137

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;

Page 138: An2 Informatica de Gestiune Limbaje

138

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.

Page 139: An2 Informatica de Gestiune Limbaje

139

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.

Page 140: An2 Informatica de Gestiune Limbaje

140

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.

Page 141: An2 Informatica de Gestiune Limbaje

141

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

Page 142: An2 Informatica de Gestiune Limbaje

142

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).

Page 143: An2 Informatica de Gestiune Limbaje

143

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.

Page 144: An2 Informatica de Gestiune Limbaje

144

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.

Page 145: An2 Informatica de Gestiune Limbaje

145

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

Page 146: An2 Informatica de Gestiune Limbaje

146

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.

Page 147: An2 Informatica de Gestiune Limbaje

147

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

Page 148: An2 Informatica de Gestiune Limbaje

148

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.

Page 149: An2 Informatica de Gestiune Limbaje

149

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).

Page 150: An2 Informatica de Gestiune Limbaje

150

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.

Page 151: An2 Informatica de Gestiune Limbaje

151

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:

Page 152: An2 Informatica de Gestiune Limbaje

152

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.

Page 153: An2 Informatica de Gestiune Limbaje

153

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.

Page 154: An2 Informatica de Gestiune Limbaje

154

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.

Page 155: An2 Informatica de Gestiune Limbaje

155

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.

Page 156: An2 Informatica de Gestiune Limbaje

156

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.

Page 157: An2 Informatica de Gestiune Limbaje

157

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

Page 158: An2 Informatica de Gestiune Limbaje

158

î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.

Page 159: An2 Informatica de Gestiune Limbaje

159

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.

Page 160: An2 Informatica de Gestiune Limbaje

160

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.

Page 161: An2 Informatica de Gestiune Limbaje

161

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(+).

Page 162: An2 Informatica de Gestiune Limbaje

162

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)

Page 163: An2 Informatica de Gestiune Limbaje

163

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.

Page 164: An2 Informatica de Gestiune Limbaje

164

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

Page 165: An2 Informatica de Gestiune Limbaje

165

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.

Page 166: An2 Informatica de Gestiune Limbaje

166

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.

Page 167: An2 Informatica de Gestiune Limbaje

167

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)

Page 168: An2 Informatica de Gestiune Limbaje

168

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.

Page 169: An2 Informatica de Gestiune Limbaje

169

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;

Page 170: An2 Informatica de Gestiune Limbaje

170

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:

Page 171: An2 Informatica de Gestiune Limbaje

171

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)

Page 172: An2 Informatica de Gestiune Limbaje

172

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)

Page 173: An2 Informatica de Gestiune Limbaje

173

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).

Page 174: An2 Informatica de Gestiune Limbaje

174

Î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.

Page 175: An2 Informatica de Gestiune Limbaje

175

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.

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.

• Stocare bază de date • Conectare şi acces la baza de date • Gestionare logică aplicaţie • Asigurare securitate bază de date

• Gestionare cod aplicaţie client • Interfaţă interactivă cu utilizatorul final

Page 176: An2 Informatica de Gestiune Limbaje

176

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.

Page 177: An2 Informatica de Gestiune Limbaje

177

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]:

Page 178: An2 Informatica de Gestiune Limbaje

178

• 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.

Page 179: An2 Informatica de Gestiune Limbaje

179

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.

Page 180: An2 Informatica de Gestiune Limbaje

180

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}]}

Page 181: An2 Informatica de Gestiune Limbaje

181

î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.

Page 182: An2 Informatica de Gestiune Limbaje

182

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.

Page 183: An2 Informatica de Gestiune Limbaje

183

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.

Page 184: An2 Informatica de Gestiune Limbaje

184

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.

Page 185: An2 Informatica de Gestiune Limbaje

185

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ă.

Page 186: An2 Informatica de Gestiune Limbaje

186

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;

Page 187: An2 Informatica de Gestiune Limbaje

187

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

Page 188: An2 Informatica de Gestiune Limbaje

188

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.

Page 189: An2 Informatica de Gestiune Limbaje

189

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;

Page 190: An2 Informatica de Gestiune Limbaje

190

• 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).

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).

SQL * Plus

PL/SQL

Java

DEVELOPER

DESIGNER

EXPRESS

Administrator Tools

Browsere Editoare

Net Products

Page 191: An2 Informatica de Gestiune Limbaje

191

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.

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

BLOC PL/SQL

MOTOR PL/SQL

PRELUCRARE INSTRUCŢIUNI

PSE

SERVER ORACLE

EXECUTOR INSTRUCŢIUNI

SQL

Page 192: An2 Informatica de Gestiune Limbaje

192

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; …

Page 193: An2 Informatica de Gestiune Limbaje

193

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

Page 194: An2 Informatica de Gestiune Limbaje

194

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]].

Page 195: An2 Informatica de Gestiune Limbaje

195

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. L n 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

/

Page 196: An2 Informatica de Gestiune Limbaje

196

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.

Page 197: An2 Informatica de Gestiune Limbaje

197

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

Page 198: An2 Informatica de Gestiune Limbaje

198

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).

Fig.8.1. Sistem de fişiere

Fig.8.2. Gestiunea unei baze de date

SISTEM DE GESTIUNE

A BAZEI DE DATE

(SGBD)

BAZA DE DATE

PROGRAM DE APLICAŢIE 1

PROGRAM DE APLICAŢIE 2

PROGRAM DE APLICAŢIE 3

FIŞIER 1

FIŞIER 2

FIŞIER 3

PROGRAM 1

DESCRIERE DATE 1

PROGRAM 2

DESCRIERE DATE 2

PROGRAM 3

DESCRIERE DATE 3

Page 199: An2 Informatica de Gestiune Limbaje

199

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.

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ă,

REŢEA DE CALCULATOARE

TEHNOLOGIE A BAZEI DE DATE

SISTEM BAZE DE DATE DISTRIBUITE

(DDBS)

distribuire integrare

integrare

Page 200: An2 Informatica de Gestiune Limbaje

200

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).

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ă.

SITE 3

SITE 2

SITE 4

SITE 5 SITE 6

SITE 1

REŢEA DE COMUNICAŢII

Page 201: An2 Informatica de Gestiune Limbaje

201

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).

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

SITE 3

SITE 2

SITE 4

SITE 5 SITE 6

SITE 1

REŢEA DE COMUNICAŢII

Page 202: An2 Informatica de Gestiune Limbaje

202

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;

GESTIONAREA DIRECTOARELOR

FIABILITATE

PROIECTAREA DISTRIBUIRII

CONTROLUL CONCURENŢEI

GESTIUNEA BLOCĂRILOR

PRELUCRAREA INTEROGĂRILOR

Page 203: An2 Informatica de Gestiune Limbaje

203

• 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).

Page 204: An2 Informatica de Gestiune Limbaje

204

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.

Fig.8.7. Exemplu de fragmentare a datelor

CL_BU

CL# CORP# SUMA_C

N1 N4

C1 C3

1200000 2450000

CL_CT

CL# CORP# SUMA_C

N2 N3 N5 N6

C2 C2 C4 C1

800000 1050000 4200000 2500000

CL CL# CORP# SUMA_C

N1 N2 N3 N4 N5 N6

C1 C2 C2 C3 C4 C1

1200000 800000 1050000 2450000 4200000 2500000

Bucureşti Constanţa

Page 205: An2 Informatica de Gestiune Limbaje

205

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

Page 206: An2 Informatica de Gestiune Limbaje

206

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,

Page 207: An2 Informatica de Gestiune Limbaje

207

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);

Page 208: An2 Informatica de Gestiune Limbaje

208

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.

Page 209: An2 Informatica de Gestiune Limbaje

209

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ă.

Page 210: An2 Informatica de Gestiune Limbaje

210

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.

Page 211: An2 Informatica de Gestiune Limbaje

211

Î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.

Page 212: An2 Informatica de Gestiune Limbaje

212

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

Page 213: An2 Informatica de Gestiune Limbaje

213

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.

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ă

INTERFEŢE STANDARD

PROGRAME

FTP

DIRECTOARE CU FIŞIERE

MESAGERIE SMTP/POP

GROUPWARENEWS

TCP/IP

API (BROWSER

WEB)

JAVA CLIENT MAIL

Page 214: An2 Informatica de Gestiune Limbaje

214

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.

Page 215: An2 Informatica de Gestiune Limbaje

215

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,

Page 216: An2 Informatica de Gestiune Limbaje

216

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.

Page 217: An2 Informatica de Gestiune Limbaje

217

Î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;

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);

Sursa de date

pentru .NET

FRAMEWORK

Setul de date

locale DataSet

XML

Page 218: An2 Informatica de Gestiune Limbaje

218

• 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.

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.

Set de date local

(DataSet) la Client

Adaptor de date (Data Adapter)

Server de date (SQL Server, Oracle DB)

Page 219: An2 Informatica de Gestiune Limbaje

219

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

Page 220: An2 Informatica de Gestiune Limbaje

220

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.

Page 221: An2 Informatica de Gestiune Limbaje

221

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. crt.

Caracteristica de comparaţie

Bazele de date operaţionale

Bazele de date multidimensionale

1. Destinaţia principală

Gestiunea curentă a tranzacţiilor

Componentă a sistemelor informatice pentru asistarea deciziilor

2. Structurarea datelor

Pe procese funcţionale

Pe subiecte ale managementului

3. Modele utilizate Relaţional, normalizate

Stea, fulg de nea, puţin 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

înregistrări Mic Mare

Page 222: An2 Informatica de Gestiune Limbaje

222

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

Page 223: An2 Informatica de Gestiune Limbaje

223

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

Page 224: An2 Informatica de Gestiune Limbaje

224

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

Page 225: An2 Informatica de Gestiune Limbaje

225

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.

Page 226: An2 Informatica de Gestiune Limbaje

226

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.

INTEROGARE PREZENTĂ

INTEROGARE ABSENTĂ

2. Aplicaţii pentru date simple cu cerinţe de interogări ad-hoc

1. Aplicaţii pentru date simple fără cerinţe

de interogări ad-hoc

4. Aplicaţii pentru date complexe cu cerinţe de interogări ad-hoc

3. Aplicaţii pentru date complexe fără cerinţe de interogări ad-hoc

DATE SIMPLE DATE COMPLEXE

Page 227: An2 Informatica de Gestiune Limbaje

227

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.

Page 228: An2 Informatica de Gestiune Limbaje

228

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.

Page 229: An2 Informatica de Gestiune Limbaje

229

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.

Page 230: An2 Informatica de Gestiune Limbaje

230

Page 231: An2 Informatica de Gestiune Limbaje

231

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ţă artificială, 9.1

Bara cu instrumente Web, 5.7 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 Interface), 5.9.1

Bază de date distribuită, 4.1; 8.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 evenimente, 2.4

Bază de date multimedia, 9.3 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

Page 232: An2 Informatica de Gestiune Limbaje

232

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

Page 233: An2 Informatica de Gestiune Limbaje

233

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

Page 234: An2 Informatica de Gestiune Limbaje

234

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

Page 235: An2 Informatica de Gestiune Limbaje

235

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

Page 236: An2 Informatica de Gestiune Limbaje

236

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