You are on page 1of 219

UNIVERSITATEA DE VEST DIN TIMIOARA

FACULTATEA DE ECONOMIE I DE ADMINISTRARE A


AFACERILOR
CENTRUL DE EDUCAIE CONTINU I NVMNT
DESCHIS LA DISTAN

Lect.univ.dr. Diana Trnveanu


Asist.univ.dr. Ileana Hauer
Baze de date. Access 2007

MANUAL PENTRU NVMNTUL LA DISTAN,


ANUL I, CONTABILITATE I INFORMATIC DE
GESTIUNE

2011

Capitolele 1-3: asist. univ. dr. Ileana Hauer


Capitolele 4-6: lect. univ. dr. Diana Trnveanu

CUPRINS
OBIECTIVELE CURSULUI .............................................................. 11
CAPITOLUL 1
CONCEPTE GENERALE DESPRE BAZELE DE DATE I
SISTEMELE DE GESTIUNE A BAZELOR DE DATE .................... 13
1.1 Revoluia relaional ........................................................................................ 13
1.2 Conceptul de baz de date................................................................................ 15
1.3 Conceptul de sistem de gestiune a bazelor de date ............................................ 19
1.3.1 Introducere............................................................................................... 19
1.3.2 Obiectivele unui SGBD ............................................................................ 19
1.3.3 Funciile unui SGBD ................................................................................ 21
1.3.4 Regulile lui Codd ..................................................................................... 23
1.4 Modelarea datelor ............................................................................................ 27
1.4.1 Modele de date: perspectiv istoric ......................................................... 27
1.4.2 Sistemul de gestiune bazat pe fiiere (SGF) .............................................. 28
1.4.3 Modele prerelaionale............................................................................... 29
1.4.4 Modelul relaional .................................................................................... 30
1.4.5 Modelele postrelaionale i noi funcionaliti ........................................... 32
1.5 Rezumatul capitolului ...................................................................................... 34
1.6 ntrebri de auto-evaluare ................................................................................ 35

CAPITOLUL 2
PROIECTAREA I IMPLEMENTAREA BAZELOR DE DATE ...... 37
2.1 Arhitectura ANSI-SPARC ............................................................................... 37
2.2 Proiectarea bazelor de date............................................................................... 39
2.3 Utilizarea modelelor de date n etapa de proiectare ........................................... 40
2.4 Modelul conceptual al bazei de date ................................................................. 42
2.5 Modelul logic al bazei de date.......................................................................... 42
2.6 Modelul fizic al bazei de date........................................................................... 43
2.7 Rezumatul capitolului ...................................................................................... 45
2.8 ntrebri de autoevaluare.................................................................................. 46

CAPITOLUL 3
MODELUL CONCEPTUAL AL BAZELOR DE DATE
RELAIONALE .................................................................................. 47
3.1 Entitai i instane............................................................................................ 47
3.2 Atribute .......................................................................................................... 48
3.2.1 Concept i tipologie ................................................................................. 48
3.2.2 Cheia primar, un atribut special .............................................................. 50
3.2.3 Entitate sau atribut ................................................................................... 51
3.3 Relaii ............................................................................................................. 53
3.3.1 Definiie .................................................................................................. 53
3.3.2 Gradul i cardinalitatea relaiilor .............................................................. 53
3.4 Schema conceptual i diagrama entitate-relaie............................................... 54
3.5 Modelul relaional: fundamentarea teoretic .................................................... 57
3.5.1 Concepte de baz ..................................................................................... 57
3.5.2 Stabilirea relaiilor ntre entiti ................................................................ 59
3.6 Reguli de integritate pentru bazele de date relaionale ...................................... 63
3.6.1 Valoarea special Null a atributelor .......................................................... 63
3.6.2 Integritatea entitilor ............................................................................... 64
3.6.3 Integritatea referenial ............................................................................ 64
3.6.4 Restricii procedurale ............................................................................... 65
3.7 Implementarea modelului conceptual............................................................... 66
3.8 Rezumatul capitolului ..................................................................................... 68
3.9 ntrebri de auto-evaluare ................................................................................ 70

CAPITOLUL 4
NORMALIZAREA BAZELOR DE DATE .......................................... 73
4.1. Introducere..................................................................................................... 73
4.2 Organizarea datelor ......................................................................................... 73
4.3 Dependene ..................................................................................................... 75
4.3.1 Dependene funcionale simple ................................................................ 75
4.3.2 Dependene funcionale directe i tranzitive.............................................. 78
4.3.3 Dependene funcionale multiple .............................................................. 78
4.3.4 Dependene multivaloare ......................................................................... 78
4.3.5 Dependene jonciune .............................................................................. 80
4.3.6 Matricea dependenelor funcionale .......................................................... 81
4.4 Forme normale................................................................................................ 85
4.4.1 Forma normal 1 ..................................................................................... 85
4.4.2 Forma normal 2 ..................................................................................... 86

4.4.3 Forma normal 3 ...................................................................................... 88


4.5 Concluzii ......................................................................................................... 89
4.6 Rezumatul capitolului ...................................................................................... 89
4.7 ntrebri de autoevaluare din partea teoretic.................................................... 90
4.8 Exemple .......................................................................................................... 91
4.8.1 Problem rezolvat Filiala CEC ............................................................. 91
4.8.2 Probleme propuse..................................................................................... 94

CAPITOLUL 5
ELEMENTE INTRODUCTIVE N ACCESS .................................... 97
5.1 Introducere ...................................................................................................... 97
5.2 SGBD Access: prezentare general .................................................................. 97
5.2.1 Caracteristici generale .............................................................................. 98
5.2.2 Operaii cu baze de date ........................................................................... 99
5.2.3 Obiectele bazei de date ........................................................................... 105
5.3 Obiecte Tables............................................................................................... 106
5.4 Obiecte Queries ............................................................................................. 116
5.4.1. Interogri de selecie ............................................................................. 117
5.4.2 Interogri de sintetizare a datelor ............................................................ 119
5.4.3 Interogri de aciune............................................................................... 120
5.5 Obiecte Forms ............................................................................................... 123
5.5.1 Formulare create cu ajutorul butonului Form .......................................... 124
5.5.2 Formulare create cu ajutorul butonului Form Wizard .............................. 125
5.5.3 Formulare create cu ajutorul butonului Form Design ............................... 128
5.5.4 Formulare cu sub-formulare ................................................................... 133
5.6 Obiecte Reports ............................................................................................. 134
5.7 Obiecte Macros ............................................................................................. 139
5.8 Obiecte Modules ........................................................................................... 141
5.9 Concluzii ....................................................................................................... 141
5.10 Rezumatul capitolului .................................................................................. 141
5.11 ntrebri de autoevaluare din partea teoretic ................................................ 142
5.12 Exemple ...................................................................................................... 143
5.12.1 Problem rezolvat Tabel creat n Datasheet View .......................... 143
5.12.2 Problem rezolvat Tabele create n Design View .............................. 148
5.12.3 Problem rezolvat Formulare i controale......................................... 154
5.12.4 Problem rezolvat Formulare cu controale calculate, Switchboard .... 161
5.12.5 Problem rezolvat Interogri ............................................................ 168
5.12.6 Problem rezolvat Rapoarte ............................................................. 175

5.13 Probleme propuse........................................................................................ 181


5.13.1 Problema propus Crearea tabelelor Filial CEC............................. 181
5.13.2 Problem propus Crearea formularelor............................................. 181
5.13.3 Problem propus Crearea interogrilor ............................................. 181
5.13.4 Problem propus Crearea rapoartelor ............................................... 181

CAPITOLUL 6
ELEMENTE SQL ............................................................................. 183
6.1 Introducere.................................................................................................... 183
6.2 Comenzi SQL ............................................................................................... 183
6.2.1 Comanda CREATE TABLE .................................................................. 186
6.2.2 Comanda ALTER TABLE ..................................................................... 188
6.2.3 Comanda DROP TABLE ....................................................................... 190
6.2.4 Comanda INSERT INTO ....................................................................... 190
6.2.5 Comanda DELETE ................................................................................ 191
6.2.6 Comanda SELECT ................................................................................ 192
6.2.7 Comanda UPDATE ............................................................................... 200
6.3 Concluzii ...................................................................................................... 201
6.4 Rezumatul capitolului ................................................................................... 201
6.5 ntrebri de autoevaluare din partea teoretic ................................................. 202
6.6 Exemple ....................................................................................................... 203
6.6.1. Problem rezolvat Produse ............................................................... 203
6.6.2 Problem rezolvat Aprovizionare....................................................... 208
6.6.3 Problem propus Bibliotec ............................................................... 216
6.6.4 Problem propus Amenajri interioare ............................................... 216

BIBLIOGRAFIE ............................................................................... 219


GLOSAR DE TERMENI .................................................................. 221

10

OBIECTIVELE CURSULUI

Calculatorul va fi utilizat ca instrument de lucru pentru prelucrarea


automat a volumelor mari de date organizate sub form de baze de date,
extrem de importante ca suport de date pentru sistemele informatice integrate de
management al activitii organizaiilor.
Obiectivele cursului sunt nsuirea conceptelor de baz legate de :
organizarea volumelor mari de date sub form de baze de date i
prelucrarea acestora;
formarea deprinderilor de a utiliza facilitile specifice programului
Microsoft Access;
construirea i gestionarea unor baze de date proprii (prelucrri de
complexitate medie).
n cadrul cursului sunt expuse principiile de baz ale proiectrii bazelor de
date dup modelul relaional al i se prezint principalele obiecte ale bazelor de
date Access, precum i modul de proiectare i utilizare a acestora.
n cadrul seminarului se exerseaz crearea bazelor de date Access, a
tabelelor, interogrilor, formularelor, rapoartelor i a comenzilor SQL.

11

12

CAPITOLUL 1
CONCEPTE GENERALE DESPRE BAZELE DE DATE
I SISTEMELE DE GESTIUNE A BAZELOR DE DATE
1.1 Revoluia relaional
Astzi beneficiem de avantajele aduse de bazele de date relaionale:
capacitatea de stocare, accesare, i modificare rapid a datelor pe calculatoarele
low-cost. Totui, pn la sfritul anilor 1970, bazele de date au stocat cantiti
mari de date ntr-o structur ierarhic, care a fost dificil de navigat i inflexibil.
Programatorii aveau nevoie s tie ce doreau clienii s fac cu datele nainte
de a proiecta baza de date . Adugarea sau schimbarea modului de analiz a
datelor a fost un proces ndelungat i costisitor.
n 1970, Edgar "Ted" Codd, un matematician angajat de IBM, a scris un
articol care va schimba toate astea. La acea vreme, nimeni nu i-a dat seama
c teoriile lui Codd vor declana o revoluie tehnologic la egalitate
cu dezvoltarea calculatoarelor personale i Internet (Coronel, et al., 2009)
Don Chamberlin, coinventor al SQL, cel mai popular limbaj utilizat de
sistemele de baze de date de astzi, i-a amintit cum teoriile matematice ale lui
Codd nu au fost luate n seam. Apoi Ted Codd a organizat un simpozion, iar
Chamberlin a ascultat cum Codd a redus cinci pagini complicate de
program la o linie. Simpozionul a convins IBM pentru a finana Sistem R, un
proiect de cercetare care a construit o prototip al unei baze de date relaionale
i care va duce n cele din urm la crearea limbajelor SQL i DB2.
Adevratele sisteme relaionale s-au afirmat pe pia ncepnd cu anul
1984: sistemul DB2 (IBM Corp.) funcioneaz pe mainframe-urile IBM i, prin
urmare, e portabil pe RS/6000; Oracle (Oracle Systems) a devenit un sistem de
gestiune relaional portabil pe mai multe platforme; sistemul RDBMS (AWB)
funcioneaz pe calculatoarele AT&T 3B; sistemele de gestiune Informix
(Informix Software) i Sybase (Sybase Inc.) funcioneaz n mediul Unix. Mai
multe sisteme de gestiune ale bazelor de date relaionale (FoxPro, Paradox etc.)
au fost elaborate pentru calculatoarele personale.
Dezvoltarea teoriei bazelor de date relaionale a cptat o amploare
nemaivzut n domeniul aplicrii tehnicii de calcul. Au aprut o serie de
reviste specializate n domeniul respectiv. ntre elaborrile teoretice i
producerea sistemelor comerciale s-a creat un spaiu de cel puin 20 ani.
Acesta e un rar exemplu cnd necesitile software considerabil depesc
capacitile hardware. Rezultatele obinute n teoria relaional au influenat
esenial sistemele de gestiune ce se bazeaz pe celelalte dou modele de date:

13

ierarhic i reea. Modelul relaional de date e aplicat pe larg i n bazele de date


deductive. Pe de alt parte, se observ convergena modelului relaional i
tehnologiilor orientate pe obiecte.
"Revoluia relaional" a introdus mai multe idei valoroase n lumea
bazelor de date. Printre acestea progrese tehnologice i beneficii ale sistemelor
de gestiune ale bazelor de date pot fi menionate:
Tabelele sunt un mijloc simplu de reprezentare a datelor. Ele permit
programatorilor i utilizatorilor finali s-i organizeze datele n mod
acceptabil. Extinderea modelului relaional a confirmat puterea de atracie
a acestei reprezentri.
SQL este un standard de limbaje de interpelri foarte comod. El e un limbaj
nonprocedural de manipulare a datelor i a contribuit mult la creterea
popularitii sistemelor de gestiune ale bazelor de date relaionale.
Operaiile orientate pe mulimi permit programatorilor i utilizatorilor
ordinari s gseasc i s actualizeze mari colecii de nregistrri fr a
scrie programe speciale.
Jonciunile sunt instrumente puternice de asociere a nregistrrilor anterior
independente. Utilizatorii pot crea noi seturi de nregistrri (aa-numitele
tabele virtuale), apelnd la jonciune.
Interpelrile interactive. Cutarea i prelucrarea datelor n mod dinamic a
adus la utilizarea larg a bazelor de date relaionale. Gestionarea
tabelelor, vizualizarea interactiv i mbuntirea interactiv a contribuit
ca utilizatorul s-i dea votul pentru sistemele relaionale.
Consistena datelor. Sistemele de gestiune relaionale asigur c nici un
utilizator i nici o aplicaie nu pot modifica baza de date, dac
modificarea e n contradicie cu constrngerile de integritate.

14

1.2 Conceptul de baz de date


Apariia i dezvoltarea calculatoarelor electronice au condus la
amplificarea activitilor legate de stocarea, interogarea i administrarea
coleciilor de date. O colecie de date reunete date despre o anume clas de
obiecte (reale sau conceptuale).
Folosirea tehnologiilor informaionale n colectarea, stocarea, procesarea i
transmiterea coleciilor de date a impus definirea unor tehnici i metode de
organizare a acestora.
Se cunosc dou metode de organizare a coleciilor de date:
- organizarea n fiiere de date;
- organizarea n baze de date.
Organizarea datelor n fiiere de date este specific anilor 60 i poate fi
utilizat i astzi, ndeosebi n cazul folosirii limbajelor procedurale de
programare1, cum ar fi limbajele Cobol, Fortran, Basic.
Ca limite ale organizrii datelor n fiiere menionm:
- descrierea datelor se face n fiecare program n care ele sunt utilizate;
spunem c datele sunt dependente de program.
- lipsa unui formalism riguros de definire i validare a datelor.
- meninerea unei redundane ridicate n cadrul coleciilor de date
memorate pe suporturi tehnice.
- performane scazute pentru procesarea datelor ndeosebi cand este
necesar s se fac asocieri ntre datele memorate n fiiere de date
distincte.
Limitele organizrii datelor n fiiere i posibilitile oferite de noile
tehnologii informaionale au dus la promovarea metodei de organizare a datelor
n baze de date.
Astzi, cele mai multe dintre activitile noastre zilnice necesit accesarea
i actualizarea informaiei dintr-o baz de date: extragerea unei sume de bani
din cortul bancar, rezervarea unei camere de hotel, cumprarea unui bilet de
avion, mprumutul unei cri de la bibliotec, plata facturilor de telefon, curent
electric etc. Toate acestea se pot face rapid i n siguran, pentru c datele
respective sunt bine organizate ntr-o baz de date i administrate de un sistem
de gestiune a bazelor de date.
Pentru baza de date2 avem mai multe definiii:
este un ansamblu integrat de nregistrri sau de fiiere legate ntre ele n
mod logic (Lungu, et al., 1995).

Versiuni recente ale acestor limbaje permit i accesarea datelor organizate n baze de date.
Termenul database (baz de date n limba englez) a aprut pentru prima dat n titlul unei
conferine organizate n Santa Monica, SUA, n 1964: Development and Management of
Computer Centered Database.
2

15

ansamblu structurat de date nregistrate pe suporturi accesibile de


calculator pentru a satisface, chiar simultan, mai muli utilizatori de o
manier selectiv i n timp oportun (Delobel, Adiba, 1982).
colecie de date aflate n interdependen, mpreun cu descrierea
datelor i a relaiilor dintre ele (Pescaru, et al, 1976).
colecie de date utilizat ntr-o organizaie, colecie care este
automatizat, partajat, definit riguros (formalizat) i controlat la
nivel central (Everest, 1986).
Fa de modelul bazat pe fiier, noutatea adus de organizarea datelor n baze de
date o constituie existena unui fiier de descriere global al bazei, astfel nct
s se poat asigura independena programelor fa de date. Acest fiier de
descriere global al bazei este denumit dicionar de date sau catalog al
sistemului. Dup cum se observ din figura 1.1, lucrul cu fiierele de date, deci
extragerea i modificarea datelor, se desfoar exclusiv prin intermediul
dicionarului de date n care se gsesc informaii privitoare la structura datelor i
restriciile ndeplinite de acestea.
Termenul de baz de date este folosit de multe ori n mod eronat,
confundndu-se cu softul pentru baz de date care este utilizat. n realitate,
softul pentru baze de date este numit sistem de gestiune a bazelor de date
(SGBD), iar baza de date este recipientul care conine informaiile, recipient
creat i manipulat prin intermediul SGBD. Coninutul acestui recipient se
schimb foarte des, atunci cnd se lucreaz cu baza de date (adugri, tergeri i
modificri de informaii)

16

Figura 1.1 Schema de principiu a unei baze de date


Adaptare dup Fotache, M., 1997
A proiecta o baz de date nseamn a-i stabili structura, adic elementele
componente, caracteristicile acestora, restriciile pe care trebuie s le respecte,
relaiile dintre ele.
A construi o baz de date nseamn a memora (a introduce) datele n baza de
date, dup proiectarea acesteia.
A administra o baz de date nseamn a asigura: (1) accesul la date al utilizatorilor, n funcie de drepturile fiecruia (funcia i importana fiecruia n
organizaia respectiv), (2) coerena bazei de date (recuperarea informaiei
atunci cnd au loc incidente: ntreruperea alimentrii cu curent electric, operaii
contradictorii etc), (3) securitatea datelor stocate etc.
A interoga o baz de date nseamn a extrage i a vizualiza datele care
ndeplinesc anumite criterii i condiii.
A actualiza o baz de date nseamn a modifica structura sau informaiile
stocate n baza de date.
Nu orice colecie de date este o baz de date.
De exemplu, lista crilor dintr-o bibliotec nu este o baz de date, ci un simplu
inventar de obiecte, o list, un tabel. Dac la aceast list adugm lista
cititorilor abonai la bibliotec (eventual i lista angajailor bibliotecii) i lum
n considerare activitile specifice bibliotecii (achiziionarea de cri noi,
mprumutul i restituirea crilor de ctre cititori, eventual administrarea
sarcinilor de serviciu ale angajailor), atunci avem de a face cu o baz de date.

17

n concluzie, fa de un inventar (un tabel), o baz de date are


urmtoarele proprieti:
reprezint un anumit aspect al lumii reale, numit microuniversul bazei
de date; orice modificare care se produce n acest microunivers se
reflect n baza de date (de exemplu: cumprarea unui nou DVD n
vederea nchirierii, modificarea diferenei permise ntre cursul de
cumprare i cel de vnzare al valutei etc);
este o colecie de date coerent din punct de vedere logic i avnd un
neles intrinsec (de exemplu: din baza de date asociat bibliotecii
universitii nu vor face parte crile de telefon sau lista de materiale
didactice din laboratorul de informatic);
este proiectat, construit i administrat, avnd permanent n vedere un
anumit scop; o baz de date este destinat utilizrii de ctre un anumit
grup de persoane i permite efectuarea unui anumit set de operaii.

18

1.3 Conceptul de sistem de gestiune a bazelor de date


1.3.1 Introducere
O baz de date apare ca o colecie de date stocat pe memorii externe
adresabile, folosite de o multitudine de utilizatori, dar dac baza de date care nu
are asociat un sistem de gestiune al acesteia, ea nu i atinge obiectivele pentru
care a fost creat.
Prin urmare un SGBD3 (n englez Database Management System abreviat
DBMS) este un pachet software de nivel nalt, care permite proiectarea,
construirea i administrarea bazelor de date dedicate rezolvrii problemelor din
cele mai variate domenii ale vieii reale.
Sistemul de gestiune al bazei de date reprezint software-ul propriu-zis al
acesteia care asigur realizarea urmtoarelor activiti (Lungu, et al., 1995):
- definirea structurii bazei de date;
- ncrcarea datelor n baza de date;
- accesul la date (interogare, actualizare);
- ntreinerea bazei de date (colectarea i refolosirea spaiilor goale, refacerea
bazei de date n cazul unui incident);
- reorganizarea bazei de date (restructurarea i modificarea strategiei de
acces);
- securitatea datelor.
Aadar, sistemul de gestiune al bazei de date apare ca un sistem complex
de programe care asigur interfaa ntre o baz de date i utilizatorii acestuia.

1.3.2 Obiectivele unui SGBD


Dup cum este cunoscut, obiectivul informaticii l constituie culegerea,
verificarea, transmitarea, stocarea i prelucrarea automat a datelor cu ajutorul
mijloacelor electronice de calcul, n scopul satisfacerii diferitelor nivele de
conducere cu informaii necesare lurii deciziilor, n condiii de eficien
economic sporit.
n aceste condiii, necesitatea acut de informare trebuie satisfcut innd
seama de o serie de cerine prin care s se asigure: minimizarea costului
procesului de prelucrare a datelor; creterea vitezei de rspuns la ntrebrile
solicitate de utilizatori; adaptarea facil a sistemului informatic la evoluia n
timp a sistemului informaional din care face parte; posibilitatea rspunsului la
anumite ntrebri neanticipate de ctre proiectanii de sistem; posibilitatea
3

Exemple de SGBD: Microsoft Access, FoxPro (de la Microsoft), Paradox, Visual dBase (de la
Borland), Oracle 10g (de la Oracle Corporation), Sybase Adapted Server (de la Sybase Inc.), Iris
(de la Hewlett-Packard), IMS, DB2 (pn DB9 de la IBM).

19

folosirii sistemului de informare dispunnd de un minim de cunotine despre


modul de organizare a lui n general i informatic n special; integritatea i
securitatea datelor etc.
n acest context, sistemului de gestiune al bazei de date i revin o serie de de
obiective, cum sunt:
1) Asigurarea independenei datelor. O aplicaie, n general, este
dependent de date n sensul c modificarea structurii de memorare a datelor
sau a strategiei de acces la date afecteaz i aplicaia. Independena datelor fa
de aplicaie este totui necesar cel puin din urmtoarele considerente: diferite
aplicaii au nevoie de viziuni diferite ale acelorai date; administratorul bazei de
date trebuie s aib libertatea de a schimba structura de memorare sau strategia
de acces, ca rspuns la cerine (schimbri de standarde, prioritile aplicaiilor,
unitile de memorare etc), fr a modifica aplicaiile existente; baza de date
existent, precum i programele de exploatare a ei, care au fost folosite o
perioad de timp, reprezint o investiie major la care nu trebuie s se renune
prea uor.
Independena datelor trebuie privit din dou puncte de vedere:
independena fizic; independena logic a datelor.
Independena fizic a datelor face ca memorarea datelor i tehnicile fizice
de memorarea s poat fi modificate fr a determina rescrierea programelor de
aplicaie.
Independea logic a datelor se refer la posibilitatea adugrii de noi
articole de date sau extinderea structurii conceptuale (globale), fr ca aceasta
s impun rescrierea programelor existente.
2) Asigurarea unei redundane minime i controlate a datelor din baza de
date. Spre deosebire de sistemele clasice de prelucrare automat a datelor,
stocarea datelor n cazul bazelor de date se face astfel nct flecare dat s apar
o singur dat. Totui, nu sunt excluse nici cazurile n care, pentru a realiza
performane sporite, referitoare la timpul de acces la date i rspuns la
solicitrile utilizatorilor, s se accepte o anumit redundan a datelor, ns n
acest caz se va institui un control automat asupra ei n vederea asigurrii
coerenei datelor din baz.
3) Asigurarea unor faciliti sporite de utilizare a datelor. Aceasta
presupune:
- folosirea datelor de ctre mai muli utilizatori n diferite scopuri (aplicaii);
- accesul ct mai simplu al utilizatorilor la date, fr ca acetia s fie nevoii
s cunoasc structura ntregii baze de date, acest lucru rmnnd n sarcina
administratorului bazei de date;
- existena unor limbaje performante de regsire a datelor, care permit
exprimarea sub forma unei conversaii, a unor criterii de selecie a datelor i
indicarea unor reguli ct mai generale pentru editarea informaiilor solicitate;

20

- spre deosebire de sistemul clasic de prelucrare pe fiiere, unde exista un


singur criteriu de adresare (cel care a stat la baza organizrii fiierului) n cazul
bazelor de date, sistemul de gestiune trebuie s ofere posibilitatea unui acces
multicriterial, fr sortri suplimentare, n timp ce modificarea criteriului la
fiierele clasice implic reorganizarea lor;
- utilizarea unui limbaj ct mai apropiat de limbajul natural, cu posibilitatea
exploatrii bazei de date n regim conversaional. Aceasta ar oferi posibilitatea
exploatrii n mod facil a bazei de date i de ctre utilizatorii neinformaticieni.
4) Sporirea gradului de securitate a datelor mpotriva accesului
neautorizat la ele. n condiiile bazelor de date, administratorul bazei de date
poate prevedea ca accesul la baza de date s se fac numai prin canale
corespunztoare, i poate, totodat, defini, verificri de autorizare realizate
oricnd se ncearc accesul la anumite date.
5) Asigurarea integritii datelor mpotriva unor tergeri intenionate sau
neintenionate, prin intermediul unor proceduri de validare, a unor protocoale de
control concurent i a unor proceduri de refacere a bazei de date dup incidente.
6) Asigurarea partajabilitii datelor. Partaj abilitatea datelor trebuie
neleas nu numai sub aspectul asigurrii accesului mai multor utilizatori la
aceleai date, ci i acela al posibilitii dezvoltrii unor aplicaii fr a se
modifica structura bazei de date.

1.3.3 Funciile unui SGBD


Pentru realizarea obiectivelor enumerate anterior, sistemele de gestiune a
bazelor de date dispun de o serie de componente ce permit efectuarea
numeroaselor operaii. n funcie de natura lor i scopul urmrit, operaiile pot fi
grupate pe activiti. Activitile accept i ele o grupare pe funcii (una sau mai
multe activiti, relativ omogene, vor realiza o anumit funcie).
innd seama de multitudinea sarcinilor ce revin unui sistem de gestiune
a bazelor de date i grupnd aceste sarcini pe activiti i apoi pe funcii, se
deduc, n final, funciile sistemului de gestiune. innd seama de complexitatea
sistemului de gestiune, de facilitile propuse a fi oferite de acesta, de limbajele
utilizate4 i tipul bazei de date ce urmeaz a fi gestionat de SGBD, gruparea
activitilor pe funcii are un oarecare caracter relativ. n situaia sistemelor de
4

Un SGBD pune la dispoziie utilizatorilor limbaje distincte pentru 1) descrierea bazei de date
(limbaj de descriere a datelor- LDD) i 2) manipularea bazelor de date (limbaj de manipulare a
datelor-LMD). Limbajele de manipulare (interogare) a bazelor de date pot fi: declarative (permit
utilizatorului s declare de ce informaii are nevoie) i procedurale (oblig utilizatorul s descrie
procedura de obinere a informaiilor).

21

gestiune ce utilizeaz limbaje gazd de nivel nalt, identificarea i delimitarea


funciilor nu este att de evident. n ciuda acestor particulariti, totui, se pot
deduce cteva funcii cu caracter de generalitate pentru toate sistemele de
gestiune a bazelor de date.
Prezentm n continuare cteva astfel de funcii:
1) Funcia de descriere a datelor permite definirea structurii bazei de date
cu ajutorul limbajului de definire. Definirea datelor poate fi realizat la nivel
logic, conceptual i fizic. La nivelul acestei funcii se descriu multitudinea
atributelor (cmpurilor) din cadrul structurii bazei de date, legturile dintre
entitile bazei de date sau dintre atributele aceleiai entiti, se definesc
eventualele criterii de validare a datelor, metodele de acces la date, aspectele
referitoare la asigurarea integritii i confidenialitii datelor, etc. Rezultatul
acestei funcii se va concretiza n schema bazei de date, memorate n cod intern.
2) Funcia de manipulare a datelor este cea mai complex funcie i
realizeaz urmtoarele activiti:
- crearea (ncrcarea) bazei de date;
- adugarea de noi nregistrri (tupluri);
- suprimarea unor nregistrri;
- modificarea valorilor corespunztoare unor cmpuri;
- cutarea, sortarea i editarea parial sau total a unei nregistrri
virtuale etc.
Funcia de manipulare a datelor se realizeaz prin intermediul limbajului de
manipulare a datelor.
3) Funcia de utilizare asigur mulimea interfeelor necesare pentru
comunicarea tuturor utlizatorilor cu baza de date. n cadrul realizrii acestei
funcii, apar mai multe categorii de utilizatori:
- utilizatori liberi sau conversaionali. Aceatia reprezint categoria
beneficiarilor de informaii (utilizatori finali) care utilizeaz limbajele de
interogare a bazei de date ntr-o form simplist. Ei apar ca utilizatori
neinformaticieni;
- utilizatori programatori, care utilizeaz limbajele de manipulare, realiznd
proceduri complexe de exploatare a bazei de date;
- administratorul bazei de date apare ca un utilizator special i are rolul
hotrtor n ceea ce privete funcionarea optim a ntregului ansamblu.
4) Funcia de administrare a bazei de date apare ca o funcie complex i
este de competena administratorului bazei de date.

22

1.3.4 Regulile lui Codd


Un sistem de gestiune a bazelor de date relaionale (Relational Database
Management System - RDBMS) este o un sistem de gestiune a bazelor de date
care folosete modelul relaional.
n anul 1985, E.F. Codd a publicat un set de 13 reguli de fidelitate pe
baza crora se apreciaz dac un sistem de gestiune de baze de date poate fi
considerat relaional.
Tabelul 1.1 prezint pe scurt aceste reguli.
Nr.
Nume
Descriere
regul
0

Principiu de
baz

Stocarea
informaiei

Garantarea
accesului

Lipsa
informaiei

Catalogul de
sistem

Orice SGBD Relaional (SGBDR)


trebuie s gestioneze ntreaga baz de
date numai prin posibilitile modelului
relaional. Dac un SGBD este
dependent de un instrument de
manipulare al datelor la nivel de
ntregistrare, nu este total relaional.
Toate datele unui SGBD relaional se
reprezint explicit ca valori n tabele.
Datele nu pot fi stocate prin alte
metode.
Fiecare element de dat trebuie s fie
accesibil logic printr-o combinaie de
forma: cheie primar, nume de tabel i
nume de cmp.
Valorile vide (Null) trebuie s fie
suportate explicit. Null-urile reprezint
informaia lips sau imposibil de
aplicat.
Descrierea bazei de date sau catalogul
trebuie s se fac la nivelul logic sub
forma unor valori n tabele. Limbajul
relaional (SQL) trebuie s poat
aciona asupra proiectului bazei de date
n acelai mod n care acioneaz
asupra datelor stocate n structur.

Implementare
Access
Access a fost primul
SGBD care rula sub
Windows i respecta
aceast regul. Access
nu folosete numere de
nregistrri.
Access i stocheaz
datele
n
tabelele
motorului bazei de
date Microsoft Jet.
Access
respect
aceast regul prin
folosirea Cheii Primare
(Primary Key)
Access suport lucrul
cu valori Null pentru
descrierea
informaiilor lips.
Catalogul rezid n
motorul bazei de date
Microsoft Jet. Se poate
folosi OpenSchema
din ADO pentru
interogarea catalogului
de sistem. Limbajul
DDL SQL al
motorului bazei de
date Microsoft Jet
ofer posibilitatea
crerii tabelelor,
cheilor etc.

23

Limbaj
cuprinzto

Un SGBD trebuie s suporte un limbaj


clar pentru manipularea datelor (SQL)
care asigur modaliti cuprinztoare
pentru manipularea datelor, definirea
datelor,
definirea
vederilor,
constrngerile de integritate, limitrile
de tranzacii i de autorizare.

Actualizarea
vederilor

Toate vederile trebuie s poat fi


actualizate de sistem. ntr-un SGBD
total relaional majoritatea vederilor ar
trebui s se poat actualiza.

Actualizri
la nivel de
mulime

Independena
fizic a
datelor

Independena
logic a
datelor

10

Independena
integritii
datelor

Un SGBDR trebuie s fac mai mult


dect simpla extragere a datelor.
Trebuie s aib capacitatea de inserare,
actualizare i tergere a datelor, privite
ca o mulime relaional.
Datele trebuie s fie fizic independente
de programul aplicaie. SGBDR trebuie
s fie n stare s urmreasc
modificrile fizice la nivelul datelor pe
"sub aplicaie". De exemplu, SGBDR
nu se va modifica dac un index se
adaug sau se terge dintr-un tabel.
Pe ct este posibil, aplicaiile software
trebuie s fie independente de
modificrile fcute n tabelele de baz.
De exemplu, nu trebuie s se rescrie
codul n cazul n care tabelele sunt
combinate ntr-o vedere.
Integritatea datelor trebuie s se poat
defini ntr-un limbaj relaional i s fie
stocat n catalog. Constrngeri de
integritate a datelor trebuie s poat fi
construite la nivel de aplicaie. Acest
concept este oarecum strin modelului
relaional. n modelul relaional,
integritatea trebuie s fie inerent
proiectului bazei de date.

24

Access, prin motorul


Jet,
asigur
SQL
pentru
manipularea
datelor,
crearea
vederilor
(Select
Queries),
constrngerile
de
intergritate
(Relationships
i
Create Constraint.
Access a fost primul
SGBD pe PC-uri care
a permis interogri de
actualizare
(Update
Query)
Access
suport
interogri de aciune
(Action Query)

Access
permite
modificarea obiectelor
bazei de date fr
alterarea
celorlalte
componete
ale
Accessului. Jet are
motor de stocare logic.
n Access, o interogare
se poate lega la un
formular sau la un
raport la fel de simplu
ca un tabel.
Dei Microsoft nu a
documentat modul n
care Jet stocheaz
integritile, se pot
crea
reguli
de
integritate via SQL. Jet
va
stoca
aceste
informaii n proiectul
bazei de date ca parte a
catalogului.

11

Independena
distribuiei

Capacitile SGBDR nu au voie s fie


limitate datorit distribuiei unor
componente ale acestuia n baze de
date separate.

12

Inexistena
subminrilor

Dac un SGBDR are un limbaj de


manipulare "a unei singure nregistrri
la un moment dat", acest limbaj nu va
putea fi folosit la ocolirea regulilor de
integritate sau a constrngerilor
modelului relaional. Astfel nu numai
c SGBDR trebuie s fie guvernat de
reguli relaionale, ci aceste reguli
trebuie s fie i primare.

Pentru c motorul Jet


stocheaz regulile de
integritate la nivel de
motor,
alte
componente
ale
motorului nu afecteaz
regulile de integritate.
Access
permite
folosirea lui DAO i
ADO
pentru
manipularea a cte
unei
singure
nregistrri
la
un
moment
dat
prin
intermediul mulimilor
de
nregistrri
actualizabile
(updateable recordsets)

Nici unul dintre SGBD disponibile astzi nu respect complet cerinele


exprimate de Codd, n cadrul celor 13 reguli. De aceea pentru caracterizarea
unui SGBD nu sunt utilizate regulile lui Codd, fiind formulate n schimb o serie
de cerine minimale pe care trebuie s le ndeplineasc programul pentru a fi
considerat relaional (Lungu, et al., 1995).
Un SGBD este minimal relaional dac datele din cadrul bazei de date
sunt reprezentate prin valori n tabele, nu exist pointeri observabili de ctre
utilizatori, iar sistemul suport operatorii relaionali de proiecie, selecie i
compunere natural, fr limitri impuse din considerente interne.
Un SGBD este complet relaional dac este minimal relaional i, n plus,
sistemul suport restriciile de integritate de baz (unicitatea cheii primare,
constrngerile de referin, integritatea entitii) i precum i toate operaiile de
baz ale algebrei relaionale.
Un obiectiv important a proiectrii unei baze de date de tip relaional l
reprezint gruparea atributelor n relaii astfel nct redundana datelor s fie
minim. Relaiile care conin date redundante pot crea probleme, denumite
anomalii de reactualizare, care clasificate n:
o anomalii de tergere constau n faptul c anumite date care urmeaz s
fie terse, fac parte din tupluri n care se gsesc i alte date care mai
sunt necesare n continuare, ori tergerea fcndu-se la nivelul tuplului,
acestea se pierd;
o anomalii de inserare (adugare) constau n faptul c anumite date care
urmeaz s fie adugate fac parte din tupluri incomplete (pentru care nu
se cunosc toate datele), ceea ce face ca acestea s nu poat fi adugate;

25

anomalii de modificare rezult din faptul c este dificil de modificat o


valoare a unui atribut atunci cnd ea apare n mai multe tupluri ale
relaiei.
Eliminarea acestor anomalii se realizeaz cu ajutorul operaiei numite
normalizare5, care este o tehnic formal care se bazeaz pe cheile primare,
respectiv cheile candidat ale relaiilor i pe dependenele funcionale. Tehnica
include o mulime de reguli care pot fi utilizate pentru testarea relaiilor
individuale.
o

Subiect dezvoltat n capitolul 4.

26

1.4 Modelarea datelor


Pentru cunoaterea realitii nconjurtoare i prelucarea datelor cu ajutorul
calculatoarelor este necesar modelarea acestei realiti.
O baz de date ofer un anumit grad de abstractizare a datelor
(asemenea celor mai multe limbaje de programare), ascunznd detaliile de
implementare, detalii care nu sunt necesare celor mai muli dintre utilizatori. Cu
alte cuvinte, programele specifice unei baze de date nu depind de modul de
stocare i accesare a datelor la nivel fizic. Acest concept se numete
independen a datelor, se realizeaz cu ajutorul unui model de date (Data
Model6) i este principalul mecanism care asigur partajarea datelor din baza de
date ntre diferitele aplicaii care le acceseaz.

1.4.1 Modele de date: perspectiv istoric


Evoluia modelelor de date pentru bazele de date i SGBD-uri a fost
sugestiv sintetizat de R.G.G. Canttell n articolul su What Are NextGeneration DB Systems?", publicat n revista Communications of the ACM, n
octombrie 1991: Istoria informaticii a cunoscut multe generaii de sisteme de
gestiune a datelor, ncepnd cu sistemele de fiiere indexate, continund apoi cu
sistemele de tip ierarhic i de tip reea, iar - mai nou - cu sistemele relaionale.
Acum suntem pe punctul de a intra ntr-o nou generaie de sisteme de gestiune
a bazelor de date care ofer administrare de obiecte i care accept tipuri de
date mult mai complexe".
Cu toate c a generat o activitate de cercetare foarte susinut dar i o
activitate practic, industrial extrem de productiv, domeniul bazelor de date
este unul dintre cele mai tinere domenii ale informaticii. Este general acceptat
faptul c rdcinile" sale trebuie cutate aproximativ acum 40 de ani (data
apariiei primului sistem comercial de gestiune a bazelor de date), n obiectivul
fixat de preedintele J.F. Kennedy pentru programul Apollo: aducerea primului
om pe Lun pn la sfritul anilor 60. n acel moment, nu exista nici un
instrument informatic care s funcioneze efectiv i care s poat administra
uriaele volume de date implicate n programul spaial. Ca urmare, North
American Aviation (NAA), primul contractor al proiectului, a dezvoltat un
software bazat pe o structur ierarhic (prile se agreg n componente din ce
n ce mai ample) denumit GUAM (Generalized Update Access Method). Spre
6

E.F.Codd este considerat a fi printele conceptului de model de date, n general, i al


conceptului de model de date relaional, n particular .

27

mijlocul anilor '60, IBM s-a alturat NAA dezvoltnd n continuare GUAM i
producnd unul dintre primele sisteme comerciale de gestiune a bazelor de date:
IMS (Information Management System). IBM a preluat modelul ierarhic pentru
a respecta cerina de stocare a datelor pe benzi magnetice (deci n acces
secvenial). Ulterior, aceast restricie a fost nlturat i IMS continu s fie
principalul SGBD ierarhic utilizat de majoritatea calculatoarelor mainframe7.
Construirea bazelor de date a cunoscut o evoluie foarte rapid, trecnd
prin mai multe abordri, clasificate dup cum urmeaz:
sistemele de fiiere;
sistemele prerelaionale (sau istorice", numite i navigante sau
tradiionale -legacy systems): ierarhic i reea;
sistemul relaional;
sistemele postrelaionale: orientat obiect i hibrid (obiect-relaional);
sistemele semantice: multidimensional i logic (deductiv).

1.4.2 Sistemul de gestiune bazat pe fiiere (SGF)


Considerat de fapt un predecesor al sistemelor de gestiune a bazelor de
date, SGF reprezenta o colecie de programe care realizau - fiecare - cte un
serviciu" pentru utilizatorii datelor (de obicei: generarea de rapoarte). Fiecare
program i definea i i administra propriile date. Chiar dac a avut numeroase
dezavantaje (abordarea descentralizat n stocarea informaiilor, gradul mare de
redundan i dependen program-date), sistemul de gestiune bazat pe fiiere a
constituit un salt semnificativ fa de fiierele administrate manual: saltul de la
abordarea informaional la cea informatic.

Un calculator mainframe este un calculator cu capacitate de memorie i vitez de lucru foarte


mari, utilizat de marile corporaii pentru a stoca volume foarte mari de date i pentru a coordona
sute sau mii de terminale (inclusiv calculatoare personale) conectate la el.

28

1.4.3 Modele prerelaionale


Aceste modele pot fi caracterizate ca modele de moment: au oferit soluii
pentru problemele vremii lor, dar nu au avut un fundament teoretic puternic i
riguros. Att n modelul ierarhic, ct i n modelul reea datele erau reprezentate
ca mulimi de nregistrri (n sensul limbajului de programare Pascal: colecii
de pate de diferite tipuri: Integer, Boolean, Real etc.). Relaiile dintre ele erau
reprezentate prin legturi de tip pointer (adrese de locaii fizice de memorie)
nregistrrile care formau baza de date erau organizate:

n modelul ierarhic: ca o mulime de arbori ;

n modelul reea: ca o mulime de grafuri.

Ambele modele prerelaionale permiteau accesul la date de-a lungul unor


drumuri (ci) predefinite, explicit stabilite la nivelul programelor de aplicaii (de
i numele de modele navigante). Ca urmare, orice modificare a structurii bazei
de date antrena modificarea acestor ci n programele deja scrise. Exemple: :tru
modelul ierarhic: IMS (amintit mai sus); pentru modelul reea: IDS II (de
Honeywell), IMAGE (de la Hewlett Packard).
Studiu de caz: modelarea activitii didactice
ntr-o facultate, cadrele didactice desfoar activiti didactice de curs sau
examen; aceste activiti sunt pentru studeni i se desfoar n locaii
(amfiteatre sau laboratoare). De asemenea, cadrele didactice particip la
proiecte de cercetare tiinific. Figura 1.2 prezint modelul ierarhic al facultii
iar figura 1.3 prezint modelul reea.

Figura 1.2 Modelul ierarhic

29

Figura 1.3 Modelul reea

1.4.4 Modelul relaional


Considerat drept cel mai important eveniment din istoria bazelor de date,
apariia modelului relaional s-a produs n iunie 1970, odat cu publicarea - n
revista Communications of the ACM - a articolului fundamental al lui Edgar
Frank Codd8 (de la IBM Research Laboratory): A Relaional Model of Data for
Large Shared Databanks". n acest articol, autorul aplica o serie de concepte din
algebra relaional pentru a rezolva problemele legate de stocarea volumelor
mari de date i enuna celebrele" 12 reguli (condiii) pe care trebuie s le
ndeplineasc un SGBD pentru a fi declarat relaional.
S amintim ns existena unui precursor: modelul bazat pe teoria
mulimilor, propus de D.L. Childs n articolul su: Feasability of a SetTheoretical Data Structure", aprut n 1968.
Cele mai importante prototipuri de sisteme de gestiune a bazelor de date
de tip relaional au fost:
System R, dezvoltat la San Jose Research Laboratory din California spre
sfritul anilor '70. Acest model a condus la:
8

E.F. Codd s-a nscut la 23 august 1923 n Portland, Marea Britanie, i a murit n 18 aprilie
2003, n Florida. A fcut studii de matematic i chimie la Oxford i s-a mutat n Statele Unite, n
1948, pentru a lucra la IBM. A introdus termenul OLAP (OnLine Analytical Processing) i a
impus modelul relaional; a avut, de asemenea, contribuii n domeniul modelelor de
calculabilitate prin lucrrile sale privind automatele celulare. A obinut de dou ori Premiul
Turing: n 1981 i 1994.

30

apariia unui limbaj structurat de interogare a bazelor de date: SQL.


producerea mai multor SGBD-uri relaionale comerciale: DB2 i
SQL/DS de la IBM i, respectiv, ORACLE de la Oracle
Corporation (n deceniul 9 al secolului trecut).
INGRES (Interactive Graphics Retrival System), dezvoltat la Universitatea
Berkeley din California.
Peterlee Relaional Test Vehicle, dezvoltat la IBM UK Centre din Peterlee,
Marea Britanie.
Numrul sistemelor relaionale comerciale a ajuns acum la cteva sute, dintre
care cele mai cunoscute sunt: DB2 (de la IBM), Ingres II (de la Computer
Associates International Inc.), Oracle 10g (de la Oracle Corporation), Ms
Access, FoxPro (de la Microsoft), Paradox, Visual dBase (de la Borland),
Sybase Adapted Server (de la Sybase Inc.). Succesul acestui model continu s
fie att de mare nct multe sisteme nerelaionale ofer acum i o interfa cu
utilizatorii de tip relaional, indiferent de modelul de date pe care se bazeaz de
fapt.
Informal putem defini model relaional de date ca pe un model n care:

datele sunt percepute de utilizatori ca nite tabele i numai ca nite tabele;


operaiile disponibile pentru utilizatori (spre exemplu, pentru obinerea
informaiilor) sunt operaii care genereaz noi tabele pe baza tabelelor
vechi: operaia de selecie (SELECT) extrage o submulime de rnduri
dintr-o tabel, operaia de proiecie (PROJECT) extrage o submulime de
coloane, operaia de juxtapunere (JOIN) asociaz dou tabele pe baza
valorilor identice pe care le conin n anumite coloane, de asemenea
identice; or, toate aceste submulimi rezultate pot fi privite i ele nsele ca
nite tabele.
Numele modelului relaional provine de la conceptul matematic de relaie. Aa
cum o funcie f : {1, 2,...,n} N R are mai multe reprezentri convenionale,
dintre care cea mai comod este cea de vector, tot astfel relaia poate avea mai
multe reprezentri, una dintre ele fiind tabela. Din acest motiv, cel puin la nivel
informal, termenii de relaie i tabel pot fi considerai sinonimi.
o
o

31

1.4.5 Modelele postrelaionale i noi funcionaliti


Chiar dac se regsete n descrierea unor situaii reale, cu organizare
intrinsec piramidal, modelul ierarhic i-a atins rapid limitele. La fel, modelul
relaional a devenit impropriu pentru rezolvarea unor probleme din realitatea
nconjurtoare care presupun manipularea unor volume uriae de informaie, a
unei mari varieti de tipuri de date: hri meteorologice sau geografice necesare
previziunilor meteorologice sau dirijrii traficului, imagini transmise prin satelit
utilizate n msurarea factorilor poluani, date neconvenionale pentru
proiectarea asistat de calculator n inginerie sau arhitectur, serii dinamice
implicate n tranzaciile bursiere sau bancare, stocarea obiectelor binare mari
(BLOBs = Binary Large Objects) necesare n digitalizarea informaiei coninut
n fiierele audio sau video. Au aprut astfel i s-au dezvoltat modelele
postrelaionale, de generaia a treia: modelul orientat obiect i modelul obiectrelaional. Alturi de acestea observm noi funcionaliti ale bazelor de date:
baze de date partajate n reea, baze de date distribuite, baze de date deductive,
depozite de date, baze de date multidimensionale.
(I) Modelul orientat obiect permite nglobarea semanticii obiectelor
celor mai variate, la fel ca n limbajele de programare orientate-obiect. De altfel,
una dintre deosebirile majore fa de modelul relaional const n distanarea de
conceptul de independen fa de limbajele de programare i dezvoltarea
conceptului de integrare a limbajelor de programare n sistemul de gestiune a
bazei de date (invocarea unor funcii C++ mai degrab dect nglobarea unui
limbaj special pentru interogarea datelor, ca de exemplu SQL). Acest fapt a fost
determinat de:
utilizarea aproape exclusiv a limbajelor de programare orientate-obiect
pentru dezvoltarea aplicaiilor software;
includerea n aproape orice aplicaie software a unei baze de date ca
element fundamental al acesteia.
Cele mai cunoscute prototipuri de baze de date orientate-obiect sunt:
OPENOODB (de la Texas Instruments), IRIS (de la Hewlett Packard), iar ca
variant comercial: GEMSTONE/OPAL (de la GemStone Systems), VERSANT
(de la Versant Object Technology). Dei cu o cot de pia semnificativ
inferioar sistemului relaional (150 milioane dolari fa de 10 miliarde, numai
n S UA n anul 1999), modelul orientat-obiect este creditat cu o cretere anual
extrem de rapid: 50%.
n ciuda caracterului intuitiv i a altor avantaje evidente ale modelului
orientat-obiect, modelul relaional continu s domine piaa sistemelor de
gestiune a bazelor de date. Motivele sunt numeroase: fundamentarea
matematic riguroas, simplitatea, volumul mare de date deja stocate dup acest
model i costul enorm al migrrii spre un model complet diferit.

32

(II) Modelul obiect-relaional extinde modelul relaional, oferind un set


de tipuri de date mai bogat, i include i orientarea obiect. Se ncearc astfel
combinarea avantajelor celor dou abordri, cea relaional i cea orientatobiect: atributele i instanele entitilor pot avea tipuri complexe i pot evita
unele dintre restriciile specifice modelului relaional. De exemplu, n timp ce n
modelul relaional fiecare atribut trebuie s ia pentru fiecare instan a unei
entiti o valoare i numai una din domeniul lui de definiie, n acest model
poate lua un sub-set de valori (de exemplu: pentru un angajat oarecare, atributul
Telefon poate lua ca valori numrul telefonului fix de acas i de la serviciu, al
telefonului mobil propriu i de serviciu, dac angajatul dispune de toate patru).
Cel mai cunoscut exemplu: Informix Universal Server care combin tehnologiile relaionale i orientate obiect din dou produse preexistente: Informix
i Illustra.
Noi funcionaliti ale bazelor de date:
a. baze de date partajate n reea; n condiiile lucrului n reea este posibil s
se stocheze baza de date pe un calculator ce are loc de server. Astfel toi
utilizatorii vor partaja ntre ei baza de date. Administratorul bazei de date
are sarcini pe linia modelrii datelor, a implementrii bazei de date, definirii
utilizatorilor i a drepturilor de acces i ntreinerea bazei de date. Drepturile
de acces la nivel utilizator vizeaz operaiile pe care acestea le pot realiza.
b. baze de date distribuite; unitile economice dispersate geografic sunt
nevoite s acceseze baze de date care sunt distribuite. Lucrul ntr-o reea de
calculatoare permite distribuirea unei baze de date, din punct de vedere
fizic, pe mai multe site-uri. Fiecare site gzduiete un sistem local de
gestiune a bazelor de date. Utilizatorii unui site au acces la baz de date
local i, n plus, la bazele de date distribuite n celelalte site-uri.
Conexiunile inter-site-uri pot fi stabilite ntr-o manier divers.
c. baze de date deductive; acest gen de baze de date se fundamenteaz
cuplarea unei baze de date relaionale cu un procesor din clasa sistemelor
expert.
d. depozite de date (datawarehouse); un depozit de date reprezint un sistem
de baze de date 1) ce acoper un sistem temporal mai mare; 2) ce conine
date interne i externe; 3) optimizat pentru a rspunde interogrilor
complexe (de la manageri la analiti).
e. baze de date multidimensionale; acest gen de baze de date au aprut ca
urmare a necesitilor crescnde de procesare multidimensional a datelor.
Aplicaiile care se bazeaz pe analiza multidimensional a datelor sunt
cunoscute sub numele de OLAP (On Line Analytical Processing 9)

Se face distincie ntre:- OLTP (On-Line Transactional Processing) care privilegiaz:


integritatea i securitatea datelor i tratarea cererilor informaionale simple de ctre servicii
operaionale (producie, comercial, resurse umane).i OLAP, care privilegiaz analiza i
manipularea datelor (folosind cereri complexe) n vederea elaborrii stategiei i sunt destinate
ndeosebi conducerii i controlului de gestiune.

33

1.5 Rezumatul capitolului


A proiecta o baz de date nseamn a-i stabili structura, adic elementele
componente, caracteristicile acestora, restriciile pe care trebuie s le respecte,
relaiile dintre ele.
A construi o baz de date nseamn a memora (a introduce) datele n baza de
date, dup proiectarea acesteia.
A administra o baz de date nseamn a asigura: (1) accesul la date al utilizatorilor, n funcie de drepturile fiecruia (funcia i importana fiecruia n
organizaia respectiv), (2) coerena bazei de date (recuperarea informaiei
atunci cnd au loc incidente: ntreruperea alimentrii cu curent electric, operaii
contradictorii etc), (3) securitatea datelor stocate etc.
A interoga o baz de date nseamn a extrage i a vizualiza datele care
ndeplinesc anumite criterii i condiii.
A actualiza o baz de date nseamn a modifica structura sau informaiile
stocate n baza de date.
Sistemul de gestiune al bazei de date (SGBD) reprezint software-ul
propriu-zis al acesteia care asigur realizarea urmtoarelor activiti:
- definirea structurii bazei de date;
- ncrcarea datelor n baza de date;
- accesul la date (interogare, actualizare);
- ntreinerea bazei de date (colectarea i refolosirea spaiilor goale, refacerea
bazei de date n cazul unui incident);
- reorganizarea bazei de date (restructurarea i modificarea strategiei de
acces).

SGBDR se definete ca fiind un sistem de gestiune care utilizeaz


organizarea datelor conform modelului relaional.

34

1.6 ntrebri de auto-evaluare


1)
2)
3)
4)

Explicai conceptul de baz de date.


Definii sistemul de gestiune al bazelor de date i dai exemple.
Enumerai obiectivele unui SGBD.
Enumerai funciile unui SGBD.

Citii ntrebrile de mai jos i alegei varianta corect de rspuns:


5) Un model de date este:
a. mecanismul care asigur partajarea datelor dintr-o baz de date ntre
aplicaiile care o acceseaz.
b. tehnica prin care pot fi organizate informaiile ntr-o ntreprindere.
6) Modelul ierarhic i modelul reea sunt:
a) modele relaionale;
b) modele prerelaionale;
c) modele hibride.
7) Asociai fiecare tip de model de date cu conceptul teoretic pe care se
bazeaz:
Model
Ierarhic
Reea
Relaional

Concept
Relaie
Arbore
Graf

35

36

CAPITOLUL 2
PROIECTAREA I IMPLEMENTAREA BAZELOR DE
DATE
2.1 Arhitectura ANSI-SPARC
Asigurarea independenei fizice i logice a datelor impune adoptarea unei
arhitecturi organizat pe cel puin 3 nivele (arhitectura ANSI-SPARC10):
1. nivelul intern (baza de date fizic)
2. nivelul conceptual
3. nivelul extern
Obiectivul arhitecturii cu 3 nivele este separarea vederii fiecrui utilizator
asupra bazei de date de modul n care este ea reprezentat fizic (figura 2.1).

Figura 2.1 Arhitectura ANSI-SPARC pe trei nivele pentru bazele de date

10

ANSI = American National Standards Institute


SPARC = Standards Planning and Requirements Committee

37

Nivelul intern (baza de date fizic) este o colecie de fiiere coninnd datele
fizice la care se adaug diverse structuri auxiliare menite s asigure accesul
operativ la date. Structurile auxiliare pot fi: directoare, indexi, pointeri, tabele
de dispersie. Modul de organizare a bazei de date fizice este n mare msur
influenat de configuraia echipamentelor hardware care suport baza de date i
de sistemul de operare. Schimbarea sistemului de operare sau modificri n
configuraia hardware pot atrage modificri ale bazei de date fizice. Dac este
satisfcut condiia de independen fizic, aceste modificri n nivelul intern al
bazei de date nu vor ataca nivelele superioare ale acesteia.
Nivelul intern trateaz chestiuni cum ar fi:
alocarea spaiului de stocare pentru date i indexi ;
descrierea nregistrrilor pentru stocare (cu dimensiunile de
stocare pentru date) ;
plasarea nregistrrilor ;
tehnici de comprimare a datelor i de codificare a acestora.

Nivelul conceptual conine structura logic a bazei de date, aa cum este ea


vzut de administratorul bazei de date. Fiecare baz de date are un model
conceptual propriu prin care sunt numite i descrise toate entitile logice din
baza de date mpreun cu legturile dintre acestea. El reprezint o imagine
complet a cerinelor organizaiei privind datele.
Ex: n descrierea bazei de date a unei ntreprinderi pot aprea concepte ca:
angajat, produse, furnizor, beneficiar, etc.
Nivelul conceptual integreaz viziunile tuturor utilizatorilor asupra
bazei de date, fiind rezultatul unui compromis ntre cerinele diferiilor
utilizatori. Nivelul conceptual reprezint:
toate entitile, atributele i relaiile dintre ele;
constrngeri asupra datelor;
informaii semnatice asupra datelor;
informaii privind securitatea i integritatea.
De reinut c nivelul conceptual este o descriere a coninutului de date din
baza de date i NU cuprinde nici un fel de referire la modul de memorare a
datelor sau la strategia de acces. De ex. descrierea unei entiti trebuie s
conin numai tipurile de date (integer, real, character) i lungimea lor
(numrul maxim de cifre sau caractere), dar nici o informaie privind
stocarea, cum ar fi numrul de octei ocupat.
Nivelul extern este cel mai apropiat utilizatorului. Este ceea ce vede acesta din
baza de date, sau modul cum vede acesta baza de date. Nivelul extern este
derivat din cel conceptual dar poate prezenta deosebiri substaniale fa de
acesta. Un termen deseori folosit pentru modelul extern este acela de vedere sau

38

viziune. Prin aceste viziuni, utilizatorii au acces doar la pri bine definite din
baza de date, fiindu-le ascunse prile care nu intereseaz. Prin modelul extern
se realizeaz independena logic a datelor. Fiecrei viziuni i corespunde o
descriere n termenii entitilor logice din modelul conceptual.
Diferite vederi pot avea reprezentri diferite ale acelorai date. De ex, un
utilizator poate vedea datele calendaristice n format an-lun-zi, altul le poate
vedea ca zi-lun-an.Vederile pot include chiar date combinate sau derivate din
entiti diferite.

2.2 Proiectarea bazelor de date

Proiectarea unei baze de date= procesul de creare a unui proiect


pentru baza de date care s asigure desfurarea corect a
activitilor i rezolvarea cerinelor utilizatorilor.
Realizarea unei baze de date se desfoar n mai multe etape; cele mai
importante sunt: (1) analiza, (2) proiectarea i (3) implementarea.
(1) n etapa de analiz se examineaz n mod sistematic i aprofundat acel
aspect al lumii reale care trebuie transpus ntr-o baz de date: o tipografie,
magazin universal, organizarea unei expoziii etc; se stabilesc gradul de
generalitate, dimensiunea bazei de date, categoriile i numrul de viitori
utilizatori. O baz de date trebuie s conduc la ameliorarea activitii din
organizaia respectiv i se realizeaz la cererea proprietarului.
(2) Etapa de proiectare se poate descompune n trei subetape:
2a) proiectarea bazei de date la nivel conceptual,
2b) proiectarea bazei de date la nivel logic i
2c) proiectarea bazei de date la nivel fizic. n aceast etap se poate selecta
sistemul de gestiune a bazei de date, se proiecteaz interfeele i aplicaiile de
utilizare i administrare a bazei de date.
(3) Etapa de implementare const din realizarea propriu-zis a bazei de date:
scrierea programelor, conversia i ncrcarea datelor.

39

Principalele scopuri ale etapei de proiectare sunt:


reprezentarea datelor i a relaiilor dintre date, conform cerinelor formulate
de utilizatori i condiiilor impuse de programele de calculator;
furnizarea unui model de date care s asigure orice tip de prelucrare a
datelor;
schiarea unui proiect astfel structurat nct s satisfac parametrii de eficien specificai (de exemplu: obinerea datelor solicitate ntr-un interval de
timp cel mult egal cu o valoare prestabilit).
Proiectarea bazei de date se poate face prin metoda:
bottom-up: se ncepe cu stabilirea atributelor i - prin analiza asocierilor
dintre ele - se obin entitile i relaiile dintre entiti;
top-down: se dezvolt un model de date constnd din cteva entiti i
relaii foarte generale. Apoi, modelul este rafinat, obinndu-se modele
din ce n ce mai detaliate;
mixt: se combin i se itereaz metodele de mai sus.

2.3 Utilizarea modelelor de date n etapa de proiectare

Indiferent de metoda de proiectare folosit, identificarea entitilor i a


relaiilor dintre ele necesit:
nelegerea semnificaiei datelor care circul n organizaia respectiv;
nelegerea cerinelor specifice modului de lucru din organizaie;
reprezentarea coerent i sugestiv a acestor informaii.
Candance Fleming i Barbara von Halle (1989) au identificat cteva criterii
pe care ar trebui s le ndeplineasc un model de date pentru a fi considerat
optim n raport cu realitatea modelat: corectitudine, simplitate, expresivitate,
neredundan, extensibilitate, integritate.

40

Figura 2.2 Succesiunea fazelor n modelarea bazelor de date


Instrumentul universal capabil s asigure realizarea acestor obiective printr-o
bun comunicare ntre specialitii care proiecteaz baza de date i viitorii
utilizatori ai acesteia este modelarea datelor. Modelul de date de nivel nalt cel
mai frecvent folosit este modelul entitate-relaie (Entity-Relationship Model), iar
cea mai larg utilizat reprezentare grafic a acestuia (asupra creia vom reveni
n capitolul urmtor) este diagrama entitate-relaie (figura 2.3).

Figura 2.3 Diagrama entitate-relaie a bazei de date a unei faculti

41

2.4 Modelul conceptual al bazei de date


Proiectarea bazei de date la nivel conceptual = procesul de
construire a unui model privind informaiile care circul ntr-o
organizaie, independent de orice implementare a acestora la
nivel fizic.
Proiectarea schemei conceptuale a bazei de date constituie prima faz a
proiectrii i conduce la realizarea modelului conceptual. Acest model este
complet independent de orice detalii de implementare: ce SGBD, ce programe
de aplicaie (scrise n ce limbaj de programare) se vor folosi, pe ce platform
hardware i sub ce sistem de operare. Aceast faz a proiectrii bazei de date se
desfoar iterativ: fiecare variant a modelului este testat n raport cu cerinele
utilizatorilor (condiiile sau restriciile formulate de acetia) pentru a verifica
adecvarea modelului de date la situaia real modelat.
De exemplu, pentru domeniul comercial schema conceptual va conine
urmtoarele colecii de date: ageni comerciali, clieni (beneficiari), furnizori,
produse finite, materii prime, comenzi de produse finite, comenzi pentru
aprovizionarea cu materii prime, facturi, nregistrri contabile n contul
furnizori i de clieni.

2.5 Modelul logic al bazei de date


Proiectarea baze de date la nivel logic = procesul de construire a
unui model privind informaiile care circul ntr-o organizaie pe
baza unui model conceptual independent de alegerea unui SGBD,
precum i de orice detalii de implementare la nivel fizic .

Proiectarea logic a bazei de date este a doua faz a proiectrii i conduce la


realizarea modelului logic. ntruct pornete obligatoriu de la modelul conceptual, deci se bazeaz implicit pe un anumit tip de model de date - relaional,
ierarhic, orientat-obiect etc, modelul logic orienteaz proiectul bazei de date
spre un anumit tip de SGBD - relaional, ierarhic etc, fr a alege, spre exemplu,
ntre MS Access i Oracle. n continuare, detaliile de implementare fizic -

42

precum modul de stocare a datelor, tipurile de indexare etc. - sunt complet


ignorate.
Pe parcursul acestei etape, modelul este permanent testat i validat, cu
ajutorul datorilor, pentru a descoperi eventualele neconcordane cu restriciile
formulate de acetia. Tehnica folosit se numete normalizare i urmrete
asigurarea corectitudinii modelului logic (de exemplu, prin eliminarea
redundanelor n date, redudane care - o dat implementate - pot genera erori n
timpul operaiilor de actualizare a bazei).
Proiectarea conceptual i proiectarea logic a bazei de date sunt etape
foarte importante, critice, pentru realizarea unui proiect bun al bazei de date.
Dac unul dintre ele nu reprezint corect aspectul modelat, implementarea fizic
a bazei de date va fi eronat i corectarea ulterioar aproape imposibil. De
aceea, rafinarea modelului conceptual i a celui logic este un proces iterativ,
virtual infinit.

2.6 Modelul fizic al bazei de date

Proiectarea baze de date la nivel fizic = procesul de construire a unei


specificaii privind memorarea datelor din baza de date pe suporturile
fizice de memorie; sunt descrise: structura memoriei i metodele de
accesare menite s asigure accesul eficient la informaii.

Proiectarea fizic a bazei de date este ultima faz a proiectrii, cea n care
proiectantul alege modul concret de implementare a bazei de date. Prima
operaie const n alegerea unui SGBD care s poat implementa modelul logic.
Urmeaz comunicarea ntre modelul fizic i cel logic, similar celei dintre
modelul logic i cel conceptual: orice decizie privind implementarea fizic
(ameliorarea performanelor, asigurarea securitii etc.) poate afecta structura
modelului logic. Cu toate acestea, modelul conceptual i modelul logic trebuie
s fie n continuare complet separate de modelul fizic al bazei de date i fiecare
trebuie s-i pstreze scopul: primele s rspund la ntrebarea: CE trebuie
fcut"; ultimul la: CUM trebuie fcut".
Aceast abordare a proiectrii bazelor de date este compatibil cu
arhitectura pe trei nivele a acestora, aa cum a fost ea stabilit de ANSI-SPARC
n 1975.
Figura 2.4 prezint modelarea datelor i arhitectura ANSI-SPARC.

43

Figura 2.4 Modelarea datelor i arhitectura ANSI-SPARC.

44

2.7 Rezumatul capitolului


Asigurarea independenei fizice i logice a datelor impune adoptarea unei
arhitecturi organizat pe cel puin 3 nivele (arhitectura ANSI-SPARC): . nivelul
intern (baza de date fizic); nivelul conceptual i nivelul extern.
Nivelul intern (baza de date fizic) este o colecie de fiiere coninnd datele
fizice la care se adaug diverse structuri auxiliare menite s asigure accesul
operativ la date.
Nivelul intern trateaz chestiuni cum ar fi: alocarea spaiului de stocare pentru
date i indexi ; descrierea nregistrrilor pentru stocare (cu dimensiunile de
stocare pentru date) ; plasarea nregistrrilor ; tehnici de comprimare a
datelor i de codificare a acestora.

Nivelul conceptual conine structura logic a bazei de date, aa cum este ea


vzut de administratorul bazei de date. Fiecare baz de date are un model
conceptual propriu prin care sunt numite i descrise toate entitile logice din
baza de date mpreun cu legturile dintre acestea. Nivelul conceptual
reprezint: toate entitile, atributele i relaiile dintre ele; constrngeri asupra
datelor; informaii semnatice asupra datelor; informaii privind securitatea i
integritatea.
Nivelul extern este cel mai apropiat utilizatorului. Prin modelul extern se
realizeaz independena logic a datelor. Fiecrei viziuni i corespunde o
descriere n termenii entitilor logice din modelul conceptual.
Proiectarea unei baze de date este procesul de creare a unui proiect pentru
baza de date care s asigure desfurarea corect a activitilor i rezolvarea
cerinelor utilizatorilor.
Realizarea unei baze de date se desfoar n mai multe etape; cele mai
importante sunt:
(1) analiza se examineaz n mod sistematic i aprofundat acel aspect al lumii
reale care trebuie transpus ntr-o baz de date;
(2) proiectarea, are 3 subetape: 2a) proiectarea bazei de date la nivel conceptual,
2b) proiectarea bazei de date la nivel logic i 2c) proiectarea bazei de date la
nivel fizic. n aceast etap se poate selecta sistemul de gestiune a bazei de date,
se proiecteaz interfeele i aplicaiile de utilizare i administrare a bazei de
date.
(3) implementarea: realizarea propriu-zis a bazei de date.
Proiectarea bazei de date se poate face prin metoda: bottom-up, top-down sau
mixt.

45

2.8 ntrebri de autoevaluare


Citii ntrebrile de mai jos i alegei varianta corect de rspuns:
1) Care este ordinea corect a celor trei niveluri care compun arhitectura
ANSI-SPARC pentru bazele de date:
a)

nivelul conceptual, nivelul intern, nivelul extern;

b)

nivelul conceptual, nivelul extern, nivelul intern;

c)

nivelul extern; nivelul conceptual, nivelul intern.

2) Proiectarea bazelor de date se poate face prin:


a) metoda bottom-up;
b) metoda top-down;

c) combinarea i iterarea metodelor bottom-up i top-down.


d) oricare dintre metodele de mai sus.

3) Un model de date optim ndeplinete urmtoarele criterii:


a) corectitudine, simplitate;
b) expresivitate, neredundan;
c) extensibilitate, integritate;
d) toate cele de mai sus.
4) Care dintre cele trei modele ale unei baze de date: logic, conceptual, fizic,
rspunde" la ntrebarea: CE trebuie fcut?
a) modelul logic i modelul conceptual;
b) modelul conceptual i modelul fizic;
c) modelul fizic i modelul logic.

46

CAPITOLUL 3
MODELUL CONCEPTUAL AL BAZELOR DE DATE
RELAIONALE
Aa cum am vzut n capitolul anterior, proiectarea unei baze de date
ncepe cu analiza situaiei reale care trebuie modelat prin baza de date. Aceast
analiz necesit un dialog ntre proiectantul bazei de date i viitorii ei utilizatori.
Astfel, sunt puse n eviden:
cerinele utilizatorilor privind datele care trebuie stocate i administrate;
cerinele utilizatorilor privind operaiile care trebuie efectuate cu aceste
date.
Etapa urmtoare const n realizarea modelului conceptual al bazei de date. n
cazul modelului relaional, se ncepe cu o descriere detaliat a entitilor i
atributelor, a relaiilor dintre entiti i a condiiilor pe care trebuie s le ndeplineasc. Aceast descriere poate fi fi reprezentat prin mai multe forme: schema
conceptual, diagrama entitate-relaie (diagrama ER).

3.1 Entitai i instane


n literatura dedicat bazelor de date exist mai multe definiii pentru
termenul entitate:
Entitate = un lucru" sau un obiect" din lumea real care poate fi
distins (deosebit) de toate celelalte lucruri sau obiecte.
Entitate = un obiect (un tablou etc), un eveniment (naterea unei
persoane etc), o activitate (nchirierea unei maini etc.) din lumea
real care poate fi descris() prin racteristici bine definite (despre care
exist date care pot fi stocate).
Trebuie s facem distincie ntre conceptele de entitate i instan a unei entiti,
ist distincie este similar celei dintre tipul de dat i valoare ntr-un limbaj
programare.
Prin entitate nelegem mulimea tuturor elementelor de un anumit tip
(care prezint aceleai caracteristici).
Prin instan a unei entiti nelegem un singur element, bine
individualizat, unic, din mulimea elementelor care formeaz entitatea
respectiv.

47

Exemplu: fiecare client al unei bnci este o instan a entitii Clieni; fiecare
curs predat ntr-o facultate este o instan a entitii CursuriUniversitare etc.
OBSERVAII.
O entitate poate avea subentiti; acestea trebuie s fie disjuncte; de
exemplu, entitile Piloi i MecaniciDeBord sunt disjuncte i sunt subentiti
ale entitii PersonalNavigant.
ntr-o baz de date pot exista entiti a cror existen este determinat de
alte entiti; primele se numesc entiti dependente, celelalte se numesc entiti
principale (de exemplu, entitatea Persoanenntreinere depinde de entitate
Salariai).

3.2 Atribute
3.2.1 Concept i tipologie
Atribut = o caracteristic a unei entiti.

Un atribut posed un nume i - pentru fiecare instan a entitii - poate lua o


valoare dintr-o mulime fixat de valori, numit domeniul de valori ale
atributului.
Exemplu:
Fie entitatea ri; considerm atributele Nume, Continent, Capital, Form
DeGuvernmnt, Suprafa, SrbtoareNaional. Tabelul 3.1 prezint cteva
instane ale acestei entiti i valorile luate de atribute.
Numear

Continent

Capitala

Slovacia

Europa

Bratislava

Frana

Europa

Paris

Romnia

Europa

Bucureti

Japonia

Asia

Tokyo

SUA

America
de Nord

Washington

Forma de
guvernmnt
Republic
constituional
Republic
prezidenial
Republic
constituional
Monarhie
constituional
Republic
prezidenial

Nr.km
ptrai
49.036

Srbtoare
naional
1 Sept.

547.026

14 Iul.

237.500

1 Dec.

370.073

29 Apr.

9.363.123

4 Iul.

Tabel 3.1. Instanele entitii ri i valorile atributelor sale

48

Clasificarea atributelor
A) Atributele se pot clasifica dup complexitate:
o atribute compuse;
o

i atribute simple sau elementare, dup cum ele se mai descompune sau
nu n alte atribute, de mai mic complexitate.

Exist atribute nu pot fi dect simple (atributele Capital, Suprafa, Continent


ale entitii ri). Exist ns atribute care pot fi considerate fie simple, fie
compuse. De exemplu atributul DataNaterii cu valorile: 1 ianuarie 2000, 2 Mai
1990 etc. poate fi privit fie ca un atribut simplu, fie ca unul compus din
atributele Zi, Lun, An.
Este indicat s l tratm ca un atribut compus, dac prevedem necesitatea de a
avea acces direct la luna sau anul de natere al unei persoane nregistrate n baza
de date. Dac ns o astfel de necesitate nu este probabil i dac dorim s simplificm structura entitii (i deci a bazei de date), atunci este preferabil s l
tratm ca atribut simplu.
B) Atributele se pot clasifica dup mulimea de valori n:
o atribute cu valori unice;
o i atribute cu valori multiple, dup cum ele pot lua cte o singur
valoare (de exemplu, atributele Capital, Suprafa, Continent ale
entitii ri) sau, dimpotriv, pentru unele instane pot lua cte o
singur valoare, pentru altele mai multe valori, iar pentru altele nici o
valoare (de exemplu, atributul OraCuMinimumlMilioane Locuitori al
entitii ri).
Cnd este cazul se pot defini limite inferioare i/sau superioare pentru numrul
de valori pe care le poate lua un astfel de atribut pentru o instan oarecare (de
exemplu, putem specifica faptul c atributul NrTelefon al entitii Persoane
poate lua minimum o valoare - telefonul de serviciu - i maximum trei).
C) Atributele se pot clasifica dup stabilitate n:
o atribute de baz;
o i atribute derivate, dup cum ele au valori de sine stttoare sau valori
care pot fi calculate din valorile altor atribute.
De exemplu, s considerm entitile corelate Cri, cu atributul NumrAutori i Autori, cu atributul Titlu; atributul NumrAutori este un atribut derivat:
valorile pe care le ia pentru diferite instane ale entitii Cri pot fi calculate pe
baza numrului de apariii ale atributului Titlu pentru diferite instane ale
entitii Autori.

49

3.2.2 Cheia primar, un atribut special


Un atribut special l reprezint identificatorul unic. Utilizarea instanelor unei
entiti ridic dou probleme foarte importante:
-

modul de adresare a fiecrei instane a unei entiti;

determinarea instanelor care se repet.

S presupunem c dispunem de o baz de date a trenurilor care circul n


Romnia i vrem s prelucrm informaiile legate de un rapid care leag oraul
Timioara de Cluj Napoca. Ca s ne referim la aceast instan Trenuri ar trebui
s enumerm toate valorile pe care le iau atributele entitii. Dac ar fi 5 sau 10
atribute nu ar fi prea greu; dar dac ar fi 50? Pentru a simplifica referirea la
instanele unei entiti s-a recurs la mecanismul identificatorului unic, adic al
cheii primare.
Cheia primar= un atribut sau cea mai mic mulime de atribute ale
unei entiti care iau, fiecare instan a entitii respective, o valoare
i numai una, sugestiv prin sensul figurat al cuvntului cheie. Atunci
cnd niciun atribut sau pe atribute ale entitii, rezonabil de numeros,
nu iau valori distincte pentru fiecare instan a acesteia, se poate
aduga un atribut convenional" care s ndeplineasc aceast
condiie. De obicei, acest atribut este denumit cu ajutorul prefixelor
cod sau id.
Exemple:
1) pentru entiti precum Studeni, Profesori, Angajai un exemplu de
identificator unic este codul numeric personal; un contraexemplu: numele
(chiar nsoit de prenume) sau data naterii. Se poate utiliza i atributul
convenional CodStudent (CodProfesor etc), cu valori formate din iniialele
numelui i prenumelui, urmate de numere distincte formate din 2 sau 3
cifre.
2) Pentru entitatea Comenzi putem folosi un atribut convenional (de exemplu:
CodComand, cu valori numere distincte) sau putem folosi trei atribute ale
sale: NumeFurnizor, NumeClient, DataEmiterii.
n alte situaii, identificatorul unic este compus dintr-o combinaie de dou sau
mai multe atribute (identificator unic compus). De exemplu combinaia dintre
titlu, numele autorului i data apariiei poate forma unicul identificator al

50

entitii CARTE. Oare combinaia titlu i nume autor nu era suficient?


Rspunsul este NU, deoarece pot exista de exemplu mai multe volume scrise de
Mihai Eminescu avnd toate titlul Poezii, dar aprute la date diferite.
O entitate (de exemplu: Angajai, avnd atributele Nume, IniialaTatlui,
Prenume, Adres, Funcie, CodDepartament, Salariu, DataAngajrii) poate avea
mai multe atribute care pot juca rolul de identificator unic; de exemplu:
Nume, Prenume, Adres;
Nume, Prenume, IniialaTatlui, Adres;
Nume, Prenume, Funcie, CodDepartament;
Nume, Prenume, Adres, Funcie, CodDepartament.
Toate aceste combinaii de atribute se numesc chei candidate. Prima
combinaie ndeplinete condiia de minimalitate (pe care a doua nu o poate
satisface). Ca atare, dintre cele dou, numai aceasta poate constitui un
identificator unic sau o cheie primar pentru entitatea Angajai, n timp ce a
doua este numai o cheie candidat. Acelai lucru este valabil i pentru a treia i
a patra combinaie de atribute, ca i pentru prima i a patra combinaie de
atribute.
La alegerea cheia candidate inem cont de urmtoarele:
compus din cel mai mic numr de atribute;
compus din atribute ale cror valori nu sunt susceptibile de modificri
n viitor;
care nu este susceptibil s-i piard unicitatea n viitor;
care are valorile cele mai mici (cuvintele cele mai scurte, numerele cu
cel mai mic numr de cifre etc);
care este cel mai uor de utilizat.

3.2.3 Entitate sau atribut


Suntem adeseori confruntai cu problema: fiind dat o informaie care
trebuie inclus n baza de date, cum o modelm ca entitate sau ca atribut al
unei entiti deja existente? De exemplu adresa unui cadru didactic ar trebui s
fie un atribut al entitii CadruDidactic sau o entitate (corelat cu entitatea
CadruDidactic)? Rspunsul depinde de:
semantica (semnificaia, nelesul) datelor,
modul n care vom utiliza informaia respectiv.
n exemplul nostru, adresa va fi modelat ca entitate n oricare dintre
urmtoarele cazuri:

51

cadrul didactic are mai multe adrese. Motivul: ntr-o baz de date corect proiectat
(normalizat) un atribut nu poate lua simultan mai multe valori pentru aceeai instan
a unei entiti;
o
structura adresei (localitate, strad, sectorul/judeul etc.) este important ( exemplu,
trebuie s extragem din baza de date cadrele didactice care loc iese ntr-o anumit
localitate sau ntr-un anumit sector din Bucureti). Motivul: valorile atributelor sunt
atomice.
Este indicat modelarea prin atribut n oricare dintre situaiile complementare (o singur
adres, tratarea adresei ca un tot unitar).
o

52

3.3 Relaii
3.3.1 Definiie
Ori de cte ori un atribut al unei entiti se refer la alt entitate din baza
de date se stabilete, de fapt, o relaie ntre cele dou entiti (de exemplu,
atributul Destinaie al entitii Trenuri se refer la oraul ctre care circul un
tren, indicnd astfel o relaie ntre entitatea Trenuri i entitatea Orae). Cnd
proiectm baza de date, aceste referiri nu ar trebui s fie reprezentate ca atribute
ale entitilor, ci ca relaii (att n sensul real, ct i n sensul matematic al
cuvntului) ntre entiti. Atributele prin care se stabilete aceast relaie se
numesc chei sau cmpuri de legtur.
Relaie ntr-o baz de date = o legtur logic ntre dou sau mai multe entiti.

3.3.2 Gradul i cardinalitatea relaiilor


Relaiile sunt caracterizate prin grad i cardinalitate (sau tip).
Gradul unei relaii = numrul de entiti care particip la relaia respectiv
Dup grad, relaiile pot fi:
grad binar (ntre dou entiti; de exemplu: relaia Joacn este o relaie binar
ntre entitile Actori i Filme);
grad de tip n (ntre mai multe entiti; de exemplu: relaia Monteaz este o
relaie de gradul cinci ntre entitile Regizori, Scenografi,
DesigneriCostume, Actori i PieseDeTeatru).
Cardinalitatea (tipul) unei relaii binare = numrul de instane ale celor
dou entiti care sunt asociate prin relaia respectiv.
S considerm dou entiti E1 i E2; dup cardinalitate (sau tip), relaiile dintre cele dou
entiti pot fi :
o 1-1 (one-to-one): o relaie ntre dou entiti E1 i E2 n care unei instane a entitii
E 1 i corespunde o singura instan din entitatea E2 i reciproc.
o 1 - m (one-to-many): o relaie ntre dou entiti E1 i E2 n care unei instane a
entitii E1 (numit entitate dominant) i pot corespunde mai multe instane din
entitatea E2 (dar unei instane din E2 nu-i poate corespunde dect cel mult o
instan din E1).

53

o n - m (many-to-many): o relaie ntre dou entiti E1 i E2 n care unei instane a


entitii E 1 i pot corespunde mai multe instane din entitatea E2 i, reciproc, unei
instane din entitatea E2 i pot corespunde mai multe instane din entitatea E1.
n baza de date a facultii putem avea urmtoarele tipuri de relaii:
1-1: un student are o singur foaie matricol (n care sunt nregistrate notele sale); o foaie
matricol aparine unui singur student;
1-m: un student particip la mai multe cursuri opionale; un curs pentru un student;
m-m: un profesor pred la mai muli ani de studiu; la un an de studiu predau mai muli
profesori.

3.4 Schema conceptual i diagrama entitate-relaie


Aa cum am descris anterior, primul pas n realizarea unei aplicaii de
baze de date este analiza datelor i realizarea unei scheme conceptuale (model
conceptual) al acestor date.
n aceast etap sunt analizate natura i modul de utilizare a datelor. Sunt
identificate datele care vor trebui memorate i procesate, se mpart aceste date
n grupuri logice i se identific relaiile care exist ntre aceste grupuri.
Analiza datelor este un proces uneori dificil, care necesit mult timp, ns este o
etap absolut obligatorie. Fr o analiz atent a datelor i a modului de
utilizare a acestora, vom realiza o baz de date care putem constata n final c
nu ntrunete cerinele beneficiarului. Informaiile necesare realizrii modelului
conceptual se obin folosind metode convenionale precum intervievarea
oamenilor din cadrul organizaiei i studierea documentelor folosite.
Odat obinute aceste informaii ele trebuiesc reprezentate ntr-o form
convenional care s poat fi uor neleas de toat lumea. O astfel de
reprezentare este diagrama entitate-relaie11, numit i harta relaiilor, sau
ERD-ul (Entity Relationship Diagram). Aceste scheme sunt un instrument util
care uureaz comunicarea dintre specialitii care proiecteaz bazele de date i
programatori pe de o parte i beneficiari, pe de alt parte. Acetia din urm pot
nelege cu uurin o astfel de schem, chiar dac nu sunt cunosctori n
domeniul IT.
Schema conceptual a unei baze de date este o descriere de forma
nume_entitate={list de atribute}.
Cheile primare sunt atribute subliniate.

11

Modelul entitate-relaie a fost descries de Chen n 1976 i perfecionat ulterior.

54

Tabelul 3.2 i Tabelul 3.3 prezint conveniile de reprezentare grafic (n diagramele ER)
a entitilor, atributelor i relaiilor din modelul conceptual al unei baze de date relaionale.
Observaie.
Entitile i atributele sunt denumite prin substantive; relaiile dintre entiti sunt
denumite prin verbe precedate sau urmate de prepoziii; exist situaii n care ordinea
entitilor aflate n relaie este important (atunci avem, de fapt, dou relaii care trebuie
citite de la stnga la dreapta, respectiv de la dreapta la stnga) i situaii n care ordinea nu
este important.
Numele date entitilor, respectiv relaiilor, trebuie s fie unice la nivelul bazei de
date. Numele atributelor trebuie s fie unice numai la nivelul aceleiai entiti; eventualele
confuzii la nivelul bazei de date se rezolv prin cuplarea numelui atributului cu numele
entitii. Este totui indicat- pentru simplificarea referirilor- ca numele atributelor care
constituie cheile primare s fie unice la nivelul bazei de date.
Reprezentare grafic
Entitate principal
dreptunghi simplu
Entitate dependent
dreptunghi dublu
Atribut
elips
Atribut cu valori multiple elips dubl
Atribut derivat
elips punctat
Cheie primar
elips i subliniere cu linie continu
Cheie extern
elips i subliniere cu linie punctat
Relaie
romb
Tabelul 3.2. Un set de convenii pentru diagrama entitate-relaie

Entitate principal
Atribut obligatoriu
Atribut opional
Cheie primar
Relaie

Reprezentare grafic
dreptunghi cu colurile rotunjite
asterisc
cerc
diez
Linii cu sau fr bifurcaii

Tabelul 3.3. Un alt set de convenii pentru diagrama entitate-relaie

n figura 3.1 este prezentat schema conceptual i diagramele entitate-relaie (conform


conveniilor de mai sus) pentru baza de date a unei companii cinematografice care deine
mai multe studiouri unde se produc filme n care joac actori.
Actori={IdActor, Nume, Prenume}; Studiouri={Nume, Adresa};
Filme={Titlu, An, Buget, Tip}

55

Figura 3.1 Diagrama entitate-relaie


n concluzie putem sublinia cteva caracteristici ale ERD-urilor:
- sunt un instrument de proiectare ;
- sunt o reprezentare grafic a unui sistem de date ;
- ofer un model conceptual de nalt nivel al bazelor de date ;
- sprijin nelegerea de ctre utilizatori a datelor i a relaiilor dintre acestea ;
- sunt independente de implementare.

56

3.5 Modelul relaional: fundamentarea teoretic


3.5.1 Concepte de baz
Modelul relaional a fost fundamentat n anul 1970 12 de E.F.Codd i este
azi cel mai folosit model de baze de date n gestiunea bazelor de date. Acest
model este fundamentat pe dou ramuri ale matematicii teoria mulimilor i
logica predicatelor de ordinul nti. ntr-adevr, numele modelului provine de la
termenul relaie13, care constituie o parte a teoriei mulimilor.
Noiunile fundamentale ale modelului relaional sunt: relaie, domeniu, atribut,
tuplu i schem relaional.
Conceptul matematic aflat la baza modelului relaional al bazelor de date este cel de
relaie:
Se numete relaie peste mulimile M1, M2, ...Mn orice submulime a produsului lor
cartezian: R M1 x M2 x ... x Mn
Fie mulimile Marca = {Dacia, Ford, Fiat, Audi, Opel, Volvo}, Tip = {benzin,
motorin}, CapacCil = {1100, 1200, 1300, 1400, 1600}, NrLoc = {4,5}, NrUi = {2, 4,
5}. Atunci, entitatea Automobil poate fi reprezentat ca o relaie peste aceste mulimi:
Automobil Marca x Tip x CapacCil x NrLoc x NrUi

Iat cteva instane ale acestei entiti:


(Dacia, benzin, 1400, 5, 4), (Dacia, motorin, 1400, 5, 4), (Dacia, benzin, 1100, 5, 4),
(Dacia, motorin, 1400, 5. 5), (Ford, motorin, 1400, 5, 5), (Ford, benzin, 1600, 5, 4),
(Fiat, benzin. 1300, 5, 4), (Fiat, benzin, 1100, 5,4), (Audi, motorin, 1600, 5, 4), (Opel,
benzin, 1400, 5, 5), (Volvo, benzin, 1400, 5, 5), (Volvo, motorin, 1600, 5, 4).
Generaliznd exemplul de mai sus, obinem:
E A1x A2 x ... x An
unde am notat cu E entitatea i cu A1, A2,.................An mulimile de valori
(domeniile) ale atributelor sale. Un element al acestei relaii (adic un tuplu al
produsului cartezian) reprezint o instan ei a entitii E i const din valori
particulare ale atributelor).

12

Ideea i aparine lui D.F.Childs care a publicat n 1968 o lucrare n care a artat c orice
structur de date poate fi reprezentat sub form de tabele n interiorul creia trebuie s existe i
informaie de legtur (Lungu, et al, 1995).
13
O concepie greit, larg rspndit, este aceea c modelul relaional i-ar fi preluat numele de
la faptul c ntre tabelele unei baze de date relaionale exist relaii.

57

Pentru simplitatea reprezentrii, entitile nu sunt reprezentate ca mulimi de tupluri


(ca n exemplul nostru de mai sus), ci ca tabele (tabelul 3.4), tot aa cum n loc s notm
cu <(3,5) instana relaiei de ordine < N X N dintre naturale 3 i 5, scriem 3 < 5.
Marca
Dacia
Dacia
Dacia
Dacia
Ford
Ford
Fiat
Fiat
Audi
Opel
Volvo
Volvo

Tip
CapacCil
NrLoc
benzin
1400
5
motorin
1400
5
benzin
1100
5
motorin
1400
5
motorin
1400
5
benzin
1600
5
benzin
1300
5
benzin
1100
5
motorin
1600
5
benzin
1400
5
benzin
1400
5
motorin
1600
5
Tabelul 3.4 Instane ale entitii Automobil

NrUi
4
4
4
5
5
5
4
4
4
5
5
4

Puterea i elegana modelului relaional sunt date de faptul c relaiile dintre entiti
conduc la asocieri ce pot fi reprezentate tot prin tabele.
Conform modelului relaional avem urmtoarele:
o Orice entitate este reprezentat printr-o tabel; numele entitii devine
numele tabelei.
o Oricrui atribut al unei entiti i corespunde o coloan (numit i
cmp) n tabela corespunztoare entitii; numele atributului devine
antetul coloanei respective din tabel.
o Orice instan a unei entiti este reprezentat printr-un rnd n tabel
asociat entitii, numit nregistrare; fiecare celul din nregistrare
conine valoarea luat de atributul corespunztor pentru instana
respectiv.

58

3.5.2 Stabilirea relaiilor ntre entiti


La nivelul modelului conceptual, cardinalitatea relaiilor este o
caracteristic intrinsec a acestora; cnd proiectm baza de date, relaiile dintre
entiti trebuie definite n mod efectiv. Acest lucru se realizeaz n mod diferit
pentru fiecare tip de relaie.
Fie dou entiti U i V i fie T 1 i T2 tabelele prin care sunt reprezentate
(conform conveniilor din paragraful 3.4). Pentru simplitate, vom presupune c
entitile aflate n relaie sunt identificate prin chei primare formate dintr-un
singur atribut.
Relaii 1-1
S presupunem c proiectm baza de date a unei policlinici. n fiecare cabinet
lucreaz un singur medic i o singur asistent. Este evident c (din punctul de
vedere al ocuprii cabinetelor, al lucrului n echip) cele dou entiti, Medici
i Asistente, se afl n relaia 1-1.
Pentru a stabili o relaie (numit LucreazCu) de 1-1 ntre entitile Medici i
Asistente vom utiliza acelai atribut pe post de cheie primar (aici atributul
CodCabinet).

Figura 3.2. O relaie 1-1

Figura 3.3. Implementarea unei relaii 1-1 n MS Access

59

Relaii 1-m
Fie dou entiti U i V (de exemplu: Pacieni i Programri) avnd atributele
a1, (cheie primar), a2, ... , an i respectiv b1(cheie primar), b2, ... , bm, ap (de
exemplu: codPacient, numepren, datanaterii, adresa, telefon, nrSerieCI, CNP,
respectiv nrProgramare, dataprogramare, oraprogramare, codpacient). Prin
cheie extern nelegem un atribut al entitii V a crui mulime de valori
coincide cu mulimea valorilor cheii primare din entitatea U (aici: atributul
codPacient este cheie primar pentru entitatea Pacieni i cheie extern pentru
entitatea Programri).

Figura 3.4. O relaie 1-m

Figura 3.5. Implementarea unei relaii 1-m n MS Access


Observaii:
n diagrama entitate-relaie, cheile externe se reprezint la fel ca i cheile
primare, dar sublinierea se face punctat.
Observm c n timp ce, la nivelul entitii U, valorile luate de atributul a1
sunt unice (el fiind cheie primar), la nivelul entitii V valorile luate de
atributul a1 pot fi duplicate (el fiind cheie extern).
Din punctul de vedere al relaiei 1-m dintre entitile U i V, entitatea U
poate fi privit drept entitate principal, iar entitatea V drept entitate
secundar.

60

Pentru a stabili o relaie (numit Areprogramare) de 1-m ntre entitile Pacieni


i Programri procedm astfel:
1. includem n descrierea ambelor entiti un acelai atribut (aici:
CodPacient);
2. definim acest atribut drept cheie primar pentru entitatea principal i
cheie extern pentru entitatea secundar.
Relaii n-m
n acest caz, ne bazm pe faptul c n modelul relaional nu numai entitile, ci
i relaiile dintre ele sunt relaii n sens matematic i, ca urmare, pot fi
reprezentate prin tabele.
S considerm baza de date a unei faculti care conine cel puin entitile Curs
(IdCurs, denumire) i Student (NrMatricol, nume, prenume, grupa). Evident un
student poate s se nscrie la mai multe cursuri, iar la un curs pot participa mai
muli studeni.Avem de-a face cu o relaie n-m, numit CerereiOfert.
Pentru a o relaie n-m ntre dou entiti (aici CerereiOfert ntre entitile
Curs i Student) procedm astfel:
1. identificm cheile externe - dou atribute care s corespund atributelor
care funcioneaz drept chei primare pentru cele dou entiti (aici:
IdCurs i NrMatricol);
2. definim o entitate nou, CursStudent descris prin cele dou atribute;
aceast entitate este numit si entitate intersecie.
3. reducem astfel stabilirea unei relaii n-m (aici: relaia dintre Curs i
Student) la stabilirea a dou relaii 1-m (aici: relaiile dintre Curs i
CursStudent, i respectiv dintre Student i CursStudent (figurile 3.6 i
3.7).

Observm c singurele relaii dintre entiti care conduc la tabele


intermediare sunt relaiile de cardinalitate n-m. Tabela
corespunztoare trebuie s conin cel puin cheile externe necesare
relaionalii celor dou entiti; n acest caz, cheia primar a relaiei
este format din cele dou atribute; altfel: se poate aduga relaiei un
alt atribut care va fi definit drept cheie primar a acesteia.

Figura 3.6 prezint diagrama entitate pentru o relaie n-m, iar figura 3.7 prezint
implementarea acesteia n Access.

61

Figura 3.6. Diagrama entitate pentru o relaie n-m

Figura 3.7. Implementarea unei relaii de tip n-m


n Access

62

3.6 Reguli de integritate pentru bazele de date relaionale


Dup modelarea bazei de date la nivel structural (definirea entitilor,
atributelor lor i a relaiilor dintre ele), urmeaz nivelul operaional al modelrii:
stabilirea tipurilor de operaii care se pot efectua asupra datelor stocate
(sortare, cutare, vizualizare, adugare, tergere, modificare etc.);
verificarea respectrii regulilor de integritate (ceea ce va asigura
corectitudinea i consistena datelor).
Distingem urmtoarele tipuri de reguli de integritate:
reguli de integritate a entitilor;
reguli de integritate a relaiilor (numite i reguli de integritate
referenial)
La acestea se adaug i regulile de integritate impuse de situaia real
modelat prin baza de date, numite restricii procedurale.

3.6.1 Valoarea special Null a atributelor


Pentru a analiza regulile de integritate trebuie s analizm situaia unei
valori speciale pe care o pot lua atributele entitilor: valoarea Null.
Null= valoarea pe care o ia un atribut pentru o instan a unei entiti
atunci cnd pentru respectiva instan:
nu exist o valoare (de exemplu, pentru entitatea Angajai,
n cazul salariailor care nu sunt membri de sindicat, atributul
Restan cotizaie nu poate lua nici o valoare, deci i se
atribuie valoarea Null.
exist o valoare dar nu a fost nregistrat (de exemplu,
atributul SerieNrCI),
nu tim dac exist sau nu o valoare (de exemplu, atributul
NrApartament).

Prin urmare, aceast valoare (artificial), care nu trebuie confundat cu valoarea


0 sau cu irul vid de caractere, a fost incorporat modelului relaional bazelor de
date pentru a permite tratarea excepiilor i a datelor incomplete.

63

3.6.2 Integritatea entitilor


Prima regul de integritate se aplic cheilor primare.
Oricare ar fi entitatea E din baza de date, nici un atribut care face
parte din cheia sa primar nu poate lua valoarea NULL pentru
nici o instan a entitii.
Dac un atribut din structura cheii primare a entitii primete valoarea
NULL este contrazis cerina de minimalitate a cheii primare (ar nsemna c
restul atributelor care formeaz cheia i care iau numai valori din domeniile lor
de definiie ar fi suficiente pentru a identifica n mod unic fiecare instan a
entiti).

3.6.3 Integritatea referenial


A doua regul de integritate se aplic cheilor externe.
Fie dou entiti U i V relaionate; pentru orice instan a
entitii V (secundar) valoarea cheii externe trebuie s
corespund valorii cheii primare a unei instane oarecare a
entitii U (principal) sau s fie NULL.
Exemplu
Exemplu
Fie baza de date cu tabele Pacieni (codPacient, numepren, datanaterii, adresa,
telefon, nrSerieCI, CNP) i Programri (nrProgramare, dataprogramare,
oraprogramare, codpacient) aflate n relaie 1-m (Figura 3.8). Regula de
integritate referenial nu permite s nregistrm datele personale ale unui
pacient i s-l includem ntr-o list de programri care nu exist" (adic s dm
atributului su Codpacient - cheie extern pentru entitatea Programri - o
valoare pe care nu a luat-o atributul CodPacient -cheie primar pentru entitatea
Pacieni-pentru niciuna dintre instanele entitii).
Observaie: Dac trebuie s nregistrm datele unui pacient
nainte de a nregistra datele din tabela creia i aparine, putem
face acest lucru dnd atributului Codpacient. al entitii
programri valoarea NULL (lucru permis, ntruct aici atributul
Codpacient este extern, i nu primar).

64

Figura 3.8 Stabilirea integritii refereniale n Access

3.6.4 Restricii procedurale


n etapa de analiz a situaiei reale care trebuie modelat prin baza de
date, n discuiile dintre proiectanii bazei de date i viitorii ei proprietari i
utilizatori, pot aprea informaii suplimentare privind restriciile pe care trebuie
s le ndeplineasc datele stocate i operaiile efectuate asupra lor.
Restricii procedurale = reguli suplimentare privind modul de
nregistrare a datelor i de efectuare a operaiilor, specifice situaiei
reale sau impuse de diferitele categorii de participani la proiectarea,
construirea, administrarea i utilizarea bazei de date.

65

3.7 Implementarea modelului conceptual


Regulile ce se pot extrage studiu de caz pot fi descrise prin elemente ale
modelului conceptual: atribute, identificatori unici, relaii ntre entiti.
Trecerea de la modelul conceptual la modelul fizic se face prin
implementarea ntr-un SGBD (Microsoft Access n aceast carte) a elementelor
specifice reprezentate simbolic n Figura 3.9.
Model Conceptual

Model Fizic

Entitate ------------------------------------Atribut ------------------------------------Identificator unic -----------------------Relaie -------------------------------------

Tabel
Coloan
Cheie primar
Cheie strin (extern)

Figura 3.9. Trecerea de la modelul conceptual la modelul fizic


Un pas important n construirea bazei de date l reprezint crearea tabelelor a
relaiilor dintre ele, conform regulilor de integritate.
Tabela = o structur utilizat pentru stocarea i organizarea datelor.
Tabelele sunt formate din linii i coloane. Fiecare coloan reine date de anumit
tip i corespunde unui atribut al entitii; numele atributului devine antetul
coloanei.
Un rnd din tabel corespunde unui element al entitii (instan) i se
num nregistrare. Aceasta descrie complet proprietile unei instane. Dac ne
imaginm un tabel sub forma unei grile asemntoare unei foi de calcul tabelar,
coloanele verticale din gril sunt coloanele tabelului, iar rndurile orizontale
reprezint rndurile tabelului.

66

O cheie primar este reprezentat de o coloan sau o combinaie de


coloane ale cror valori sunt unice la nivelul tabelei i sunt completate
obligatoriu. Cheile primare provin din identificatorii unici ai entitii.
O relaie dintre dou entiti va fi transformat ntr-o coloan cheie
strin.
O constrngere de integritate implementeaz o regul referitoare la o
coloan sau la ntregul tabel. Constrngerile de integritate pot fi stocate n baza
de date, ca parte a definiiei tabelului.
Crearea unei tabele se realizeaz n dou etape:
a) n prima etap, se stabilete structura tabelei, specificndu-se numele
cmpurilor, lungimile acestora, precum i tipul informaiilor care vor fi
introduse n fiecare cmp;
b) n a doua etap, se ncarc efectiv datele n tabel.

67

3.8 Rezumatul capitolului


Modelul relaional a fost fundamentat n anul 197014 de E.F.Codd i este
azi cel mai folosit model de baze de date n gestiunea bazelor de date. Acest
model este fundamentat pe dou ramuri ale matematicii teoria mulimilor i
logica predicatelor de ordinul nti.
Noiunile fundamentale ale modelului relaional sunt: relaie, domeniu,
atribut, tuplu i schem relaional.
Conform modelului relaional avem urmtoarele:
o Orice entitate este reprezentat printr-o tabel; numele entitii devine
numele tabelei.
o Oricrui atribut al unei entiti i corespunde o coloan (numit i
cmp) n tabela corespunztoare entitii; numele atributului devine
antetul coloanei respective din tabel.
o Orice instan a unei entiti este reprezentat printr-un rnd n tabel
asociat entitii, numit nregistrare; fiecare celul din nregistrare
conine valoarea luat de atributul corespunztor pentru instana
respectiv.
Prin entitate nelegem mulimea tuturor elementelor de un anumit tip (care
prezint aceleai caracteristici).
Prin instan a unei entiti nelegem un singur element, bine individualizat,
unic, din mulimea elementelor care formeaz entitatea respectiv.
Atributul este o caracteristic a unei entiti.
Cheia primar este un atribut sau cea mai mic mulime de atribute ale unei
entiti care iau, fiecare instan a entitii respective, o valoare i numai una,
sugestiv prin sensul figurat al cuvntului cheie
Relaia ntr-o baz de date este o legtur logic ntre dou sau mai multe
entiti.
La proiectarea bazei de date, relaiile dintre entiti trebuie definite n mod
efectiv i pot fi de urmtoarele tipuri: 1-1, 1-m, n-m.
Dup modelarea bazei de date la nivel structural (definirea entitilor,
atributelor lor i a relaiilor dintre ele), urmeaz nivelul operaional al modelrii:
stabilirea tipurilor de operaii care se pot efectua asupra datelor stocate
(sortare, cutare, vizualizare, adugare, tergere, modificare etc.);
verificarea respectrii regulilor de integritate (ceea ce va asigura
corectitudinea i consistena datelor).
Distingem urmtoarele tipuri de reguli de integritate:
14

Ideea i aparine lui D.F.Childs care a publicat n 1968 o lucrare n care a artat c orice
structur de date poate fi reprezentat sub form de tabele n interiorul creia trebuie s existe i
informaie de legtur (Lungu, et al, 1995).

68

reguli de integritate a entitilor;


reguli de integritate referenial.
La acestea se adaug i regulile de integritate impuse de situaia real modelat
prin baza de date, numite restricii procedurale.
Prima regul de integritate se aplic cheilor primare (cheia sa primar nu
poate lua valoarea NULL pentru nici o instan a entitii).
A doua regul de integritate se aplic cheilor externe (pentru orice
instan a entitii secundare, valoarea cheii externe trebuie s corespund
valorii cheii primare a unei instane oarecare a entitii principale sau s fie
NULL.

69

3.9 ntrebri de auto-evaluare


I)

Entiti disjuncte; entiti dependente.


a) Fie baza de date a unei faculti i entitile Persoane, CadreDidactice,
Studeni, PersonalAdministrativ. Identificai entitile disjuncte. n ce
situaie
se
afl
entitile
Persoane,
CadreDidactice
i
PersonalAdministrativ?
b) Fie baza de date a unui club dotat cu sli de gimnastic, saloane de
cosmetic, solare i saun. Identificai entitile disjuncte, subentitile,
precum i entitile principale i cele dependente.

II) Entiti, atribute i chei primare


a) Dai exemple de instane ale entitii Studeni.
b) Dai exemple de valori ale atributului Vitez al entitii Microprocesor.
c) Descriei atributele urmtoarelor entiti i identificai un atribut/grup de
atribute cu proprietatea de identificator unic: (i) persoan; (ii) abonat
telefonic; (iii) automobil; (iv) calculator.
III) Exemple de relaii: grad i cardinaliti
Dai exemple de relaii binare din baza de date a unui club sportiv.
Dai exemple de relaii 1-1, 1-m i n-m din baza de date a unui spital.
Citii ntrebrile de mai jos i alegei varianta corect de rspuns:
IV) Modelul conceptual
1.Elementele de baz ale modelului conceptual sunt:
a) entitile i atributele;
b) instanele i relaiile;
c) cheile primare i cheile candidat;
d) entitile, atributele i relaiile.
2.Entitile principale sunt entiti care:
a) admit subentiti;
b) admit entiti dependente;
c) constau dintr-o singur instan.
3. Dup gradul de complexitate, atributele pot fi:
a) atribute de baz i atribute derivate:
b) atribute elementare i atribute compuse;
c) atribute cu valori unice i atribute cu valori multiple.
4.O entitate poate avea:
a) cel puin dou chei primare;
b) oricte chei primare, dar o singur cheie candidat;
c) oricte chei candidat, dar o singur cheie primar.

70

5.Modelul conceptual al unei baze de date poate fi reprezentat:


a) printr-o schem logic;
b) printr-o diagram relaionat;
c) printr-o schem conceptual sau printr-o diagram entitate-relaie.
V) Reguli de integritate
1.Principalele reguli de integritate pentru bazele de date se refer la:
a) entiti i relaii;
b) entiti i atribute;
c) entiti i chei primare;
d) atribute i relaii.
2. Regula de integritate a entitilor interzice unui atribut care face parte din
cheia primar a unei entiti:
a) s ia valoarea 0;
b) s ia valoarea 1;
c) s ia valoarea NULL;
d) s ia oricare dintre valorile 0, 1 sau NULL.
3. Integritatea referenial se refer la valorile luate de:
a) fiecare dintre cheile candidat ale entitii principale;
b) fiecare dintre cheile candidat ale entitii dependente;
c) cheia primar;
d) cheia extern.

71

72

CAPITOLUL 4
NORMALIZAREA BAZELOR DE DATE
4.1. Introducere
Normalizarea bazelor de date este o tehnic de proiectare a bazelor de date
relaionale. Scopul acesteia este de a elimina redundanele i anomaliile la
adugare, tergere i modificare. Crearea mai multor relaii poate ncetini timpul
de acces la date. n cadrul acestui capitol sunt prezentate toate tipurile de
dependene funcionale care stau la baza crerii formelor normale, cu exemple.
Modul n care se pot stabili relaiile unei baze de date nu este unic, eficiena
variantei aleas fiind dat de raportul dintre accesibilitatea datelor i eliminarea
anomaliilor.

4.2 Organizarea datelor


Dac datele sunt simple, ele pot fi organizate ntr-un tabel simplu. O baz de
date simpl poate fi ntreinut chiar i cu ajutorul unui procesor de texte sau a
unei aplicaii cu foi de calcul tabelar. Pentru a lucra cu un tabel simplu nu sunt
necesare cunotine despre teoria bazelor de date. De exemplu o list de
contacte Figura 1. Fiecare coloan de date (nume, adres, numr de telefon)
este logic legat de celelalte.

Fig. 1. Tabela non-relaional Contacte (n Microsoft Excel)

Bazele de date din viaa real conin adeseori sute de mii sau chiar milioane de
nregistrri, datele fiind legate instrinsec ntre ele.
Definiie: Relaia red informaiile despre un obiect reprezentat (o entitate
concret sau abstract). Schema relaiei este expresia proprietilor comune i

73

invariante ale liniilor care compun relaia i este relativ constant n timp.
Atributul este o caracteristic a obiectului reprezentat ntr-o relaie.15
Un exemplu de relaie este prezentat n figura 1. Exemple de atribute: ID, Nume
Contact, Adresa Contact i Nr_tel Contact.
Utilizarea unei singure relaii pentru a menine o baz de date conduce la
repetri inutile ale datelor, adic redundan16.
Redundana reprezint o proprietate a unei colecii de date care se refer la
faptul c unele componente sunt memorate de mai multe ori pe suportul de
memorare.

Fig 2. Relaie simpl n Microsoft Access

Dup cum se poate vedea din figura 2, redundana excesiv poate determina un
proiectant de baze de date s evite folosirea unei singure relaii. n afara
redundanei, mai exist trei probleme importante legate de acest tip de
organizare:
Anomalia la modificare: pentru a modifica adresa furnizorului Pop Ion
este necesar modificarea fiecrui rnd care conine acea adres. Dac o
nregistrare nu este modificat, apare anomalia la modificare, rezultnd
o relaie care conine inexactiti.
Anomalia la inserare: dac se dorete adugarea unui nou furnizor, dar
nu exist nici o factur a acestuia sau nici un detaliu despre produsele
facturate, se poate aduga un rnd nou, iar n cmpurile n care
informaiile nu sunt disponibile se va plasa valoarea NULL (o valoare

15

Hurbean L., Dnia D., Negovan A.-M. Baze de date: de la teorie la practic utiliznd
Access 2007, Editura Mirton, Timioara, 2008, p.84
16
Giulvezan C., Mircea G., Trnveanu D. Baze de date: Teorie i practic. Access, VBA i
SQL, Editura Universitii de Vest, Timioara, 2009, p. 15

74

care indic o valoarea necunoscut sau care lipsete). Aceasta cauzeaz


aa-numita anomalie la inserare.
Anomalia la tergere: n contradicie cu problema precedent, dac se
dorete tergerea tuturor apariiilor furnizorului Pop Ion, automat vor fi
terse toate informaiile legate de produsele livrate i facturile pe care
acesta apare. Aceasta constituie anomalia la tergere.

Aceast list de probleme poteniale ofer suficiente argumente n favoarea


utilizrii mai multor relaii.

4.3 Dependene
n procesul de normalizare a bazei de date este necesar s se in seama de
anumite reguli (dependene, forme normale) care permit eliminarea anomaliilor
prezentate n paragraful anterior.
Dependenele de date reprezint constrngeri care se impun valorilor
atributelor unei relaii i care determin proprietile relaiei n raport cu
operaiile care pot genera anomalii (inserare, tergere, actualizare).

4.3.1 Dependene funcionale simple


Dependenele sunt structuri logice ce se stabilesc ntre atributele modelului
relaional. Acestea nu se determin inspectnd coninutului relaiei la un
moment dat, ci studiind semnificaia atributelor acesteia.
Definiie: ntre dou atribute A i B exist o dependen funcional17
dac fiecrei valori a lui A i corespunde o singur valoarea a lui B
(simbolizat AB). A poart numele de determinant iar B poart numele
de determinatul dependenei.
De exemplu, n cazul studenilor, unei valori a numrului matricol i corespunde
un singur nume i prenume, deci ntre nrmatr i numeprenstudent exist o
dependen funcional:
nrmatrnumeprenstudent

17

Tama I. (coord.), Stanciu V., Gheorghe M. Access 2007 Proiectare i realizare pas cu pas,
Editura Infomega, Bucureti, 2010, p.23

75

unde nrmatr este determinantul, iar numeprenstudent este determinatul.


Observaie: Dac A B, atunci la dou linii cu aceeai valoare pentru
atributul A le corespund aceeai valoare a atributului B18.
Alte exemple:
nr_f cod_furn
cod_p unit_masura
unde nr_f este numrul facturii, cod_furn este codul furnizorului, iar cod_p este
codul de bare al produsului, unit_masura fiind unitatea de msur a produsului.
Observaie: ntre cmpul de tip cheie primar al unei relaii i celelalte
cmpuri ale relaiei exist dependene funcionale.
Definiie: O dependen funcional n care determinatul este alctuit dintrun singur atribut se numete dependen funcional canonic19.
Exemple de dependene funcionale canonice:
cod_p den_p
nr_document data document
unde den_p este denumirea produsului, nr_document este seria i numrul
documentului de plat.
Definiie: O dependen funcional este trivial dac i numai dac
determinatul este un subset al determinantului: dac BA atunci AB.
Exemple de dependene funcionale triviale:
(cod_p, nr_f) cod_p
(nr_document, tip_document) nr_document
Definiie: Dependenele funcionale compuse 20 prezint ca determinant
dou sau mai multe atribute, care se scriu ntre paranteze.

18

Hurbean L., Dnia D., Negovan A.-M. Baze de date: de la teorie la practic utiliznd
Access 2007, Editura Mirton, Timioara, 2008, p.55
19
Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p.41
20
Hurbean L., Dnia D., Negovan A.-M. Baze de date: de la teorie la practic utiliznd
Access 2007, Editura Mirton, Timioara, 2008, p.56

76

Exemple de dependene funcionale compuse:


(nr_f, cod_p) pret_unitar
unde un numr de factur i un cod produs (cu presupunerea c pe o factur
codul produsului apare o singur dat) determin un unic pre unitar.
Definiie: Se numete dependen funcional complet21, o dependen
funcional de forma AB unde B este dependent funcional de A, fr s
fie dependent de nici una din componentele lui A.
ntre grupul de cmpuri (nr_matr, cod_disciplina) i nota exist o dependen
funcional complet, deoarece:
(nr_matricol, cod_disciplina) nota
nr_matricol nota
cod_disciplina nota
Pentru un student, numrul matricol i codul disciplinei determin n mod unic
nota, dar pentru un numr matricol exist mai multe note (la discipline diferite),
iar unui cod de disciplin i corespund mai multe note (ale mai multor studeni).
Definiie: O dependen AB se numete dependen funcional
parial22 dac i numai dac B este dependent funcional att de A, ct i
de o component a lui B.
De exemplu, ntre grupul de cmpuri (nr_document,tip_document) i suma
exist o dependen funcional parial, deoarece:
(nr_document, tip_document) suma
nr_document suma
tip_document suma
unde nr_document semnific seria i numrul de pe documentul de plat
(valoare unic), suma seminific suma de plat iar tip_document are una din
valorile: chitan, ordin de plat, etc. Pentru un numr de document suma de
plat este unic. Dar pentru fiecare tip de document suma de plat poate fi
diferit (de exemplu, nu toate chitanele au aceeai sum de plat).

21

Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p.41
22
Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p.41

77

4.3.2 Dependene funcionale directe i tranzitive


Definiie: O dependen funcional tranzitiv este acea dependen
AB care se poate descompune n ACB.
Exemplu de dependen funcional tranzitiv:
cod_banca adresa
cod_banca cod_agenie
cod_agenie adresa
Fiecare banc are mai multe agenii, fiecare agenie are propria adres.
Definiie: O dependen funcional direct este acea dependen AB
pentru care nu exist dependene tranzitive ACB.
Exemplu de dependen direct:
cod_banca denumire_banca

4.3.3 Dependene funcionale multiple


Definiie: ntre dou atribute A i B exist o dependen funcional
multipl, notat A
B, dac i numai dac unei valori a atributului A i
corespund dou sau mai multe valori ale atributului B23.
cod_banca cod_agenie
nr_f cantitate

4.3.4 Dependene multivaloare


Definiie: Tuplul reprezint o linie distinct de valori din cadrul unei
relaii24.

23

Tama I. (coord.), Stanciu V., Gheorghe M. Access 2007 Proiectare i realizare pas cu pas,
Editura Infomega, Bucureti, 2010, p.24
24
Hurbean L., Dnia D., Negovan A.-M. Baze de date: de la teorie la practic utiliznd
Access 2007, Editura Mirton, Timioara, 2008, p.84

78

Definiie: Se consider relaia R(A,B,C), unde A, B i C sunt atribute ale


acesteia (simple sau compuse). Fie ai,bi i ci valorile atributelor A, B i C.
Spunem c exist o dependen funcional multivaloare a atributului C
fa de B, notat B
C dac pentru orice valori a 1, a2, b, c1, c2 i a1a2 i
c1c2, astfel nct tuplurile (a1,b,c1) i (a2,b,c2) fac parte din relaia R, atunci
i tuplurile (a1,b,c2) i (a2,b,c1) fac parte din relaia R.
Ca exemplu de dependen multivaloare putem considera:
R(cod_depozit, cod_magazie, cod_p)
unde cod_depozit este codul depozitului, cod_magazie este codul magaziei i
cod_p este codul produsului. Este esenial presupunerea c magaziile se
aprovizioneaz de la acelai depozit i comercializeaz toate produsele
cumprate de la depozitul respectiv.
Din relaia R se pot extrage urmtoarele dependene multivaloare:
cod_depozit
cod_depozit

cod_magazie
cod_p

Exist dependen multivaloare a atributului cod_p fa de cod_magazie dac


pentru orice valori de tipul:
cod_depozit cod_magazie
cod_p
111
49
1234
111
51
1235
atunci urmtoarele valori aparin relaiei:
cod_depozit cod_magazie
cod_p
111
49
1235
111
51
1234
Toate magazinele aprovizionndu-se din acelai depozit, i comercializnd
aceleai produse, dac magazinul 49 comercializeaz produsul 1234 i
magazinul 51 comercializeaz produsul 1235 atunci putem fi siguri c i
magazinul 49 comercializeaz produsul 1235 i magazinul 51 comercializeaz
produsul 1234.
Dependenele funcionale sunt un caz particular al dependeei multivaloare.

79

4.3.5 Dependene jonciune


O relaie R{X, Y, Z} este jonciunea proieciilor sale XY, XZ i YZ dac
(x1,y1)XY, (y1,z1)YZ, atunci (x1, y1, z1)XYZ. Dac n R{X, Y, Z} exist
trei tupluri (x1, y1, z2), (x2, y1, z1) i (x1, y2, z1) atunci obligatoriu apare i tuplul
(x1, y1, z1) (condiia de jonciune).
Fie relaia R(A1, A2, ... An) i X1, X2,..., Xm, m subansambluri de atribute din R.
Definiie: Se spune c exist o dependen jonciune25 de ordinul m ntre
X1, X2,..., Xm, notat * X1X2...Xm sau *{X1, X2,..., Xm} dac i numai
dac R reprezint jonciunea proieciilor sale pe X1, X2,..., Xm, deci
R=R(X1)* R(X2)*...* R(Xm).
Considernd relaia R(cod_prof, nr_matr, cod_facultate) unde cod_prof este
codul profesorului universitar, nr_matr este numrul matricol al studentului, iar
cod_disc este codul disciplinei. Dac profesorul 111 pred studentului 1234,
profesorul 111 pred disciplina cu codul 13 i studentul 1234 studiaz disciplina
cu codul 13, atunci profesorul 111 intr n relaie cu studentul 1234 prin
intermediul disciplinei cu codul 13.
Se presupune c relaia R conine urmtoarele nregistrri:
cod_prof
nr_matr
cod_disc
111
1234
13
112
1234
12
111
1235
12
atunci exist i
cod_prof
nr_matr
cod_disc
111
1234
12
iar proieciile relaiei R sunt:
cod_prof nr_matr
nr_matr cod_disc
cod_prof cod_disc
cod_prof nr_matr
nr_matr
cod_disc
cod_prof cod_disc
111
1234
1234
13
111
13
112
1234
1234
12
111
12
111
1235
1235
12
112
12
Dependena multivaloare este un caz particular al dependenei jonciune.
25

Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p.44

80

4.3.6 Matricea dependenelor funcionale


Pentru obinerea modelului relaional se parcurg urmtorii pai26:
1. Construirea dicionarului de atribute (DA) atributele se vor prelua
din documente primare, rapoarte, indicatori, etc i se vor aduga n DA.
Reguli de formare a dicionarului de atribute:
fiecare atribut este scris o singur dat;
se vor elimina atributele calculate i atributele sinonime.
2. Stabilirea cheilor primare se vor alege cheile primare dintre
atributele candidate (cele care au valori unice).
3. Specificarea dependenelor se vor identifica tipurile de dependene
care exist ntre fiecare cheie primar i restul atributelor din DA.
4. Determinarea atributelor izolate se vor cuta determinanii
acestora. Se selecteaz mai nti grupurile de chei primare, apoi
grupurile de atribute non-cheie, iar n final, dac este cazul, se vor
aduga chei surogat.
5. Formarea relaiilor. Se va ine cont de urmtoarele reguli:
a. Fiecare determinant mpreun cu atributele determinate, vor
forma cte un tabel.
b. Dac ntre dou chei primare exist o dependen multipl
reciproc, atunci aceast dependen va genera un tabel. Cheia
primar a acestei relaii va fi format din cele dou atribute,
care, individual vor avea i rol de chei externe.
Exemplu:
Se dorete informatizarea unei pri din activitatea unei firme. Furnizorii sunt
identificai prin cod furnizor, denumire furnizor (numele i prenumele
furnizorului), localitatea, adresa, email, banca furnizor i cont furnizor. Despre
produse se cunosc cod produs, denumire produs, unitate de msur, stoc, pre
unitar. Produsele sunt depozitate n magazii, pentru care se cunosc cod
magazie, denumire magazie, gestionar (numele persoanei care are n gestiune
depozitul respectiv). Operaiunile se desfoar pe baza unor facturi, care
trebuie s conin numrul facturii i data facturii. Fiecare factur conine
detaliate liniile facturii i anume denumirea produsului, preul unitar, cantitatea
facturat, calculndu-se valoarea produsului (cu i fr TVA) i valoarea total
a facturii (cu i fr TVA).

26

Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p.44, p.57

81

Rezolvare:
1. Inventarierea atributelor
Pe baza analizei rezult urmtoarele atribute: cod_f (cod furnizor), den_f
(denumire furnizor), localit (localitatea furnizorului), adresa, email, banca, cont,
nr_f (numrul facturii), data_f (data facturii), nr_crt (numrul curent asociat
fiecrui produs de pe factur), cod_p (codul produsului), cantit (cantitatea
facturat), val_f_TVA (valoarea produsului fr TVA), val_c_TVA (valoarea
produsului cu TVA), val_totala_f_TVA (valoarea total a facturii fr TVA),
val_totala_c_TVA (valoarea total a facturii cu TVA), TVA (TVA-ul din
valoarea produsului), cotaTVA (valoarea cotei TVA), den_p (denumirea
produsului), um (unitatea de msur a produsului), stoc (stocul din produsul
respectiv), pret_u (preul unitar facturat al produsului), cod_m (codul magaziei
n care este depozitat), den_m (denumirea magaziei) i gestionar (numele
gestionarului).
2. Specificarea regulilor de gestiune
o factur este emis de un singur furnizor, un furnizor poate s apar pe
mai multe facturi;
o factur poate conine mai multe produse, iar un produs poate s apar
pe mai multe facturi;
un produs poate fi depozitat n mai multe magazii, iar o magazie poate
depozita mai multe produse.
Algoritmi de calcul
Val_f_tva = cantit*pret_u
TVA=cantit*pret_u*cotaTVA
Val_c_TVA=Val_f_TVA+TVA
Val_totala_f_TVA=
Val_totala_c_TVA=
3. ntocmirea dicionarului de atribute
Dicionarul de atribute DA: cod_f, den_f, localit, adresa, email, banca, cont,
nr_f, data_f, nr_crt, cod_p, cantit, cotaTVA, den_p, um, stoc, pret_u, cod_m,
den_m i gestionar.
4. Stabilirea cheilor primare: cod_f, cod_p, cod_m, nr_f.
5. Stabilirea dependeelor funcionale
Graful dependenelor funcionale simple

82

Graful dependenelor funcionale multiple


cod_f
nr_f
cod_m
cod_p
cod_p
cod_m
nr_f
cod_p
cod_p
nr_f
6. Atribute izolate: cantit, cotaTVA i pre_u sunt determinate de un grup
de atribute dup cum urmeaz:

7. Formarea tabelelor: Fiecare cheie primar i atributele determinate


direct i intranzitiv vor forma un tabel.
8. Identificarea cheilor externe: atributele subliniate prin linie
discontinu la nivelul modelului relaional.

unde

Fig. 3 Graful dependenelor funcionale multiple


semnific reprezentarea grafic a unei chei compuse.

83

9. Matricea dependenelor funcionale

unde

1 = dependene funcionale simple


1T= dependene funcionale simple tranzitive
# = chei primare

10. Definitivarea modelului relaional:


Furnizori(cod_f, den_f, localit, adresa, email, banca, cont)
Facturi(nr_f, data_f, cod_f)
Produse(cod_p, den_p, um)
ProduseFacturate(nr_f, nr_crt, cod_p, cantit, pret_u, cotaTVA )
Magazii(cod_m, den_m, gestionar)
ProduseMagazii(cod_p, cod_m, stoc)
Prin linie continu se simbolizeaz cheile primare, iar prin linie ntrerupt,
cheile strine.
11. Implementarea n Access

Fig. 4. Fereastra Relationship din Access

84

4.4 Forme normale


O form normal a unei relaii implic anumite condiii pe care trebuie s le
ndeplineasc valorile atributelor i dependenelor de date definite pe acea
relaie27.
E.F. Codd a prezentat n 1972 o tehnic pentru proiectarea bazelor de date
relaionale pe care a numit-o normalizare28. Acesta a propus trei forme
normale, numite prima form normal (FN1), a doua form normal (FN2) i a
treia form normal (FN3). Ulterior, a mai fost introdus o form normal care
completa FN3, aceasta fiind numit Boyce-Codd (FNBC). Acestor forme
normale le corespund dependene funcionale ntre atributele unei relaii.
Formele normale superioare cum ar fi (FN4) i (FN5) impun condiii
dependeelor multivaloare, respectiv de jonciune ntre atributele unei relaii i
sunt atribuite cercettorului Fagin.

4.4.1 Forma normal 1


O relaie se afl n forma normal 1 (FN1) dac toate atributele sale sunt
atomice (nu se mai pot descompune) i nerepetitive.
Pentru aducerea relaiilor n FN1 se parcurg urmtorii pai:
atributele compuse sunt nlocuite cu atribute complete;
pentru grupurile de atribute repetitive, se formeaz o alt relaie;
cheia primar a noii relaii va fi compus din cheia primar a primei
relaii i din atributele adiionale din noua relaie. Cheia primar a noii
relaii va fi cheie extern.
O relaie nu este n FN1 dac are cmpuri care conin valori care pot fi
descompuse n mai multe cmpuri (cum ar fi adresa) sau valori redundante
figura 5.

27

Ionescu F. Baze de date relaionale i aplicaii, Editura Tehnic, Bucureti, 2004, p.187
Hurbean L., Dnia D., Negovan A.-M. Baze de date: de la teorie la practic utiliznd
Access 2007, Editura Mirton, Timioara, 2008, p.60
28

85

De exemplu:

Fig. 5 Relaia Factura nu respect FN1

Fig. 6 Relaiile Furnizori, Facturi, LiniiFacturi i Produse respect FN1

4.4.2 Forma normal 2


O relaie se afl n forma normal 2 (FN2) dac respect FN1 i orice atribut
non-cheie este complet dependent de cheia primar a relaiei. FN2 interzice
existena dependenelor funcionale pariale ntre atributele cu rol de cheie
primar i celelalte atribute.
Pentru aducerea relaiilor din FN1 n FN2 se parcurg urmtorii pai:
se identific dependenele funcionale pariale;
acestea vor genera o nou relaie, avnd ca structur atributele
participante n dependena funcional parial;
atributele determinante devin chei externe n relaiile iniiale i chei
primare n relaiile nou create.

86

Fig. 6 Relaia FacturiProduse nu respect FN2

Relaia FacturiProduse nu se afl n forma normal 2 deoarece:


(Nrfact, Nrprod) DenProd
Nrprod DenProd
Relaia FacturiProduse prezint urmtoarele anomalii:
redundan pentru cmpul DenProd (care depinde parial de cheia
primar) figura 6;
anomalii la adugare: nu se pot aduga produse dac nu exist o
factur pentru acestea;
anomalii la tergere: tergerea unei facturi poate duce la tergerea
definitiv a unor produse;
anomalii la modificare: dac se modific denumirea unui produs,
atunci trebuie modificate toate nregistrrile care conin denumirea
produsului respectiv.

Fig. 7 Relaiile LiniiFacturi i Produse respect FN2

87

4.4.3 Forma normal 3


O relaie este n forma normal 3 (FN3) dac respect FN2 i toate atributele
non-cheie sunt dependente direct de cheia primar. Altfel spus, FN3 interzice
dependenele tranzitive.
O relaie care nu respect FN3 prezint anomalii la tergere, inserare i
modificare, precum i redundane pentru atributele determinate funcional
tranzitiv.
Pentru aducerea unei relaii FN2 n FN3, se parcurg urmtorii pai:
se identific dependenele funcionale tranzitive;
determinantul non-cheie mpreun cu atributul sau atributele
determinate funcional de ctre acestea, vor forma o nou relaie;
determinantul non-cheie devine cheie primar n relaia nou format i
cheie extern n relaia iniial.

Fig. 8 Relaia FacturiFurnizori nu respect FN3

Relaia FacturiFurnizori nu se afl n forma normal 3 deoarece exist o


dependen funcional tranzitiv:
Nrfact Nrfurn Numefurn
Relaia FacturiFurnizori prezint urmtoarele anomalii:
redundan pentru cmpul Numefurn (determinat funcional tranzitiv
din Nrfurn) figura 8;
anomalii la adugare: nu se pot aduga furnizori dac nu exist o
factur a acestora;
anomalii la tergere: tergerea unei facturi poate duce la tergerea
definitiv a furnizorului;
anomalii la modificare: dac se modific denumirea unui furnizor,
atunci trebuie modificate toate nregistrrile care conin denumirea
furnizorului respectiv.
Majoritatea specialitilor sunt de acord c o baz de date aflat n FN3 asigur
un raport satisfctor ntre rezolvarea redundanelor i a anomaliilor pe de o
parte i viteza de lucru i accesibilitatea datelor, de pe alt parte.

88

4.5 Concluzii
Normalizarea presupune efectuarea de verificri asupra datelor dintr-o relaie
pentru a determina dac aceasta satisface regulile formelor normale. Formele
normale se bazeaz pe dependenele funcionale ce se pot stabili ntre atributele
unei relaii.
Obiectivele normalizrii sunt: minimizarea redundanei, eliminarea anomaliilor,
facilitarea interogrilor bazei de date i diminuarea nevoii de modificare
periodic a structurii bazei de date.29
O baz de date riguros normalizat nu este neaprat i o baz de dat optim
datorit vitezei de lucru, a accesibilitii datelor de aceea n unele cazuri se
introduc selectiv date redundante pentru a crete performana sistemului. Acest
proces poart numele de denormalizare.

4.6 Rezumatul capitolului


Obiectivul central al normalizrii l constituie conceperea bazelor de date. O
baz de date normalizat trebuie s conin relaii n care s nu existe
redundane i anomalii. Eliminarea acestor anomalii se poate realiza prin
descompunerea relaiei n mai multe tabele. Modul n care se pot stabili relaiile
unei baze de date nu este unic, de aceea este necesar s existe criterii de
evaluare a calitii relaiilor. Pe baza dependenelor de date se pot stabili reguli
de definire a relaiilor, astfel nct acestea s prezinte anumite proprieti care
caracterizeaz formele normale ale relaiilor.

29

Hurbean L., Dnia D., Negovan A.-M. Baze de date: de la teorie la practic utiliznd
Access 2007, Editura Mirton, Timioara, 2008, p.85

89

4.7 ntrebri de autoevaluare din partea teoretic


1. S se defineasc conceptul de normalizare. S se detalieze obiectivele
normalizrii.
2. S se defineasc conceptul de redundan. S se susin cu argumente
necesitatea redundanelor necesare.
3. S se exemplifice dependenele funcionale, directe i tranzitive.
4. S se exemplifice dependenele complete i pariale.
5. S se formuleze un enun de baz de date care s conin mai multe
tabele i s se detalieze schema bazei de date pe baza matricii
dependenelor funcionale.
6. S se exemplifice o relaie care nu este n FN1 i s se detalieze
rezolvarea problemei.
7. S se exemplifice o relaie care nu este n FN2 i s se detalieze
rezolvarea problemei.
8. S se exemplifice o relaie care nu este n FN3 i s se detalieze
rezolvarea problemei.

90

4.8 Exemple
4.8.1 Problem rezolvat Filiala CEC
Se cere informatizarea activitii la o filial CEC. Clienii filialei sunt
identificai prin nume i prenume, cnp, seria i numrul de buletin, data
eliberrii buletinului i adres. Fiecare client poate s dein unul sau mai multe
cecuri. Pentru fiecare cec se cunoate: seria, numrul, data la care a fost eliberat,
suma depus n momentul eliberrii i tipul cecului (poate fi la termen sau la
vedere). De asemenea, fiecare cec poate s aib unul sau mai muli titulari.
Fiecare client poate efectua depuneri i restituiri. Depunerile se efectueaz prin
intermediul unei foi de depunere (FD) caracterizat prin: numr, dat i suma
depus. Restituirile se efectueaz prin intermediul foilor de restituire (FR)
caracterizate prin: numr, data i suma restituit. Fiecare cec se poate lichida de
ctre unul din titulari prin intermediul unei foi de lichidare (FL) caracterizat
prin: numr, data i suma din momentul lichidrii. Dobnda acordat pentru
cecuri se modific de la o zi la alta i este diferit pentru cecurile la termen fa
de cele la vedere.

Rezolvare
1. Inventarierea atributelor
Pe baza analizei rezult urmtoarele atribute: codcl, numepren, cnp, serieci,
nrci, dataelibci, adresa, serie_nrcec, dataelibcec, titularcec, codtipcec, tipcec,
termen, coddep, datadep, sumadep, codrest, datarest, sumarest, codlich,
datalich, sumalich, datadob, dobanda.
2. Specificarea regulilor de gestiune
un client poate avea mai multe cecuri, un cec poate avea mai muli
titulari (clieni);
pe un cec se pot face mai multe depuneri;
pe un cec se pot face mai multe restituiri;
un cec poate fi lichidat doar o singur dat;
mai multe cecuri sunt de acelai tip.
3. ntocmirea dicionarului de atribute
Dicionarul de atribute DA eliminm atributul titularcec (este echivalent cu
client) i unim atributele seriecec i nrcec ntr-un singur cmp, rezultnd: codcl,
numepren, cnp, serieci, nrci, dataelibci, adresa, serie_nrcec, dataelibcec, tipcec,

91

termen, coddep, datadep, sumadep, codrest, datarest, sumarest, codlich,


datalich, sumalich, datadob, dobanda.
4. Stabilirea cheilor primare: codcl, serie_nrcec, codtipcec, coddep,
codrest, codlich, codtipcec+datadob.
5. Stabilirea dependeelor funcionale
Graful dependenelor funcionale simple

Graful dependenelor funcionale multiple


codcl
serie_nrcec
serie_nrcec
codcl
serie_nrcec
coddep
serie_nrcec
codrest
codtip
serie_nrcec
Atribute izolate: pentru un tip de cec, ntr-o anumit dat, se
calculeaz o dobnd.
codtip
datadob

dobanda

6. Formarea tabelelor: Fiecare cheie primar i atributele determinate


direct i intranzitiv vor forma un tabel.
7. Identificarea cheilor externe: atributele subliniate prin linie
discontinu la nivelul modelului relaional.

92

8. Graful dependenelor funcionale

Matricea dependenelor funcionale

unde

1 = dependene funcionale simple


1T= dependene funcionale simple tranzitive
# = chei primare

93

9. Definitivarea modelului relaional:


Clienti (codcl, numepren, cnp, serieci, nrci, dataelibcl, adresa)
TipuriCecuri (codtip, tipcec, termen)
Cecuri (serie_nrcec, dataelibcec, codtip)
CecuriClienti (codcl, serie_nrcec)
Depuneri (coddep, datadep, sumadep, serie_nrcec)
Restituiri (codrest, datarest, sumarest, serie_nrcec)
Lichidari (codlich, datalich, sumalich, serie_nrcec)
Dobanzi (codtip, datadob, dobanda)
10. Implementarea n Access

Fig. 9 Fereastra Relationships

4.8.2 Probleme propuse


4.8.2.1 Agenie de turism30
O agenie de turism dorete s-i informatizeze activitatea de gestionare a
contractelor ncheiate pentru pachetele de servicii pe care le ofer. Turitii sunt
persoane fizice care se identific printr-un cod unic, nume prenume, CNP, serie
i numr CI, data naterii, telefon, numr paaport. Agenia ofer mai multe
categorii de servicii (excursii, cazare, bilete de avion); fiecare categorie de
servicii include tipuri de servicii (excursii circuit sau sejur, cazare all
inclusive sau demipensiune, bilete de avion dus, ntors, dus-ntors) pentru
30

Stanciu A. (coord.), Mihai F, Mangiuc D, et al Baze de date Access 2007: studii de caz,
Editura Infomega Bucureti, 2009, p. 28

94

care se memoreaz un cod unic i denumirea serviciului. Indiferent de


denumirea serviciului, se impune specificarea rii destinaie identificat prin
cod i denumire; pentru ara de destinaie se precizeaz localitatea destinaie,
pentru care se reine codul i numele.
Pentru ca s fie ct mai atractiv, agenia ofer anumite reduceri n funcie de
vsrta turitilor, astfel pentru turitii cu vrsta mai mic sau egal cu 12 ani, se
acord o reducere de 40% din tariful standard aferent fiecrui serviciu, iar copii
care nu au mplinit nc 12 ani beneficiaz de gratuitate.
Fiecare prestator de servicii se identific printr-un cod unic, denumire, numrul
de telefon, categoria n care se ncadreaz (companie aerian, firm de transport
terestru, unitate cazare).
Pentru serviciile prestate, agenia ncheie un contract de care pot beneficia mai
muli turiti (de exemplu, o familie). n cadrul contractului, pe lng numrul i
data ncheierii acestuia, se precizeaz turistul/turitii beneficiar(i), clauzele
contractuale (drepturile/obligaiile prilor contractuale), avansul, data pn la
care se poate achita valoarea integral a contractului, tariful standard aferent
serviciului respectiv, data plecrii i data sosirii. Dac turistul renun din vina
sa la serviciile care fac obiectul respectivului contract, el datoreaz ageniei
despgubiri difereniate n funcie de momentul renunrii (mai exact, numrul
de zile nainte de data plecrii).

4.8.2.2 Registrul de cas31


Firma ABC SRL are ca obiect de activitate realizarea de cursuri de pregtire i
perfecionare n domeniul limbilor strine. Se dorete realizarea unei baze de
date pentru evidena operaiilor realizate n lei n cadrul casieriei.
Zilnic se va realiza registrul de cas ce va conine data realizrii operaiei,
explicaia operaiei, suma operaiei i tipul operaiei (ncasare sau plat) precum
i numrul i tipul documentului (cec de numerar, chitana, foaie de vrsmnt,
dispoziie de plat sau ncasare, state de salarii, etc). Registrul de cas va
conine soldul iniial al zilei, totalul sumelor ncasate precum i soldul final al
zilei. Fiecare operaie nregistrat n baza de date va primi un numr unic folosit
la identificare.
ncasrile pot s provin din vnzarea de servicii proprii (taxele cursanilor) sau
ridicri de numerar de la banc, aport de capital. Plile se pot face pentru
achitarea drepturilor salariale, avansuri spre decontare, cumprri de bunuri,
31

Stanciu A. (coord.), Mihai F, Mangiuc D, et al Baze de date Access 2007: studii de caz,
Editura Infomega Bucureti, 2009, p. 111

95

depuneri de numerar la banc. Operaiile sunt grupate pe categorii n funcie de


sursa acestora, reinndu-se pentru fiecare operaie codul categoriei, denumirea
acesteia i tipul. Principalele categorii de operaii sunt tax cursani, ridicare
numerar banc, aport capital, achitare drepturi salariale, avans spre decontare,
cumprare bunuri, depunere de numerar la banc, la care pot fi adugate ulterior
(n timpul exploatrii bazei de date) i alte pli sau ncasri.
O categorie special de operaii o reprezint avansurile spre decontare. Acestea
trebuie justificate prin intermediul unor documente n cadrul deconturilor de
cheltuieli. Pentru fiecare decont de cheltuieli este necesar reinerea numrului
i datei acestuia, a documentelor (numr, data, suma, tip) ce justific cheltuirea
avansului precum i a datelor titularului avansului. Pot s beneficieze de
avansuri spre decontare salariaii firmei. Datele fiecrui salariat (nume, data
naterii, adresa) vor fi nregistrate n cadrul bazei de date o singur dat, acesta
fiind identificat cu ajutorul mrcii. Avansul neutilizat este restituit la casierie pe
baza documentului de ncasare. Documentele justificative pentru avansuri se
vor scana i se vor arhiva.

4.8.2.3 Societate de asigurri32


Se cere informatizarea activitii unei societi de asigurri. Clienii societii
pot fi persoane fizice sau juridice, caracterizate printr-un numr unic, nume i
prenume/denumire, adres i telefon. Acetia pot s ncheie diferite tipuri de
asigurri (de bunuri, de via). Asigurrile sunt ncheiate de agenii care sunt
identificai printr-un cod unic, nume i prenume. Contractul de asigurare este
caracterizat print-un numr, data ncheierii, obiectul ncheierii, obiectul
asigurrii, perioada (n luni), valoarea asigurat i prima ce va trebui pltit n
fiecare lun de ctre client. Clienii efectueaz plata primelor din ordin de plat
(persoane juridice) sau direct la casierie (persoane fizice), eliberndu-se
chitane. Documentul de plat conine: numrul documentului, data la care a
fost ntocmit i suma pltit. n momentul producerii riscului pentru care a fost
ntocmit asigurarea societatea pltete clientului despgubiri. La plata
despgubirilor se ntocmete un proces verbal care este caracterizat printr-un
numr, data ncheierii, descrierea cauzei care a generat despgubirea i
procentul n care este despgubit clientul.

32

Nstase P., Coscescu L., Covrig L., et al Tehnologia bazelor de date Access 2000, Editura
Economic, Bucureti, 2000, p. 351

96

CAPITOLUL 5
ELEMENTE INTRODUCTIVE N ACCESS
5.1 Introducere
Sistemele informatice din domeniul economic conin un volum relativ mare de
date care se organizeaz cel mai bine n baze de date. Microsoft Access 2007
face parte din suita Microsoft Office 2007, avnd caracteristicile specifice unui
sistem de gestiune al bazelor de date relaionale. Access este totodat i un
instrument complex de dezvoltare al aplicaiilor de baze de date.

5.2 SGBD Access: prezentare general


Microsoft Office Access 2007 este un sistem de gestiune a bazelor de date
(SGBD) dezvoltat de firma Microsoft care ofer urmtoarele faciliti33:
permite lucrul att pe staii individuale ct i n reea, cu exploatarea
partajat a datelor;
are n structur un limbaj neprocedural SQL (Structured Query
Language) larg rspndit n toate SBDG-urile;
modul de lucru vizual faciliteaz crearea rapid a unor aplicaii;
este autodocumentat i conine Wizard-uri;
are access la reeaua Internet.
Access 2007 include faciliti oferite de sistemul de operare Microsoft
Windows (de exemplu meniu contextual al obiectelor) i permite i faciliti de
tipul drag and drop. Microsoft Access este compatibil cu tehnicile de legare i
ncapsulare din tehnologia OLE Microsoft (Object Linking and Embedding).
Este recomandat utilizarea Microsoft Access dac:
sunt necesare baze de date relaionale (tabele multiple sau multidimensionale) sau dac se anticipeaz adugarea unor noi tabele pe
viitor;
cantitatea de date este mare;
este necesar o legtur permanent cu o baz de date extern de
dimensiuni mari, cum ar fi una construit cu Microsoft SQL Server sau
cu sistemul integrat al organizaiei;
33

Tama I. (coord.), Stanciu V., Gheorghe M. Access 2007 Proiectare i realizare pas cu pas,
Editura Infomega, Bucureti, 2010, p.7

97

este necesar regruparea datelor din diverse tabele ntr-un singur loc cu
ajutorul unor interogri complexe;
baza de date este accesat de mai muli utilizatori (se poate beneficia de
mecanismele de modificare furnizate de baza de date).
Este recomandat utilizarea Microsoft Excel dac:
sunt suficiente tabelele simple, fr relaii ntre ele;
se doresc efectuarea de calculi i comparaii statistice;
setul de date nu depete 15000 de nregistrri.

5.2.1 Caracteristici generale


Primul lucru care se poate observa la deschiderea Microsoft Access este noua
interfa grafic prietenoas cu utilizatorul (GUI Graphical User Interface),
folosit att de Access ct i de toat gama de produse Office 2007.
De pe bara de meniuri evideniem:
pagina Home (Views, Clipboard, Font, Rich Text, Records,
Sort&Filter, Find) pagina principal Access, conine funcii de
editri de baz cum ar fi Cut i Paste, mpreun cu marea majoritate a
opiunilor de formatare;
pagina Create (Tables, Forms, Reports, Other) grupeaz toate
opiunile de creare;
pagina External Data (Import, Export, Collect Data, SharePoint
Lists) conine toate operaiile care faciliteaz colaborarea i schimbul
de date;
pagina Database tools (Macro, Show/Hyde, Analyze, Move Data,
Database Tools) coloana vertebral a Access-ului. Aici se pot crea
sau menine relaiile dintre tabele, se analizeaz performanele fiierului
i se execut rutine de ntreinere.
Fereastra Access Options furnizeaz acces rapid la aproape toate opiunile care
pot fi configurabile n Access. Dintre acestea vom evidenia urmtoarele
opiuni:
Popular: opiunile cele mai populare printre utilizatori (selectate de
Microsoft);
Current Database: opiuni care afecteaz baza de date curent, de
exemplu, opiuni pentru adugarea unui titlu sau a unei icoane,
selectarea unui formular care s apar la deschiderea aplicaiei,
dezactivarea opiunii Layout view, i o opiune util programatorilor,
activarea sau dezactivarea panoului de navigare (Navigation Pane). n

98

cadrul acestei opiuni, utilizatorii pot crea o panglic special i o pot


folosi n locul celei predefinite;
Datasheet: opiuni de formatare pentru Datasheet View. Utiliznd
aceast opiune, se poate selecta tipul literelor folosite, afiarea liniilor
de ghidaj pe formulare i setarea efectelor implicite ale celulelor;
Object Designers: opiuni care pot fi setate i afecteaz modul n care
uneltele de design sunt configurate n Access. Opiunile sunt grupate
astfel: Table Design, Query Design, Form Design, Error Checking;
Proofing: include opiuni legate de verificri gramaticale cum ar fi:
spell checking, grammar checking, i auto correction;
Advanced: opiuni care pot fi setate i care controleaz modul n care
Access interacioneaz cu datele i utilizatorul cu aplicaiile. Sunt
disponibile urmtoarele grupuri de opiuni: Editing, Display, Printing,
General, Advanced;
Customization: utile pentru a aduga sau terge opiuni de pe panglic.
Add-Ins: o list a utilitarelor add-ins disponibile pentru Access;
Trust Center: acceseaz Trust Center. Muli utilizatori seteaz nivelul
de securitate la nivelul minim pentru a evita mesajele care apar atunci
cnd se deschide o baz de date care conine o macrocomand.
Microsoft recomand pstrarea nivelului de securitate la valoarea
implicit, i anume funcionalitate deplin. n Trust Center sunt
disponibile dou opiuni: Show the message bar in all applications
when content has been blocked i Never show information about
blocked content.
Resources: conine link-uri ctre resurse online care asist utilizatorul
care lucrez cu Access. Sunt disponibile linkuri la pagina Office,
diagnostice interactive Office 2007, help online i actualizri de
software.
Exist multe opiuni, controale i unelte disponibile pentru a ajuta la
modificarea programului i a aplicaiei fr a fi necesare cunotine de
programare.

5.2.2 Operaii cu baze de date


Pentru a deschide Microsoft Access 2007 se acioneaz butonul Start de pe
bara de sarcini, se selecteaz Microsoft Office, apoi Microsoft Office Access
2007.

99

Fig. 1 Deschiderea mediului de lucru Microsoft Access 2007

La deschiderea Microsoft Access 2007 pe ecran va apare fereastra Getting


Started with Microsoft Office Access.
Butonul Office

Fig. 2. Fereastra Getting Started with Microsoft Office Access

100

n partea din dreapta a ecranului sunt vizibile link-uri ctre ultimele fiiere de
tip baz de date utilizate. n cazul nchiderii accidentale a bazei de date, aceasta
poate fi deschis rapid selectnd primul link din lista Open Recent Database.
Dac se dorete modificarea locaiei implicite de salvare a bazelor de date se
selecteaz butonul Office, se alege opiunea Access Options, modificnd cu
ajutorul butonului Browse opiunea Default database folder.

Fig. 3. Modificarea locaiei implicite n care sunt salvate bazele de date

5.2.2.1 Crearea unei baze de date


Pentru a crea o baz de date vid se alege butonul Blank Database figura 2.
Folosind icoana de folder din partea din dreapta a ecranului se alege locaia
unde va fi salvat baza de date, se tasteaz numele dorit, apoi se apas butonul
Create figura 4.

Fig. 4 Stabilirea locaiei i a denumirii bazei de date

101

Odat cu crearea unei baze de date vide, Microsoft Access creaz o nou tabel
n care s fie salvate datele. Aceasta poarta numele implicit Table1 i este
deschis n Datasheet View (mod de vizualizare care permite afiarea datelor
din tabel). Pentru a crea o tabel n acest mod de vizualizare se poate studia
problema rezolvat 5.13.1.

5.2.2.2 Parolarea unei baze de date


Pentru a parola baza de date, aceasta trebuie s fie deschis exclusiv. Pentru
aceasta, se nchide baza de date folosind butonul Office, opiunea Close
Database figura 5.

Fig. 5 nchiderea unei baze de date

Pentru a uura accesul la anumite butoane se poate folosi bara de acces rapid.
Pentru a afia mai multe butoane pe aceasta (n cazul de fa butonul Open) se
apas sgeata din partea dreapt a barei, selectndu-se comanda Open. Butonul
Open va fi afiat pe bara de acces rapid. Analog se pot selecta alte butoane
pentru a fi afiate pe bara de acces rapid. Dac acestea nu sunt afiate implicit,
se pot cuta utiliznd comanda More Commands.

102

Fig. 6 Adugarea butonului Open pe bara de acces rapid

Pentru a deschide exclusiv baza de date creat anterior se apas butonul Open
de pe bara de acces rapid figura 7.

Fig. 7 Butonul Open de pe bara de acces rapid

n fereastra Open se selecteaz locaia, numele bazei de date, apoi de pe


butonul Open se selecteaz opiunea Open Exclusiv figura 8.

Fig. 8 Deschiderea exclusiv a unei baze de date

Baza de date fiind deschis exclusiv, de pe bara de meniuri se alege opiunea


Database Tools, apoi comanda Encrypt with Password figura 9. n fereastra
Set Database Password se cere introducerea parolei de dou ori, la apsarea
butonului OK baza de date fiind protejat.

103

Fig. 9 Parolarea bazei de date

Protejarea bazei de date este vizibil doar la deschiderea acesteia, deci pentru a
verifica acest lucru se nchide i se deschide din nou baza de date. Pentru a
elimina parola setat la deschiderea bazei de date, aceasta trebuie deschis
exclusiv, selectndu-se mai apoi opiunea Decrypt Database figura 10.

Fig. 10 Decriptarea bazei de date

n cazul n care panoul de navigare este ascuns, acesta poate fi afiat selectnd
sgeile laterale figura 11.

Fig. 11 Afiarea/ascunderea panoului de navigare

104

Afiarea sau ascunderea panglicii (Ribbon) poate fi controlat folosind


opiunea Minimize the Ribbon de pe bara de acces rapid figura 12.

Fig. 12 Minimizarea/afiarea panglicii (Ribbon)

Observaie: Baza de date se salveaz automat, dar obiectele coninute trebuie


salvate de ctre utilizator. Numele bazei de date este setat la nceputul crerii
acesteia. Dac se dorete salvarea bazei de date cu alt nume, de pe butonul
Office se alege Save as.. urmat de opiunea Access 2007 Database,
specificndu-se locaia i numele bazei de date.

5.2.2.3 Salvarea unei baze de date


Pentru a salva o baz de date cu un alt nume, se apeleaz butonul Office,
opiunea Save as, apoi Access 2007 Database, selectndu-se apoi locaia i/sau
noul nume al fiierului.
5.2.2.4 nchiderea unei baze de date
Pentru a nchide o baz de date, de pe butonul Office se apeleaz comanda
Close Database.
5.2.2.5 Deschiderea unei baze de date
Pentru a deschide o baz de date se poate folosi lista din partea dreapt a
ecranului, priul link fiind ctre ultima baz de date utilizat, sau utiliznd
butonul Office, opiunea Open.

5.2.3 Obiectele bazei de date


Principalele obiecte coninute n Microsoft Access 2007 sunt:
Tabele (Tables): structuri elementare n care sunt stocate datele n
cadrul unei baze de date. Tabelele sunt inima oricrei baze de date. De
exemplu, o baz de date legat de fitness poate s rein informaii
legate de antrenamentul efectuat, echipamentele utilizate i numrul

105

milkshake-urilor consumate n fiecare zi n trei tabele separate. O tabel


este containerul n care sunt stocate datele. Restul obiectelor permit
manipularea datelor stocate n tabele. Construirea tabelelor Access se
poate rezuma la dou activiti principale: crearea structurii tabelei (n
modul de vizualizare Design View) i popularea tabelului cu date fie
n Datasheet View, prin intermediul formularelor sau a instruciunilor
SQL;
Interogri (Queries): sunt structuri care permit efectuarea unei aciuni
rapide asupra unei tabele sau mai multor tabele. Aceste aciuni implic
de obicei obinerea unei informaii necesare (de exemplu, cumprturile
efectuate pe parcursul unei zile cu cardul de credit), sau aplicarea unor
modificri. Interogrile sunt obiecte virtuale de tip tabel care nu au
corespondent fizic, fiind definite cu ajutorul tabelelor create deja n
baza de date. Ele permit efectuarea seleciilor i sortrilor n tabele, a
calculelor simple i analizelor ncruciate, a aciunilor (crearea unui nou
tabel, adugarea, tergerea sau actualizarea nregistrrilor) sau execuia
unor comenzi SQL.
Formulare (Forms) sunt ferestre atractive folosite pentru a consulta
sau actualiza datele dintr-un tabel sau o interogare. Ele permit totodat
crearea unui meniu interactiv construit de ctre utilizator, furniznd i o
facilitate special pentru aceasta (Switchboard). Pe un formular pot fi
plasate butoane care pot ncorpora comenzi SQL;
Rapoarte (Reports) sunt utilizate pentru a tipri unele sau toate
informaiile din tabele sau interogri. Permit gruparea i sortarea
datelor, adugarea unor cmpuri calculate, numere de pagin, etc;
Macrocomenzi (Macros) mini-programe care automatizeaz
sarcinile curente. Macrocomenzile sunt formate dintr-o suit de aciuni;
Module (Modules) fiiere care conin cod Visual Basic Application.
VBA este un mediu de programare orientat obiect. Se pot defini
variabile, constante, funcii i proceduri globale ntregii aplicaii sau
asociate unui anumit obiect. Cu ajutorul acestor coduri se poate executa
aproape orice.

5.3 Obiecte Tables


naintea descoperirii bazelor de date, organizaiile lucrau cu datele manual. Ei
plasau hrtii n dosare i organizau dosarele n sertare ale unui dulap. Dulapul
este echivalentul bazei de date. Fiecare sertar plin de dosare corespunde unui
tabel din baza de date.

106

Un cmp este o unitate elementar sau o categorie cum ar fi titlurile crilor sau
numerele de telefon. Un cmp nu conine n mod necesar o valoare. De
exemplu, un cmp numit e-mail poate rmne necompletat dac furnizorul nu
deine o adres de e-mail. O nregistrare este un set complet de date (cmpuri)
care se refer la o persoan, loc, eveniment, idee. De exemplu, pentru un
profesor numrul matricol, numele, prezena i nota final compun o
nregistrare. O tabel, fundaia oricrei baze de date, este o colecie de
nregistrri care au legtur unele cu altele, i conine cmpuri pentru a organiza
datele.
O coloan reprezint un cmp, o linie reprezint o nregistrare. Fiecare
nregistrare conine aceleai cmpuri n aceeai ordine. Fiierul profesorului cu
prezenele studenilor este o tabel care conine nregistrri despre toi studenii
avnd o structur comun. O baz de date const n una sau mai multe tabele i
obiectele suport care permit introducerea datelor, prelucrarea i extragerea lor
din tabele.
valoarea cmpului
baza de date
nregistrare

tabel

Fig 13. Baz de date primitiv

Definiie: O cheie primar este un cmp (sau o combinaie de


cmpuri) a crui valori identific n mod unic o nregistrare ntr-un
tabel.
Cheie primar

Cmp

nregistrare

valoare
Fig. 14 Concepte de baz

107

Codul produsului este cheie primar n tabela produse. Cheia primar poate
conine numere, litere, sau o combinaie a acestora.
Puterea bazelor de date relaionale st n abilitatea SGBD-ului de a organiza
datele i a le recombina pentru a obine o imagine complet a evenimentelor
descrise. Un design eficient a bazelor de date conecteaz datele din diferite
tabele sub forma unui sistem de legturi.
Legtura dintre tabele este ca un fir electric care traverseaz baza de date
conectnd tabelele astfel nct s permit obinerea rspunsului la cererea
utilizatorului (figura 15). Odat identificat rspunsul, cmpurile i nregistrrile
sunt rearanjate astfel nct s poate fi nelese cu uurin de ctre utilizator.
Captul de nceput al firului este creat odat cu setarea cheii primare ntr-unul
dintre tabele. Cellalt capt la firului este legat de un cmp dintr-un alt tabel.
Acel cmp poart numele de cheie strin. De exemplu cmpul cod_f (cod
furnizor) din tabela furnizori este un cmp de tip cheie strin.
Definiie: O cheie strin este un cmp dintr-o tabel, care ntr-o alt
tabel este cheie primar.

Fig. 15 Fereastra Relationships

Dup cum se poate observa din figura 15, chiar i n relaia normalizat nc
mai exist redundane. De exemplu, codul produsului (cod_p) apare n mai
multe tabele. De fapt nu pot fi eliminate toate cmpurile duplicate i n acelai
timp meninute legturile dintre tabele. Acest tip de redundan (cheie primarcheie strin) poart numele de redundan necesar.
Orice legtur dintre dou tabele poat fi ntrit utilizndu-se regulile de
integritate referenial. Integritatea sugereaz ncredere. Atunci cnd regulile de
integritate sunt stabilite, utilizatorul poate avea ncredere n firul care leag
tabelele bazei de date, fiind pstrat acurateea datelor.
Regulile de tip cascad permit ca modificrile datelor s se perpetueze dintr-o
tabel n alta figura 16.

108

Definiie: Regula Cascade Update Related Records va fi setat n cazul


n care dac o valoare a cmpului pe care este setat cheia primar este
modificat, atunci toate valorile corespunztoare din tabela referit sunt
modificate automat cu aceeai valoare. Regula Cascade Delete Related
Records va fi setat n cazul n care dac o valoare din tabela de referin
este tears prin tergerea nregistrrii care o conine, atunci toate
nregistrrile din tabela referit care conin acea valoare referit vor fi
automat terse.

Fig. 16 Setarea regulilor de integritate referenial

Legturile dintre tabele n Microsoft Access 2007 sunt de mai multe tipuri:
One-to-Many (unu-la-mai-muli) aceast legtur se creaz ntre o
cheie primar dintr-un tabel i o cheie strin din alt tabel. n prima
tabel exist o singur nregistrare care conine o valoare a cmpului de
tip cheie primar. n cea de-a doua tabel exist mai multe nregistrri
care conin n cmpul comun aceeai valoare a cmpului comun.
One-to-One (unu-la-unu) se creaz ntre dou tabele care au aceeai
cheie primar sau un cmp de tip cheie primar n prima tabel i un
cmp cheie strin pe care este setat un index Unique din a doua tabel.
n acest caz n ambele tabele exist o singur nregistrare cu valoarea
cmpului comun identic. Acest tip de relaie se folosete foarte rar, n
special datorit necesitii meninerii securitii datelor din tabele.
Many-to-Many (mai-muli-la-mai-muli) acest tip de relaie este
construit artificial (nu exist n Access) i corespunde mai multor
valori ale cmpului comun din ambele tabele. n acest caz este necesar
construirea unui nou tabel numit tabel de jonciune.
ntr-o baz de date bine definit, relaia de tip one-to-many este cel mai frecvent
ntlnit.
Pentru a crea un nou tabel, de pe panglic, opiunea de meniu Create, se
selecteaz Table Design. Design View este un mod de vizualizare care ofer
cele mai puternice opiuni pentru definirea unei tabele.

109

Atunci cnd se proiecteaz o tabel este important cunoaterea operaiilor de


baz care pot fi efectuate cu cmpurile acesteia:
pentru adugarea unui nou cmp ntre alte cmpuri existente se
poziioneaz cursorul pe cmpul deasupra cruia se dorete adugarea
unui nou cmp, se apeleaz meniul contextual (clic cu butonul din
dreapta al mouse-ului) i se alege opiunea Insert Rows;
mutarea unui cmp un cmp poate fi mutat folosind drag-and-drop,
selectndu-se ptratul gri din stnga numelui cmpului i
repoziionndu-se cmpul n poziia dorit;
tergerea unui cmp se apeleaz meniul contextual al ptratului gri
din stnga numelui cmpului i se selecteaz Delete Rows. De reinut
faptul c odat cu tergerea unui cmp se terg toate datele depozitate
n acel cmp, aciunea nefiind reversibil, de aceea Access afieaz un
mesaj pentru a preveni eventualele tergeri accidentale.
Fiecare cmp are un nume (Field Name) cu ajutorul cruia sunt identificate
datele introduse n acel cmp. Numele cmpului trebuie s fie descriptiv pentru
datele coninute i poate conine maxim 64 de caractere incluznd litere, cifre i
spaii. Este interzis utilizarea caracterelor ., !, [, i ], iar numele cmpului nu
poate ncepe cu cu spaiu.
Fiecare cmp este definit ca fiind de un anumit tip (Data Type), care determin
valorile care pot fi introduse i operaiile care pot fi efectuate cu datele. Access
recunoate 10 tipuri de date:
Text date alfanumerice cele mai multe caractere care se afl pe
tastatur (incluznd numere), cu limita maxim de 255 de caractere.
Cmpurile care conin doar numere care nu sunt folosite pentru a
efectua calcule ar trebui setate ca fiind de tip Text (numere de
telefon, coduri potale, numrul crii de identitate, numrul de
paaport);
Number conine o valoare care poate fi folosit n calcule, ca de
exemplu numrul creditelor pe care le are un student. Coninutul
cmpului de tip Number este restricionat la numere, virgula zecimal i
simbolurile + i -:
Byte numere ntre 1 i 255 (ocup 1 byte);
Integer numere n intervalul [-32768,+32757] (ocup 2 bytes);
Long Integer [-2147483648,+2147483647] (ocup 4 bytes);
Single numere reprezentate n simpl precizie:
[-3.40*1038,3.40*1038] (ocup 4 bytes i are precizie de 7
zecimale);

110

Double numere reprezentate n dubl precizie, [-1.797*10308,


1.797*10308] (ocup 8 bytes i are precizie de 15 zecimale);
Replication ID GUID (Global Unique IDentifier) identificator
unic global, (ocup 16 bytes) este folosit pentru un cmp care
este sau compun un cmp de tip cheie strin corespondentul
unui cmp de tip cheie primar Autonumber;
Decimal [-1028, 1028] (ocup 12 bytes i implicit are o precizie
de 18 zecimale care poate s creasc pn la 28 de zecimale).
Memo blocuri mari de text de lungime maxim 65536 caractere.
Cmpurile de tip Memo sunt utilizate pentru a pstra date descriptive
(propoziii, paragrafe). Lungimea maxim este de is 2 GB.
Date/Time conine date calendaristice formatate, ore, sau ambele,
permind calcule aritmetice cu acestea. Anii din datele calendaristice
sunt n intervalul dintre anii 100 i 9999. Datele sunt salvate sub form
de numr pe 8 bytes, cu dubl precizie;
Currency numere cu 4 zecimale urmate de simbolul monetar, cu care
pot fi efecuate calcule. Ocup 8 bytes i sunt utilizate pentru calcule
financiare, dac nu se dorete rotunjirea valorilor;
AutoNumber un numr care este incrementat automat pentru fiecare
nregistrare. Valoarea unui cmp de tip Autonumber este unic pentru
fiecare nregistrare din tabel, de aceea tipul Autonumber se utilizez n
mod frecvent ca tip de date al unui cmp cheie primar. Numrtoarea
poate fi secvenial sau ntmpltoare (random). Valoarea acestuia nu
poate fi modificat i ocup 4 bytes;
Yes/No permite alegerea unei valori din 2 posibile, o informaie
discret care poate avea doar dou valori cum ar fi: True/False, Yes/No,
On/Off, (ocup 1 byte);
OLE Object conine un obiect creat cu o alt aplicaie, cum ar fi
Microsoft Excel, Microsoft Word sau poze. Dimensiunea maxim a
fiierului este de 2GB, dar baza de date este ncetinit considerabil prin
nglobarea obiectelor externe;
Hyperlink utilizat pentru a stoca adrese Web (URL Uniform
Resource Locators). Toate fiierele din suita Office permit faciliti
Web dac se selecteaz un link, automat este afiat pagina Web
asociat (1 GB);
Attachment cel mai nou tip de date introdus doar n MS Access
2007, permite ataarea mai multo obiecte create cu alte aplicaii.
Mrete flexibilitatea bazei de date prin utilizarea technicilor OLE
(Object Linking and Embedding=Legare i ncorporare de Obiecte);

111

Lookup Wizard este utilizat pentru valori care vor fi completate


selectnd o valoare dintr-o caset combinat. Nu este un tip de date
propriu-zis, ci un program utilitar care creaz relaii cu tabela printe
sau o list definit de utilizator.

Pentru a crea o legtur ntre tabele, se va crea tabela de referin cu cheia


primar, se insereaz date n tabel, apoi se creaz tabela referit, iar pentru
cmpul care va fi cheie strin se va selecta opiunea Lookup Wizard, cu prima
opiune I want the lookup column to lookup the values in a table or query;
se selecteaz numele tabelei de referin, cmpul de tip cheie primar din tabela
de referin i ordinea de sortare. Atunci cnd se introduc date n cmpul de tip
cheie strin din tabela referit se utilizeaz caseta combinat creat cu ajutorul
opiunii Lookup Wizard, selectndu-se din valorile din list.
Dac se dorete crearea unei liste predefinite de ctre utilizator, se va selecta
Lookup Wizard cu a doua opiune I will type in the values that I want, apoi
se vor insera toate valorile pe o coloan. Atunci cnd se insereaz datele n
cmpul respectiv, se utilizeaz caseta combinat creat automat de ctre
Lookup Wizard.
Description este o coloan opional care se utilizez dac se dorete afiarea
descrierii cmpului pe bara de stare atunci cnd cmpul este selectat (activ).
O proprietate este o caracteristic sau un atribut care determin cum va arta i
cum se va comporta obiectul. Fiecare obiect Access are o mulime de
proprieti. Proprietile tabelei sunt afiate i pot fi modificate n fereastra
Property Sheet. Aceasta se gsete pe panglic, n modul de vizualizare Design
View, opiunea de meniu Design.
Fiecare cmp are o mulime de proprieti. Proprietile sunt setate pe valoarea
implicit n concordan cu tipul de date selectat, dar pot fi modificate. Ele sunt
afiate n modul de vizualizare Design View, n partea de jos a ecranului.
Field Size (dimensiunea cmpului) ajusteaz dimensiunea unui
cmp de tip text sau limiteaz valoarea permis ntr-un cmp de tip
numeric. Microsoft Access utilizeaz doar cantitatea de spaiu de
stocare necesar, chiar dac dimensiunea cmpului permite o
dimensiune mai mare. Multe SGBD-uri folosesc tot spaiul specificat ca
dimensiune a cmpului. De aceea, este util crearea obinuinei de a
reduce dimensiunea spaiului cu scopul ajustrii la cerinele de stocare
ale sistemului (optimizarea spaiului de stocare);

112

Decimal Places specific numrul de zecimale. Valoare predefinit


este Auto sunt afiate toate zecimalele rezultate n urma calculelor,
dar nu mai mult de 15 zecimale;
Format modific modul de afiare al valorii unui cmp, dar nu
afecteaz valoarea stocat;
pentru unele tipuri de date cum ar fi Number, Date/Time i
Yes/No se poate alege formatul dorit dintr-o list;
pentru cmpuri de tip Number pot fi afiate valori pozitive,
negative, zero sau valoarea Null folosind caractere speciale (0,
#, $, %, E+, E-, e+, e-);
pentru cmpuri de tip Date/Time: se utilizeaz urmtoarele
caractere (d zi ntre 1 i 31, dd zi ntre 01 i 31, ddd
primele 3 litere n englez din numele zilei (de exemplu, Mon
de la Monday pentru ziua de Luni), dddd numele ntreg al
zilei, etc);
pentru cmpuri de tip Text:
! dac se introduc numere;
< litere mici; > majuscule;
text textul va aprea exact cum este scris: text;
@ creaz grupuri de numere: @@@@-@@@-@@@
cum ar fi 0744-256-56.
Input Mask faciliteaz introducerea datelor afind caractere care nu
sunt stocate, cum ar fi caracterul slash ntr-o dat calendaristic (/). De
asemenea, asigur validarea datelor pentru a corespunde formatului ales
(de exemplu, previne introducerea unei cifre n plus sau n minus n
cazul unui numr de telefon);
0 o cifr obligatorie ntre 0 i 9;
9 o cifr opional ntre 0 i 9;
A o liter sau o cifr obligatorie;
a o liter sau o cifr opional;
# o cifr opional ntre 0 i 9 sau un spaiu opional;
& orice caracter sau spaiu;
C un caracter opional sau un spaiu
L o liter obligatorie de la A la Z;
? o liter opional de la A la Z;
> litere care vor fi transformate n majuscule;
< litere care vor fi transformate n majuscule.
Cnd ambele proprieti sunt setate, (Format i Input Mask),
Format este cea impus (are prioritate).

113

114

Caption specific o etichet diferit fa de numele cmpului, care va


fi afiat n DataSheet View n capul de tabel, pe formulare i rapoarte.
Lungimea maxim a valorii introduse n Caption este 2084 caractere.
Valoarea proprietii Caption nu are nici o semnificaie n cadrul
interogrilor sau cnd se utilizeaz cod n Visual Basic Application;
Default value introduce automat o valoare predefinit pentru cmpul
respectiv atunci cnd o nou nregistrare este inserat ntr-un tabel. De
exemplu, dac foarte muli dintre studeni sunt nscui n Timioara,
valoarea proprietii Default Value poate fi modificat n Timioara;
Validation Rule respinge orice nregistrare pentru care valoarea
introdus n cmpul respectiv nu respect regula stabilit. Expresia
poate fi tastat n interiorul casetei de text, sau se poate selecta butonul
pentru a deschide fereastra Expression Builder. Aceast
proprietate nu poate fi folosit pentru tipuri de date cum ar fi:
Autonumber, OLE Object, Attachment, Number cu sub-tipul
Replication ID. Pentru a construi o regul de validare pot fi folosite
funcii Access, operatori i constante. Numele cmpului trebuie s apar
ntre paranteze drepte, de exemplu [cod produs]. Exemple de reguli de
validare:
>200 and <=400 pentru un cmp numeric;
<>NULL, IS NOT NULL pentru orice fel de cmp;
Timisoara pentru un cmp de tip Text;
>=#03/12/2011# pentru o dat calendaristic;
>=Date() pentru o dat calendaristic;
Year([data factura])=Year(Date()) unde fucia Year extrage
anul dintr-o dat calendaristic (n acet caz cmpul data
facturii), iar funcia Date() extrage data curent;
Validation Text specific mesajul de eroare care va fi afiat n cazul
n care regula de validare nu este respectat;
Required dac este setat pe Yes, respinge orice nregistrare care nu
conine o valoare n cmpul respectiv; valoarea predefinit este No;
Allow Zero Length dac este setat pe Yes, permite irul de lungime
zero n cazul cmpurilor de tip text sau memo; valoarea predefinit este
No;
Indexed mrete eficacitatea cutrilor n acel cmp (cmpul pe care
este setat cheia primar este ntotdeauna indexat):
No nu este setat nici un index;
Yes (No Duplicates) este setat un index care nu permite
duplicarea valorilor, ca n cazul CNP-ului, de exemplu. Este
valoarea care apare atunci cnd se seteaz cheia primar;

Yes (Duplicates Ok) este setat un index care permite duplicarea


valorilor, ca n cazul numelui pacientului, de exemplu.
Indecii mai pot fi definii i prin intermediul butonului Indexes de pe
panglic figura 17. Se poate seta numele indexului (Index Name),
cmpul pe care acesta va fi setat (Index Field), i ordinea de sortare
(Sort Order), specificndu-se pentru fiecare index tipul acestuia:
Primary (dac se dorete crearea unui index de tip Primary Key),
Unique (crearea unor chei candidate cu valori unice) sau Ignore Null
(crearea unui index care ignor valorile Null).

Fig. 17 Fereastra Indexes

Unicode Compression pentru cmpurile Text, Memo i Hyperlink,


are valoarea implicit setat pe Yes i este folosit pentru a eficientiza
modul de stocare a datelor;
IME Mode and IME Sentence Mode specific modul Input Method
Editor cu opiunea implicit No Control pentru versiunea n englez i
tipul de dat pentru modul Input Method;
Smart Tags pentru utilizatorii avansai, permite adugarea butoanelor
de aciune asociate unui cmp. Atunci cnd o baz de date ofer
produse la ofert, un buton de tip Smart Tag ncorporat cmpului nume
produs ar putea deschide un fiier de inventar pentru a vizualiza
produsele din stoc;
Text Align aliniaz textul, furniznd urmtoarele opiuni: General
(aliniere predefinit), Left (aliniere la stnga), Center (aliniere
centrat), Right (aliniere la dreapta) i Distributed (aliniere i la stnga
i la dreapta).

Datasheet View este utilizat pentru inserarea datelor n tabele. Vizualizarea de


tip Pivot Table View furnizez un mod convenabil de sumatizare i organizare
a datelor n grupuri de nregistrri. Vizualizarea Pivot Chart View afieaz un

115

grafic asociat modului de vizualizare Pivot Table View. Pentru a trece de la un


mod de vizualizare la altul, se poate utiliza fie butonul View de pe panglic,
opiunea de meniu Home, fie butonul corespunztor de pe bara de stare (Status
bar). O tabel poate fi deschis din panoul de navigare direct n modul de
vizualizare dorit apelndu-se meniul contextual al tabelei i selectndu-se
modul de vizualizare dorit.

5.4 Obiecte Queries


Interogarea este un obiect ce permite vizualizarea informaiilor din una sau mai
multe tabele pe baza unor criterii de selecie. Microsoft Access prevede o
interfa prietenoas cu utilizatorul, de tip QBE (Query By Example) pentru a
construi o interogare. Rezultatul unei interogri este o foaie de rspuns
dinamic care poart numele de Dynaset. Aceasta este volatil (dispare odat cu
nchiderea interogrii).
Cu ajutorul unei interogri pot fi grupate datele din mai multe tabele, pe baza
leagturilor create ntre ele, pot fi create noi cmpuri calculate, dar pot fi
efectuate i urmtoarele aciuni: crearea unui nou tabel, adugarea nregistrrilor
din alt tabel, modificarea valorii cmpurilor sau tergerea nregistrrilor.
Interogrile se creaz de obicei n modul de vizualizare Query Design. Pentru a
vedea rezultatul interogrii, se trece n modul de vizualizare Datasheet View
sau se apas butonul Run de pe panglic, opiunea de meniu Design. O alt
modalitate de a crea o interogare este folosind modul de vizualizare SQL View.
Aceast metod necesit cunotine de SQL (Structured QueryLanguage)
detaliate n capitolul urmtor.
Interogrile sunt de mai multe tipuri:
de selecie (SELECT) permit afiarea datelor din una sau mai multe
tabele, pe baza unor criterii de selecie, calcularea unor cmpuri i
afiarea datele ordonate dup anumite cmpuri cresctor sau
descresctor;
de sintetizare a datelor (TOTAL) permit selectarea unor cmpuri ca
criterii de grupare, fiind aplicate diverse funcii: SUM, MIN, MAX,
COUNT, etc;
de analiz ncruciat (CROSSTAB) de analiz ncruciat a
datelor;
de aciune (MAKE TABLE, APPEND, UPDATE, DELETE);
speciale (UNION, PASS THROUGH, DATA DEFINITION).
Cel mai des ntlnite i utilizate sunt interogrile de selecie.

116

5.4.1. Interogri de selecie


Pentru a crea o interogare, de pe panglic, opiunea de meniu Create, se apas
butonul Query Design.

Fig. 18 Fereastra QBE

n fereastra Show Table se va preciza sursa datelor executnd dublu-clic pe


numele tabelei sau tabelelor figura 18. De reinut c dac se selecteaz mai
multe tabele, trebuie specificate toate tabele intermediare pentru a fi vizibile
legturile dintre ele n caz contrar rezultatul interogrii nu este cel dorit. Dup
nchiderea ferestrei, dac se dorete redeschiderea ferestrei pentru a aduga o
nou tabel, se selecteaz butonul cu acelai nume de pe panglic. Dac se
dorete tergerea unei tabele, se apeleaz meniul contextual asociat acesteia,
selectndu-se comanda Delete. Dup ce tabelele au fost selectate, ferestra Show
Table se nchide.
Urmtorul pas este selectarea cmpurile din tabele. Se execut dublu clic pe
numele de cmpurilor din tabele, acestea fiind selectate automat n partea de jos
a ecranului, find completate liniile Field i Table.
Linia Sort permite ordonarea valorilor cmpurilor n ordine cresctoare
(Ascending) sau descresctoare (Descending).
Pe linia Show sunt selectate implicit toate cmpurile ca fiind vizibile. Dac se
dorete ascunderea unui cmp din vizualizarea final, se debifeaz check-box-ul
corespunztor.
Liniile Criteria i Or permit impunerea unor condiii. Dac operatorul dintre
condiii este AND, atunci toate condiiile se scriu pe linia Criteria. Dac ntre
condiii operatorul este OR, atunci a doua condiie se scrie pe linia Or.
Pentru a vizualiza rezultatul interogrii se trece de pe bara de stare n Datasheet
View.

117

Dintre operatorii folosii n construirea expresiilor de pe linia Criteria


amintim: + (adunare), - (scdere), * (nmulire), / (mprire), MOD (restul
mpririi a dou numere), ^ (ridicarea la putere, de exemplu x 2 se scrie x^2), &
(concatenare a dou iruri de caractere), = (verific egalitatea a dou valori), <>
(operatorul diferit, de exemplu ), < (strict mai mic), > (strict mai mare), <= (mai
mic sau egal), >= (mai mare sau egal), LIKE (format general LIKE masca, de
exemplu nume LIKE A* se vor afia toate numele care ncep cu A, indiferent
din cte caractere, dar LIKE A?? va afia doar numele care ncepe cu A i are
lungimea de trei caractere), IN (formatul general IN (list de valori), de
exemplu condiia: sex IN (m,f) sau [tip client] IN (persoana
fizica,persoana juridica)), BETWEEN (format general Between Val_minim
AND Val_maxim, de exemplu, dac se dorete afiarea studenilor cu note
ntre 9 i 10 se va utiliza condiia BETWEEN 9 AND 10), NOT (negaie), AND
(conjuncie), OR (disjuncie), NOT NULL (va afia toate nregistrrile care nu
au valori introduse n acel cmp), Date() (returneaz data curent), MONTH
(afieaz luna dintr-o dat calendaristic, de exemplu MONTH(#27.12.2011#)
va returna valoarea 12), YEAR (afieaz anul dintr-o dat calendaristic, de
exemplu YEAR(#21.11.2011#) va returna valoarea 2011), IIF (cu formatul
general IIF (condiie, val_dac_adevarat, val_daca_fals), de exemplu dac se
dorete afiarea situaiei bursierilor: pentru studeni care au media peste 9,50 se
va afia burs de merit, celor ntre 8 i 9,50 burs de studiu iar celorlai nimic,
se va scrie urmtoarea condiie: IIF ([media]>9,5; bursa de merit; IIF([media]
BETWEEN 8 AND 9,50;Bursa de studiu;)) ) i multe altele. Simbolul ; care
desparte argumentele funciei depinde de setrile regionale. Setrile regionale
utilizate n cadrul aceszui capitol sunt cele corespunztoare Romniei (Control
Panel, Clock Language and Region, Change Location, pagina Location, Current
Location: Romania). Data calendaristic este astfel formatat ca dd.mm.yyyy,
iar punctul zecimal este simbolul virgul. n cazul n care este selectat o alt
locaie, att separatorul care desparte argumentele funciei, simbolul zecimal,
formatul Currency ct i formatele Date/Time sunt modificate n consecin.
Dac se dorete adugarea unui cmp care va fi calculat dup o formul, se
selecteaz prima coloan liber n Design View, iar pe linia Field se tasteaz
numele care se dorete s apar n capul de table ca titlul al coloanei respective,
urmat de simbolul : i formula de calcul. Numele de cmpuri se scriu ntre
paranteze drepte. De exemplu: Valoare: [cant]*[pret]. Dac se dorete
formatarea cmpului (de exemplu, Currency), n Design View se apeleaz
meniul contextual pe cmpul proaspt construit, se selecteaz Properties, apoi
la proprietatea Format se selecteaz Currency.

118

Interogri cu parametru
n cazul interogrilor de selecie se pot utiliza parametrii. Dac se dorete citirea
interactiv de la tastatur a unei valori a unui cmp, n vederea verificrii unui
criteriu i a afirii datelor din tabel/tabele, pe linia Criteria se introduce ntre
paranteze drepte un text, de exemplu [Introduceti data facturii]. Acest text va fi
interpretat ca un parametru, construindu-se automat pentru acest parametru o
caset de introducere a valorii. Va fi evaluat valoarea citit de la tastatur, se
verific egalitatea cu valorile din cmpul pe care este plasat parametrul, i
anumte [data facturii], i sunt afiate nregistrrile care verific condiia [data
facturii]=valoarea introdus de la tastatur.

5.4.2 Interogri de sintetizare a datelor


Interogarea de selecie poate fi transformat ntr-o interogare de sintetizare a
datelor apelndu-se butonul Totals de pe panglic. Aceasta are ca efect crearea
unei linii noi denumit Total, unde automat apare condiia Group by.
Pentru a crea o interogare de sintetizare a datelor:
1. se creaz o interogare n Design View;
2. se selecteaz sursa datelor (din fereastra Show Table, dublu-clic pe
numele tabelelor, neaprat acestea trebuie s fie toate legate ntre ele),
apoi se nchide fereastra Show Table;
3. se selecteaz cmpurile dup care se grupeaz datele i cmpurile care
trebuie calculate (de exemplu dac se dorete afiarea mediei anului, se
aleg cmpuri an i medie; dac se dorete afiarea medie studenilor pe
grupe, se aleg cmpurile an, grupa i medie);
4. se selecteaz butonul Totals. Pe linia Totals vor apare opiunile Group
By utilizate pentru a defini grupurile de nregistrri asupra crora se
vor executa funcii agregat (SUM, MIN, MAX, COUNT, AVG, etc);
5. pe coloana/coloanele care se doresc a fi calculate i linia Totals se alege
o funcie de agregare sau condiia WHERE care permite impunerea
unor criterii suplimentare. Toi operatorii amintii mai sus pot fi folosii
n clauza Where;
6. dac se dorete ascunderea unor cmpuri, se deselecteaz caseta
corespunztoare de pe linia Show;
7. pentru a vizualiza rezultatul se apeleaz opiunea Datasheet View.

119

5.4.3 Interogri de aciune


Interogrile de aciune sunt nu au ca efect afiarea unui rezultat, ele au un alt
scop: manipularea datelor din tabele. Operaiile care pot fi executate cu ajutorul
interogrilor de aciune sunt: Make Table, Append, Update i Delete.
Pentru ca toate aceste interogri de aciune s poat fi executate, este necesar
setarea unui nivelul de securitate mai sczut prin selectarea butonului Options
de pe bara Security Warning, selectndu-se opiunea Enable this content.

5.4.3.1 Interogri pentru crearea unei noi tabele (MAKE TABLE)


Interogrile care creaz o nou tabel sunt utilizate de obicei pentru a obine un
tabel unic cu date din mai multe tabele legate ntre ele.
Pentru a crea o interogare de tip Make Table se parcurg urmtorii pai:
1. se creaz o interogare n Design View;
2. se selecteaz sursa datelor (din fereastra Show Table, dublu-clic pe
numele tabelelor, acestea fiind legate ntre ele), apoi se nchide fereastra
Show Table;
3. se selecteaz cmpurile dorite, se ordoneaz datele, se adug condiii;
4. se verific trecnd n Datasheet View rezultatul dorit, apoi se revine n
Design View;
5. se transform interogarea de selecie ntr-una de aciune selectndu-se
butonul Make Table de pe panglic. n fereastra Make Table se va
tasta numele noului tabel care va fi creat figura 19;
6. se va salva interogarea:
7. se execut interogarea prin apsarea butonului Run de pe panglic.
Observaie: Dac se dorete deschiderea interogrii pentru modificare, se
apeleaz meniul contextual ataat interogrii din panoul de navigare, apoi se
alege Design View. De fiecare dat cnd interogarea este apelat, tabela este
rescris.

120

Fig. 19 Interogare de tip Make Table

Se observ c icoana asociat interogrii de tip Make Table este diferit fa de


cea asociat interogrilor de selecie.

5.4.3.2 Interogri pentru actualizarea datelor (UPDATE)


Interogrile care permit actualizarea datelor sunt folosite pentru a efectua
anumite calcule asupra unor cmpuri din tabele (de exemplu, se mrete preul
pinii cu 2%). Pentru a crea o interogarea de tip Update se parcurg urmtorii
pai:
1. se creaz o interogare n Design View;
2. se selecteaz sursa datelor (din fereastra Show Table, dublu-clic pe
numele tabelelor, acestea fiind legate ntre ele), apoi se nchide fereastra
Show Table;
3. se selecteaz cmpul a crui valoare trebuie modificat i cel ce
limiteaz modificarea la anumite nregistrri (n acest caz, cmpul
denumirea produsului pe care se va seta condiia pe linia Criteria
(=paine, i cmpul pret, cruia i se va modifica valoarea n urma
interogrii);
4. se transform interogarea de selecie ntr-una de aciune selectndu-se
butonul Update de pe panglic. n fereastra QBE va apare o nou linie
numit Update To. Pe acea linie, sub pret se va scrie formula de calcul:
[pret]+[pret]*2/100;
5. se verific trecnd n Datasheet View rezultatul dorit, apoi se revine n
Design View;
6. se salveaz interogarea;
7. se execut interogarea prin apsarea butonului Run de pe panglic.

121

Observaie: Dac se dorete deschiderea interogrii pentru modificare, se


apeleaz meniul contextual ataat interogrii din panoul de navigare, apoi se
alege Design View. De fiecare dat cnd interogarea este apelat, valoarea
cmpului este modificat.
Se observ c icoana asociat interogrii de tip Update este diferit fa de cea
asociat interogrilor de selecie i de cea a interogrii de tip Make Table.

5.4.3.3 Interogri pentru adugarea datelor din alte tabele (APPEND)


Interogrile de acest tip permit adugarea unor nregistrri din alte tabele care
au n componen cmpuri de acelai tip.
Pentru a crea o interogarea de tip Append se parcurg urmtorii pai:
1. se creaz o interogare n Design View;
2. se selecteaz sursa datelor tabelul surs, de unde se dorete transferul
datelor n cellalt tabel (din fereastra Show Table, dublu-clic pe numele
tabelelor, acestea fiind legate ntre ele), apoi se nchide fereastra Show
Table;
3. se selecteaz cmpurile care se doresc a fi trimise ntr-o alt tabel. n
acea tabel vor trebui s existe cmpuri de acelai tip cu cele selectate
la acest pas;
4. se selecteaz o ordine de sortare a nregistrrilor i/sau se completeaz
liniile Criteria i Or (dac este cazul);
5. se verific trecnd n Datasheet View rezultatul dorit, apoi se revine n
Design View;
6. se transform interogarea de selecie ntr-una de aciune selectndu-se
butonul Append To. Se selecteaz numele tabelei destinaie. Se
observ adugarea unei noi linii n fereastra QBE, cu numele Append
To. Dac numele cmpurilor din cele dou tabele difer, celula
corespunztoare din tabela destinaie, de pe linia Append to, va rmne
necompletat. Ea poate fi completat utilizndu-se caseta combinat,
alegnd numele cmpului dorit din tabela destinaie;
7. se salveaz interogarea;
8. se execut interogarea prin apsarea butonului Run de pe panglic.
Aceeai observaie este valabil ca i la interogarea de tip Update. Totodat,
icoana asociat acestui tip de interogare este diferit de celelalte.

122

5.4.3.4 Interogri pentru tergerea nregistrrilor (DELETE)


Acest tip de interogare se utilizeaz pentru a terge automat anumite nregistrri
din una sau mai multe tabele. Pentru a crea o interogarea de tip Delete se
parcurg urmtorii pai:
1. se creaz o interogare n Design View;
2. se selecteaz sursa datelor tabelul surs, de unde se dorete tergerea
datelor (din fereastra Show Table, dublu-clic pe numele tabelelor,
acestea fiind legate ntre ele), apoi se nchide fereastra Show Table;
3. se selecteaz cmpul/cmpurile care conin valorile care compun
condiia de tergere;
4. se completeaz liniile Criteria i Or (dac este cazul n caz contrar
vor fi terse toate nregistrrile din tabela sau tabelele respective);
5. se transform interogarea de selecie ntr-una de aciune selectndu-se
butonul Delete. Pe linia Delete va apare clauza Where, care permite
construirea condiiei de tergere ;
6. se verific trecnd n Datasheet View rezultatul dorit, apoi se revine n
Design View;
7. se salveaz interogarea;
8. se execut interogarea prin apsarea butonului Run de pe panglic.
Aceeai observaie este valabil ca i la interogarea de tip Append. Icoana
asociat acestui tip de interogare este diferit de celelalte.
Observaie: n cazul tergerii nregistrrilor din mai multe tabele, aceasta poate
fi mpiedicat datorit setrii regulilor de integritate referenial (dac n
fereastra Relationship, fiind selectat legtura dintre tabele, este selectat
caseta Enforce Referential Integrity iar Cascade Delete Related Records nu
este bifat).

5.5 Obiecte Forms


Formularul este un obiect al bazei de date care permite vizualizarea,
modificarea sau introducerea a noi informaii n tabela pe baza cruia a fost
creat.
Pe un formular pot fi adugate urmtoarele tipuri de controale:
legate: sunt create pe baza unui tabel, a mai multor tabele sau a unei
interogri, permit vizualizarea nregistrilor, actualizarea valorilor
cmpurilor sau adugarea unor cmpuri calculate;

123

nelegate: destinate crerii unui meniu, afirii unor mesaje, informaii


despre sistem, etc.

Formularele pot fi create utiliznd butoanele de pe panglic. Vom prezenta n


continuare crearea formularelor cu ajutorul butoanelor Form, Form Wizard i
Design Form.

5.5.1 Formulare create cu ajutorul butonului Form


Pentru a crea un formular, se selecteaz din panoul de navigare numele tabelei
sau interogrii care va conine sursa datelor.
Dac tabelul este tabel de referin pentru mai multe alte tabele sau este tabel
referit de alte tabele (copil) atunci Access va crea automat un formular cu
layout-ul Columnar (este afiat coninutul unei singure nregistrri la un
moment dat) figura 20.
Pentru a vizualiza toate nregistrrile se poate utiliza bara de navigare Record
aflat n partea de jos a formularului, utilizndu-se butoanele Next Record
(trecerea la urmtoarea nregistrare), Previous Record (trecerea la nregistrarea
anterioar), First Record (trecerea la prima nregistrare), Last Record (trecerea
la ultima nregistrare), New (Blank) Record (adugarea unei noi nregistrri) i
Search.

Fig. 20 Formularul Furnizori

Dac tabelul este tabel de referin pentru un singur tabel, atunci Access va crea
automat un formular cu subformular, afind n subformular doar acele
nregistrri din tabela referit care verific condiia ca valoarea cheie strin
este egal cu valoarea afiat n cmpul cheie primar din tabela de referin
afiat n formular. Pentru tabela de referin layout-ul formularului este
Columnar (este afiat o singur nregistrare la un moment dat), iar pentru sub-

124

formular layout-ul este Tabular (sunt afiate toate nregistrrile care verific
condiia de legtur) figura 21. Totodat cmpul cheie strin (din tabelul
referit) este ascuns (nu este necesar afiarea aceluiai cmp de mai multe ori n
cadrul unui formular).
Se observ c pentru fiecare formular apare cte o bar de navigare Record.
Cea mai de jos este pentru datele din tabelul de referin (printe), cea din
interior va fi pentru datele din tabelul referit (copil). Pentru a naviga prin
nregistrri se utilizez bara corespunztoarelor formularului creat pentru tabelul
de referin.

Fig. 21. Formular cu sub-formular

Modul de afiare afiat implicit va fi Form View. Dac se dorete, se poate


trece la Design View pentru a modifica proprietile controalelor de pe formular
cu ajutorul butonului View de pe panglic.

5.5.2 Formulare create cu ajutorul butonului Form Wizard


Access 2007 pune la dispoziia utilizatorilor un asistent care permite crearea
rapid a nregistrrilor urmnd anumii pai. Pentru a utiliza butonul Form
Wizard este necesar selectarea butonului More forms de pe panglic,
opiunea de meniu Create figura 22.

125

Fig. 22 Selectarea butonului Form Wizard

Pentru a crea un formular utiliznd Form Wizard trebuie parcuri urmtorii pai:
se selecteaz sursa datelor numele tabelului sau a interogrii pe baza
cruia se dorete crearea formularului i a cmpurilor care se dorete s
apar pe formular figura 23, apoi se apas butonul Next;

Fig. 23 Selectarea sursei formularului

se selecteaz layout-ul formei (modul n care sunt aranjate nregistrrile


pe formulare; Columnar i Justified afieaz o singur nregistrare la
un moment dat, Tabular i Datasheet afieaz toate nregistrrile la un
moment dat) figura 24, apoi se apas butonul Next;

Fig. 24 Alegerea Layout-ului formularului

126

se alege stilul (combinaiile de culori i obiectele grafice de pe


formular) figura 25, apoi se apas butonul Next;

Fig. 25 Alegerea stilului formularului

se alege un titlu pentru formular i modul de vizualizare al acestuia, n


cazul de fa deschiderea n modul de vizualizare Form View (Open
the form to view or enter information) figura 26, apoi se apas
butonul Finish.

Fig. 26 Crearea unui titlu i deschiderea formularului n modul Form View

Formularul astfel creat va arta ca n figura 27.

Fig. 27 Formularul Furnizori1 n Form View

127

Orice formular conine urmtoarele zone figura 28:


Form Header antetul formularului, utilizat pentru afiarea unui titlu,
sigla unei companii, data ntocmirii;
Detail zona n care sunt amplasate controalele corespunztoare
nregistrrilor din tabelul sau interogarea surs;
Form Footer: subsolul formularului, utilizat pentru comentarii,
semnturi, numrul paginii, butoane de comand.

Fig. 28 Formularul Furnizori1 n Design View

Pentru a activa zonele Form Header/Footer se apeleaz meniul contextual al


formularului, selectndu-se opiunea cu acelai nume.

5.5.3 Formulare create cu ajutorul butonului Form Design


Pentru a creea un formular cu ajutorul butonului Form Design se parcurg
urmtorii pai:
1. se selecteaz butonul Form Design de pe panglic, opiunea de meniu
Create figura 29;

Fig. 29 Un formular gol n Design View

128

2. de pe panglic, opiunea de meniu Design, se selecteaz butonul


Property Sheet
. n fereastra cu acelai nume, n cadrul casetei
combinate Selection Type se alege obiectul Form. De pe pagina All,
apelnd sgeata din dreptul casetei Record Source numele tabelei pe
baza creia se va creea formularul: de exemplu furnizori figura 30;

Fig. 30 Selectarea sursei formularului

3. se selecteaz butonul Add Existing Fields iar din fereastra Field List
se execut dublu-clic pe numele cmpurilor care se dorete s apar pe
formular figura 31. Acestea vor aprea pe formular n zona de Detail
a formularului;

Fig. 31 Adugarea controalelor pe formular

4. se salveaz formularul butonul Save de lng butonul Office;


5. pentru a vizualiza nregistrrile se trece n modul de vizualizare Form
View (folosind butonul View de pe panglic) figura 32.

Fig. 32 Formular n modul de vizualizare Form View

Pe formulare pot fi plasate diverse obiecte care poart numele de controale.

129

Dintre cele mai des utilizate controale amintim:


Label (etichete) control cu un coninut fix, corespunztor
constantelor, utilizat pentru afiarea unor comentarii, titluri, mesaje.
Access genereaz automat cte o etichet pentru majoritatea
controalelor definite de utilizator. De obicei ele sunt plasate n stnga
controlului pe care l nsoete. Toate etichetele vor fi salvate cu nume
care ncep cu prefixul de 3 litere lbl (label). Pentru fiecare control de tip
etichet se vor modifica proprietile Name i Caption. Proprietatea
Caption controleaz textul care va apare pe formular figura 33.
Pentru a crea o etichet, se selecteaz butonul
de pe panglic,
opiunea de meniu Design. n fereastra Property Sheet se modific
proprietatea Name: lblTitluFurnizor, Caption: Lista furnizorilor;

Fig. 33 Controale de tip etichet

Text-box (casete de text) sunt controale cu coninut variabil,


corespunztoare cmpurilor dintr-o tabel sau interogare, sau
variabilelor. Coninutul acestora se modific n funcie de nregistrarea
curent figura 34. Pentru toate casetele de text se modific
proprietatea Name n fereastra Property Sheet. Prefixul pentru casetele
de text este txt (text). Pentru casetele de text legate de un cmp,
proprietatea Control Source apare automat completat n cazul
formularului creat dup paii prezentai anterior. De exemplu, pentru
caseta de text Nr_furn se va modifica proprietatea Name: txtNr_furn,
proprietatea Control Source va fi automat completat cu valoarea
Furnizori.Nr_furn (numele tabelei surs urmat de punct apoi numele
cmpului de unde provin datele). Dac se dorete crearea unei casete de
text, se selecteaz de pe panglic butonul
. Vor fi create automat
att o caset de text ct i o etichet care va explicita valorile afiate n
caseta de text. Pentru etichet se vor modifica proprietile Name i

130

Caption, iar pentru caseta de text se vor modifica proprietile Name i


Control Source (dac nu este deja completat);

Fig. 34 Controale de tip casete de text

Button (butoane de comand) servete la declanarea unor aciuni


predefinite sau a unor aciuni definite prin intermediul unor proceduri
Visual Basic Application. n capitolul urmtor este prezentat o
modalitate de a crea butoane de comand fr ajutorul asistentului.
Vom prezenta n continuare crearea unui buton cu ajutorul asistentului.
Pentru a crea un buton fr a cunoate comenzi Visual Basic Application este
necesar selectarea butonului Use Control Wizards de pe panglic
. Se selecteaz butonul Button de pe panglic
apoi se
execut un clic n zona Form Footer figura 35.
La primul pas se alege categoria de aciuni (navigare prin nregistrri, operaii
cu nregistrri, operaii cu formulare, operaii cu rapoarte, nchiderea aplicaiei
i diverse tiprirea tabelelor, execuia unei interogri, execuia unei
macrocomenzi, etc).

Fig. 35 Crearea unui buton de comand cu ajutorul asistentului

Dup ce s-a ales categoria, se alege aciunea din partea dreapt. n cazul de fa,
s-au ales operaiile cu formulare pentru c se dorete crearea unui buton care s
nchid forma, de aceea a fost selectat aciunea Close Form. Se trece cu Next
la pasul urmtor.

131

Se va alege opiunea Text specificndu-se textul care se dorete s apar pe


buton: nchidere figura 36, apoi se apas butonul Next.

Fig. 36 Specificarea textului care va apare pe buton

n cadrul ultimei ferestre se specific numele controlului. Butoanele de


comand au prefixul cmd, deci numele controlului va fi cmdInchidere figura
37. Pentru a finaliza crearea butonului se apas selecteaz opiunea Finish.

Fig. 37 Denumirea controlului de tip buton de comand

Pentru a ncerca butonul trebuie selectat modul de vizualizare Form View


figura 38.

Fig. 38 Butonul Inchidere

n mod similar pot fi create multe alte butoane de comand pentru a automatiza
baza de date.

132

Pe un formular pot fi plasate controale care s afieze valori calculate. Pentru a


crea un control calculat, se parcurg urmtorii pai:
1. se selecteaz butonul Text box de pe panglic, apoi execut clic n zona
Detail, sub controalele existente;
2. se modific proprietile Name i Caption ale etichetei;
3. se modific proprietatea Name a casetei de text;
4. n cadrul proprietii Control Source se tasteaz formula de calcul,
ncepnd cu semnul =. Numele cmpurilor sunt scrise ntre paranteze
drepte, de exemplu: =[valoare fara TVA]*1,24.

5.5.4 Formulare cu sub-formulare


Crearea unui formular cu subformular permite actualizarea mai multor tabele
prin intermediul unui singur obiect. Subformularele sunt create pentru tabelele
referite din cadrul unei relaii de tip one-to-many. Formularul principal are ca
surs tabelul de referin, reprezentnd partea de one (unu). Pentru acest
formular se va utiliza un layout de tip Columnar sau Justified (permite
afiarea unei singure nregistrri). Sursa subformular este tabelul referit,
reprezentnd partea many (mai muli). Subformularul va fi construit pe baza
unui layout de tip Tabular sau Datasheet (sunt afiate toate nregistrrile).
Crearea unui formular cu subformular presupune nglobarea formularului
many n formularul one.
Pentru a crea un formular cu subformular se parcurg urmtorii pai:
1. se creaz un formular utilizndu-se Form Wizard pentru tabela de
referin, pe un layout de tip Columnar. Se salveaz formularul.
Formularul rmne deschis n Design View;
2. se creaz un formular utilizndu-se Form Wizard pentru tabela referit
(copil), pe un layout de tip Tabular. Se salvez formularul i se
nchide;
3. n primul formular, se extinde zona Detail. Din panoul de navigare se
alege numele formularului corespunztor tabelului referit i se
depoziteaz pe formular n zona Detail, sub celelalte controale. Se
salveaz formularul utilizndu-se butonul Office, opiunea Save as,
Save object as, cu numele celor dou formulare care compun
formularul cu subformular (de exemplu FurnizoriFacturi).

133

5.6 Obiecte Reports


Raportul este un obiect al bazei de date care permite vizualizarea informaiilor
pe ecran sau trimiterea acestora la imprimant. Raportul poate fi creat fie pe
baza unui tabel, fie pe baza unei interogri.
Un obiect de tip report poate conine urmtoarele zone:
Report Header/Footer zona de antet i subsol ale raportului, ele apar
o singur dat la nceputul, respectiv finalul raportului;
Page Header/Footer zona de antet i subsol ale fiecrei pagini a
raportului;
Group Header/Footer zona de antet i subsol al
cmpului/cmpurilor dup care se realizeaz o grupare;
Detail se afieaz pentru fiecare nregistrare n parte;
Subrapoarte sunt obiecte de tip raport coninute n cadrul raportului
printe;
Controale obiecte care pot fi plasate n cadrul raportului.
Varianta cea mai simpl de creare a rapoartelor este Report Wizard. Dac se
dorete afiarea datelor din mai multe tabele, poate fi creat o nou tabel pe
baza unei interogri, raportul fiind construit pe baza acesteia. Dac se dorete
afiarea unor cmpuri calculate, acestea pot fi create cu ajutorul unei interogri,
raportul fiind creat pe baza interogrii.
Raportul creat cu ajutorul instrumentului Report Wizard poate fi deschis n
modul Design View i modificat prin adugarea unui nivel de grupare, a unei
sortari sau a unor cmpuri calculate.
Pentru a construi un raport n Report Wizard se parcurg urmtorii pai:
1. se selecteaz opiunea de meniu Create, butonul Report Wizard;
2. din caseta Tables/Queries se alege sursa raportului (tabelul sau
interogarea), iar cu ajutorul sgeilor din mijlocul ferestrei se selecteaz
cmpurile care se doresc a fi afiate n raport, ele aprnd n fereastra
Selected Fields, apoi se apas butonul Next figura 39;

134

Fig. 39 Selectarea sursei raportului

3. Se pot aduga unul sau mai multe niveluri de grupare selectnd numele
cmpului din partea din stnga. Se folosesc butoanele cu sgei pentru a
selecta cmpul/cmpurile ca nivel de grupare. Pot fi adugate pn la 10
niveluri de grupare figura 40.

Fig. 40 Adugarea unor criterii de grupare

Dac se doresc grupri mai speciale, se poate selecta butonul Grouping


Options. n funcie de tipul cmpului selectat pot fi alese intervale de
grupare, de exemplu n cazul unui cmp de tip Text grupare dup prima
liter, dup primele 2 litere, etc figura 41. Pentru a trece la pasul urmtor
se apas butonul Next;

Fig. 41 Opiuni de grupare

135

4. se poate stabili o ordine de afiare a nregistrrilor n cadrul raportului,


sortnd pn la 4 cmpuri simultan figura 42, apoi se apas butonul
Next figura;

Fig. 42 Opiuni de ordonare

5. Se pot alege diverse modaliti de aranjare a datelor (Stepped, Block


sau Outline) i se poate seta orientarea paginii (Portrait pe vertical
sau Landscape pe orizontal), apoi se apas butonul Next figura
43;

Fig. 43 Opiuni legate de formatare

6. se poate alege un stil dintr-o list cu stiluri disponibile, fiind vizibil un


Preview al acestuia n partea din stnga al ferestrei, apoi se apas Next
figura 44;

Fig. 44 Alegerea unui stil

136

7. la ultimul pas se alege titlul raportului i vizualizarea acestuia n modul


Preview figura 45, apoi se apas butonul Finish.

Fig. 45 Adugarea unui titlu

Raportul va fi afiat n modul Print Preview figura 46. Pentru a reveni la


modul de Design, se apas butonul Close Print Preview de pe panglic.

Fig 47 Raport n modul Print Preview

Raportul n modul Design View seamn cu un obiect de tip formular n Design


View figura 48.

137

Fig. 48 Raport n Design View

Pentru cmpurile numerice care conin valori multiple n cadrul aceluiai grup,
la pasul 4 se va afia un buton n plus, denumit Summary Options figura 49.

Fig. 49 Butonul Summary Options

Dac acesta este selectat, pune la dispoziia utilizatorilor funcii totalizatoare:


SUM, MIN, MAX i AVG figura 50.

Fig. 50 Fereastra Summary Options

Se poate selecta una din opiunile Detail and Summary (vor fi afiate
subtotaluri la nivelul fiecrui grup i la nivel de raport) sau Summary Only
(doar subtotal la nivel de grup) figura 51.

138

Fig. 51 Raport cu grupare i subtotaluri la nivel de grup i raport

Pe orice raport pot fi create casete de text care pot fi calculate dup modelul
prezentat n paragraful 5.5.3. Pentru a aduga o funcie totalizatoare (de
exemplu, calcularea valorii totale a tuturor facturilor, n zona Report Footer se
va aduga o caset de text. Se vor modifica proprietile Name i Caption
corespunztoare etichetei. Se va modifica proprietatea Name asociat casetei de
text. n cadrul proprietii Control Source asociat casetei de text se va tasta
formula =SUM([cantitate]*[pret]*1,24)). Din cadrul proprietii Format
asociat casetei de text se va alege opiunea Currency, pentru afiarea
simbolului valutar.

5.7 Obiecte Macros


Obiectele de tip Macro sunt un instrument util atunci cnd se dorete execuia
unor aciuni i evitarea programrii. Ele automatizeaz operaiunile din cadrul
unei baze de date Access. Obiectele de tip Macro pot fi ncorporate n cadrul
unui formular, depinznd de obiectul n care este plasat, sau pot fi autonome,
fiind apelabile de oriunde.
n cadrul unui obiect de tip Macro pot fi selectate mai multe aciuni, acestea
fiind alese dintr-o list i executate n ordinea n care au fost create.
O macrocomand se execut folosindu-se butonul Run (ca i n cazul
interogrilor de aciune).
Cu ajutorul macrocomenzilor pot fi create meniuri personalizate pentru a
nlocui panglica (Ribbon-ul).
Pentru a crea o macrocomand se selecteaz opiunea de meniu Create, iar din
zona Other, Macro. De exemplu, dac se dorete crearea unei macrocomenzi

139

care s deschid o interogarea n mod Read-Only se vor parcurge urmtorii


pai:
n coloana Action se alege dintr-o list de aciuni predefinite, Open
Query;
n partea de jos a ecranului se selecteaz Query Name (numele
interogrii);
se selecteaz modul de vizualizare n care va fi deschis interogarea (n
cazul de fa Datasheet);
n caseta Data Mode se alege Read-Only.
Macrocomanda va fi salvat cu numele Deschidere Interogare Furniz i poate
fi executat apsnd butonul Run figura 52.

Fig. 52 Crearea unei macrocomenzi

De regul macrocomenzile sunt ataate fie unei opiuni de meniu fie unui buton
de comand plasat pe un formular.

140

5.8 Obiecte Modules


Obiectele de tip Module sunt module de program scrise n Visual Basic
Application. Ne vom ocupa de module de cod n capitolul urmtor, ca suport al
execuiei comenzilor SQL (Structured Query Language). Utilizarea limbajului
de programare Visual Basic Application nu face obiectul prezentului curs.

5.9 Concluzii
Microsoft Access ofer utilizatorilor un mediu vizual cu o interfa grafic
prietenoas, capabil de a dezvolta aplicaii complexe, fr a avea nevoie de
cunotine de programare. Fa de versiunile anterioare, Access conine o serie
de mbuntiri (sunt puse la dispoziia utilizatorului o serie de abloane, ofer
suport pentru introducerea datei calendaristice, apariia unui nou tip de cmp
Attachment, pentru stocarea mai multor obiecte create cu alte aplicaii, etc).
Noua interfa Microsoft Access 2007 este una unitar n pachetul Microsoft
Office, utilizatorul putnd regsi cu uurin comenzile uzuale.

5.10 Rezumatul capitolului


Gestionarea obiectelor Access se realizeaz ntr-o manier centralizat prin
nglobarea lor n baza de date. Sunt disponibile interfee simple pentru
construirea structurii bazei de date (tabelele, relaiile dintre ele i dicionarul de
date), crearea unor formulare pentru inserarea datelor n tabele sau actualizarea
datelor din tabele, automatizarea acestora cu ajutorul butoanelor de comand,
crearea unor panouri de comand care vor gestiona operaiile efectuate cu baza
de date, selecia datelor din una sau mai multe tabele, dup anumite criterii,
actualizarea tabelelor prin interogri care permit crearea unor noi tabele,
inserarea de noi nregistrri, modificarea sau tergerea automat a acestora n
funcie de anumite criterii, crearea macrocomenzilor pentru anumite aciuni
uzuale sau crearea unor secvene de cod i afiarea datelor sau trimiterea
acestora ctre imprimant.
Mediul de lucru Access se bazeaz pe utilizarea ferestrelor, oferindu-se
posibilitatea vizualizrii ntr-o fereastr cu mai multe tab-uri. Panoul de
navigarea grupeaz toate obiectele bazei de date.

141

5.11 ntrebri de autoevaluare din partea teoretic


1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.

142

Specificai caracteristicile SGBD-ului MS Access 2007.


Specificai care sunt cazurile n care se utilizeaz Microsoft Access.
Specificai care sunt cazurile n care se utilizeaz Microsoft Excel.
Detaliai opiunile de pe bara de meniu MS Access 2007.
Detaliai cinci proprieti importante care pot fi setate utilizndu-se
butonul Access Options.
Definii obiectul Table din Acces. Dai exemple de tabele.
Definii conceptele de cmp i nregistrare. Dai exemple.
Definii conceptele de cheie primar i chei strine. Dai exemple.
Definii conceptul de redundan necesar.
Explicai regulile de integritate referenial.
Detaliai tipurile de legturi dintre tabele n Access. Dai exemple la
fiecare tip de legtur.
Detaliai operaiile care pot fi efectuate cu cmpurile unei tabele.
Dai exemple de completare a proprietii Input Mask.
Dai exemple de reguli de validare (Validation Rule).
Definii obiectul Query din Access. Dai exemplu de interogare de
selecie.
Detaliai operatorii Like, Between i In.
Dai un exemplu de interogare care s ilustreze utilizarea pentru funciei
IIF.
Definii interogarea cu parametru. Exemplu.
Dai exemple pentru fiecare tip de interogare de aciune.
Detaliai modul de creare a unui formular cu subformular.
Definii controalele de tip Label, Text Box i Button. Exemple.
Definii obiectul Report din Access.
Definii obiectul Macros din Access.
Definii obiectul Modules din Access.

5.12 Exemple
5.12.1 Problem rezolvat Tabel creat n Datasheet View
S se creeze o baz de date cu numele Exemplul 1 care s conin un tabel cu
numele Studeni. Acesta va avea structura ID, nume, prenume, an, serie, grupa,
data naterii, adresa, cstorit, email, fotografie. Se vor introduce 3 studeni n
tabel.
Rezolvare
Se va crea o baz de date cu numele Exemplul 1, salvat pe Desktop. Odat cu
crearea bazei de date, Access creaz automat o tabel cu numele care va conine
un cmp ID (identificator) de tip Autonumber, care va fi cheia primar a
tabelei.

Figura 53. Crearea unei tabele

Pentru a salva tabela i a modifica numele acesteia, se apas butonul Save


aflat pe bara panglic figura 53.
Construirea a structurii tabelei va continua cu adugarea unui nou cmp (o nou
coloan) executndu-se dublu-clic pe linia cu ID, celula n care apare Add New
Field figura 53. Dup tastarea numelui cmpului, se apas Enter, trecerea
fiind fcut la urmtoarea coloan. Dup ce s-a editat capul de tabel se trece la
introducerea datelor n tabel.
Cmpul ID fiind de tip Autonumber, acesta va fi completat automat odat cu
selectarea primei litere din numele studentului. Se completeaz toate cmpurile
pn la fotografie. Se observ faptul c nu exist posibilitatea completrii
acestui cmp. Pentru aceasta trebuie modificat tipul. Pentru aceasta se alege de
pe bara de meniuri opiunea de meniu Datasheet, caseta Data Type i se
selecteaz OLE Object.

143

Fig. 54. Meniul Datasheet, caseta Data type

Se observ faptul c valoarea din coloana anul, fa de valorile din coloanele


seria i grupa, este aliniat la stnga, fa de celelalte dou valori care sunt
aliniate la dreapta. Microsoft Access 2007 pstreaz acelai mod de aliniere ca
i Microsoft Excel 2007, irurile de caractere sunt aliniate la stnga, iar
numerele aliniate la dreapta. Deci cmpul an nu este recunoscut ca fiind de tipul
potrivit (Number). De aceea se selecteaz coloana an i se procedeaz n acelai
mod ca n cazul fotografiei, selectnd tipul de date Number. Microsoft Access
afieaz un mesaj de avertizare atunci cnd tipul de date este schimbat, unele
valori putnd fi pierdute figura 55.

Fig. 55 Mesaj de avertizare la schimbarea tipului de date

Se poate selecta fiecare cmp pentru a se verifica formatul dorit. n cazul n care
valoarea care a fost introdus nu corespunde cu valorile care trebuie introduse n
cadrul acestui cmp, valoarea existent este pierdut.
n cazul cmpului data naterii acesta trebuie s fie de tip Date/time, adresa de
tip memo (texte mai mari de 255 de caractere), casatorit un cmp de tip Yes/No.
Formatul clasic de afiare fiind un check-box (caset de opiune) care poate fi
bifat sau nu, corespunztor celor dou valori posibile.

Fig. 56 Valorile cmpului de tip Yes/No

Cmpul e-mail trebuie s fie de tip Hyperlink.

144

Pentru a introduce o fotografie n cmpul omonim, se selecteaz celula


corespunztoare, se selecteaz meniul contextual, apoi opiunea Insert Object.

Fig. 57 Introducerea unui obiect ntr-un cmp de tip OLE Object

Sunt disponibile dou opiuni Create New sau Create from File. n acest caz
vom presupune faptul c fotografia exist deja, deci alegem a doua opiune.
Tehnologia OLE (Object Linking and Embedding) legare i ncorporare de
obiecte, permite nglobarea obiectului n tabel, deci n baza de date, sau, dac se
selecteaz opiunea Link, crearea unei legturi ctre obiectul respectiv, fr ca
acesta s fie ncorporat n tabel.

Fig. 58 Alegerea unei fotografii

Cmpul fotografie va fi completat cu textul Package. La execuia unui dubluclic, fotografia va fi deschis pentru a fi vizualizat cu softul predefinit pentru
vizualizarea fotografiilor.
Se introduc nc 2 studeni. Dac este necesar, se poate utiliza bara orizontal de
derulare (Scroll) aflat n partea de jos a ecranului figura 59.

Fig. 59 Bara de derulare orizontal

145

Modul de vizualizare utilizat se observ de pe bara de stare Datasheet View.


Pentru a trece de la un mod de vizualizare la altul se pot utiliza butoanele de pe
bara de stare: Datasheet View, PivotTable View, PivotChart View sau
Design View. Modul de vizualizare Datasheet View se utilizeaz n general
pentru a vizualiza datele din tabel, iar modul Design View se utilizeaz pentru
a modifica proprietile structurii tabelei. Opiunile PivotTable View i
PivotChart View permit crearea unui tabel, respectiv a unui grafic pivot.
n modul de vizualizare Datasheet View, bara de unelte Record permite
navigarea prin nregistrri. Cu ajutorul acesteia se permit n ordine: selectarea
primei nregistrri, trecerea la nregistrarea anterioar, afiarea numrului
nregistrrii curente din numrul total de nregistrri, trecerea la urmtoarea
nregistrare, selectarea ultimei nregistrri, crearea unei noi nregistrri,
dezactivarea unui filtru (dac exist activat un criteriu de filtrare) precum i
cutarea unei valori n tabel figura 60. De reinut faptul c la un moment dat
suntem poziionai pe o singur nregistrare din tabel.

Fig. 60 Bara de navigare Records fr filtrare

Pentru a terge o nregistrare se selecteaz antentul de linie i se apas tasta


Delete de pe tastatur. n cazul exemplificat n figura 61 s-au selectat 2
nregistrri pentru tergere.

Fig. 61 Mesajul de atenionare afiat la tergerea a dou nregistrri

Pentru a terge un cmp se poziioneaz cursorul pe antetul de coloan (unde


este afiat numele cmpului) i se selecteaz din meniul contextual opiunea
Delete Column. Sistemul afieaz un mesaj de avertizare figura 62.

Fig. 62 Mesaj de avertizare la tergerea unui cmp

146

Tabelul va fi automat deschis n modul de vizualizare Datasheet View. Pentru a


trece la modul de vizualizare special pentru modificarea proprietilor tabelului
se selecteaz butonul Design View de pe bara de stare figura 63.

Fig. 63 Trecerea la modul de vizualizare Design View.

Modul de vizualizare Design View permite setarea unor caracteristici


(proprieti) nivel de fiecare cmp n parte figura 64.

Fig. 64 Modul de vizualizare Design View

Modul uzual de lucru pentru crearea unei tabele este n modul de vizualizare
Design View, acesta permind setarea unor valori implicite, reguli de validare,
moduri de afiare a datelor n cmp, etc.

147

5.12.2 Problem rezolvat Tabele create n Design View


Se dorete informatizarea activitii unei firme. Furnizorii sunt identificai prin
cod furnizor, denumire furnizor (numele i prenumele furnizorului), localitatea,
adresa, email, banca furnizor i cont furnizor. Despre produse se cunosc cod
produs, denumire produs, unitate de msur, stoc, pre unitar. Produsele sunt
depozitate n magazii, pentru care se cunosc cod magazie, denumire magazie,
gestionar (numele persoanei care are n gestiune depozitul respectiv).
Operaiunile se desfoar pe baza unor facturi, care trebuie s conin numrul
facturii i data facturii. Fiecare factur conine detaliate liniile facturii i anume
denumirea produsului, preul unitar, cantitatea facturat, calculndu-se
valoarea produsului (cu i fr TVA) i valoarea total a facturii cu i fr TVA.
Rezolvare
n urma analizei datelor i a aplicrii metodei matricii dependenelor funcionale
din capitolul anterior, se obine urmtoarea schem a bazei de date:

Fig. 65 Fereastra Relationship

Primul pas este crearea bazei de date. Aceasta va purta numele Firme. Pentru a
crea baza de date, se deschide mediul de lucru Access, apoi se alege opiunea
Blank Database. Pentru a alege locaia n care va fi salvat fiierul se alege
icoana galben de folder, selectndu-se Desktop-ul ca destinaie, apoi se
tasteaz denumirea: Firme.
Dup crearea bazei de date se trece la analiza fiecrui tabel n parte i alegerea
tipului de cmp cel mai potrivit datelor care vor fi salvate n acesta.
Este foarte important ordinea n care tabelele voi fi create. Pentru aceasta se
aleg tabelele de referin (tabelele printe, cum ar fi Furnizori, Magazii,
Produse) urmnd ca dup crearea acestora s se creeze tabelele referite (Facturi,
ProduseFacturate, ProduseMagazii).
n momentul n care se creaz baza de date, Access deschide automat un tabel
cu numele Table1.
Se va modifica tabelul Table1 n tabelul Furnizori. Pentru aceasta vom salva
tabelul cu numele Furnizori, apelnd butonul Save de lng butonul Office.
Pentru a aduga cmpuri i pentru a modifica proprietile acestora, se va trece

148

n modul de vizualizare Design View, fie folosind butonul View de pe panglic,


fie butonul cu acelai nume de pe bara de stare.
Se vor introduce urmtoarele cmpuri:
primul cmp l vom modifica din ID n cod_f (codul furnizorului), vom
alege tipul de date Number, Field Size: Integer, i Caption: cod
furnizor, Validation Rule: >0, Validation Text: Introducei un numr
pozitiv, Required: Yes;
pentru cmpul den_f (denumirea furnizorului) tipul de dat Text,
Field Size: 30, Format: >, Caption: denumire furnizor, Required: Yes,
Allow Zero Length: No, Indexed: Yes (Duplicates OK);
localit (localitate) de tip Text, Field Size: 30, Caption: localitate,
Default Value: Timisoara;
adresa de tip Memo;
email de tip Hyperlink;
banca de tip Text, Field Size: 30, Format: >, Required: Yes, Allow
Zero Length: No;
cont (contul din banc, IBAN) de tip Text, Fields Size: 24, Input
Mask: "RO"99LLLL9999999999999999.

Fig. 66 Butonul View

Dup ce toate cmpurile au fost create, se salveaz tabela alegnd butonul Save,
apoi se apas sgeata de pe butonul View, de unde se alege Datasheet View
figura 66, pentru a introduce datele a trei furnizori n tabel figura 67.

Fig. 67 Tabela Furnizori n Datasheet View

149

Dup ce tabela a fost creat i s-au introdus nregistrri n ea, aceasta va fi


nchis.
Pentru a crea o nou tabel, de pe bara de meniuri se alege opiunea Create,
butonul Table Design. Pentru tabela Magazii se insereaz urmtoarele
cmpuri:
cod_m (cod magazie) Primary key, de tip Number, Field Size: Byte,
Caption: Cod magazie, Required: Yes;
den_m de tip Text, Field Size: 15, Caption: Denumire magazie,
Indexed: Yes (Duplicates OK);
gest de tip Text, Field Size: 30, Caption: Gestionar.
Se vor introduce 3 magazii, cu codurile magazinelor 111, 112 i 113;

Fig. 67 Tabela Magazii n Datasheet View

Pentru tabela Produse:


cod_p (codul produsului) Primary key, de tip Number, Field Size:
Long Integer, Caption: Codul produsului, Required: Yes;
den_p (denumirea produsului) tipul cmpului Text, Field Size:15,
Caption: Denumirea produsului;
um (unitate de msur) de tipul Lookup Wizard, apoi opiunea I
will type in the values that I want, n caseta Number of Columns nu se
modific valoarea 1, iar n lista col1 vor fi tastate pe rnd, una sub alta,
valorile dorite: kg, l, m, buc, selectnd butonul Next, apoi Finish.
n tabela Produse se vor introduce 3 produse, cu codurile 11111, 111112 i
111113 figura 68.

Fig. 68 Tabela Produse

150

Tabela ProduseMagazii:
cod_p (cod produs) un cmp de tip Lookup Wizard pentru care se
selecteaz opiunea I want the lookup column to lookup the values in
a table or query, apoi se alege tabela Produse, apoi se selecteaz
butonul Next; se alege cmpul cod_p, apoi se apas butonul Next
figura 69. Ordonarea va fi fcut dup acelai cmp cod_p, apoi se
alege butonul Next.

Fig. 69 Crearea legturii cu tabela Produse

n ecranul urmtor pot fi observate valorile introduse anterior n tabela


Produse, apoi se apas butonul Next figura 70.

Fig. 70 Valorile introduse n cmpul cod_p din tabela Produse

La ultimul pas este posibil modificarea numelui cmpului (acesta va fi


lsat neschimbat) apoi se apas butonul Finish;
ntre cele dou tabele (Produse(tabela printe) i ProduseMagazii (tabela copil)
va fi creat automat o relaie. De aceea Access cere salvarea tabelei cu un nume
(ProduseMagazii). Datorit faptului c nu a fost creat nici o cheie primar,
sistemul sugereaz crearea uneia. Se va alege No (cheia primar compus va fi
creat dup crearea cmpului cod_m).
cod_m (cod magazie) un cmp pentru care se alege Lookup Wizard
se selecteaz opiunea I want the lookup column to lookup the values

151

in a table or query, apoi se alege tabela Magazii; selectm cmpul


cod_m (cod magazie). Ca ordine de sortare se alege cod_m, se
vizualizeaz codurile magaziilor introduse n tabela Magazii, apoi se
las neschimbat numele cmpului i se apas Finish. Se cere din nou
salvarea tabele;
stoc (stocul disponibil n magazie) de tip Number, Field Size: Long
Integer, Caption: Stoc produs, Required: Yes.
Pentru a crea o cheie primar compus, se selecteaz utilizndu-se ptratul gri
din faa numelui cmpului ambele cmpuri cod_p i cod_m i se apas butonul
Primary Key de pe panglic. Se salvez tabela i se trece n modul de
vizualizare Datasheet View pentru a introduce date n tabel.
Pentru ca ambele relaii s fie de tipul one-to-many, se vor introduce minim 4
nregistrri, un produs fiind depozitat n dou magazii (de exemplu 111113).

Fig. 71 Tabela ProduseMagazii

Pentru tabela Facturi:


nr_f (numrul facturii) Primary key, de tip Number, Field Size: Long
integer, Caption: Numarul facturii, Required: Yes;
data_f de tip Date/Time, Caption: Data Facturii, Required: Yes,
Format: Short date, Default Value =Date();
cod_f (cod furnizor) tipul de date Lookup Wizard, se creaz o
legtur cu tabela Furnizori, cmpul cod_f, Caption: Cod furnizor.
Tabela Facturi este copilul tabelei Furnizori. Avnd 3 furnizori n tabela printe,
vom introduce minim 4 facturi, codul furnizorului 1 repetndu-se de 2 ori:

Fig. 72 Tabela Facturi

152

Tabela ProduseFacturate:
nr_f (numrul facturii) un cmp pentru care se alege Lookup Wizard,
se creaz a legtur cu tabela Facturi, cmpul nr_f; Caption: Numarul
facturii. Se salveaz tabela cu numele ProduseFacturate, iar la
ntrebarea dac se dorete alegerea unei chei primare se alege No;
nr_crt (numr curent) un cmp de tip Number, Field Size: Integer,
Caption: Numar curent;
cod_p (codul produsului) un cmp pentru care se selecteaz Lookup
Wizard, se creaz o legtur cu tabela Produse, pe baza cmpului
cmpul cod_p;
cantit un cmp de tip Number, Field Size: Integer, Caption: Cantitate;
pret_u un cmp de tip Currency, Caption: Pret unitar;
cotaTVA un cmp de tip Number, Field Size: Single, Default Value:
0,24, Caption: Cota TVA.
Se selecteaz cmpurile nr_f i nr_crt i se creaz o cheie primar compus
apsnd butonul Primary Key de pe panglic.
Acest tabel fiind copilul tabelelor Produse i Facturi, vom introduce 8
nregistrri:

Fig. 73 Tabela ProduseFacturate

Pentru a verifica relaiile i a seta regulile de integritate referenial, se


selecteaz butonul Relationships de pe panglic figura 74.

Fig. 74 Butonul Relationship

153

Pentru fiecare legtur n parte, se apeleaz meniul contextual, se alege opiunea


Edit Relationships... Pentru a seta regulile de integritate referenial se
selecteaz opiunea Enforce Referential Integrity, bifnd opiunea Cascade
Update Related Field. Dac se dorete modificarea tipului de relaie dintre cele
dou tabele, se selecteaz butonul Join Type..., alegnd una dintre cele trei
tipuri de relaii (Left Join, Inner Join sau Right Join).

Fig. 75 Fereastra Edit Relationships

Selectnd pentru fiecare relaie n parte opiunile respective i reordonnd


tabele, se obine urmtoarea situaie:

Fig. 76 Fereastra Relationships

5.12.3 Problem rezolvat Formulare i controale


S se creeze un folder pe Desktop cu numele i prenumele dvs. n acesta, s se
creeze o baz de date cu numele Programari care s conin informaiile legate
despre pacieni: un cod unic al pacientului, numele i prenumele acestuia, data
naterii, adresa, telefonul formatat de tipul 0722-456-768, seria i numrul crii
de identitate exact 2 litere i 6 cifre. Pentru fiecare programare se cunoate
data programrii implicit data de azi, ora programrii, doctorul la care se face
programarea i suma de plat. Pentru fiecare doctor se cunoate numele
doctorului, adresa, numrul de telefon, titlul (rezident, primar, specialist) i

154

specialitatea sa (cardiolog, ORL, etc). S se introduc 3 nregistrri n tabela


(tabelele) printe i numrul necesar de nregistrri n tabela (tabelele) copil.
1. S se afieze toi pacienii ordonai alfabetic dup nume.
2. S se creeze un formular de meniu care s conin 4 butoane de
comand: primul va deschide forma Pacieni cu subformularul
Programri, al doilea va deschide forma Programari (care va fi creat n
Design, modificnd culoarea fundalului), al treilea buton va deschide
forma Doctori (care va avea un titlu i o poza pe fundal), iar ultimul
buton permite nchiderea formei.
Rezolvare
n urma analizei problemei, s-a ajuns la urmtoarea structur a datelor:

Fig. 77. Fereastra Relationships


1. Pentru a sorta datele dintr-o tabel se pot folosi fie butoanele
Ascending sau Descending aflate pe panglic (Ribbon), dac este
selectat opiunea de meniu Home, tabelul fiind deschis n Design
View, fie sgeata din dreptul numelui cmpului n modul Datasheet
View figura78.

Fig. 78 Sortarea cresctoare a valorilor din cmpul IDdoctor

155

2. Formularul de meniu va fi creat ultimul, acesta apelnd formularele


create anterior.
Pentru a crea primul formular cu subformular, vom selecta tabela printe
(Pacieni) din panoul de navigare i apsm butonul Form de pe panglic
(Ribbon), fiind selectat opiunea de meniu Create figura 79. Se observ c
dac au fost create relaiile dintre tabele, apelarea butonului Form nu creaz un
formular simplu, ci un formular pentru tabela printe cu un subformular
corespunztor tabelei copil. Formularul se va salva cu numele
PacientiProgramari. Dac se dorete vizualizarea formularului n Design
View, se folosete fie butonul View de pe panglic, opiunea de meniu Home,
opiunea Design View, fie butonul cu acelai nume de pe bara de stare. Se pot
observa 3 zone: Form Header, Detail i Form Footer.

Fig. 79 Formular cu subformular

Pentru a crea un formular n Design View, se alege opiunea de meniu Create,


apoi butonul Form Design de pe panglic (Ribbon). Se observ faptul c pe
formular este vizibil doar zona de Detail. Pentru a afia i celelalte zone de
meniu, se apeleaz meniul contextual (clic cu butonul din dreapta al mouse-ului
pe formular), apoi se selecteaz opiunea Form Header/Footer. Formularul se
salveaz (butonul Save din dreapta butonului Office) cu numele Programari
figura 80.

156

Fig.80 Formular n Design View

Pentru a schimba proprietile formularului, se apeleaz meniul contextual, apoi


se alege opiunea Properties. Pentru a selecta tabela surs a formularului, se
selecteaz n cadrul casetei Selection type: Form, apoi opiunea Recourd
Source de unde alegem selectnd sgeata, se alege numele tabelei Programari
figura 81.

Fig. 81 Fereastra Property Sheet

De pe panglic se selecteaz opiunea de meniu Design, apoi se selecteaz


butonul Add Existing Fields, adugndu-se prin dublu-clic sau drag-and-drop
toate cmpurile din tabela Programari n zona de Design a formularului
figura 82.

157

Fig. 82 Adugarea controalelor pe formular

Pentru a schimba culoarea fundalului se folosete butonul Fill/Back Color. Se


utilizeaz pentru fiecare zon n parte figura 83. Pentru a vizualiza rezultatul,
se folosete opiunea Form View fie de pe bara de stare, fie din cadrul
butonului View de pe panglic (opiunea de meniu Home).

Fig. 83 Modificarea culorii fundalului

Pentru a crea formularul Doctori vom urma aceeai pai ca i la punctul b.


Pentru a aduga un titlu vom selecta butonul Label de pe panglic (opiunea de
meniu Design) i vom executa clic n zona Form Header. Titlul adugat va fi
Lista doctorilor. Cnd s-a terminat introducerea textului, se execut clic oriunde
pe form pentru a finaliza editarea. Vom executa clic cu butonul din dreapta al
mouse-ului pe titlu, selectnd opiunea Properties. n fereastra Property Sheet
vom modifica proprietatea Name: lblTitlu. De observat faptul c proprietatea
Caption apare deja completat cu textul care apare pe form.
Se pot alege opiuni de formatare cum ar fi dimensiunea literelor, culoarea
literelor, ngroare, nclinare, centrare, etc. Aceste se gsesc n zona Font de pe
panglic. Dac este nevoie se va redimensiona controlul.

158

Pentru a aduga aduga o poz de fundal vom selecta butonul Property Sheet
de pe panglic. De la Selection type vom alege Form, apoi opiunea Picture.
Selectnd butonul cu trei puncte se va alege o poz pentru fundal. Dac este
nevoie, se va modifica culoarea textului etichetelor pentru a crea un contrast cu
fundalul. Pentru form se va selecta proprietatea Picture Size Mode i se vor
alege opiunea Stretch figura 84. Pentru a vizualiza formularul se va alege
opiune Form View. Se nchide formularul.

Fig. 84 Adugarea unei poze de fundal

Pentru a crea un formular de meniu, se va selecta butonul Form Design de pe


panglic, fiind selectat opiunea Create de pe bara de meniuri. Nu se va mai
selecta Form Hearde/Footer. Se verific dac pe panglic butonul Use
Control Wizard este selectat, iar dac nu este selectat, l selectm. Se alege
apoi butonul Button. La execuia unui clic pe form, fereastra Command
Button Wizard va apare pe ecran figura 85.

159

Fig. 85 Fereastra Command Button Wizard

Se alege categoria Form Operations, apoi aciunea Open Form, apoi se apas
butonul Next. Se alege formularul PacientiProgramari, apoi se apas Next. Se
va alege opiunea Open the form and show all the records, apoi se apas
butonul Next. Se selecteaz opiunea Text, modificnd textul n Forma
PacientiProgramari, apoi se apas butonul Next. Numele butonul va fi
cmdPacCons, apoi se apas Finish.
Analog se construiesc butoanele corespunztoare celorlalte dou formulare.
Pentru ultimul buton se va alege categoria Application, aciunea Quit
Application. Se va selecta pentru opiunea Text: Ieire, numele butonului fiind
cmdIeire.
Formularul va fi salvat cu numele Meniu Figura 86. Se va testa formularul
trecnd n Form View.

Fig. 86 Crearea unui formular de meniu

160

5.12.4 Problem rezolvat Formulare cu controale calculate,


Switchboard
S se creeze pe Desktop un folder cu numele i prenumele dvs. S se creeze o
baz de date cu numele Transporturi. Clienii pot fi att persoane fizice, caz n
care pe fi sunt specificate numele, adresa clientului i numrul de telefon, ct
i persoane juridice, caz n care se specific denumirea firmei i codul fiscal.
Transporturile sunt realizate prin intermediul unei fie de transport, caracterizate
prin data i ora plecrii, numrul autovehicolului, destinaia i tariful. Angajaii
firmei (oferii) sunt identificai prin nume, adres i numr de telefon.
1. S se creeze relaii de tip one-to-many ntre tabele. S se introduc 3
nregistrri n tabela (tabelele) printe i numrul necesar de nregistrri
n tabela (tabelele) copil. S se modifice relaiile pentru a realiza
modificarea datelor n cascad.
2. S se creeze un formular cu subformular pentru Clieni i transporturile
efectuate utilizndu-se Form Wizard.
3. S se creeze un formular pentru tabela FieTrans, afindu-se toate
cmpurile, i n plus, TVA-ul i valoarea cu TVA a tarifului pentru
fiecare fi de transport. S se adauge un buton de comand n Form
Footer pentru a nchide forma.
4. S se creeze un formular de tip Switchboard denumit Meniu cu 2
butoane de comand: primul, denumit Vizualizare formulare, va apela
un alt Switchboard care va grupa toate formele create anterior. Al doilea
buton de pe primul Switchboard, denumit Ieire, va permite nchiderea
mediului de lucru Access. S se seteze Switchboardul Meniu ca fiind
prima form afiat atunci cnd va fi deschis aplicaia.
Rezolvare
1. Analiznd problema, s-a ajuns la urmtoarea structur a datelor figura 87.

Fig. 87 Fereastra Relationship

2. Pentru a construi un formular cu subfomular se vor construi cte un


formular pentru fiecare tabel, urmnd a le uni ntr-unul singur. Pentru tabela

161

printe se va alege un formular de tip Columnar, iar pentru tabela copil, un


formular de tip Tabular.
Pentru a crea primul formular, se alege opiunea de meniu Create, butonul
More forms... apoi Form Wizard. La primul pas se alege tabela Clienti,
selectndu-se toate cmpurile cu ajutorul butonului cu dou sgei, apoi se
apas Next figura 88. Aspectul (layout-ul) formularului va fi Columnar, apoi
se selecteaz butonul Next. Se alege un stil, apoi se apas Next. La ultimul pas
se apas doar butonul Finish. Se salveaz formularul cu numele Clienti.

Fig. 88 Form Wizard pentru tabela Clieni

n mod similar se creaz un formular pentru tabela FiseTrans, selectnd ca


layout Tabular (la pasul 2). Se salveaz formularul cu numele FiseTrans.
Pentru clasificarea obiectelor, n panoul de navigare din partea din stnga a
ecranului (Navigation Pane) se alege de la All Tables sgeata, apoi Object
Type. Obiectele vor fi ordonate dup tipul lor.
Se deschide formularul Clienti in Design View. Se mrete zona de Detail i se
trage formularul FiseTrans din panoul de navigare n zona de detaliu a
formularului printe. Se trage n jos de butonul de redimensionare (portocaliu) a
subformularul astfel nct s fie vizibil zona acestuia de Detaliu. Se salvez
utiliznd butonul Office, Save as..., Save Object As cu numele
ClientiFiseTrans figura 89.

162

Fig. 89 Formularul Clienti cu subformularul FiseTrans

3. Pentru a crea un formular n Design View, se alege de pe panglic opiunea


Create, apoi Form Design. Din fereastra Properties (de pe panglic,
opiunea de meniu Design, butonul Property Sheet), se alege la Selection
Type Form, iar la opiunea RecordSource (sursa nregistrrilor) se
selecteaz din list FiseTrans. Se apeleaz butonul Add Existing Fields (de
pe panglic, opiunea de meniu Design) i prin dublu-click pe cmp sau
drag-and-drop se selecteaz pe formular toate cmpurile.
Pentru a aduga un nou cmp pe formular, se folosete butonul Text Box de pe
panglic (drag-and-drop). Controlul va fi plasat pe formular n zona Detail, sub
celelalte controale. Acesta este format dintr-o etichet (n englez Label)
(partea din stnga, Text8 n acest caz), i cutia de text (Text Box n englez)
(partea din dreapta, care apare completat cu cuvntul Unbound nelegat).
Efectund clic cu butonul din dreapta pe etichet, alegem opiunea Properties.
n fereastra Property Sheet se vor modifica dou proprieti pentru etichet:
Name: lblTVA i Caption: TVA (pe pagina All sunt primele dou opiuni).
Pentru cutia de text vom modifica proprietile Name: txtTVA i
ControlSource: semnul egal urmat de formula de calcul a TVA-ului,
punnd numele cmpului ntre paranteze drepte. n mod similar se calculeaz i
valoarea tarifului cu TVA. Se va aduga un nou Text box de pe panglic n zona
Detail a formularului, sub celelalte controale. Pentru etichet se modific
proprietile Name:lblTarifTVA i Caption: Tarif cu TVA. Pentru text-box
se modific proprietile Name:txtTarifTVA i Control Source: semnul egal
urmat de formula de calcul, numele cmpului sau a cmpurilor fiind scrise
ntre paranteze drepte figura 90.

163

Fig. 90 Crearea unui cmp calculat

Pentru a formata cele dou cutii de text create astfel nct s conin simbolul
valutar, n fereastra Property Sheet, se va selecta proprietatea Format de unde
se alege Currency. Formularul va fi salvat cu numele FiseTransport.
Pentru a aduga un buton de comand care va nchide formularul, se verific
dac este apsat butonul Use Control Wizard din opiunea de meniu Design
(de pe panglic). Dac este selectat, se alege butonul Button, apoi se execut un
clic pe formular, sub restul controalelor. Se alege categoria Forms, aciunea
Close Form, apoi se apas butonul Next. Se selecteaz opiunea Text unde se
tasteaz nchidere, apoi se apas butonul Next. Pentru a finaliza, se tasteaz
numele controlului, cmdInchidere, apoi se apas butonul Finish.
4. Pentru a crea un Switchboard, de pe bara de meniuri se alege opiunea
Database Tools, apoi Switchboard Manager. La apariia mesajului The
Switchboard Manager was unable to find a valid switchboard in this
database. Would you like to create one? se alege opiunea Yes. n
fereastra Switchboard se selecteaz butonul Edit pentru a modifica
formularul principal (Main Switchboard(Default)). n fereastra Edit
Switchboard Page se modific opiunea Switchboard Name din Main
Switchboard n Meniu. Se apas butonul Close i se creaz al doilea
formular care va avea numele Vizualizare formulare. Pentru aceasta se
apas butonul New i se modific numele formularului din New
Switchboard page n Vizualizare formulare figura 91.

164

Fig. 91 Crearea celui de-al doilea formular

Se vor aduga n continuare elemente pe fiecare formular n parte.


Primul formular, Meniu va avea dou elemente: unul care permite vizualizarea
formularului Vizualizare formulare i al doilea care permite prsirea
aplicaiei. Pentru aceasta, se selecteaz Meniu, apoi se apas butonul Edit. n
caseta Item on this Switchboard vor fi afiate cele dou elemente create.
Pentru a aduga un element nou, se apas butonul New figura 92.

Fig. 92 Adugarea unui item pe primul formular

n cadrul casetei Text se va completa textul care dorim s apar n dreptul


butonului: Vizualizare formular. n caseta Command se las neschimbat Go
to Switchboard, iar din ultima caset Switchboard se alege numele
formularului care va fi apelat atunci cnd butonul acesta va fi acionat:
Vizualizare formulare. Se apas butonul OK.
Pentru a aduga al doilea element, se apas butonul New. n cadrul casetei Text
se va completa Ieire, iar n caseta Command se va alege Exit Application,
apoi se apas butonul OK figura 93.

165

Fig. 93 Adugarea unui item pe primul formular

Pentru a iei din modul de editare al formularului Meniu se utilzeaz butonul


Close.
Se alege formularul Vizualizare formulare, apoi se apas butonul Edit, pentru
a aduga butoane. Pentru aceasta se utilizeaz butonul New Figura 94.
n caseta Text se tasteaz Formularul urmat de numele formularului ales, n
cutia de text Command se alege Open form in Edit Mode iar din caseta Form
se alege primul formular. Se apas butonul OK.

Fig. 94 Adugarea unui item pe formularul Vizualizare formulare

n mod similar se creaz butoane pentru fiecare formular.


Ultimul buton va face trecerea napoi la formularul Meniu. Pentru aceasta se
apas din nou butonul New figura 95.

166

Fig. 95 Adugarea item-ului Intoarcere pe formularul Vizualizare formulare

Pentru a ncheia modul de editare al formularului Vizualizare formulare se


apas butonul Close. Dac formularul Meniu nu este formularul principal (dac
n dreptul lui nu apare cuvntul Default n parantez), acesta se selecteaz, apoi
se apas butonul Make Default. Odat cu apsarea butonului Close observm
crearea unui nou formular cu numele Switchboard i a unei tabele cu numele
Switchboard Items n panoul de navigare din stnga Figura 96.

Fig. 96 Formularul Meniu (de tip Switchboard)

Pentru a seta formularul ca fiind primul obiect care apare la deschiderea bazei
de date, se selecteaz butonul Office, se alege butonul Access Options, apoi
Current Database. Se poate alege un titlu pentru aplicaie, n caseta
Application Title: Transporturi, iar din lista Display Form se alege
Switchboard figura 97.

167

Fig. 97 Crearea unui titlu a aplicaiei i setarea formularului principal

5.12.5 Problem rezolvat Interogri


Se consider baza de date creat la punctul 5.12.2.
1. S se creeze o interogare care s permit afiarea informaiilor de pe
toate facturile (nr_f, data_f, den_p, cantit, pre_u i cota TVA) pentru
data curent.
2. S se creeze o interogare afindu-se pentru fiecare nregistrare TVA-ul
i Valoarea.
3. S se creeze o interogare care s permit citirea interactiv n momentul
execuiei a unui numr de factur i afiarea informaiilor legate de
aceasta.
4. S se creeze o interogare care s permit afiarea tuturor facturilor
eliberate ntre 2 date calendaristice (operatorii Between cu And).
5. S se creeze prin intermediul unei interogri un nou cmp cu numele
Observaii care va conine textul Produs eficient dac valoarea este
mai mare dect o anumit valoare sau Produs ineficient daca valoarea
este mai mic dect acea valoare.
6. S se afieze toate facturile eliberate luna aceasta.
7. Operatorul Like:
a. S se afieze toate produsele care ncep cu litera l.
b. S se afieze doar produsele care sunt din 6 litere si ncep cu
litera l.

168

8. S se afieze toate produsele care au preurile 50 i 1000 lei.


9. S se determine pentru fiecare factur valoarea total.
10. S se creeze un nou tabel pe baza tabelelor Facturi, Produse i
LiniiFact, rezultatul unei interogri, care s conin toate datele din
toate tabele, suprimnd apariia dublat a cmpurilor de legtur,
tabelul fiind ordonat alfabetic dup denumirea produselor.
Rezolvare:
1. Pentru a crea o interogare, de pe bara de meniuri se alege opiunea
Create, apoi Query Design. n fereastra Show table se vor selecta prin
dublu-clic tabelele Facturi, ProduseFacturate i Produse, apoi se
nchide fereastra. Pentru a alege cmpurile dorite, acestea se selecteaz
prin dublu-click. Sub coloana data_f, pe linia Criteria, se va introduce
=Date(). Se salveaz interogarea apsnd pe butonul Save (numele
interogrii fiind Facturi curente). Pentru a vizualiza rezultatul
interogrii, de pe butonul View se alege Datasheet View.

Fig. 98 Interogare n Query Design

Observaie: Dac interogarea nu returneaz nici un rezultatul, nseamn c nici


o nregistrare nu a verificat condiia ca data facturii s fie data curent.

Fig. 99 Interogare n Datasheet View

Se nchide interogarea.

169

2. Pentru a crea a doua interogare, se alege de pe panglic opiunea de


meniu Create, apoi Query Design. Din tabela ProduseFacturate se
selecteaz cantitatea, preul i cotaTVA, iar din tabela Produse
denumirea produsului i unitatea de msur. Deci n fereastra Show
Tables, se vor alege ambele tabele, selectndu-se cmpurile respective.
Pe prima coloan liber se calculeaz TVA-ul dup urmtoarea formul
TVA: [cantit]*[pret_u]*[cotaTVA]
Pe urmtoarea coloan se calculeaz valoarea:
Valoare: [cant]*[pret_u]+[TVA]
Se salveaz i vizualizez rezultatul interogrii. Pentru a afia simbolul
valutar ntr-o anumit coloan din interogare (de exemplu pt. TVA), n
modul de vizualizare Design View se selecteaz coloana, se apeleaz
din meniul contextual opiunea Properties, iar la opiunea Format se
alege Currency. Analog se procedeaz i cu coloana Valoare.

Fig. 100 Interogare n Design View

3. Se selecteaz tabelele Facturi, Produse i ProduseFacturate, cmpurile:


nr_f, data_f, den_p, pret_u i cantit. Pentru a crea o interogare cu parametru,
care s permit citirea interactiv a numrului facturii de pe tastatur, pe
coloana nr_f, linia Criteria se tasteaz [Introduceti numarul facturii]. Se
nchide interogarea i se lanseaz n execuie prin dublu-clic pe numele
interogrii din panoul de navigare.

Fig. 101 Interogare cu parametru

170

4. Se selecteaz tabela Facturi, ProduseFacturate i Produse, cmpurile:


nr_f, data_f, den_p, pret_u i cantit:

Fig. 102 Operatorul Between

5. Se deschide interogarea de la punctul 2, n Design View, se salveaz cu


numele Observaii (Save as de pe butonul Office, Save object as...). Se
apeleaz meniul contextual asociat unui nou cmp (prima coloan liber), se
alege opiunea Build figura 103.

Fig. 103 Funcia IIF

Se selecteaz funcia IIF, modificnd-o astfel:


Observatii: IIf([valoare]>=50000;"Produs eficient";"Produs ineficient")

Fig. 104 Funcia IIF

171

Dac se trece n modul de vizualizare Datasheet View se poate observa


rezultatul aplicrii funciei IIf figura 105.

Fig. 105 Rezultatul funciei Iif

6. Vom folosi 2 funcii care pot fi aplicate unor date calendaristice:


Datepart (o parte dintr-o dat calendaristic) i funcia Month (extrage luna
dintr-o dat calendaristic).

Fig. 106 Funcii pentru dat calendaristic

7. a). Se alege tabela Produse, cmpurile: den_p, pret_u. Pe coloana


den_p, linia Criteria se tasteaz condiia: LIKE "l*".
b) Se deschide interogarea de la punctul a), se salveaz cu alt nume, se
trece n modul de vizualizare Design View i se modific condiia: LIKE
"l?????".
8. Se alege tabela ProduseFacturate, coloana pret_u, utilizndu-se
operatorul IN figura 107.

172

Fig. 107 Operatorul IN

9. Se creaz o nou interogare. Se adaug tabelele Produse i


ProduseFacturate. Se calculeaz valoarea. Se adaug cmpul nr_f i se
selecteaz butonul Totals de pe bara de unelte, iar sub valoare, pe linia
Total, se alege funcia SUM figura 108.

Fig. 108 Interogri de sintetizare a datelor

10. Pentru a crea o nou tabel cu toate nregistrrile din tabelele Facturi,
Produse i ProduseFacturate, se adaug toate cmpurile din aceste
tabele, fr a le duplica. Se salveaz interogarea cu numele Creare
tabela. De pe panglic se alege butonul Make Table figura 109, se
tasteat numele noii tabele: Reuniune, apo se apas butonul OK. Pentru
a se executa interogarea se va selecta Run. Dac nivelul de securitate
nu este setat astfel nct s permit execuia codurilor Visual Basic,
interogarea nu va funciona. Pentru a permite utilizarea codurilor, de pe

173

bara Security Warning se alege butonul Options, apoi opiunea


Enable this content.

Fig. 109 Interogare de tip Make Table

Dac interogarea este nchis, se va lansa n execuie prin dublu-clic pe numele


acesteia din panoul de navigare figura 109. Sistemul Access avertizeaz
asupra eventualelor riscuri care pot apare la execuia unei interogri de aciune.
Vom alege butonul Yes.

Fig. 110 Mesaj de avertizare

i mesajul urmtor este doar unul de avertizare, i anume c datele salvate n


tabele vor fi adugate n tabelul nou creat. Deci vom apsa butonul Yes.

174

Fig. 111 Mesaj de avertizare la transferarea nregistrrilor ntr-un nou tabel

5.12.6 Problem rezolvat Rapoarte


1. S se creeze un raport pentru tabelul ProduseFacturate, datele fiind
grupate dup nr_f.
2. S se creeze un raport pentru afiarea datelor de pe fiecare factur n
parte, calculndu-se valoarea facturii i valoarea total a tuturor
facturilor.
Rezolvare:
1. Pentru a crea un raport cu ajutorul asistentului, se alege opiunea de
meniu Create, butonul Report Wizard. La primul pas se alege tabela sau
interogarea pe baza creia se va crea raportul (Tables/Queries). Din caseta
Available Fields se selecteaz cmpurile dorite, apoi se apas butonul Next.

Fig. 112 Report Wizard pentru tabela ProduseFacturate

La pasul 2 se selecteaz criteriul de grupare, n cazul de fa vom grupa


produsele facturate dup nr_f. Dac se apas butonul Grouping Options se pot
alege mai multe variante de grupare: dup primele 10, 50, 100, etc numere de
factur. n cazul de fa opiunea Normal rmne selectat figura 113.

175

Fig. 113 Fereastra Grouping Intervals

La pasul urmtor se selecteaz ordinea n care vor fi afiate nregistrrile n


raport:

Fig. 114 Ordonarea datelor de pe raport

Dac este selectat butonul Summary Options... se pot selecta funcii ce vor fi
aplicate pe cmpurile numerice din tabel sau interogare figura 115.

176

Fig. 115 Summary Options

n continuare se selecteaz orientarea paginii (vertical, orizontal), precum i


modul de afiare al informaiilor pe pagin:

Fig. 116 Opiuni de formatare a paginii

La pasul urmtor se alege un stil din lista afiat figura 117.

Fig. 117 Alegerea stilului raportului

177

Ultimul pas permite modificarea titlului raportului (nu este vorba de numele cu
care va fi salvat raportul, ci doar textul care va apare n antentul raportului),
apoi putem alege ntre a vizualiza raportul i a modifica raportul. Pentru a
ncheia crearea raportului se alege opiunea Finish. figura 118

Fig. 118 - Alegerea unui titlu i vizualizarea raportului n mod Print Preview

Raportul n modul Print Preview va apare ca n figura urmtoare figura 119.

Fig 119 ProduseFacturate n Print Preview

178

n Design View raportul arat ca n figura 120.

Fig. 120 Raportul ProduseFacturate n Design View

Dac datele provin din mai multe tabele, sau sunt necesare unele cmpuri
calculate, se poate crea o interogare n care se selecteaz tabelele, se calculeaz
cmpurile dorite, apoi se creeaz raportul pe baza interogrii.
Dac se dorete adugarea unui cmp care va fi calculat, se alege de pe panglic
controlul Text Box. Se modific pentru etichet proprietile Name: lblValoare
i Caption: Valoare. Aceasta va fi mutat n zona nr_f Header. Pentru controlul
de tip Text Box se vor modifica proprietile Name: txtValoare i Control
Source: =[cantit]*[pret_u]* [cotaTVA].
2. Pentru a crea raportul, se va alege ca surs a datelor interogarea cu
numele Valoare. Avnd cmpuri numerice, la pasul 3 se selecteaz butonul
Summary Option, bifnd check-box-urile de sub funcia SUM pentru
cmpurile TVA i Valoare.

Fig. 121 Fereastra Summary Options

179

Pentru a vizualiza raportul, de pe butonul View se alege opiunea Print


Preview figura 122.

Fig. 122 Raportul n Print Preview

Pentru a modifica raportul (aduga controale calculate) este necesar


vizualizarea acestuia n modul Design View.

Fig. 123 Raportul n Design View

180

5.13 Probleme propuse


5.13.1 Problema propus Crearea tabelelor Filial CEC
Se cere informatizarea activitii la o filial CEC. Clienii filialei sunt
identificai prin seria i numrul de buletin, data eliberrii buletinului, nume,
prenume i adres. Fiecare client poate s dein unul sau mai multe cecuri.
Pentru fiecare cec se cunoate: seria, numrul, data la care a fost eliberat, suma
depus n momentul eliberrii i tipul cecului (poate fi la termen i la vedere).
De asemenea, fiecare cec poate s aib unul sau mai muli titulari. Fiecare client
poate efectua depuneri i restituiri. Depunerile se efectueaz prin intermediul
unei foi de depunere (FD) caracterizat prin: numr, data i suma depus.
Restituirile se efectueaz prin intermediul foilor de restituire (FR) caracterizate
prin: numr, data i suma restituit. Fiecare cec se poate lichida de ctre unul
din titulari prin intermediul unei foi de lichidare (FL) caracterizat prin: numr,
data i suma din momentul lichidrii. Dobnda acordat pentru cecuri se
modific de la o zi la alta i este diferit pentru cecurile la termen fa de cele la
vedere.

5.13.2 Problem propus Crearea formularelor


S se creeze o interfa grafic cu utilizatorul cu ajutorul opiunii Switchboard,
fiind create formulare cu subformulare pentru toate tabelele printe-copil,
mbogite cu butoane de comand care s permit nchiderea formelor i
cmpuri calculate pe baza tabelelor create n baza de date de la punctul 5.13.1.

5.13.3 Problem propus Crearea interogrilor


S se creeze toate tipurile de interogri pentru baza de date creat la punctul
5.13.1.

5.13.4 Problem propus Crearea rapoartelor


S se creeze rapoarte pentru toate tabelele i interogrile create la punctul 5.13.1
i 5.13.3.

181

182

CAPITOLUL 6
ELEMENTE SQL
6.1 Introducere
Unul dintre cele mai puternice limbaje structurate pentru interogarea datelor,
SQL (Structured Query Language), a devenit un standard pentru o gam din ce
n ce mai larg de sisteme pentru gestiunea bazelor de date. A fost construit n
1986 de ctre ANSI (American National Standards Institute). De atunci, este
considerat a fi un standard interaional avizat de ctre ISO (International
Organization for Standardization) i IEC (International Electrotechnical
Comission). A fost adoptat ca fiind standard federal de ctre FIPS (american
Federal Information Processing Standard). n cadrul acestui capitol se vor
prezenta comanda Select care permite realizarea interogrii bazelor de date,
precum i instruciunile care permit actualizarea datelor (adugarea, modificarea
i tergerea datelor prin comenzi SQL).

6.2 Comenzi SQL


Limbajul SQL (Structured Query Language) este un limbaj structurat de
interogri i gestionare a bazelor de date relaionale. Access folosete SQL ca
limbaj de interogare. n momentul crerii unei interogri n modul de interogare
Design, Access construiete n paralel instruciunile SQL echivalente. De altfel,
majoritatea proprietilor interogrilor n modul de interogare Design prezint
clauze echivalente i opiuni accesibile n limbajul SQL.
Avantajele utilizrii instruciunii SQL n VBA sunt urmtoarele:
viteza de execuie: o instruciune Select este mai rapid dect
parcurgerea secvenial a unui tabel.
performan mai bun: n modul client/server, interogrile sunt
compilate de SGBD care le optimizeaz performaele.
ntreinere mai uoar: codul de instruciuni SQL este mai scurt, deci
mai uor de citit, dect echivalentul su n VBA.

183

standardizare: limbajul SQL este standardul de interogare al bazelor de


date relaionale. 34

SQL are urmtoarele componente:


1. DDL Data Definition Language (limbaj de definire a datelor):
include comenzi legate de crearea, modificarea i tergerea schemei de
structur a bazei de date i/sau a tabelelor. Dintre comenzile cele mai
des ntlnite amintim: CREATE TABLE, ALTER TABLE, DROP
TABLE;
2. DML Data Manipulation Language (limbaj de manipulare a
datelor): include comenzi pentru a realiza interogri i pentru a
modifica datele stocate n tabele. Dintre cele mai des utilizate comenzi
amintim: SELECT, INSERT INTO, UPDATE, DELETE;
3. DCL Data Control Language (limbaj de control a datelor): include
comenzi pentru meninerea securitii i a confidenialitii bazei de
date. Dintre comenzile uzuale amintim: GRANT (acordarea drepturilor
unui utilizator) i REVOKE (revocarea drepturilor unui utilizator).
Vocabularul SQL cuprinde o serie de cuvinte cheie, dintre care amintim35:
instruciuni determin execuia unei anumite aciuni (de exemplu
Create Table, Select, Delete);
clauze permit specificarea unor argumente care nuaneaz
instruciunile, delimitnd entitile participante la interogare (exemple
de clauze: From, Where, Group By, Order By);
funcii efectueaz prelucrri asupra anumitor date denumite
argumentele sau parametrii funciei, rezultatele returnate fiind utilizate
n cadrul unei clauze SQL. Funciile i operatorii prezentai n
paragraful 5.4.1 sunt valabili i n SQL.
Principalele reguli de sintax sunt:
orice instruciune SQL se termin cu simbolul punct i virgul;
SQL utilizeaz ierarhia obiectelor din modelele orientate pe obiecte,
caracterul punct separnd un obiect de un atribut sau o metod a
acestuia. De exemplu, numele_tabelei.numele_cmpului;
parantezele drepte se utilizez atunci cnd un nume de tabel sau cmp
conine caracterul spaiu, de exemplu [Denumire Furnizor];
34

Giulvezan C., Mircea G., Trnveanu D., Margea C. Baze de date, Editura Universitii de
Vest, Timioara, 2009, p.59
35
Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p. 67

184

caracterul virgul este utilizat pentru a delimita valorile unei liste (de
exemplu lista cmpurilor);
valorile de tip Number sunt scrise direct, fr a fi ncadrate de nici un
alt caracter;
valorile de tip Text sunt ncadrate ntre caracterul apostrof (de
exemplu: Timioara);
valorile de tip dat calendaristic sunt ncadrate ntre caracterul diez
(de exemplu: #31/12/2011#).

Reguli de editare n cazul instruciunilor SQL36:


fiecare clauz a interogrii se plaseaz pe cte o linie separat, indentat
fa de instruciunea din care face parte;
nceputul fiecrei clauze va fi aliniat cu nceputul celorlalte;
dac o clauz este fragmentat, fiecare din prile ei constitutive se
poziioneaz pe cte o linie separat i se indenteaz fa de nceputul
clauzei;
pentru evidenierea cuvintelor rezervate, specifice SQL, se folosesc
majuscule.
Atunci cnd se scriu instruciunile n format general, exist mai multe convenii
de notare:
cuvintele rezervate sunt scrise cu majuscule;
cuvintele definite de utilizator se scriu cu litere mici;
bara vertical semnific separarea mai multor elemente alternative
care se exclud reciproc (doar unul din acestea poate fi s apar);
parantezele drepte [ ] ncadreaz un element opional;
acoladele {} ncadreaz un element obligatoriu;
punctele de suspensie semnaleaz repetarea opional a unui element al
unei liste.

36

Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p. 71

185

6.2.1 Comanda CREATE TABLE


Pentru a crea o tabel de referin se poate utiliza urmtorul format general:
CREATE TABLE numet1
(numec1 tip1 [CONSTRAINT nn_c1 NOT NULL]
[CONSTRAINT pk_c1] PRIMARY KEY,
numec2 tip2 [CONSTRAINT nn_c2 NOT NULL], );
unde numet1 este numele tabelului creat, numec1, numec2,... sunt numele
cmpurilor care vor constitui structura tabelului. Tip1, tip2, ... sunt tipurile de
date suportate de limbajul SQL vezi figura 1. PRIMARY KEY semnifica
setarea unui cmp ca fiind de tip cheie primar. Atributul NOT NULL
semnific faptul c acel cmp este este obligatoriu s fie completat (echivalentul
proprietii Required din Access). Programatorii folosesc o denumire pentru
fiecare constrngere utilizat (Primary Key, Foreign Key, Not Null, Unique).
Denumirea constrngerii este poziionat n faa constrngerii, dup cuvntul
predefinit CONSTRAINT. Numele constrngerilor sunt formate dintr-un prefix
urmat de numele cmpului pe care este setat. Prefixul este prestabilit:
pk (pentru PRIMARY KEY);
nn (pentru NOT NULL);
un (pentru UNIQUE);
fk (pentru FOREIGN KEY).
ntre tipurile de date din Access (din Design View) i tipurile de date din SQL
nu exist o coresponden perfect figura 1.
Access
Double
Long Integer
Yes/No
Date/Time
Text

SQL
Number
Integer
Logical
Date
Text

Fig. 1 Corespondenele ntre tipurile de date din Access i SQL

Pentru tipul de date Text, dac nu se specific lungimea acestuia, valoarea


implicit este de 255 de caractere. Dac un nume de cmp conine caracterul
space, acesta trebuie pus ntre paranteze drepte. De exemplu, [Nume Prenume].

186

Exemplu: S se creeze o tabel cu turitii unei agenii de turism. Pentru acetia


vom cunoate CNP-ul, numele i prenumele, seria i numrul de pe cartea de
identitate, data naterii, telefonul i numrul de paaport.
CREATE TABLE Turisti (CNP_turist TEXT(13)
CONSTRAINT pk_CNP_turist PRIMARY KEY,
numepren_turist TEXT(30), serienrCI TEXT (8),
datanast_turist DATE, telefon TEXT (12),
nrpass_turist NUMBER);
Pentru a crea o tabel cu o cheie primar compus, se utilizeaz urmtorul
format general:
CREATE TABLE numet2
(numec1 tip1 [CONSTRAINT nn_c1] [NOT NULL],
numec2 tip2 [CONSTRAINT nn_c2][NOT NULL],
,
[CONSTRAINT pk_nc1c2] PRIMARY KEY
(numec1,numec2));
Pentru crearea unei chei primare compuse, constrngerea va fi specificat la
sfrit, numele acesteia va fi format din prefix i numele celor dou cmpuri.
Dup PRIMARY KEY se specific ntre paranteze cmpurile care compun
cheia primar.
Exemplu: S se creeze o tabel cu o cheie primar compus. Tabela va avea
numele ProduseFacturate i va conine urmtoarele cmpuri: numrul facturii,
numrul curent al produsului de pe factur, cantitate, pre unitar, unitatea de
msur i cotaTVA. Cheia primar va fi compus din cmpurile nr_f i nr_crt.
CREATE TABLE ProduseFacturate (nr_f INTEGER NOT NULL,
nr_crt INTEGER NOT NULL,
cantitate NUMBER, pret_u NUMBER, um TEXT (10),
cotaTVA NUMBER,
CONSTRAINT pk_nrfcrt PRIMARY KEY (nr_f, nr_crt));

187

Pentru a crea o tabel referit, se utilizeaz urmtorul format general:


CREATE TABLE numet3
(numec1 tip1 [CONSTRAINT nn_c1 NOT NULL]
[CONSTRAINT pk_c1 ]PRIMARY KEY,
numec2 tip2 [CONSTRAINT nn_c2 NOT NULL]
[CONSTRAINT fk_nc2]
REFERENCES numet1(numec1), );
Pentru a crea o tabel referit este necesar crearea legturii cu tabela de
referin. Cnd se definete cmpul de legtur, acesta trebuie s fie de acelai
tip ca i cmpul corespunztor din tabela de referin, apoi se creeaz o
constrngere de tip FOREIGN KEY, iar dup cuvntul predefinit
REFERENCES se alege numele tabelei de referin i n parantez numele
cmpului de legtur din tabela de referin. Numele celor dou cmpuri nu
trebuie s fie identice.
Exemplu: S se creeze o tabel cu contractele ncheiate de ctre turitii ageniei
de turism. Se presupune c un turist ncheie mai multe contracte, cunoscndu-se
numrul contractului, data contractului, tipul serviciului, data plecrii, data
sosirii, ara i beneficiarii (numele celorlalte persoane din familie, dac este
cazul).
CREATE TABLE Contracte (nrc INTEGER
CONSTRAINT pk_nrc PRIMARY KEY,
datac DATE CONSTRAINT nn_datac NOT NULL,
tip_serv TEXT(30), data_plec DATE, data_sos DATE,
tara TEXT (20), benef TEXT (120), CNP_turist TEXT(13)
CONSTRAINT fk_CNP_turist REFERENCES Turisti (CNP_turist));

6.2.2 Comanda ALTER TABLE


Comanda ALTER TABLE modific structura tabelei, permind adugarea unui
nou cmp sau tergerea unui cmp, precum i modificarea proprietilor
acestora.

188

Dac se dorete adugarea unui nou cmp:


ALTER TABLE numet1
ADD COLUMN (numec1 tip1,
numec2 tip2, ...);
Exemplu: S se adauge n tabela Contracte cmpul suma_platita.
ALTER TABLE Contracte
ADD COLUMN (suma_platita NUMBER);
Dac se dorete tergerea unui cmp:
ALTER TABLE numet1
DROP COLUMN numec1;
Exemplu: S se tearg cmpul ara din tabela Contracte.
ALTER TABLE Contracte
DROP COLUMN tara;
Dac se dorete modificarea proprietilor unui cmp:
ALTER TABLE numet1
ALTER COLUMN numec1 tip_nou;
Exemplu: S se modifice dimensiunea cmpului benef din tabela Contracte.
ALTER TABLE Contracte
ALTER COLUMN benef TEXT(100);
Dac se dorete adugarea unei constrngeri:
ALTER TABLE numet1
ALTER COLUMN numec1 [CONSTRAINT numeconst]
{PRIMARY KEYUNIQUENOT NULL};
Exemplu: S se adauge o constrngere de tip NOT NULL pentru cmpul
data_plec din tabela Contracte.
ALTER TABLE Contracte
ALTER COLUMN data_plec CONSTRAINT nn_data_plec
NOT NULL;

189

Dac se dorete tergerea unei constrngeri:


ALTER TABLE numet1
DROP CONSTRAINT numeconst;
Exemplu: S se tearg constrngerea de tip NOT NULL impus pe cmpul
datac.
ALTER TABLE Contracte
DROP CONSTRAINT nn_datac;

6.2.3 Comanda DROP TABLE


Comenda DROP TABLE terge fizic tabela (nu doar datele din tabel ci i
structura acesteia).
DROP TABLE numet1;
Exemplu: S se tearg tabela Turisti.
DROP TABLE Contracte;
Dac o tabel este de referin, nu poate fi tears datorit relaiei pe care o are
cu tabela referit. Pentru a rezolva acest neajuns, se terge condiia de legtur
dintre tabele cu ajutorul comenzii ALTER TABLE, apoi se terge tabela.
Exemplu: S se tearg tabela Turisti.
ALTER TABLE contracte
DROP CONSTRAINT fk_CNP_turist;
DROP TABLE Turisti;

6.2.4 Comanda INSERT INTO


Comanda INSERT INTO insereaz o nregistrare ntr-un tabel. Formatul
general este:
INSERT INTO numet1
[(numec1, numec2, )]
VALUES
(valoare1, valoare2, ...);

190

Specificarea listei cmpurilor este opional. Dac lista cmpurilor este omis,
toate cmpurile din tabel vor fi completate, n ordinea n care ele au fost create,
cu valorile specificate n lista de valori.
Dac lista cmpurilor apare dar nu este complet, unele cmpuri lipsind, acele
cmpuri care nu apar n list vor fi completate cu valoarea NULL, sau cu
valoarea setat ca valoare implicit (DEFAULT). Din pcate, n standardul
minimal, setarea unei valori predefinite nu este permis.
Numrul cmpurilor din lista de cmpuri trebuie s fie identic cu numrul
valorilor din lista valorilor, iar valorile trebuie s corespund ca tip tipului de
date a cmpurilor din lista de cmpuri.
Exemplu: S se introduc o nregistrare n tabela Turiti i dou nregistrri n
tabela Contracte (presupunem c tabela are structura de la creare).
INSERT INTO Turisti VALUES (1711227136548, POP Ion,
TM569856, #27.12.1971#, 0730126589, 9856978);
INSERT INTO Contracte VALUES (1452, #04.11.2011#, Charter,
#30.12.2011#, #06.01.2012#, Cuba, POP Maria, POP Carla,
1711227136548);
INSERT INTO Contracte (nrc, datac, tip_serv, data_plec, data_sos, tara,
CNP_turist)
VALUES (1453, #25.11.2011#, Bilete avion, #08.04.2012#,
#18.04.2012#, Italia, 1711227136548);

6.2.5 Comanda DELETE


Comanda Delete terge nregistrrile care verific condiia specificat n clauza
Where dintr-o tabel. Dac clauza Where nu apare, sunt terse automat toate
nregistrrile. Tabela nu dispare fizic, sunt terse doar nregistrrile, structura
tabelei rmnnd neschimbat.
Formatul general:
DELETE FROM numet1
[WHERE conditie];
Exemplu: S se tearg din tabela Contracte contractul cu codul 1453.
DELETE FROM Contracte
WHERE nrc=1453;

191

6.2.6 Comanda SELECT


Comanda SELECT permite filtrarea datelor din una sau mai multe tabele pe
baza unor condiii. Formatul general al comenzii:
SELECT [DISTINCT] *lista_campuri
FROM lista_tabele
[WHERE conditie]
[GROUP BY crit_grupare]
[HAVING crit_dupa_grupare]
[ORDER BY el_ordonare [ASCDESC]];
unde:

comanda SELECT afieaz nregistrri din una sau mai multe tabele;
clauza From specific numele tabelei sau a tabelelor surs a interogrii.
Dac datele provin din mai multe tabele, este necesar adugarea unei
condiii de legtur n cadrul clauzei WHERE sau setarea unei jociuni
ntre tabele. Dac se dorete afiarea unui cmp care apare n dou
tabele, este necesar precizarea numelui tabelei din care acesta face
parte. Numele tabelei este separat de numele cmpului prin caracterul
punct (de exemplu: Produse.CodProdus);
nregistrrile pot fi distincte (dac clauza DISTINCT este selectat o
valoare va apare o singur dat) sau nu;
filtrarea nregistrrilor se face n funcie de evaluarea condiiei logice
din cadrul clauzei Where (dac aceasta este selectat);
dac se utilizez clauza Group By, aceasta va grupa nregistrrile n
funcie de criteriul de grupare. n acest caz pot fi adugate condiii
pentru grupurile astfel create utilizndu-se clauza Having;
poate fi impus o ordine de sortare dac se utilizeaz clauza Order by,
valoarea implicit fiind Ascending;
simbolul * semnific selecia tuturor cmpurilor din acea tabel. Dac
se dorete omiterea unor cmpuri, se va specifica lista cmpurilor fr a
specifica cmpurile respective. Ambele liste lista_campuri i
lista_tabele conin elemente desprite ntre ele prin virgul.

n scrierea interogrilor de selecie este posibil utilizarea funciilor


totalizatoare. Dintre acestea amintim:
COUNT returneaz numrul total de nregistrri;
SUM afieaz suma valorilor unui cmp (se poate folosi doar pentru
cmpuri numerice);

192

AVG calculeaz media aritmetic a valorilor unui cmp numeric;


MAX afieaz valoarea maxim din cadrul valorilor unui cmp, dar
nu poate fi folosit n cadrul clauzei WHERE;
MIN afieaz valoarea minim din cadrul valorilor unui cmp, dar nu
poate fi folosit n cadrul clauzei WHERE.

6.2.6.1 Comenzi SELECT simple


Comenzile SELECT simple au ca surs nregistrrile dintr-un singur tabel.
Considerm urmtorul tabel: Studeni cu structura CNP, nume_prenume, serie
_numrCI (seria i numrul crii de identitate), localitate, adresa, data_nasterii,
an_studiu i medie_an_anterior.
Exemplul 1: S se afieze toi studentii.
SELECT *
FROM studenti;
Exemplul 2: S se afieze CNP-ul i numele tuturor studenilor.
SELECT CNP, nume_prenume
FROM studenti;
Exemplul 3: S se afieze CNP-ul i numele tuturor studenilor din Timioara.
SELECT CNP, nume_prenume
FROM studenti
WHERE localitate=Timisoara;
Exemplul 4: S se afieze numrul studenilor din Timioara.
SELECT COUNT(*)
FROM studenti
WHERE localitate=Timisoara;
Exemplul 5: S se afieze numele i s se calculeze vrsta studenilor din anul 2
de studiu.
SELECT nume_prenume, YEAR(Date())-YEAR(data_nasterii)
FROM studenti
WHERE an_studiu=2;

193

Exemplul 6: S se afieze numele studenilor care ncep cu litera A i sunt


nscui n luna octombrie 1980.
SELECT nume_prenume
FROM studenti
WHERE nume_prenume LIKE A* AND
datan BETWEEN #01/10/1980# AND #31/10/1980#;

6.2.6.2 Comenzi SELECT complexe


Comenzile SELECT complexe au ca surs nregistrrile din mai multe tabele
conectate ntre ele pe baza unei relaii de legtur. Se pot distinge mai multe
tipuri de jonciuni:
jonciunea natural (echijonciunea, jonciunea echivalent), care
prespune folosirea clauzei Where urmat de o condiie de legtur de
egalitate ntre cmpurile corespondente (=). Aceast condiie vizeaz
egalitatea valorilor din cmpurile corespondente;
jonciuni ne-echivalente determinai de folosirea clauzei Where i a
unei condiii de legtur exprimat prin comparaii (<, >, <=, >=, <>,
BETWEEN, IN, LIKE);
cross (jonciunea ncruciat) mai puin utilizat, cu rol n analiza
multidimensional a datelor.
Se va prezenta n continuare jonciunea natural. Formatul general:
SELECT [domeniu_selectie] lista_campuri
FROM numet1, numet2, ...
WHERE conditie_jonctiune [AND criterii_de_selectie];
unde domeniul de selecie poate fi: ALL (vor fi returnate toate nregistrrile),
DISTINCT, DISTINCTROW (vor fi afiate doar nregistrrile distincte), TOP n
[PERCENT] (vor fi returnate doar primele n nregistrri sau un procent din
numrul total de nregistrri, nregistrrile fiind ordonate cu ajutorul clauzei
Order By).
n acest caz, nregistrrile unui tabel se combin rnd pe rnd cu toate
nregistrrile din cellalt table (se efectueaz produsul cartezian), relaia dintre
cele dou tabele fiind stabilit ulterior, prin condiia de jonciune specificat n
clauza Where.

194

n mod uzual, compunerile de tabele au la baz condiii de tipul cheie primarcheie strin.
Considernd tabela Studenti creat anterior, se consider tabela Centrepractic,
cu structura: IDcentru, Den_centru, Adresa, Localitate, NumeTutore. n tabela
studeni se va aduga cmpul IDcentru (unui centru de practic sunt arondai
mai muli studeni).

Exemplul 1: S se afieze numele tutorelui i a studenilor arondai acestuia.


SELECT NumeTurore, nume_prenume
FROM studenti, Centrepractica
WHERE studenti.IDcentru=Centrepractica.IDcentru;
Exemplul 2: S se afieze numrul i numele centrelor de practic din
Timioara i CNP-ul studenilor.
SELECT Centrepractica.IDcentru, Den_centru, CNP
FROM studenti, Centrepractica
WHERE studenti.IDcentru=Centrepractica.IDcentru AND
Centrepractica.localitate=Timisoara;
O alt abordare a jociunilor mparte compunerile tabelelor n:
interne (INNER JOIN) liniile celor dou tabele se combin pe baza
valorilor identice ale cmpurilor corespondente;
externe (OUTER JOIN) destul de rar utilizate, sunt de dou tipuri: de
stnga LEFT [OUTER] JOIN i de dreapta RIGHT [OUTER] JOIN.
Acestea produc linii n setul de rezultate chiar dac condiia de legtur
nu este verificat. Setul de nregistrri rezultat conine liniile celor dou
tabele, combinate pe baza valorilor identice ale cmpurilor de legtur,
la care se adaug nregistrrile fr corespondent n tabelul care
constituie fie membrulstng al compunerii, fie membrul drept.
Specificatorul Outer este opional. n cazul compunerilor externe este
important poziia tabelelor37.

37

Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p.93

195

Formatul general al interogrilor ce include compuneri de tabele:


SELECT [domeniu_selectie] lista_campuri
FROM numet1
{INNERLEFT[OUTER]RIGHT[OUTER]} JOIN numet2
ON conditie_jonctiune
[WHERE criterii_de_selectie];
Se vor considera n continuare tabelele Studenti i CentrePractica.
Exemplul 1: S se afieze numele tutorelui i a studenilor arondai acestuia.
SELECT NumeTurore, nume_prenume
FROM studenti INNER JOIN Centrepractica
ON studenti.IDcentru=Centrepractica.IDcentru;
Exemplul 2: S se afieze numrul i numele centrelor de practic din
Timioara i CNP-ul studenilor.
SELECT Centrepractica.IDcentru, Den_centru, CNP
FROM studenti INNER JOIN Centrepractica
ON studenti.IDcentru=Centrepractica.IDcentru
WHERE Centrepractica.localitate=Timisoara;

6.2.6.3 Agregri de date


Funciile de grup permit constuirea unor interogri de sintetizare a datelor
(Totals). Utilizatorul poate efectua calcule pentru grupuri de nregistrri care au
cmpuri cu aceeai valoare (de exemplu calcularea mediei studenilor pe fiecare
grup n parte).
Formatul general al instruciunii38:
SELECT [domeniu_selectie] [functie_agregata (numec1) AS alias1]
[,lista_selectie]
FROM numet1, numet2, ...
GROUP BY camp_de_grupare
[HAVING criteriu_de_grupare]
[WHERE criterii_de_selectie];

38

Nstase P., Coscescu L., Covrig L., et al Tehnologia bazelor de date Access 2000, Editura
Economic, Bucureti, 2000, p. 197

196

unde:

funciile agregate sunt cele amintite n cadrul instruciunilor SELECT


simple: COUNT, SUM, MIN, MAX, AVG, etc.
lista_selectie seminific una sau mai multe funcii agregate care au ca
argumente cmpuri ale bazei de date;
AS alias asociaz un pseudonim rezultatului utilizrii funciei agregat;
GROUP BY precizeaz cmpul sau cmpurile care vor fi criterii de
grupare (echivalentul liniei Total din cadrul unei interogri de
sintetizare a datelor);
HAVING criteriu care va fi aplicat cmpului definit ca argument al
funciei agregat. Spre deosebire de clauza Where, criteriul va aciona
naintea gruprii nregistrrilor.

Se vor considera n continuare tabelele Studenti i CentrePractica.


Exemplul 1: S se afieze numele tutorelui i numrul studenilor arondai
acestuia.
SELECT Den_centru, NumeTutore, COUNT(CNP) AS Nrstud
FROM studenti, Centrepractica
GROUP BY Den_centru, NumeTutore
WHERE studenti.IDcentru=Centrepractica.IDcentru
ORDER BY NumeTutore;
Exemplul 2: S se afieze denumirea centrelor de practic din Timioara, Arad
i Deva care au mai mult de 5 studeni i numrul studenilor arondai.
SELECT Den_centru, COUNT(CNP) As NrStud
FROM studenti INNER JOIN Centrepractica
ON studenti.IDcentru=Centrepractica.IDcentru
GROUP BY Den_centru
HAVING COUNT(CNP)>5
WHERE Centrepractica.localitate IN (Timisoara,Arad,Deva);

197

6.2.6.4 Subinterogri
O subinterogare este format dintr-o interogare n care este plasat (imbricat) o
alt interogare.
Formatul general39:
SELECT [domeniu_selectie] lista_selectie
FROM numet1, numet2, ...
WHERE {numec1 expresie} operator_comparatie
(SELECT {campexpresie}
FROM numet1, numet2, ...
[WHERE criterii_selectie_subinterogare]);
unde operator_comparatie poate fi =, <, <=, >, >=, <>, IN, LIKE, Between.
Observaii:
subinterogrile trebuie incluse ntre paranteze rotunde;
subinterogrile trebuie plasate n partea dreapt a operatorului de
comparare;
nu se va aduga o clauz ORDER BY ntr-o subinterogare;
att n interogare ct i n subinterogare, sursa datelor poate fi simpl
(un singur tabel) sau compus (mai multe tabele), putnd fi chiar
identic, necesitnd crearea legturilor dintre tabele;
clauzele Group By, Having i Order pot s apar n ambele interogri;
dac se utilizeaz operatorul IN, rezultatul subinterogrii va fi o coloan
cu mai multe valori;
domeniul rezultatelor unei subinterogri poate fi influenat prin
recurgerea la urmtoarele cuvinte cheie: ALL, ANY i EXISTS. n
cazul n care se dorete negarea condiiei, se plaseaz operatorul NOT
n faa specificatorului:
- ANY/SOME comparaia este adevrat dac se gsete cel puin
o valoare n valorile din coloana returnat de subinterogare. n
cazul utilizrii acestui specificator, ;
- ALL comparaia este adevrat dac este verificat de toate
valorile din coloana returnat de subinterogare. n mod uzual,
comparaia const ntr-o inegalitate: <, <=, >, >=, <>. De
regul, rezultatul comparaiei este False;
39

Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p.101

198

- EXISTS comparaia este adevrat dac subinterogarea


returneaz cel puin o valoare din coloana sau coloanele
returnate de subinterogare.
Tipuri de subinterogri
- subinterogri care au ca rezultat o singur linie (single-row subquery);
- subinterogri care au ca rezultat mai multe linii (multiple-row
subquery);
- subinterogri care au ca rezultat mai multe coloane (multiple-column
subquery).
Se vor considera n continuare tabelele Studenti i CentrePractica.
Exemplul 1: S se afieze numele studenilor care sunt n acelai an cu
studentul cu CNP-ul 1711227658965 (s-a considerat cmpul CNP ca fiind de tip
Text).
SELECT nume_prenume
FROM studenti
WHERE an=(SELECT an
FROM Studenti
WHERE CNP=1711227658965);
Exemplul 2: S se afieze numele i media studenilor cu media anului anterior
mai mic dect media tuturor studenilor.
SELECT nume_prenume, medie_an_anterior
FROM studenti
WHERE medie_an_anterior <=
(SELECT AVG(medie_an_anterior)
FROM Studenti);
Exemplul 3: S se afieze toate informaiile despre studenii care au media mai
mare dect toi studenii timioreni.
SELECT *
FROM studenti
WHERE medie_an_anterior >
ALL (SELECT medie_an_anterior
FROM studenti
WHERE localitate=Timioara);

199

6.2.7 Comanda UPDATE


Comanda Update permite modificarea valorilor unuia sau mai multor cmpuri.
Formatul general este:
UPDATE numet1
SET numec1={expresie1(SELECT ...)}
numec2={expresie2(SELECT ...)}
[WHERE conditie];
Dac clauza WHERE nu apare, vor fi modificate toate valorile cmpului
respectiv. n partea din dreapta egalitii se poate folosi o expresie de calcul (o
formul) care s aib ca rezultat valoarea care va fi depozitat n cmpul
respectiv, sau valoarea poate fi obinut ca rezultat al unei interogri (comanda
SELECT).
Exemplul 1: S se modifice valoarea cmpului ara din tabela Contracte n
Spania, pentru contractul cu numrul 1453.
UPDATE Contracte
SET tara=Spania
WHERE nrc=1453;
Exemplul 2: Presupunnd c n tabela Contracte s-a adugat cmpul
suma_platita, s se micoreze valoarea sumei cu 2% pentru contractul cu
numrul 1453 (clientului i se acord o reducere de 2%).
UPDATE Contracte
SET suma_platita=suma_platita-(2/100*suma_platita)
WHERE nrc=1453;

200

6.3 Concluzii
SQL este unul dintre cele mai puternice i larg rspndite limbaje folosite
pentru definirea i accesarea bazelor de date relaionale. El permite consultarea
bazei de date sau efectuarea anumitor aciuni prin simpla specificare a
comenzilor, fr a fi necesar specificarea unor modaliti concrete sau a
algoritmilor de obinere a rezultatului. SQL este suportat de diferite sisteme de
gestiune a bazelor de date cum ar fi: MS Access, MS SQL Server, DB2,
Informix (IBM), Oracle, MySql, etc, diferenele dintre dialecte fiind minore40.

6.4 Rezumatul capitolului


SQL nu se ncadreaz n categoria limbajelor de programare, fiind un limbaj de
aplicaii, destinat bazelor de date relaionale. Pronunat sequel, a devenit un
standard pentru o gam larg de sisteme de gestiune a bazelor de date. SQL este
un limbaj declarativ, utilizatorul descriind doar informaiile pe care dorete s le
obin n urma interogrii, fr a fi nevoie s stabileasc modalitile de a
ajunge la rezultatele dorite. Pe lng manipulearea i regsirea datelor, se
efectueaz operaii complexe privind actualizarea i administrarea bazei de date.
Sistemul de gestiune a bazelor de date Access 2007 accept utilizarea limbajului
de interogarea SQL. Dialectul Access conine unele particulariti n raport cu
standardul ANSI SQL, fiind conceput n special pentru crearea interogrilor de
selecie. Existena interfeei grafice QBE permite proiectarea facil a unei
interogri complexe, informaia astfel definit fiind transformat ntr-o
instruciune SQL41.

40

Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p.66
41
Nstase P., Coscescu L., Covrig L., et al Tehnologia bazelor de date Access 2000, Editura
Economic, Bucureti, 2000, p. 189

201

6.5 ntrebri de autoevaluare din partea teoretic


1. S se specifice avantajele utilizrii instruciunilor SQL.
2. S se descrie cele trei componente SQL.
3. S se creeze urmtoarele tabele, precum i relaia dintre acestea:
discipline (codd, dend, an_studiu, sem, obs);note (nrmatr, codd, nota,
dataex).
4. Sa se insereze disciplina: codd = 2; dend = baze de date, precum si
notele a 2 studeni la aceasta disciplin.
5. S se tearg una dintre notele nregistrate (se va terge nregistrarea
corespunztoare).
6. S se elimine cmpul obs din structura tabelei discipline.
7. S se afieze disciplinele care se predau n anul 2, sem = 2.
8. S se afiseze notele obinute de ctre studentul cu nrmatr = 1001 la
disciplinele din anul 1. Se va afia i denumirea disciplinelor.
9. S se afieze mediile studenilor luai n eviden.

202

6.6 Exemple
6.6.1. Problem rezolvat Produse
S se creeze urmtoarea form de meniu.

Fig. 2 formularul Meniu

Rezolvare:
Se creaz o nou baz de date cu numele Produse. Se creaz tabela Produse cu
urmtoarea structur: cod_p, den_p, um_p, stoc_p, pret_p, cod_magazin. Se vor
introduce 3 nregistrri n tabel.
Se creaz un nou formular folosind de pe bara de meniuri opiunea Create,
butonul Form Design.
De pe panglic se verific dac butonul Use Control Wizards
este selectat.
Acesta trebuie s fie deselectat pentru a permite crearea manual a controalelor,
fr ajutorul asistentului. n continuare se alege butonul Button, executndu-se
un clic pe form. Apelnd meniul contextual asociat butonului de comand de
pe form, se selecteaz opiunea Properties i se modific proprietile Name i
Caption pentru fiecare buton n parte. n total sunt 8 butoane de comand,
fiecare avnd un alt Name i Caption. Proprietatea Name va fi completat
ntotdeauna cu prefixul cmd urmat de un cuvnt sau alturare de cuvinte
semnificativ pentru aciunea executat de buton, fr caracterul spaiu ntre ele.
Numele butoanelor vor fi n ordine: cmdDesPr, cmdDesPr1, cmdInsPr,
cmdModDen, cmdCrTNou, cmdViz, cmdValoare, cmdIesire. Proprietatea
Caption va fi completat cu textul care apare pe butonul corespunztor din
figura 1 i admite orice fel de caractere, inclusiv caracterul spaiu. Se selecteaz
butonul dorit, iar n fereastra Property Sheet se modific cele dou proprieti
aflate pe pagina All. Dac fereastra Property Sheet nu apare, ea poate fi

203

activat folosind butonul Property Sheet de pe panglic, atunci cnd este


selectat opiunea de meniu Design.
Se salveaz forma cu numele Meniu (butonul Save din dreapta butonului
Office).
Pentru a introduce instruciuni ataate butoanelor trebuie apelat editorul Visual
Basic. Pentru aceasta, se apeleaz meniul contextual al fiecrui buton n parte
(clic cu butonul din dreapta al mouse-ului), se alege Build Event, Code
builder, OK.
Mediul de programare Visual Basic Application arat ca n figura urmtoare:

Fig. 3 Mediul de lucru Visual Basic

Deasupra procedurii se tasteaz:


DIM v_cod as Integer, v_den as String, v_um as String
i se apas tasta Enter.
Pentru fiecare buton n parte se scrie codul corespunztor. Tot ce este scris dup
caracterul apostrof semnific un comentariu, este un mesaj pentru programator,
o explicaie. Dac acesta apare, nu influeneaz cu nimic execuia programului,
dar poate fi ignorat dac se consider oportun.
Private Sub cmdDesPr_Click()
' se deschide tabela Produse pt. vizualizare in Design
DoCmd.OpenTable "Produse", acViewDesign
End Sub

204

DoCmd este o comand Visual Basic care permite execuia unei comenzi (Do
Command). Open Table este comanda care permite deschiderea unei tabele.
Numele tabelei este scris ntre ghilimele, iar parametrul acViewDesign
specific deschiderea tabelei n modul Design, nu n Datasheet View.
Private Sub cmdDesPr1_Click()
' se deschide tabela Produse pt. vizualizare in Datasheet View
DoCmd.OpenTable "Produse"
End Sub
Private Sub cmdInsPr_Click()
'adaugarea unei noi inregistrari
DoCmd.RunSQL "insert into produse values (cod_produs, den_produs,
um_produs, stoc_produs, pret_produs, cod_mag)"
End Sub
Comanda RunSQL este comanda care permite execuia unei instruciuni SQL
(Structured Query Language). Dintre cel mai des utilizate instruciuni SQL
amintim: SELECT, INSERT INTO, UPDATE, ALTER TABLE, DELETE
TABLE. Toate instruciunile SQL se scriu ntre ghilimele, simbolul ; de la
sfritul comenzilor SQL fiind ignorat.
n acest caz s-a folosit instruciunea INSERT INTO, care permite introducerea
unei singure nregistrri n tabela Produse. Pentru fiecare din parametrii din
parantez, acetia fiind considerai nite variabile, este creat automat un
InputBox (o caset de introducere a valorilor de la tastatur) care permite
citirea lor de la tastatur. Comanda Insert Into conine cuvntul Values, iar
numrul parametrilor din parantez (care ca nume sunt diferite de numele
cmpurilor din tabela Produse) trebuie s fie acelai cu numrul cmpurilor din
tabel i s corespund ca tip de valori i semnificaie. De exemplu, dac n
tabela Produse avem 5 cmpuri, n parantez, dup cuvntul Value, trebuie s
avem 5 parametrii, n aceeai ordine.
Private Sub cmdModDen_Click()
'modificarea denumirii unui produs la care este cunoscut codul
v_cod = InputBox("Introduceti codul produsului la care doriti sa ii modificati
denumirea:")
DoCmd.RunSQL "update produse set den_p=denumire where cod_p=" &
v_cod
End Sub

205

Pentru a modifica denumirea unui produs pentru care se cunoate codul, se


utilizeaz o variabil pentru a citi de la tastatur codul respectiv. Variabila
v_cod este definit la nceputul aplicaiei, n seciunea DIM (de dimensionare a
variabilelor). Cu ajutorul unei casete de introducere a datelor (Inputbox),
valoarea variabilei cod produs este reinut n variabila v_cod. Pentru a
modifica valoarea denumirii produsului, se utilizeaz instruciunea Update.
Dup cuvntul predefinit SET avem o atribuire. Membrul din stnga este
numele cmpului den_p din tabela Produse, iar n partea din dreapta avem un
parametru. Pentru parametru, Access construiete automat o caset de
introducere a datelor, permind citirea acestuia de la tastatur. Valoarea citit
va nlocui valoarea veche a denumirii. Dac nu este adugat condiia Where,
toate denumirile produselor vor fi modificate. Pentru a modifica doar un anumit
cmp, n cadrul condiiei Where este specificat o condiie logic. Cod_p este
cmpul cod produs din tabela Produse. Pentru a se utiliza valoarea reinut n
variabila v_cod, acesta va fi scris n afara ghilimelelor. Simbolul & este
simbolul care semnific concatenarea mai multor valori de tip ir de caractere.
Private Sub cmdCrTNou_Click()
'selectarea produselor cu stoc 0 si crearea unei tabele cu aceste produse
DoCmd.RunSQL "Select cod_p, den_p, um_p, stoc_p, pret_p, cod_m into
StocNul from produse where stoc_p=0"
DoCmd.OpenTable "StocNul"
End Sub
n cazul instruciunii SQL SELECT, este necesar introducerea clauzei INTO
(care creaz automat o nou tabel ca rezultat al interogrii). Noua tabel creat
se numete StocNul. Condiia de filtrare este ca stocul produsului s fie zero.
Dac n tabela Produse nu exist nici o nregistrare n care stocul produsului s
fie zero, noua tabel va fi creat dar nu conine nici o nregistrare. Noua tabel
creat va fi deschis pentru a fi vizualizat.
Private Sub cmdViz_Click()
'vizualizarea produselor cu codul >= o valoare introdusa de la tastatura
v_cod = InputBox("Introduceti un cod pentru a fi afisate produsele cu codul
mai mare decat aceasta valoare")
DoCmd.RunSQL "Select cod_p,den_p,um_p,stoc_p, pret_p, cod_m into
Temp1 from produse where cod_p>=" & v_cod
DoCmd.OpenTable "Temp1"
End Sub

206

Pentru a citi o valoare de la tastatur este necesar declararea unei variabile n


care valoarea s fie stocat. Variabila poart numele v_cod. Valoarea este citit
de la tastatur prin intermediul comenzii InputBox (crearea unei casete de
introducere a textului). Comanda Select creaz o nou tabel numit Temp1,
fiind selectate doar cmpurile definite n lista cmpurilor (cod_p, den_p, um,
stoc, pret_u, cod_m) i acele nregistrri care verific condiia Where (codul
produsului s fie mai mare dect valoarea care a fost introdus n variabila
v_cod). Tabela Temp1 va fi apoi deschis pentru a vizualiza rezultatul
interogrii.
Private Sub cmdValoare_Click()
DoCmd.RunSQL "select cod_p, den_p, um_p, pret_p, stoc_p, pret_p*stoc_p
as valoare into Valoare from produse"
DoCmd.OpenTable "Valoare"
End Sub
Acest buton permite calcularea unui cmp n cadrul unei interogri. Acesta se
scrie n lista de cmpuri, ncepnd cu formula de calcul, urmat de cuvntul
predefinit AS i numele care se dorete s apar n capul de tabel ca nume de
cmp: valoare. Rezultatul interogrii este un nou tabel cu numele Valoare.
Pentru a vedea rezultatul interogrii se deschide tabelul Valoare.
Private Sub cmdIesire_Click()
DoCmd.Quit
End Sub
Comanda Quit permite nchiderea aplicaiei.
Pentru a putea utiliza butoanele trebuie setat nivelul de securitate astfel nct s
permit utilizarea codurilor Visual Basic Application. Pentru aceasta, de pe
bara Security Warning se selecteaz butonul Options..., selectnd opiunea
Enable this content.

207

Fig. 4 Setarea nivelului minimal de securitate

6.6.2 Problem rezolvat Aprovizionare


S se creeze o baz de date cu numele Aprovizionare. S se creeze o form de
meniu cu butoane de comand figura 1 care s permit urmtoarele operaii:
1. Crearea tabelelor necesare gestionrii procesului de recepie a
materialelor. Toate materialele achiziionate de firm sunt cuprinse ntrun nomenclator de materiale n care sunt specificate: codul materialului,
denumire material, unitate de msur i clasa de calitate. n momentul
realizrii unei aprovizionri se ntocmete o not de recepie pe care
sunt consemnate: numrul recepiei, data recepiei, denumirile
materialului, cantitile i preurile aferente fiecrui material;
2. Inserarea nregistrrilor n tabele (3 nregistrri n tabelele de referin,
mai multe nregistrri n tabela referit).
3. S se modifice structura tabelei receptiemateriale adugndu-se un
cmp denumit cotaTVA. S se tearg cmpul clasa din tabela
Materiale.
4. S se modifice toate valorile cmpului cotaTVA cu valoarea 0,24. S se
modifice data pentru numrul de receptie 245369 n 23.11.2011.
5. S se afieze toate produsele cu unitatea de msur buci. S se afieze
toate notele de recepie din data de 25.11.2011, inclusiv denumirea
produselor, cantitatea i preul, calculndu-se valoarea. S se afieze
pentru fiecare numr de recepie valoarea total (suma valorilor).

208

6. S se tearg toate notele de recepie corespunztoare codului material


111 din tabela receptiemateriale. S se tearg toate nregistrrile din
tabela receptiemateriale.
7. S se tearg toate tabele din baza de date (inclusiv cele create n cadrul
interogrilor).

Fig. 5 formularul Meniu

Rezolvare:
Se va crea o nou baz de date cu numele Aprovizionare. Table 1 se nchide,
fr a fi salvat. Tabelele nu vor fi create cu ajutorul instrumentelor vizuale, ci
tot cu ajutorul comenzilor SQL.
Construind matricea dependenelor funcionale se ajunge la urmtoarea
structur a bazei de date figura 6.

Fig. 6 Fereastra Relationship Baza de date Aprovizionare

Pentru a crea un formular nou, se selecteaz opiunea de meniu Create, apoi


butonul Form Design. Se salveaz formularul cu numele Meniu.
1. Pentru a aduga primul buton de comand pe form se deselecteaz
butonul

de pe panglic, se alege butonul

209

se execut clic pe formular. Se apeleaz meniul contextual asociat


butonului i se alege opiunea Properties. n fereastra Property Sheet
se modific proprietile Name: cmdCreare i Caption: Crearea
tabelelor figura 7.

Fig. 7 Butonul cmdCreare

Pentru a asocia cod butonului, se apeleaz meniul contextual al butonului i se


alege opiunea Build Event/Code builder.
Codul asociat butonului de Creare este detaliat n continuare:
Private Sub cmdCreare_Click()
DoCmd.RunSQL "CREATE TABLE materiale (codm integer
CONSTRAINT pk_codm PRIMARY KEY CONSTRAINT nn_codm NOT
NULL, denm TEXT(15), um TEXT(10), clasa TEXT(10))"
MSG = MsgBox("Tabela materiale a fost creata!", vbOKOnly)
DoCmd.RunSQL "CREATE TABLE receptii (nrrec INTEGER
CONSTRAINT pk_nrrec PRIMARY KEY CONSTRAINT nn_nrrec NOT
NULL, datarec DATE)"
MSG = MsgBox("Tabela receptii a fost creata!", vbOKOnly)
DoCmd.RunSQL "CREATE TABLE receptiemateriale (nrrec
INTEGER CONSTRAINT fk_nrrec REFERENCES receptii(nrrec), codm
INTEGER CONSTRAINT fk_codm REFERENCES materiale(codm), cantitate
INTEGER, pret_unitar NUMBER, CONSTRAINT pk_recmat PRIMARY
KEY(nrrec,codm))"
MSG = MsgBox("Tabela receptiemateriale a fost creata!", vbOKOnly)
End Sub

210

Observaii:
Fiecare constrngere (PRIMARY KEY, NOT NULL, FOREIGN KEY)
a fost denumit cu un nume format din prefixul pk pentru Primary Key,
nn pentru Not Null sau fk pentru Foreign Key. nainte de a specifica
constrngerea se adaug cuvntul predefinit CONSTRAINT apoi
numele constrngerii. n cazul unei chei primare compuse,
constrngerea este lsat la urm, dup ultimul cmp i definit ca fiind
combinaia dintre nrrec i codm.
Relaia dintre tabele este creat de la tabela referit (copil) la tabela de
referin (printe), setndu-se o constrngere de tip FOREIGN KEY pe
cmpul comun, utilizndu-se cuvntul predefinit REFERENCES, urmat
de numele tabelei de referin (printe) i cmpul de legtur din acea
tabel. Ambele cmpuri trebuie s fie definite ca fiind de acelai tip.
MSG este un nume de variabil, care va lua valoarea apsrii butonului
OK specificat n partea dreapt a egalitii. n partea din dreapta se
utilizez o comanda care afieaz pe ecran mesajul scris ntre ghilimele
i afieaz doar butonul OK.
2. Pentru a insera nregistrri n tabele se adaug un nou buton pe form
(se selecteaz butonul Button, apoi se execut clic pe formular). Se
modific proprietile butonului: Name: cmdInserare i Caption:
Inserare nregistrri. Pentru a asocia cod butonului, se apeleaz
meniul contextual al acestuia, se alege opiunea Build Event/Code
Builder.
Codul asociat butonului cmdInserare este prezentat n continuare:
Private Sub cmdInserare_Click()
DoCmd.RunSQL "INSERT INTO materiale VALUES (111,
'imprimanta','buc','cal.I')"
DoCmd.RunSQL "INSERT INTO materiale VALUES (112,
'mouse','buc','cal.I')"
DoCmd.RunSQL "INSERT INTO materiale VALUES (113,
'hartie','buc','cal.I')"
MSG = MsgBox("S-au introdus inregistrari in tabela materiale!",
vbOKOnly)
DoCmd.OpenTable "materiale"
DoCmd.RunSQL
"INSERT
(245369,#19/11/2011#)"

INTO

receptii

VALUES

211

DoCmd.RunSQL
"INSERT
INTO
receptii
VALUES
(245370,#25/11/2011#)"
DoCmd.RunSQL
"INSERT
INTO
receptii
VALUES
(245371,#25/11/2011#)"
MSG = MsgBox("S-au introdus inregistrari in tabela receptii!",
vbOKOnly)
DoCmd.OpenTable "receptii"
DoCmd.RunSQL "INSERT INTO receptiemateriale VALUES
(245369,111, 200, 500)"
DoCmd.RunSQL "INSERT INTO receptiemateriale VALUES
(245369,112, 25, 50)"
DoCmd.RunSQL "INSERT INTO receptiemateriale VALUES
(245369,113, 1000, 7)"
DoCmd.RunSQL "INSERT INTO receptiemateriale VALUES
(245370,111, 10, 560)"
DoCmd.RunSQL "INSERT INTO receptiemateriale VALUES
(245370,112, 15, 55)"
DoCmd.RunSQL "INSERT INTO receptiemateriale VALUES
(245371,111, 1, 600)"
DoCmd.RunSQL "INSERT INTO receptiemateriale VALUES
(245371,112, 10, 60)"
DoCmd.RunSQL "INSERT INTO receptiemateriale VALUES
(245371,113, 1, 100)"
MSG
=
MsgBox("S-au
introdus
inregistrari
in
tabela
receptiemateriale!", vbOKOnly)
DoCmd.OpenTable "receptiemateriale"
End Sub
3. Pentru a modifica structura tabelelor adaug un nou buton pe form (se
selecteaz butonul Button, apoi se execut clic pe formular). Se
modific proprietile butonului: Name: cmdModStruct i Caption:
Modificarea structuriilor tabelelor. Pentru a asocia cod butonului, se
apeleaz meniul contextual al acestuia, se alege opiunea Build
Event/Code Builder.

212

Codul asociat butonului cmdModStruct este prezentat n continuare:


Private Sub cmdModStruct_Click()
DoCmd.RunSQL "ALTER TABLE receptiemateriale ADD COLUMN
cotatva number"
DoCmd.OpenTable "receptiemateriale", acViewDesign
MSG = MsgBox("S-a adaugat campul cotatva!", vbOKOnly)
DoCmd.RunSQL "ALTER TABLE materiale DROP COLUMN clasa"
DoCmd.OpenTable "materiale", acViewDesign
MSG = MsgBox("S-au sters campul clasa!", vbOKOnly)
End Sub
4. Pentru a modifica valorile din tabele se adaug un nou buton pe form
(se selecteaz butonul Button, apoi se execut clic pe formular). Se
modific proprietile butonului: Name: cmdModifValori i Caption:
Modificarea valorilor din tabele. Pentru a asocia cod butonului, se
apeleaz meniul contextual al acestuia, se alege opiunea Build
Event/Code Builder.
Codul asociat butonului cmdModifValori este prezentat n continuare:
Private Sub cmdModifValori_Click()
DoCmd.RunSQL "UPDATE receptiemateriale SET cotaTVA=0.24"
DoCmd.OpenTable "receptiemateriale"
MSG = MsgBox("S-a modificat valoarea campului cotaTVA!",
vbOKOnly)
DoCmd.RunSQL "UPDATE receptii SET datarec=#23/11/2011#
WHERE nrrec=245369"
DoCmd.OpenTable "receptii"
MSG = MsgBox("S-a modificat valoarea campului datarec=23.11.2011
pt nrrec=245369!", vbOKOnly)
End Sub
5. Pentru a vizualiza interogrile se adaug un nou buton pe form (se
selecteaz butonul Button, apoi se execut clic pe formular). Se
modific proprietile butonului: Name: cmdInterogari i Caption:
Interogari. Pentru a asocia cod butonului, se apeleaz meniul
contextual al acestuia, se alege opiunea Build Event/Code Builder.

213

Codul asociat butonului cmdInterogari este prezentat n continuare:


Private Sub cmdInterogari_Click()
DoCmd.RunSQL "SELECT * INTO T1 FROM materiale WHERE
um='buc'"
DoCmd.OpenTable "T1"
MSG = MsgBox("Produsele cu UM=buc", vbOKOnly)
DoCmd.RunSQL "SELECT receptii.nrrec, datarec, denm, cantitate,
pret_unitar, cantitate*pret_unitar*cotaTVA as valoare INTO T2 FROM
materiale,
receptiemateriale,
receptii
WHERE
receptii.nrrec=receptiemateriale.nrrec
AND
materiale.codm=receptiemateriale.codm AND datarec=#25/11/2011#"
DoCmd.OpenTable "T2"
MSG = MsgBox("Calcularea valorii", vbOKOnly)
DoCmd.RunSQL
"SELECT
receptii.nrrec,
SUM(cantitate*pret_unitar*cotaTVA) as valoare_nota_receptie INTO
T3
FROM
receptiemateriale,
receptii
WHERE
receptii.nrrec=receptiemateriale.nrrec GROUP BY receptii.nrrec"
DoCmd.OpenTable "T3"
MSG = MsgBox("valoare pe fiecare nota de receptie in parte",
vbOKOnly)
End Sub
Observaii:
Specificatorul * semnific afiarea tuturor cmpurilor din tabela
respectiv.
Clauza INTO creeaz o nou tabel n care rezultatul interogrii va fi
depus. Dac se dorete vizualizarea acestuia, tabelul trebuie deschis.
Dac datele sunt extrase din mai multe tabele, n cazul n care este
specificat un cmp care apare n ambele tabele, este necesar
specificarea aparteneei lui (de exemplu receptii.nrc).
Dac se dorete afiarea datelor din mai multe tabele, este necesar
specificarea condiiei de legtur dintre tabele. n acest caz s-a ales
jonciunea natural. Condiia de legtur apare n cadrul clauzei
WHERE, operatorul dintre condiii fiind AND.
Dac se dorete afiarea unor totaluri pe grupe de nregistrri, se
utilizeaz clauza Group By. Aceasta este specificat dup clauza
Where. Cmpul specificat ca i criteriu de grupare va apare ca primul
cmp selectat n lista cmpurilor.

214

6. Pentru a terge nregistrri din tabele se adaug un nou buton pe form


(se selecteaz butonul Button, apoi se execut clic pe formular). Se
modific proprietile butonului: Name: cmdStergereValori i
Caption: Stergere valori. Pentru a asocia cod butonului, se apeleaz
meniul contextual al acestuia, se alege opiunea Build Event/Code
Builder.
Codul asociat butonului cmdInterogari este prezentat n continuare:
Private Sub cmdStergereValori_Click()
DoCmd.RunSQL "DELETE FROM receptiemateriale WHERE
codm=111"
DoCmd.OpenTable "receptiemateriale"
MSG = MsgBox("S-au sters notele de receptie cu codm=111!",
vbOKOnly)
DoCmd.RunSQL "DELETE FROM receptiemateriale"
DoCmd.OpenTable "receptiemateriale"
MSG = MsgBox("S-au sters toate produsele de pe notele de receptie",
vbOKOnly)
End Sub
7. Pentru a terge tabelele se adaug un nou buton pe form (se selecteaz
butonul Button, apoi se execut clic pe formular). Se modific
proprietile butonului: Name: cmdStergereTabele i Caption:
Stergere tabele. Pentru a asocia cod butonului, se apeleaz meniul
contextual al acestuia, se alege opiunea Build Event/Code Builder.
Codul asociat butonului cmdInterogari este prezentat n continuare:
Private Sub cmdStergereTabele_Click()
DoCmd.RunSQL "DROP TABLE T1"
DoCmd.RunSQL "DROP TABLE T2"
DoCmd.RunSQL "DROP TABLE T3"
DoCmd.RunSQL "DROP TABLE receptiemateriale"
DoCmd.RunSQL "DROP TABLE materiale"
DoCmd.RunSQL "DROP TABLE receptii"
MSG = MsgBox("S-au sters toate tabelele!", vbOKOnly)
End Sub

215

6.6.3 Problem propus Bibliotec


O bibliotec dorete s-i informatizeze activitatea de mprumut a crilor.
Pentru fiecare carte se cunosc titlul crii, autorii, editura, anul publicrii i
numrul de exemplare. Pentru fiecare abonat se cunoate CNP-ul, numele, data
naterii, adresa, telefonul i oraul. Pentru fiecare mprumut se completeaz o
cerere de mprumut. Pe aceast cerere apar data mprumutului, cartea
mprumutat, abonatul (cititorul), i data de returnare a crii. Pe o cerere de
mprumut apare o singur carte.
S se creeze o form de meniu cu butoane care s permit:
1. crearea tabelelor;
2. inserarea datelor n tabele;
3. vizualizarea informaiilor din tabele;
4. adugarea unui cmp cu numele gen n tabela Cri;
5. completarea cmpului gen cu valoarea Beletristic pentru cartea cu
titlul La Medeleni;
6. vizualizarea titlurilor crilor mprumutate astzi;
7. vizualizarea numelui abonailor i numrul crilor editate anul acesta
care au fost mprumutate de acetia;
8. vizualizarea autorilor crilor mprumutate n sptmna n curs;
9. tergerea cererii de mprumut cu numrul 123;
10. tergerea tuturor tabelelor;
11. nchiderea formei.

6.6.4 Problem propus Amenajri interioare


O firm de construcii i amenajri interioare solicit informatizarea activitilor
de contractare a lucrrilor. Firma i prezint oferta sub forma unei liste de
lucrri pe care este n msur s le efectueze pentru clienii si. Pentru fiecare
lucrare se cunoate codul lucrrii, denumirea lucrrii i costul acesteia. ntre
firm i beneficiari se ncheie contracte. Pentru fiecare contract sunt cunoscute
numrul contractului, codul beneficiarului, codul lucrrii, data, data nceperii
execuiei, termen execuie. Un beneficiar poate comanda mai multe lucrri
diferite, deci poate ncheia cu firma mai multe contracte. Pentru beneficiar se
cunosc cmpurile cod beneficiar, denumire beneficiar, adres, telefon, cod
curent banc. S se creeze un formular cu butoane de comand care s permit:
1. crearea tabelelor;
2. inserarea datelor n tabele;
3. vizualizarea informaiilor din tabele;

216

4. adugarea unui cmp cu numele alte clauze n tabela Contracte;


5. completarea cmpului observaii cu valoarea pltit integral pentru
comanda cu codul 1234;
6. vizualizarea comenzilor care expir luna aceasta;
7. vizualizarea numelui beneficiarilor i suma total pltit de acetia;
8. vizualizarea numrului beneficiarilor care au ncheiat contracte care
expir anul acesta;
9. tergerea comenzii cu numrul 1234;
10. tergerea tuturor tabelelor;
11. nchiderea formei.

217

218

BIBLIOGRAFIE
1.
2.
3.
4.
5.

6.

Adamski J., Finnegan K. (2006) New Perspectives on Microsoft Office


Access 2003, Second Edition, Thomson Course Technology, Boston
Bandu I. (2009) Baze de date Access 2007, Editura Mirton, Timioara
Biriescu S. (2010) Baze de date n mediul economic: studii de caz, Editura
Mirton, Timioara
Boldea M., Boldea C.M. (2010) Access 2007, Editura Mirton, Timioara

Coronel, C., Morris, St., Rob, P. (2009). Database Systems: design,


implementation, and management, Ninth Edition. Publisher Course
Technologies
Delobel, C., Adiba, M., (1982) Bases de donnees at systemes
relationnels, Dunod Informatique, Paris

Hurbean L., Dnia D., Negovan A.-M. (2008) Baze de date: de la teorie
la practic utiliznd Access 2007, Editura Mirton, Timioara
8. Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al (2009) Baze de
date, Editura Infomega, Bucureti
9. Fotache M. (1997) Baze de date relaionale, Editura Junimea, Iai
10. Giulvezan C., Mircea G., Trnveanu D., Margea C. (2009) Baze de date,
Editura Universitii de Vest, Timioara
11. Fleming, Candace, von Halle, Barbara (1989) Handbook of
7.

Relational Database Design, Addison-Wesley


12. Ionescu F. (2004) Baze de date relaionale i aplicaii, Editura Tehnic,
Bucureti
13. Johnson S., trad. Mnstireanu M. (2008) Microsoft Office Access 2007,
Editura Niculescu, Bucureti
14. Johnson S., trad. Biri R. (2008) Microsoft Office Access 2007, Editura
Teora, Bucureti
15. Lungu, I., Bodea, Constana, Bdescu, Georgeta, Ioni, Cristina

(1995) Baze de date. Organizare, proiectare i implementare, Editura


All Educaional
16. Nstase P., Coscescu L., Covrig L., et al (2000) Tehnologia bazelor de date
Access 2000, Editura Economic, Bucureti
17. Pescaru, V., Catona, I., Du, D., Popescu, C., Satran, I., (1976)

Fiiere, baze i bnci de date, Editura Tehnic, Bucureti


18. Roman S. (2002) Access Database Design & Programming, 3rd Edition,
OReilley
19. Stanciu A. (coord.), Mihai F, Mangiuc D, et al (2009) Baze de date Access
2007: studii de caz, Editura Infomega Bucureti

219

20. Tama I. (coord.), Stanciu V., Gheorghe M. (2010) Access 2007 Proiectare
i realizare pas cu pas, Editura Infomega, Bucureti
21. Whitehorne M., Marklyn B. (2007) Inside Relational Databases with
Examples in Access, Springer

220

GLOSAR DE TERMENI
Colecie
de date aflate n interdependen,
mpreun cu descrierea datelor i a relaiilor dintre
ele.
SGBD
Pachet software de nivel nalt, care permite
proiectarea, construirea i administrarea bazelor de
date dedicate rezolvrii problemelor din cele mai
variate domenii ale vieii reale
SGBDR
Este o un sistem de gestiune a bazelor de date care
folosete modelul relaional.
Nivelul intern al bazei de Este o colecie de fiiere coninnd datele fizice la
date
care se adaug diverse structuri auxiliare menite s
asigure accesul operativ la date.
Nivelul conceptual
Conine structura logic a bazei de date, aa cum
este ea vzut de administratorul bazei de date.
Nivelul extern
Este ceea ce vede acesta din baza de date, sau modul
cum vede acesta baza de date.
Proiectarea unei baze de Procesul de creare a unui proiect pentru baza de date
date
care s asigure desfurarea corect a activitilor i
rezolvarea cerinelor utilizatorilor.
Entitate
Mulimea tuturor elementelor de un anumit tip (care
prezint aceleai caracteristici).
Instan a unei entiti
nelegem un singur element, bine individualizat,
unic, din mulimea elementelor care formeaz
entitatea respectiv.
Atribut
O caracteristic a unei entiti.
Cheia primar
Un atribut sau cea mai mic mulime de atribute ale
unei entiti care iau, fiecare instan a entitii
respective, o valoare i numai una,
Relaie ntr-o baz de O legtur logic ntre dou sau mai multe entiti.
date
Normalizare
tehnic pentru proiectarea bazelor de date
relaionale
Redundan
o proprietate a unei colecii de date care se refer la
faptul c unele componente sunt memorate de mai
multe ori pe suportul de memorare
Baza de date

221

Forma normal 1 (FN1)

O relaie se afl n FN1 dac toate atributele sale


sunt atomice (nu se mai pot descompune) i
nerepetitive
Forma normal 2 (FN2)
O relaie se afl n FN2 dac respect FN1 i orice
atribut non-cheie este complet dependent de cheia
primar a relaiei (interzice dependene funcionale
pariale)
Forma normal 3 (FN3)
O relaie se afl n FN3 dac respect FN2 i toate
atributele non-cheie sunt dependente direct de cheia
primar (interzice dependenele funcionale
tranzitive)
Cmp
o unitate elementar sau o categorie cum ar fi
titlurile crilor sau numerele de telefon
nregistrare
un set complet de date (cmpuri) care se refer la o
persoan, loc, eveniment, idee
Tabel
structur elementare n care sunt stocate datele n
cadrul unei baze de date
Interogare
structur care permite efectuarea unei aciuni rapide
(obinerea unor informaii sau efectuarea unor
modificri) asupra unei tabele sau mai multor tabele
Formular
fereastr atractiv folosit pentru a consulta sau
actualiza datele dintr-un tabel sau o structur de
interogare
Raport
structur care permite tiprirea informaiilor din
tabele sau interogri
Macrocomand
mini-programe care automatizeaz sarcinile curente
(formate dintr-o suit de aciuni)
Modul
fiier care conine cod Visual Basic Application
SQL (Structured Query este un limbaj de interogri i gestionare a bazelor
Language)
de date relaionale
CREATE TABLE
permite crearea unei tabele
ALTER TABLE
permite modificarea structurii unei tabele
adugarea, tergerea unor cmpuri sau modificarea
proprietilor acestora
DROP TABLE
permite tergerea fizic a nregistrrilor
INSERT INTO
permite inserarea unei nregistri ntr-o tabel
DELETE
Permite tergerea nregistrrilor dintr-o tabel,
structura tabelei rmnnd neschimbat

222

SELECT

UPDATE

permite selectarea nregistrrilor din una sau mai


multe tabele, n funcie de anumite criterii,
permind
agregarea
datelor
i
crearea
subinterogrilor
permite modificarea valorilor unui cmp dintr-o
tabel

223