You are on page 1of 40

FACULTATEA DE ŞTIINŢE ECONOMICE,

JURIDICE
ŞI ADMINISTRATIVE

UNIVERSITATEA DIN PITEŞTI

Lector univ. dr. LOGICA BĂNICĂ


Piteşti, 2007
Cap. 1 Noţiuni introductive.....................................................................................4
1.1 Ce sunt bazele de date?.....................................................................................4
1.2 Securitatea datelor.............................................................................................6
1.3 Modelul relaţional al bazelor de date................................................................6
Cap. 2 Sistemul de gestiune a bazelor de date Microsoft Access.........................9
2.1 Componentele principale..................................................................................9
Fig. 1 Componente principale ale sistemului Access ..........................................10
2.2 Tabele (Tables)...............................................................................................10
Fig. 2 Modalităţi de creare a tabelelor ................................................................11
Fig. 3 Crearea tabelelor în modul Design View...................................................12
Fig. 4 Exemplu de utilizare a proprietăţilor unui câmp.....................................14
2.3 Relaţii între tabele (Relationships).................................................................15
Fig. 5 Stabilirea relaţiilor între tabele..................................................................16
2.4 Interogări (Queries).........................................................................................18
Fig. 6 Modalităţi de construire a interogărilor....................................................19
Fig. 7 Construirea interogării de selecţie.............................................................20
Fig. 8 Construirea interogării de tip Total...........................................................22
Fig. 9 Construirea interogării de tip Crosstab....................................................24
2.5 Formulare (Forms)..........................................................................................25
Fig. 10 Modalităţi de creare a formularelor .......................................................26
Fig. 11 Crearea formularelor cu Form Wizard...................................................27
Fig. 12 Deschiderea formularelor în modul Design View...................................28
2.6 Rapoarte (Reports)..........................................................................................30
Fig. 13 Stabilirea nivelurilor de grupare .............................................................31
Fig. 15 Deschiderea raportului în modul Design View.......................................33

2
2.7 Macrocomenzi................................................................................................33
2.8 Exemplu de proiectare a unei baze de date.....................................................35
2.9 Verificarea cunoştinţelor ................................................................................38
Bibliografie..............................................................................................................39

3
Cap. 1 Noţiuni introductive

1.1 Ce sunt bazele de date?


Datele sunt şiruri alfanumerice prin care se reprezintă fapte, obiecte, situaţii
rezultate din măsurare sau numărare. Ele sunt stocate pe un suport magnetic, de
unde vor fi utilizate direct sau prelucrate într-un anumit scop. Pentru a putea folosi
aceste date, ele trebuie organizate într-un anumit mod.
Volumul mare de date vehiculate, necesitatea stocării lor şi regăsirea rapidă a
anumitor informaţii sunt numai câteva dintre cauzele care au condus la apariţia
colecţiilor de date organizate, numite şi baze de date (databases).
Definiţie[Ipate]: Bazele de date sunt colecţii de date organizate care servesc unui
anumit scop.
Organizarea datelor se referă la stocarea, reprezentarea şi accesarea lor într-un mod
bine definit. Scopul pentru care sunt create bazele de date îl reprezintă domeniul de
interes al acestora, problemele pentru care trebuie să găsească o rezolvare. Astfel,
sunt baze de date care se axează pe domeniul economic, bancar, dar există şi baze
de date cu scopuri ştiinţifice, militare etc.
Datele pe care le conţin BD sunt în mod obişnuit de tip alfanumeric, dar pot fi şi
imagini, sunete, elemente multimedia.
În arhitectura bazelor de date se disting patru niveluri:
• Nivelul conceptual – este fundamental deoarece descrie sistemul ce
urmează a fi modelat. Cel mai clar mod de a descrie sistemul este
utilizarea unui limbaj natural, a unor diagrame şi a exemplelor. În
procesul de modelare se examinează informaţia în amănunt, la fiecare
moment de timp. La acest nivel se realizează schema conceptuală, care
reprezintă design-ul general al sistemului.
• Nivelul extern – se specifică structura bazei de date percepută de
utilizatori şi se face legătura între acest design şi schema conceptuală.
Dacă sunt mai multe grupuri de utilizatori şi metodele de operare sau
navigare diferă de la un grup la altul, se pot proiecta diferite interfeţe cu
utilizatorul.
• Nivelul logic – are rolul de a realiza transformarea schemei conceptuale
într-o schemă logică. În acest scop se alege un model logic de organizare
a datelor (ex: modelul relaţional, ierarhic, reţea) care are anumite structuri
de date şi operaţii. De exemplu pentru modelul relaţional datele se
stochează în tabele, constrângerile se exprimă cu ajutorul cheilor primare
şi străine.
• Nivelul fizic (intern) – este nivelul la care schema logică se realizează
fizic, cu ajutorul unui sistem de gestiune a bazelor de date (SGBD). Se
poate spune că se obţine schema internă din schema logică prin
intermediul unui SGBD. Structurile de date şi metodele de acces pentru
aceeaşi schemă logică pot fi diferite în cadrul aceluiaşi SGBD, ceea ce
înseamnă că poate fi implementată prin mai multe scheme interne.

4
Bazele de date oferă utilizatorilor o serie de avantaje, cum ar fi:
 reducerea redundanţei datelor prin proiectarea unitară a bazei şi evitarea
suprapunerii unor informaţii;
 păstrarea consistenţei datelor prin propagarea actualizărilor dintr-un fişier la
nivelul întregii baze de date;
 partajarea datelor între utilizatorii aceleiaşi aplicaţii, dar şi între aplicaţii
diferite;
 securitatea datelor prin verificarea accesului utilizatorilor pe bază de parolă şi
prin autorizarea operaţiilor de întreţinere de către administratorul bazei de date.

Din definiţie rezultă că bazele de date implică constituirea de colecţii de date


structurate, dar şi existenţa unui software de întreţinere şi de exploatare a acestor
structuri. În ceea ce priveşte organizarea, bazele de date au evoluat de la simple
structuri de date numerice şi de tip text la stocarea de imagini, sunete şi alte
elemente multimedia. Programele de întreţinere şi de exploatare a bazelor de date
au fost cuprinse într-un ansamblu numit Sistem de Gestiune a Bazelor de Date –
SGBD (Database Management System).
Definiţie: Sistemul de Gestiune a Bazelor de Date este un software care
gestionează o bază de date şi permite utilizatorului să interacţioneze cu aceasta.

Funcţiile unui SGBD sunt următoarele:


 definirea structurii bazei de date şi stocarea datelor;
 accesarea datelor în regim mono sau multi-user: interogare, modificare,
ştergere, adăugare;
 întreţinerea bazei de date: păstrarea consistenţei şi a integrităţii datelor,
compactarea şi reorganizarea bazei de date;
 securitatea bazei de date: salvarea şi recuperarea datelor în caz de incident,
protecţia la acces neautorizat.
Modul conceptual de organizare a datelor folosit de SGBD-uri este descris de
modelul de date, care poate fi: ierarhic, reţea, relaţional şi orientat obiect.
Modelul ierarhic stochează datele în structuri de tip arbore, care stabilesc legături
de tip părinte-copil. Nivelul de început al arborelui, numit rădăcină, poate avea
orice număr de descendenţi. La rândul lor, aceştia pot avea descendenţi şi aşa mai
departe. Modelul ierarhic a fost utilizat de către primele SGBD-uri, dar în prezent
este considerat un model depăşit.
Modelul reţea este extensie a modelului ierarhic, în care un descendent poate avea
mai mulţi părinţi. El poate reprezenta structuri complexe de date, dar nu are
flexibilitate şi este dificil de proiectat.
Modelul relaţional se bazează pe organizarea datelor sub formă de tabele,
constituite din înregistrări, formate la rândul lor din câmpuri. Tabelele sunt legate
între ele prin câmpuri speciale, numite chei. Bazele de date relaţionale sunt cel
mai frecvent folosite, datorită modului simplu de realizare şi a flexibilităţii lor.
Exemple de SGBDR: Oracle, Sybase, SQL Server, Access.

5
Modelul orientat pe obiecte este cel mai nou tip de SGBD, care integrează
principiile programării orientate pe obiecte şi ale bazelor de date. Introducerea
conceptului de obiect în cadrul SGBD-urilor a permis utilizarea tipurilor de date
neconvenţionale. Acest model constituie suportul logic pentru gestiunea obiectelor
complexe (texte, grafice, imagini, sunete) şi a obiectelor dinamice (programe,
simulări).

1.2 Securitatea datelor


La proiectarea unei baze de date, asigurarea securităţii este o cerinţă importantă
şi este dependentă de nivelurile de securitate ale SGBD-ului în care se lucrează:
1. protecţia prin identificator şi parolă pentru autentificarea utilizatorilor;
2. restricţionarea drepturilor anumitor grupuri de utilizatori şi acordarea de
privilegii altora;
3. în Oracle orice obiect al bazei de date este proprietatea unui utilizator şi
poate fi accesat numai de acei useri care au privilegiile corespunzătoare.
O sursă posibilă de erori în funcţionarea bazelor de date o constituie managementul
defectuos în gestionarea multiuser. Concurenţa se defineşte în acest caz prin
accesul simultan al mai multor utilizatori la acelaşi set de date, în aceeaşi perioadă
de timp. SGBD-ul are sarcina de a face vizibile modificările operate de unul dintre
utilizatori celorlalţi (consistenţa) şi de a împiedica modificările incorecte ale datelor
(integritatea bazei de date).
Pentru rezolvarea accesului concurent, SGBD-ul blochează unitatea de date
(locking). Se poate face blocajul la nivel de tabelă sau la nivel de rând
(înregistrare), eficienţa fiind mai bună cu cât unitatea de blocare este mai mică.

1.3 Modelul relaţional al bazelor de date


Se caracterizează prin reprezentarea datelor sub formă de structuri
bidimensionale, asemănătoare tabelelor.
Avantajele pe care le prezintă acest model sunt:
 asigură metode şi tehnici eficiente de verificare a coerenţei şi redundanţei
datelor;
 dispune de un suport teoretic puternic din punct de vedere matematic;
 asigură un grad înalt de independenţă în raport cu sistemele de calcul;
 oferă posibilitatea utilizării de limbaje procedurale bazate pe algebra
relaţională;
 defineşte modul de manipulare a datelor la nivel de relaţie (limbajul SQL).

Componentele de bază ale modelului relaţional sunt:


1. Structura relaţională a datelor: datele sunt organizate sub formă de tablouri
bidimensionale (tabele), denumite entităţi sau relaţii. Liniile tabelelor se

6
numesc înregistrări, iar coloanele constituie atributele. Asocierile dintre
tabele se fac prin atributele de legătură, denumite chei primare şi externe.
Numărul de atribute ale unei entităţi se numeşte aritatea entităţii.
O entitate trebuie să satisfacă mai multe condiţii:
 fiecare atribut trebuie să aibă un nume, unic în cadrul entităţii; este
posibil ca două atribute din două entităţi diferite să poarte acelaşi
nume;
 fiecare atribut poate avea doar valori atomice, care nu se pot
descompune din punct de vedere logic;
 fiecare înregistrare a entităţii este unică, unicitatea fiind obţinută cu
ajutorul cheilor primare. Când este necesar mai mult decât un
atribut pentru identificarea unică a unei înregistrări, avem o cheie
compusă.
 Nici unul dintre atributele care alcătuiesc cheia primară nu poate
avea valoarea Null. Null este o valoare convenţională care indică o
valoare necunoscută sau neaplicabilă.

2. Operatorii sistemului relaţional: se referă la setul de operaţii care se pot


efectua asupra entităţilor. În algebra relaţională introdusă de Codd există 8
operatori care acţionează asupra entităţilor şi crează tot o entitate. Aceşti
operatori sunt implementaţi în cadrul limbajului SQL (Structured Query
Language), cel mai frecvent folosit pentru interogarea bazelor de date
relaţionale. Sunt operatori ai algebrei relaţionale clasice (de exemplu: Union
– reuniunea, Intersect – intersecţia) şi operatori relaţionali speciali (de
exemplu: Select – selecţia, Join – compunerea).

3. restricţiile de integritate: reprezintă cerinţele impuse tabelelor, astfel încât


baza de date să fie corectă şi coerentă.
Restricţiile (constrângerile) de integritate sunt de două tipuri:
 Constrângeri structurale: exprimă proprietăţi fundamentale, care ţin de
definirea BD. Ele sunt realizate cu ajutorul cheii primare.
Cheia primară (Primary key-PK) este un atribut sau un grup de atribute care
asigură diferenţa între oricare două înregistrări dintr-un tabel. Nici unul dintre
atributele care alcătuiesc cheia primară nu poate avea valoarea Null pentru
nici una dintre înregistrările tabelei.
 Constrângeri de referenţialitate: se stabilesc între două tabele cu ajutorul
cheilor primare şi străine.
Se defineşte cheie străină (Foreign Key-FK) un atribut sau o mulţime de
atribute ale unei entităţi E2, care există şi într-o altă entitate E1 şi care
formează cheia primară a entităţii E1.

7
E1 E2
Câmp1 E1 - PK Câmp1 E2 – PK
Câmp2 E1 Câmp2 E2 - FK
......... ..........

Câmpul2 din entitatea E2 este cheie străină (FK), dacă există şi într-o altă entitate
E1, unde formează cheia primară. Câmpul2 din E2 face referinţă la cheia primară
din E1. Valorile pe care le ia cheia străină, dacă nu sunt Null, trebuie să se
regăsească printre valorile cheii primare la care face referinţă.

Exemple de sisteme de gestiune a bazelor de date relaţionale (SGBDR)


consacrate sunt: Oracle, SQL Server, Sybase, Microsoft Access, FoxPro, Paradox.

Proiectarea unei baze de date înseamnă transformarea cerinţelor utilizatorului


într-o structură care conţine tabele, interogări, rapoarte, module de program. Pentru
o proiectare eficientă, datele sunt separate în tabele în scopul minimizării spaţiului
de stocare şi al îmbunătăţirii performanţelor. Conectarea informaţiilor disparate se
face ulterior prin intermediul relaţiilor dintre tabele.
Etapele de proiectare a bazelor de date sunt:
1. Crearea schemei conceptuale – se descriu datele şi relaţiile independent de
orice model de date. Schema are un caracter general şi este o traducere a
cerinţelor beneficiarului într-un sistem de ansamblu.
2. Crearea schemei logice a bazei de date – se transformă schema conceptuală
în structuri specifice unui SGBD. Se definesc elementele de date specifice şi
se face gruparea lor în înregistrări. În cazul modelului relaţional, schema
logică va conţine dicţionarul de date, structurile tabelelor, definirea
legăturilor şi precizarea modurilor de manipulare a datelor necesare
sistemului.
3. Crearea design-ului fizic al bazei de date – schema logică se transformă
într-o bază de date coerentă şi se construiesc modulele de program pentru
exploatarea ei.

Deşi s-au înregistrat salturi spectaculoase în acest domeniu şi au apărut


nenumărate metode şi tehnici, rămânem la concluzia că proiectarea unei baze de
date nu înseamnă încadrarea într-un tipar (şablon) şi că performanţele ei depind
într-o mare măsură de inteligenţa şi imaginaţia proiectantului.

8
Cap. 2 Sistemul de gestiune a bazelor de date Microsoft Access

2.1 Componentele principale


Access este o componentă a pachetului de programe Microsoft Office, care
permite crearea şi gestionarea de baze de date de dimensiuni reduse, la care se pot
conecta maximum 31 de utilizatori simultan. Pentru baze de date mari (de ordinul
Gigabytes-ilor) se recomandă folosirea SGBD-urilor Oracle, SQL Server, Sybase.
Spre deosebire de alte sisteme, Access stochează toate componentele unei
baze de date într-un singur fişier, cu extensia *.mdb.
Componentele principale ale sistemului Access, numite şi obiecte (Objects) sunt
următoarele (fig. 1):

 Tabele (Tables) – structuri bidimensionale destinate păstrării datelor;


 Interogări (Queries) – instrumente de selectare şi de afişare a a datelor din
una sau mai multe tabele, pe bază de criterii; cu ajutorul acestora se pot
realiza şi funcţii de creare tabele, adăugare, modificare şi ştergere
înregistrări în tabele;
 Formulare (Forms) – ferestre destinate introducerii datelor, afişării şi
modificării lor; permit crearea interfeţei grafice cu utilizatorul şi afişarea pe
ecran a graficelor;
 Rapoarte (Reports) – situaţii obţinute pe bază de interogări sau tabele şi
care pot fi afişate pe ecran sau la imprimantă;
 Macro-comenzi (Macros) – secvenţe de acţiuni care se execută la iniţierea
unei singure comenzi a utilizatorului;
 Module (Modules) – subprograme scrise în Visual Basic Access (VBA),
care pot implementa răspunsuri la evenimente-utilizator, funcţii de
prelucrare şi validare a datelor, iniţializări ale bazei de date.
O caracteristică importantă a sistemului Access o constituie proiectarea
asistată de „vrăjitori” (Wizards), care oferă asistenţă programatorului la
crearea tabelelor, a interogărilor, a formularelor şi a rapoartelor. Aceste
instrumente au rolul de a pune la dispoziţia proiectanţilor opţiuni din care pot
selecta varianta optimă, de asemenea asigură asistenţă on-line (help) pentru
documentarea în timpul proiectării.
Prin stabilirea de relaţii între tabele se asigură coerenţa şi consistenţa bazei
de date, astfel încât ştergerile, adăugările, modificările la nivelul unei tabele să
nu conducă la disfuncţionalităţi ale sistemului. Totuşi ştergerile de date,
crearea şi distrugerea de tabele sunt operaţii care provoacă fragmentarea
spaţiului de disc rezervat fişierului .mdb. Acces-ul are integrată comanda

9
Tools->Database Utilities->Compact and Repair Database pentru compactarea
periodică a bazei de date şi păstrarea performanţelor ei.

Tabele

Interogări

Formulare

Rapoarte

Macro
comenzi

Module

Fig. 1 Componente principale ale sistemului Access


Crearea unei baze de date se poate face la deschiderea mediului, dacă se alege
opţiunea Blank Access Database, fie ulterior, când mediul este deschis şi se
activează opţiunea File->New Database.
După deschiderea unei bazei de date sunt accesibile componentele ei, grupate pe
tipuri de obiecte (Tables, Queries, Forms etc), aşa cum se observă în fig.1; aşezarea
obiectelor pe desktop este caracteristică versiunii Access 2000.
Vor fi prezentate în continuare modalităţi de creare şi exemple de utilizare a
obiectelor Access menţionate anterior.

2.2 Tabele (Tables)


Sunt structuri de stocare a datelor constituite din linii, numite înregistrări şi
din coloane numite atribute sau câmpuri, cărora li se atribuie un nume, un tip de
dată şi o dimensiune.
Crearea şi modificarea structurii tabelelor, ca şi încărcarea datelor în tabele se face
numai în cadrul opţiunii Objects->Tables.

10
Access oferă mai multe modalităţi de creare a unui tabel: Datasheet View, Design
View, Table Wizard, Import Table, Link Table (fig. 2)

Fig. 2 Modalităţi de creare a tabelelor

În modul Datasheet View se crează un tabel cu 20 de câmpuri, având denumirea


Field1,..Field 20 şi 30 de înregistrări libere, pregătite pentru completare.
În modul Table Wizard, Acces propune două categorii de tabele: Business şi
Personal şi în cadrul lor mai multe tipuri de tabele, cu câmpuri predefinite, din care
proiectantul să poată alege.
Prin Import Table se pot prelua tabele din alte baze de date Access, FoxPro,
Paradox sau se pot construi tabele şi prelua date din fişiere text, HTML sau Excel.
În modul Link Table nu mai este necesară copierea tabelei în propria bază de date,
ci se stabileşte o legătură cu aceasta, astfel încât se pot citi şi modifica datele (dacă
există un acces autorizat).
Modalitatea cea mai frecvent folosită pentru crearea tabelelor este Design View
(fig. 3) şi ea va fi descrisă în continuare pas cu pas:
1. Tables->New->Design View;
2. Apar două fereastre pe Desktop: fereastra de proiectare a tabelei (Table
Design), unde se stabilesc câmpurile prin numele (Field Name) şi tipul lor
(Data Type) şi fereastra de proprietăţi ale câmpurilor (Field Properties);
3. Se tastează numele câmpului şi se alege unul dintre tipurile de date propuse
de Access:
• Text – şir de caractere;
• Number – câmp de tip numeric;

11
• Date/Time – câmp de tip dată sau timp;
• Autoincrement – număr cu incrementare automată;
• Yes/No – câmp boolean cu două valori;
• Lookup Wizard – câmp care preia datele din alt tabel sau dintr-o listă de
valori.
4. În funcţie de tipul de dată selectat, fereastra Field Properties va conţine alte
informaţii în rubrica Field Size, pe care utilizatorul le poate modifica:
• Text: setat pe valoarea implicită 50, dar se pot reprezenta şiruri de
maximum 255 de caractere;
• Number: se pot defini câmpuri de tip Byte (28 – val maximă 255),
Integer (216 – valoare maximă + 32768), Long Integer este tipul implicit
şi are valoari pe 32 biţi (de la –2.147.483.648 la 2.147.483.647 fără
fracţii), Single – numere fracţionare pe 32 biţi cu precizie de 7 cifre ( de
la –3.402823E38 la –1.401298E–45) pentru valori negative şi de la
1.401298E–45 la 3.402823E38 pentru valori pozitive.
Butonul care activează
Butonul Save cheia primară

Câmpuri de
date – PK

Tipuri de
date

Fereastra
Field
Properties

12

Fig. 3 Crearea tabelelor în modul Design View


Valorile numerice Double – numere fracţionare pe 8 bytes cu 15 cifre precizie.

5. Se pot completa şi alte rubrici ale ferestrei Field Properties, cum ar fi:
• Format: personalizează formatul de apariţie (modul de afişare) a
valorilor în câmpul respectiv şi depinde de tipul de dată precizat în Data
Type:
- Date/Time - permite alegerea unui format al datei sau orei dintre cele
propuse: General Date, Long Date, Short Date Long Time, Short Time
- Text poate conţine unul dintre caracterele speciale:
@ - un caracter sau un spaţiu trebuie tastat în câmpul respectiv;
& - nu este necesară tastarea unui caracter în câmpul respectiv;
< - forţează toate caracterele tastate la litere mici;
>- forţează toate caracterele tastate la litere mari
- Number specifică formate predefinite (Currency, Euro, Fixed,
Standard, Percent, Scientific) sau proprii utilizatorului (informaţii
despre modul de afişare a valorilor pozitive, negative, zero şi a
numerelor fără valoare - Null);
• Input Mask: proprietate care ajută utilizatorul la introducerea datelor
în câmpul respectiv:
- 0 impune introducerea pe poziţia respectivă a unei cifre, fără semn;
- 9 impune acceptarea unei cifre sau unui spaţiu, fără semn;
- # indică acceptarea unei cifre sau unui spaţiu, cu semn;
- L solicită introducerea unei litere, obligatoriu;
- ? indică introducerea unei litere, opţional;
- A impune introducerea unei litere sau unei cifre, obligatoriu;
- a impune introducerea unei litere sau cifre, opţional.
• Caption: stabileşte titlul câmpului în modul de introducere date;
• Default Value: reprezintă valoarea iniţială (constantă, expresie sau
funcţie) care apare în câmp la adăugarea unei noi înregistrări şi care
poate fi modificată ulterior;
• Validation Rule: se stabileşte o regulă de validare, la nivel de
înregistrare, a valorii introduse în acest câmp, prin funcţii sau expresii
Access;
• Validation Text: se tastează un mesaj, care apare ca eroare în timpul
introducerii datelor, dacă regula de validare nu este respectată;
• Indexed: se precizează dacă un câmp, altul decât cheia primară, este
index în tabelă şi dacă se acceptă duplicarea valorilor lui; opţiunile
posibile: No, Yes (Duplicate OK) şi Yes (No Duplicate);
6. Se stabileşte cheia primară formată din unul sau mai multe câmpuri;
7. Se salvează structura tabelei cu opţiunea File->Save sau cu ajutorul
butonului Save şi se precizează numele tabelei.

13
Exemplu de folosire a proprietăţilor unui câmp: Câmpul Categ din tabela de
mai jos este de tip Text, are lungimea maximă de 9 caractere şi are setate
următoarele proprietăţi:
• Format: “>” însemnând că toate caracterele care ce se tastează sunt
transformate în litere mari;
• Input Mask: LLL – pe primele trei poziţii se plasează obligatoriu litere
??? - pe următoarele trei poziţii se plasează opţional litere
aaa - pe următoarele trei poziţii se plasează opţional litere sau
spaţii
• Validation Rule: primele litere să nu fie “ABC”
• Validation Text: dacă s-a tastat combinaţia de litere “ABC” apare mesajul
de eroare “Ati tastat propria firma!”
• Indexed: No, deci câmpul nu constituie index suplimentar.

Fig. 4 Exemplu de utilizare a proprietăţilor unui câmp

14
2.3 Relaţii între tabele (Relationships)
Relaţiile se formează prin stabilirea unei legături între un câmp (o
combinaţie de câmpuri) dintr-un tabel şi câmpurile corespunzătoare din alt tabel.
Legăturile între tabele sunt de trei tipuri:
1. relaţia unu la mai mulţi (one-to-many) – este cea mai frecvent utilizată şi se
realizează între cheia primară a tabelei T1 şi un câmp similar, ca tip şi ca
dimensiune din T2, numit şi cheie străină. Semnificaţia legăturii este că
oricărei valori a câmpului cheie străina-C21 trebuie să-i corespundă o
valoare a câmpului cheie cheie-C1. În timp ce în tabela T1 valoarea este
unică, în tabela T2 ea se poate repeta de un număr infinit de ori.
Tabela T1 1
∞ Tabela T2
C1 – Primary Key C2 – Primary Key
................ C21 – Foreign Key
................ ..........

2. relaţia mai mulţi la mai mulţi (many-to-many) – se aplică la cazurile în care


valorii unui câmp din prima tabelă îi corespund mai multe valori în a doua
tabelă şi invers, unei valori a unui câmp din a doua tabelă îi corespund mai
multe valori din prima tabelă. Exemplul clasic al relaţiei este între tabela
Studenţi şi Cursuri: un student este înscris la mai multe cursuri, un curs este
ţinut pentru mai mulţi studenţi.
Rezolvarea problemei se face prin spargerea relaţiei many-to-many în două
relaţii one-to-many, cu ajutorul unei tabele de joncţiune (legătură) – T3.
Cheile primare din T1 şi T2 vor constitui (vor face parte) cheia primară
compusă a tabelei T3.

Tabela T1 1
Tabela T2
C1 – Primary Key 1 C2 – Primary Key
................

Tabela T3
∞ C31 Primary Key ∞
∞ C32 Primary Key ∞

15
3. Relaţia unu-la-unu (one-to-one)- are loc între două tabele care au aceeaşi
cheie primară. Se defineşte prin intermediul ei o tabelă compusă din cele
două tabele iniţiale. Relaţia este utilă în cazul structurilor mari, care au
nevoie de mai mult de 255 de câmpuri (limita Access-ului pentru un singur
tabel) sau pentru creşterea vitezei de căutare a datelor, dacă nu toate
înregistrările din primul tabel au corespondent în al doilea tabel.

Crearea unei relaţii se face astfel (fig.5):


a) Din meniul Tools->opţiunea Relationships sau activând butonul
Relationships se deschide fereastra Relationships;
b) Se adaugă tabelele relaţionate din fereastra Show Tables;
c) Se selectează câmpul PK din tabela principală şi se „trage” cu ajutorul
mouse-ului până la câmpul corespunzător din tabela asociată;
d) Se deschide fereastra de stabilire a detaliilor relaţiei (Edit Relationships):
câmpurile corespunzătoare din tabele, butonul Join Type - tipul de legătură
stabilit şi trei casete de validare:
• Enforce Referential Integrity – impune integritatea referenţială
• Cascade Update Related Fields – actualizarea în cascadă a câmpurilor
implicate în relaţie;
• Cascade Delete Related Records – ştergerea în cascadă a câmpurilor
implicate în relaţie;
e) Se închide fereastra Relationships şi se salvează legăturile create.

Fig. 5 Stabilirea relaţiilor între tabele

16
Verificarea integrităţii referenţiale este realizată de sistemul Access la solicitarea
proiectantului BD şi constă în:
 Verificarea câmpurilor incluse în relaţie: să fie de acelaşi tip şi să aibă
aceeaşi dimensiune;
 Introducerea unei valori în câmpul cheie străină din tabela secundară se
face numai dacă această valoare se regăseşte în câmpul cheie primară din
tabela principală;
 Nu se admit ştergeri sau actualizări ale unei valori a cheii primare atâta
timp căt există înregistrări corespunzătoare în tabela secundară;
 Pentru realizarea ştergerilor şi actualizărilor în cascadă s-au prevăzut cele
două casete de validare Cascade Update şi Cascade Delete.
Ştergerea în cascadă înseamnă că o solicitare de ştergere a unei
înregistrări din tabela primară va determina ştergerea înregistrărilor
corespunzătoare din tabelul asociat.
Similar se produce şi actualizarea în cascadă: modificarea valorii
câmpului cheie primară din tabela principală determină modificarea
tuturor înregistrărilor corespunzătoare din tabela asociată.

Relaţiile dintre tabele conferă consistenţa şi coerenţa bazei de date, de aceea în


cadrul proiectării bazei de date stabilirea corectă a legăturilor dintre tabele este
foarte importantă.
Asocieri – în cursul definirii unei relaţii Access pune la dispoziţie un buton pentru
definirea tipului de asociere prestabilit. Asocierea defineşte modul în care
înregistrările din tabelele corelate vor fi combinate într-o interogare:
 Asocieri interne (inner join) – tipul de asociere implicit; o interogare cu asociere
internă va afişa numai acele înregistrări care corespund ambelor tabele.
 Asocieri externe (outer join) – precizează că o interogare va selecta toate
înregistrările dintr-o tabelă şi numai pe cele care corespund din celălalt tabel.
Sunt de 2 tipuri, în funcţie de tabela din care se preiau toate înregistrările:
o Asociere stânga (left join)
o Asociere dreapta (right join).
Asocierile externe nu se folosesc prea des deoarece sunt mai puţin flexibile, mai

ales când sunt implicate mai multe tabele.


 Asociere intrinsecă (self join) – este o relaţie care asociază unui câmp dintr-un
tabel un câmp din acelaşi tabel. Se crează prin duplicarea tabelei şi stabilirea

17
legăturii între câmpuri. Este o asociere foarte performantă deoarece permite
căutări recursive. De exemplu: o tabelă care conţine date despre părinţi şi copii.

2.4 Interogări (Queries)


Interogările sunt componente Access de extragere şi de afişare a a datelor din
una sau mai multe tabele/interogări, pe bază de criterii. Un alt scop pentru care se
folosesc interogările îl constituie modificarea structurii şi conţinutului bazei de date
(funcţii de creare tabele, adăugare, modificare şi ştergere înregistrări în tabele).
Prima categorie formează interogările de selecţie, cea de-a doua formează
interogările de acţiune.
O interogare se transformă într-o instrucţiune a limbajului SQL (Structured
Query Language), recunoscut de toate bazele de date relaţionale.
În acest paragraf ne vom referi numai la interogările de selecţie, care la rândul lor
pot fi: interogări simple, interogări total şi interogări tabel încrucişat.
Funcţiile unei interogări de selecţie:
 Preluarea câmpurilor din mai multe tabele relaţionate;
 Selectarea înregistrărilor care îndeplinesc anumite criterii;
 Sortarea înregistrărilor după unul sau mai multe câmpuri, ascendent sau
descendent;
 Introducerea de câmpuri noi, de tip valoare, rezultate ca urmare a unor calcule.
Sunt mai multe modalităţi de a construi o interogare (fig. 6), dintre acestea vom
alege modul Design View.

18
Fig. 6 Modalităţi de construire a interogărilor
Etapele de realizare a unei interogări sunt următoarele (fig. 7):
1. Objects Queries->New->Design View;
2. Se deschide fereastra Query Design şi fereastra Show Tables/Queries;
3. Se adaugă câmpurile din tabele în grila de ieşire (prin tragere cu mouse-ul,
dublu click pe câmp, selectare în rubrica Field);
4. Se definesc câmpurile şi ordinea de sortare (rândul Sort - Ascending sau
Descending);
5. Se indică afişarea sau nu a fiecărui câmp (rândul Show- caseta de validare);
6. Se stabilesc criteriile de selecţie (rândul Criteria);
7. Se adaugă câmpurile noi, calculate;
8. Se execută interogarea activând butonul Run sau opţiunea Query->Run.
9. Se salvează interogarea, activând butonul Save sau opţiunea File->Save, dacă se
consideră că răspunde cerinţelor de proiectare.
Tipuri de
interogări Buton de
execuţie

19
Fereastra
Query
Design
Ordinea
de sortare

Câmp
Stabilirea calculat
criteriilor

Fig. 7 Construirea interogării de selecţie


Pentru definirea criteriilor de selecţie multiple există două variante:
 introducerea lor în câmpurile respective pe aceeaşi linie (Criteria), ceea ce
implică selectarea înregistrărilor care îndeplinesc toate criteriile menţionate;
 introducerea lor în câmpurile respective pe linii diferite (linia Criteria şi
liniile or), ceea ce implică selectarea înregistrărilor care îndeplinesc unul
dintre criteriile menţionate.
Condiţiile de selecţie sunt specificate cu ajutorul unor operatori de comparare,
cum ar fi: <, >, =, <>, Like (comparare cu un nume generic scris cu caractere de
inlocuire), Between (valoare incadrata intr-un interval dat).
Câteva exemple de criterii de selecţie:
1. < Date()-30 ‘în câmpul respectiv data să fie cu 30 zile în urmă
2. Like „Pop*” ‘se acceptă numele care încep cu Pop: Popa,
Popescu
3. Between 1 and 100 ‘numere cuprinse între 1 şi 100

În criteriile de selecţie se folosesc constante sau parametri, a căror valoare se


precizează de către utilizator în timpul execuţiei. De exemplu, se poate înlocui
criteriul din imagine prin secvenţa:
Between [param1] and [param2]

20
În cadrul interogărilor există posibilitatea adăugării de câmpuri calculate, aşa
cum este câmpul total de plata din fig.7. Pentru aceasta, într-o coloană liberă se
tastează numele câmpului (diferit de cele existente în tabele), urmat de semnul „:”
şi formula de calcul prin care se obţine. În imaginea de mai sus, câmpul calculat
este rezultatul adunării câmpurilor [rata] şi [dob].
Pentru obţinerea de câmpuri calculate de tip numeric se pot folosi operatori
aritmetici, iar pentru câmpurile de tip text se pot folosi operatori de lucru cu şiruri
de caractere. De exemplu, cu ajutorul operatorului de concatenare (&) se compun
câmpurile Nume şi Prenume pentru a rezulta un nou câmp, Student:
Student: [Nume]&” „&[Prenume]

Interogări de tip total (Totals) – realizează gruparea înregistrărilor, după


anumite câmpuri şi aplică funcţii de însumare, contorizare, medie aritmetică etc
asupra valorilor unui câmp din gruparea respectivă.
Pentru a crea o interogare de acest tip se procedează astfel (fig. 8):
1. Se realizează o interogare de selecţie simplă în care sunt specificate câmpurile
pe care se face gruparea şi câmpurile asupra cărora se aplică funcţiile;
2. Se activează butonul Totals ceea ce determină apariţia în grila Query a rândului
Total;
3. În coloana câmpului totalizat se alege funcţia agregat care se va aplica:
 Count – numărarea înregistrărilor din grupare
 Sum - calcularea totalului valorilor din grupare
 Avg - calcularea mediei aritmetice a valorilor din grupare
 StDev - calcularea deviaţiei standard a valorilor din grupare
 Min sau Max – identificarea valorii minime sau maxime
 First sai Last – selectarea primei sau ultimei valori din grupare, conform
ordinii de sortare
 Expression – crearea unei expresii calculate în câmpul respectiv;
 Where – indică utilizarea câmpului numai pentru criterii de selecţie (nu
este afişat la execuţia interogării)
Observaţie: În cazul opţiunii Count şi Avg înregistrările care conţin valoarea Null
nu sunt luate în consideraţie.
În exemplul din fig. 8 se face totalul valorilor ratei (câmpul rata) şi dobânzii
(câmpul dob) pentru fiecare număr de contract (câmpul nrc). Se observă că nu a
mai fost selectat câmpul luna, deoarece el ar fi schimbat conţinutul interogării, în
sensul că s-ar fi făcut un total pe contract şi pe lună al ratelor şi dobânzilor.
La execuţia interogării, câmpul rata ar avea titlul SumOfrata, iar câmpul dob ar
avea titlul SumOfdob. Pentru a schimba aceste titlurile implicite, am adăugat în
linia Field, în faţa denumirii câmpurilor, noua lor denumire, Total rate şi Total
dobanzi, urmată de semnul “:”.
Facem precizarea că este logic ca un câmp să apară de două ori în
interogarea de tip Total dacă el constituie, în acelaşi timp şi criteriu de grupare şi
câmp căruia i se aplică o funcţie agregat.

21
Butonul
Totals

Modificarea
titlului câmpului,
la execuţie

Rândul
Total

Funcţiile
Fig. 8 Construirea interogării de tip Total agregat

Interogări de tip tabel încrucişat (Crosstab) – reprezintă o variantă a


interogărilor de tip Totals în care valorile unuia dintre câmpurile Group By se
transformă în titluri ale coloanelor, în timpul execuţiei interogărilor. Ele grupează
datele în două moduri şi afişează o valoare în punctul de intersecţie.
Sunt definite trei tipuri de câmpuri:
 Unul sau mai multe câmpuri care să furnizeze titlurile de rând (Row
Heading) la afişarea datelor;
 Un singur câmp, obligatoriu, care să furnizeze titlurile de coloană
(Column Heading) la execuţia interogării; câmpul respectiv trebuie să
conţină un număr limitat de valori, pentru ca interogarea să aibă sens;
 Un singur câmp, obligatoriu, care să furnizeze valorile de afişat (Value) la
intersecţia dintre linia şi coloana respectivă; valorile sunt obţinute prin
aplicarea unei funcţii agregat (Sum, Count, Avg) câmpului respectiv.

22
Access oferă posibilitatea creerii interogărilor de tip tabel încrucişat printr-un
program Wizard, Crosstab Query Wizard sau în modul Design View, opţiunea
Query - Crosstab. Vom aborda în lucrare cea de a doua modalitate de lucru.
Pentru a crea o interogare de tip Crosstab în modul Design View se procedează
astfel (fig. 9):
1. Se realizează o interogare de selecţie simplă în care sunt specificate câmpurile
pe care se face gruparea şi câmpurile asupra cărora se aplică funcţiile;
2. Opţional, se activează butonul Totals pentru a selecta câmpul şi funcţia agregat
corespunzătoare;
3. Se activează interogarea de tip tabel încrucişat fie din butonul Query Type, fie
din meniul Query, opţiunea Crosstab Query; apare linia Crosstab în grila
interogării;
4. Se stabilesc câmpurile Row Heading (pot fi mai multe), Column Heading
(obligatoriu unul) şi Value (obligatoriu unul şi anume cel căruia i s-a ataşat
funcţia agregat);
5. Se execută interogarea (butonul Run) şi se salvează (butonul Save).

La sfârşitul capitolului va fi prezentat un exemplu de bază de date, care va


conţine şi interogări de selecţie simple, de tip Total şi Crosstab.

Butonul
Query Type

Rândul
Crosstab

Selectare
opţiuni
Crosstab
23
Fig. 9 Construirea interogării de tip Crosstab

Interogări de acţiune - au ca efect modificarea structurii sau a datelor din baza de


date. Sunt 4 tipuri de interogări de acţiune:
1. Make Table – crează o tabelă nouă pornind de la alte tabele existente;
2. Append – adaugă înregistrări, obţinute prin preluarea valorilor din alte tabele,
într-o tabelă existentă;
3. Update – actualizează (modifică) valoarea din câmpurile specificate;
4. Delete – şterge înregistrări selectate dintr-o tabelă.
Execuţia interogărilor de acţiune este precedată de un mesaj de avertisment, dacă
opţiunea SetWarnings nu a fost dezactivată:
“Are you sure you want to run this action query?”
Este indicat să se vizualizeze înregistrările selectate de interogarea de acţiune, prin
deschiderea interogării în modul Design, trecerea în modul de afişare Datasheet şi
execuţia cu Run.
Access nu permite anularea efectului interogărilor de acţiune. Modificările aduse
bazei de date sunt permanente şi ireversibile. De aceea este bine să existe o copie
de siguranţă a bazei de date care să permită revenirea la starea anterioară.
1. Make Table – extrage datele din mai multe tabele relaţionate şi crează o
tabelă nouă în baza de date curentă sau într-o altă bază de date. De câte ori se
execută, se şterge tabela anterioară şi se rescrie. Se crează astfel:
• se construieşte o interogare de selecţie în care se adaugă câmpurile din
tabelele sursă;
• din meniul Query sau activând butonul Query Type se alege opţiunea
Make Table;
• apare o casetă de dialog în care se precizează numele noii tabele create.
Se utilizează în special pentru crearea tabelelor temporare, care se şterg frecvent.
Crearea şi eliminarea frecventă a tabelelor temporare conduce la mărirea
dimensiunii spaţiului alocat bazei de date. De aceea se recomandă compactarea
periodică a bazei de date sau crearea tabelelor temporare într-o altă bază de date.
2. Append – adaugă înregistrări din mai multe tabele relaţionate într-o tabelă
existentă. Etapele de creare sunt:
• se construieşte o interogare de selecţie în care se adaugă câmpurile din
tabelele sursă;
• din meniul Query sau activând butonul Query Type se alege opţiunea
Append;
• în caseta de dialog se precizează numele tabelei destinaţie;

24
• apare linia Append To unde se completează automat câmpurile destinaţie
care au numele identic cu al câmpurilor sursă sau se completează de către
proiectant, dacă numele nu coincid.
Se recomandă precizarea unor chei primare în tabela destinaţie, care să nu permită
dublarea înregistrărilor.
O utilizare frecventă a interogărilor de tip Append este la arhivarea datelor.
3. Update – selectează anumite înregistrări dintr-o tabelă pe bază de criterii şi
actualizează valoarea unui câmp. Se crează ca orice interogare de selecţie, devenind
efectiv o interogare de tip Update la activarea opţiunii Update din meniul Query:
• se construieşte o interogare de selecţie în care se adaugă câmpul de
actualizat şi câmpul care furnizează criteriul de selecţie;
• din meniul Query sau activând butonul Query Type se alege opţiunea
Update;
• apare linia Update To unde se completează noile valori.
Dacă se face actualizarea unui câmp care este cheie primară într-o tabelă şi relaţia
între tabele prevede actualizări în cascadă (Cascading Updates) se preiau aceste
modificări şi în tabelele unde câmpul respectiv este cheie străină.
Pentru a avea siguranţa că sunt selectate corect înregistrările se execută interogarea
iniţial în modul Datasheet View.
3. Delete – permite ştergerea dintr-o tabelă a înregistrărilor care îndeplinesc o
anumită condiţie. Crearea unei interogări Delete:
• se pleacă de la o interogare de selecţie în care se adaugă tabela şi se
selectează câmpurile care furnizează criteriile de selecţie ale
înregistrărilor;
• din meniul Query sau activând butonul Query Type se alege opţiunea
Delete;
• apare linia Where unde se completează criteriile.
Pentru selectaţia corectă a înregistrărilor care se vor şterge se execută interogarea
iniţial în modul Datasheet View.
Dacă tabela în care se şterg înregistrări este implicată în relaţii de tip one-to-many
cu alte tabele şi a fost prevăzută opţiunea de ştergere în cascadă (Cascading
Deletes) atunci se vor şterge şi înregistrările din tabelele relaţionate.

2.5 Formulare (Forms)


Formularele sunt ferestre destinate introducerii datelor, afişării şi modificării
lor. De asemenea, ele permit crearea interfeţei grafice cu utilizatorul şi a graficelor
realizate pe bază de interogări sau tabele.
Formularele permit introducerea datelor în mai multe tabele asociate, pot conţine
butoane de comandă şi câmpuri calculate, ceea ce nu este posibil la încărcarea
directă a datelor în tabele. Crearea şi modificarea formularelor se face în cadrul

25
opţiunii Objects->Forms. Access oferă mai multe modalităţi de a crea un formular:
Design View, Form Wizard, Autoform, Chart Wizard (fig.10
În modul Design View – se proiectează formularul element cu element, folosind
instrumentele Access din ToolBox.
În modul Form Wizard se lucrează sub asistenţa „vrăjitorului”, care propune
variante din care proiectantul să poată alege.
Modalităţile Autoform (Columnar Tabular, Datasheet) sunt tot de tip Wizard şi ele
realizează într-o manieră foarte simplă o aşezare specială a câmpurilor în fereastră,
pentru fiecare dintre cele trei tipuri.
Prin Chart Wizard se pot construi grafice pe baza informaţiile din interogări sau
tabele de date şi sub asistenţa „vrăjitorului”. Graficele obţinute pe formular nu se
pot lista la imprimantă.
În modul Pivot Table Wizard se crează formulare pentru afişarea datelor din Excel.

Fig. 10 Modalităţi de creare a formularelor

Modalitatea cea mai frecvent folosită pentru crearea formularelor este Form
Wizard (fig. 11) şi ea va fi descrisă în continuare pas cu pas:

1. Forms->New->Form Wizard;
2. Selectarea tabelei (sau a interogării) pe baza căreia care se construieşte
formularul;

26
3. Selectarea câmpurilor cuprinse în formular;
4. Alegerea tipului de aşezare (layout) a câmpurilor de date pe formular:
Columnar, Tabular, Datasheet sau Justified;
5. Alegerea unui fundal pentru fereastra formularului: Blends, Standard,
International, Stone etc
6. Stabilirea titlului şi salvarea formularului.

Pentru modificarea formularului astfel obţinut în sensul adăugarii/ştergerii de


câmpuri sau al adăugării de controale (butoane de comandă, cutii de tip text,
butoane de tip opţiune, casete de validare etc) se deschide formularul în modul
Design View (fig. 12) şi se folosesc instrumentele din ToolBox.

Câmpurile
selectate să apară
pe formular

Alegerea
tabelei sau
interogării

27

Fig. 11 Crearea formularelor cu Form Wizard


Cutia de
instrumente
(ToolBox)

Formular
obţinut cu
Form Wizard

Fig. 12 Deschiderea formularelor în modul Design View


Atât formularul, cât şi controalele plasate pe suprafaţa lui au ataşate o serie de
proprietăţi, care se pot modifica. De asemenea, lor li se pot ataşa proceduri scrise
în Visual Basic, care să răspundă la anumite evenimente declanşate de utilizatori în
timpul execuţiei (activarea unui buton, apăsarea unei taste, redimensionarea
ferestrei, focalizarea). Dintre proprietăţi importante sunt şi cele care permit sau
inhibă introducerea de noi înregistrări, editarea sau ştergerea celor existente.

Proprietăţile formularului – se ajunge la fereastra Properties a oricărui obiect


în mai multe moduri: din meniul View-opţiunea Properties sau activând butonul de
pe bara de instrumente sau dublu-click pe obiect.
Pentru formular cele mai importante proprietăţi sunt conţinute în grupul Data:
• RecordSource: precizează numele tabelei sau al interogării pe care este construit
formularul;
• AllowEdits – Yes, valoare implicită care permite editarea înregistrărilor;
• AllowDeletions – Yes, valoare implicită care permite ştergerea înregistrărilor;
• AllowAdditions – Yes, adăugarea de noi înregistrări;
• DataEntry – dacă este setat pe Yes formularul poate fi folosit numai pentru
introducerea de noi înregistrări (nu are efect dacă AllowAdditions este No);
Proprietăţile din grupul Format controlează aspectul formularului:
• Caption – titlul formularului;
• ScrollBars – bare de derulare pe verticală şi/sau orizontală;

28
• Picture, Picture Type, Picture Size Mode – plasarea unei imagini pe fundal,
includerea ei în aplicaţie, adaptarea imaginii la dimensiunile formularului.

Adăugarea unui buton de comandă – se face cu ajutorul casetei de instrumente


ToolBox. Se procedează astfel:
1. se deschide un formular existent sau un formular nou în Design View;
2. se selectează controlul CommandButton din ToolBox;
3. se desenează controlul pe formular şi la sfârşitul acestei operaţii un
Wizard stabileşte legătura cu un eveniment;
4. Categoriile de acţiuni predefinite ale CommandButton Wizard sunt
următoarele:
 Record Navigation – deplasare şi căutare înregistrări în cadrul
tabelei curente (Go To First, Go To Next, Find Record);
 Record Operations – adăugări, ştergeri, duplicare, listare
articole;
 Form Operations – operaţii de lucru cu formulare (Open Form,
Close Form, Print Form etc);
 Report Operations - operaţii de lucru cu rapoartele (Preview
Report, Print Report, Send Report To File etc);
 Application – lansarea în execuţie a altor aplicaţii (Run
Application, Run MS Word, Run MS Excel etc);
 Miscellaneous – execuţia de interogări sau macroinstrucţiuni
(Run Query, Run Macro).
5. Se stabileşte imaginea sau textul care se va plasa pe buton;
6. Se precizează numele controlului şi se închide aplicaţia Wizard.

Formularele se pot afişa în 3 moduri:


• Design – mod de proiectare, în care utilizatorul are acces la controale şi la
proprietăţile lor, putând să le modifice;
• Datasheet – mod de afişare a datelor asemănător cu afişarea directă a tabelului
sau interogării;
• Form – mod de afişare specific pentru formulare, în care se ţine cont de
proprietăţile setate în modul de proiectare.

Subformularele – sunt formulare ataşate altor formulare.


Două tabele relaţionate pot fi afişate şi modificate simultan folosind reprezentarea
în cadrul unui formular Access a unui alt formular, numit şi subformular.
Dacă între două tabele există o relaţie de tip “one-to-many”, în formularul principal
se afişează o înregistrare din tabelul primar, iar în subformular se pot observa
înregistrările corespunzătoare din tabelul asociat, având valoarea cheii străine egală
cu valoarea cheii primare. Este o metodă care simplifică încărcarea datelor în
tabelele relaţionate pentru că utilizatorul nu mai trebuie să reţină valorile cheii
primare la introducerea datelor în tabela secundară.

29
Observaţie 1: dacă o tabelă este implicată în mai multe relaţii, se poate construi un
formular cu mai multe subformulare
Observaţie 2: un subformular poate conţine un alt subformular, dacă relaţia între
tabele este de tip “one-to-many-to-many”. Access nu permite mai mult de trei
niveluri de imbricare.

Sunt mai multe metode de obţinere a unui formular cu subformular:


1. Se lansează Form Wizard pe o interogare care implică ambele tabele, ceea ce
ofera proiectantului facilitatea de a alege opţiunea de creare formular cu
subformular;
2. Se crează formularul principal (cel mai simplu cu Form Wizard), se deschide
în Design View şi se foloseşte controlul Subform/Subreport din caseta de
instrumente (ToolBox) pentru proiectarea subformularului; programul
wizard declanşat de acest control are posibilitatea de a crea subformularul pe
baza tabelei secundare sau de a folosi un formular existent pe această tabelă.
3. Se crează un formular pe tabela principală şi un formular pe tabela
secundară; se deschide formularul principal în Design şi se “trage” numele
subformularului din fereastra Database.

2.6 Rapoarte (Reports)


Rapoartele sunt situaţii obţinute pe bază de interogări şi tabele, care pot fi
afişate pe ecran sau la imprimantă.
Spre deosebire de formulare, rapoartele extrag datele din tabele, nu pot modifica
conţinutul lor. Ele parcurg secvenţial înregistrările, afişează câmpurile selectate şi
eventual generează subtotaluri sau rezumate, dacă s-au introdus opţiuni de grupare
pe câmpuri la crearea raportului. Datele pot fi grupate pe un număr de maxim zece
niveluri diferite, fiecare dintre ele furnizând anumite informaţii sintetice.
Lucrul cu rapoarte este permis în cadrul opţiunii Objects->Reports.
Sunt mai multe tehnici de a construi un raport: Design View, Report Wizard,
AutoReport, Chart Wizard, Label Wizard şi există multe similitudini între acestea
şi metodele de creare a formularelor, de aceea le vom prezenta pe scurt:
 Design View – proiectarea raportului folosind instrumentele Access din
ToolBox;
 Report Wizard – proiectare asistată de „vrăjitor”, care propune variante din care
proiectantul să poată alege;
 AutoReport (Columnar, Tabular) - sunt metode de tip Wizard care realizează
aşezarea pe coloane sau sub formă de tabel a datelor în situaţie;
 Chart Wizard – crearea de grafice pe baza de interogări sau tabele, cu asistenţa
„vrăjitorului” şi care se pot lista la imprimantă;

30
 Label Wizard – obţinerea de etichete standard sau utilizator din informaţiile
preluate din tabele sau interogări.
Tehnica cea mai simplă şi mai utilizată pentru crearea rapoartelor este Report
Wizard şi necesită parcurgerea etapelor următoare:
1. Reports->New->Report Wizard;
2. Selectarea interogării pe baza căreia care se construieşte raportul;
3. Selectarea câmpurilor care se afişează în raport;
4. Stabilirea nivelurilor de grupare (fig. 13)
5. Prin bifarea casetelor de validare corespunzătoare câmpurilor numerice, se
stabileşte care este tipul de operaţie aplicat grupării (fig. 14), dintre cele
valabile (Sum, Avg, Min, Max);
6. Alegerea tipului de aşezare (layout) a câmpurilor de date pe raport: Stepped,
Block, Outline etc şi orientarea paginii: Portrait sau Landscape;
7. Alegerea unui stil al raportului: Bold, Casual, Compact, Soft Gray;
8. Specificarea titlului şi salvarea raportuluilui.

Grupare pe
cod furnizor

Grupare pe
denumire
produs

Fig. 13 Stabilirea nivelurilor de grupare

31
Fig. 14 Tipul de operaţie aplicat câmpurilor numerice ale grupării

Pentru modificarea raportului astfel obţinut în sensul adăugarii/ştergerii de


câmpuri, de grupări şi subtotaluri se deschide raportul în modul Design View şi se
foloseşte caseta de instrumente ToolBox (fig. 15)
Se observă în modul Design că rapoartele conţin anumite zone, care pot fi unice la
nivelul raportului (antetul şi subsolul raportului - Report Header/Report Footer) sau
se pot repeta la nivel de pagină (antetul şi subsolul paginii - Page Header/Page
Footer) şi la nivel de înregistrare (secţiunea Detail). Există, de asemenea căte un
antet şi un subsol pentru fiecare grupare a raportului. În modul Design View
conţinutul lor poate fi modificat de proiectant, ele conţinând etichete (Labels),
casete de tip text (TextBox) şi alte controale de tip Access.

32
Fig. 15 Deschiderea raportului în modul Design View

Un exemplu de folosire a casetei de tip text în cadrul raportului este pentru


numerotarea înregistrărilor afişate în secţiunea Detail.
Se alege din proprietăţile controlului TextBox, din meniul Data, proprietatea
ControlSource şi i se atribuie valoarea 1. Proprietatea RunningSum setată pe
valoarea Over_Group numerotează înregistrările pe grup, iar valoarea Over_All
numerotează toate înregistrările.

2.7 Macrocomenzi
Permit gruparea mai multor acţiuni şi executarea lor repetată la declanşarea unui
eveniment, cum ar fi: activarea unui buton sau unui element de meniu, apăsarea
unei taste, focalizarea unui control grafic.
Se îmbunătăţeşte semnificativ interfaţa aplicaţiei cu utilizatorul prin folosirea
comenzilor grupate în macro.
În unele situaţii, comenzile macro reprezintă singura posibilitate de realizare a
anumitor cerinţe ale proiectantului:
• Meniuri utilizator;
• Executarea unei succesiuni de comenzi la deschiderea bazei de date –
macrocomanda specială Autoexec;
• Definirea unor taste care să execute comenzi rapide în cadrul unei aplicaţii –
macrocomanda specială Autokeys.
Dezavantajul utilizării macro este că nu oferă nicio modalitate de revenire asupra
operaţiilor executate.

33
Comenzile macro reprezintă cea mai simplă metodă de programare în Access, care
permite obţinerea unei aplicaţii.
Pentru a crea o macrocomandă se parcurg următoarele etape:
1. Butonul MACROS – opţiunea New;

Fig. 16 Crearea unei macrocomenzi

2. Apare fereastra de dialog din fig.16 în care se stabilesc comenzile


componente (coloana Action) şi argumentele sau specificaţiile lor (fereastra
Action Arguments).
3. După definirea listei de comenzi se salvează macro şi se execută cu Run.

Există posibilitatea includerii de subcomenzi macro în cadrul unui singur grup de


macrocomenzi, prin adăugarea coloanei Macro Names din meniul View.
Această facilitate se foloseşte la crearea de meniuri utilizator şi la definirea
macrocomenzii speciale Autokeys.

Macrocomanda AUTOEXEC se crează similar cu orice alta, are caracteristic faptul


că se execută la fiecare deschidere a bazei de date.
Se poate anula executarea ei automată dacă la deschiderea bazei de date utilizatorul
activează tasta Shift. Ea are rolul de a deschide formularul care constituie interfaţa
grafică cu utilizatorul.
Macrocomanda AUTOKEYS permite definirea unor comenzi rapide de la tastatură
în interiorul aplicaţiei Access. Atribuirile de combinaţii de taste unor operaţii

34
trebuie astfel făcută încât să nu anuleze definiţiile de taste din sistemul de operare
Windows. De exemplu: nu se recomandă folosirea combinaţiei de taste Ctrl+X,
Ctrl+C şi Ctrl+V, care sunt folosite în Windows pentru decuparea, copierea şi
refacerea unei zone Clipboard.
O macro Autokeys se crează ca orice grup de comenzi, având în coloana Macro
Names definite combinaţiile de taste, iar în coloana Action operaţia care se execută
la activarea lor. De exemplu:
Macro Names Action Arguments

{F4} MsgBox specificatiile de mesaj


^F OpenForm specificatiile unui formular

Se pot activa oricând în timpul lucrului cu baza de date folosind tasta specială F4,
respectiv combinaţia de taste CTRL+F.

2.8 Exemplu de proiectare a unei baze de date


Problema de rezolvat: Să se proiecteze o bază de date a unei agenţii de
turism, care să ofere clienţilor săi servicii optime şi la tarife acceptabile.
Schema de proiectare a bazei de date cuprinde: serviciile oferite de agenţie,
contractele realizate cu clienţii şi serviciile cerute de aceştia în cadrul unui contract:

Tabela SERVICII Tabela CLIENŢI Tabela CONTRACTE


PK Cod_serv Byte PK CNP Text 13 PK Nrcontract Byte
Denumirea serv Text 30 PK Nrcontract Byte Data_contract Date/
Time
Tarif_serv Long PK Cod_serv Byte
Integer
Nume_client Text30
Nr_serv Byte
Pentru satisfacerea cerinţelor beneficiarului, proiectantul trebuie să realizeze baza
de date parcurgând următoarele etape:
1. Să construiască tabelele şi relaţiile dintre ele conform schemei de proiectare;
2. Să realizeze un formular pentru introducerea datelor în tabela clienţi;
3. Să proiecteze o interogare care să vizualizeze numele clientului, serviciile
solicitate şi valoarea lor pentru un anumit contract;
4. Să construiască un raport care să prezinte datele din interogarea anterioară,
cu subtotaluri valorice pentru fiecare client şi pentru fiecare contract.

35
1) După ce a fost realizată structura celor 3 tabele, se stabilesc relaţiile dintre ele:

2) Formularul de încărcare date in tabela SERVICII, cu subformularul CLIENŢI se


proiectează cu Form Wizard şi arată astfel:

3) Se proiectează în modul Design View interogarea care să vizualizeze numele


clientului, serviciile solicitate şi valoarea lor pentru un anumit contract.
Câmpul valoare este un câmp calculat şi se obţine din [nr_serv]*[tarif_serv].
În urma execuţiei interogării obţinem situaţia:

36
4) Se construieşte un raport pe baza interogării de la punctul anterior, cu Report
Wizard, având grijă să precizăm ca niveluri de grupare:
• Nivelul 1: Nrcontract
• Nivelul 2: Nume_client
Se va face un subtotal pe câmpul valoare pentru fiecare client şi pentru fiecare
contract. Se fac modificări în Design View care ţin de forma raportului şi nu de
conţinutul acestuia. În urma execuţiei se obţine următoarea situaţie:

37
Se salvează baza de date sub numele Agenţie.mdb şi se testează funcţionarea ei
prin adăugarea altor seturi de date. Pentru un număr de 10 înregistrări în tabela
Clienţi, 5 înregistrări în tabela Servicii şi 4 înregistrări în tabela Contracte, baza de
date ocupă un spaţiu pe hard disk de 344 Kb.

2.9 Verificarea cunoştinţelor

1. Care este definiţia bazelor de date?

2. Care sunt avantajele utilizării bazelor de date?

3. Ce modele de baze de date cunoaşteţi?

4. Definiţia sistemelor de gestiune a bazelor de date. Exemple.


5. Care sunt funcţiile unui sistem de gestiune a bazelor de date?

6. Componentele de bază ale modelului relaţional.


7. Ce se înţelege prin restricţii de referenţialitate în SGBDR-uri?

8. Care sunt elementele principale ale SGBDR-ului Access?

9. Precizaţi care sunt tipurile de relaţii între tabele în sistemul Access.


10. Ce este cheia primară şi care este rolul ei într-o tabelă?

38
11.Cum se poate păstra coerenţa şi consistenţa bazelor de date Access?
Se va face referire la actualizările şi ştergerile de înregistrări în cascadă.
12. Ce tipuri de date pot conţine tabelele ? Daţi câteva exemple.

13. Care este rolul interogărilor? Precizaţi tipurile de interogări.

14. Ce se înţelege prin „vrăjitori” şi unde sunt ei folosiţi?

15.Ce sunt formularele şi cum se pot obţine ?


16. Ce sunt rapoartele şi care este modalitatea cea mai simplă de obţinere a lor?

17. Cum se regăsesc bazele de date Access pe un harddisk ?

Bibliografie

1. Ipate, F.E., “ Dezvoltarea aplicaţiilor de baze de date în Oracle 8 şi Forms 6

“, Editura BIC ALL, 2000


2. Patriciu, V., “Criptografia şi securitatea reţelelor de calculatoare “, Editura
Tehnică, 1994
3. Năstase, P., Mihai, F., “Baze de date - Access 2000“, Editura Teora, 2001

4. Jennings, R., “Totul despre Access 2000“, Editura Teora, 2002

5. Allen Browne, Alison Balter, “Bazele Access 95”, Editura Teora 1999
6. Coculescu, L., Cristea, V.,Pilat, F., Patriciu, V.,”Proiectarea sistemelor

informatice”, Ed.Militară, Bucuresti 1998


7. Alison Balter, “Invata singur MS Office ACCESS 2003 in 24 de ore, Editura

Niculescu, 2006

39
8. Băduţ, M., “Informatica pentru manageri”, Editura Teora, 1999

9. Roşca, I.Gh.,Bucur, C.M., Timofte-Stanciu, C. Paiu, O., Vişan, M.,

“Comerţul electronic: concepte, tehnologii şi aplicaţii“, Editura Economică,


2004
10. Milosescu, M. „Informatica-Tehnologii asistate de calculator-IT2”, Editura

Teora, Bucuresti, 2001


11. Rusu, L, „Managementul sistemelor informatice”, Presa Universitara

Clujeana, Cluj-Napoca, 2001

40