Documente Academic
Documente Profesional
Documente Cultură
Informatica de Gestiune Limbaje ZENOVIC GHERASIM
Informatica de Gestiune Limbaje ZENOVIC GHERASIM
ZENOVIC GHERASIM
PROGRAMARE
I BAZE DE DATE
CUPRINS
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
11
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
194
196
197
197
197
203
205
207
212
212
214
216
219
219
221
223
225
Bibliografie
227
231
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,
10
SOCIETATEA
CUNOATERII
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
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
Tabelul 1.1.
Definirea i caracteristicile unor structuri de date
Denumire
Tablou
(table)
Tablou ordonat
Coad (queue)
Stiv
(stack)
List nlnuit
(chain list)
Arbore binar
(binary tree)
Arbore bicolor
(bicolor tree)
Arbore 2-3-4
(2-3-4 tree)
Tabel de
dispersie
(hash table)
Movil (heap)
Graf (graph)
Definire
n programare, list de
elemente, implementat
sub forma unui vector de
nregistrri sau a unei liste
nlnuite. n bazele de date
relaionale, structur cu linii
i coloane.
Structur realizat dup
metoda primul sosit,
primul plecat, FIFO
(First-In, First-Out)
Structur realizat dup
metoda ultimul sosit,
primul plecat, LIFO
(Last-In, First-Out)
Structur de date sub form
de list n care fiecare
element al listei asigur
o adres pentru urmtorul
element consecutiv al listei.
Structur de date sub forma
unui arbore ordonat
de gradul doi.
Arbori binari la care fiecare
nod dispune de caracteristica
culoare roie sau neagr.
Arbori multici n care fiecare
nod poate prezenta cel mult
patru succesori (fii).
Structur de date fundamentat pe transformarea unui
domeniu de valori ale unei
anumite chei ntr-un domeniu
de indici dintr-un tablou.
Tip de arbore binar complet
implementat printr-un tablou.
Avantaje
Inserare i acces
rapid, cnd indexul
este cunoscut.
Cutare mai rapid
n comparaie
cu tablourile
neordonate.
Accesul la date se
execut n ordinea
introducerii acestor
date.
Accesul la date se
execut n ordinea
invers introducerii
acestor date.
Inserare
i tergere rapide
Dezavantaje
Cutare i
tergere greoaie,
dimensiune
fixat
Acces greoi
la celelalte
elemente.
Cutare greoaie.
Cutare, inserare i
tergere rapide
(arbore echilibrat).
Algoritmul de
tergere este
complicat.
Structuri de date
complexe.
Structura de date
cea mai rapid
(inserare rapid i
acces rapid pe
baza unei chei).
Inserare, tergere
i acces rapide la
elementul maxim
sau minim.
Modeleaz situaii
din universul real.
tergere
greoaie. Acces
lent atunci cnd
nu se cunoate
cheia.
Acces greoi
la celelalte
elemente.
Anumii algoritmi sunt greoi
i complicai.
21
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.
24
CITIRE
DATE DE
INTRARE
PRELUCRRI
SCRIERE
REZULTATE
PROGRAM
DATE
(STRUCTURI DE
DATE)
LIMBAJ DE
PROGRAMARE
ALGORITMI
Fig.2.2. Compunerea unui program pe calculator
28
BLOC
INTRODUCERE/EXTRAGERE
DATE (INTRARE/IEIRE)
BLOC ATRIBUIRE
BLOC PROCEDUR
BLOC
DESCHIDERE/
NCHIDERE FIIERE
BLOC DECIZIE
(SALT CONDIIONAT)
CONECTORI PE PAGIN
CONECTORI DE PAGIN
BAND MAGNETIC
DOCUMENT IMPRIMAT
i=1
i=n
i=2
SECVENA
1
SECVENA
2
...
SECVENA
n
34
Subprogram 2
Subprogram 1
Subprogram 1
Subprogram 1
Subprogram 2
Subprogram 2
o
o
o
o
o
o
o
o
o
ooo
Subprogram m
Subprogram n
PROGRAM 1
PROGRAM 2
Subprogram z
PROGRAM l
APLICAIE INFORMATIC
Fig.2.5. Noiunea de aplicaie informatic
Client
Nume
Prenume
Localitatea
Adresa
Strada
Nr
Bloc
Telefon
Scara
Etaj
Banca
Apart
35
36
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
Anul
lansrii
Standard
Edition
Professional
Edition
Enterprise
Edition
3.0
4.0
5.0
6.0
.NET
1991
1994
1996
1998
2002
DA
DA
DA
DA
DA
DA
DA
DA
DA
DA
DA
DA
DA
DA
44
Control
Creation
Edition
DA
-
Tabelul 3.1.
Instrumente
BackOffice
DA
DA
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.
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.
1
Fig.3.10. Crearea formularului pentru
aplicaia informatic cu factura de materiale
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
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
End Sub.
Formularului i se ataeaz un obiect. Visual Basic construiete automat un
cadru de lucru (framework) pentru fiecare dintre procedurile eveniment. Utilizatorul
care construiete aplicaia trebuie s scrie codul procedurilor eveniment la care
corespunde aplicaia.
3.4.2. Tipuri de date
Tipurile de date reprezint natura datelor n cadrul unui limbaj de programare. n limbajul Visual Basic, tipurile de date sunt predefinite (standard) sau
definite de utilizator. n tabelul 3.4 sunt prezentate tipurile de date predefinite cele
mai utilizate.
Tabelul 3.4.
Tipurile de date predefinite n Visual Basic
Tip romn
Tip englez
Octet
Byte
ntreg
ntreg lung
Integer
Long
(integer)
Boolean
Single
(floating)
Double
(floating)
Currency
Date
Object
String
#
@
$
Variant
Logic
Real simpl
precizie
Real dubl
precizie
Moned
Dat
Obiect
ir de
caractere
Nedefinit
Sufix
Memorie
ocupat
1
%
&
2
4
-32768+32767
2.147.483.648+2.147.483.647
2
4
True, False
-3,40 e38+3,40 e38
8
8
4
1 octet/
caracter
-
0255
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
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
Tabelul 3.5.
Clasele de preceden ale operatorilor n Visual Basic
Clasa
1.
2.
3.
4.
5.
6.
Operator
And, Or, Not
Mod
<,>,<=,>=,=,<>
+
^
\
*
/
() []
&, +
Operaia
Logic
Modulo
Comparare
Adunare
Scdere
Exponeniere (ridicare la putere)
mprire ntreag
nmulire
mprire
Stabilire prioritate calcul
Concatenare ir de caractere
Valoare returnat
Valoarea absolut a unui numr
Codul ASCII sau ANSI al unui caracter
Caracterul corespunztor unui cod ASCII sau ANSI
Cosinusul unui unghi
Data curent ca ir de caractere
Dat sau numr convertite la un ir de caractere
Selecteaz partea stng a unui ir de caractere
Numrul de caractere dintr-un ir de caractere (lungimea irului de caractere)
Selecteaz o parte din irul de caractere
Data i ora curent
Selecteaz partea de sfrit a unei ir de caractere
Generarea aleatoare a unui numr
Sinusul unui unghi
Rdcin ptrat dintr-un numr
Numr transformat ntr-un ir de caractere
Timpul curent dat ca ir de caractere
Numr de secunde rmase pn la miezul nopii (ora 0)
68
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
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
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
Vfftva = 0; Vfctva = 0;
TVA = 0.19; i=1;
i=i+1
Vfftva = 0; Vfctva = 0;
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.
DOMENIUL CONCEPTUAL
DOMENIUL
SEMANTIC
UNIVERS
**********
REAL
BAZA DE
DATE
COLECII
DE DATE
CARACTERISTICI
Percepie,
Reprezentare
SGBD
Baza
de date
SGBD
UTILIZATORI
SCHEMA BD
ADMINISTRATOR
UTILITARE
PROGRAMATOR
DE APLICAIE
NIVEL VIRTUAL
NIVEL FIZIC
SCHEMA
EXTERN 1
SCHEMA
EXTERN 2
SCHEMA
CONCEPTUAL
SCHEMA
FIZIC
SCHEMA
EXTERN n
Fig.4.3. Niveluri de organizare a datelor ntr-o baz de date
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
Format cmp
CONT LA BANC
ROXXAAAAXXXXXXXXXXXXXXXX
Exemplu
RO96RXBR0000000431267982
Fig.4.5. Formatul de cmp pentru CONT LA BANCA
86
R2
R3
R4
R5
R6
R7
R8
Coninutul regulii
SGBD gestioneaz datele la nivel de
relaie (exclusiv pe baza caracteristicilor
relaionale).
Toate datele din baza de date
relaional se reprezint explicit sub
forma unor valori ntr-un tabel (regula
reprezentrii logice a datelor).
Datele individuale dintr-un tabel sunt
accesate prin specificarea numelui
tabelului, a valorii cheii primare i a
coloanei (regula garantrii accesului
la date)
Valorile NULL (inexistena datelor)
sunt tipuri de date acceptate (regula
referitoare la valorile NULL).
Baza de date relaional reprezint
descrierea bazei de date n format
logic simplificat sub form de tabele
(regula metadatelor).
Modelul relaional permite implementarea mai multor limbaje (regula
de permisiune a limbajelor multiple).
Dac vederea curent reprezint un
tabel, toate vederile (view-urile) sunt
actualizabile
(regula
actualizrii
vederilor).
n operaiile de schimbare a coninutului bazelor de date, se lucreaz la
un moment dat pe toat relaia (regula
referitoare la actualizri, inserri i
tergeri n baza de date).
Structura logic a bazei de date se
prezint complet separat de structura
fizic a bazei de date (regula referitoare
la independena fizic a datelor).
Comentarii
Conceptul de baz este relaia.
Catalogul conine denumiri de tabele,
coloane,
domenii,
restricii
de
integritate etc.
Datele sunt accesibile prin numele
tabelului, a liniei i a coloanei.
R9
R10
R11
R12
Denumire_material
Tabl
Cornier
Cherestea
Cantitate
1200
400
850
Pret_unitar
180000
420000
210000
Rel1
OR
Rel2
Rel3
Uzual
Tablou
Linie
Coloan
Tip de dat
Fizic
Fiier
Inregistrare
Cmp
Tip de dat
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
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
98
5. SISTEMUL DE GESTIUNE
A BAZELOR DE DATE MICROSOFT ACCESS
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
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
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.
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
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
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
de materiale, iar un material (de un anumit tip, cu un anumit cod) nu poate fi livrat
dect de un singur furnizor. Deci, n procesul de modelare a bazei de date, relaia
care se stabilete ntre dou tabele trebuie evideniat n dublu sens, conform figurii
5.10.
n acelai mod se procedeaz i cu relaiile dintre celelalte tabele componente
ale bazei de date CONSTRUCT. n final, se obine schema relaional din fig.5.11.
Cod_f
Den_f
Adresa_f
Telefon_f
Banca_f
Cont_f
Pagina Web
1:1
1:m
Livreaz
Cod_Mat
Den_mat
Cod_f
Cod_dep
Nr_fact
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.
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
Tabelul 5.1
Operatorii de comparare n SGBD Microsoft Access
Operator
>
<
>=
<=
=
Like
Between
<>, not
Semnificaia
Mai mare dect
Mai mic dect
Mai mare sau egal cu
Exemplu
> 50
< P
>=[Maxim]
Rezultat
Valori peste 50
Toate valorile de la A la P
Cel puin la fel de mare cu
valoarea din cmpul Maxim
Mai mic sau egal cu
<=Date() 10 Cel puin cu 10 zile n urm
Coresponden(egalitate)
= Unix1
Exact cinci caractere
Comparare cu un nume Like
Dac Ciment apare n cadrul
generic
**Ciment**
cmpului
n cadrul gamei
Between
1 De la 1 la 8 inclusiv
And 8
Diferit de
Not Null
Eliminare nregistrare
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
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.
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
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
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.
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.
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
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
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
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
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.
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
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
Fig.5.36. Crearea unei pagini Web noi n SGBD Microsoft Access 2003
pe ecranul monitorului fereastra Macro (fig.5.37), sub forma unui tabel compus din
dou coloane i mai multe rnduri.
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
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
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
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
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
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
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
INTERSECT
Operatorul INTERSECT (intersecie) returneaz numai liniile comune gsite
n ambele interogri (selecii).
MINUS
MINUS (cea de DIFERENA) returneaz liniile din prima interogare
(selecie) care nu fac parte din a doua interogare (selecie).
6.3.6. Ali operatori, IN i BETWEEN
Cei doi operatori IN (n) i BETWEEN asigur folosirea unei forme scurte
pentru funcii diverse.
SQL>
SELECT *
FROM MATERIALE
WHERE Mat IN (Cherestea, Tabla);
(13)
SQL>
SELECT *
FROM MATERIALE
WHERE Pret_u BETWEEN 140000 AND 170000;
(14)
6.4. Funcii n SQL
Caracteristicile generale ale funciilor
Funciile din SQL permit executarea calculului sumei pe o coloan sau
conversia tuturor caracterelor unui ir n litere mari. Ele se clasific n:
Funcii pentru calculul totalurilor.
Funcii pentru data calendaristic i or.
Funcii aritmetice.
Funcii caracter.
Funcii de conversie.
Funcii diverse.
Aceste funcii dezvolt capacitatea de manipulare a informaiilor regsite pe
baza funciilor de baz ale SQL. Primele cinci funcii, COUNT, SUM, AVG, MAX
i MIN, sunt funcii pentru calculul totalurilor i sunt definite n standardul ANSI.
6.4.1. Funcii pentru calculul totalurilor
Aceste funcii se mai numesc funcii de grup. Ele returneaz o valoare bazat
pe valorile unei coloane.
Funcia COUNT returneaz numrul de linii care respect condiia din
clauza WHERE. SQL>
SELECT COUNT(*)
FROM MATERIALE
WHERE Pret_u < 140000;
(15)
Nr. nreg
4
6
7
Cod
21123
31221
41124
Mat
Tabla
Cot
Con
UM
kg
kg
kg
164
Cant
1221
1550
15500
Pret_u
120000
120000
130000
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
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
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
172
7. ELEMENTE FUNDAMENTALE
ALE SERVERELOR DE BAZE DE DATE
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
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
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
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
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
SQL * Plus
DEVELOPER
PL/SQL
DESIGNER
Java
EXPRESS
Administrator
Tools
Browsere
Editoare
Net
Products
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
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
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
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)
PROGRAM 1
FIIER 1
DESCRIERE DATE 1
PROGRAM 2
FIIER 2
DESCRIERE DATE 2
PROGRAM 3
FIIER 3
DESCRIERE DATE 3
Fig.8.1. Sistem de fiiere
PROGRAM DE
APLICAIE 1
BAZA
DE DATE
SISTEM DE
GESTIUNE
A BAZEI
DE DATE
(SGBD)
PROGRAM DE
APLICAIE 2
PROGRAM DE
APLICAIE 3
Fig.8.2. Gestiunea unei baze de date
198
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)
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
SITE 2
SITE 3
SITE 1
REEA DE
COMUNICAII
SITE 4
SITE 6
SITE 5
201
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
Constana
CL_BU
CL_CT
CL#
CORP#
SUMA_C
CL#
CORP#
SUMA_C
N1
N4
C1
C3
1200000
2450000
N2
N3
N5
N6
C2
C2
C4
C1
800000
1050000
4200000
2500000
CL
CL#
CORP#
SUMA_C
N1
N2
N3
N4
N5
N6
C1
C2
C2
C3
C4
C1
1200000
800000
1050000
2450000
4200000
2500000
pot executa pe server programe sau scripturi prin care sunt accesate bazele de date
online de diverse tipuri i organizate dup diverse modele de date. Se reamintete
c scriptul este un program compus dintr-un set de instruciuni cu privire la o
aplicaie sau la un program utilitar. n aplicaiile Web, scripturile sunt utilizate
pentru obinerea interactivitii i personalizrii paginilor Web.
n cadrul acestei reele Intranet, serviciile furnizate sunt de acces la bazele
de date (de unde se obin date sub form de informaii i cunotine), de
comunicaii i partajarea resurselor informatice, pentru accesarea i dezvoltarea
aplicaiilor, de administrare, securitate i transport etc. Aceste servicii sunt
mprite pe opt niveluri (Forrester Research,[64]). ntre acestea se regsesc o serie
de servicii informaionale specializate ca pagini Web, transfer de fiiere realizabil
prin intermediul protocolului FTP, (File Transfer Protocol), groupware, tiri
(News), circulaia documentelor, videoconferine i audioconferine, forumuri
electronice.
MESAGERIE
PROGRAME
GROUPWARE
NEWS
SMTP/POP
API
(BROWSER
INTERFEE
STANDARD
TCP/IP
WEB)
FTP
DIRECTOARE
CU FIIERE
JAVA
CLIENT
MAIL
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
Adaptor de
date (Data
Adapter)
Server de date
(SQL Server,
Oracle DB)
218
Caracteristica
de comparaie
Destinaia
principal
Structurarea
datelor
Modele utilizate
Bazele de date
operaionale
Gestiunea curent
a tranzaciilor
Pe procese
funcionale
Relaional,
normalizate
Bazele de date
multidimensionale
Component a sistemelor informatice
pentru asistarea deciziilor
Pe subiecte ale managementului
Date
Agregarea datelor
Actualizare
Grad de consolidare
Percepie
Numr utilizatori
Accesare
Mrime
Numr de
nregistrri
Actuale
Nu
Imediat
Foarte sczut
Tabele detaliate
Mare
Citire i scriere
Sute MB zeci GB
Mic
221
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
INTEROGARE
PREZENT
2. Aplicaii pentru
date simple cu cerine
de interogri ad-hoc
INTEROGARE
ABSENT
DATE SIMPLE
DATE COMPLEXE
226
BIBLIOGRAFIE
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
229
230
ANEX
ABREVIERI I NOIUNI UTILIZATE N LUCRARE
232
234
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
236