Documente Academic
Documente Profesional
Documente Cultură
Programare Si Baze de Date PDF
Programare Si Baze de Date PDF
Programare Si Baze de Date PDF
ISBN: 973-725-096-6
159.91(075.8)
ZENOVIC GHERASIM
PROGRAMARE
ŞI BAZE DE DATE
Această lucrare este destinată studenţilor facultăţilor economice care studiază disciplina
Informatică de gestiune (Limbaje şi SGBD). Cartea poate fi utilă şi studenţilor din alte
facultăţi care studiază limbaje de programare şi sisteme de gestiune a bazelor de date. În
acelaşi timp, ea poate fi utilizată ca punct de plecare pentru revizuirea şi completarea
cunoştinţelor de către absolvenţii de facultate care urmează cursurile de masterat.
Parcurgerea cărţii presupune ca studentul să-şi fi însuşit deja cursurile de Informatică
de gestiune (Bazele informaticii) şi Birotică.
Lucrarea conţine noţiunile şi conceptele de bază din teoriile moderne ale programării şi
ale bazelor de date, precum şi elementele fundamentale privind aplicarea acestora în domeniul
economic prin folosirea limbajului de programare Visual Basic, a sistemului de gestiune a
bazelor de date relaţionale Microsoft Access şi a limbajului structurat de interogare SQL. În
carte au fost incluse mai puţine aplicaţii economice complexe, deoarece studentul are la
dispoziţie lucrarea Aplicaţii economice în Visual Basic şi Access, apărută în Editura Fundaţiei
România de Mâine, în anul 2003. De asemenea, în acest volum au fost cuprinse problemele
de bază ale serverelor de baze de date, ale bazelor de date distribuite şi ale bazelor de date în
tehnologii avansate, inclusiv ale depozitelor de date ca o trecere de la domeniul prelucrărilor
tranzacţionale on-line (OLTP) către cel al prelucrărilor analitice on-line (OLAP) şi o
introducere pentru disciplina care va fi parcursă în anii următori de studii Sisteme informatice
de asistare a deciziei. De altfel, însuşirea cunoştinţelor de la cursul de Informatică de gestiune
(Limbaje şi SGBD) condiţionează înţelegerea şi celorlate cursuri de specialitate Informatică
de gestiune (Proiectarea sistemelor informatice), Auditarea sistemelor informatice şi Sisteme
expert de gestiune.
Pentru întocmirea lucrării, s-au folosit numeroase referinţe bibliografice atât din
literatura autohtonă, cât şi din cea străină.
SOCIETATEA
CUNOAŞTERII
12
Între date există relaţii sau legături diferite. Între datele care aparţin unor
tipuri de entităţi se pot realiza două feluri de legături:
– prima legătură se exprimă prin apartenenţa datelor la entitate;
– a doua legătură se defineşte pentru entităţile de acelaşi tip sau de tipuri
diferite.
17
18
Structura de date este o colecţie de date între care s-a stabilit un ansamblu de
relaţii pe baza cărora funcţionează un mecanism de selecţie şi identificare a
componentelor. Altfel exprimat, o structură de date reprezintă un anumit
aranjament al datelor atunci când sunt stocate în memoria unui calculator. Datele
din structurile de date pot fi manipulate cu ajutorul algoritmilor, în mai multe
moduri, sortând datele sau căutând un anumit element. Structurile de date, în afara
situaţiei de instrumente de programare, servesc pentru stocarea şi modelarea unor
date din universul real.
Mulţimea de date, asociată structurii de date, poate cuprinde datele unui tip
sau ale mai multor tipuri de entităţi. Componentele structurii se identifică prin
nume sau prin poziţia pe care o deţin în structură în raport cu ordinea specificată.
În situaţia în care pentru localizarea unei componente se parcurg toate
celelalte componente dinaintea ei, structura are acces secvenţial. În schimb, atunci
când o componentă poate fi selectată fără a ţine seama de celelalte, structura are
acces direct.
Componentele unei structuri de date sunt date elementare sau sunt ele însele
structuri de date.
Asupra unei structuri de date se pot efectua următoarele operaţii:
• crearea (înseamnă memorarea datelor iniţiale pe suportul de stocare);
• actualizarea (schimbarea stării structurii prin adăugare, modificare sau
ştergere de elemente, modificarea valorii sau relaţiilor dintre elemente);
• consultarea (accesarea componentelor structurii de date);
• sortarea (aranjarea elementelor unei structuri de date în conformitate cu
criterii prestabilite);
• ventilarea (divizarea unei structuri de date în două sau mai multe structuri
de date);
• fuzionarea (formarea unei structuri de date noi din două sau mai multe
structuri de date) etc.
Structurile de date care prezintă aceeaşi organizare şi asupra cărora se
execută aceleaşi operaţii formează un anumit tip de structuri de date. Tipul de
structură de date reprezintă o mulţime ordonată de date între care s-au stabilit
anumite relaţii şi pentru care realizarea operaţiilor se efectuează cu un grup de
operatori de bază care au o anumită semantică.
Dacă se ia în considerare tipul componentelor, structurile de date se clasifică în:
• omogene (componentele sunt de acelaşi tip);
• eterogene (componentele au tipuri diferite).
Când structura de date se descompune în structuri de date de acelaşi tip,
atunci structura obţinută este denumită recursivă.
După nivelul de structurare al datelor, se deosebesc:
• structura fizică (structura de date care se referă la modul de implementare
pe suporţi tehnici informaţionali);
19
21
24
Orice sistem de calcul (adică acel sistem tehnic care asigură execuţia
procesului de prelucrare automată a datelor) are în compunere, în esenţă, partea de
hardware şi partea de software. Bill Gates, patronul Microsoft, spunea în anul 2002
că, din totalul costurilor unui sistem de calcul, partea de hardware reprezintă 5%, în
timp ce partea de software reprezintă 95%. Problema costurilor unui sistem de
calcul devine din ce în ce mai importantă în condiţiile cerute de societatea
informaţională – societatea cunoaşterii (concepte prezentate în capitolul 1 al
lucrării) şi în conformitate cu prevederile legale referitoare la respectarea legii
drepturilor de autor în domeniul software.
Partea de software a unui sistem de calcul cuprinde, la rândul ei, software-ul
de bază (sistemul de operare sau sistemul de programe de bază) şi software-ul de
aplicaţie (sau sistemul de programe aplicative). În continuare sunt prezentate
noţiunile de bază specifice procesului de prelucrare automată a datelor.
În capitolul 1 al lucrării s-a prezentat noţiunea de sistem informatic. A
rezultat astfel că orice sistem informatic conţine unul sau mai multe sisteme de
calcul (hard şi soft), cărora li se adaugă restul bazei tehnico-materiale, baza
ştiinţifico-metodologică, baza informaţională, resursele umane şi cadrul
organizatoric. Baza tehnico-materială conţine echipamentele de culegere, verificare
şi transmitere date, echipamentele de teleprelucrare, suporturile de stocare a datelor
şi calculatorul propriu-zis. Baza ştiinţifico-metodologică cuprinde modelele
matematice ale proceselor şi fenomenelor economice şi metodologii de realizare a
sistemelor informatice. Baza informaţională se referă la date, fluxuri şi circuite
informaţionale, cataloage şi dicţionare de date etc.
Un sistem informatic are funcţia de prelucrare automată a datelor pentru
obţinerea informaţiilor necesare procesului de conducere sau de informare.
Din cele arătate mai sus, rezultă că procesul de prelucrare automată a datelor
presupune existenţa simultană a următoarelor elemente: sistemul de echipamente
(hardware), sistemul de programe de bază, sistemul de programe aplicative, datele
de intrare ce sunt supuse proceselor de prelucrare automată şi datele de ieşire sau
rezultatele prelucrărilor. În esenţă, acest proces de prelucrare automată a datelor
este format din trei etape: introducerea (citirea) datelor de intrare, prelucrarea
datelor (efectuarea calculelor) şi extragerea (scrierea) rezultatelor. Este de reţinut
că datele de intrare sunt introduse printr-o operaţie de citire - read, iar datele ce
reprezintă rezultate sunt obţinute printr-o operaţie de scriere –write sau de tipărire
- print a rezultatelor (fig.2.1).
CITIRE
PRELUCRĂRI SCRIERE
DATE DE
REZULTATE
INTRARE
26
DATE
(STRUCTURI DE
DATE) LIMBAJ DE
PROGRAM PROGRAMARE
ALGORITMI
BLOC ATRIBUIRE
BLOC DECIZIE
(SALT CONDIŢIONAT)
30
32
33
34
o o ooo o
o o o
o o o
Subprogram m Subprogram n
Subprogram z
APLICAŢIE INFORMATICĂ
Client
35
HARDWARE
Fig.2.8. Ierarhia limbajelor de programare
Fig. 2.8. Ierarhia limbajelor de programare
41
48
53
60
61
Tabelul 3.2.
Exemple de seturi de date de intrare pentru aplicaţia
cu factura de materiale consumabile pentru tehnica de calcul
Nr. Numar Data Cod Denumire Pret
Cantitate
crt. factura factura material material unitar
1 16844 16/10/2004 41000825 Hirtie xerox 30 120000
2 16844 16/10/2004 41081320 Cartus imprimanta 5 4280000
3 16844 16/10/2004 41061223 Hirtie fax 5 230000
4 16844 16/10/2004 41081422 Ribon 10 620000
5 16844 16/10/2004 41061154 Toner copiator 3 1200000
62
64
67
Tabelul 3.6.
Principalele funcţii predefinite ale limbajului Visual Basic
Funcţie Valoare returnată
Abs Valoarea absolută a unui număr
Asc Codul ASCII sau ANSI al unui caracter
Chr Caracterul corespunzător unui cod ASCII sau ANSI
Cos Cosinusul unui unghi
Date Data curentă ca şir de caractere
Format Dată sau număr convertite la un şir de caractere
Left Selectează partea stângă a unui şir de caractere
Len Numărul de caractere dintr-un şir de caractere (lungimea şirului de caractere)
Mid Selectează o parte din şirul de caractere
Now Data şi ora curentă
Right Selectează partea de sfârşit a unei şir de caractere
Rnd Generarea aleatoare a unui număr
Sin Sinusul unui unghi
Sqr Rădăcină pătrată dintr-un număr
Str Număr transformat într-un şir de caractere
Time Timpul curent dat ca şir de caractere
Timer Număr de secunde rămase până la miezul nopţii (ora „0”)
68
75
i=i+1
76
Vfftva = 0; Vfctva = 0;
Percepţie
DOMENIUL CONCEPTUAL
Reprezentare
DOMENIUL
SEMANTIC
UNIVERS BAZA DE
DATE
REAL **********
COLECŢII
DE DATE
CARACTE- SGBD
RISTICI
Percepţie,
Reprezentare
PROGRAM UTILIZATORI
DE APLICAŢIE
Baza SGBD
SCHEMA BD ADMINISTRATOR
de date
UTILITARE PROGRAMATOR
DE APLICAŢIE
83
SCHEMA
EXTERNĂ 1
SCHEMA
EXTERNĂ n
84
EXPLOATAREA ŞI ÎNTREŢINEREA
BAZEI DE DATE
X – cifră,
Format câmp A - literă
CONT LA BANCĂ
ROXXAAAAXXXXXXXXXXXXXXXX
Exemplu RO96RXBR0000000431267982
88
90
Rel1
OR Rel3
Rel2
Fig.4.6. Diagrama operaţiei reuniune
91
93
98
99
• Caracteristici fundamentale:
a) performanţa care este legată, în primul rând, de superioritatea sistemului
de operare pe 32 de biţi (dar cu posibilitatea de a avea o memorie RAM de cel
puţin 32 MB);
b) lansarea în execuţie a sistemului presupune precizarea unui formular cu
deschidere automată şi opţiuni de afişare a barelor de instrumente şi a ferestrei
Database;
c) integrarea este dată de facilitatea SGBD Access de a lucra transparent cu
produsele Word şi Excel;
d) duplicarea, ce permite unei baze de date să poată fi utilizată în mod
multiuser (multiutilizator, adică simultan de către mai mulţi utilizatori) şi la staţiile
din reţea neconectate, înregistrările fiind sincronizate şi după încetarea lucrului;
e) DatabaseWizard (programul „vrăjitor” pentru baze de date) are
posibilitatea de a asigura crearea de tabele, interogări, formulare şi rapoarte pentru
mai multe baze de date obişnuite;
f) fereastra Database (baza de date) asigură afişarea detaliilor fiecărui obiect
(descrierea, data creării, data ultimei modificări).
• Tabele:
a) AutoNumber (Număr cu incrementare automată) înlocuieşte tipul Counter
(Numărător), facilitând astfel utilizarea valorilor aleatoare şi tipul ReplicationID
(Identificator multiplicare), necesare bazelor de date copie;
b) controlul modular de afişare permite definirea pentru fiecare câmp a tipului
controlului prestabilit (casetă de text, casetă combinată, casetă de validare ş.a.);
c) LookupWizard (programul „vrăjitor” de căutare) este utilizat în special
pentru a introduce proprietăţile corespunzătoare câmpurilor utilizate în calitate de
chei externe (străine).
• Formulare:
a) imaginile (Images) asigură fundaluri pentru formulare şi rapoarte create pe
baza unor imagini redimensionate la scară;
b) asigură lucrul cu evenimente de tip filtru (Filter) care apar la crearea unui
filtru, precum şi cu evenimentul ApplyFilter, care apare la aplicarea acestuia;
100
• Controale:
a) apariţia unui nou tip de eveniment, şi anume Change (schimbă), care
permite operaţii de căutare între apăsările tastelor;
b) apariţia unui text cu explicaţii de utilizare a instrumentelor, care presupune
definirea unui text cu explicaţii (ToolTip) pentru toate controalele;
c) casetele combinate sunt mult mai rapide decât în versiunile anterioare,
îndeosebi în manipularea unui volum foarte mare de date;
d) posibilitatea metamorfozării, care presupune schimbarea controalelor dintr-
un tip într-altul, ca de exemplu schimbarea unei casete de text într-o casetă
combinată;
e) Memos (câmpurile memo) presupun asocierea automată a barei de derulare
verticală şi cu diverse opţiuni de tipul EnterKeyBehavior (introducere a modului de
comportare a tastei).
• Rapoarte:
a) apariţia posibilităţii asocierii unui raport filtrului curent dintr-un formular, prin
utilizarea proprietăţilor Filter şi FilterOn;
b) NoData reprezintă un eveniment nou folosit pentru detectarea rapoartelor
fără date;
c) afişările anticipate asigură afişarea simultană a mami multor pagini şi, de
asemenea, modificări ale opţiunilor Zoom. Afişările anticipate sunt mult mai
rapide, datorită faptului că evenimentele sunt declanşate o singură dată.
104
Caseta Search for… serveşte pentru căutarea unui nume sau a unei locaţii de
fişier. De asemenea, Search for… poate fi utilă pentru căutarea unei proprietăţi într-
o bază de date sau a unui anumit şir de caractere.
105
Deschiderea unei baze de date existente sau noi presupune lucrul cu fereastra
Database (bază de date) care afişează obiectele care formează baza de date
(fig.5.3). Fereastra Database pune la dispoziţie utilizatorului o metodă simplă de
gestionare a obiectelor care compun baza de date. În fereastra Database sunt
afişate, în partea stângă a ferestrei, cele şapte tipuri de obiecte care formează baza
de date, şi anume:
• Tabelul (Table);
• Interogarea (Query);
• Formularul (Form);
• Raportul (Report);
• Pagini Web (Pages);
• Macro-ul (Macro);
• Modulul (Module).
Cele trei butoane (butonul Open, butonul Design, butonul New), afişate în
partea de sus a ferestrei Database, sunt utilizate pentru crearea, modificarea şi
respectiv afişarea obiectului curent.
Obiectele create vor fi afişate în lista cu obiecte situată în mijlocul ferestrei
Database. În interiorul acestei liste se mai află trei opţiuni rapide de creare a
obiectelor.
Obiectele gestionate cu SGBD Microsoft Access, împreună cu elementele de
control care le sunt asociate, conţin proprietăţi şi declanşează apariţia unor tipuri
de evenimente.
106
5.3. Tabelul
5.3.1. Crearea unui tabel
Tabelul (Table) este un obiect specific SGBD Microsoft Access pentru
stocarea datelor. Crearea unei baze de date (structurile de date specifice acesteia)
începe cu definirea tabelelor. Această definire înseamnă, de fapt, stabilirea
structurii tabelului. Fiecare coloană a tabelului este denumită câmp (field), iar
fiecare rând al tabelului constituie o înregistrare (record). Înregistrările unui tabel
respectă structura de câmpuri a tabelului. La crearea unui tabel nou se solicită
definirea câmpurilor, atribuindu-se fiecăruia o denumire unică şi indicându-i
SGBD Microsoft Access tipul de date corespunzător. Ulterior, se pot adăuga şi alte
câmpuri, cu condiţia reproiectării eventualelor formulare şi rapoarte care folosesc
datele tabelului în structura anterioară acestei operaţii.
Pentru crearea unui tabel, se poate utiliza una dintre următoarele trei metode:
• Create table in Design View (crearea tabelului cu ajutorul ferestrei de
proiectare);
• Create table by using wizard (crearea tabelului prin folosirea ghidului);
• Create table by entering data. (crearea tabelului prin introducerea datelor).
Crearea tabelelor prin alegerea opţiunii Create table by using wizard
(program „vrăjitor” dedicat tabelelor) asigură asistarea pe întregul parcurs de
construcţie a unui tabel, definind prin intermediul unui dialog cu utilizatorul
numele şi tipul de câmpuri care definesc tabelul.
O altă modalitate de a crea un tabel o constituie executarea unui clic de
mouse pe butonul New şi alegerea, din fereastra de dialog New Table, a uneia
dintre cele cinci opţiuni disponibile (fig.5.4):
1. Datasheet View – permite crearea unui tabel în modul Datasheet (foaie de
date), având 10 câmpuri (coloane) şi 21 de înregistrări (rânduri) libere, pregătit
pentru completare.
Fereastra de dialog Table este formată din două zone: zona aflată în partea de
sus a ferestrei (zonă folosită pentru declararea câmpurilor), alcătuită dintr-un tabel
format din trei coloane, şi o a doua zonă aflată în partea de jos a ferestrei, zonă în
care se stabilesc proprietăţile câmpului.
109
112
După ce utilizatorul a ales tipul de tabel şi câmpurile care vor face parte din
tabelul respectiv, acesta poate să treacă mai departe executând un clic cu pointerul
de la mouse pe butonul Next pentru a stabili numele tabelului şi cheia primară, sau
poate să execute un clic pe butonul Finish pentru a lăsa SGBD Microsoft Access să
stabilească singur numele tabelului şi cheia primară.
113
Cod_f Cod_Mat
Den_f 1:1 1:m Den_mat
Adresa_f Cod_f
Telefon_f Livrează Cod_dep
Banca_f Nr_fact
Cont_f
Pagina Web
117
5.4. Interogarea
Interogarea (Query) este un obiect Access ce reprezintă o întrebare pe care
utilizatorul o formulează cu privire la numite informaţii din baza de date. În
momentul în care utilizatorul porneşte la construcţia unei interogări, acesta trebuie
să aibă deja o viziune de ansamblu asupra datelor pe care doreşte să le regăsească,
şi anume: ce câmpuri se vor utiliza, din care tabele se vor extrage datele, ce criterii
trebuie să îndeplinească aceste date, în ce ordine vor fi ele sortate. Construirea unei
interogări în Microsoft Access reprezintă un proces simplu şi rapid de aşezare a
tabelelor şi a câmpurilor necesare pe o grilă QBE (Query by Example).
Clasificarea interogărilor
Cele mai utilizate interogări sunt interogările denumite interogări de
selecţie. O interogare permite:
- vizualizarea sau modificarea datelor;
- selectarea acelor înregistrări care satisfac criteriile impuse de utilizator;
- limitarea unei proceduri la câmpurile care sunt relevante;
- sortarea înregistrărilor într-o ordine specificată.
Atunci când este executată o interogare de selecţie, rezultatul va fi o
mulţime de înregistrări aparţinând unui tabel sau mai multor tabele. Această
mulţime poartă numele de dynaset (setul dinamic rezultat al interogării). Un
dynaset reprezintă o vedere dinamică asupra datelor care sunt subiectul interogări
respective. Aceasta înseamnă că atunci când datele din tabelele sursă ale interogării
suferă modificări, automat rezultatul interogării va fi şi el modificat [18].
O a doua mare categorie de interogări este reprezentată de interogările de
acţiune. Aceste interogări au rolul de a modifica anumite date, în cadrul unei
singure operaţii. Aceste modificări cuprind capacitatea de a şterge, de a adăuga, a
modifica anumite valori dintr-un tabel, ca şi de a crea un tabel nou. Aceste
interogări de acţiune sunt: interogările pentru ştergere (Delete Query), interogările
pentru adăugare (Append Query), interogările pentru reactualizare (Update
Query) şi interogările al căror rezultat este crearea unui tabel nou în baza de date
(Make-Table Query).
118
Calcularea totalurilor
În procesul de prelucrare a datelor, la un anumit moment, utilizatorul este
nevoit să definească interogări care se referă la grupuri de date. Acest tip de
interogări care efectuează calcule asupra unor grupuri de înregistrări poartă numele
de interogări de grup.
SGBD Microsoft Access pune la dispoziţia utilizatorului diverse tipuri de
calcule (funcţii de grup), cum sunt:
Sum – returnează suma tuturor valorilor din câmpul în care este asociată.
Min – returneză cea mai mică valoare a unui câmp.
Max – returneză cea mai mare valoare a unui câmp.
Avg – calculează valoarea medie a unui câmp.
Count – returnează numărul de înregistrări care respectă condiţia din clauza
Where.
Pentru a putea avea acces la aceste funcţii este necesar să se schimbe tipul
interogării în Totals. Această schimbare se realizează executând un clic de mouse pe
butonul Totals din bara Query Design sau alegând opţiunea Totals din meniul View.
Rezultatul acestei schimbări va avea ca rezultat introducerea unui rând suplimentar în
123
De multe ori, în cadrul operaţiilor de prelucrare ale bazei de date, este necesar
să se utilizeze expresii de calcul mai complexe. Funcţiile totalizatoare puse la
dispoziţie de SGBD Microsoft Access nu sunt de folos în acest caz. Pentru rezolvarea
acestor calcule, este necesar ca utilizatorul să-şi creeze propriile lui expresii.
Pentru exemplificare, se presupune că se doreşte să se calculeze o valoare pe
produs a unei facturi. Această valoare este egală cu cantitatea de produse facturate
(notată în baza de date CONSTRUCT cu Cant) ori preţul pe unitatea de produs
(notat în baza de date Pret_unitar). Se selectează câmpurile care prezintă interes
pentru problema enunţată şi se aduc în grila QBE. La sfârşit într-o ultimă coloană a
124
125
Acest tip de interogare este folosit pentru eliminarea unui grup de înregistrări
din unul sau mai multe tabele. Pentru a crea o astfel de interogare se porneşte de la
o interogare Select Query, după care se selectează opţiunea Delete Query din lista
derulantă Query Type de pe bara Query Design sau din meniul Query. Metoda cea
mai indicată pentru generarea unei interogări de tipul Delete Query constă în
crearea într-o etapă anterioară a unei interogări Select Query şi verificarea
rezultatelor acesteia în modul de afişare Datasheet. După ce s-a verificat care date
se vor şterge, se poate transforma interogarea de selecţie în interogare de ştergere.
Un câmp care se doreşte a fi şters este adăugat grilei QBE, asupra lui putând să
acţioneze două opţiuni: From (De la) şi Where (Unde).
127
128
130
131
5.6. Raportul
1. Design View – prin această metodă de creare a unui raport, utilizatorul are
controlul absolut asupra modului de aranjare a obiectelor în cadrul de proiectare a
raportului.
2. Report Wizard – reprezintă o metodă rapidă şi uşoară de creare a unui
raport, utilizatorul fiind asistat pe tot parcursul creării raportului cu întrebări
referitoare la sursele înregistrărilor, numele câmpurilor şi formatul datelor. SGBD
Microsoft Access 2003 creează pe baza răspunsurilor utilizatorului raportul dorit.
3. AutoReport: Columnar sau AutoReport: Tabular – SGBD Microsoft
Access 2003 generează în mod automat un raport în care datele sunt afişate într-o
141
Fig.5.33. Prezentarea barei cu instrumente Web din SGBD Microsoft Access 2003
Paginile de acces la date (Data Access Pages) reprezintă pagini Web, scrise
în limbajul HTML dinamic (DHTML), ce sunt conectate direct la baza de date care
constituie sursa de date. Crearea acestor pagini de acces la date din bazele de date
Access se face prin utilizarea formularelor Access sau cu un „wizard”.
Câmp de tip hiperlegătură (Hyperlink) asigură un salt pe calea către
destinaţia specificată (pagină Web sau fişier din reţea). Crearea unui astfel de câmp
într-un tabel al unei baze de date se obţine în modul de lucru cu fereastra de
proiectare (Design View), unde din lista Data Type se alege opţiunea Hyperlink
(fig.5.34), după care se salvează (Save).
După crearea câmpului Hyperlink, se foloseşte butonul de inserare a
hiperlegăturii (Insert Hyperlink) pentru crearea hiperlegăturii în câmpul Hiperlink
sau ca hipertext în interiorul unui formular sau raport. Hiperlegătura este compusă
din enunţul de descriere a legăturii, vizibil utilizatorului din adresa URL a
destinaţiei legăturii şi din eticheta de ecran (ScreenTip) care se afişează atunci
145
Crearea unei pagini Web noi (Create New Page) se obţine prin selecţia
opţiunii corespunzătoare din fereastra Edit Hyperlink (fig.5.35). În acest fel se
realizează o hiperlegătură la un document nou. Textul care se va afişa pentru
hiperlegătura creată se introduce în caseta “Text to display” (în exemplul
considerat în fig.5.35 textul este construct). Numele noului document (de exemplu,
const_1) se introduce în caseta Name of the new document. Se optează pentru
editarea în momentul lucrului (Edit the new document now) sau pentru editarea
noului document mai târziu (Edit the new document later). În final, se apasă
butonul OK. Pentru exemplul considerat, se obţine fereastra din fig.5.36.
146
149
Modulul (Module) este un obiect al SGBD Microsoft Access care este creat în
limbajul Visual Basic pentru aplicaţii, VBA (Visual Basic for Applications) şi este
destinat extinderii funcţiunilor specifice unei baze de date. Acest obiect Module
reprezintă o alternativă a obiectului Macro prezentat în paragraful anterior, pentru
dezvoltarea de aplicaţii în SGBD Microsoft Access.
Limbajul VBA reprezintă limbajul specific întregului pachet de birotică
Microsoft Office 2003 (pentru Word, Excel şi Access). Instrucţiunile VBA sunt
asemănătoare limbajului Visual Basic prezentat în capitolul 3. Sintaxa acestor
instrucţiuni este prezentată de un sistem de asistenţă online extins.
În programele principale ale pachetului Microsoft Office 2003, limbajul VBA
asigură posibilitatea înregistrării automate a instrucţiunilor (secvenţelor de
instrucţiuni), implementarea structurilor de control (secvenţială, alternative şi
repetitive) pentru controlul aplicaţiilor, schimbul dinamic de date cu alte aplicaţii
din familia Microsoft, capacitatea de a folosi funcţiile interfeţei de programare a
aplicaţiilor, API (Application Programming Interface) specifică sistemului de
operare Windows. În plus, prin limbajul VBA se obţine o aliniere la standardul de
realizare a conectivităţii bazelor de date extinse, ODBC (Open-DataBase
Connectivity) prin care SGBD-uri diferite pot gestiona aceeaşi bază de date
(Microsoft Access, SQL Server, Paradox, FoxPro, dBase etc.).
Aceeaşi firmă Microsoft a realizat VBScript (Visual Basic Scripting Edition),
limbaj de scripturi interpretat de browser-ul Internet Explorer.
153
155
156
158
Caracteristici generale
Limbajul SQL (Structured Query Language – limbaj structurat de interogare)
este utilizat pentru manipularea şi regăsirea datelor din bazele de date relaţionale.
SQL-ul pune la dispoziţia programatorului sau a unui administrator de baze
de date următoarele facilităţi [19]:
¾ posibilitatea de modificare a structurii bazei de date;
¾ posibilitatea schimbării valorilor de configurare pentru securitatea
sistemului;
¾ permite stabilirea şi modificarea drepturilor date utilizatorilor asupra
bazelor de date sau a tabelelor;
¾ permite interogarea unei baze de date;
¾ oferă facilităţi multiple referitoare la actualizarea conţinutului unei baze
de date.
O interogare SQL nu este neapărat o întrebare pusă bazei de date, ci, cel mai
adesea, o comandă pentru executarea uneia dintre acţiunile de mai jos:
¾ să construiască sau să şteargă o bază de date;
¾ să insereze, să modifice sau să şteargă linii sau câmpuri;
¾ să caute în tabele o anumită informaţie şi să returneze rezultatele într-o
anumită ordine;
¾ să modifice securitatea informaţiilor;
¾ o simplă interogare (întrebare).
Toate cuvintele scrise cu litere mari ar putea fi scrise şi cu litere mici. Cu
litere mari se scriu cuvintele cheie SQL. Semnul punct şi virgulă (;) de la sfârşitul
expresiei indică programului SQL în linie de comandă că interogarea este
terminată.
159
Se pot crea noi coloane care se pot redenumi în timpul execuţiei. Redenumirea
coloanelor se face folosind sintaxa: <nume_coloană> alias.
Minus (-), Înmulţire (*), Împărţire (/) se folosesc similar cu operatorul
Plus(+).
161
CodDenumire_material
12345Cherestea
12245Cherestea
11145Cherestea
21123Tabla
21124Tabla
31221Cot
41124Con
6.6. Joncţiuni
Subinterogări
O subinterogare este o interogare ale cărei rezultate sunt transmise ca
argumente unei alte interogări. Ele sunt elementele de legătură între mai multe
interogări.
Imbricarea subinterogărilor
Imbricarea este operaţia de lipire a mai multor subinterogări în serie, forma
generală fiind:
SQL> SELECT *
FROM TABEL
WHERE (23)
(subinterogare1(subinterogare2(subinterogare3);
Există şi subinterogări corelate, care permit folosirea unei referinţe externe.
Instrucţiunea INSERT
Instrucţiunea INSERT (Inserează) este asociată operaţiei de introducere a
datelor într-o bază de date. Ea poate fi: INSERT...VALUES şi
INSERT...SELECT
Instrucţiunea INSERT...VALUES este utilizată la introducerea datelor într-
un tabel, înregistrare cu înregistrare. Este utilă pentru operaţii care presupun lucrul
cu tabele care au înregistrări puţine.
Forma generală a comenzii este:
SQL> INSERT INTO TABEL
(col1, col2, col3,…)
VALUES (valoare1, valoare2, valoare3,…) (24)
Funcţia principală a acestei instrucţiuni este adăugarea unei înregistrări într-un
tabel folosind coloanele menţionate şi valorile corespondente. La inserarea datelor
într-un tabel prin folosirea acestei instrucţiuni, trebuie respectate următoarele reguli:
¾ valorile folosite trebuie să aibă acelaşi tip de dată ca şi câmpurile în care
sunt adăugate;
¾ dimensiunea datei introduse trebuie să fie mai mică decât dimensiunea
coloanei. De exemplu, un şir de 25 de caractere nu poate fi scris într-un câmp de
10 caractere;
169
172
Produsul Microsoft SQL Server face parte din categoria serverelor de baze
de date, care lucrează cu aplicaţii de tipul client-server şi care presupune acces
concurent la o anumită bază de date. Referirile se efectuează la versiunea Microsoft
SQL Server2000 care a fost precedată de versiunea Microsoft SQL Server 7.0. În
momentul redactării prezentei lucrări, este anunţată versiunea Microsoft SQL
Server 2005.
Stocarea informaţiilor pe serverul de baze de date Microsoft SQL Server se
face în baze de date, fişiere şi grupuri de fişiere. Microsoft SQL Server dispune de
un sistem de securitate propriu, pe bază de identificatori şi conturi de utilizatori ai
bazelor de date.
SQL Server asigură crearea şi gestionarea rolurilor la nivel de server, la
nivelul unei baze de date şi la nivel de aplicaţie; de asemenea, asigură permisiuni,
care pot fi alocate utilizatorilor şi rolurilor. Rolurile SQL Server asigură gruparea
numelor utilizatorilor bazelor de date (grupuri Windows, utilizatori Windows sau
identificatori SQL Server). Atribuirea unui identificator pentru rol la nivel de
server se efectuează cu ajutorul SQL Enterprise Manager. Rolurile la nivel de
aplicaţie asigură aplicarea permisiunilor la un nivel mai înalt decât nivelul pe care
se găseşte fiecare utilizator. Atunci când o aplicaţie activează un rol la nivel de
aplicaţie, se produce suspendarea tuturor permisiunilor utilizatorului. Activarea
rolurilor necesită parole. Fiecare bază de date cuprinde roluri (există nouă roluri
fixe sau predefinite şi pot exista roluri ale utilizatorului) pentru care există
proceduri. Fiecare rol al unei baze de date acordă utilizatorilor un număr de
permisiuni şi capabilităţi. Numele rolului este necesar să fie unic la baza de date.
Apartenenţa la un rol fix al unei baze de date nu are legătură cu permisiunile
acordate pentru o altă bază de date.
SQL Server permite realizarea salvărilor de siguranţă (backup).
SQL Server este însoţit de utilitare şi instrumente care asigură următoarele
servicii:
1. MSSQLServer, ce reprezintă serverul propriu-zis de baze de date;
2. MSSearch, care asigură indexarea câmpurilor de tip text care operează sub
SQL Server;
3. SQLServerAgent, ce realizează planificarea operaţiilor, gestionarea eve-
nimentelor, replicarea, generarea avertismentelor;
4. MSDTC (Microsoft Distributed Transaction Coordinator), adică coordo-
natorul tranzacţiilor distribuite pe mai multe servere;
5. MSSQLServerOLAPService, ce asigură serviciile de analiză a datelor prin
OLAP;
6. MSSQLServerADHelper, ce realizează integrarea activă a directoarelor
pentru SQL Server.
Instanţa în SQL reprezintă o copie independentă a unui server de baze de
date pe un calculator din categoria platformelor Microsoft Windows. Microsoft
SQl Server permite execuţia a cel mult 16 astfel de instanţe. Instanţele SQL Server
pot fi prestabilite (este acceptată o singură instanţă prestabilită pe un anumit
calculator) sau denumite (acele instanţe cărora li s-a dat un nume la instalare).
Două instanţe denumite de pe acelaşi calculator nu sunt acceptate cu acelaşi nume.
176
177
179
189
DESIGNER
PL/SQL
Java
EXPRESS
Aşa cum s-a menţionat în paragraful precedent, în nucleul Oracle este inclus
limbajul procedural propriu-zis PL/SQL, Procedural Language SQL, ca o extensie
a SQL (ce este un limbaj neprocedural, aşa cum s-a arătat în capitolul precedent),
caracteristic sistemului Oracle. Prin acest limbaj, ce aparţine generaţiei a patra
(4GL), se realizează accesul la datele standard pentru bazele de date obiect-
relaţionale. În acelaşi timp, limbajul prezintă caracteristici ale limbajelor de
programare structurate (3GL), cum sunt ciclul şi saltul.
Limbajul PL/SQL asigură lucrul orientat pe obiecte, cu blocuri PL/SQL.
Aceste blocuri PL/SQL sunt caracteristice acestui limbaj şi se definesc ca grupuri
de instrucţiuni SQL şi PL/SQL. Blocurile PL/SQL sunt prelucrate de un motor
(engine) PL/SQL prezent pe server sau în utilitare Oracle. Motorul utilizat este
funcţie de locul (server sau utilitar) de unde se apelează PL/SQL. Motorul
descompune blocul în instrucţiuni SQL (SQL_S) separate ce sunt aplicate unui
executor de instrucţiuni SQL ce se găseşte pe serverul Oracle. Comenzile
procedurale (PS) sunt prelucrate de către executorul instrucţiunilor procedurale,
PSE (Procedural Statement Executor), aşa cum se poate observa în fig.7.4. Prin
procesarea datelor la locul aplicaţiei, se micşorează traficul către server, ceea ce se
constituie într-un avantaj.
BLOC PL/SQL
SERVER ORACLE
MOTOR PL/SQL
EXECUTOR
PRELUCRARE
PSE INSTRUCŢIUNI
INSTRUCŢIUNI SQL
Un bloc PL/SQL este format din patru secţiuni de bază: antet (header,
opţională), secţiunea declarativă (opţională), secţiunea executabilă şi secţiunea de
tratare a excepţiilor (a erorilor, opţională).
Structura generală a unui bloc PL/SQL este:
Secţiunea Header
IS
191
196
Când s-a prezentat clasificarea bazelor de date, s-a arătat că, din punctul de
vedere al modului de localizare a datelor, bazele de date pot fi locale sau
distribuite. În capitolul anterior, au fost numeroase situaţiile în care s-au făcut
referiri la categoria de baze de date distribuite, dându-se explicaţii succinte
referitoare la noţiunile şi elementele implicate. În consecinţă, este necesară o
aprofundare a acestor concepte într-un capitol separat.
S-a arătat în capitolele anterioare ce este şi cum se construieşte o aplicaţie
Access cu ajutorul căreia se poate asigura gestionarea şi partajarea datelor între
diferiţi utilizatori finali în reţea. În cazul utilizatorilor conectaţi intermitent şi
aleator la baza de date centrală şi de la distanţă (de exemplu, prin intermediul
Internetului), a fost necesară dezvoltarea unei filosofii de lucru şi a unor arhitecturi
adecvate care să răspundă unor cerinţe multiple.
Arhitecturile client/server prezentate în capitolul anterior pot fi percepute ca
un caz particular al sistemelor distribuite.
Bazele de date distribuite apar ca o consecinţă firească a faptului că
organizaţiile economice performante sunt distribuite logic în departamente, secţii,
birouri, grupuri de lucru şi distribuite geografic în locaţii diferite ce reprezintă
filiale ale acestei organizaţii.
Abordarea bazelor de date distribuite, ca elemente fundamentale ale sistemelor
informatice integrate unei organizaţii economice, trebuie să aibă în vedere cele trei
tendinţe importante care redefinesc rolul acestora în aplicaţiile economice:
1. Internetul şi alte reţele de calculatoare şi de comunicaţii pe arie largă,
WAN (Wide Area Network) conectează în timp real participanţii cheie: vânzători,
producători, distribuitori şi clienţi.
2. Globalizarea pieţii, a mediului de afaceri necesită stocarea şi procesarea
unor cantităţi mari de date (baze de date mari), distribuite în toate locaţiile
geografice implicate într-o anumită activitate sau proces economic.
3. Transformarea SUA şi a altor ţări industrializate în societăţi
informaţionale (economii informaţionale) accentuează importanţa eficienţei
sistemelor informatice şi de comunicaţii în care bazele de date distribuite joacă
rolul determinant prin aceea că stochează date ce susţin informaţii şi cunoştinţe, cu
ciclul de viaţă din ce în ce mai scurt.
PROGRAM 1
FIŞIER 1
DESCRIERE DATE 1
PROGRAM 2
FIŞIER 2
DESCRIERE DATE 2
PROGRAM 3
FIŞIER 3
DESCRIERE DATE 3
PROGRAM DE
APLICAŢIE 1
SISTEM DE
BAZA GESTIUNE PROGRAM DE
DE DATE A BAZEI APLICAŢIE 2
DE DATE
(SGBD)
PROGRAM DE
APLICAŢIE 3
Fig.8.2. Gestiunea unei baze de date
198
REŢEA DE TEHNOLOGIE A
CALCULATOARE BAZEI DE DATE
distribuire integrare
SISTEM BAZE DE
DATE DISTRIBUITE
(DDBS)
integrare
Fig.8.3. Determinările într-un sistem baze de date distribuite (DDBS)
SITE 2
SITE 3
SITE 1
REŢEA DE
COMUNICAŢII
SITE 4
SITE 6
SITE 5
Fig.8.4. Un SGBD centralizat într-o reţea
SITE 2
SITE 3
SITE 1
REŢEA DE
COMUNICAŢII
SITE 4
SITE 6
SITE 5
201
PRELUCRAREA
INTEROGĂRILOR
Aşa cum s-a arătat mai sus, o bază de date distribuită, DDB (Distributed
Data-Base), reprezintă o bază de date logic integrată (utilizatorii percep o singură
bază de date), dar fizic distribuită pe mai multe calculatoare distincte,
interconectate între ele. Utilizatorii interacţionează cu o DDB în acelaşi mod în
care interacţionează cu o bază de date centralizată. O DDB este compusă din mai
multe baze de date locale (LDB) care sunt memorate în nodurile unei reţele de
calculatoare (uneori, şi dintr-o bază de date centrală, CDB). Baza de date centrală
primeşte de la bazele de date locale numai acele colecţii de date a căror stocare este
justificată la nivelul CDB în scopul unor prelucrări centralizate la nivelul
sistemului informatic integrat.
DDB reprezintă o bază de date globală şi este concepută după o singură
schemă conceptuală globală, cunoscută şi accesată de utilizatorul global.
Utilizatorul local are acces şi exploatează una sau mai multe baze de date locale, în
limitele permisiunii acordate de softul de gestiune în reţea la dispoziţie.
Date C.J. [5] a identificat douăsprezece obiective pentru DDB:
• autonomia locală a site-urilor componente ale unui sistem distribuit (în cea
mai mare măsură); fiecare site component poate opera, de regulă, cu datele din
bazele de date locale (LDB) fără a depinde de alt site;
• absenţa unei dependenţe de un site central;
• funcţionarea continuă datorită fiabilităţii şi disponibilităţii crescute a
sistemelor distribuite la apariţia întreruperilor aleatoare;
• existenţa transparenţei (independenţa de localizare), adică pentru
utilizatorul final nu are importanţă unde sunt stocate fizic datele de care acesta are
nevoie;
• independenţa de fragmentarea datelor, ceea ce înseamnă că fragmentarea
datelor în DDB (prezentată în paragraful următor) nu afectează percepţia
utilizatorului final, din punct de vedere logic, de nefragmentare a datelor;
• independenţa de replicarea (reproducerea) datelor, adică replicarea
datelor nu afectează percepţia utilizatorului final care, logic, se comportă ca şi cum
datele nu ar fi fost replicate;
• procesarea distribuită a interogărilor;
202
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`);
Bucureşti Constanţa
CL_BU CL_CT
CL
CL# CORP# SUMA_C
N1 C1 1200000
N2 C2 800000
N3 C2 1050000
N4 C3 2450000
N5 C4 4200000
N6 C1 2500000
Fig.8.7. Exemplu de fragmentare a datelor
204
Bazele de date online reprezintă un tip special de baze de date distribuite care
este folosit într-un mediu de tipul Internet, Extranet sau Intranet. Din punctul de
vedere al utilizatorului final din organizaţia economică, este mai puţin important
unde este localizată baza de date (pe Intranet-ul organizaţional, pe Extranet sau pe
Internet), ci dacă îi satisface cerinţele imediate, sub aspect cantitativ şi calitativ, de
informare sau pentru asistarea deciziei.
Reţeaua Intranet este o reţea locală de calculatoare şi de comunicaţii pentru
organizaţii mari care asigură, prin tehnologia Web, cerinţele de informare şi
documentare ale angajaţilor săi, iar prin extensie, prin cont şi parolă de acces
(reţeaua Extranet), şi ale utilizatorilor externi agreaţi de organizaţie (clienţi,
furnizori, colaboratori externi etc.). Reţeaua Intranet poate să existe complet
separat de reţeaua Internet.
Arhitectura Intranet este prezentată, după BDASEIG [64], în fig.8.8.
Serverul Web, denumit şi server HTTP, este un server software care
foloseşte protocolul de transfer al hipertextelor, HTTP (HyperText Transfer
Protocol) pentru a furniza documente HTML şi scripturi asociate la cererea
utilizatorilor finali. Prin intermediul unor interfeţe standard de tipul API
(Application Programming Interface) sau CGI (Common Gateway Interface), se
212
GROUPWARE
MESAGERIE NEWS
PROGRAME SMTP/POP
API
INTERFEŢE (BROWSER TCP/IP
STANDARD
WEB)
FTP
DIRECTOARE JAVA
CLIENT
CU FIŞIERE MAIL
Aşa cum s-a arătat mai sus, bazele de date distribuite (DDB) sunt baze de
date implementate în reţeaua de calculatoare şi de comunicaţii prin intermediul
partiţiilor componente ce sunt dispuse în diferite noduri ale reţelei. Aceste baze de
date pot fi centrale sau locale. O entitate client poate executa, de regulă, două
tipuri de operaţii asupra unei baze de date distribuite: citire (situaţia în care nu se
efectuează modificări asupra bazei de date) şi scriere (adăugare de noi înregistrări,
ştergerea unor înregistrări în baza de date, modificarea conţinutului unor
înregistrări). Efectele operaţiei de scriere se obţin dacă entitatea client dispune de
permisiunea necesară acestui scop.
216
XML
Fig.8.10. Părţile componente ale arhitecturii generale
de acces la date distribuite ADO.NET
218
Bazele de date deductive sunt denumite şi baze de date inteligente sau baze de
date bazate pe logică şi sunt caracterizate de posibilitatea gestionării adaptive a
datelor în conformitate cu cerinţele utilizatorilor în luarea deciziilor economice.
Bazele de date deductive sunt baze mari de date supuse analizei şi interpretării.
Sistemul de gestiune aferent acestor baze de date deductive cuprinde instrumente de
realizare automată a raţionamentelor realizate prin programare logică. Programarea
logică reprezintă un tip de programare bazată pe raţionamente, în care programul este
compus din fapte şi reguli şi are ca rezultat concluzii. Unul dntre limbajele de
programare care asigură implementarea acestui tip de programare este limbajul
Prolog. Prin raţionament se înţelege un proces de deducţie (inferenţă) aplicat asupra
219
225
226
229
234
236