Sunteți pe pagina 1din 236

ZENOVIC GHERASIM PROGRAMARE I BAZE DE DATE

Universitatea SPIRU HARET

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

Editura Fundaiei Romnia de Mine, 2005

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

Universitatea SPIRU HARET

UNIVERSITATEA SPIRU HARET

ZENOVIC GHERASIM

PROGRAMARE I BAZE DE DATE

EDITURA FUNDAIEI ROMNIA DE MINE Bucureti, 2005

Universitatea SPIRU HARET

Universitatea SPIRU HARET

CUPRINS

Cuvnt nainte ... 1. Dat, informaie i cunotin. Organizarea datelor n vederea prelucrrii automate cu ajutorul calculatoarelor electronice . 1.1. Conceptele de societate informaional societate a cunoaterii. Sistem informaional, sistem informatic, sistem bazat pe cunotine. Dat, informaie i cunotin . 1.2. Noiuni fundamentale utilizate n organizarea datelor ... 1.3. Relaiile dintre date . 1.4. Structuri de date .. 1.5. Modele de date ... 2. Rezolvarea problemelor economice cu ajutorul programelor pe calculator. Programare .. 2.1. Despre necesitatea cunoaterii i nsuirii elementelor de baz ale programrii 2.2. Noiuni de baz specifice procesului de prelucrare automat a datelor . 2.3. Noiuni de baz referitoare la programare .. 2.4. Elementele de baz ale programrii orientate pe obiecte ... 3. Limbajul de programare Visual Basic .. 3.1. Caracteristicile generale ale mediului integrat de dezvoltare Visual Basic 3.2. Componentele de baz ale mediului integrat de dezvoltare Visual Basic .. 3.3. Proiectarea aplicaiilor n limbajul Visual Basic 3.3.1. Fiierul proiect .. 3.3.2. Crearea interfeei aplicaiei ... 3.3.3. Precizarea proprietilor 3.3.4. Scrierea codului 3.3.5. Execuia aplicaiei informatice n Visual Basic 3.4. Elementele limbajului de programare Visual Basic ... 3.4.1. Unele reguli de scriere .. 3.4.2. Tipuri de date 3.4.3. Variabile i constante 3.4.4. Instruciuni Visual Basic ... 3.4.4.1. Construirea expresiilor . 3.4.4.2. Operatori Visual Basic . 3.4.4.3. Funcii Visual Basic . 3.4.4.4. Implementarea structurilor de control al execuiei unui program 3.4.5. Crearea fiierelor n limbajul Visual Basic ... 3.4.6. Exemplu de aplicaie informatic n limbajul Visual Basic .

9 11 11 15 17 19 22 25 25 26 28 40 44 44 45 49 49 51 55 58 60 63 63 64 65 67 67 67 68 70 72 74 5

Universitatea SPIRU HARET

4. Teoria bazelor de date i a sistemelor de gestiune a bazelor de date .. 4.1. Organizarea datelor n baze de date. Sisteme de gestiune a bazelor de date .. 4.2. Generaii de baze de date i de sisteme de gestiune a bazelor de date asociate 4.3. Baze de date relaionale .. 4.4. Baze de date orientate obiect .. 5. Sistemul de gestiune a bazelor de date Microsoft Access . 5.1. Prezentarea sistemului Microsoft Access 5.2. Cunoaterea mediului de lucru Microsoft Access ... 5.2.1. Definirea componentelor principale ale SGBD Microsoft Access ... 5.2.2. Deschiderea i nchiderea unei baze de date n Microsoft Access ... 5.3. Tabelul 5.3.1. Crearea unui tabel . 5.3.2. Realizarea relaiilor ntre tabele 5.4. Interogarea .. 5.5. Formularul .. 5.6. Raportul .. 5.7. Paginile (Pages) .. 5.8. Macroinstruciunea (Macro-ul) .. 5.9. Modulul (Module) .. 5.9.1. Problematica general ... 5.9.2. Carateristicile limbajului VBA . 5.9.3. Crearea unui modul standard i a unei proceduri Sub .. 5.10. Utilizarea evenimentelor ntr-o baz de date 6. Limbajul structurat de interogare, SQL ... 6.1. Noiuni de baz referitoare la SQL . 6.2. Blocurile componente ale operaiei de regsire a datelor: SELECT i FROM 6.3. Operatori utilizai n SQL ... 6.3.1. Operatorii aritmetici .. 6.3.2. Operatorii de comparaie .. 6.3.3. Operatorii caracter 6.3.4. Operatorii logici 6.3.5. Operatorii pentru mulimi . 6.3.6. Ali operatori, IN i BEETWEEN 6.4. Funcii n SQL 6.4.1. Funcii pentru calculul totalurilor . 6.4.2. Funcii dedicate pentru dat calendaristic i or . 6.4.3. Funcii aritmetice .. 6.4.4. Funcii caracter . 6.5. Clauze utilizate n SQL .. 6.6. Jonciuni . 6.7. Instruciuni de manipulare a datelor ... 6.8. Crearea i ntreinerea tabelelor .. 7. Elemente fundamentale ale serverelor de baze de date ... 7.1. Arhitectura Client/Server 7.2. Serverul de baze de date Microsoft SQL Server 7.3. Noiuni privind limbajul Transact_SQL pentru Microsoft SQL Server . 7.4. Serverul de baze de date Oracle . 7.5. Caracterizarea limbajului PL/SQL pentru serverul de baze de date Oracle ... 6

80 80 87 89 93 99 99 103 103 105 108 108 114 118 131 140 143 148 153 153 154 155 156 159 159 159 161 161 162 162 163 163 164 164 164 165 165 166 167 168 169 171 173 173 176 180 188 191

Universitatea SPIRU HARET

7.6. Noiuni privind utilitarul SQL*Plus din compunerea serverului de baze de date Oracle . 7.7. Alte servere de baze de date ... 8. Baze de date distribuite ... 8.1. Despre necesitatea bazelor de date distribuite n aplicaiile economice . 8.2. Concepte fundamentale .. 8.3. Fragmentarea datelor n bazele de date distribuite . 8.4. Gestiunea tranzaciilor 8.5. Protecia bazelor de date distribuite ... 8.6. Baze de date online . 8.6.1. Problematica general .. 8.6.2. Pagini Web statice i dinamice . 8.7 Visual Basic.NET i bazele de date distribuite ... 9. Baze de date n tehnologii avansate ... 9.1. Bazele de date deductive 9.2. Bazele de date multidimensionale .. 9.3. Bazele de date multimedia .. 9.4. Bazele de date relaionale orientate obiect . Bibliografie Anex: Abrevieri i noiuni utilizate n lucrare .

194 196 197 197 197 203 205 207 212 212 214 216 219 219 221 223 225 227 231

Universitatea SPIRU HARET

Universitatea SPIRU HARET

Cuvnt nainte

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

Noiembrie 2004

Autorul,

Universitatea SPIRU HARET

10

Universitatea SPIRU HARET

1. DAT, INFORMAIE I CUNOTIN. ORGANIZAREA DATELOR N VEDEREA PRELUCRRII AUTOMATE CU AJUTORUL CALCULATOARELOR ELECTRONICE

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

Universitatea SPIRU HARET

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

SOCIETATEA CUNOATERII

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

Tabelul 1.1. Definirea i caracteristicile unor structuri de date Denumire Tablou (table) Tablou ordonat Definire n programare, list de elemente, implementat sub forma unui vector de nregistrri sau a unei liste nlnuite. n bazele de date relaionale, structur cu linii i coloane. Structur realizat dup metoda primul sosit, primul plecat, FIFO (First-In, First-Out) Structur realizat dup metoda ultimul sosit, primul plecat, LIFO (Last-In, First-Out) Structur de date sub form de list n care fiecare element al listei asigur o adres pentru urmtorul element consecutiv al listei. Structur de date sub forma unui arbore ordonat de gradul doi. Arbori binari la care fiecare nod dispune de caracteristica culoare roie sau neagr. Arbori multici n care fiecare nod poate prezenta cel mult patru succesori (fii). Structur de date fundamentat pe transformarea unui domeniu de valori ale unei anumite chei ntr-un domeniu de indici dintr-un tablou. Tip de arbore binar complet implementat printr-un tablou. Avantaje Inserare i acces rapid, cnd indexul este cunoscut. Cutare mai rapid n comparaie cu tablourile neordonate. Accesul la date se execut n ordinea introducerii acestor date. Accesul la date se execut n ordinea invers introducerii acestor date. Inserare i tergere rapide Dezavantaje Cutare i tergere greoaie, dimensiune fixat

Coad (queue)

Stiv (stack)

Acces greoi la celelalte elemente.

List nlnuit (chain list)

Cutare greoaie.

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

Cutare, inserare i tergere rapide (arbore echilibrat).

Algoritmul de tergere este complicat.

Structuri de date complexe.

Movil (heap)

Graf (graph)

Structur format din noduri i arce ca legturi dintre noduri.

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

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

21

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

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

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

Universitatea SPIRU HARET

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

24

Universitatea SPIRU HARET

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

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

Universitatea SPIRU HARET

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

CITIRE DATE DE INTRARE

PRELUCRRI

SCRIERE
REZULTATE

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

PROGRAM

LIMBAJ DE PROGRAMARE

ALGORITMI
Fig.2.2. Compunerea unui program pe calculator 28

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

BLOC INTRODUCERE/EXTRAGERE DATE (INTRARE/IEIRE)

BLOC DESCHIDERE/ NCHIDERE FIIERE

BLOC ATRIBUIRE

BLOC DECIZIE (SALT CONDIIONAT)

BLOC PROCEDUR

BLOC NCEPUT /SFRIT DE PROGRAM (TERMINATOR)

CONECTORI PE PAGIN

CONECTORI DE PAGIN

BAND MAGNETIC

DOCUMENT IMPRIMAT

LINII DE LEGTUR NTRE BLOCURI


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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

simplifica operaiile de prelucrare sau de a uura interpretarea lor. De exemplu, structura de date din fig.2.6 faciliteaz interpretarea datelor disponibile despre un client. Exist mai multe tipuri de structuri de date: vector, nregistrare, mulime etc.

Fig. 2.4.c. Structura alternativ imbricat 32

Universitatea SPIRU HARET

i=1 SECVENA 1

i=2 SECVENA 2
...

i=n SECVENA n

STRUCTURA ALTERNATIV GENERALIZAT CAZUL GENERAL


Fig.2.4.d. Structura de control alternativ generalizat

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

Universitatea SPIRU HARET

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

34

Universitatea SPIRU HARET

Subprogram 2 Subprogram 1 o o o Subprogram m PROGRAM 1

Subprogram 1 Subprogram 2 o o o Subprogram n PROGRAM 2 ooo

Subprogram 1 Subprogram 2 o o o Subprogram z PROGRAM l

APLICAIE INFORMATIC
Fig.2.5. Noiunea de aplicaie informatic

Client

Nume

Prenume

Adresa

Telefon

Banca

Localitatea

Strada

Nr

Bloc

Scara

Etaj

Apart

Fig.2.6. Structura de date Client

35

Universitatea SPIRU HARET

36

Universitatea SPIRU HARET

Fig.2.7. Fazele elaborrii unui produs-program

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

LIMBAJE DE NIVEL FOARTE NALT (4 GL) LIMBAJE DE NIVEL NALT (3 GL) LIMBAJE DE MACROASAMBLARE (2 GL)
LIMBAJ DE ASAMBLARE (1 GL) LIMBAJ COD-MAIN (0 GL)
Fig.2.8. Ierarhia limbajelor de programare

HARDWARE

Fig. 2.8. Ierarhia limbajelor de programare

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

Fig. 2.9. Relaiile ntre clase i obiecte

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

Universitatea SPIRU HARET

3. LIMBAJUL DE PROGRAMARE VISUAL BASIC

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

Instrumente BackOffice DA DA

Universitatea SPIRU HARET

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

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

Universitatea SPIRU HARET

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

Fig.3.2. Componentele de baz ale IDE Visual Basic

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

Universitatea SPIRU HARET

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

Fig. 3.3. Componentele ferestrei principale a VB 6.0

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

Universitatea SPIRU HARET

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

Fig.3.4. Fereastra Project Explorer a VB 6.0

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

Universitatea SPIRU HARET

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

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

Universitatea SPIRU HARET

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

Fig.3.6. Meniul File

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

Universitatea SPIRU HARET

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

Fig. 3.7. Meniul Project

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

Universitatea SPIRU HARET

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

Fig.3.8. Caseta cu instrumente (ToolBox) 52

Universitatea SPIRU HARET

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

Fig.3.9. Modul de adugare a unui control la cutia cu instrumente (Toolbox) 53

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Fig.3.11. Fereastra Properties 56

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

Explicaiile privind formarea numelui obiectelor cu prefixe standard vor fi date n paragraful 3.4.1. Aspectul formularului obinut prin precizarea proprietilor formularului i controalelor incluse este prezentat n fig.3.12.

Fig.3.12. Introducerea proprietilor formularului i controalelor incluse pentru aplicaia informatic cu factura de materiale

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

Universitatea SPIRU HARET

Fig.3.13. Fereastra editare a codului, Code Editor

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

Universitatea SPIRU HARET

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

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

Universitatea SPIRU HARET

Fig.3.15. Codul pentru aplicaia cu factura de materiale introdus n fereastra de editare a codului

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

Universitatea SPIRU HARET

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

Fig.3.17. Rezultatele rulrii aplicaiei cu factura de materiale cu setul nr.2 de date de intrare din tabelul 3.2. 62

Universitatea SPIRU HARET

3.4. Elementele limbajului de programare Visual Basic 3.4.1. Unele reguli de scriere O proprietate esenial a unui obiect n Visual Basic este numele (Name). Numele este folosit pentru a referi un obiect particular n cadrul codului. Numele obiectului trebuie s fie sugestiv i s arate, n cazul controalelor, grupul de controale cruia i aparine. Ca urmare, s-a adoptat convenia conform creia un nume trebuie s fie format dintr-un prefix din trei litere (dat de notaia ungar) i numele propriu-zis cu semnificaie pentru utilizarea obiectului. Prefixul numelui (Tabelul 3.3) indic, n mod unic, grupul de controale din care face parte.
Tabelul 3.3. Stabilirea numelor unor obiecte n Visual Basic Nume obiect Data Form Command Button Label TextBox Menu Check Box Frame Image List Box Option Button Picture Box Prefix standard dat frm cmd, btn lbl txt mnu chk fra img lst opt pic Exemple datSalarii frmMateriale, frmClienti cmdCalcul, btnExit lblDobinda, lblSumaInitiala txtDobinda, txtSumaInitiala mnuEvaluare chkImpozit fraSelectie imgOrase, imgProfesori lstDiscipline, lstStudenti optCursuri picTools

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

Universitatea SPIRU HARET

n Visual Basic, numele obiectelor sunt utilizate n setarea unui cadru de lucru (framework) corespunztor procedurilor eveniment, pentru scrierea codului. Formatul fiecrei subrutine (n Visual Basic nu exist program principal; toate procedurile obiectelor sunt subrutine) este: Private Sub Object Name_Event (Optional Arguments) End Sub. Formularului i se ataeaz un obiect. Visual Basic construiete automat un cadru de lucru (framework) pentru fiecare dintre procedurile eveniment. Utilizatorul care construiete aplicaia trebuie s scrie codul procedurilor eveniment la care corespunde aplicaia. 3.4.2. Tipuri de date Tipurile de date reprezint natura datelor n cadrul unui limbaj de programare. n limbajul Visual Basic, tipurile de date sunt predefinite (standard) sau definite de utilizator. n tabelul 3.4 sunt prezentate tipurile de date predefinite cele mai utilizate.
Tabelul 3.4. Tipurile de date predefinite n Visual Basic Tip romn Octet ntreg ntreg lung Logic Real simpl precizie Real dubl precizie Moned Dat Obiect ir de caractere Nedefinit Tip englez Byte Integer Long (integer) Boolean Single (floating) Double (floating) Currency Date Object String Variant Sufix % & ! 8 # @ $ 8 8 4 1 octet/ caracter Memorie ocupat 1 2 4 2 4 Interval de valori (domeniu) 0255 -32768+32767 2.147.483.648+2.147.483.647 True, False -3,40 e38+3,40 e38 -1,8 e308+1,8 e308 -9,22 e14+9,22 e14 Jan 01/100-dec 31/9999 Adresa unui obiect ir de caractere alfanumerice ir, numere, dat

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

Tabelul 3.5. Clasele de preceden ale operatorilor n Visual Basic Clasa 1. 2. 3. Operator And, Or, Not Mod <,>,<=,>=,=,<> + ^ \ * / () [] &, + Operaia Logic Modulo Comparare Adunare Scdere Exponeniere (ridicare la putere) mprire ntreag nmulire mprire Stabilire prioritate calcul Concatenare ir de caractere

4. 5.

6.

3.4.4.3. Funcii Visual Basic Funcia (Function) reprezint o mulime ordonat de instruciuni creat n scopul ndeplinirii unei sarcini (task) bine precizat i repetabil. Funcia returneaz un singur rezultat. Funciile Visual Basic sunt predefinite sau definite de utilizator. Visual Basic asigur o bibliotec variat de funcii predefinite. n tabelul 3.6 sunt prezentate principalele funcii predefinite specifice limbajului Visual Basic.
Tabelul 3.6. Principalele funcii predefinite ale limbajului Visual Basic Funcie Abs Asc Chr Cos Date Format Left Len Mid Now Right Rnd Sin Sqr Str Time Timer 68 Valoare returnat Valoarea absolut a unui numr Codul ASCII sau ANSI al unui caracter Caracterul corespunztor unui cod ASCII sau ANSI Cosinusul unui unghi Data curent ca ir de caractere Dat sau numr convertite la un ir de caractere Selecteaz partea stng a unui ir de caractere Numrul de caractere dintr-un ir de caractere (lungimea irului de caractere) Selecteaz o parte din irul de caractere Data i ora curent Selecteaz partea de sfrit a unei ir de caractere Generarea aleatoare a unui numr Sinusul unui unghi Rdcin ptrat dintr-un numr Numr transformat ntr-un ir de caractere Timpul curent dat ca ir de caractere Numr de secunde rmase pn la miezul nopii (ora 0)

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

Vfctva = Vfctva + Vmctva Print Tab(70); Vmctva; Tab(100); Vfctva End If O alt form a instruciunii If este: If Then Else End If. De exemplu: If TVA = 0.19 Then Vmctva=Vmftva + TVA * Vmftva Vfctva = Vfctva + Vmctva Print Tab(70); Vmctva; Tab(100); Vfctva Else Print TVA diferit de 19% End If Instruciunea Select Case Instruciunea Select Case se folosete n cazul cnd sunt precizate mai multe selecii. Sintaxa general a instruciunii este urmtoarea: Select Case variabil Case Is variabil sau expresie instruciuni Case Is variabil sau expresie instruciune Case Else instruciune End Select De exemplu, pentru selecia persoanelor dup categoria de vrst (Categoria_varsta) se procedeaz astfel: Select Case Vrsta Case Is 5 Categoria_varsta = Copii sub 12 ani Case Is 13 TO 19 Categoria_varsta = Adolesceni Case Is 20 TO 35, 50, 60 TO 65 Categoria_varsta = Aduli Case Is > 65 Categoria_varsta = Btrni Case Else Categoria_varsta = Alte categorii End Select Instruciuni repetitive Ciclarea este asigurat prin formatul general Do Loop. Ciclrile implementeaz operaiile care se repet de un anumit numr de ori, ciclarea repetndu-se pn cnd se ndeplinete o condiie specificat, ntlnit la nceputul sau sfritul ciclrii. Instruciuni care implementeaz structuri de control repetitive condiionate anterior Din aceast categorie fac parte instruciunile Do {While|Until}Loop i While Wend care au urmtoarele sintaxe generale: Do [{While|Until} conditie] Secventa_instructiuni_1 [Exit Do] Secventa_instructiuni_2 Loop,
71

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

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

i=i+1

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

Universitatea SPIRU HARET

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

Fig.3.19. Rezultatele rulrii programului realizat n varianta 1

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

Universitatea SPIRU HARET

Codul programului n limbajul Visual Basic, pentru rezolvarea n varianta 2, este urmtorul: Option Explicit Dim Nrf As Long Dim Df As Date Dim Vmftva As Double Dim Vmctva As Double Dim Vfftva As Double Dim Vfctva As Double Const tva = 0.19 Private Sub cmdCalcul_Click() Dim Cod_mat As Long Dim Den_mat As String Dim Cant As Integer

Vfftva = 0; Vfctva = 0;

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

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

Universitatea SPIRU HARET

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

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

Universitatea SPIRU HARET

4. TEORIA BAZELOR DE DATE I A SISTEMELOR DE GESTIUNE A BAZELOR DE DATE

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

DOMENIUL CONCEPTUAL
DOMENIUL SEMANTIC ********** CARACTERISTICI

BAZA DE DATE

COLECII DE DATE
SGBD

Percepie, Reprezentare

Fig.4.1. Definirea conceptului de baz de date 80

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Baza de date

SGBD

SCHEMA BD

ADMINISTRATOR

UTILITARE

PROGRAMATOR DE APLICAIE

Fig.4.2. Arhitectura unui sistem baz de date

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

Universitatea SPIRU HARET

nregistrare (record) reprezint o asociere a valorilor pentru fiecare cmp (field) al bazei de date. Cele trei nivele de organizare a datelor ntr-o baz de date sunt logic, virtual i fizic (fig.4.3).
NIVEL LOGIC SCHEMA EXTERN 1 NIVEL VIRTUAL

NIVEL FIZIC

SCHEMA EXTERN 2

SCHEMA CONCEPTUAL

SCHEMA FIZIC

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

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

EXPLOATAREA I NTREINEREA BAZEI DE DATE

Fig.4.4. Etapele de realizare a bazelor de date

Formatul de cmp menine consistena datelor prin asigurarea unei structuri de introducere a datelor, aa cum se arat n fig.4.5. X cifr, A - liter

Format cmp CONT LA BANC

ROXXAAAAXXXXXXXXXXXXXXXX
Exemplu

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

86

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

4.3. Baze de date relaionale Termenul de baz de date relaional (BDR) a fost introdus de E.F.Codd de la firma IBM n anul 1969. Modelul relaional este fundamentat pe reguli, structuri i operaii. Regulile stabilesc modul de manipulare a datelor, structurile sunt obiecte definite ce conin date i care sunt accesibile utilizatorului, iar operaiile reprezint aciuni prin care sunt manipulate datele sau obiectele schemei bazei de date. E.F.Codd a formulat n anul 1985 cele 13 reguli de baz care definesc o baz de date relaional i care sunt prezentate n tabelul 4.1.
Tabelul 4.1 Nr. regulii R0 R1 Coninutul regulii SGBD gestioneaz datele la nivel de relaie (exclusiv pe baza caracteristicilor relaionale). Toate datele din baza de date relaional se reprezint explicit sub forma unor valori ntr-un tabel (regula reprezentrii logice a datelor). Datele individuale dintr-un tabel sunt accesate prin specificarea numelui tabelului, a valorii cheii primare i a coloanei (regula garantrii accesului la date) Valorile NULL (inexistena datelor) sunt tipuri de date acceptate (regula referitoare la valorile NULL). Baza de date relaional reprezint descrierea bazei de date n format logic simplificat sub form de tabele (regula metadatelor). Modelul relaional permite implementarea mai multor limbaje (regula de permisiune a limbajelor multiple). Dac vederea curent reprezint un tabel, toate vederile (view-urile) sunt actualizabile (regula actualizrii vederilor). n operaiile de schimbare a coninutului bazelor de date, se lucreaz la un moment dat pe toat relaia (regula referitoare la actualizri, inserri i tergeri n baza de date). Structura logic a bazei de date se prezint complet separat de structura fizic a bazei de date (regula referitoare la independena fizic a datelor). Comentarii Conceptul de baz este relaia. Catalogul conine denumiri de tabele, coloane, domenii, restricii de integritate etc. Datele sunt accesibile prin numele tabelului, a liniei i a coloanei.

R2

R3 R4

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

R5 R6

R7

R8

Universitatea SPIRU HARET

R9

R10

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

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

R11

R12

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

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

Universitatea SPIRU HARET

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

Rel1
OR

Rel3

Rel2

Fig.4.6. Diagrama operaiei reuniune 91

Universitatea SPIRU HARET

Cheia unei relaii reprezint o mulime minimal de atribute ale cror valori identific n mod unic un tuplu ntr-o relaie. Diferitele chei posibile se numesc chei-candidat. Cheia candidat aleas pentru a identifica efectiv tupluri se numete cheie primar. Conceptele folosite pentru descrierea formal, uzual i fizic a elementelor de baz ale organizrii datelor n baze de date relaionale sunt prezentate n tabelul 4.2. [44].
Tabelul 4.2 Formal Relaie Tuplu Atribut Domeniu Uzual Tablou Linie Coloan Tip de dat Fizic Fiier Inregistrare Cmp Tip de dat

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

98

Universitatea SPIRU HARET

5. SISTEMUL DE GESTIUNE A BAZELOR DE DATE MICROSOFT ACCESS

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

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

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

Universitatea SPIRU HARET

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

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

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

Universitatea SPIRU HARET

Fig.5.3. Fereastra Database

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

Universitatea SPIRU HARET

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

Fig.5.4. Fereastra New Table 108

Universitatea SPIRU HARET

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

Fig.5.5. Fereastra de dialog Table

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

un buton Rename Field cu ajutorul cruia utilizatorul poate modifica denumirea cmpului.

Fig.5.6. Fereastra Table Wizard pentru crearea tabelelor cu ajutorul ghidului

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

Universitatea SPIRU HARET

Fig.5.7. Vizualizarea datelor din tabelul Materiale

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

Universitatea SPIRU HARET

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

Fig.5.8. Tabelele bazei de date CONSTRUCT

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

Universitatea SPIRU HARET

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

Fig.5.9. Fereastra de editare a relaiei (EditRelationship) dintre tabelele Furnizori i Materiale

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

Universitatea SPIRU HARET

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

Cod_f Den_f Adresa_f Telefon_f Banca_f Cont_f Pagina Web

1:1 Livreaz

1:m

Cod_Mat Den_mat Cod_f Cod_dep Nr_fact

Fig.5.10. Relaiile dintre tabelele Furnizori i Materiale

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

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Fig.5.12. Fereastra de dialog New Query

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

Tabelul 5.1 Operatorii de comparare n SGBD Microsoft Access Operator > < >= <= = Like Between <>, not Rezultat Valori peste 50 Toate valorile de la A la P Cel puin la fel de mare cu valoarea din cmpul Maxim Mai mic sau egal cu <=Date() 10 Cel puin cu 10 zile n urm Coresponden(egalitate) = Unix1 Exact cinci caractere Comparare cu un nume Like Dac Ciment apare n cadrul generic **Ciment** cmpului n cadrul gamei Between 1 De la 1 la 8 inclusiv And 8 Diferit de Not Null Eliminare nregistrare Semnificaia Mai mare dect Mai mic dect Mai mare sau egal cu Exemplu > 50 < P >=[Maxim]

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

Universitatea SPIRU HARET

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

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

Universitatea SPIRU HARET

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

Fig.5.14. Afiarea rezultatelor interogrii de selecie FF1

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

Universitatea SPIRU HARET

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

Fig. 5.15. Interogarea totalizatoare pentru calcularea numrului de furnizori din Timisoara

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

Universitatea SPIRU HARET

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

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

Universitatea SPIRU HARET

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

Fig.5.18. Fereastra de introducere a valorii parametrului Den_f

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

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

Universitatea SPIRU HARET

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

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

Fig.5.21. Rezultatul interogrii de aciune

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

Universitatea SPIRU HARET

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

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

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

Universitatea SPIRU HARET

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

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

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

Universitatea SPIRU HARET

Fig.5.24. Fereastra de dialog Append

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

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

Universitatea SPIRU HARET

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

Fig. 5.26. Fereastra de dialog New Form pentru crearea formularului n SGBD Microsoft Access 2003 131

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Fig.5.29. Formularul Furniz1 n modul de lucru Open

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

Universitatea SPIRU HARET

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

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

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Fig.5.31. Fereastra de dialog New Report

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

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

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

Universitatea SPIRU HARET

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

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

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

Universitatea SPIRU HARET

Fig.5.34. Crearea unui cmp Hyperlink n tabelul Furnizori

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

Universitatea SPIRU HARET

cnd indicatorul mouse-ului se gsete n zona legturii (fig.5.35). Pe bara de legtur la (Link To) se execut clic pe opiunea fiier existent sau pagin Web existent (Existing File or Web Page), se scrie textul hiperlegturii, se introduce documentul legat (prin nume fiier sau adres URL), se creeaz eticheta de ecran (clic pe ScreenTip) i se apas OK.

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

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

146

Universitatea SPIRU HARET

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

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

Universitatea SPIRU HARET

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

Fig.5.37. Modul Design View al unei ferestre Macro

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

Fig.5.38. Crearea modulului standard Modul_test

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

158

Universitatea SPIRU HARET

6. LIMBAJUL STRUCTURAT DE INTEROGARE SQL

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

Universitatea SPIRU HARET

Baz de date model: MATERIALE


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

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

Universitatea SPIRU HARET

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

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

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

Universitatea SPIRU HARET

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

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

Universitatea SPIRU HARET

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

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

Universitatea SPIRU HARET

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

Cod 21123 31221 41124

Mat Tabla Cot Con

UM kg kg kg

Cant 1221 1550 15500

Pret_u 120000 120000 130000

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

172

Universitatea SPIRU HARET

7. ELEMENTE FUNDAMENTALE ALE SERVERELOR DE BAZE DE DATE

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

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

Gestionare cod aplicaie client Interfa interactiv cu utilizatorul final

Fig.7.1. Arhitectura client-server de date, de prezentare i de proceduri pentru prelucrare

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

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

Universitatea SPIRU HARET

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

DEVELOPER DESIGNER

SQL * Plus

PL/SQL
Java

EXPRESS

Administrator Tools

Browsere Editoare

Net Products

Fig.7.3. Arhitectura Oracle

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

Universitatea SPIRU HARET

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

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

PSE

EXECUTOR INSTRUCIUNI SQL

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

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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


Nr.crt 1. 2. 3. 4. 5. 6. 7. 8. Comanda L Ln L* I A text C/text_vechi/text_nou DEL CL BUFF Efectul comenzii Afieaz toate liniile din buffer (list) Afieaz linia n (list) Afieaz linia curent (list) Adugare linii (input) Adugare text la sfritul unei linii (append) Schimb text_vechi cu text_nou (change) terge linia curent (delete) terge bufferul (clear buffer)

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

8. BAZE DE DATE DISTRIBUITE

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

Universitatea SPIRU HARET

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

PROGRAM 1
DESCRIERE DATE 1

FIIER 1

PROGRAM 2
DESCRIERE DATE 2

FIIER 2

PROGRAM 3
DESCRIERE DATE 3
Fig.8.1. Sistem de fiiere

FIIER 3

PROGRAM DE APLICAIE 1

BAZA DE DATE

SISTEM DE GESTIUNE A BAZEI DE DATE (SGBD)

PROGRAM DE APLICAIE 2

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

Universitatea SPIRU HARET

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

REEA DE CALCULATOARE

TEHNOLOGIE A BAZEI DE DATE

distribuire

integrare

SISTEM BAZE DE DATE DISTRIBUITE (DDBS) integrare


Fig.8.3. Determinrile ntr-un sistem baze de date distribuite (DDBS)

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

Universitatea SPIRU HARET

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

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


Fig.8.4. Un SGBD centralizat ntr-o reea

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

Universitatea SPIRU HARET

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

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

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

201

Universitatea SPIRU HARET

FIABILITATE

GESTIONAREA DIRECTOARELOR

PROIECTAREA DISTRIBUIRII

CONTROLUL CONCURENEI

GESTIUNEA BLOCRILOR

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

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

CL_BU CL# N1 N4 CORP# C1 C3 SUMA_C 1200000 2450000

CL_CT CL# N2 N3 N5 N6 CORP# C2 C2 C4 C1 SUMA_C 800000 1050000 4200000 2500000

CL CL# N1 N2 N3 N4 N5 N6
204

CORP# C1 C2 C2 C3 C4 C1

SUMA_C 1200000 800000 1050000 2450000 4200000 2500000

Fig.8.7. Exemplu de fragmentare a datelor

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

MESAGERIE PROGRAME

GROUPWARE NEWS

SMTP/POP

INTERFEE STANDARD

API (BROWSER WEB)

TCP/IP

FTP

DIRECTOARE CU FIIERE

JAVA

CLIENT MAIL

Fig.8.8. Arhitectura reelei Intranet

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

Field List, se selecteaz cmpurile ce vor fi reprezentate n pagina Web (fig.8.9). n fereastra Page 1: Data Access Page apare un formular special care va fi accesibil cu un browser Web.

Fig.8.9. Crearea formularului pentru pagina Web ce vizualizeaz tabelul MATERIALE

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

Universitatea SPIRU HARET

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

Sursa de date pentru .NET FRAMEWORK

Setul de date locale

DataSet

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

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

Universitatea SPIRU HARET

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

Set de date local (DataSet) la Client

Adaptor de date (Data Adapter)

Server de date (SQL Server, Oracle DB)

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

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

218

Universitatea SPIRU HARET

9. BAZE DE DATE N TEHNOLOGII AVANSATE

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

9.2. Bazele de date multidimensionale Bazele de date multidimensionale (MDB, Multidimensional DataBase) reprezint [64] un ansamblu de date, constituite prin extracie sau transformare de date, avnd ca surse bazele de date (fiierele) interne sau externe dintr-o organizaie, date ce variaz n timp, sunt organizate multidimensional i sunt exploatate prin intermediul interogrilor convenionale sau prin tehnici de analiz simpl (OLAP) sau prin tehnici de analiz n tehnologii avansate (Data Mining). Sursele de date interne sunt bazele de date operaionale din organizaie, adic acele baze de date specifice domeniilor de gestiune ale organizaiei (producie-servicii, comercial-marketing, cercetare-dezvoltare, financiar-contabil, resurse umane) ce stocheaz datele ce se refer la tranzaciile (evenimentele) specifice domeniului de gestiune considerat. Sursele de date externe sunt reprezentate de datele provenite de la alte organizaii de coordonare sau de sintez. Prelucrarea datelor din bazele de date operaionale se realizeaz potrivit conceptului de prelucrare interactiv (online) a tranzaciilor, OLTP (On-Line Transaction Processing), ce reliefeaz caracteristicile acestor prelucrri: volum limitat de date accesate, previzibilitatea interogrilor realizate de utilizatorii finali, numr mic de intrri/ieiri asociat fiecrei tranzacii, prezen sporadic i slab a elementelor de analiz. Bazele de date multidimensionale servesc pentru obinerea de noi informaii sau pentru deducerea de noi cunotine prin interogare cu ajutorul limbajului SQL, prin prelucrare analitic online (analiz simpl) OLAP (OnLine Analytical Processing) sau prin tehnologia de rafinare inteligent (avansat) a datelor Data Mining. n tabelul 9.1. este prezentat, [64], o comparaie ntre bazele de date operaionale i bazele de date multidimensionale.
Tabelul 9.1. Comparaie ntre bazele de date operaionale i bazele de date multidimensionale Nr. crt. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Caracteristica de comparaie Destinaia principal Structurarea datelor Modele utilizate Date Agregarea datelor Actualizare Grad de consolidare Percepie Numr utilizatori Accesare Mrime Numr de nregistrri Bazele de date operaionale Gestiunea curent a tranzaciilor Pe procese funcionale Relaional, normalizate Actuale Nu Imediat Foarte sczut Tabele detaliate Mare Citire i scriere Sute MB zeci GB Mic Bazele de date multidimensionale Component a sistemelor informatice pentru asistarea deciziilor Pe subiecte ale managementului Stea, fulg de nea, puin normalizate Temporale sau istorice Da n momente diferite Foarte ridicat Multidimensional, rezumat Mic Numai citire Zeci GB zeci TB Mare 221

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

INTEROGARE PREZENT INTEROGARE ABSENT

2. Aplicaii pentru date simple cu cerine de interogri ad-hoc 1. Aplicaii pentru date simple fr cerine de interogri ad-hoc DATE SIMPLE

4. Aplicaii pentru date complexe cu cerine de interogri ad-hoc 3. Aplicaii pentru date complexe fr cerine de interogri ad-hoc DATE COMPLEXE

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

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

226

Universitatea SPIRU HARET

BIBLIOGRAFIE

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

Universitatea SPIRU HARET

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

Universitatea SPIRU HARET

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

229

Universitatea SPIRU HARET

230

Universitatea SPIRU HARET

ANEX
ABREVIERI I NOIUNI UTILIZATE N LUCRARE

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

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

Universitatea SPIRU HARET

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

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

Universitatea SPIRU HARET

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

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

Universitatea SPIRU HARET

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

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

Universitatea SPIRU HARET

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

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

Universitatea SPIRU HARET

Societate informatic, 1.1 Societate bazat pe cunotine (Knowledge-Based Society), 1.1 Specificarea metodei (semntura), 2.4 SQL, (Structured Query Language) limbaj structurat de interogare, 6.1 SQL *Plus, 7.6 SQL Server, 7.2 Sqr, funcie, 3.4.4.3 Stare obiect, 2.4 STARTING WITH (clauz SQL), 6.5 Static, 3.4.3 Stiv (Stack), 1.4 Str, funcie, 3.4.4.3 String, 3.4.2 Structura de control alternativ, 2.3 Structura de control repetitiv, 2.3 Structura de control secvenial, 2.3 Structur de date, 1.4; 2.3 Structur de date arborescent, 1.4 Structur de date dinamic, 1.4 Structur de date fizic, 1.4 Structur de date liniar, 1.4 Structur de date logic, 1.4 Structur de date punctual, 1.4 Structur de date recursiv, 1.4 Structur de date reea, 1.4 Structur de date relaional, 1.4 Structur de date static, 1.4 Subprogram, 2.3 SUM, 6.4.1 ablon HTML, 6.7 Tabel (Table), 1.4; 5.3 Tabel de dispersie (Hash Table), 1.4 Tablet PC, 5.1 Table Wizard, 5.3.1 Tablou ordonat, 1.4 TASM, 2.3 Tehnica entitate-asociere, 1.5 Time, funcie, 3.4.4.3

Timer, funcie, 3.4.4.3 Tip abstract de dat, 2.4 Tip de dat, 3.4.2 Tip de legtur, 1.5 Tip obiect, 2.4 Tip structur de date, 1.4 Toolbox, 3.2 Tools VB, 3.2 TPS, Transition Processing Systems, sisteme informatice de prelucrare a tranzaciilor, 8.4 Transact SQL, 7.3 Tranzacie, 8.4 Tuplu, 4.3 UML, Unified Modeling Language, limbaj unificat de modelare Universalitatea algoritmului, 2.3 UNDERSCORE, 6.3.3 UNION, 6.3.5 UPDATE, 6.7 Valoare, 1.2 Variabil, 2.3; 3.4. Variant, 3.4.2 VBA, 5.1; 5.9.2 VBE (Visual Basic Editor), 5.9.3 VBScript, 5.9.1 Ventilare structur de date, 1.4 Videoconferin, 8.6.1 Visual Basic, 3.1 Visual Basic.NET, 8.7 WAN, Wide Area Network, reea extins (pe arie larg) de calculatoare i de comunicaii, 8.1 Watch, 3.2 Where (clauz SQL), 6.2 WSDL (Web Service Description Language), 8.6.1 www, World Wide Web, pagini Web. XML, Extensible Markup Language, limbaj de marcare extins, 5.1

236

Universitatea SPIRU HARET

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