Sunteți pe pagina 1din 130

UNIVERSITATEA DIN BACAU

FACULTATEA DE TIINE

BAZE DE DATE
Conf. univ.dr. ELENA NECHITA

2010

Prezentarea cursului
Informaiile din lumea ce ne nconjoar sunt structurate n diverse moduri.
Adesea structura o impunem sau o chiar inventm noi n procesul de memorare, n
ncercarea de a transforma informaiile cu care suntem bombardai n cunotine.
Sistemul de structurare a datelor care intervine cel mai frecvent este tabelul, iar n
cazul volumelor mari vorbim despre baze de date.
Procesul de instruire n societatea noastr tot mai informatizat, n aa numita
Societate Informaional, impune tot mai mult structurarea cunotinelor acumulate,
capacitatea de a le organiza, clasifica, regsi i mai ales completa. Vorbim despre
managementul cunotinelor, un capitol important att al ontologiei, ct i al
informaticii. Putem spune c disciplina "Baze de Date" se ocup cu cteva din
mecanismele de gestiune a informaiilor i a cunotinelor.
Cutrile pe World Wide Web, modul n care apelm la motoarele de cutare
i modul n care acestea lucreaz i au fost concepute, toate au de a face cu
conceptele i procedeele de lucru cu Baze de Date. Motoarele de cutare sunt, n
fond, nite instrumente de cutare a informaiilor ntr-o imens baz de date, care
este actualizat continuu, pe msur ce apar noi pagini Web. Marile motoare de
cutare, Google sau Yahoo, folosesc adevrate "ferme" de servere pe care menin
aceste imense baze de date, astfel nct noi s obinem rspunsul n cteva clipe.
Acest curs are drept scop prezentarea elementelor fundamentale despre
baze de date, a conceptelor cu care se lucreaz n acest domeniu i a modalitilor
de prelucrare a datelor organizate n baze de date.

Obiectivele cursului

Principalele obiective ale cursului sunt:


1.

nsuirea cunotinelor de baz referitoare la modul de proiectare i de


programare a bazelor de date.

2.

Familiarizarea cu modelul Entitate/Asociere i cu modelul relaional.

3.

Studiul algebrei relaionale, ca suport pentru prelucrile realizate n baze de date


relaionale.

4.

Studiul dependenelor funcionale i al formelor normale, n scopul optimizrii


stocrii datelor n bazele de date.

5.

Prezentarea unor noiuni referitoare la limbajele utilizate n domeniul bazelor de


date.
Sunt

necesare

cunotine

anterioare

de

matematic,

programarea

calculatoarelor, structuri de date i algoritmi, limbaje de programare (C, C++).

Cerine de examinare
Pentru evaluare se vor realiza urmtoarele activiti:
1.

nsuirea cunotinelor teoretice din suportul de curs.

2.

Participarea la orele de laborator. Se vor da dou teste, n sptmnile a 7-a i


a 13-a. Este necesar ca la fiecare s se obin cel puin nota 5.

3.

Se va realiza un proiect, individual sau n echip.

4.

Examenul va consta ntr-un test de verificare a cunotinelor teoretice.

5.

Nota acordat va fi media notelor obinute la teste, la proiect i la test.

CUPRINS
Prezentarea cursului
Obiectivele cursului. Cerine de examinare

3
4

1. Introducere n domeniul bazelor de date


1.1 Informaii. Date. Colecii de date
1.2 Organizri ale datelor
1.2.1 Organizarea datelor n fiiere
1.2.2 Organizarea datelor n baze de date
1.3 Conceptul de baz de date
1.4 Sisteme de gestiune a bazelor de date

7
7
9
9
11
11
12

2. Niveluri de reprezentare a unei baze de date


2.1 Modelarea conceptual
2.1.1 Modelul Entitate - Asociere
2.1.2 Diagrama Entitate - Asociere
2.2. Modele de date
2.2.1 Modelul ierarhic
2.2.2 Modelul reea

14
14
14
16
16
16
17

3. Modelul relaional
3.1 Conceptele modelului relaional
3.2 Sisteme de gestiune a bazelor de date relaionale

19
20
21

4. Noi funcionaliti ale bazelor de date


4.1 Partajarea bazelor de date
4.2 Baze de date distribuite
4.3 Baze de date deductive
4.4 Baze de date multidimensionale
4.5 Baze de date orientate obiecte
4.6 Alte tipuri de baze de date
4.7 Sisteme Client / Server
4.8 Bazele de date i sistemele informaionale din organizaii

22
22
22
24
24
24
26
26
27

5. Forme normale. Normalizare


5.1 Dependene funcionale
5.1.1 Descompunerea
5.1.2 Asocierile i proiectarea schemelor
5.2 Dependene multivaloare
5.3 Forme normale ale bazelor de date
5.3.1. Date ne-normalizate
5.3.2 Prima form normal (FN1)
5.3.3 A doua form normal (FN2)
5.3.4 A treia form normal (FN3)
5.3.5 Forma normal Boyce-Codd (FNBC)
5.3.6 A patra form normal (FN4)

29
29
29
30
30
31
31
32
32
33
34
34

5.3.7 A cincea form normal (FN5)


5.3.8. Procesul normalizrii relaiilor
6. Limbaje utilizate n lucrul cu baze de date
6.1 Limbajul de definire a datelor pentru modelul relaional
6.2 Limbajul de manipulare a datelor pentru modelul relaional
6.2.1 Algebra Relaional
6.2.2 SQL
6.2.3 Calculul Relaional orientat pe tupluri
6.2.4 Calculul Relaional orientat pe domenii

35
36
37
37
38
38
42
42
43

7. Restriciile de integritate ale modelului relaional


7.1 Restricii de integritate minimale
7.2 Alte restricii de integritate
7.3 Aspecte privind integritatea

44
44
45
46

8. Depozite de date (Data warehouse)


8.1. Concepte de baz n data warehouse
8.2. Diferene nte bazele de date i depozitele de date
8.3. Arhitectura depozitelor de date

47
47
48
49

9. Baze de cunotine

54

10. Aplicaii Access


10.1. Baz de date pentru activiti colare
10.2. Baz de date pentru o activitate comercial
10.3. Baz de date pentru gestiunea unui parc auto
10.4. Baz de date pentru contabilitatea TVA

56
56
74
85
99

11. Teste
11.1 Testul 1
11.2 Testul 2
11.3 Testul 3
11.4 Testul 4
11.5 Testul 5
11.6 Testul 6
11.7 Testul 7

111
111
113
115
117
120
122
124

Bibliografie

125

Order is not sufficient.


What is required, is something
much more complex.
It is order entering upon novelty;
so that the massiveness of order
does not degenerate into mere repetition;
and so that the novelty
is always reflected
upon a background of system.''
(Alfred North Whitehead)

1. Introducere n domeniul bazelor de date


1.1 Informaii. Date. Colecii de date
Informaiile i cunotinele au o mare importan, att pentru dezvoltarea
personalitii umane, ct i pentru evoluia vieii i societii. Nici societatea i nici indivizii ei
nu pot progresa satisfctor n lips de informaii. Prin intermediul informaiilor se asigur
transferul cunotinelor de la o generaie la alta, se asigur accesul la cele mai avansate
realizri ale omenirii.
Conceptul de informaie reprezint o noiune de maxim generalitate care semnific
o comunicare, o veste, o tire, un mesaj, un semnal etc. despre evenimente, fapte, stri,
obiecte, despre forme de manifestare a realitii care ne inconjoar. Informaia reprezint
cantitatea de noutate adus de un mesaj din lumea real.
Informaia, energia i materia sunt cei mai importani factori ai economiei moderne pe
lng pmnt, capital i fora de munc. Fa de materie, informaia prezint caracteristici
distincte:
Se poate combina aproape nelimitat.
Este puternic condensabil.
Se percepe ca o anumit msur a ordinii, ntruct ea anihileaz incertitudinea i
nedeterminarea. O msur a ordonrii este entropia negativ, tremen care a luat
natere prin analogie cu entropia, care este, n termodinamic, o msur (exprimabil
matematic) a neordonrii.
Calitatea unei informaii const n gradul de probabilitate cu care creeaz utilizatorului
certitudinea unei afirmaii.
Oamenii ajung la informaii direct, prin intermediul altor oameni sau prin purttori de
informaie, precum ziare, cri, imagini, videocasete, CD-uri, discuri sau echipamente de
comunicaie (radio, televizor, fax, telefon sau calculator).
Deci informaia reprezint o component esenial a lumii reale, ce face posibil
caracterizarea diferitelor elemente ale naturii (fiine, obiecte, stri, fenomene) i permite
comunicarea.
Din punct de vedere conceptual, informaia reprezint o reflectare n planul gndirii
umane a legturilor de cauzalitate, privind aspecte din realitatea ce ne nconjoar. Informaia
are deci sens de noutate pentru cel cruia i se adreseaz, indiferent de forma pe care o ia
(tire, semnal, comunicare). Putem spune deci c informaia este un mesaj, dar cu precizarea
c nu orice mesaj este o informaie. Dac mesajul nu transmite o noutate i nu are suport
real, atunci nu prezint interes pentru receptor i deci nu are caracter de informaie.
Informaia primete totdeauna atributul domeniului pe care l reprezint. De exemplu,
realitile din domeniul economic se reflect n informaii economice.
Procesul de sesizare, nelegere i nsuire a informaiilor dintr-un anumit domeniu
reprezint un proces de informare. Informaiile dobndite n urma unui proces de informare
ntr-un anumit domeniu formeaz cunotinele despre acel domeniu, iar mulimea acestora
reprezint baza de cunotine.
Cunotinele reprezint deci o nsumare a tuturor informaiilor dobndite ntr-un
anumit domeniu, sau care se refer la un anumit obiect. n sintez, putem aprecia
8

cunotinele c sunt elemente abstracte i individuale despre obiectele i domeniile lumii


reale, nsuite i/sau dobndite.
Aproape orice activitate are i o latur informaional. De exemplu, n paralel cu
procesul de producere de bunuri i servicii se desfoar i un proces informaional,
constnd din fluxuri de documente prin care se ine evidena activitii desfurate.
Atunci cnd informaia este gestionat cu ajutorul tehnicii de calcul, ea devine dat.
Data este forma de reprezentare accesibil a informaiei prelucrate. Ea reprezint
suportul formal al informaiei, care se concretizeaz n: cifre, litere, simboluri, coduri i alte
nsemne. Exist o coresponden determinat ntre informaie, simbol i dat astfel c, foarte
adesea, n practic, termenul de informaie este utilizat pentru a desemna date, iar expresia
prelucrarea informaiilor nlocuiete expresia prelucrarea datelor. Putem considera c
datele prelucrate, n msura n care afecteaz n sens pozitiv comportamentul receptorilor
(oameni sau maini), au calitatea de informaii.
n procesul prelucrrii i utilizrii informaiilor, acestea sunt privite din patru puncte de
vedere:
Din punct de vedere sintactic, atunci cnd se urmrete aspectul admisibil al
acestora, n sensul c informaiile trebuie s capete anumite forme de reprezentare, ce
respect riguros anumite reguli.
Din punct de vedere semantic, urmrindu-se semnificaia, nelesul informaiei
(coninutul real al informaiei) ce deriv din datele prelucrate.
Din punct de vedere pragmatic, urmrindu-se utilitatea pentru receptori, efectul
asupra acestora (msura n care acestea satisfac cerinele utilizatorului).
Din punct de vedere sigmatic, se trateaz raportul dintre semne i obiecte, caz
n care se poate vorbi despre cunotine obiective. n locuri publice, semnalizarea i
direcionarea cu ajutorul indicatoarelor trebuie s fie att sugestiv, compact, ct i
independent de limb sau cultur. Pictogramele pentru indicarea cabinelor telefonice,
zonelor de fumtori, ghieelor de informaii sau punctelor medicale reprezint cunotine
obiective.
Datele reprezint aadar informaii care fac obiectul prelucrrii pe sistemele de calcul
i pot fi:
Elementare (numite i simple sau scalare) atunci cnd sunt indivizibile n
raport cu prelucrrile la care pot fi supuse.
Compuse (numite i complexe) atunci cnd sunt alctuite din mai multe
date elementare, deci sunt la rndul lor divizibile n date mai simple.
Exemplu. n cazul unei persoane: vrsta, nlimea, greutatea, codul numeric personal sunt
date elementare. Domiciliul (format din ora, strad, numr) este o dat compus.
Observaie. O dat poate fi considerat elementar dintr-un punct de vedere i compus din
altul, aceasta n funcie de prelucrrile necesare.
Unei date i se atribuie un nume identificatorul su, prin intermediul creia ea se
distinge de celelalte i prin care poate fi adresat. O caracteristic de baz a unei date este
tipul su. Acesta determin modul n care data respectiv va fi memorat pe suporturi de
memorare i modul n care ea va fi prelucrat (adic operatorii i funciile ce i se pot aplica).
n cadrul unui limbaj de programare, de exemplu, exist o serie de tipuri de date de baz
(elementare), prestabilite de ctre proiectanii limbajului i, de cele mai multe ori, exist
posibilitatea definirii de noi tipuri, prin combinarea celor elementare. Marea majoritate a
limbajelor permit manipularea datelor numerice (ntregi i reale), a caracterelor i irurilor de
caractere, a tablourilor uni- i multi-dimensionale.
O colecie de date reunete date despre o anume clas de obiecte (reale sau
conceptuale).
Exemplu. Colecia de date prezentat mai jos reunete date cu privire la clasa de obiecte
denumit CONTURI:
Cod_cont
101
104
105
106

933

Denumire_cont
Capital social
Prime legate de capital
Diferene din reevaluare
Rezerve
Costul produciei n curs de execuie

Fiecare obiect de acest tip are o existena proprie i este bine definit de aceleai
caracteristici, respectiv codul contului i denumirea contului. Contul cu codul 101 i
denumirea Capital social constituie o realizare sau o instan a obiectului tip CONTURI,
pentru care caracteristicile Cod_cont, Denumire_cont iau valorile 101 i respectiv Capital
social.
Alte exemple.
Datele referitoare la materialele dintr-un depozit.
Datele referitoare la crile dintr-o bibliotec.
Datele referitoare la pacienii unui spital.
Datele ce descriu situaia contabil a unei firme.
Omogenitatea datelor dintr-o colecie de date trebuie neleas n sens larg, sub
forma unei proprieti comune sau a unui obiectiv urmrit.
Noiunile de informaie i dat sunt, prin urmare, diferite. Informaiile sunt nelese
de o persoan, n timp ce datele sunt modele stocate pe un mediu pasiv, ca de exemplu
discul hard al unui calculator. Scopul unui sistem care gestioneaz o colecie de date este s
reduc distana ntre informaii i date astfel, datele stocate n memoria sau pe discurile
unui calculator s fie convertite n informaii utilizabile la momentul dorit.

1.2 Organizri ale datelor


Organizarea datelor n vederea prelucrrii lor cu calculatorul este o activitate tot att
de important ca i cea de realizare a programelor. Datele i programele se gsesc ntr-o
strns corelaie. Un program, orict de complex ar fi, nu va furniza rezultate satisfctoare
dac structura datelor cu care lucreaz nu este bine gndit. Invers, o structur de date bine
pus la punct nu va fi suficient, dac programul care o prelucreaz nu este corect conceput
i realizat.
Din punct de vedere informatic ne putem referi la dou tipuri de organizare a datelor:
Organizarea in memoria intern a calculatorului i
Organizarea n memoria extern.
Organizarea n memoria extern a cunoscut, de-a lungul timpului, mai multe stadii:
Fiiere i
Baze de date.
1.2.1 Organizarea datelor n fiiere
Un fiier este un ansamblu de nregistrri fizice, omogene din punct de vedere al
coninutului i al prelucrrii. O nregistrare fizic este format din una sau mai multe
nregistrri logice, o nregistrare logic fiind un ansamblu de cmpuri care conin date
referitoare la un obiect, proces sau fenomen din lumea real.
Exemplu. Fiierul de date STOCURI conine date privind stocurile de produse. Pentru fiecare
produs se memoreaz: codul, denumirea, unitatea de msur, preul de referin i cantitatea
aflat n stoc. Iat (schematic reprezentat) o nregistrare logic pentru un produs aflat n
stoc:
401

TV PANASONIC

BUC

1000

20

nregistrrile privind produsele aflate n stoc sunt memorate pe suporturi tehnice i


formeaz, mpreun, fiierul STOCURI_PRODUSE.
Exist dou metode de organizare a datelor n fiiere:
Organizare secvenial nregistrrile sunt memorate pe suport tehnic n
ordinea introducerii datelor i sunt accesate n ordinea n care ele sunt
memorate.

10

Organizarea indexat la memorarea nregistrrilor pe suport tehnic,


Sistemul de Gestiune a Fiierelor creeaz, separat, un tabel n care, pentru
fiecare nregistrare de date, sunt memorate dou elemente: cheia de
identificare a nregistrarii i adresa la care nregistrarea este memorat pe
suport tehnic.

Exemplu.
Tabel cu
indeci

350
401
420

A1
A2
A3

nregistrri de date

A2
A1
A3

401
350
420

TV PANASONIC
RADIO SAMSUNG
VIDEO SAMSUNG

BUC
BUC
BUC

1000
100
900

20
30
10

A1 reprezint adresa (care face referire, n cazul HD, la cilindru, pist i sector) la care este
memorat nregistrarea cu valoarea din cmpul de indexare (aici codul produsului) cu
valoarea 350, .a.m.d.
Tabelul cu indeci permite astfel localizarea rapid a nregistrrilor pe suportul tehnic.
Aceast metod presupune existena unui atribut ale crui valori s permit identificarea
nregistrrilor. Acest atribut are rolul de cheie de identificare (indexare).
Deci, un fiier de date este bine definit cnd se precizeaz identificatorul de fiier,
structura nregistrrii i modul de organizare.
Exemplu.
Fiierul: STOCURI
Structura nregistrrii:
CodMat, numeric
DenMat, Text
UM, Text
PretRef, Numeric
CantStoc, Numeric
Organizare: indexat
Cheie identificare: CodMat
Limite ale organizrii datelor n fiiere
Descrierea datelor se afce n fiecare program n care ele sunt utilizate; spunem c
datele sunt dependente de programe.
Lipsa unui formalism riguros de definire i validare a datelor.
Performane sczute pentru procesarea datelor, ndeosebi cnd este necesar s se
fac asocieri ntre date memorate n fiiere distincte.
Meninerea unei redundane ridicate n cadrul coleciilor de date memorate pe
suporturi tehnice.
Deci abordarea tradiional asocia fiecrei aplicaii informatice propriile fiiere. n mod
evident, anumite date se regseau n fiierele asociate mai multor aplicaii. Schematic,
aceast metod poate fi reprezentat astfel:

P1

P2

Pn

Aceast abordare ducea la memorarea repetat a unor date i implicit la un volum


mare de memorie extern ocupat.

11

De exemplu, dac ntr-o fabric se folosesc materiale pentru realizarea unor produse,
atunci datele necesar a fi memorate pentru fiecare material sunt (cel puin) cele meninate n
cazul fiierului STOCURI:

Cod un cod asociat fiecrui material, necesar identificrii acestuia i altfel dect prin
nume (de exemplu: 5289);

Denumire denumirea materialului (de exemplu: lemn de brad);

Um unitatea de msur (de exemplu: mc, aici, metru cub);

Pre este vorba de preul unitar (preul pentru un metru cub de lemn de brad);

Cantitate cantitatea existent la un moment dat n fabric.


Aceste date i altele, specifice, vor fi prelucrate pentru diferite compartimente: aprovizionare
(pentru recepia materialului), gestiune (pstrarea ntr-o magazie), producie (consumul
materialului respectiv n procesul de producie), contabilitate (pentru calculaia costului
produselor finite). Deci cel puin patru programe ar utiliza aceste date i ar fi prin urmare
dezavantajoas memorarea lor pe un suport fizic (n diferite fiiere) de tot attea ori.
Cu toate aceste limite, organizarea datelor n fiiere mai este utilizat i astzi,
ndeosebi pentru aplicaii dezvoltate folosind limbajele clasice de programare.
Progresele n domeniul tehnologiilor informaionale au marcat o cretere
considerabil a capacitii de memorare a suporturilor tehnice de date i a vitezei de
procesare a datelor. La acestea se adaug i posibilitatea stocrii i procesrii datelor
netradiionale cum ar fi, de exemplu, imaginea i sunetul (a se vedea [Tod04]).
1.2.2 Organizarea datelor n baze de date
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. Ideea
a fost de a colecta toate datele, a le organiza ntr-un mod convenabil (specific realitii pe
care acele date le modeleaz) i a proiecta programe care s consulte i s actualizeze
aceast colecie de date. Schematic, aceast abordare se poate reprezenta astfel:
P2

Baz de date

P1

Pn

Prin urmare, o baz de date se definete ca fiind un ansamblu de date elementare


sau structurate, accesibile unei comuniti de utilizatori. O definiie mai apropiat de
reprezentarea fizic ar fi cea conform creia o baz de date este un ansamblu de fiiere
intercorelate, care conin nucleul de date necesare unei aplicaii informatice complexe.
Astfel, n figura precedent, legturile desenate ntre fiiere reprezint aceste
intercorelri (adic, fiierele corelate modeleaz o legtur logic ntre datele pe care le
conin) iar aplicaiile ce acceseaz datele pot fi privite ca aparinnd la diferii utilizatori sau
grupuri de utilizatori, care vd baza de date ntr-un mod propriu (cu alte cuvinte, acceseaz
din toat colecia de date ceea ce le este necesar).

1.3 Conceptul de baz de date


n lucrarea Bases de donnes et systmes relationnels, Dunod Informatique, Paris,
1982, C. Delobel i M. Adiba definesc baza de date astfel:

12

Baza de date este un ansamblu structurat de date nregistrate pe


suporturi accesibile de ctre calculator pentru a satisface, chiar
simultan, mai muli utilizatori, de o manier selectiv i n timp oportun.
ntr-o baz de date sunt nregistrate date despre obiecte reale sau abstracte, dar i
asocierile (relaiile) care se pot stabili ntre acestea. Spunem c ntre datele unei baze de
date exist o interdependen logic. Considerarea interdependenelor ce se pot stabili ntre
coleciile de date memorate ntr-o baz de date contribuie la asigurarea integritii funcionale
a bazei de date.
O baz de date este un model al unui sistem real. Coninutul unei baze de date
(numit uneori i extensie) reprezint, la un moment dat, o stare a sistemului care se
modeleaz. Schimbrile n baza de date reprezint evenimente care au loc n mediu i care
schimb starea sistemului modelat. Este evident c este de dorit s structurm o baz de
date astfel nct aceasta s oglindeasc sistemul care se dorete modelat.
Obiective fundamentale ale unei baze de date

Centralizarea datelor. Permite controlul centralizat al datelor i eliminarea repetrilor


(numite redundane). O eliminare total a redundanelor nu este posibil, dar controlul
asupra lor duce la o utilizare eficient a spaiului de memorie extern.

Independena ntre date i prelucrri. Baza de date, fiind un model al unei realiti,
se schimb mereu (de exemplu, ntr-o banc au loc: numeroase tranzacii financiare,
schimbri de personal, schimbri de parteneri de afaceri etc.). Acest lucru nu trebuie
s afecteze programele de prelucrare a datelor i invers, dac este necesar operarea
de schimbri n anumite programe, datele nu trebuie s fie afectate.

Realizarea de legturi ntre date. Datele ce reprezint modelul unui sistem nu sunt
disparate, ntre ele exist legturi logice. Aceste legturi vor fi surprinse n baza de
date.

Integritatea datelor. Asigur fiabilitatea i coerena bazei de date.

Securitatea datelor. Baza de date trebuie s fie protejat mpotriva distrugerilor


logice (greeli la actualizare) i/sau fizice (deteriorri ale suporilor fizici, pierderi de
date datorate unor accidente naturale (calamiti, incendii etc.).

Confidenialitatea datelor. Se refer la caracterul secret al datelor, ce pot fi


accesate doar de ctre cei autorizai.

Partajarea datelor. Permite deservirea utilizatorilor care acceseaz simultan aceleai


date din baz.

1.4 Sisteme de gestiune a bazelor de date


Sistemul de programe care permite construirea unei baze de date, introducerea
informaiilor n baza de date i dezvoltarea de aplicaii se numete sistem de gestiune a
bazei de date (pe scurt, SGBD). Un SGBD d utilizatorului posibilitatea s aib acces la date
folosind un limbaj de nivel nalt, adic apropiat de modul obinuit de exprimare, pentru a
obine informaii. Nu este necesar ca utilizatorul s cunoasc modul n care sunt selectate
datele pe care le dorete, ori modul de memorare al lor. Spunem de aceea c SGBD-ul este o
interfa ntre utilizatori i baza de date, un instrument de asamblare, codificare, aranjare,
protecie i regsire a datelor n baza de date.
Principalele funcii ale unui SGBD
Memorarea datelor pe suportul extern (prin intermediul sistemului de gestiune a
fiierelor);
Gestiunea datelor i a legturilor dintre acestea, n vederea unei regsiri rapide
prin intermediul sistemului de acces;
Introducerea i extragerea datelor din/spre exterior, n forma cerut de utilizator.
SGBD-ul poate prelucra mai multe cereri, provenind de la mai multe programe de aplicaii.
Totodat, majoritatea SGBD-urilor asigur i controlul transmisiei datelor la i de la terminale.
SGBD-ul pune la dispoziia utilizatorilor limbaje distincte pentru:

13

Descrierea bazei de date: Limbajul de Descriere a Datelor (LDD).


Utilizarea (manipularea) bazei de date: Limbajul 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.
Procedurale care oblig utilizatorul s descrie CUM obine informaiile.
Realizarea pe plan mondial a unor reele de calculatoare care permit conectarea mai
multor baze de date a condus la apariia bazelor de date distribuite i, implicit, la apariia
SGBD pentru astfel de baze. Bazele de date distribuite reprezint un salt calitativ superior n
acest domeniu, oferind noi perspective pentru realizarea sistemelor informatice. Un sistem de
baze de date distribuite este o colecie de baze de date locale, amplasate geografic n puncte
diferite i legate logic prin relaii funcionale, astfel nct apar, la nivel global, ca o singur
baz de date.
n funcie de modul n care exploateaz baza de date, utilizatorii pot fi mprii n
urmtoarele clase:
Utilizatorii obinuii, care pot s obin informaiile dorite fr s aib cunotine de
programare, prin comenzi cunoscute i eventual rspunznd la diferitele opiuni pe
care le indic sistemul la un moment dat.
Programatorii de aplicaii, care realizeaz programele ce vor fi memorate i ulterior
lansate n execuie de utilizatori prin invocarea numelui asociat lor.
Administratorul bazei de date, care stabilete structura iniial a bazei de date i
modul de memorare a datelor la nivel fizic, acord utilizatorilor drepturi de acces la
baz sau la pri ale ei, stabilete condiiile pentru asigurarea securitii i integritii
datelor, modific structura bazei atunci cnd este nevoie, asigur ntreinerea bazei
fcnd periodic copii i reconstruind baza de date n cazul n care au aprut erori
datorate componentelor soft, hard sau utilizrii i rspunde, n general, de modul de
utilizare al bazei de date.
Cele mai multe SGBD-uri conin i o colecie de utilitare folosite n diferite aplicaii:
procesoare pentru limbaje de cereri, editoare de rapoarte, sisteme de reprezentri grafice,
posibiliti de lucru cu tabele, programe statistice, de copiere, generatoare de aplicaii i alte
posibiliti de dezvoltare a unor aplicaii de tip CASE (computer-aided software engineering).
Pentru a facilita munca administratorului de sistem, un SGBD conine o serie de
componente care permit: crearea unei versiuni iniiale a bazei, salvarea i rencrcarea
(efectuarea de copii periodice i posibilitatea refacerii bazei plecnd de la aceste copii),
reorganizarea (rearanjarea datelor n scopul mbuntirii unor performane), statistici i
analize asupra exploatrii bazei de date.
Evoluia tehnologiilor informaionale face ca n prezent majoritatea SGBD-urilor:
S gestioneze date tradiionale, dar i date netradiionale (video, foto, sunet
etc.).
S permit lucrul n reea de calculatoare.
Sa pun la dispoziia utilizatorului att limbaje declarative, ct i limbaje
procedurale.

Materiale introductive privind domeniul bazelor de date:


Cursuri generale de baze de date:
1.
2.
3.
4.
5.
6.

www.cs.washington.edu/education/courses/444/98wi
www.albany.edu/acc/courses/acc682.fall98/
www.cs.umbc.edu/461/461.shtml
www-db.stanford/edu/~ulmann/fcdb.html
www.developer.com/db/article.php/719041
www.servicearchitecture.com/database/articles

7.

webmonkey.wired.com/webmonkey/backend/databases/tutorial/tutorial1.html
Despre alegerea sistemului potrivit de baze de date

14

8. [Bas97]
Tipuri de organizare a fiierelor i metode de cutare n fiiere
Descrierea unor SGBD-uri de tipuri diferite

2. Niveluri de reprezentare a unei baze de date

Bazele de date pot fi analizate pe diferite nivele:


Nivelul conceptual ce corespunde modelelor semantice de date este un model de
nivel nalt, specific omului i nu sistemelor de calcul.
Nivelul aplicaie ce poate fi privit, la rndul su, din dou puncte de vedere:

Logic referitor la organizarea datelor, organizare prin care se implementeaz o


anumit cantitate de informaie i

Fizic referitor la stocarea efectiv a informaiei (grupare, partiionare, indexare,


etc.)

2.1 Modelarea conceptual


Nivelul conceptual ne permite s modelm aplicaiile n termeni independeni de
orice model de date particular. Este un instrument convenabil care ne permite s structurm o
baz de date astfel nct aceasta s evolueze n timp odat cu mediul modelat, cu
necesitile utilizatorilor i cu schimbrile care apar privind cererile de informaie. Modelele
conceptuale furnizeaz un mediu pentru dezvoltarea structurii unei baze de date ntr-o
manier de sus n jos (top-down). Cel mai utilizat model conceptual este Modelul Entitate Asociere.
2.1.1 Modelul Entitate - Asociere
Modelul entitate-asociere este un instrument pentru analiza acelor aspecte semantice
ale unei aplicaii, care sunt independente de evenimente. Modelul entitate-asociere reduce
redundana datelor. Aceasta abordare utilizeaz urmytoarele notaii grafice: dreptunghiuri
pentru entiti, romburi pentru asocieri (relaii) i cercuri sau elipse pentru atribute. Pentru
situaii complexe, o diagram entitate-asociere parial (care nu include detalii depre atribute)
poate fi utilizat pentru a prezenta o sintez a entitilor i relaiilor.
Diagrama entitate-asociere furnizeaz o metod eficient pentru vizualizarea
legturilor ntre entiti, pentru o aplicaie dat. Aceast instrument s-a dovedit util pentru a
face tranziia de la desrierea unei aplicaii la o schem formal a bazei de date. Modelul
entitate-asociere este astfel realizat fr a fi necesar atenia asupra proiectrii fizice a bazei
de date. Diagramele entitate-asociere sunt ulterior transformate ntr-o schem conceptual n
unul din modelele n care baza de date se va implementa efectiv.
n continuare sunt prezentate definiiile unor termeni de baz utilizai pentru
descrierea conceptelor importante ale modelului entitate-asociere.
Entitate - O entitate este un obiect concret sau abstract care poate fi clar delimitat n
mediu.
o Instan de entitate - O instan este o apariie particular a unei entitti.
De exemplu, fiecare persoan n parte poate fi o instan a unei entiti
PERSOANE, fiecare main n parte poate fi o instan a unei entiti
MAINI, etc.
o Tip de entitate Un grup de entiti similare poart numele de clas de
entiti sau tip de entitate. O clas de entiti are proprieti comune.

Atribute Atributele descriu proprietile entitilor i relaiilor i pot fi:

15

o
o
o

Simple (scalare) sunt cele mai mici uniti semantice de date, atomice
(fr structur intern), de exemplu: oraul.
Compuse reprezint grupuri de atribute privite unitar, de exemplu: adresa
(strad, numr, ora, cod potal ).
Multivaluate (liste) - reprezint valori multiple, de exemplu: note, cursuri,
etc.
Domeniile sunt mulimile de definiie ale atributelor:
mulimi precizate de valori scalare de acelai tip sau

mulimi de valori posibile.


Relaiile O relaie este o legtur ntre dou clase de entitate.
De examplu, o relaie ntre entitile PERSOANE i MAINI poate fi cea de
proprietate (automobilele sunt n proprietatea oamenilor).
o Gradul unei relaii indic numrul de entiti implicate n relaie.
o Cardinalitatea unei relaii indic numrul de instane din clasa de entiti E1
care poate sau trebuie asociat cu instane din clasa de entiti E2:
Relaii 1-1 (One to One relationship) Pentru fiecare entitate dintro clas exist cel mult o entitate asociat n cealalt clas. De
exemplu, fiecare persoan are un card de identitate (i exist copii,
care nc nu au).
Relaii 1-n (One to Many relationships) O entitate din clasa E2
este asociat cu zero sau mai multe entiti din clasa E1, dar fiecrei
entiti din E1 i se asociaz cel mult o entitate n E2. De exemplu, o
femeie poate avea mai muli copii dar orice copil are o singur
mam.
Relaii m-n (Many to Many relationships) Nu exist restricii
asupra numrului de entiti dintr-o clas, ce pot fi asociate cu o
entitate din cealalt clas. De exemplu, relaia ntre studeni i
cursuri. Fiecare student merge la mai multe cursuri i fiecare curs are
mai muli studeni.
Poate fi obligatorie, opional sau fixat.
o Ierarhiile Isa (Is a) reprezint un tip special de relaie ce permite
motenirea atributelor. De exemplu, a spune c un camion este un automobil
i un automobil are un fabricant, un model i un numr de serie implic faptul
c un camion are, de asemenea, un fabricant, un model i un numr de
serie.
Cheile Cheile identific n mod unic o entitate de alta, ntr-o clas de entiti.
o Cheia primar Identificator utilizat pentru a identifica n mod unic o instan
particular a unei entiti.
Poate fi reprezentat de unul sau mai multe atribute.
Trebuie s fie unic n domeniul su (i nu doar n setul de date
curent).
Valorile sale nu se schimb n timp.
Trebuie s aib totdeauna o valoare.
Poate fi creat cnd nu este evident nici un atribut. Fiecrei instane i
se asociaz o valoare.
o Cheie candidat Cnd exist mai multe chei primare posibile, fiecare este
o cheie candidat.
o Cheie concatenat Este o cheie realizat din componente care, atunci
cnd sunt considerate mpreun, identific n mod unic entitatea. Cheile
atribute multiple sunt chei concatenate.
o Atribute cheie mprumutate dac exist o relaie isa, cheia clasei mai
generale este, de asemenea, o cheie pentru subclas. De exemplu, dac
numrul de serie pentru automobile este cheie, va fi cheie i pentru
camioane.
o Chei secundare Refer un tabel aflat n relaie, prin cheia primar a acelui
tabel.
16

Restricia de integritate referenial Pentru fiecare valoare a unei chei


secundare, exist o cheie primar cu acea valoare n tabelul referit. De
exemplu, dac un numr de cont se utilizeaz ntr-un tabel pentru intrri,
atunci numrul de cont trebuie s existe tabelul cu numerele de cont.
Evenimente Evenimentele schimb entitile i/sau relaiile.

2.1.2 Diagrama Entitate - Asociere

Simbolurile utilizate n diagrama entitate asociere includ:


Dreptunghiuri Reprezint clasele (tipurile) de entitate.
Cercuri reprezint atributele.
Romburi reprezint relaiile.
Arce Au rolul de a conecta entitile prin relaii i, de asemenea, de a conecta
atributele la entiti. Unele modele de diagram entitate asociere utilizeaz sgei
sau sgei duble pentru a indica diferitele tipuri de relaii.
Sublinierea Atributele cheie ale entitilor sunt subliniate.

Iat un fragment dintr-o diagram entitate asociere:

Tip de entitate

CLIENI

Cod

Nume

Relaie
1

Tip de entitate
N

Primesc

Adr.

FACTURI

Codf

Data

Val.

2.2. Modele de date


Principalele clase de modele logice utilizate n gestiunea bazelor de date sunt
urmtoarele:
Modelul ierarhic
Modelul reea
Modelul relaional.
Un alt model care trebuie menionat este modelul punctual. O baz de date cu un
singur fiier (tabel) reprezint o structur punctual. O astfel de structur este util doar n
cazuri extrem de simple, pentru cele mai multe aplicaii din domeniul economic fiind
insuficient. Multe procesoare de tabele includ faciliti de baze de date, cum ar fi sortarea,
numrarea sau filtrarea datelor care satisfac anumite criterii. Toate facilitile de baze de date
incluse n procesoarele de tabele se refer la structura punctual.
n cele ce urmeaz se vor prezenta pe scurt primele dou modele, detaliind ntr-un
capitol separat modelul relaional care este, n prezent, cel mai utilizat.
2.2.1 Modelul ierarhic
Modelul de date ierarhic este o colecie de structuri arborescente, fiind fondat pe
reprezentarea arborescent a schemei conceptuale a bazei de date, n care nodurile
reprezint clasele de obiecte, iar arcele legturile ntre acestea. Modelul ierarhic este, prin
urmare, un arbore de nregistrri n care fiecare nregistrare conine dou elemente

rdcin sau un cmp master (o cheie), care identific tipul, locaia sau ordinea
nregistrrilor

cmpurile subordonate, ce reprezint restul datelor dintr-o nregistrare


Toate cmpurile au numai un nod printe, fiecare nod printe putnd avea mai muli fii.
Operaiile din bazele de date de tip ierarhic se traduc n procese de parcurgere a arborilor.
17

Avantaje: vitez i eficien pentru anumite tipuri de aplicaii. Modelul ierarhic este o
alegere bun atunci cnd datele au o structur natural de arbore. Astfel de aplicaii pot fi, de
exemplu, inventarele, sistemele de documentare bibliografice, unele sisteme de luare a
deciziilor i de gestionare de tip ierarhic, sistemele de informare i operare bazate pe lucrul
cu meniuri i altele asemntoare.
Probleme: modul de definire a datelor este predefinit; fiecare asociere trebuie s fie
definit explicit, la crearea bazei de date.
Modelul ierarhic este un caz special al modelului reea. Cel mai cunoscut SGBD de
tip ierarhic este IMS (Information Management System) de la IBM. A fost construit n 1968 n
scopul prelucrrii datelor din industria aerospaial. Iniial a fost un sistem pur ierarhic, dar a
cptat unele trsturi non-ierarhice, ca rezultat al necesitilor practice.
Exemplu.
Structura arborescent prezentat n continuare se refer la o baz de date a unei
agenii de vnzri de locuine:
JUDETE (NUMER)
OFICII (ORAS, ADROF)
AGENTI (NUMEA, VANZARI)
ANGAJAT (NR_AN, NUMEAN, ADRAN, SALARIU)
OFERTE (ADROF, PRET)
CLIENTI (NUMEC, ADRC)
i poate fi descris prin urmtoarea succesiune de instruciuni n SGBD IMS:
TREE AGENTIE
RECORD JUDETE ROOT
NUMER CHAR(20)
RECORD OFICII PARENT=JUDETE
ORAS CHAR(20)
ADROF CHAR(30)
RECORD AGENTI PARENT=OFICII
NUMEA CHAR(20)
VANZARI INTEGER
RECORD ANGAJAT PARENT=OFICII
NR_AN INTEGER
NUMEAN CHAR(20)
ADRAN CHAR(30)
SALARIU INTEGER
RECORD OFERTE PARENT=OFICII
ADROF CHAR(30)
PRET INTEGER
RECORD CLIENTI PARENT=AGENTI
NUMEC CHAR(20)
ADRC CHAR(30)
2.2.2 Modelul reea
Modelul de date reea este cel mai apropiat de forma de reprezentare a bazelor de
date sub forma diagramelor entitate-asociere. Deosebirea const doar n faptul c toate
relaiile ce apar pot fi numai binare i de tipul 1-1 sau 1-n. Aceast restricie permite
reprezentarea grafic a unei baze de tip reea sub forma unui orientat numit reea. n acest
graf, nodurile corespund entitilor iar relaiile sunt reprezentate prin sgei de la tat la fiu i
anume: sgei simple dac relaia este de tip 1-1 i sgei duble dac relaia este de tip 1-n.
Iat cteva caracteristici ale modelului reea:

Creaz asocieri ntre date printr-o list de legturi n care nregistrrile


subordonate (membre) pot fi legate la mai mult de un element (proprietar). Un
element poate fi parte a mai multor asocieri.

Pointer legtur explicit, pstrnd adrese ce conin locaia nregistrrii


asociate.

18

Complexitate pentru fiecare mulime de elemente asociate trebuie pstrat o


pereche de pointeri. Utiliznd acest model, este dificil s se structureze, din
punct de vedere conceptual, structuri de date complexe.
Vitez legturile directe conduc la viteze de lucru mari ale sistemelor care
implementeaz modelul reea.

Exemplu.
SGBD SOCRATE este de tip reea, fiind totodat i unul din primele sisteme de
gestiune a bazelor de date. A fost realizat de firma CII n colaborare cu ECA-Automation
pentru sisteme de tip IRIS, fiind folosit i n ara noastr pe vechile sisteme de tip Felix.
Sistemul conine un limbaj de descriere pentru date (identificarea datelor, a proprietilor lor i
eventual a criteriilor de validare), un limbaj de cereri, un macrogenerator (pentru generarea
unor macrocomenzi care permit utilizarea produsului i de ctre nespecialiti), un modul de
metode de acces (care permite utilizarea unor programe de accesare a datelor scrise n
diverse limbaje de programare), un editor de texte (pentru gestionarea textelor programelor i
a celor din baza de date), componente pentru asigurarea securitii i confidenialitii datelor
din baz, pentru reorganizarea bazei i alte programe utilitare. Poate lucra att autonom,
coninnd toate elementele necesare funcionrii sale, ct i ca metod de acces, fiind
deschis prin interfee pentru a putea funciona mpreun cu alte programe. Poate opera att
programabil ct i conversaional. n al doilea caz, poate lucra n regim multiutilizator.

Materiale privind modelarea:


1.

http://www.utexas.edu/its/windows/database/datamodeling/rm/rm7.html
Curs de iniiere in modelarea datelor la University of Texas at Austin

Despre modelele ierarhic i reea:


2.
3.
4.

http://unixspace.com/context/databases.html
www.ittia.com/dbstar/whitepapers/technicalmodel.pdf
www.staff.brad.ac.uk/ckarazai/Lecture3.pdf

Despre modelul entitate-asociere:


5.
6.
7.
8.

www.campus.ncl.ac.uk/databases/design/design.html
http://databases.about.com/od/Specificproducts
http://ycmi.med.yale.edu/nadkarni/IntroductiontoEAVSystems.htm
http://wofford.org/ecs/DataAudVisualization/ermodel/material.htm

19

3. Modelul relaional
n modelul relaional, baza de date este reprezentat de un grup de tabele corelate.
Modelul relaional a fost propus n 1970 de ctre cercettorul american E.F. Codd, n lucrarea
A relational model of large shared data banks i este, n prezent, cel mai popular model.
Simplitatea matematic i uurina vizualizrii modelului relaional au contribuit la succesul
acestuia. n plus, modelul relaional de date nu este legat de un tip anume de structur de
date (cum este, de exemplu, modelul ierarhic).
Modelul relaional se bazeaz pe teoria matematic a relaiilor.
Formal, o relaie n-ar R pe domeniile X1, X2, ,Xn este o submulime a produsului
cartezian X1xX2x xXn i se noteaz
R(X1,X2, ,Xn).
X1, X2, ,Xn se mai numesc constitueni.
Exemplu. Fie o ntreprindere i clasa de obiecte autoturisme fabricate n ntreprindere.
Fiecare produs are ca atribute: codul produsului, denumirea produsului i preul de referin.
S considerm datele ce caracterizeaz mpreun un anume produs:
1555, OPEL VECTRA, 15000
1555 reprezint codul, OPEL VECTRA reprezint numele iar 15000, preul. Datele reprezint
valori ale atributelor, valori ce se plaseaz ntr-un domeniu de definiie corespunztor.
Domeniul de definiie se poate preciza implicit sau explicit. n acest caz, atributului pre de
referin i se atribuie valori n mulimea numerelor ntregi. Dac preurile autoturismelor
fabricate au valori cuprinse ntre 10000 i 30000, atunci domeniul de definiie se poate
preciza ca fiind secvena numerelor ntre 10000 i 30000.
Este important ca pentru fiecare atribut s se cunoasc domeniul de definiie,
deoarece la introducerea datelor n baza de date nu vor fi acceptate dect datele care
reprezint valori plasate n domeniile de definiie ale atributelor. Validarea datelor la
introducere poate fi foarte complex, avnd ca obiectiv asigurarea integritii datelor.
Ansamblul valorilor afectate atributelor pentru un obiect real sau abstract din
domeniul supus studiului formeaz un tuplu (sau o realizare, sau o nregistrare de date).
Tuplurile unei relaii trebuie s fie unice. Se observ c datele pot fi organizate, n mod
eficient, ntr-un tabel. Dealtfel, organizarea tabelar este foarte mult folosit n practic.
Tuplurile vor fi liniile tabelului, n timp ce atributele sunt regsite pe coloane. Ordinea liniilor i
coloanelor nu prezint nici o importan.
Validarea datelor la nivelul realizrii unei relaii nseamn, n plus, respectarea
regulilor de integritate stabilite la nivel de relaie.
Exemplu. Pentru relaia SALARIAT, cu atributele: Maca, Nume,
Data_angajarii. La nivelul acestei relaii se poate stabili regula de integritate:

Data_nasterii,

An(Data_angajarii)>=An(Data_nasterii)+18.
Regulile pentru asigurarea integritii datelor pot viza i asocieri ce se stabilesc ntre
realizri ale relaiilor din baza de date.
Exemplu. O relizare a relaiei facturi de la furnizori se asociaz cu o realizare a relaiei
furnizori. Nu se pot nregistra datele dintr-o factur, dac anterior nu s-a inregistrat, n baza
de date, furnizorul. Acesta este un exemplu de regul de integritate referenial a bazei de
date.
Dintre cele trei modele de baze de date prezentate, modelul relaional se impune prin:
simplitate, structuri de date simple, operatori simpli (fr mari diferene ntre sisteme),
mecanismul vederilor, o baz teoretic solid, un numr mic de concepte, aplicarea
principiului dualitii accesului (prin program i interactiv), independena fizic a datelor,
independena logic a datelor, uurina dezvoltrii aplicaiilor, a instalrii i operrii,
simplificarea proiectrii bazelor de date, integrarea dicionarelor, posibilitatea dezvoltrii
bazelor de date distribuite, performane i posibiliti de extindere.
20

3.1 Conceptele modelului relaional


Conceptele modelului relaional sunt prezentate n urmtoarea sintez:

Relaie - Un tabel (bidimensional). Relaia nsi corespunde noiunii noastre


obinuite de tabel. O relaie este deci o colecie de tuple (termenul vine de la tuplu, notaie folosit i n matematic, adic o succesiune de t elemente), fiecare
coninnd valori ale unui numr fix de atribute. Relaiile mai sunt uneori referite i ca
fiiere, din cauza asemanrii lor cu o secven nestructurat de articole. Fiecare tuplu
al unei relaii trebuie s fie unic (deci, nu exist duplicate).
Atribut Este o coloan a tabelului. Ali termeni utilizai n mod obinuit pentru atribut
sunt proprietate i cmp. Mulimea valorilor permise pentru fiecare atribut se numete
domeniul acelui atribut.

Tuplu Este un rnd al tabelului. Un tuplu este o instan a unei entiti sau asocieri.

Cheie Un singur atribut sau o combinaie de atribute ale cror valori identific n
mod unic tuplurile relaiei. Deci, fiecare rnd are o valoare diferit pentru atributul
cheie. Modelul relaional cere ca fiecare relaie s aib o cheie astfel nct:
o
o

Oricare dou tupluri nu pot avea aceiai valoare a cheii


Fiecare tuplu trebuie s aib o valoare pentru atributul cheie (cmpurile cheie
nu pot avea valori nenule).

Exist dou restricii ale modelului relaional care, n practic, sunt uneori nerespectate:

1. Nu sunt permise tupluri duplicate. Dac sunt introduse dou tuple cu aceeai
valoare pentru fiecare din atribute, ele de fapt sunt considerate a fi acelai tuplu.
Aceast restricie este uneori rezolvat prin asignarea unui numr de linie (sau de
tuplu) unic pentru fiecare intrare, ceea ce asigur unicitatea.

2. Nu se presupune nici o ordine a tuplurilor n cadrul relaiei. n practic, totui, se


folosete desori o metod de ordonare a tuplurilor.
Exemplu de extensie a unei relaii:
Atribut sau
cmp sau
coloan
Numele atributelor
sunt parte a schemei COD_CLIENT
Tuplu sau
nregistrare sau
rnd

NUME

ADRES

CREDIT_LIMIT

19283

ELBAC S.A.

os. Oituz 34

300000000

35231

SUBEX S.A.

os. Iaului 12

500000000

34567

MICROSISTEM os. Alba 23


S.A.

250000000

Exist urmtoarea distincie ntre schema unei relaii i extensia unei relaii.
Schema este cadrul pentru relaie. Ea definete relaia, adic:
Numrul atributelor
Numele atributelor i domeniile acestora
Atributul cheie primar
Extensia relaiei este coninutul relaiei, adic mulimea tuplurilor care formeaz
relaia. Extensia unei relaii poate varia foarte mult n timp, dar schema este stabil. Antetele

21

coloanelor din figura de mai sus pot fi privite ca o parte a schemei, iar tuplurile de sub antete,
ca fiind extensia.
n termeni conceptuali, o relaie este o structur care pstreaz valori ale atributelor
unei clase particulare de entiti, sau ale unei clase particulare de asocieri. Exemplul
reprezint o relaie ce descrie membrii unei clase de entitate numit CLIENI. Relaiile pot, de
asemenea, s descrie asocieri.
Observaie. A nu se confunda, din cauza omonimiei, relaia, care este o construcie
la nivel de date a modelului relaional, cu asocierea (pentru care se folosete i termenul de
relaie), care este o noiune la nivel conceptual.
n relaia CLIENI, cheia pentru fiecare realizare de entitate este pstrat n atributul
COD_CLIENT. Cheile compuse sunt folosite, de obicei, n cazul asocierilor. De exemplu, dac
am crea o relaie care s reprezinte asocierea dintre studeni i cursuri am avea nevoie de o
cheie, care ar putea fi combinaia dintre cheia pentru studeni i cheia pentru cursuri.
Urmtoarele reguli permit (n cele mai multe cazuri) conversia unei diagrame entitateasociere ntr-o schem relaional:
Este necesar cte o relaie (tabel) pentru fiecare clas de entiti i fiecare
relaie de tip m-n;
Nu sunt necesare relaii pentru a reprezenta relataiile de tip 1-1 sau 1-n;
Cnd se construiete o relaie (tabel) pentru reprezentarea unei asocieri m-n,
cheia trebuie s conin toate atributele cheie ale relaiilor implicate.
Exemplul din 10.1 reprezint un model relaional.

3.2 Sisteme de gestiune a bazelor de date relaionale


Bazele de date la organizarea crora se utilizeaz modelul relaional se numesc baze
de date relaionale (BDR). SGBD-urile care permit gestiune bazelor de date relaionale se
numesc sisteme de gestiune a bazelor de date relaionale (SGBDR).
Dintre sistemele de gestiune a bazelor de date relaionale menionm: Visual Fox,
Access, Db2, Oracle, Informix. Unele dintre aceste SGBDR-uri au interfee proprii pentru
interogarea bazelor de date relaionale, toate implementnd limbajul standard SQL. Multe
SGBDR-uri fac obiectul unor extinderi, pentru a fi adaptate noilor cerine, cum ar fi: orientarea
obiect, analiza multidimensional, sisteme expert, sisteme multimedia, sisteme client-server.
Pentru gestiunea bazelor de date de dimensiuni mari (cu nregistrri ce depesc
ordinul sutelor de mii) se recomand utilizarea unor sisteme de gestiune a bazelor de date
performante, cum ar fi Oracle, SQL Server i Informix. Avnd in vedere performanele oferite
pentru gestiunea bazelor de date relaionale dar i necesitile didactice, n cadrul acestui
curs vom prezenta aplicaii realizate n Access.

Materiale privind modelul relaional:


1. [Fel96]
Despre bazele de date relaionale

2. http://databases.about.com/compute/databases/mbody.htm
Despre baze de date n general, cu informaii despre modelul relaional
3. http://www.sqlmag.com/Articles/Index.cfm?ArticleID=5113
SQL. Despre alegerea cheii primare
4. http://www.acm.org/classics/nov95/
Extrase din lucrarea lui Codd privind modelul relaional

22

4. Noi funcionaliti ale bazelor de date


4.1 Partajarea bazelor de date
n condiiile lucrului n reea, este posibil s se stocheze baza de date pe un
calculator ce are rol de server. Toi utilizatorii de la posturile de lucru pot accede simultan la
baza de date; ei partajeaz baza de date.
Lucrul n sistem multiutilizator impune rezolvarea unor probleme care vizeaz:
asigurarea integritii datelor (ndeosebi n cazul n care doi sau mai muli utilizatori
vor s realizeze n acelai timp operaii de actualizare a bazei de date);
asigurarea confidenialitii datelor;
prevederea unor mecanisme de protecie mpotriva unor operaii neautorizate, care
vizeaz ndeosebi modificarea structurii unor componente ale bazei de date;
Administratorul bazei de date are sarcini privind:
modelarea datelor
implementarea bazei de date
definirea utilizatorilor i a drepturilor de acces
ntreinerea bazei de date.
Drepturile de acces la nivel de utilizator vizeaz operaiile pe care acetia le pot realiza. Se
poate merge pn la detalii, preciznd chiar tabelele la care un anume utilizator va avea
acces.
n practica dezvoltrii sistemelor cu baze de date se poate opta pentru dezvoltarea
unor interfee de acces la baze de date partajate la nivel de utilizator / grup de utilizatori
(fiecare interfa utilizeaz, de regul, numai tabele ale bazei de date ce este stocat pe
server).

4.2 Baze de date distribuite


n numeroase situaii bazele de date sunt dispersate geografic se spune c sunt
distribuite (BDD). O baz de date distribuit permite ca o colecie arbitrar de relaii, dintr-o
colecie arbitrar de baze de date, , aflate pe o mare varietate de maini ce lucreaz sub
diverse sisteme de operare i sunt legate prin diferite reele de comunicaie, s poat fi
utilizate ca i cum ar fi o singur baz de date pe o singur main.
Principalele cerine pe care trebuie s le asigure un sistem de baze distribuite sunt:
autonomia local n organizarea i prelucrarea datelor, posibilitatea de lucru continuu al
nodurilor, independent de schimbrile n configuraiile de lucru (adugri sau eliminri de
noduri), independena localizrii i fragmentrii datelor (transparena fizic), posibiliti de
replicare (copiere) i independena copiilor, prelucrarea distribuit a cererilor, administrarea
distribuit a tranzaciilor, independena de hardware, de sistem de operare, de reea i de
SGBD.
Exemplu. Considerm o banc ce are filiale n 20 de localiti. Fiecare agenie posed un
sistem de calcul propriu i propria baz de date (baz de date local). Banca central
posed, de asemenea, un sistem de calcul pentru prelucrarea ansamblului datelor de la toate
filialele. Tranzaciile efectuate in conturi pot fi locale sau globale. S presupunem c de la
filiala din Constanaa bncii se face o depunere de 20 000 lei n contul cu numrul 456 al
persoanei X. Dac persoana X a deschis contul la filiala din Constana, tranzacia este local.
Dac persoana X are contul deschis la filiala din Bucureti, tranzacia este considerat
global. Fiecare filial are acces la baza de date a unei alte filiale pentru realizarea unui set
finit de operaii.
Lucrul n reele 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 baza de date local i, n plus, la bazele de
date distribuite n celelalte site-uri. Conexiunile ntre site-uri pot fi stabilite n diverse maniere.

23

Topologiile de racordare (stea, inel, combinate) se prezint sub form de grafuri, ale
cror noduri corespund site-urilor. Un utilizator particular va folosi baza de date fr s fac
referiri concrete i fr s se preocupe de locul unde aceasta este memorat fizic.
Figura urmtoare prezint o posibil arhitectur pentru baza de date distribuit a unei bnci:
Centru regional
1

Centru regional
2

Centru regional
N

Centre regionale
cu Mainframe

LAN
Agenia 1

LAN
Agenia 2

LAN
Agenia M

n cazul unei ntreprinderi s-ar putea opta pentru soluia unei baze de date distribuite pe
funcii, ca n figura urmtoare:
Gestiunea
resurselor umane
i a salariilor

Gestiunea
resurselor materiale
Infrastructur
pentru
comunicaie

Gestiunea
produciei

Contabilitate
i control de gestiune

Exist mai multe arhitecturi pentru baze de date distribuite:


Cu replicare diversele site-uri stocheaz o copie a bazei de date.
Cu fragmentare baza de date este fragmentat, iar fiecare fragment este gzduit de
ctre un site. Fragmentarea poate fi: orizontal, vertical sau mixt.
Cu replicare i fragmentare.
Sistemele cu baze de date distribuite comport dou subsisteme:
Gestionarul de tranzacii - a crui funcie este de a gestiona tranzaciile relative la
datele site-ului; fiecare tranzacie poate fi local (executabil integral n cadrul siteului) sau poate s fac parte dintr-o tranzacie global (interesnd mai multe site-uri);
Coordonatorul tranzaciilor al crui rol este de a coordona executarea diverselor
tranzacii (locale sau globale); el trebuie s execute un protocol da validare a
tranzaciei.
Avantaje. Avantajele repartizrii bazelor de date sunt:
partajarea datelor i gestiunea distribuit a acestora;
fiabilitatea i disponibilitatea;
prelucrarea accelerat a cererilor.
Principala dificultate n dezvoltarea sistemelor cu baze de date distributive provine din
necesitatea de a coordona ansamblul site-urilor. Un sistem cu baza de date distribuit ridic
problemele specifice sistemelor multiutilizator, la care se adaug cele ale distribuirii bazelor
de date.

24

4.3 Baze de date deductive


Bazele de date deductive se fundamenteaz pe cuplarea unei baze de date
relaionale cu un procesor din clasa sistemelor expert. n figura urmtoare se prezint o
arhitectur simplificat a unei baze de date deductive.
INTERFAA

Interpretor
PROLOG

SGBDR

Se vor prezenta detalii n capitolul 9.

4.4 Baze de date multidimensionale


Bazele de date multidimensionale 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). Se face astfel 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 etc.) i
OLAP care privilegiaz: analiza i manipularea datelor folosind cereri complexe, n
vederea elaborrii strategiei i sunt destinate ndeosebi conducerii i controlului de
gestiune.
Conceptul de baz este cel de hipercub, ilustrat n figura urmtoare:

Datele se regsesc la intersecia liniilor marcate pe hipercub i au pentru coordonate


atributele ce definesc dimensiunile hipercubului. Hipercubul din figura de mai sus poate fi
utilizat, de exemplu, pentru a reprezenta date despre vnzri pe trei dimensiuni:
dimensiunea localitate;
dimensiunea produs;
dimensiunea timp (lunile anului).

4.5 Baze de date orientate obiecte


Dei succesul SGBDR-urilor n dezvoltarea aplicaiilor economice este nc destul de
mare, ele prezint i anumite limite.
Este vorba, n primul rnd, de faptul c pentru orice aplicaie informatic se
delimiteaz net trei domenii:
interfaa;
datele;
prelucrrile.
25

Tehnologia orientat pe obiecte reduce cele trei formalisme la unul singur: obiectul.
Aplicarea tehnologiei orientate obiect n domeniul bazelor de date a determinat apariia
bazelor de date orientate pe obiecte. Primele baze de date orientate pe obiecte au aprut la
sfritul anilor '80, dar nu au atins un nivel de dezvoltare prea ridicat, datorit:
lipsei produselor CASE, care s permit o proiectare corect;
limbajelor de interogare, care erau deficitare;
faptului c nu existau standarde acceptate.
O baz de date orientat pe obiecte trebuie s ndeplineasc dou cerine fundamentale:
s ndeplineasc cerinele unei baze de date;
s fie un sistem care s aib la baz tehnologia orientat obiect.
Un obiect poate fi definit ca reuniune ntr-o aceeai capsul a unui ansamblu de
date i a prelucrrilor (standard) asociate (urmtoarea figur). ncapsularea este reuniunea
definiiei statice a unui obiect prin atributele sale i definirea dinamic a acestui obiect (cu
ajutorul regulilor de comportament). Aceste reguli sunt traduse cu ajutorul metodelor, care
reprezint prelucrrile asociate obiectelor. Obiectele sunt caracterizate printr-o structur i o
interfa. Structura obiectului este reperat printr-un identificator intern unic i posed o stare
care regrupeaz n general atribute cu datele de tratat. Interfaa unui obiect este compus din
selectorul de metode (partea vizibil a obiectului). Structura este cunoscut numai de ctre
obiect. Un obiect nu poate fi manipulat dect via metodele asociate.
Obiect
Descrierea dinamic
(modele de prelucrare)

Date

Descrierea static
(modele de date)

Multe
dintre obiectele manipulate posed n comun aceeai structur i acelai comportament. O
clas descrie obiectele care au caracteristici statice i dinamice comune.
Exemple.
Super-Clasa Persoana
Atribute
Nume
Adresa
DataNasterii
Metode
Nume
Returneaza(Self.Nume)
Adresa
Returneaza(Self.Adresa)
DataNasterii
Returneaza(Self.DataNasterii)

Clasa Salariat
Atribute
SalariuIncadrare
LocMunca
Responsabil
Metode
SalariuIncadrare
Returneaza(Self.SalariuIncadrare)
NumeResponsabil
Returneaza(Self.NumeResponsabil)
26

O clas (clas derivat) poate moteni de la o alt clas (clasa de baz) atribute i
metode. n exemplul de mai sus, clasa Salariat motenete atributele i metodele clasei
Persoana.
Tehnica motenirii permite mprirea eficace a anumitor cunotine despre obiecte
pentru a obine o reprezentare mai bogat n semantic. Datele cele mai generale se
grupeaz n clase care sunt n continuare specializate n subclase ce comport atribute i
comportamente din ce n ce mai particulare. La nivelul cel mai nalt va exista o superclas
obiect de la care toate celelalte motenesc (atribute, metode).
Clasa Salariat motenete atributele, selectorii i metodele superclasei Persoana. Ea
posed n plus atribute i metode proprii. Realizrile clasei Salariat pot fi utilizate ca realizri
ale clasei Persoana i pot poseda proprieti suplimentare.
Obiectele definite se integreaz n sistem i prezint conexiuni cu alte obiecte. Aceste
conexiuni sunt materializate prin mesaje pe care obiectele le schimb ntre ele. Aplicarea unei
metode la un obiect corespunde cu trimiterea unui mesaj. Receptorul mesajului se numete
Self.
Bazele de date orientate pe obiecte (BDOO) sunt gestionate folosind sisteme de
gestiune orientate pe obiecte (SGOO).
Principala caracteristic a BDOO este viteza de acces la date (n comparaie cu
celelalte tipuri de Baze de date). Acest acces este asigurat prin intermediul unei hri a
ierarhiilor i relaiilor claselor de obiecte, pe care BDOO o stocheaz. De asemenea, permit
gruparea sau partiionarea fizic a datelor, tehnic numit clustering. BDOO asigur
accesarea eficient a obiectelor necesare la un moment dat unei cereri utilizator, minimiznd
traficul prin reea.
Domeniile n care este eficient utilizarea BDOO sunt:
- simularea si modelarea diferitelor fenomene i procese
- administrarea documentelor
- proiectele CASE (Computer Aided Software Engineering), CAD (Computer Aided
Design), CAM (Computer Aided Manufacturing), CAE (Computer Aided Engineering)
- multimedia
- ingineria cunoaterii.

4.6 Alte tipuri de baze de date


Bazele de date textuale gestioneaz documente electronice. Principalele operaii
asigurate sunt: stocarea, cutarea, modificarea i asamblarea de documente i alte informaii
stocate cu titlu de date textuale n aceste baze de date.
Bazele de date multimedia extind aria de gestiune incluznd ndeosebi imagini,
sunete, etc.

4.7 Sisteme Client / Server


Sistemele Client/Server se fondeaz pe partajarea sarcinilor ntre dou entiti: server
i client. Tehnologia client/server presupune dou aplicaii (urmtoarea figur):
serverul, care furnizeaz diverse servicii;
clientul, care este beneficiarul serviciilor oferite de server.

Aplicaie client

Cerere

Aplicaie server

Rspuns

Cele mai rspndite aplicaii client/server sunt cele cu baze de date; soft-ul pentru baza de
date este executat pe calculatorul server, iar programul care acceseaz baza de date pe un
calculator client.

27

4.8 Bazele de date i sistemele informaionale din organizaii


Bazele de date constituie componenta central a sistemelor informaionale din
ntreprinderi, n cadrul reprezentat n figura urmtoare:

SISE

SLIC

B
D

SIT

SIM
SIAD
SIR

SIIO

unde notaiile reprezint:


SIT sisteme informaionale tranzacionale (sisteme informaionale operaionale);
SLIC - sisteme de lucru bazate pe informaie i cuntine;
SIIO - sisteme informaionale interorganizaionale (multe dintre aceste sisteme sunt
de tip tranzacional);
SISE - sisteme informaionale suport pentru executiv
SIM - sisteme informaionale pentru management, care includ:
o SIAD - sisteme informaionale de asistare a deciziei i
o SIR sistemele imformaionale de raportare.
Bazele de date sunt alimentate n principal de sistemele operaionale i sistemele
interorganizaionale (sisteme de comer electronic, sisteme de pli electronice etc.) i sunt
accesate de sistemele de management i de sistemele suport pentru executiv. Ele pot fi, de
asemenea, accesate de sistemele de lucru bazate pe informaie i cunotine (cum ar fi, spre
exemplu, sistemele expert). Structurile funcionale i de conducere din ntreprinderi impun
organizarea de sisteme de baze de date care comunic ntre ele.
n figura urmtoare prezentm o viziune (conform J. OBrien, Les systmes
dinformation de gestion, 1995) a principalelor tipuri de baze de date utilizate de ctre
organizaii i utilizatori.

BD
distribuit

Post de lucru al
utilizatorului

Server
de Baze de
date

BD
externe

BD
operaionale

BD
individual

Depozite de
date

28

Materiale privind funcionalitile moderne ale bazelor de date:


1.

www.extropia.com/tutorials/sql/toc.html
Introducere n domeniul bazelor de date, pentru dezvoltatorii de web

2. http://www.service-architecture.com/object-oriented-databases/
Articole despre bazele de date orientate obiect i produse pentru acestea
Despre baze de date multimedia
3. http://sunsite.berkeley.edu/Imaging/Databases/
4. [Tod04]

29

5. Forme normale. Normalizare


5.1 Dependene funcionale

Atributul Y este dependent funcional de atributul X dac i numai dac fiecare


valoare a atributului X este asociat cu exact o valoare a atributului Y. Se spune
c X este determinant al lui Y, sau c X determin pe Y i se noteaz XY.
Asocierile 1-1 prezint dou dependene funcionale. De exemplu, ntre numele unei
persoane i codul su numeric personal exist o dependen 1-1, cele dou atribute
determinndu-se reciproc.
Asocierile 1-n prezint o dependen funcional. De exemplu, ntre numele unui
student i numrul su matricol: un numr matricol se asociaz exact unui student;
dar mai muli studeni pot avea acelai nume, astfel c un nume poate avea mai
multe numere matricole asociate.
Asocierile m-n nu prezint dependene funcionale. De exemplu, ntre studeni i
cursuri exist o coresponden de acest tip: fiecare student poate urma mai multe
cursuri i fiecare curs poate avea mai multi studeni, fr a se observa vreo corelaie
ntre valori, n sensul definiiei dependenei funcionale.

Utilizatorul care proiecteaz o aplicaie determin dependenele funcionale


examinnd mediul real. Deseori dependenele nglobeaz anumite restricii referitoare la
aplicaia respectiv. Este o problem de convenie, de exemplu, ca un student s poat urma
mai multe cursuri, dar nu dintre cele care au loc n acelai interval de timp. Sau, ca un student
s aib un singur numr matricol i ca un numr matricol s poat fi asociat unui singur
student.

5.1.1 Descompunerea
Termenul descompunere se refer la faptul c informaia inclus ntr-o relaie poate
fi splitat n dou sau mai multe relaii separate, fiecare dintre acestea avnd mai puine
atribute dect relaia original. Cu alte cuvinte, atributele sunt plasate n tabele diferite.
Tuplele din noile relaii vor fi determinate de atributele incluse. Scopurile descompunerii unei
relaii sunt:
S reduc redundana datelor.
S pstreze capacitatea de a recrea relaia original, fr a pierde tupluri sau a
aduga noi tupluri.
Procesul recrerii tabelului original se numete uniune sau jonciune (join). A se vedea
6.2.1.
Exemplu. n exemplul de mai jos sunt prezentate tabelele iniiale, precum i rezultatul
operaiei join pe atributul Profesie.

Persoane

Caliti

Rezultatul operaiei join

Nume

Profesi
e

Profesi
e

Calitate

Nume

Profesie

Calitate

Andrei

inginer

inginer

pragmatism

Andrei

inginer

pragmatism

Carmen

profesor

profesor

tact

Carmen

profesor

tact

30

Silvia

inginer

Traian

pilot

pilot

curaj

Silvia

inginer

pragmatism

Traian

pilot

curaj

Este important ca descompunerile ce se realizeaz ntr-o baz de date s aib loc fr


pierderi de informaie, cci n caz contrar, informaia trebuie restaurat.

5.1.2 Asocierile i proiectarea schemelor


Elegana matematic a modelului relaional suport o teorie a proiectrii schemelor.
Teoria indic, ntr-o anumit msur, ce structuri au probleme poteniale i ar trebui evitate.
Teoria normalizrii ofer multe elemente foarte utile n procesul de proiectare a bazelor de
date.
Dup cum am observat deja, asocierile ntre datele aparinnd la dou domenii, fie
acestea A i B, se pot clasifica n trei categorii:
asocieri 1-1
asocieri n-1
asocieri n-m
Vom ilustra fiecare tip de asociere n contextul unui exemplu.
Asocierile 1-1 sunt acelea n care fiecrui element din A i se pune n coresponden
un unic element din B i reciproc. De exemplu, fiecare student are un numr matricol i
fiecare numr matricol se asigneaz unui singur student. Tabelul urmtor prezint o astfel de
asociere:
Numr matricol
21350
21351
21576
21577

Nume student
Ionescu Alina
Mircea Diana
Traian Alexandru
Miron Vladimir

Vom nota sintetic: Numr matricol (1-1) Nume student


ntr-o asociere n-1, fiecrui element din B i se asociaz un unic element din A, dar
fiecrui element din A i se pot asocia mai multe elemente din B. De exemplu, dac plecm de
la ipoteza c un student nu poate urma dect o specializare, atunci: un student urmeaz o
specializare, dar o specializare are mai muli studeni. Aceasta este o relaie n-1 ntre studeni
i specializri (sau 1-n ntre specializri i studeni). Tabelul urmtor prezint o astfel de
asociere:
Numr matricol
21350
21351
21576
21577

Specializare
Informatic
Informatic
Biologie
Biologie

Vom nota sintetic: Numr matricol (n-1) Specializare


Asocierile n-m sunt acelea n care nici unui element nu i se asociaz un singur
partener. O astfel de relaie este cea ntre studeni i cursuri. Fiecare student urmeaz mai
multe cursuri, iar fiecare curs are mai muli studeni. Nu exist limite n ceea ce privete
numrul partenerilor de asociere.

31

Vom nota sintetic: Numr matricol (n-m) Cursuri

5.2 Dependene multivaloare


Fie R o schem relaional, X i Y submulimi ale lui R. Spunem c exist o
dependen multivaloare a lui Y de X sau c X determin multivaloare pe Y i notm XY
dac, pentru orice valoare a atributelor lui X sunt asociate valori pentru atributele lui Y care nu
sunt corelate n nici un fel cu atributele din R-X-Y.
Exemplu. Fie relaia
ORAR
CURS
Algebr
Algebr
Programare
Programare
Englez
Englez
Englez

PROFESOR
Ionescu T.
Ionescu T.
Dinu A.
Dinu A.
Bonta E.
Bonta E.
Bonta E.

ORA
10
10
8
8
16
16
18

LOCATIE
A45
A45
C9
C9
C22
C22
C22

STUDENT
Miron Clin
Matei Ruxandra
Gruia Alina
Traian Maria
Miron Clin
Matei Ruxandra
Horia Anca

AN-STUDIU
1
1
2
2
1
1
3

Se manifest urmtoarele dependene funcionale:


CURS PROFESOR (fiecare curs are un singur profesor)
ORA, LOCATIE CURS (la o or dat, ntr-o anumit sal se poate ine un singur curs)
ORA, PROFESOR LOCATIE (la o anumit or, un profesor se poate afla n cel mult o
sal)
CURS, STUDENT AN-STUDIU (fiecare student urmeaz un curs ntr-un anumit an de
studiu)
ORA, STUDENT LOCATIE (fiecare student se poate afla n cel mult o sal, la un
moment dat).
Au loc dependenele multivaloare
CURS ORA, LOCATIE
care semnific faptul c fiecrui curs i se asociaz o mulime de perechi de ore i sli care nu
depind n nici un fel de celelalte informaii. n schimb nu au loc, n general, dependenele
multivaloare CURS ORA sau CURS LOCATIE.

5.3 Forme normale ale bazelor de date


O form normal se refer la o clas de scheme relaionale care se supun unui set
de reguli. O schem care satisface regulile corespunztoare unui set se spune c este n
forma normal respectiv. De obicei, proiectantul unei baze dorete ca relaiile s se afle n
ct mai multe forme normale posibil.
5.3.1. Date ne-normalizate
Urmtorul tabel conine date ne-normalizate. Coloanele 2, 3 i 4 conin liste de valori,
iar coloana 5 conine un atribut compus.
List

List

List

Valori
compuse

Legitimaie

Cod
Calificri

Categorie
Calificri

Profil

Nume

Vrst

Birou
nr.

Ora

Superior

21

113

Sisteme

Mare
Ana

29

Iai

Ion

32

35
50
77

113
170
200
170

Sisteme
Taxe
Audit
Taxe

5
7
4
3

150
200

Consultan
Audit

5
8

Ionescu
Dan

33

Bucureti

Damian

Mircea
Clin
Traian
Raluca

35

Bucureti

Damian

28

Iai

Ion

5.3.2 Prima form normal (FN1)


O relaie se prezint n FN1 dac valorile fiecrui cmp sunt ne-decompozabile
(atomice) i fiecare tuplu este unic. Atributele care se pot partiiona n sub-atribute sau
grupurile repetitive, care sunt foarte comune n bazele de date, nu sunt permise.
De exemplu, o persoan poate avea mai multe calificri. Dac acestea sunt listate n
acelai cmp (ca n tableul de mai sus), atunci relaia nu se afl n prima form normal. La
fel, dac un cmp este comus, n genul unei adrese, formate din ora, strad, numr, cod
potal. Dac un cmp este considerat structurat sau nu, aceasta depinde n mare msur de
aplicaie. Dac prelucrrile nu necesit acces dup ora, sau strad, sau cod potal atunci
este potrivit sa pstrm aceste date ntr-un singur cmp, dar dac este necesar s sortm
dup unul din aceste elemente, de exemplu dup cod potal, atunci aceast abordare nu mai
este potrivit.
Utilitatea FN1 este evident. Grupurile repetitive stric natura tabelar a relatie.
Este dificil s se refere un element anume din grupul repetitiv, cci ar trebui specificat o
informatie cu privire la poziia sa n grup. Mai mult, diferite pri ale atributului se pot comporta
foarte diferit din punct de vedere al dependenelor. Regula FN1 surprinde cerina natural ca
fiecare atribut s aib propriul su nume. Urmtorul tabel prezint datele tabelului anterior,
structurate n FN1. n toate relaiile ce vor fi prezentate, cheia primar este subliniat.

Legiti
maie

Cod
Califi
cri

21
35
35
35
50
77
77

113
113
170
200
170
150
200

Categorie
Calificri

Sisteme
Sisteme
Taxe
Audit
Taxe
Consultana
Audit

Pro
fil

Nume

3
5
7
4
3
5
8

Mare
Ionescu
Ionescu
Ionescu
Mircea
Traian
Traian

Prenu
me

Vr
st

Bi
rou
nr.

Ora

Ana
Dan
Dan
Dan
Clin
Raluca
Raluca

29
33
33
33
35
28
28

1
2
2
2
2
1
1

Iai
Bucureti
Bucureti
Bucureti
Bucureti
Iai
Iai

Superior

Ion
Damian
Damian
Damian
Damian
Ion
Ion

Informaiile aflate doar n FN1 prezint un nalt grad de redundan. Pentru a reduce
redundana vom converti datele la a doua form normal.
Formele normale mai mari dect FN1 au fost motivate de descoperirea anomaliilor,
deci a operaiilor pe relaii din care rezult inconsistene sau pierderi nedorite ale adtelor.
nlturarea anomaliilor necesit trecerea progresiv prin diferite nivele ale formelor normale.
Aceast transformare urmrete un ideal: fiecare informaie care presupune asocieri ntre
date s apar o singur dat n baz i s nu depind de prezena altor asocieri.
5.3.3 A doua form normal (FN2)
O relaie este n FN2 dac este n FN1 i toate atributele sale sunt dependente de
ntreaga cheie (adic, nici unul din atributele non-cheie nu este relaionat doar cu o parte a
cheii). Tehnica de descompunere pentru obinerea FN2 este foarte simpl: presupune
construirea unei relaii separate care sa inglobeze dependenele pariale i s nlture
atributele dependente din relaia original.

33

Pentru exemplul considerat, n urma eliminrii dependenelor pariale s-au obinut


urmtoarele trei relaii.
Relaia CADRE:
Legiti
maie

21
35
50
77

Prenu
me

Vr
st

Bi
rou
nr.

Ana
Dan
Clin
Raluca

29
33
35
28

1
2
2
1

Nume

Mare
Ionescu
Mircea
Traian

Ora

Iai
Bucureti
Bucureti
Iai

Superior

Ion
Damian
Damian
Ion

Se observ c numele i prenumele, vrsta i informaiile referitoare la grupul din care


persona face parte (numrul biroului, orasul, eful direct) sunt corelate direct cu numrul de
legitimaie (am putea spune c depind de numrul de legitimaie) i nu depind de calificare.
Relaia CALIFICRI:
Cod
Calificri

113
170
200
150

Categorie
Calificri

Sisteme
Taxe
Audit
Consultana

n acest caz, categoria calificrii este determinat de codul calificrii i nu depinde de


numerele de legitimaie ale cadrelor.
Relaia COMPETENE:
Legiti
matie

Cod
Calificri

Competene

21
35
35
35
50
77
77

113
113
170
200
170
150
170

3
5
7
4
3
5
8

n acest caz, competena este determinat de combinaia celor dou chei (legitimaie i cod
calificare).
5.3.4 A treia form normal (FN3)
O relaie este n FN3 dac este n FN2 i nu exist nici un fel de dependene
tranzitive (adic, nici unul din atributele non-cheie nu este dependent de alt atribut, care la
rndul su este dependent de cheia relaiei).
Aceasta nseamn c nu exist nici o pereche (sau o pereche de mulimi de atribute) X i Y
pentru care s apar succesiunea:
Cheie X X Y
unde X este o cheie non-candidat.
O alt modalitate de a privi a treia form normal este dat de faptul c ea rezult din
relaii ce reprezint entiti i relaii ce reprezint asocieri ntre entiti. O descompunere
corespunztoare, prin care o schem se poate converti la a treia form normal, este aceea
prin care acele atribute care nu sunt direct (sau, sunt doar tranzitiv) dependente de cheie sunt
plasate ntr-o relaie separat. Aceast descompunere prezint dou caracteristici importante:
Fiecare dependen este concretizat printr-o relaie (deci descompunerea pstreaz
dependenele).

34

Dac o extensie a relaiei originale este descompus, ea poate fi reconstruit prin


intermediul unui JOIN, din componente (fr pierderi).
n general, orice schem poate fi adus la a treia form normal, cu pstrarea dependenelor
i cu operaii join fr pierderi de date. Pentru exemplul considerat, datele n FN3 se prezint
dup cum urmeaz.
Relaia CADRE:
Legiti
maie

21
35
50
77

Prenu
me

Vr
st

Bi
rou
nr.

Ana
Dan
Clin
Raluca

29
33
35
28

1
2
2
1

Nume

Mare
Ionescu
Mircea
Traian

Ora

Iai
Bucureti
Bucureti
Iai

Superior

Ion
Damian
Damian
Ion

Relaia BIROURI:
Bi
rou
nr.

1
2

Ora

Superior

Iai
Bucureti

Ion
Damian

Relaia CALIFICRI:
Cod
Califi
cri

113
170
200
150

Categorie
Calificri

Sisteme
Taxe
Audit
Consultana

Relaia COMPETENE:
Legiti
matie

Cod
Calificri

Competene

21
35
35
35
50
77
77

113
113
170
200
170
150
170

3
5
7
4
3
5
8
5.3.5 Forma normal Boyce-Codd (FNBC)

Spunem c o relaie R cu dependenele F se afl n forma normal Boyce-Codd


(FNBC) dac, oricare ar fi dependena XA cu A atribut neconinut n X, exist o cheie a lui R
coninut n X.
Orice relaie n forma normal Boyce-Codd este n FN3, dar reciproca nu este
adevrat.
Exemplu. Relaia R cu schema R(A, B, C), cu cheile AC i BC i cu dependenele
funcionale F={ABC, CA}. R este n a treia form normal, dar nu este n forma normal
Boyce-Codd deoarece cheile acestei relaii sunt AC i BC, iar pentru dependena CA partea
stng nu conine nici una din cele dou chei.
Pentru problema de a determina dac o relaie este n FNBC nu exist (n general)
algoritmi eficieni de rezolvare.

35

5.3.6 A patra form normal (FN4)


Fie R o schem relaional i D o mulime de dependene funcionale i multivaloare
pe R. Spunem c R este n FN4 dac, pentru orice dependen multivaloare XY cu Y
neinclus n X i XY inclus n R, exist cheie a lui R inclus n X.
Cu alte cuvinte, o relaie R este n FN4 dac este n FNBC i orice dependen
multivaloare este, de fapt, o dependen funcional.
Dac D conine numai dependene funcionale i R este n FN4, atunci R este n
FNBC.
Exemplu. Fie relaia ORAR prezentat n 5.2. Singura cheie a relaiei este format din
atributele STUDENT i ORA. Dependena CURS ORA, LOCATIE nu respect condiia
din FN4 deoarece CURS nu conine o cheie. Vom descompune relaia n:
CURSURI
CURS
Algebr
Programare
Englez

ORA
10
8
16

LOCATIE
A45
C9
C22

care are cheia ORA, LOCATIE i este n FN4 i


ORAR1
CURS
Algebr
Algebr
Programare
Programare
Englez
Englez
Englez

PROFESOR
Ionescu T.
Ionescu T.
Dinu A.
Dinu A.
Bonta E.
Bonta E.
Bonta E.

STUDENT
Miron Clin
Matei Ruxandra
Gruia Alina
Traian Maria
Miron Clin
Matei Ruxandra
Horia Anca

AN-STUDIU
1
1
2
2
1
1
3

care are cheia CURS, STUDENT dar nu este n FN4 deoarece prezint dependena
CURS PROFESOR care rezult din CURS PROFESOR i CURS nu conine o cheie.
Descompunem ORAR1 n:
PROFESORI
CURS
Algebr
Programare
Englez

PROFESOR
Ionescu T.
Dinu A.
Bonta E.

i
STUDENTI
CURS
Algebr
Algebr
Programare
Programare
Englez
Englez
Englez

STUDENT
Miron Clin
Matei Ruxandra
Gruia Alina
Traian Maria
Miron Clin
Matei Ruxandra
Horia Anca

AN-STUDIU
1
1
2
2
1
1
3

care sunt ambele n FN4.


Deci, descompunerea relaiei ORAR n {CURSURI, PROFESORI, STUDENTI} se afl
n FN4 i este fr pierderi la uniune.

36

5.3.7 A cincea form normal (FN5)


Se spune c o relaie R satisface dependena de uniune (join dependency) i se
noteaz cu
*(X,Y,,Z)
dac i numai dac R este egal cu uniunea proieciilor lui R pe X,Y,,Z, acestea fiind
submulimi ale lui R.
O relaie R este n FN5 (numit i forma normal proiecie-uniune) dac i numai
dac orice dependen de uniune a lui R este o consecin a unei chei candidat a lui R.
Orice relaie care este n FN5 este i n FN4, deoarece fiecare dependen
multivaloare poate fi privit ca un caz particular de dependen de uniune. Orice relaie poate
fi descompus fr pierderi la uniune ntr-o mulime de relaii care sunt n FN5.
Pentru a preciza dac o relaie este n FN5, este suficient s cunoatem cheile
candidate i toate dependenele de uniune din R.
5.3.8. Procesul normalizrii relaiilor
Procesul de normalizare a relaiilor se poate descrie n felul urmtor:
1. Se proiecteaz relaia iniial, aflat n FN1, pe alte relaii, pentru a elimina dependenele
funcionale care nu sunt complete. Se obine o mulime de relaii n FN2.
2. Se proiecteaz relaiiile obinute n pasul 1 pe alte relaii, pentru a elimina dependenele
funcionale tranzitive. Se obine o mulime de relaii n FN3.
3. Se proiecteaz relaiiile obinute n pasul 2 pe alte relaii, pentru a elimina dependenele
n care partea din stnga nu este o supracheie. Se obine o mulime de relaii n FNBC.
4. Se proiecteaz relaiiile obinute n pasul 3 pe alte relaii, pentru a elimina toate
dependenele multivaloare care nu sunt i dependene funcionale. Se obine o mulime
de relaii n FN4.
5. Se proiecteaz relaiiile obinute n pasul 4 pe alte relaii, pentru a elimina orice
dependen de uniune care nu este implicat de o cheie. Se obine o mulime de relaii n
FN5.
De obieci, forma normal FN3 este suficient, iar alteori chiar FN2 este suficient.

Materiale privind normalizarea:


1. [Fel96]
Dependene ntre date
2. [Bas97]
Forme normale i normalizare
3. http://databases.about.com/od/ specificproducts/a/normalization.htm
Despre normalizare
4. http://en.wikipedia.org/wiki/Database_normalization
Definiia normalizrii n enciclopedia wikipedia
5. http://www.datamodel.org/NormalizationRules.html
5 reguli pentru normalizarea datelor
6. http://www.fmsinc.com/tpapers/datanorm/
Fundamente ale normalizrii datelor

37

6. Limbaje utilizate n lucrul cu baze de date


6.1 Limbajul de definire a datelor pentru modelul relaional
Schema unei baze de date relaionale este declarat utiliznd un limbaj de definire
a datelor (LDD). Un LDD relaional este simplu. Fiecare relaie trebuie s fie declarat:
atributele sale s fie definite, trebuie s fie specificat un domeniu pentru fiecare atribut i
trebuie aleas o cheie.
O abordare simpl, valabil pentru multe baze de date relaionale, este aceea prin
care fiecrei relaii i se asociaz un fiier. Sunt posibile i alte abordri, dar necesit
implementri mult mai complexe. Imaginile urmtoare prezint modalitatea de definire a
atributelor unei noi relaii n ACCESS, precum i adugarea relaiei la baz.

38

6.2 Limbajul de manipulare a datelor pentru modelul relaional


Se cunosc foarte multe abordri n ceea ce privete limbajele de manipulare a
datelor (LMD) organizate relaional. Cele mai multe dintre acestea sunt interactive, proiectate
pentru folosirea conversaional de ctre un utilizator care ateapt un rspuns imediat.
Exist patru sarcini de baz pe care trebuie s le realizeze un limbaj de manipulare a
datelor:
Inserarea datelor noi.
tergerea datelor vechi.
Actualizarea datelor.
Consultarea datelor.
Aceste funcii se regsesc ntr-o form sau alta n orice limbaj de manipulare a datelor.
Complexitatea cea mai mare a operaiilor unui limbaj de manipulare a datelor se
refer la ultima categorie de prelucrri: consultarea datelor. Inserarea, tergerea i
actualizarea sunt, de obicei, operaii clare i sunt realizate de un utilizator experimentat (sau
de un program de aplicaie), cunoscndu-se exact ce trebuie modificat i unde. Operaiile de
consultare sau cerere de date (query), pe de alt parte, sunt deseori realizate de utilizatori
care fie nu tiu de la nceput ce caut, fie i exprim cerinele ntr-un mod foarte complicat.
Din aceast cauz, limbajele de manipulare a datelor sunt uneori numite limbaje de cereri
(query languages).
n cele ce urmeaz vom prezenta, prin intermediul unor exemple, trei abordri ale
limbajului de cereri n modelul relaional:
Algebra relaional.
Calculul pe tupluri.
Calculul pe domenii.
Aceste trei limbaje s-au dovedit a fi echivalente, n sensul c orice cerere ce poate fi
exprimat n unul din limbaje poate fi exprimat i n celelalte dou. Diferena const n
facilitatea scrierii cererii respective.
6.2.1 Algebra Relaional
Algebra Relaional furnizeaz instrumente pentru exprimarea procedural a cererilor
de date. Const dintr-o colecie de operaii pe relaii, fiecare operaie avnd drept operanzi
una sau mai multe relaii i producnd ca rezultat o alt relaie.
E.F. Codd a introdus Algebra Relaional Standard, constituit din:
5 operaii de baz:
o Reuniunea
o Diferena
o Produsul cartezian
o Proiecia
o Selecia
3 operaii derivate:
o Jonciunea
o Intersecia
o Diviziunea.
Ulterior, la Algebra Relaional Standard au fost adugate i alte operaii, aa-numitele
operaii adiionale sau extensii ale Algebrei Relaionale Standard, cum ar fi:
o Complementara
o Splitarea
o nchiderea tranzitiv.

n cele ce urmeaz presupunem c relaia R are gradul r iar S are gradul s.


Reuniunea. Pentru dou relaii R i S se poate nota: R US, UNION(R,S), ADD(R,S).
Reuniunea relaiilor R i S este mulimea tuplurilor care se gsesc n cel puin una din
relaiile R sau S. Aceast operaie se poate aplica numai n cazul n care R i S au
aceeai schem. Dac atributele au nume se cere ca, n plus, cele dou liste de
nume s coincid i rezultatul va avea aceeai list de nume pentru atribute.
39

Diferena. Pentru dou relaii R i S se poate nota: R-S, MINUS(R,S), REMOVE(R,S).


Diferena relaiilor R i S este mulimea tuplurilor din R care nu sunt n S. Este
necesar s fie ndeplinite aceleai condiii ca pentru reuniune.
Produsul cartezian. Pentru dou relaii R i S se poate nota: RS, PRODUCT(R,S),
TIMES(R,S). Produsul cartezian al relaiilor R i S este mulimea tuplurilor cu r+s
componente, n care primele r componente reprezint un tuplu n R iar ultimele s
componente reprezint un tuplu n S. Dac atributele au nume, lista numelor
atributelor din rezultat este reuniunea disjunct a celor dou liste (folosind calificri
sau redenumiri pentru atributele cu aceleai nume n cele dou relaii).
Proiecia. Fie relaia R de grad r. Proiecia relaiei R dup atributele c 1, c2,, ck (k<=r) se
noteaz c1, c2,, ck(R), PROJECT(R; c1, c2,, ck) i este mulimea tuplurilor de aritate
k n care se pstreaz doar valorile corespunztoare atributelor menionate explicit n
proiecie. Dac relaia R are asociate nume pentru atribute, acestea se pot pstra n
relaia rezultat. Se observ c acesast operaie corespunde unor tieturi verticale
n R.
Selecia. Fie F o formul logic format din operanzi care sunt constante sau nume de
componente n tupluri i operatori aritmetici i/sau logici. Selecia relaiei R n raport
cu formula F se noteaz F(R), SELECT(R; F) i reprezint mulimea tuplurilor din R
pentru care formula F devine adevrat. Relaia rezultat are pentru atribute aceleai
nume ca i relaia R. Toate constantele care apar n F sunt incluse ntre apostrofuri.

Operaiile derivate se pot exprima n funcie de operaiile de baz. Utilizarea acestora


permite o exprimare mai simpl a cererilor i, dac sunt bine implementate, obinerea unui
rspuns mai rapid.

Jonciunea. Este numit i uniune sau join. O -uniune a relaiilor R i S dup


coloanele i i j, unde este un operator de comparaie este notat UNION(R,S; ij),
JOIN(R,S; ij) sau R Xij S este constituit din mulimea tuplurilor produsului cartezian
dintre R i S, pentru care a i-a component a lui R se afl n relaia cu a j-a
component a lui S. Dac R i S au nume pentru atribute, n loc de i i j se pot folosi
numele atributelor corespunztoare. Jonciunea este o operaie derivat deoarece se
poate exprima cu ajutorul operaiilor de baz prin formula: R X ij S= i(r+j) (RS).
Dac este operatorul =, operaia se numete echiuniune sau echijoin.
Un caz particular de jonciune este jonciunea natural. Uniunea natural a relaiilor
R i S, notat R X S, se aplic dac cele dou relaii au nume asociate atributelor i,
n acest caz, se selecteaz din produsul cartezian al relaiilor R i S acele tupluri ce
conin valori comune pentru cmpurile cu aceleai nume din cele dou relaii i apoi
se elimin valorile din cmpurile lui S comune cu cele din R.
Intersecia. Intersecia relaiilor R i S, notat R S, INTERSECT(R,S), AND(R,S), este
constituit din mulimea tuplurilor care se gsesc n ambele relaii. Se aplic n
condiiile specificate la reuniune. Intersecia se poate exprima prin operaiile de baz
cu formula: RS=R-(R-S).
Diviziunea. Fie relaiile R de aritate r i S de aritate s, cu r >s i S. Diviziunea sau
ctul lui R prin S, notat RS, este mulimea tuplurilor a de aritate r-s astfel nct,
pentru orice tuplu b al lui S, tuplul ab este n R. Dac atributele celor dou relaii au
nume, atunci lista atributelor lui S trebuie s fie o submulime a listei atributelor lui R
iar rezultatul are ca list de atribute diferena celor dou liste. Ctul se poate exprima
prin operaiile de baz cu formula: RS= 1, 2,, r-s(R)- 1, 2,, r-s(1, 2,, r-s(R)S)-R).

Exemplul 1. Fie relaiile R i S, cu schemele i extensiile prezentate mai jos:


R

S
A
a
d
c

B
b
a
b

C
c
f
d

D
b
d

E
g
a

F
a
f

n acest caz, rezultatele


aplicrii operatorilor: reuniune, diferen, produs cartezian,

40

proiecie, selecie i intersecie asupra relaiilor R i S (cu precizrile indicate pentru proiecie
i selecie) sunt:
RUS
a
d
c
b

b
a
b
g

c
f
d
a

b
b
a
a
b
b

c
c
f
f
d
d

b
b

c
d

R-S
a
c

b
b

c
d

RS

A,C(R),
a
a
d
d
c
c

b
d
b
d
b
d

B=b (R),
a
c

g
a
g
a
g
a

a
d
c

a
f
a
f
a
f

RS
d

Exemplul 2. Fie relaiile R i S, cu schemele i extensiile

urmtoare:
R

S
A
a
a
b
e
e
a

B
b
b
c
d
d
b

C
c
e
e
c
e
d

E
c
e

D
d
f
f
d
f
e

F
d
f

n acest caz, ctul lui R prin S este:


RS

RS

a
e

b
d

Exemplul 3. Fie relaiile R i S, cu schemele i extensiile de mai jos:


R

S
A
1
4
7

B
2
5
8

C
3
6
9

c
f
d

D
3
6

E
1
2

n acest caz, jonciunea lui R cu S cu B<D este:


R XB<D S

41

RS

A
1
1
4

B
2
2
5

C
3
3
6

D
3
6
6

E
1
2
2

Exemplul 4. Fie relaiile R i S, cu schemele i extensiile actuale:


R

S
A
a
d
b
c

B
b
b
b
a

B
b
b
a

C
c
c
f
d

C
c
c
d

n acest caz, jonciunea natural a lui R cu S este:


R XS

RS

A
a
a
d
d
c

B
b
b
b
b
a

C
c
c
c
c
d

D
d
e
d
e
b

Exemplul 5. Fie urmtoarea schem:


Relaia ANGAJATI
Nume cmp
Marca
Nume
Prenume
Initiala_tatalui

Tip
Numr
Text 20
Text 20
Text 1

Cheie
Da

42

D
d
e
b

Data_angajarii
Relaia CHITANTE
Nume cmp
Numar_chitanta
Data
Total
Avans
Numar_cont
Credit_card
Tip_card
Marca

Dat
Tip
Numr
Dat
Numr
Numr
Text 9
Numr
Text 2
Numr

Cheie
Da

S se scrie o cerere prin care s se obin un tabel cu urmtoarele date:


Numar_chitanta, Data, Total, Marca, Nume, Prenume
pentru toate chitanele exprimnd pli salariale efectuate nainte de luna martie 2005.
n cazul acestei cereri, sunt necesari operatorii: Selecie, Proiecie i Jonciune. Cererea
formulat se poate exprima, n limbajul algebrei relaionale, prin secvena:
LIST JOIN(CHITANTE, ANGAJATI )
SELECT(Date&<3/1/05)
PROJECT(Numar_chitanta, Data, Total_chitanta, Marca, Nume, Prenume)

Materiale privind Algebra Relaional:


1. www.cs.rochester.edu/users/faculty/nelson/courses/csc_173/relations/algebra.html
2. www.cs.sfu.ca/CC/354/zaiane/material/notes/Chapter3/node7.html
3. http://cs.wwc.edu/~aabyan/415/RelAlg.html

43

6.2.2 SQL
Unul dintre cele mai puternice limbaje structurate pentru interogarea bazelor de date
relaionale l constituie SQL (Structured Query Language). Pe lng manipularea i regsirea
datelor, limbajul permite efectuarea de operaii complexe privind actualizarea i administrarea
bazelor de date.
SQL este un limbaj neprocedural sau declarativ, deoarece utilizatorul lui descrie
numai informaiile pe care vrea s le obin n urma interogrii, fr a fi nevoie s stabileasc
modalitile de a ajunge la rezultatele dorite. n acelai timp, SQL nu poate fi considerat un
limbaj de programare sau unul de sistem ci, mai curnd, face parte din categoria limbajelor de
aplicaii, fiind orientat pe mulimi. Foarte frecvent, limbajul SQL este utilizat n administrarea
bazelor de date client/server, aplicaia client fiind aceea care genereaz instruciunile SQL.
Exist un anumit grad de standardizare a limbajului SQL, mai multe sisteme de
gestiune a bazelor de date recunoscnd principalele instruciuni ale acestuia (de exemplu:
Oracle, Access, Sybase etc.). Pe plan mondial, standardul n domeniu este considerat ANSI
(American National Standards Institute) SQL care are n vedere att aspectele de definire,
interogare, manipulare a datelor, procesare a tranzaciilor, ct i caracteristicile complexe
privind integritatea informaiilor. Muli productori de sisteme de gestiune a bazelor de date
furnizeaz propriile extensii ale limbajului SQL, asigurndu-i astfel exclusivitatea.
Se cunosc n literatura de specialitate trei metode de baz privind implementarea
limbajului SQL i anume:
cea prin apelare direct (Direct Invocation) - const n introducerea instruciunilor
SQL de la prompter;
cea modular (Modul Language) - folosete anumite proceduri apelate de programele
aplicaiei;
cea de tip ncapsulat (Embedded SQL) - are n vedere instruciunile ncapsulate n
codul de program, fiind de tip static i dinamic.
n cazul exemplului 5 considerat mai sus, cererea SQL are forma:
SELECT
Numar_chitanta, Data, Total_chitanta, CHITANTE.Marca, Nume, Prenume
FROM
CHITANTE, ANGAJATI
WHERE
Date&<3/1/05 AND CHITANTE.Marca# ="ANGAJATI.Marca#"
n Access, cererea SQL are forma:

6.2.3 Calculul Relaional orientat pe tupluri


O expresie de calcul pe tupluri este, n esen, o definiie non-procedural a unei
relaii, n termenii unei mulimi de relaii date. O astfel de expresie este constituit din variabile
tuplu, condiii i formule bine formate.
n cazul exemplului 5:
Cererea n QUEL, limbajul de cereri al SGBD INGRES, are forma:
range of c is CHITANTE range of a is ANGAJATI
retrieve
(c.Numar_chitanta, c.Data, c.Total, c.Marca, a.Nume, a.Prenume)

44

where
c.Data < 3/1/05 and c.Marca=a.Marca
Cererea n Access are forma:

6.2.4 Calculul Relaional orientat pe domenii


Calculul pe domenii difer de calculul pe tupluri prin aceea c variabilele sunt, n
acest caz, comenii i nu relaii. i aici, o expresie de calcul orientat pe domenii este alctuit
din variabile domeniu, condiii i formule bine formate.
n cazul exemplului 5, cererea n Borland Paradox are forma:
CHITANTE
Numar_chitanta

ANGAJATI
Marca
Nume

pers

Data
=3/1/0
5
Prenume

Total

Avans

Numar_cont

Initiala_tatalui

Credit_card

Data_angajarii

Materiale privind limbajele pentru baze de date:


1.
2.
3.
4.

www.freewebmasterhelp.com/tutorials/phpmysql/1
Tutorial PHP i MySQL
www.w3schools.com/sql/default.asp
Tutorial SQL
www.w3schools.com/sql/default.asp
Tutorial XML
[Nas00]
Limbajul Visual Basic pentru Access 2000

45

Tip_card

Marca
per
s

7. Restriciile de integritate ale modelului relaional


Integritatea bazelor de date este dat, n principiu, de corectitudinea informaiilor
coninute n acestea i presupune detectarea, corectarea i prevenirea diferitelor erori
neintenionate privind informaiile introduse n bazele de date.
Restriciile de integritate (RI), denumite i reguli de integritate, definesc cerinele pe
care trebuie s le satisfac datele din cadrul bazei de date relaionale pentru a putea fi
considerate corecte i coerente n raport cu sistemul real pe care l reflect.
n bazele de date relaionale, relaiile sunt toate la acelai nivel iar setul de operatori
este relativ restrns, neputnd exprima semantica operaional a obiectelor complexe. Acest
aspect ramne n sarcina programatorilor de aplicaie. Totui, sistemele relaionale dein o
serie de mecanisme pentru tratatrea aspectelor de ordin semantic.
Restriciile de integritate ale modelului relaional sunt de dou tipuri:

RI structurale, care se definesc prinegalitatea sau inegalitatea unor valori din cadrul
relaiilor. Din aceast cattegorie fac parte:
o Restriiile de unicitate a cheii
o Restricia referenial
o Restricia entitii
o Dependena ntre date.

RI de comportament, proprii unei anumite baze de date relaionale, ce in cont de


semnificaia valorilor din cadrul bazei respective. Se pot defini RI de comportament foarte
diverse: temporale, de domeniu, etc. De exemplu, faptul c vrsta unei persoane trebuie
s se plaseze ntre anumite limite constituie o restricie de domeniu.

Utilizarea modelului relaional nu impune definirea i verificarea tuturor acestor tipuri de


restricii. Din acest punct de vedere, putem considera c exist:
RI minimale obligatoriu de definit i de respectat. Din aceast categorie fac parte
restricia de integritate a cheii, restricia referenial, restricia entitii.
Alte RI categorie din care fac parte dependenele ntre date, restriciile de
comportament.

7.1 Restricii de integritate minimale


Cheia unei relaii R reprezint un ansamblu minimal de atribute prin care se poate
identifica n mod unic orice tuplu din R. Orice relaie posed cel puin o cheie. La limit, cheia
este constituit fie dintr-un singur atribut, fie din totalitatea atributelor din schema relaiei
respective.
Cnd cheia este constiituit dintr-un singur atribut ea poart numele de cheie simpl
iar cnd este format din mai multe atribute este denumit cheie compus.
Exemplu. n relaia R1 atributul A este cheie, n timp ce n relaia R2 cheia trebuie format din
atributele A i B:
R1:
R2:
A
B
a1
a2
a3
a4

b1
b3
b2
b3

46

A
a1
a1
a2
a3

B
b1
b2
b3
b2

ntr-o relaie pot exista mai multe combinaii de atribute cu proprietatea de identificare
unic a tuplurilor. Se spune n acest caz caz c relaia posed mai multe chei candidate. n
aceast situaie, administratorul bazei va alege dintre cheile candidate una care s serveasc
efectiv la identificarea tuplurilor i care se va numi cheie primar. Restul cheilor candidate se
vor numi chei alternate.
Cheia unei relaii trebuie sa fie minimal, n sensul c nici o parte a sa nu trebuie s
posede proprietatea de identificare unic a tuplurilor relaie.
O cheie extern reprezint un atribut sau un grup de atribute dintr-o relaie R1 ale
crui/cror valori sunt deinite pe acelai/aceleai domeniu/domenii ca i cheia primar a unei
alte relaii R2 i care are rolul de a modela asocierea ntre entitile reprezentate prin relaiile
R1 i R2. n acest context, R1 este numit relaie care refer, n timp ce R2 poart numele de
relaie referit.
Exemplu. n relaia ANGAJATI atributul Marca este cheie primar, n timp ce atributul
Cod_departament este cheie extern, servind la modelarea asocierii ntre angajai i
departamente. n relaia DEPARTAMENTE, cheia Departament este cheie primar.
ANGAJATI:
Marc Nume
a
11
N1
22
N2
33
N3
44
N4
55
N5
66
N6
77
N7

DEPARTAMENTE:
Cod_departamen
t
1
2
1
3
3
2
1

Departamen
t
1
2
3

Denumire
Tehnic
Personal
Administrativ

Modelul relaional prezint urmtoarele restricii de integritate minimale:


Restricia de unicitate a cheii. Reprezint restricia care impune ca ntr-o relaie R cu
cheia K, oricare ar fi tuplurile t1 io t2 s fie satisfcut inegalitatea t1(K) t2(K).

Restricia referenial (integritatea referirii). Reprezint restricia care impune ca ntr-o


relaie R1 care refer o relaie R2, valorile cheii externe s figureze printre valorile
cheii primare din relaia R2 sau s fie valori null (nedefinite). R1 i R2 nu trebuie s
fie neaprat distincte. Semnificaia restriciei de integritate a referirii este urmtoarea:
o asociere nu poate exista dect ntre parteneri cunoscui, adic deja definii. Atunci
cnd, ntr-o anumit situaie, asocierea nu este aplicabil, unul dintre parteneri va fi
desemnat prin valoarea null, cu semnificaia de partener inexistent. Exemplul
anterior respect restricia de integritate a referirii.

Restricia entitii (integritatea entitii). Reprezint restricia care impune ca ntr-o


relaie atributele cheii primare s fie nenule. Unicitatea cheii impune ca, la ncrcarea
unui tuplu, valoarea cheii s fie cunoscut, pentru a se putea verifica faptul c
aceast valoare nu este deja ncrcat. Cu valori de null, cheia i pierde rolul de
identificator de tuplu.

47

Restricia de integritatea a entitii nu se aplic cheilor externe, ceea ce confer o anumit


suplee modelului relaional. Uneori, se consider drept restricii de integritate minimale numai
ultimele dou, restricia de unicitate a cheii fiind considerat implicit.

7.2 Alte restricii de integritate


n aceast categorie intr constrngerile de domeniu. Aceste constrngeri se pot
referi la tipul de date al unui atribut, la o list de valori posibile, la un ordin de mrime, la un
format sau o form, la o condiie exprimat cu o formul logic sau la o procedur care este
apelat ori de cte ori are loc o modificare pentru domeniul specificat.
Exemple. Pentru relaia CUMPARATORI (Cod, Nume, Adresa, Debit) se poate impune
condiia ca nici un cumprtor s nu aib mai mult de 100.000.000 lei datorii. Pentru relaia
MAGAZINE (Numemag, Adresamag, Codmarfa, Marfa, Pret) se poate impune ca noile preuri
s nu creasc cu mai mult de 20% faa de preurile vechi.

7.3 Aspecte privind integritatea


De integritatea datelor este legat i protecia datelor mpotriva diferitelor evenimente
de avarie cum ar fi: cderea sistemului, cauzat de defectarea unor componente hardware
sau software, executarea incomplet a unor programe din cauza apariiei unor erori sau din
necesitatea de ntrerupere a lor n urma unor interblocri sau prin intervenia utilizatorilor,
programarea eronat a unor activiti prin strategiile folosite de sistem i altele.
Pentru reconstituirea bazelor de date n eventualitatea apariiei unor inconsistene n
general, majoritatea bazelor de date se copiaz periodic pe medii magnetice ce se pstreaz
n locuri sigure. De asemenea, se ine o eviden a tuturor transformrilor efectuate n baza
de date de cnd s-a efectuat ultima copie. Fiierul care conine aceste modificri se numete
jurnal. Fiecare nregistrare din jurnal conine un identificator al programului care a fcut
modificarea, fosta valoare i noua valoare introdus pentru un element. Tot n jurnal se mai
pstreaz diferite momente importante din desfurarea programelor (nceput, sfrit,
terminarea unor operaii).
Se spune despre o tranzacie c este comis dac au fost terminate toate calculele
produse de ea n aria de lucru i s-a realizat o copie a rezultatelor ei n jurnal. Apariia unor
cderi dup ce o tranzacie a fost comis nu afecteaz coninutul bazei de date, deoarece
acestea se pot reconstitui cu ajutorul ultimei copii i a jurnalului n care se gsesc toate
rezultatele tranzaciilor comise. Modificrile tranzaciilor abandonate sau necomise nu sunt
luate n considerare la parcurgerea jurnalului pentru restaurarea bazei de date.
Se definete strategia de comitere n dou faze astfel: o tranzacie poate s scrie
ntr-o baz de date numai dup ce a fost comis i o tranzacie poate fi comis numai dup
ce a nregistrat n jurnal toate schimbrile de elemente produse de ea.

Materiale privind dependenele datelor, integritatea i securitatea


bazelor de date:
1. [Fel96]
Despre dependene ntre date
Despre securitatea sistemelor informaionale, n general
2. www.boran.com/security/IT1x-4.html
3. www.computerworld.ro/index.cfm?t=articol&idcwd=2647
4. www.pcmagazine.ro/pcmag4-8/internet_business.shtml

48

8. Depozite de date (Data warehouse)


Depozitele de date au devenit, la sfritul anilor ' 90, una dintre cele mai importante
dezvoltri n domeniul sistemelor informaionale. Industria de data warehouse s-a dezvoltat
continuu n termeni de investiii, produse disponibile i proiecte elaborate. Se apreciaz c
aproximativ 90% dintre companiile multinaionale au implementate depozite de date sau
lucreaz la dezvoltarea unor astfel de proiecte.
Depozitele de date sunt produsul mediului economic i al tehnologiilor avansate. Pe
de o parte, mediule conomic este tot mai competitiv, global i complex i solicit informaii
elaborate pentru sprijinirea deciziilor strategice iar, pe de alt parte, evoluia tehnologiilor
informaionale ofer soluii eficiente de gestionare a unor volume mari de date integrate (de
ordinul Tera bytes) asigurnd niveluri de sintez / detaliere adecvate. Astfel, evoluiile
hardware performante precum i sistemele de procesri paralele masive, sistemele de
multiprocesare simetric, sistemele tip baze de date paralele fac posibile ncrcarea,
ntreinerea i accesul la baze de date de dimensiuni uriae. Aplicaiile data warehouse sunt
n msur s asigure i un timp mediu de rspuns extrem de scurt pentru categorii extinse de
utilizatori.
Primele domenii care au adoptat tehnologia depozitelor de date au fost
telecomunicaiile, bncile i comerul cu amnuntul. Ulterior, depozitele de date au ptruns i
n alte domenii cum ar fi industria farmaceutic, sistemul sanitar, asigurrile, transporturile.
Studiile statistice arat c telecomunicaiile i sistemul bancar se menin n top ntruct aloc
cel puin 15% din bugetul lor IT pentru proiecte referitoare la depozite de date.
Un proiect de data warehouse reprezint o investiie major. Costurile tipice pentru
dezvoltarea unui depozit de date ntr-un interval de 3-6 luni se situeaz ntre 0,8 i 2 milioane
USD. Ponderea echipamentelor se situeaz ntre 1/2 i 2/3 din costul total. Uneori, investiiile
n depozite de date nu se finalizeaz cu succes (politici organizaionale defectuoase,
insuficiente fonduri sau insuficient susinere din partea conducerii.

8.1. Concepte de baz n data warehouse


Depozitele de date au fost definite n foarte multe moduri, astfel nct o definiie
riguroas este greu de formulat.
n sens larg, un depozit de date (data warehouse) reprezint un sistem de baze de
date:
ce acoper un orizont temporal mai mare (fundamental este perspectiva pe termen lung);
ce conine date interne i externe;
optimizat pentru a rspunde interogrilor complexe.
Datele din sistemele surs sunt extrase, curate, transformate i stocate n depozite
speciale n scopul sprijinirii proceselor decizionale, furniznd o platform solid de
consolidare a datelor istorice pentru analiz.
Caracteristicile majore ale depozitelor de date sunt urmtoarele:

Orientarea pe subiecte. Un depozit de date este organizat n sensul unor subiecte


majore cum ar fi: clieni, furnizori, producie, vnzri. Mai curnd dect a concentra
procesarea operaiilor i tranzaciilor tipice ntr-o organizaie, un depozit de date se
focalizeaz pe modelarea i analiza datelor pentru luarea deciziilor. Se ofer o viziune simpl
i concis relativ la un subiect particular, excluznd datele care nu sunt utile n procesul de
decizie.

Integrarea. Un depozit de date este, n mod uzual, construit prin integrarea a


multiple surse eterogene: baze de date relaionale, fiiere, nregistrri privind tranzacii online.
Tehnicile de curare (data cleaning) i de integrare sunt aplicate pentru a asigura
concordana n conveniile de atribuire a numelor, de codificare a structurilor i atribuire a
valorilor.

Caracterul istoric. Datele sunt stocate pentru a furniza informaii n perspectiv


istoric (de la 5 pn la 10 ani n urm). Astfel, decidenii pot consulta valorile succesive ale
acelorai date, pentru a determina evoluia n timp i a calcula tendinele anumitor indicatori.

Persistena datelor. Datele dintr-un depozit sunt permanente i nu pot fi modificate.


O actualizare a depozitului de date, ca urmare a modificrilor efectuate n datele surs,

49

nseamn adugare de date noi, fr a modifica sau terge datele existente. Un depozit de
date este ntotdeauna memorat separat, din punct de vedere fizic, de datele transformate din
alte aplicaii. Datorit acestei separri, un depozit de date nu necesit mecanisme de
procesare a concurenei. n mod uzual, solicit numai dou operaiuni: ncrcarea iniial a
datelor i accesul la date.
Sintagma data warehousing desemneaz procesul de construire i utilizare a
depozitelor de date (data warehouse). Construirea necesit integrarea, curarea i
consolidarea datelor. Utilizarea necesit o colecie de tehnologii de asistare a deciziilor.
Acestea permit specialitilor (manageri, analiti, executivi) s obin rapid i convenabil datele
necesare i s ia decizii bazate pe informaiile din depozit.

8.2. Diferene nte bazele de date i depozitele de date


Att bazele de date ct i depozitele de date conin mari cantiti de date structurate
care pot fi accesate rapid datorit structurilor de acces optimizate i se bazeaz, n
majoritatea cazurilor, pe tehnologii relaioanle. Totui ele nu au fost proiectate pornind de la
aceleai obiective i se difereniaz prin numeroase aspecte.
Sistemele de gestiune ale bazelor de adte sunt adecavte aplicaiilor curente de
gestiune i servesc la crearea i ntreinerea sistemelor de date operaionale. Aceste sisteme
sunt cunoscute sub denumirea de sisteme OLTP (OnLine Transaction Processing) i au ca
obiectiv execuia online a tranzaciilor i proceselor de interogare. Ele ncorporeaz toate
operaiile zilnice dintr-o organizaie, cum ar fi: aprovizionri, stocuri, producie, decontri, pli,
contabilitate.
Sistemele depozite de date, pe de alt parte, servesc specialitii n domeniul analizei
datelor i lurii deciziilor i sunt cunoscute sub numele de sisteme OLAP (OnLine Analytical
Processing).
Deosebirile majore ntre OLTP i OLAP sunt sintetizate n tabelul urmtor i iau n
considerare urmtoarele trsturi: utilizatorii i orientarea sistemului, caracterul datelor
coninute, nivelul de sintez, unitatea de lucru, schemele de acces, numrul de nregistrri
accesate, mrimea bazelor de adte, sistemul de evaluare.
Nr.
Crt.
1
2
3

Trsturi
Destinaia
Orientarea sistemului
Utilizatori

OLTP
Procese operaionale
Tranzacii
Funcionari, administratori
BD, profesioniti n BD
Operaii zilnice

Funcii

Instrumente folosite n
proiectare
Caracterul datelor

Diagrame E-A

Primitive, detaliere ridicat


Scurt, tranzacii simple
Read, Write
Culegere date
Zeci

12
13
14

Nivelul de sintez
Unitatea de lucru
Scheme de acces
Focalizare
Numr de nregistrri
accesate
Numr de utilizatori
Mrimea bazelor de date
Prioriti

15

Sistem de evaluare

6
7
8
9
10
11

Curente, noutate garantat

Mii
100 MB - GB
Performane ridicate,
disponibilitatea ridicat
Tranzacii culese

50

OLAP
Procese informaionale
Analize
Cerine informaionale pe
termen lung, asistarea
deciziei
Star / snowflake
Istorice, precizie
meninut n timp
Sintetizare, consolidare
Interogri complexe
Aproape totdeauna Read
Furnizare informaii
Milioane
Sute
100 Gb - TB
Flexibilitate ridicat,
autonomie utilizatori finali
Interogri culese, timp de
rspuns

Un sistem OLTP este orientat pe client (customer oriented) i este utilizat pentru
procesarea tranzaciilor i a interogrilor. Un sistem OLAP este orientat spre pia (market
oriented) i este utilizat de manageri, analiti i specialiti.
Exist i conceptul de magazine de date (Operational Data Stores ODS), care se
refer la o colecie de date proiectate pentru sprijinirea controlului operaional. La prim
avedere nu par deosebite de depozitele de date, dar dei ambele tehnologii sprijin
decidenii sunt diferite deoarece au scopul de a acoperi anumite tipuri de cerine
informaionale. Magazinele de date conin date orientate pe subiecte din ntreprinderile mari
i, spre deosebire de depozitele de date, conin date volatile i detaliate.

8.3. Arhitectura depozitelor de date


Arhitectura simplificat a unui depozit de date este prezentat n figura urmtoare.

Baze de date
operaionale

Achiziie
(extragere)

Instrumente
pentru
Accesare
i
Utilizare

DEPOZIT DE DATE
(DATE AGREGATE
+
METADATE)

TERGERE
ARHIVARE
AGREGARE

Prelucrare
(data mining)
n depozitul de date ntlnim mai multe tipuri de date care corespund diferitelor
cerine informaionale ale utilizatorilor:
Date detaliate
Date uor agregate
Date puternic agregate
Metadate.
Metadatele descriu datele coninute n depozitul de date i modul n care ele sunt
obinute i stocate. Prin metadate se precizez structura datelor, proveniena lor, regulile de
transformare, de agregare i de calcul. Metadatele joac un rol esenial n alimentarea
depozitului cu date. Ele sunt utilizate n toate etapele de ncrcare adatelor i sunt consultate
i actualizate pe parcursul ntregului ciclu de via ale depozitului.
Agregarea datelor se refer la realizarea de: totaluri precalculate, subtotaluri, valori
medii, etc., ce se preconizeaz c vor fi cerute i folosite de ctre utilizatori. Aceste agregri,
dei determin o cretere a redundanei datelor, sunt necesare deoarece n acest fel se poate
asigura un timp de rspuns ct mai redus. Sunt stocate n depozitul de date mpreun cu
datele importante din surse interne i externe.
Data Mining reprezint un proces de prelucrare bazat pe modele performante de
selectare i agregare a datelor din depozitele de date. Cele dou scopuri principale ale
procesului de data mining sunt, din punct de vedere practic:
Predicia implic utilizarea unor cmputi sau variabile din baza de date, n
scopul estimrii unor valori viitoare sau necunoscute, pentru alte variabile de
interes i
51

Descrierea se orienteaz ctre gsirea unor modele ce descriu datele,


interpretabile din perspectiva utilizatorului.

Procesul, numit i Knowledge Data Discovery (KDD), este realizat prin intermediul
urmtoarelor sarcini:
Clasificarea este vorba de o funcie care mapeaz (clasific) un element de dat n
una sau mai multe clase predefinite.
Regresia o funcie asociaz un element de dat unei variabile cu rol de predicie.
Partiionarea (clustering) este o funcie descriptiv prin care se urmrete
identificarea unui numr (finit) de categorii sau mulimi care descriu datele. Strns
legat de aceast funcie este funcia de estimare a densitilor de probabilitate ale
variabilelor aleatoare constituite de cmpurile de date.
Sumarizarea implic metode pentru gsirea unei descrieri compacte a unei
submulimi de date.
Modelarea dependenelor const din gsirea unor modele care descriu n mod
compact diferite dependene ntre subseturi de date. Modelele de dependen exist
la dou nivele: structural (ce variabile sunt dependente unele de altele) i cantitativ
(specific msuri ale acestor dependene utiliznd o scar numeric).
Detectarea schimbrilor i deviaiilor se focalizeaz pe descoperirea celor mai
semnificative schimbri ale datelor, utiliznd valori anterior msurate.
Cele mai populare metode de data-mining utilizeaz:
o Reguli i arbori de decizie
o Regresie neliniar i metode de clasificare
o Metode bazate pe exemple
o Modele Probabilistice de dependen
o Modele de nvare relaional
Exist dou metode de data mining:
Data mining direct, care presupune:
o O abordare top-down
o S tim (cu aproximaie) ce cutm sau ce vrem s prezicem
o Un model predictiv, care s permit evaluarea alternativelor
o Modelul este vzut ca o cutie neagr, cci ne intereseaz numai predicia i nu
cum se realizaez aceasta
o Scopul construirii unui model predictiv este de a aplica cunotinele dobndite n
trecut, pentru viitor.
o Exemplu: S se gseasc rspunsul la ntrebarea: Ce clieni se presupune c
vor cumpra un anumit tip de main?
Data mining indirect, care presupune:
o O abordare bottom-up
o S gsim modele n coleciile de date i s lsm utilizatorii s determine dac
acestea sunt sau nu importante
o Vrem s tim cum lucreaz un model i cum ofer rspunsul
o Este necesar interaciunea uman pentru c numai oamenii pot determina ce
semnificaie (dac exist una) au modelele
o Este utilizat deseori n procesul de explorare a datelor
Literatura de specialitate face referire la trei soluii practice de organizare a
depozitelor de date:
Depozit la nivelul ntreprinderii - Enterprise Warehouse. Colecteaz toate
informaiile despre subiecte care privesc ntreaga organizaie i furnizeaz un volum
extins de date.
Depozite la nivelul unei uniti de gestiune (filial, departament, serviciu), cunoscute
sub numele de data marts. Un data mart conine un subset al volumului de date din
organizaie, specific unui grup de utilizatori. Domeniul este limitat la subiecte
specifice. De exemplu, un data mart pentru marketing limiteaz subiectele la clieni,

52

articole, vnzri. Datele implementate n data mart sunt, de obicei, agregate. Un data
mart poate fi considerat un subansamblu al unui depozit de date, mai uor de
construit i mai puin scump.
Depozite virtuale Virtual Warehouse. Un depozit virtual este un set de viziuni
asupra bazelor de date operaionale. Este uor de construit dar necesit capaciti
suplimentare pe serverele de baze de date.

Din punct de vedere al modelelor de date specifice data warehouse, cele mai
populare sunt:

Reprezentarea stea (Star Schema). Este cel mai comun model de date, n
care depozitul conine un tabel central voluminos (tabel de fapte) care cuprinde cea mai mare
parte a datelor fr redundane i un set de tabele nsoitoare (tabele-dimensiune) pentru
fiecare dimensiune. Graful asociat seamn cu o stea n care tabelele-dimensiune apar radial,
n jurul tabelului de fapte central, ca n figura urmtoare.
Timp
Tabel-dimensiune 1

Cheie-timp
Zi
Zi-din-sptmn
Lun
Trimestru
An

Articol
Tabel-dimensiune 3

Cheie-articol
Nume-articol
Marca
Tip
Tip-furnizor

Ramur

Vnzri
Tabel de fapte
Cheie-timp
Cheie-articol
Cheie-ramur
Cheie-zon
Vnzri-lei
Cantitate-vndut

Tabel-dimensiune 2

Zon
Tabel-dimensiune 4

Cheie-zon
Strad
Localitate
Jude
Cod-potal
ara

Cheie-ramur
Nume-ramur
Tip-ramur
n acest exemplu, vnzrile sunt considerate cu patru dimensiuni: timp, articol, ramur i
zon.
Schema fulg de zpad (Snowflake). Este o variant a modelului stea, unde
anumite tabele sunt normalizate, astfel nct apar tabele suplimentare. Rezult o schem de o
form grafic similar unui fulg de zpad. Diferena major ntre stea i fulg de zpad este
c tabelele dimensiune din acest ultim model pot fi pstrate n form normalizat, ceea ce
determin o redundan redus. Asemenea tabele sunt uor de ntreinut i se economisete

53

spaiu de stocare, deoarece dimensiunile unui tabel mare pot crete foarte mult. Un exemplu
este schema anterioar, unde tabelele-dimensiune 3 i 4 se modific astfel:
Articol
Tabel-dimensiune 3

Cheie-articol
Nume-articol
Marca
Tip
Cheie-furnizor

Zon
Tabel-dimensiune 4

Cheie-zon
Stard
Cheie-ora

Furnizor
Tabel-dimensiune 3-1

Cheie-furnizor
Tip-furnizor

Ora
Tabel-dimensiune 4-1

Cheie-ora
Ora
Jude
Regiune

Constelaie de fapte aplicaiile complexe pot solicita tabele multiple de fapte, care
partajeaz tabelele-dimensiune. Acest gen de schem poate fi vzut ca o colecie de stele, de
unde denumirea de constelaie de fapte (fact constellation).
Cnd se justific un proiect de data warehouse? Exist mai multe situaii n care
un depozit de date este oportun pentru rezolvarea unor probleme:
Insuficienta partajare a informaiilor (de exemplu, cnd servicii sau departamente cu
aceiai clieni nu comunic ntre ele).
Grupuri diferite produc rapoarte contradictorii (datorit folosirii inconsistente a unor
termeni).
Procesul de creare a rapoartelor este foarte anevoios (necesit mult timp pentru a fi
produse i nu rmne timp pentru analiza efectiv a datelor).
Rapoartele nu sunt dinamice i nu favorizeaz stilul de interogare ad-hoc (nu se pot
obine rapoarte concludente n situaii speciale).
Rapoartele care necesit date istorice sunt dificil de realizat (astfel de date nu sunt
stocate n sistemele operaionale, iar ncorporarea datelor vechi n rapoarte poate fi
dificil din cauza nepotrivirii structurilor).
Majoritatea firmelor productoare de software pentru baze de date s-au orientat ctre
implementarea unui modul specific depozitelor de date. n topul preferinelor se afl: SQL
Analysis Manager produs de Microsoft Corporation i Oracle Warehouse Builder produs de
Oracle. Aceste dou instrumente beneficiaz de experiena i puterea finaciar a companiilor
productoare i au reuit s se impun pe pia ca soluii viabile. Industria depozitelor de date
este ns n continu expansiune.
Instrumentele data-mining vor continua s se maturizeze i din ce n ce mai multe
organizaii vor adopta acest gen de tehnologie. Iniiativele data mining provin cel ami adesea
din zona departamentelor de marketing i de vnzri cu amnuntul i se preteaz foarte bine
n organizaiile care dein baze de date cu volume foarte mari. Datorit faptului c aceste
instrumente dau cele mai bune rezultate cu date la un nivel ridicat de detaliere, evoluia
instrumentelor data mining va coincide de fapt cu dezvoltarea depozitelor de date cu
dimensiuni de ordinul TB. Proiectele de data mining vor accentua i ami mult importana
calitii datelor din depozitele de date.
Tehnologiile data warehouse continu s fie influenate de poularitatea soluiilor
bazate pe Intranet i Internet. Ca urmare, din ce n ce mai multe instrumente de acces la date
vor putea suporta facilitile oferite de web. Unele organizaii au nceput deja s foloseasc
infrastructura Internetului pentru a oferi utilizatorilor posibilitatea de a utiliza depozitul de adte
de la distan, ns n acest caz este trebuie avut n vedere problema securitii acestui
mediu.

54

Exemplul 1. NAWQA Water Quality Data Warehouse este un depozit unde se colecteaz
date despre calitile chimice, biologice i fizice ale apei din 42 de bazine din SUA. Se
msoar zilnic: concentraiile n ap, sedimente i esuturi organice pentru aproximativ 600
de constitueni chimici. De asemenea, se pstreaz date privind nivelul apelor n aceste
bazine hidrografice.
Exemplul 2. Departamentul SUA pentru Sntate i Servicii Umane a dezvoltat depozitul de
date geospaiale HRSA (Health Resources and Services Administration). Acest depozit i
aplicaiile sale asociate furnizeaz informaii despre programele HRSA, resurse despre
sntate i date demografice foarte utile pentru planificare i domeniului politic. Acest depozit
conine date despre granturi, burse i mprumuturi, destinate serviciilor subsumate, precum i
programe demonstrative. Fiind sursa central de informaii utilizat pentru raportrile
activitilor HRSA, ofer un instrument de raportare pentru generarea i utilizarea tabelelor.
Un instrument de tip hart este disponibil pentru cei ce vor s plaseze date ntr-un context
geografic. Datele depozitului sunt actualizate cu regularitate i se adug noi surse de
informaii.
n
continuare
este
prezentat
seciune
de
arii
ale
site-ului
(http://datawarehouse.hrsa.gov/).
What's New
Data Refresh Dates
Program Information

Data Dictionary
Spatial Metadata
Data Access
PCSA
Help Resources
Technical Support
Map Tool Help
Report Tool Help
Grant Activity Listing
List of Data Sources
Resources

Grants Information
Health Systems
Interactive Maps
Map Tool
Reporting
Report Tool
Metadata
Data Sources

Materiale privind depozitele de date i data mining:


1. www.dwinfocenter.org
The Datawarehousing Information Center: acest site este o colecie de eseuri ale
practicienilor depozitelor de date. Prezint definiii, argumente pro i contra dezvoltrii
depozitelor de date, evaluri ale unor instrumente software pentru depozite de date, informaii
despre afaceri inteligente, politici pentru decizie i ale domeniului depozitelor de date.
2. datawarehouse.ittoolbox.com
Instrumente pentru lucrul cu depozite de date.
3. freedatawarehouse.com
Concepte i elemente practice.
4. www.infogoal.com/dmc/dmcdwh.htm
Informaii despre: Data Warehouse, Data Mart, Data Mining, Decision Support
Resources.
5. www.datawarehousingonline.com
Resurse, tehnologii i soluii.
6. http://dbvis.inf-uni-konstanz.de/~keim/PDF/Vis04Tutorial.pdf
Articolul Information Visualization and Visual Data Mining, autori: Grinstein G.,
Keim D.A., Ward M., 2004. Prezint istoria domeniilor vizualizare de date i data mining,
tehnici i sisteme de vizualizare, exemple de aplicabilitate n chimie.

55

7. www.nag.co.uk
The Numerical algorithms Group Ltd, Oxford. Ofer componente i tehnologii data
mining i vizualizare, pentru mai mult de 10000 de organizaii din ntreaga lume. Software i
servicii de dezvoltare de aplicaii (n bio-informatic, e-business, detecia fraudelor, analiz
web).

56

9. Baze de cunotine
Bazele de cunotine sunt ntlnite n literatura de specialitate sub diferite denumiri
cum ar fi: baze de date logice, baze de date infereniale, sisteme expert, sisteme deductive,
prelucrare recurent, baze de date inteligente. Prin aceste sisteme se ncearc o ct mai
apropiat funcionare a bazelor de date de sistemul obinuit de operare cu date.
Astfel, n aceste sisteme diferitele tupluri ale relaiilor sunt interpretate ca axiome iar
cererile sunt interpretate ca teoreme, rspunsul la cerere fiind interpretat ca o demonstraie.
Aceast interpretare permite:
uniformitate de reprezentare - bazele de date, axiomele, cererile i constrngerile de
identitate sunt reprezentate toate la fel;
uniformitate de operare rspunsul la cereri optimizaea cererilor, proiectarea bazelor
de date, demonstrarea corectitudinii programelor sunt privite la fel;
modelare semantic prin evenimente, tipuri de ierarhii i combinaii de entiti;
aplicaii extinse.
Bazele de cunotine permit interpretarea unor cereri formulate n limbaj natural.
Printre altele, conin copii ale unor tabele din catalogul bazei de date, tabele ce conin valorile
datelor utilizate frecvent, o mulime de reguli de transformare a frazelor (unele permind
substituirea automat a unor sub-expresii) i un lexicon coninnd un tabel care definete
cuvinte din limba natural ce pot fi utilizate n cereri sau cuvinte generale.
Baza de cunotine este iniiat prin construirea lexiconului i a altor pri
componente i se completeaz n timp cu noi cunotine sau elemente, de ctre utilizatori sau
automat, pe baza informaiilor obinute n exploatare.
n bazele de cunotine sunt aplicate rezultatele din calculul propoziiilor i calculul
predicatelor. Pe baza transformrilor logice se urmrete demonstrarea unor aseriuni innd
seama de axiomele logicii matematice i de informaiile coninute n sistem.
Prin axiom deductiv sau regul de inferen se nelege o regul care permite
deducerea unor fapte plecnd de la o mulime de fapte date. Pentru a demonstra o aseriune
de forma:
f1, f2, ,fn g
unde f1, f2, ,fn sunt premisele iar g este concluzia, de obicei se folosete metoda reducerii la
absurd, demostrnd c formula:
f1 & f2 & & fn & not g
este fals. Pentru aceasta se transform formula precedent ntr-o formul echivalent
normal conjunctiv, de forma:
u1 & u2 & & um
n care fiecare ui, i=1,,m este o disjuncie de atomi, eventual precedai de negaie. Se
deriveaz n continuare ali termeni, aplicnd legea rezoluiei n forma:
((f g) & (not g h) (f h)
Dac printre termenii derivai apare mulimea vid (neleas ca fals i notat []) atunci
aseriunea iniial este adevrat, altfel (cnd nu mai pot fi generai ali termeni) aseriunea
este considerat fals.
Exemplu. Pentru a demonstra aseriunea:
A (B C), NOT D OR A, B D C
Unde A, B, C i D sunt formule, se pleac de la formulele:
A (B C)
NOT D OR A
B
NOT(D C)
care, aduse la forma normal conjunctiv, conduc la:
(1) NOT A OR NOT B OR C
(2) NOT D OR A
(3) B
(4) D
(5) NOT C
Aplicnd rezoluia pentru formulele (1) i (2) n raport cu A se obine
(6) NOT D OR NOT B OR C
Aplicnd din nou rezoluia pentru formulele (6) i (3) n raport cu B se obine

(7) NOT D OR C
Aplicnd din nou rezoluia pentru formulele (7) i (4) n raport cu D se obine
(8) C
i din (8) i (5) unde rezoluia se aplic n raport cu C se obine clauza vid, ceea ce
demonstreaz c aseriunea iniial este adevrat.
Cererile pentru baza de cunotine pot fi exprimate sub urmtoarea form general:
A1 AND A2 AND AND Am B1 OR B2 OR OR Bn (*)
unde A1, A2, , Am i B1, B2, , Bn sunt de forma r(x1, x2, ,xt) cu r predicat avnd
argumentele x1, x2, ,xt.
Dac toate argumentele sunt constante, predicatul reprezint o axiom de baz i
este o propoziie adevrat. n termenii bazelor de date, (x 1, x2, ,xt) este unul din tuplurile
existente n baza de date. n acest sens, predicatul r afirm ceva n concordan cu nelesul
pe care l are relaia R.
Pentru m>0 i n=1, (*) devine clauza:
A1 AND A2 AND AND Am B
care poate fi privit ca o axiom deductiv. Aceast axiom deductiv d o definiie parial
a predicatului din partea dreapt a implicaiei, n funcie de predicatele din partea stng.
Poate fi privit i ca o constrngere de integritate.
Vederile unei baze de date pot fi privite ca modele teoretice. n aceste modele,
domeniile de baz conin valori sau constante ce pot s descrie anumite obiecte ale lumii
reale, acestea formnd contextul (ce poate fi privit ca un univers). Relaiile de baz
reprezint o mulime de predicate sau formule deschise (cu variabile) ce urmeaz s fie
interpretate n acel context. Fiecare tuplu al unei relaii reprezint o particularizare a
predicatului corespunztor (adic o formul nchis, fr variabile) care are valoarea adevrat
pentru universul respectiv. Constrngerile (restriciile) de integritate sunt tot formule nchise,
interpretabile n contextul respectiv. Prin urmare, tuplurile i constrngerile de integritate pot fi
privite ca formnd mulimea axiomelor ce definesc o anumit teorie logic. Baza de date
poate fi privit ca mulimea tuturor teoremelor ce se pot demonstra pornind de la axiome.
Evaluarea cererilor se face analog cu demonstrarea teoremelor.
Ca axiome ale unei baze de date pot fi considerate urmtoarele:
1. Axiomele de baz corespund tuplurilor relaiilor de baz, ele definind aa-numita
baz de date extins (extensional database).
2. Cte o axiom de completitudine pentru fiecare relaie, prin care se afirm c nu
exist alte tupluri dect cele care apar efectiv n relaia respectiv. Aceasta se mai
numete presupunerea de nchidere (Closed World Assumption), prin care se
consider false aseriunile pentru tuplurile ce nu apar n relaie.
3. Axioma numelui unic prin care se afirm c fiecare constant se distinge de toate
celelalte constante (are nume unic).
4. Axioma nchiderii domeniului prin care se afirm c nu exist alte constante n
afar de cele existente n domeniul bazei de date.
5. O mulime de axiome standard, prin care se definete predicatul =.
Un sistem deductiv de baze de date este un SGBD care permite construirea
vederilor cu demonstrare teoretic i care este capabil, n particular, s deduc fapte
suplimentare din baza de date existent aplicnd axiome deductive sau reguli de inferen.
Axiomele deductive mpreun cu constrngerile de integritate formeaz ceea ce se numete
coninutul intern al bazei de date (intensional database) i aceasta, mpreun cu extinderea
bazei de date (care conine informaiile) formeaz baza de date deductiv (deductive
database).

Materiale privind bazele de cunotine:


1. [Fel96]
2. http://www.kddresearch.org/Groups/Data-Mining/
Despre descoperirea cunotinelor i Data Mining, la Departmentul de Calculatoare i
tiinele Informaiei, Kansas State University, Laboratorul Knowledge Discovery in
DataBases
3. http://www.kmining.com

Despre inteligen n afaceri, Knowledge Discovery i Data Mining

10. Aplicaii Access


Acest capitol conine patru aplicaii Access comentate, n scopul prezentrii celor mai
utile informaii privind realizarea bazelor de date relaionale.

10.1. Baz de date pentru activiti colare


S presupunem c, ntr-un ora, activitile facultative ale elevilor se desfoar
ntr-un sediu special organizat, dup un orar care se stabilete la nceputul fiecrui an colar.
Se dorete crearea unei baze de date pentru gestionarea informaiilor relative la aceast
activitate: elevi, profesori, orar. Pentru simplificarea aplicaiei, vom considera c dou cursuri
cu acelai obiect (de exemplu, dou cursuri de pictur) susinute la momente temporare
distincte (de acelai profesor sau de profesori diferii) sunt de fapt cursuri distincte, motiv
pentru care cursurile vor fi identificate printr-un cod.
Analiza problemei conduce la identificarea imediat a entitilor: ELEVI, CURSURI,
PROFESORI. Cunoscnd elementele ce trebuie memorate pentru fiecare entitate n parte i
constatnd relaiile ntre entiti, construim modelul conceptual al bazei de date, care se
poate reprezenta astfel:
ELEVI
nr matricol
nume si prenume
clasa

scoala
URMEAZ

SUSIN

CURSURI
cod curs
denumire curs
ziua
ora inceperii
evenimente

PROFESORI
cod profesor
specializarea
norma de baza
Cu specificaia anterioar relativ la cursuri, observm c relaia dintre entitile
PROFESORI i CURSURI este de tip 1-n ("unu la mai muli") (un profesor poate susine mai
multe cursuri dar un curs este realizat de un singur profesor), n timp ce relaia ntre entitile
ELEVI i PROFESORI este de tip m-n ("mai muli la mai muli"). ntr-adevr, un elev poate
urma mai multe cursuri iar un curs are, desigur, mai muli elevi. Acest tip de relaie se
transform, pentru a putea fi modelat logic, n dou relaii de tip 1-n. Vom realiza aceasta
prin introducerea unei entiti suplimentare, numit REPARTIII, care va permite i notarea
fiecrui elev, la sfritul anului colar, la toate cursurile la care acesta particip. Ideea acestei
modelri este de a surprinde interaciunea elev curs i elementele ei specifice. Fiecare elev
(identificat prin numrul su matricol, stocat n nr matricol) urmeaz un curs (identificat printrun cod pstrat n cod curs) i primete o not (stocat n cmpul apreciere). Astfel, modelul
logic (relaional) al datelor este reprezentat de urmtoarea colecie de tabele:

ELEVI (nr matricol, nume i prenume, clasa, coala)


CURSURI (cod curs, denumire curs, ziua, ora nceperii, evenimente)
PROFESORI (cod profesor, specializarea, norma de baz, cod curs)
REPARTIIE (cod, nr matricol, cod curs, apreciere).

n reprezentarea de mai sus, atributele subliniate cu linie continu caracterizeaz n


mod unic realizrile de entitate (un numr matricol este specific unui elev i numai unuia,

aceeai proprietate este valabil pentru codul unui profesor, fiecare curs are un cod unic iar
fiecare linie a tabelului repartiie este identificat printr-un numr, pstrat n cmpul cod). Un
atribut cu aceast proprietate (de identificare a realizrilor unei entiti) se numete cheie
primar. De exemplu, atributul cod curs realizeaz diferenierea a dou cursuri (n baza
noastr de date, dou cursuri cu aceeai denumire Pictur sunt susinute de profesori
diferii, n zile diferite din sptmn; este evident c nu ar putea fi identificate prin denumire).
Cmpurile subliniate cu linie punctat au un rol de legtur, i anume, modeleaz
relaiile ntre entitile identificate n faza de analiz. Aceste cmpuri se numesc chei
secundare sau externe (cod curs pentru tabela profesori, nr matricol i cod curs pentru
tabela repartiie). n timp ce cheile primare au valori unice, cheile secundare pot avea valori
duplicate (se va observa, studiind baza de date oferit ca exemplu, c numrul matricol 101
apare n trei linii ale tabelei repartiie, iar cursul cu codul 3 n patru linii).
Vom studia n continuare procedeele prin care transpunem acest model ntr-o baz de
date Access i cum putem folosi aceast baz de date.
n fereastra Microsoft Access optm pentru crearea unei baze de date goale (Blank
Access database) i tastm OK. Apare caseta File New Database, n care introducem numele
dorit (n cazul nostru, instruire). n zona de lucru a aplicaiei apare fereastra Database,
aceasta fiind fereastra principal a noii baze de date, prin intermediul creia putem accesa
toate obiectele ei. Se observ c n zona din stnga ferestrei obiectele sunt grupate pe tipuri
(tablouri, cereri, etc.), iar n zona din dreapta se regsesc instrumente de lucru i obiectele de
tipul curent. Astfel, n imaginea de mai jos nu figureaz tabele (acestea vor fi primele obiecte
create), dar se pot observa instrumentele prin intermediul crora putem accesa diferitele
modaliti de creare a tabelelor. Se observ c eticheta fiecrui grup de obiecte este
precedat de o imagine semnificativ. Imediat sub bara de titlu a ferestrei se pot observa
butoane de manevr a obiectelor de tipul curent (de exemplu, pentru tabele, Open, Design,
New i Delete permit deschiderea n mod tabel, deschiderea n mod proiectare, crearea unui
tabel nou i respectiv tergerea unui tabel) i butoanele pentru diferite afiri ale
pictogramelor obiectelor (Large Icons, Small, List i Detail).

Crearea tabelelor

Prin realizarea unui dublu clic pe opiunea Create table in design view se deschide
fereastra Table, n cadrul creia se definesc:
numele cmpului (Field Name), ce poate fi format din mai multe cuvinte, trebuie s fie
sugestiv (s sugereze coninutul cmpului pe care l numete). De exemplu, "nr
matricol" este numele cmpului care va conine numrul matricol al unui elev.
tipul cmpului (Data Type). Un tip de dat definete att mulimea valorilor pe care le
poate lua data respectiv, ct i tipul operaiilor ce se pot aplica asupra ei. Un clic pe
sgeata derulant deschide lista opiunilor (Text, Memo, Number, Date/Time, etc.).
descrierea (Description), acest element fiind opional (o descriere a cmpului
respectiv, de exemplu pentru "nr matricol" s-a precizat c reprezint un cod intern,
necesar identificrii elevilor n cadrul activitii de instruire suplimentar).

Crearea relaiilor ntre tabele


Exist dou tipuri de relaii ntre tabelele unei baze de date:
relaii permanente, ce se stabilesc dup definirea tabelelor. Aceste relaii fac parte din
structura bazei de date (deci se memoreaz n ea) i se realizeaz prin
corespondenele chei primare chei secundare.
relaii temporare, ce se stabilesc ntre tabele atunci cnd se realizeaz anumite
interogri; acestea nu se pstreaz n baz.
Am observat deja care este tipul relaiilor ntre tabelele PROFESORI i CURSURI (1n), iar relaia de tip m-n ntre tabelele ELEVI i CURSURI a fost descompus n dou relaii
de tip 1-n, cu ajutorul tabelei REPARTIIE: Relaia ELEVI REPARTIIE este de tip 1-n (un
elev particip la mai multe cursuri i va primi o not pentru fiecare) i la fel este relaia
CURSURI REPARTIIE (un curs se regsete n tabela REPARTIIE de un numr de ori
egal cu numrul elevilor care-l urmeaz). n afara acestor tipuri de relaii, n Access se mai
pot modela relaiile de tip 1-1 ("unu la unu"), de exemplu ntre persoane i mulimea codurilor
numerice personale.
Un clic pe butonul Relationships:
de pe bara de instrumente Database deschide
fereastra Relationships i caseta Show Table, de unde utilizatorul aduce n fereastr tabelele
bazei de date (dup care o nchide). O relaie ntre dou tabele se realizeaz prin punctarea
cheii principale a tabelei ce constituie partea stng a relaiei) i tragere pn la cheia
secundar (extern) a tabelei ce constituie partea dreapt a relaiei. Aceast manevr
deschide fereastra de dialog Editare Relaii:

Se observ n aceast fereastr (n cazul de fa, pentru editarea relaiei ELEVI


REPARTIIE) cele dou tabele relaionate, cheile primar i secundar. Bifarea proprietii
Enforce Referential Integrity) activeaz un mecanism al sistemului de gestiune Access, prin
care nu este permis introducerea datelor n tabele REPARTIIE, naintea celor din tabela
ELEVI. Cu alte cuvinte, un elev cu numrul matricol 300 nu poate figura n tabela
REPARTIIE, nainte de a fi fost introdus n ELEVI. Aceast ordine de introducere este
natural, nu putem repartiza elevii la cursuri nainte de a-i "nscrie". Situaia se prezint la fel
i n cazul relaiei CURSURI REPARTIIE: trebuie s memorm mai nti datele despre un
curs i apoi s repartizm elevi la acest curs. Se observ c acest mecanism este unul de
pstrare a integritii refereniale a bazei (dup cum indic i numele proprietii), astfel este
prevenit introducerea greit a datelor i sunt eliminate multe incoerene.
Iat fereastra Relaii pentru baza de date instruire:

Introducerea datelor n tabele


Se poate realiza n mai multe moduri, dar pentru nceput putem realiza urmtorii pai:
n fereastra Database selectm fiierul dorit, activm butonul Open i n fereastra care apare
(gen foaie de date, ca n Excel) introducem datele. De fapt, aceast modalitate permite i
vizualizarea i modificarea datelor, la orice moment n exploatarea bazei de date. n fereastra
de mai jos se pot observa: articolul curent, indicat prin sgeata neagr i n bara de stare,
butoanele de deplasare printre liniile tabelului (un articol naintea celui curent: , articolul
urmtor:
, primul articol:
, ultimul articol:
, articolul gol:
, care apare totdeauna
marcat cu *) i cursorul de defilare, pentru cazul n care sunt multe cmpuri i este necesar

deplasarea stnga-dreapta (evident, ar aprea i un cursor vertical dac fereastra nu ar


conine dect o parte din liniile tabelului).

Formulare
n cadrul aplicaiei noastre, este creat un formular cu numele CURSURI, pentru
introducerea datelor n alt form dect cea tabelar. Avantajul este o interfa deosebit,
care permite posibilitatea afirii unor indicaii pentru cel care introduce datele (aceast
activitate fiind semnificativ, n cazul bazelor de date mari).

Antet

Zon
de
detaliu

Subsol

n acest formular, se observ trei zone:


antetul;
zona de detaliu care conine numele cmpurilor i datele;
subsolul.
Att antetul ct i subsolul nu se modific pe msur ce introducem sau editm nregistrri,
coninnd, de regul, informaii explicative cu privire la scopul formularului i la datele pe care
acesta le prezint.

Crearea formularului CURSURI


Efectum clic pe Formulare n fereastra Baz de date i selectm opiunea Creare
formular utiliznd Expertul. n continuare se selecteaz tabela cursuri i acionm butonul
OK:

Urmeaz acum selectarea cmpurilor pe care le dorim n formular. Pentru selectarea tuturor
cmpurilor (situaia cea mai comun), realizm clic pe butonul

La pasul urmtor se selecteaz modul de aezare a datelor n formular. Posibilitile


sunt: Columnar (datele unei nregistrri sunt prezentate pe coloane), Tabular ( cmpurile sunt
ordonate ca n figura de mai jos i n formular apar mai multe linii din tabel), Datasheet (ca n
Excel), Justified (o aezare a cmpurilor unei nregistrri ntre marginile formularului)
PivotTable (vizualizarea datelor detaliate sau rezumate prin aranjarea cmpurilor n filtru,

rnd, coloan i arii detaliu) i PivotChart (afiarea date vizual prin selectarea unui tip de
diagram i aranjarea cmpurilor n filtru, serie, categorie i arii date). Un formular PivotTable
efectueaz calculele alese, ca sume (implicit pentru cmpurile numerice) i numrri (implicit
pentru cmpuri text), bazat pe modul n care sunt aranjate datele. De exemplu, un formular
PivotTable poate afia valorile unui cmp orizontal sau vertical i apoi calculeaz totalul
rndului sau coloanei. De asemenea, un formular PivotTable poate folosi valorile unui cmp
drept titluri de rnd sau de coloane, calculnd cantitile individuale la intersecia titlului
fiecrui rnd cu fiecare coloan, iar apoi calculnd subtotaluri i totaluri generale. De
exemplu, pentru a analiza produsele vndute de fiecare angajat: se pot lista numele
angajailor ca titlurile coloanelor n partea superioar a formularului PivotTable, produsele ca
titlurile rndurilor n partea de jos a formularului PivotTable, iar suma vnzrilor calculat dup
produse pentru fiecare angajat la intersecia fiecrui rnd cu fiecare coloan. Formularul
PivotChart permite reprezentarea grafic a datelor, folosind tipurile oferite de Excel: coloan,
bar, structur inelar, radial, etc.

n urmtoarea fereastr se selecteaz stilul formularului (stilul implic un fundal, un tip de font
pentru date, culori, aezare etc.):

Ultimul pas se refer la alegerea unui nume pentru formular i dialogul se ncheie cu
clic pe Finish.

Un alt formular (cu numele elevi) este proiectat asemntor; la activarea sa (de
exemplu, cu dublu clic) va afia, n forma proiectat, coninutul curent al tabelei ELEVI. Iat
cum se reflect corecia efectuat n cmpul coala, pentru elevul cu numrul matricol 303
(schimbarea valorii cmpului din 26 n 28):

Vom observa n continuare cum arat acest formular n mod proiectare (aceast vedere se
poate obine selectnd formularul n fereastra Database i apoi realiznd clic pe butonul
Proiect):

Fiecare component a formularului (Antet, Detaliere, Subsol) are proprieti care se pot seta
prin deschiderea meniului contextual aferent (clic dreapta pe
opiunii Proprieti, care deschide meniul prezentat n continuare).

i selectarea

Cu ajutorul instrumentelor barei Toolbox, care se afieaz automat n mod proiectare,


formularului i se pot aduga elemente grafice, numite controale:

Acestea au funcii numeroase i complexe, dar eticheta este controlul cel mai simplu
de utilizat. Etichetele afieaz textul indicat astfel au fost create antetul i subsolul
formularului cursuri.
S realizm un subsol i pentru formularul elevi. Pentru aceasta, urmm etapele de
mai jos:
modificm zona Subsol Formular, plasnd cursorul pe linia inferioar, pn cnd
devine de forma:
apoi tragem pn mrim zona dup dorin;

acionm butonul Label (al treilea de pe bara de mai sus) i ducem cursorul n zona
creat. Forma cursorului se schimb, devenind un simbol A precedat de o cruce.
Punctul unde plasm mijlocul crucii devine colul din stnga sus al zonei destinate
etichetei;
micm cursorul spre dreapta i n jos, pn obinem dimensiunea dorit a etichetei
i eliberm butonul mouse-ului;
n interiorul zonei etichetei editm textul dorit i, dac dorim, putem modifica
proprietile etichetei (culoare de fond, mrimea caracterelor etc.) selectnd din
meniul rapid (obinut cu clic dreapta) eticheta Proprieti, ca n imaginea urmtoare:

Aici, pentru eticheta adugat n formular s-a modificat culoarea de fundal.


Interogarea bazei de date
Scopul principal al unei baze de date este acela de a furniza utilizatorilor ei
informaiile de care acetia au nevoie. Interogarea bazei (n englez, termenul "query"
desemneaz interogarea, cererea, chestionarea) nseamn adresarea unei solicitri de
informaie, pe care sistemul de gestiune a bazei de date trebuie s o rezolve i s returneze
utilizatorului rspunsul dorit. n Access, interogrile pot fi:
simple pot fi formulate pentru o singur tabel i se realizeaz:
prin vizualizarea datelor coninute n tabele (de exemplu, dorim s vedem oferta
de cursuri suplimentare i studiem tabelul CURSURI);
prin vizualizarea (parial sau integral) a coninutului tabelelor, cu ajutorul
formularelor sau rapoartelor (de exemplu, dorim s cunoatem care sunt elevii
din clasele a 8-a, participani la cursuri suplimentare);
complexe comport n general mai multe tabele i/sau cereri, ale cror date sunt
extrase prin precizarea unor criterii.
Ca n orice soft complex, aa cum este i SGBD-ul Access, o anumit sarcin se poate
rezolva n mai multe moduri. i pentru realizarea cererilor de interogare exist mai multe
modaliti, dar vom prezenta n continuare proiectarea n modul Vizualizare Proiect.

n fereastra Database, clic pe Interogri i apoi pe Creare interogare n modul


Vizualizare proiect;
pe ecran apar fereastra Interogare de selectare i caseta de dialog Afiare Tabel:
o din caseta Afiare Tabel se selecteaz tabelele i/sau cererile din care dorim s
extragem date, dup care nchidem caseta;
o fereastra Interogare de selectare are dou zone: cea superioar, n care vedem
tabelele i/sau cererile selectate, mpreun cu legturile dintre ele i cea
inferioar, numit gril de proiectare sau gril QBE (Query By Example cerere
prin exemplificare), n care se va proiecta efectiv cererea.

Cmpurile din structura unei cereri sunt de dou feluri:


Preluate. Trecerea unui cmp din tabel/cerere n linia Cmp a grilei QBE se face prin
tragere de mouse. Trecerea tuturor cmpurilor n gril se realizeaz fie cu dublu clic
n bara de titlu a listei de cmpuri, clic n lista de cmpuri (pe oricare din ele) i apoi
deplasarea n grila de proiectare, fie prin deplasarea caracterului * (aflat n capul listei
de cmpuri) n gril. Aceast ultim modalitate permite definirea ulterioar a unor
criterii de selecie sau de sortare.
Calculate. Pentru crearea unui cmp calculat, se selecteaz coloana n care dorim s
apar valoarea calculat i din meniul View se alege opiunea Totals, care va
introduce n grila QBE linia Total; se selecteaz (n celula aflat la intersecia liniei
Total cu coloana aleas) Expresie din lista derulant i n prima linie (Cmp) se
introduce formula de calcul. De exemplu, pentru a calcula un punctaj egal cu de zece
ori nota obinut la curs, formula va fi urmtoarea:
punctaj:[apreciere]*10

Iat i rezultatul execuiei cererii (se execut prin dublu clic pe pictograma sa), aa
cum a fost proiectat pn n momentul de fa:

Sortarea datelor
Ordonarea datelor ntr-o cerere se poate realiza cresctor sau descresctor, dup
mai multe cmpuri numite chei de sortare. Se realizeaz clic n celula din gril aflat la
intersecia coloanei cmpului de sortare cu linia Sort i se alege ntre Ascending (cresctor) i
Descending (descresctor). Iat grila QBE a unei cereri de interogare prin care se
vizualizeaz elevii nscrii la cursurile facultative, n ordinea claselor. n cadrul unei clase,
elevii apar n ordine alfabetic. Prima cheie este de tip numeric iar a doua de tip text.

Rezultatul execuiei cererii este urmtorul:

Se observ c ordinea cmpurilor de sortare (n cazul n care sunt mai multe)


influeneaz rezultatul obinut.
Selecia datelor
Pentru a selecta dintre date pe acelea care ne intereseaz la un moment dat se
utilizeaz criterii de selecie. Acestea pot fi:

Simple. Se plaseaz la intersecia coloanei cmpului pentru care formulm criteriul cu


linia Criterii din grila QBE. Principalele criterii simple sunt:
o apartenena la un interval de valori se formuleaz cu ajutorul cuvntului
rezervat BETWEEN. De exemplu, dac ne intereseaz elevii cu note ntre 7 i 9
criteriul pentru cmpul apreciere va fi: BETWEEN 7 AND 9;
o apartenena la o list de valori este de forma: IN (valoare1, valoare2, ). Dac
dorim s vedem datele elevilor din clasele 5, 7 i 8, criteriul pentru cmpul clasa
va fi: IN (5, 7, 8);
o utilizarea operatorilor de comparaie: <,>,<=,>=,= i <>(diferit). Dac dorim s
selectm elevii cu punctaj mai mare sau cel puin egal cu 80, criteriul pentru
cmpul punctaj va fi: >=80;
o utilizarea negaiei se realizeaz cu ajutorul operatorului NOT. Dac ne
intereseaz toi elevii care nu nva la coala 19, atunci criteriul pentru cmpul
coala va fi NOT "19, Al.I.Cuza" (valoarea negat apare ntre ghilimele deoarece
cmpul este de tip text);
o dup o dat relativ la data curent se realizeaz cu ajutorul funciei DATE( ).

Compuse. Se constituie din criterii simple, legate ntre ele prin operatorii logici AND
(conjuncia) i OR (disjuncia). n acest sens, grila QBE utilizeaz mai multe linii
Criterii, iar regulile pentru construcia criteriilor compuse sunt urmtoarele:
o criteriile simple aflate pe aceeai linie Criterii sunt implicit conectate prin AND
(deci vor fi satisfcute simultan);
o dac selecia valorilor unui cmp se face dup mai multe criterii simple conectate
prin OR, acestea se vor specifica pe aceeai linie. Exemplu:

dac selecia se face dup mai multe criterii simple aplicate unor cmpuri diferite,
criteriile fiind conectate prin OR, acestea se vor specifica pe linii diferite.
Exemplu:

Operaii predefinite
Access permite realizarea unor operaii de calcul predefinite, care se pot realiza
asupra unui ntreg tabel sau asupra unui grup de nregistrri. Sunt disponibile urmtoarele
operaii predefinite:
SUM calculeaz suma valorilor unui cmp;
MEDIE calculeaz media aritmetic a valorilor unui cmp;
MIN returneaz valoarea minim;
MAX returneaz valoarea maxim;
CONTOR numr valorile dintr-un cmp;
STDEV (de la Standard deviation) calculeaz abaterea medie ptratic sau
variana valorilor unui cmp (reprezint o msur a abaterii valorilor de la media lor);
VAR variana statistic a valorilor luate de un anumit cmp;
PRIM - ntoarce prima valoare din cmp;

ULTIM ntoarce ultima valoare din cmp.


Pentru realizarea unei operaii de acest gen asupra tuturor nregistrrilor tabelei se
realizeaz urmtorii pai (vom exemplifica pentru a calcula media notelor elevilor):
se creeaz o cerere care conine doar cmpurile asupra crora vor aciona operaiile
de calcul;
se acioneaz View, Totals, efectul fiind introducerea n grila QBE a liniei TOTALS,
care va conine pentru toate cmpurile operaia Goup By n capul unei liste derulante;
se alege din lista derulant operaia dorit;
se execut cererea prin Query, Run i se observ rezultatul.
Iat cererea n mod proiectare i imaginea execuiei acesteia:

Pentru realizarea unei operaii predefinite asupra unui grup de nregistrri, cel puin un cmp
din cerere trebuie s conin operaia Group By, pentru a se preciza gruparea. Dac sunt
prezente mai multe criterii de grupare, ordinea de evaluare este de la stnga la dreapta. Iat
o cerere care determin mediile elevilor, grupai dup cele 4 cursuri. n grila de proiectare se
observ gruparea nregistrrilor dup cmpul cod curs:

Iat i rezultatul execuiei cererii, pe setul de date utilizat pn acum:

Se observ formatul general al cmpului AvgOfapreciere (afiarea tuturor zecimalelor


semnificative), iar pentru ultima valoare rotunjirea ultimei poziii.
Rapoarte
Rapoartele (Reports) sau situaiile finale constituie prezentri ale datelor pe suport de
hrtie. Aceste rapoarte au fost folosite totdeauna, constituindu-se n documente oficiale,
purttoare ale semnturilor persoanelor autorizate. Realizarea unui raport implic
prezentarea datelor dorite ntr-un format ct mai convenabil, conform cu necesitile de
informare (de exemplu pot conine totaluri, subtotaluri, grafice, diagrame). n general, datele
care apar n rapoarte sunt preluate din tabele sau din cereri. Mai ales dac datele provin din
mai multe tabele se prefer realizarea mai nti a unei cereri i apoi a raportului
corespunztor. n afar de datele propriu-zise, situaiile finale mai conin:
controale;
zone de text;
cadre (pentru imagini i grafice);
etichete (pentru realizarea unui format ct mai atrgtor).
Pentru a crea un raport putem folosi instrumente wizard sau proiectarea direct, dar o
metod convenabil este (ca i n cazul formularelor) mbinarea acestor dou faciliti, astfel:
n fereastra Database se activeaz Rapoarte, apoi Creare raport utiliznd Expertul;
se selecteaz numele tabelei sau cererii care furnizeaz datele raportului;
se trece n mod proiectare (cu clic pe Design View) i se modific raportul conform
dorinei proiectantului, adugndu-se text, controale, etc.
Spre exemplificare, s construim un raport care s prezinte situaia elevilor nscrii la
cursurile suplimentare n anul curent. Elevii s fie grupai pe coli i pentru fiecare s se
precizeze clasa i cursul pe care l frecventeaz.
Observm c datele cerute n raport se afl n trei tabele: ELEVI (numele, clasa, coala),
REPARTIIE (corespondena elev-curs) i CURSURI (denumirea cursului). Construim mai
nti o cerere care s adune aceste date. Iat structura sa, n mod proiectare:

Utiliznd metoda descris anterior, construim o situaie final cu ajutorul instrumentului


wizard, dup care o modificm astfel nct s se plaseze frumos pe o pagin A4, adugm un
titlu, un subsol i linii separatoare ntre grupurile de elevi aparinnd aceleiai coli. Forma
Vizualizare Proiect a raportului este urmtoarea:

Zona de nceput a situaiei imprimate corespunde imaginii de mai jos:

ultimele date sunt:

iar sfritul listei conine ziua, data i numrul paginii curente (din totalul de pagini).

Se observ c structura situaiei finale include: antetul general, antetul de pagin, antetul
de grup (n cazul de mai sus, cel referitor la coal), rndul de detaliu, subsolul de pagin i
subsolul de raport. Dup crearea unei situaii finale, rezultatul poate fi vizualizat (nainte de
imprimare), ceea ce permite verificarea datelor i a aspectului general al raportului.
Ca i n cazul celorlalte obiecte, cititorul care studiaz aplicaia Access va descoperi
numeroase posibiliti de a realiza un raport.

10.2. Baz de date pentru o activitate comercial


n cadrul acestei aplicaii vom simula activitatea comercial a unei firme. Vom descrie
furnizorii i produsele achiziionate de firm, personalul firmei, clienii si comenzile pe care
acetia le emit, precum i modul de transport al produselor ctre clieni. Vom presupune c
un produs, identificat prin codul su, Produs_id, este cumprat de la un singur furnizor, pentru
a putea relaiona tabelele Furnizori i Produse printr-o legtur de tip 1-n. Tot pentru
simplitate, vom considera c fiecare client emite cte o comand pentru fiecare produs, astfel
c tabelele Clieni i Comanda au o relaie 1-n, iar tabelele Comanda i Produs_comanda au
o relaie 1-1.
Aplicaia este constituit din 8 tabele, avnd urmtoarele cmpuri:
1. Ageni (Agent_id, Nume_agent, Prenume_agent, Funcie, Nscut, Angajat, Adres, Ora,
JudeT, Cod_potal, Tel_acas, notes)
2. Categorie (Categorie_id, Categorie_nume, Descriere)
3. Clieni (Client_id, Denumire_client, Persoana_contact, Funcie_contact, Adresa, Ora,
Jude, Cod_potal, Telefon, Max_comanda, Min_comanda, Discount)
4. Comanda (Comanda_id, Client_id, Transportator_id, Numr_comand, Data_comand,
Client_nume, Client_adresa, Client_ora, Client_cod_potal, Discount,
Data_livrrii, notes, Agent_id)
5. Furnizori (Furnizor_id, Denumire_furnizor, Persoana_contact, Funcie_contact, Adresa,
Ora, Jude, Cos_postal, Telefon)
6. Produs_comanda (Comand_id, Produs_id, Pret_unitar, Cantitate)
7. Produse (Produs_id, Furnizor_id, Categorie_id, Nume_produs, Unitate_msur,
Pre_unitar)
8. Transportatori (Transportator_id, Denumire_transportator).
Acest model logic al aplicaiei evideniaz att cheile primare (subliniate cu linie
continu), ct i cheile externe (subliniate cu linie punctat).
Crearea tabelelor se poate realiza n trei moduri:
utiliznd fereastra de proiectare (Creare tabel n modul Vizualizare proiect). Este
modalitatea recomandat, pe care o vom explica n continuare.
utiliznd instrumentul Wizard (Creare tabel utiliznd Expertul). Se creeaz tabele prin
alegerea unor cmpuri standard.
prin introducerea datelor (Creare tabel prin introducere date). Aceast modalitate nu
poate fi aplicat aplicaiilor complexe, dar este util n cazul aplicaiilor foarte simple, n
care avem nevoie de rapiditate n crearea tabelelor.
Dac selectm opiunea Creare tabel n modul Vizualizare proiect, se deschide o
fereastr n care se precizeaz structura tabelului: numele cmpurilor, tipul i proprietile
acestora.

Tipurile de baz din Access sunt urmtoarele:


Text. Un cmp de acest tip conine cel mult 255 caractere (implicit, lungimea este de
50). De tip text sunt definite cmpurile care conin nume de persoane, denumiri,
adrese etc.
Memo. Pot conine cel mult 64000 caractere (cu comentarii, explicaii). Cmpurile de
tip Text i Memo sunt numite alfanumerice (pot conine caractere i/sau numere). Iat
exemple de valori alfanumerice (le vom delimita cu " "): "Drago", "Mircea cel
Btrn", "Oel laminat OL 50", "X4532A", "345990".
Numr. Este tipul numeric, cu mai multe subtipuri disponibile, determinate de
dimensiunea cmpului:
o Octet valori ntregi, pozitive, reprezentate pe un octet;
o ntreg - valori ntregi, pozitive i negative, pe doi octei;
o ntreg lung valori ntregi, pozitive i negative, pe patru octei;
o Simpl precizie valori reale, cu cel mult 7 zecimale, pozitive i negative, pe
patru octei;
o Dubl precizie - valori reale, cu cel mult 15 zecimale, pozitive i negative, pe opt
octei;
o ID reproducere identificator global unic, pe 16 octei;
o Zecimal - valori ntregi, pozitive i negative, pe 16 octei.
Dat/Or. Este un tip special creat pentru date calendaristice sau de tip or, ntruct
aceste valori se ntlnesc adesea n documente, nregistrri. Permite, de asemenea,
diferite formate de afiare, de exemplu: Sunday, August 11, 2003 i 8/11/03 reprezint
data de 11 august 2003, duminic iar 5:00:00 PM i 17:00 reprezint ora 3 dup
amiaz.
Moned. Acest format fix, cu patru zecimale, permite lucrul cu valori monetare.
AutoNumerotare. Cmpurile de acest tip sunt completate n mod automat pentru
fiecare nregistrare adugat ntr-o tabel, fie cresctor, fie cu valori aleatoare
(ntmpltoare), dup cum alege utilizatorul.
Da/Nu. Conin de fapt valori logice, reprezentate prin 1 (pentru Yes, True adevrat)
i prin 0 (pentru No, False fals).
Observaie. Cmpurile de tip: Numr, AutoNumerotare, Da/Nu i Moned sunt
de tip numeric, deci conin numere reprezentnd: cantiti, coduri, sume de
bani, valori logice de adevr. Iat exemple de valori numerice: 23.90, 6785,
1. Vom vedea c o dat numeric poate fi afiat n formate diferite.
Obiect OLE. Reprezint obiecte mari, de tipul imaginilor, desenelor, fiierelor audio.
Hyperlink. Conine un text ce este o adres a unei pagini Web.
Expert cutare. Creeaz cmpuri care permit alegerea de valori din cadrul unor
structuri (tabele, liste), deci permit legarea informaiilor.
Iat fereastra de proiectare a tabelului Ageni:

Observm cheia primar Agent_id i proprietile cmpului Nume_agent. Dup


realizarea tuturor tabelelor, relaiile se construiesc astfel: se acioneaz butonul Relationships
de pe bara Database, n fereastra Afiare Tabel se includ toate tabelele deja create, prin
selectarea lor i apoi punctarea repetat a butonului Adugare:

Apoi se realizeaz fiecare relaie (asociere), prin glisare a mouse-ului de la tabelul


care conine cheia primar, ctre tabelul care conine cheia extern. La fiecare relaie, va
aprea cte o fereastr de editare, unde se puncteaz opiunea Impunere integritate
referenial, pentru a proteja baza de date la erori cum ar fi urmtoarea: exist produse
dintr-o categorie care nu este nc definit.

Imaginea final a ferestrei Relaii este prezentat n continuare.

Introducerea articolelor n tabele se realizeaz astfel: n fereastra Baz de date se


efectueaz dublu-clic pe numele tabelului (de exemplu, Furnizori) i se introduc valorile
cmpurilor din fereastra care se deschide. n imaginea urmtoare, se observ cum tabelul
Furnizori are 15 articole. La fel se introduc articole n toate tabelele, n ordinea indicat de
relaiile deja definite. Dac se produc erori din punctul de vedere al integritii refereniale,
acestea sunt semnalate printr-un mesaj care cere corectarea cmpului respectiv.

O metod alternativ pentru introducerea de articole ntr-un tabel este realizarea unui
formular, care s ofere o alt prezentare a cmpurilor. Un formular creat n modul Vizualizare
proiect este individualizat, deoarece permite intervenia programatorului la un nivel nalt. n
continuare vom prezenta crearea n acest mod a formularului pentru introducerea comenzilor.
n fereastra Baz de date se selecteaz opiunea Formulare i apoi Creare formular
n modul Vizualizare proiect. Dup apariia ferestrei de editare a formularului, prin clic dreapta
pe titlul ferestrei deschidem un meniu contextual din care alegem ultima opiune: Proprieti.

Fereastra Formular permite


alegerea tabelului n care vom
introduce date, prin clic de eticheta
Date i derularea listei de opiuni
posibile pentru Surs nregistrri.
Alegem
tabelul
Comanda
i
observm c apare o nou fereastr
care
conine
lista
cmpurilor
acestuia:

Prin tragerea cmpurilor din aceast fereastr (cu ajutorul mouse-ului) pn n zona
Detaliu a formularului, fixm poziiile lor pe gril.

Fiecare element al formularului este alctuit dintr-un text explicativ, respectiv numele
cmpului i o zon de introducere a valorii cmpului respectiv. n figura de mai jos este
selectat elementul corespunztor numrului comenzii. Deplasarea relativ a componentelor
se realizeaz prin tragere de colul stnga-sus, evideniat. Deplasarea integral se face prin
tragere de margine.

Pentru a obine o aliniere, se pot selecta


mai multe elemente, prin meninerea apsat
a tastei Shift i tragere de mouse. Apoi se
deschide meniul contextual ataat prin clic
dreapta pe unul dintre elementele selectate.
Din acesta alegem opiunea Align, Stnga.
Prin clic dreapta pe gril putem alege opiunea
Proprieti, care permite selectarea din
eticheta Format a unei culori a grilei (opiunea
Culoare fundal).
Din acelai meniu putem mbogi formularul prin adugarea unui antet/subsol ale
paginii sau ale ntregului formular (Page Header/Footer, Form Header/Footer).
ntroducerea datei i a orei curente se face prin alegerea din meniul Insert a opiunii
Date and Time.
Introducerea numrului curent de pagin se face din acelai meniu, opiunea Page
numbers.
La subsolul formularului, introducem meniunea de responsabilitate, sub forma unei
etichete care conine numele persoanei care a realizat formularul.

Imaginea urmtoare prezint formularul, n modul proiectare.

Acest formular, folosit la introducerea datelor, are urmtorul aspect:

S presupunem acum c patronatul dorete o situaie a angajailor, n care s se


specifice, grupat pe funcii:
- numele complet al agenilor,
- data angajrii,
- oraul de domiciliu i
- numrul lor de telefon.
Pentru a rezolva aceast cerin, se va edita o interogare: n fereastra Baz de date
se selecteaz Interogri i se alege opiunea Creare interogare n modul Vizualizare proiect.
Se adaug apoi tabela Ageni, iar n gril se introduc cmpurile preluate:
- Nume_agent
- Prenume_agent
- Functie

- Angajat
- Oras
- Tel_acasa.
Pentru a realiza cererea, pe rndul Sortare se selecteaz Ascendent la cmpurile
Functie i Angajat. Interogarea se salveaz cu numele Agenti Query i se execut prin dublu
clic pe numele su n fereastra Baz de date.

Iat rezultatul execuiei interogrii Agenti Query:

Rapoartele sunt situaii finale, care nu mai permit intervenii ale operatorului. S
presupunem c se dorete realizarea unui raport care s conin agenii firmei, grupai dup
oraele de reedin. n fereastra Baz de date se selecteaz Rapoarte i se alege opiunea
Creare raport utiliznd Expertul. n prima fereastr de dialog se aleg cmpurile care se includ
n raport, prin transfer din stnga n dreapta cu ajutorul butoanelor
i
. Primul buton
transfer cmpul curent, iar cel de-al doilea transfer toate cmpurile n viitorul raport.

Urmeaz adugarea nivelurilor de grupare a articolelor, n cazul nostru este necesar


gruparea dup cmpul Ora, care se alege prin clic pe butonul

Pentru o aezare plcut a articolelor n raport, se alege o sortare a agenilor din


fiecare grup, cresctoare dup cmpul Nume_agent.

Dintre modurile de prezentare, alegem Block, stilul Comun:

n final, alegem numele raportului: Ageni. Observm c aplicaia poate manevra


obiecte diferite (tabel i raport) cu acelai nume.

Dup salvare, executm raportul prin dublu-clic pe numele su din fereastra Baz de
date. Imaginea urmtoare prezint o parte din raportul Ageni.

10.3. Baz de date pentru gestiunea unui parc auto


Aceast aplicaie propune realizarea unei baze de date coninnd informaii despre
mainile dintr-un garaj. Pentru fiecare main se vor memora informaii cum ar fi:
- tipul mainii;
- destinaia: transport de persoane sau marf;
- firma productoare;
- data fabricaiei;
- capacitatea cilindric;
- numr km. parcuri;
- consumul specific;
- data achiziionrii.;
Aplicaia va fi dotat cu faciliti referitoare la validarea datelor introduse. Cnd
numrul opiunilor (pentru valorile unei anumite date) este mic, se vor pune la dispoziia
utilizatorilor opiunile din care acetia s aleag. Vor fi prevzute principalele operaii
efectuate asupra datelor n bazele de date:
- adugarea de noi date;
- modificarea datelor existente;
- tergerea datelor;
- afiarea datelor pe ecran i la imprimant.
Tipul datelor necesar a fi stocate sugereaz un inventar al garajului la un moment
dat. Mainile garajului au ntre ele elemente comune (de exemplu: pot fi de aceeai marc i
tip sau culoare), dup cum la momentul executrii inventarului unele maini pot fi plecate n
curs. De asemenea, pot aprea maini noi n garaj. Exist date ce evolueaz datorit unor
tranzacii neevideniate (km parcuri). Modelul informatic al unui garaj real este mai complex
dect cel sugerat aici. n aceast abordare, nu considerm modificarea tabelelor, adic nu
vom modela situaii de genul:
- apariia unor maini noi;
- casarea unor maini;
- plecarea n curs a unor maini;
- vopsirea (n alt culoare) a unor maini;
- schimbarea numrului de circulaie.
Singurul cmp care se modific natural, ca urmare a efecturii curselor i nu ca
urmare a unor greeli sau evenimente excepionale, este numrul de km parcuri. Formula
de actualizare a acestui cmp este:
n

[numar km parcursi] [nr km initiali] [nr km cursa]i


i 1

Tabelul urmtor prezint datele ce vor trebui memorate:


Cmp
Tipul mainii
Destinaie: transport de persoane sau marf
Firma productoare
Data fabricaiei
Capacitatea cilindric
Numr km. parcuri
Consumul specific
Data achiziionrii

Entitate
B
B
A
C
B
D
B
C

Evolutiv

Da

De aici rezult primele patru entiti:


firma productoare de maini;
tipul (marca) mainii;
maina propriu-zis;
cursa;
Vom observa c, la modul general, asimilnd cursa cu un convoi auto omogen, o curs poate
avea mai multe maini i mai muli oferi.

Cerinele problemei specific validarea datelor introduse. Validarea este un


instrument informatic ce mpiedic apariia unor greeli de introducere simple ct i a unor
inconsistene greu de verificat fr instrumente informatice (exemplu: coduri unice atribuite
repetat). Bazele de date relaionale s-au ndeprtat puternic de modelul validrii batch, care
se aplic post-factum pe loturi de date, deoarece au introdus integritatea referenial bazat
pe chei unice, chei strine i verificri simple (numerice, logice) nglobate direct n baza de
date i nu n program. Validrile bazate pe integritatea referenial sunt ns adeseori
completate cu validri-program pe formularele de introducere.
n cele ce urmeaz, vom nelege garajul ca o unitate (agent economic) ce dispune de
maini cu care efectueaz curse. Aceste curse determin tranzacii, stocate fiecare din ele n
baza de date. Ca urmare a curselor, se modific numrul de km. parcuri de fiecare main.
Iat cum arat fereastra Relationships a bazei de date.

Cu excepia colului din stnga-jos, unde sunt specificate dou interogri necesare
pentru calculul numrului de km. parcuri, toate celelalte sunt tabele, avnd relaii ntre ele.
n plus fat de tabele definite deja, n procesul de analiz s-au considerat necesare i:
oferi;
culori (ale mainilor);
tip transport;
date (adic tranzaciile curselor).
Cursele sunt cele care determin tranzaciile. oferii fac parte integrant din
resursele principale ale curselor, mpreun cu mainile. Culorile nu apar la fel de importante,
ns n proiectare unei baze de date amnuntele sunt semnificative. Am disociat tip transport
de marca mainii, deoarece reprezint o caracteristic comun mai multor maini, ca i
culorile mainilor (pot fi mai multe astfel de caracteristici comune: cauciucuri, tip carburant,
ulei, practic lista poate fi mare, dar ne vom limita la acestea dou). Datele (tranzaciile
curselor) construiesc numrul de km. parcuri ai fiecrei maini.
Relaiile sunt toate de tipul 1 - n, avnd fiecare coduri interne ale bazei de date cu
cheie unic pe partea 1 a relaiilor (reprezentat cu bold). Tabelul Date are cheie unic pe
toate cele 3 cmpuri concatenate, pentru asigurarea unei normalizri suficiente i protecie la
duplicate incorecte. Acest lucru se realizeaz astfel: dup definirea numelui cmpurilor, a
tipului i descrierii lor, se selecteaz cu butonul Shift inut apsat toate cmpurile tabelului i
se efectueaz clic pe butonul Primary Key
din bara de instrumente Table Design.
Selecia cmpurilor se face prin tragere de mouse, n faa numelui cmpurilor, pe zona gri.
Rezultatul este prezentat n imaginea urmtoare.

Urmtoarea imagine prezint fereastra Baz de date a aplicaiei, cu obiectele de tip tabel.

Paii necesari realizrii aplicaiei sunt urmtorii:


1. Proiectarea pe hrtie a structurilor de date, conform modelului entitate-relaie;
2. Crearea n access a tabelelor (cmpuri, indeci, chei unice, validri interne), adic a
celor 8 tabele din structura anterioar;
3. Legarea tabelelor, prin relaii, asigurnd integritile refereniale cu cheia strin
(secundar);
4. Proiectarea prii vizuale a formularelor (fr elemente de programare VBA access);
5. Adugarea de cod de validare vba pe cmpurile de introducere date ale formelor;
6. Legarea (dup o logica simpl) a formularelor ntre ele, prin cod vba;
7. Crearea rapoartelor i conectarea prin diverse controale;
8. Crearea de interogri nglobate pentru aflarea numrului de km parcuri.

S-au folosit controale vizuale: cmpuri text/numerice/date calendaristice, combo, liste,


butoane, control-tab. S-au folosit att forme simple, ct i mai complexe (tab-uri, masterdetail), pentru care Access ofer suport puternic i accesibil. S-au folosit controalele de
navigare implicite ale Access. Toate cheile unice sunt pe cmpuri de tip Autonumerotare
(secvene). Urmtoarea imagine prezint fereastra Baz de date a aplicaiei, cu obiectele de
tip formular.

Formularul Startup se autolanseaz. Codul Visual Basic este urmtorul


Option Compare Database
Private Sub Detail_Click()
End Sub
Private Sub Form_Open(Cancel As Integer)
DoCmd.SelectObject acForm, "Startup", True
DoCmd.Minimize
DoCmd.Hourglass False
End Sub
Private Sub Start_Click()
On Error GoTo Err_Start_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Curse"
DoCmd.Close
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Start_Click:
Exit Sub
Err_Start_Click:
MsgBox Err.Description
Resume Exit_Start_Click
End Sub
Imaginea formularului care se deschide automat la lansarea aplicaiei este urmtoarea:

Dup clic pe butonul


, acest formular lanseaz formularul Curse, care este practic cel
mai complex formular al aplicaiei. n continuare sunt oferite trei imagini ale acestui formular,
pentru a prezenta respectiv: resursele cursei, resursele pentru toate cursele i distana total
parcurs.

Schema obiectelor este urmtoarea:

Formular
Formular

Curse
Curse

Cod Cursa

Distanta (km)

Data Start

Note

Data Sfarsit
Resursele
Resursele
Cursei
Cursei

Grid R/W
Grid R/W
(soferi,masini)
(soferi,masini)

Forma Soferi
Forma Soferi
Forma Masini
Forma Masini

Buton soferi
Buton masini
Buton Preview
Buton Listare

Raport:
Raport:Curse
Curse

Buton Adaugare
Buton Stergere
Resursele
Grid R/O
Grid R/O
Resursele
tururor
(soferi,masini-total)
(soferi,masini-total)
tururor
curselor
curselor
Distanta Parcursa
Grid R/O
Distanta Parcursa
Grid R/O
Totala
(distante
pe masini)
Totala
(distante pe masini)

Observaii:
- sgeile groase deschid prin dublu clic (pe grid) opiunile respective;
- sgeile groase punctate deschid prin clic opiunile respective.
Codul formularului Curse este urmtorul:
Option Compare Database
Private Sub AddSofer_Click()
On Error GoTo Err_AddSofer_Click
DoCmd.GoToRecord , , acNewRec
Exit_AddSofer_Click:
Exit Sub
Err_AddSofer_Click:
MsgBox Err.Description
Resume Exit_AddSofer_Click
End Sub
Private Sub Data_Sfarsit_Exit(Cancel As Integer)
On Error GoTo Err_Data_Sfarsit_Exit
If IsNull(Me![Data Sfarsit]) Then
MsgBox "Completati Data Sfarsit"
Cancel = -1
Else
If Not IsNull(Me![Data Start]) Then
If Me![Data Start] > Me![Data Sfarsit] Then
MsgBox "Data de sfarsit nu poate fi inaintea datei de start"
Cancel = -1
End If
End If
End If

Exit_Data_Sfarsit_Exit:
Exit Sub
Err_Data_Sfarsit_Exit:
MsgBox Err.Description
Resume Exit_Data_Sfarsit_Exit
End Sub
Private Sub Data_Start_Exit(Cancel As Integer)
On Error GoTo Err_Data_Start_Exit
If IsNull(Me![Data Start]) Then
MsgBox "Completati Data Start"
Cancel = -1
Else
If Not IsNull(Me![Data Sfarsit]) Then
If Me![Data Start] > Me![Data Sfarsit] Then
MsgBox "Data de sfarsit nu poate fi inaintea datei de start"
Cancel = -1
End If
End If
End If
Exit_Data_Start_Exit:
Exit Sub
Err_Data_Start_Exit:
MsgBox Err.Description
Resume Exit_Data_Start_Exit
End Sub
Private Sub DeleteBtn_Click()
On Error GoTo Err_DeleteBtn_Click
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
Exit_DeleteBtn_Click:
Exit Sub
Err_DeleteBtn_Click:
MsgBox Err.Description
Resume Exit_DeleteBtn_Click
End Sub
Private Sub Distanta_Exit(Cancel As Integer)
On Error GoTo Err_Distanta_Exit
If IsNull(Me![Distanta]) Or Me![Distanta] = 0 Then
MsgBox "Distanta cursei trebuie sa fie mai mare ca zero"
Cancel = -1
End If
DoCmd.Requery
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
[Note].SetFocus
Exit_Distanta_Exit:
Exit Sub
Err_Distanta_Exit:
MsgBox Err.Description
Resume Exit_Distanta_Exit
End Sub
Private Sub Open_Soferi_Click()
On Error GoTo Err_Open_Soferi_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Soferi"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Open_Soferi_Click:
Exit Sub
Err_Open_Soferi_Click:
MsgBox Err.Description
Resume Exit_Open_Soferi_Click
End Sub
Private Sub Open_Masini_Click()
On Error GoTo Err_Open_Masini_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "Masini"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Open_Masini_Click:
Exit Sub
Err_Open_Masini_Click:
MsgBox Err.Description
Resume Exit_Open_Masini_Click
End Sub
Private Sub TabCtl10_Change()
On Error GoTo Err_TabCtl10_Change
DoCmd.Requery
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
Exit_TabCtl10_Change:
Exit Sub
Err_TabCtl10_Change:
MsgBox Err.Description
Resume Exit_TabCtl10_Change
End Sub
Private Sub PreviewBtn_Click()
On Error GoTo Err_PreviewBtn_Click
Dim stDocName As String
stDocName = "Curse"
DoCmd.OpenReport stDocName, acPreview
Exit_PreviewBtn_Click:
Exit Sub
Err_PreviewBtn_Click:
MsgBox Err.Description
Resume Exit_PreviewBtn_Click
End Sub
Private Sub PrintBtn_Click()
On Error GoTo Err_PrintBtn_Click
Dim stDocName As String
stDocName = "Curse"
DoCmd.OpenReport stDocName, acNormal
Exit_PrintBtn_Click:
Exit Sub
Err_PrintBtn_Click:
MsgBox Err.Description
Resume Exit_PrintBtn_Click
End Sub

Formularul Maini permite vizualizarea datelor i introducerea de noi articole n baza de date.

Butonul

acionat cu dublu clic deschide forma de editare/adugare item list. Butonul

permite vizualizarea unui raport asupra mainilor. Butonul


raport, iar butonul

permite tiprirea acestui

permite tergerea unui maini din baza noastr de date.

Formularul Tip_Transport este mai simplu:

Codul VBA al acestui formular este urmtorul:


Option Compare Database
Private Sub Form_Load()
If Me.OpenArgs = "GotoNew" And Not IsNull([Cod Tip Transport]) Then
DoCmd.DoMenuItem acFormBar, 3, 0, , acMenuVer70

End If
End Sub
Private Sub SaveBtn_Click()
On Error GoTo Err_SaveBtn_Click
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Exit_SaveBtn_Click:
Exit Sub
Err_SaveBtn_Click:
MsgBox Err.Description
Resume Exit_SaveBtn_Click
End Sub
Private Sub DelBtn_Click()
On Error GoTo Err_DelBtn_Click
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
Exit_DelBtn_Click:
Exit Sub
Err_DelBtn_Click:
MsgBox Err.Description
Resume Exit_DelBtn_Click
End Sub
Private Sub ExitBtn_Click()
On Error GoTo Err_ExitBtn_Click
DoCmd.Close
Exit_ExitBtn_Click:
Exit Sub
Err_ExitBtn_Click:
MsgBox Err.Description
Resume Exit_ExitBtn_Click
End Sub
Dintre rapoartele ce se pot realiza n cadrul aceastei aplicaii, prezentm Curse i Tip main:

Interogrile Distane i Distante Query sunt prezentate n continuare.


Fereastra interogrii Distane presupune adugarea tabelelor Date i Curse, iar n
grila QBE a cmpurilor Cod Identificare Masina, Cod Cursa din tabela Date i a cmpului
Distana din tabelul Curse.

Comanda SQL corespunztoare interogrii este:


SELECT DISTINCT Date.[Cod Identificare Masina], Date.[Cod Cursa], Curse.Distanta
FROM Curse INNER JOIN [Date] ON Curse.[Cod Cursa]=Date.[Cod Cursa];
Aceast comand este vizibil dac din meniul View se alege opiunea SQL View.

Interogarea Distante Query necesit adugarea tabelelor Masini i Distante, iar n


gril se includ cmpurile Cod Identificare Masina, Numr Main, Nr Km Iniiali din tabela
Maini i cmpul calculat Distane Parcurse, aflat pe baza valorilor cmpului Distana din
tabela Distane. n plus, se afieaz articolele sortate ascendent dup primul cmp al
interogrii.

Comanda SQL aferent acestei interogri este:


SELECT DISTINCTROW Masini.[Cod Identificare Masina], Masini.[Numar Masina],
Masini.[Nr Km Initiali], Sum(Distante.Distanta) AS [Distante Parcurse]
FROM Masini
LEFT JOIN Distante ON Masini.[Cod Identificare Masina] = Distante.[Cod Identificare Masina]
GROUP BY Masini.[Cod Identificare Masina], Masini.[Numar Masina], Masini.[Nr Km Initiali]
ORDER BY Masini.[Cod Identificare Masina];
Funciile aplicaiei
Aplicaia Garaj asigur gestiunea operativ a principalelor resurse ale unui garaj
(privit ca un agent economic), care efectueaz curse cu maini i oferi. Fiecare curs este
memorat individual:
- data start a cursei;
- data sfrit a cursei;
- distana cursei;
- note despre curs;
- maini n curs (pot fi mai multe ntr-o curs);
- oferi n curs (pot fi mai muli ntr-o curs).
Se pot aduga resurse (maini, oferi) la garaj. Se pot terge doar cele complet
nefolosite. Pot exista mai multe maini de acelai tip n garaj. Cursele determina tranzaciile
curselor:
Tranzacie=(cod curs, cod main, cod ofer).
Aplicaia este scris n Microsoft Access 2000, constnd dintr-un fiier Garaj_lg.mdb
(conform paradigmei Access, acesta conine tabele, relaiile ntre tabele, formulare, rapoarte,
interogri, codul VBA). Pentru introducerea datelor se folosesc formulare cu funcii de
validare (care ghideaz utilizatorul).
Funciile aplicaiei sunt cele generale ale unei aplicaii de baze de date, dar i
specifice. Pe scurt, aplicaia Garaj memoreaz utilizarea n curse a resurselor (maini, oferi)
pentru o anumit perioad de timp, furniznd un punct de vedere raional asupra gradului de
utilizare a acestor resurse, ct i asupra distanelor parcurse sau planificarea consumului de
carburant pentru curse. Funcia principal este aceea c ofer managementului garajului

suport att pentru deciziile operative, ct i pentru planificare i pentru control, avnd n
centrul ateniei cursele auto.
Toate intrrile/ieirile sunt conforme cu schema:
Utilizator Aplicaie Microsoft Access Sistem de operare PC hard disc PC
monitor PC
imprimant
Elementele vizuale (formulare i rapoarte) ale aplicaiei au fost deja prezentate.
Formularul autoexecutabil Startup determin lansarea formularului Curse (ecranul principal al
aplicaiei). Gridul Resursele cursei este manevrabil cu instrumente implicite (tastele Insert,
Delete, Escape) la nivel de rnd, pe care se face i validarea. Dublu clic pe cmpurile Maini,
oferi ale grid-ului din Resursele cursei lanseaz formularele Maini/oferi (ceea ce se poate
face i cu butoanele respective).
n aplicaie, simbolul
introducere date (sau editare).

este alturat unei liste ce ramific programul spre forme de

Posibiliti de modernizare/dezvoltare a aplicaiei


Avnd n vedere c este vorba de o aplicaie simpl, posibilitile de
modernizare/dezvoltare sunt vaste:
adugarea de validri suplimentare att pe baza de date propriu-zis, ct i pe
formulare;
adugarea ca tranzacii noi a celor determinate de cumprarea/vnzarea unor maini
din garaj;
adugarea ca tranzacii a consumului efectiv de combustibil (curse, maini);
adugarea diagramelor de planificare a resurselor garajului;
adugarea unor rapoarte de consum de combustibil;
crearea unei aplicaii mono-formular (formularele multiple pot fi obositoare);
adugarea suportului tranzacional multi-user;

trecerea la modelul client/server.

10.4. Baz de date pentru contabilitatea TVA


Aplicaia Access prezentat n acest paragraf a fost realizat n scopul automatizrii
contabilitii TVA din cadrul unei societti comerciale, pe care s o numim, fictiv, SC ADES
SA. Aplicaia urmrete eficientizarea activitii contabile, a intrrilor i a ieirilor de mrfuri cu
documentele aferente acestei activiti.
Societatea comercial ADES SRL are ca obiect principal de activitate comerul cu
ridicata al mrfurilor alimentare. Se dorete, ca n baza evidenelor corespunztoare facturilor
de intrri i ieiri s se realizeze rapoartele jurnal de cumprare i vnzare pentru luna
decembrie 2004; din acestea se extrag situaiile referitoare la TVA-ul deductibil i TVA-ul
colectat, din care s rezulte TVA-ul de plat sau TVA-ul de recuperat de la bugetul de stat.
Nivelul (modelul) conceptual
Nivelul conceptual este nivelul central care reflect datele structurate astfel nct
acestea s poat fi preluate i prelucrate cu ajutorul unui SGBD.
Schema conceptual st la baza modelului conceptual care va permite definirea
proprietilor elementare ale obiectelor care intereseaz n cadrul SC ADES SA, gruparea
acestora, n funcie de criterii de omogenitate stabilite, n scopul descrierii obiectelor lumii
reale i a relaiilor dintre ele. Sunt definite regulile de care trebuie s se in seama n
manevrarea datelor existente. Pe baza regulilor de gestiune se stabilesc cardinaliti sau
conectiviti ntre realizrile atributelor din entiti i cele ale proprietilor din asocieri
(corespondene). Acestea exprim maniera de participare a valorilor atributelor din entiti la
fiecare apariie de valori din asocieri. Putem vorbi despre o conectivitate minim (0 sau 1) i
una maxim (1 sau n). Vom utiliza modelul entitate asociere.
n urma analizei problemei rezult urmtoarele entiti, care sunt modelate de tabele:
t_soc, t_furn, t_fact_furn, t_fact_furn_prod, t_client, t_fact_client, t_fact_client_prod.
Identificarea corespondenelor ntre aceste entiti este urmtoarea:

t_furn cu t_fact_furn - un furnizor poate emite de la 1 la n facturi, rezulta o coresponden


EMITE;
t_fact_furn cu t_fact_furn_prod - este o relaie de la 1 la n, unei facturi i corespund una
sau mai multe nregistrri din tabela t_fact_furn_prod, rezult deci o coresponden LINIE
FACTURA - PRODUSE FURNIZOR;
t_client cu t_fact_client, se emite factura ctre clieni, este o relaie de 1 la n,
corespondena este RECEPTIE;
t_fact_client cu t_fact_client_prod, relaia este de 1 la n, corespondena este LINIE
FACTURA - PRODUSE CLIENT.

Stabilirea cardinalitilor
Corespondena EMITE
a) dinspre entitatea furnizor (1, n)
- un furnizor emite cel puin o factur (cardinalitate 1)
- un furnizor poate emite mai multe facturi (cardinalitate n)
b) dinspre entitatea factur (1, 1)
- factura este emis de cel puin i de cel mult un furnizor (cardinalitate 1, 1)
Corespondena LINIE FACTURA PRODUSE FURNIZOR
a) dinspre entitatea factura (1, n)
- factura conine cel puin un produs (cardinalitate 1)
- factura poate conine mai multe produse (cardinalitate n)
b) dinspre entitatea produse (1, n)
- un produs este inclus n cel puin o factur (cardinalitate 1)
- un produs poate fi inclus n mai multe facturi (cardinalitate n)

Corespondena RECEPTIE
a) dinspre entitatea client (1, n)
- un client primete cel puin o factur (cardinalitate 1)
- un client poate primi mai multe facturi (cardinalitate n)
b) dinspre entitatea factura (1, 1)
- factura este recepionat de cel puin i de cel mult un client (cardinalitate 1,1)
Corespondena LINIE FACTURA - PRODUSE CLIENT
a) dinspre entitatea factur (1, n)
- factura conine cel puin un produs (cardinalitate 1)
- factura poate conine mai multe produse (cardinalitate n)
b) dinspre entitatea produse (1, n)
- un produs este inclus n cel puin o factur (cardinalitate 1)
- un produs poate fi inclus n mai multe facturi (cardinalitate n).
Nivelul logic sau modelul relaional al datelor
Modelul logic al datelor este reprezentat de urmtoarea colecie de tabele:

t_soc (id-soc, denumire, CUI, judet, localit, strada, cod_postal, sector, telefon,
administrator, banca, cont_bancar)
t_furnizor (id-furn, cui, denumire, sediu, telefon)
t_fact_furn (id-fact, id_furn, nr_fact, data, cota_tva)
t_fact_furn_prod (id-fact, nr_crt, explicatie, cant, pret_fara_tva)
t_client (id-client, cui, denumire, sediu, telefon)
t_fact_client (id-fact, id_client, nr_fact, data, cota_tva)
t_fact_client_prod (id-fact, nr_crt, explicatie, cant, pret_fara_tva)

n reprezentarea de mai sus, atributele subliniate cu linie continu caracterizeaz n


mod unic realizrile de entitate (un identificator de societate este specific unei societi i
numai uneia, aceeai proprietate este valabil pentru identificatorul unui furnizor, fiecare
furnizor are un identificator de furnizor).
Cmpurile subliniate cu linie punctat au un rol de legtur, modeleaz relaiile ntre
entitile identificate n faza de analiz. Aceste cmpuri sunt cheile secundare sau externe (de
exemplu, id_furn pentru tabela t_fact_furn, id_client pentru tabela t_fact_client).
Nivelul intern sau modelul fizic al datelor
Nivelul intern (modelul fizic) este cel ce corespunde structurii n care sunt stocate
datele n interiorul calculatorului. Sunt specificate tabelele (fiierele) care le conin (nume,
organizare, localizare, etc.), componentele fiecrui fiier (lungime, cmpuri), cile de acces la
componentele tabelelor (indeci, relaii, legturi ntre tabele).
Relaii ntre tabele
Pentru eficientizarea bazei de date este necesar separarea datelor n mai multe
tabele, fiecare avnd o tem bine definit. Prin aceast separare se evit redundana.
Tabelele astfel rezultate se relaioneaz, adic se leag prin relaii.
n figura urmtoare se poate observa fereastra de relaii a bazei de date.

Primul pas n stabilirea relaiilor ntre tabelele bazei de date const n alegerea tipului
de relaie folosit: n aceast aplicaie, toate cele patru relaii sunt de tipul 1 - n. Urmeaz
realizarea acestor relaii: se deschide fereastra Relaii i se adaug toate tabelele; apoi se
trage cu ajutorul mouse-ului cmpul din prima tabel ctre cmpul corespondent din cea de-a
doua tabel; la deschiderea ferestrei Editare relaii se bifeaz opiunile Impunere integritate
referenial, Actualizare n cascad cmpuri corelate, tergere n cascad cmpuri corelate.

Formulare
Formularele acestei aplicaii ofer o interfa atractiv pentru vizualizarea sau
introducerea datelor din tabele. Prin faptul c urmresc introducerea sau modificarea datelor
din tabele, dup anumite reguli stricte, impuse de programator, permit eliminarea erorilor
provocate de utilizatori la manevrarea datelor.
n cadrul acestei aplicaii formularele ndeplinesc funcii de:
introducere a datelor, formularele fiind create pentru fiecare tabel, n scopul introducerii
datelor n alt form dect cea tabelar, crendu-se o interfa deosebit;
afiare a datelor ntr-o form dorit de utilizator, n scopul consultrii acestora;
editare a datelor, datele afiate n cadrul formularelor pot fi modificate sau terse.
Aplicaia conine urmtoarele formulare :
1. Formularul principal, n care sunt evideniate funciile acestei aplicaii:

2. Formularul cu datele de identificare ale societii:

3. Formularul cu datele despre furnizorii de produse:

4. Formularul ce conine facturile emise de furnizorii societii ADES SA, cu produsele


achiziionate de la acetia:

5. Formularul cu datele de identificare ale clienilor:

6. Formularul ce conine facturile emise clienilor de ctre SC ADES SA, cu produsele


vndute acestora:

7. Subformular ce conine facturile emise de furnizori cu produsele aferente achiziionate de


SC ADES SA :

8. Subformular ce conine facturile emise clienilor de societate:

Interogri
Interogrile sunt realizate pentru extragerea datelor i afiarea organizat a acestora
n diferite modaliti necesare utilizatorilor. Interogrile realizate n cadrul acestei aplicaii sunt
complexe, utilizndu-se mai multe tabele, din care datele sunt extrase prin precizarea unor
criterii.
Pentru realizarea interogrilor s-a ales lucrul n modul Proiectare:
- n fereastra Baz de date, clic pe Interogri i apoi pe Nou;
- apare caseta de dialog Interogare nou, n care se alege Vizualizare proiect;
- din caseta AfiareTabel am selectat tabelele i/sau cererile din care am extras
date.
Fereastra Interogare de selectare are dou zone: cea superioar, n care vedem tabelele
i/sau cererile selectate, mpreun cu legturile dintre ele i cea inferioar, numit grila de
proiectare, n care s-a proiectat efectiv cererea.
Dintre interogrile construite, vom prezenta modul de realizare pentru
q_fact_client_prod, care afieaz produsele facturate clienilor i valorile TVA aferente
acestora. n caseta Afiare Tabel se aleg cele dou tabele care vor participa la interogare:
t_fact_client_prod i t_fact_client. n gril se completeaz, pe coloane, cmpurile pe care le
dorim afiate, mai nti cele preluate din tabele, iar ultimele dou sunt cmpuri calculate cu
formulele: val_fara_tva = [pret_fara_tva] * [cant] i val_tva = [cant] * [pret_fara_tva] *
[cota_tva] / 100.

La execuia cererii, se obin urmtoarele date:

Ce-a de a doua interogare pe care o vom prezenta folosete date din 2 tabele i dou
interogri anterioare, pentru a rspunde la ntrebarea: Care este valoarea fr TVA i
valoarea TVA pe fiecare factur? Interogarea q_jv_19 calculeaz, pentru fiecare factur,
valoarea fr TVA i valoarea TVA, dac valoarea din cmpul cota_tva este 19, iar
interogarea q_jv_9 calculeaz pentru fiecare factur valoarea fr TVA i valoarea TVA, dac
valoarea din cmpul cota_tva este 9. Dup includerea n fereastr a celor patru obiecte care
vor participa la interogare, se trece la completarea grilei. Cmpurile preluate se aleg din
tabele sau din interogri, iar singurul cmp calculat se obine prin adunarea bazei de
impozitare cu valoarea TVA.

Rapoarte
Rapoartele sau situaiile finale permit extragerea datelor din tabele, constituind
prezentri ale datelor pe suport de hrtie.
Raportul este un obiect al bazei de date asemntor cu interogarea - din punct de
vedere al structurii. Diferena fa de interogri const n aceea c raportul nu este destinat
afirii pe ecran, ci tipririi la o imprimant. Din acest motiv, raportul nu poate fi deschis i
afiat pe ecran (precum tabelele, formularele i interogrile). Este posibil numai o
previzualizate a modului cum va arata raportul tiprit.
Rapoartele acestei aplicaii sunt urmtoarele:
1. Decontul privind taxa pe valoarea adugat, este un document contabil, o
declaraie financiar, ce se ntocmete de societate n cadrul compartimentului financiarcontabil pentru fiecare lun. Documentul prezentat reflect activitatea de vnzare-cumprare
a societii pentru luna decembrie 2004, valoarea facturilor emise de furnizori ctre SC ADES
SA, precum i valoarea facturilor emise de SC ADES SA ctre clieni, cu procentul taxei pe
valoare adugat.
Cotele de impozitare prevzute de lege se aplic la baza de impozitare i astfel se
determin T.V.A. Aceste cote de impozitare se regsesc n aceast aplicaie i sunt:
- 19% pentru operaiunile referitoare la vnzarea-cumprarea de bunuri i prestri de
servicii;
- 9% pentru o serie de produse de strict necesitate cum sunt: carnea de animale i
psri, vndute n stare proaspt, preparate i conserve, pete i produse din pete,
etc. sau diverse formulare tipizate.

Exemplu de calcul a T.V.A. :


n data de 08.12.2004 SC Ades SA vinde ctre SC Bio Sim SRL 100 de kg.
gru Dobrogea la preul unitar de 7000 lei, conform facturii nr. 2584151.
100 kg. x 7000 lei / kg = 700000 lei, care este valoarea facturii fr T.V.A
700000 x 19% = 133000 lei, care este valoarea T.V.A
700000 + 133000 = 833000 lei, care este valoarea total a facturii (inclusiv T.V.A).
Cu ocazia vnzrii produselor, ntreprinderea furnizoare percepe (factureaz i
ncaseaz) i TVA de 19% sau 9% asupra livrrilor. Aceasta suma reprezint ceea ce numim
TVA colectat. Cum fiecare ntreprindere n calitatea ei de client, n momentul aprovizionrii a
pltit la rndu-i furnizorului su TVA, aceast TVA deductibil se va scdea din TVA colectat,
rezultnd TVA de plat la buget. Daca TVA colectat este mai mic dect TVA deductibil,
diferena reprezint TVA de recuperat. Raportul Decont vizualizat n modul proiect are
urmtoarea imagine.

n partea de antet se observ valori preluate, dar n partea de detaliere se apeleaz


funcia complex DLookUp, care afieaz valoarea cmpului care este primul su argument
din tabela al crei nume este al doilea su argument. Raportul aa cum ar aprea la
imprimat este prezentat n imaginea care urmeaz.

Din decontul SC ADES SA aferent lunii decembrie 2004 rezult urmtoarele:


Valoarea total a facturilor recepionate de la furnizori cu cota de 19% este de 74.256.000 lei
din care:
- 62.400.000 lei este valoarea fr TVA ,
- 11.856.000 fiind valoarea TVA de 19%.
Valoarea total a facturilor emise clienilor cu cota de 19% i 9% este de 89.301.120 lei din
care:
Vnzri de produse cu cota de 19% :
- 71.500.000 lei este valoarea fr TVA,
- 13.585.000 fiind valoarea TVA de 19%.
Vnzri de produse cu cota de 9% :
3.868.000 lei este valoarea fr TVA,
348.120 lei fiind valoarea TVA de 9%.
Din valoarea total a TVA aferent vnzrilor de 13.933.12 lei minus valoarea total a TVA
aferent cumprrilor de 11.856.000 lei obinem TVA-ul de plat ctre bugetul de stat de
2.077.120 lei datorit faptului c societatea a nregistrat venituri din vnzarea mrfurilor.
2. Jurnalul pentru cumprri este un document contabil n care sunt reflectate
achiziiile de produse, cumprrile efectuate de SC Ades SA. Jurnalul de cumprri al
societii este:

Acest raport este obinut prin execuia raportului rpt_jc:

3. Jurnalul pentru vnzri este un document contabil care reflect vnzrile de bunuri
ctre clieni. Jurnalul de vnzri al SC Ades SA se prezint astfel:

11. Teste
Testele prezentate n acest capitol ofer posibilitatea autoevalurii, coninnd
subiecte similare celor propuse la examenele de baze de date sau de licen (pentru
specializrile profilului Economic). Fiecare din testele 11.1 11.5 conine cte 9 itemi, pentru
fiecare acordndu-se cte 1 punct (1 punct se acord din oficiu). ntre cele 5 variante de
rspuns, una singur este corect. Testele 11.6 i 11.7 sunt mai complexe i conin cte 8
itemi pentru care rspunsul trebuie dezvoltat, precum i o aplicaie care necesit parcurgerea
tuturor etapelor de realizare a unei baze de date, fiind potrivite abordrii n colectiv.

11.1 Testul 1
1. Indicele de calitate a informaiei ce exprim necesitatea de a se dispune de ct mai
multe informaii (dac este posibil, de toate informaiile) referitoare la un sistem economic
analizat se numete:
a. Precizie
b. Oportunitate
c. Completitudine
d. Concizie
e. Actualitate
2. Precizai care dintre variante indic alegerea corect a cheilor candidate i cea mai
bun alegere a cheii primare, pentru relaia
Curs (Cod-curs, Denumire-curs, Sala, Ora, Profesor)
Cheia primar este cea subliniat.
a. Cod-curs, Sala
b. Cod-curs, Ora
c. Cod-curs, Profesor
d. Cod-curs, Denumire-curs
e. Cod-curs, Denumire-curs
3. Fie relaia Personal, ce conine informaii despre angajaii unei fabrici de confecii:
Marca

Nume

Prenume

23
67
55
31
20
11

Barbu
Barbu
Constantinescu
Manoliu
Parincea
Semenov

Andreea
Codrin Mihai
Adela
Cristian
Maria Monica
Alexandru

Sectia
1
2
1
2
3
1

Profesie
Inginer confecii
Economist
Designer
Economist
Matematician
Inginer maini

Salariu
7000000
7000000
6000000
6000000
6000000
5000000

i urmtoarea fraz SELECT:


SELECT Nume, Prenume, Salariu
FROM Personal
WHERE Sectia=1;
Aceast interogare returneaz:
a.
b.
c.
d.
e.

Lista coninnd numele, prenumele i salariul tuturor angajailor


Lista coninnd marca i profesia angajailor seciei 1
Lista coninnd numele, prenumele i salariul angajailor seciei 1
Totalul salariilor angajailor
Toate informaiile coninute n tabela de date

4. Obiectele Microsoft ACCESS care permit accesul la date prin intermediul browserelor
Internet sunt:
a. Tabelele

b.
c.
d.
e.

Formularele
Cererile de interogare
Paginile Web
Modulele

5. Formatul corespunztor datei numerice $4,107.85 este:


a. General Number
b. Currency
c. Fixed
d. Standard
e. Percent
6. Operaia care s-a realizat n cadrul schemei de mai jos este:
Surs
Iai
Surs

Destinaie

Iai
Iai
Iai
Iai
Iai

Bacu
Bucureti
Pacani
Vaslui
Cluj-Napoca

Destinaie
Bacu

Cost
100000

Cost
100000
300000
40000
120000
400000
Surs
Bucureti
Galai
Constana
Iai

a.
b.
c.
d.
e.

Destinaie
Bacu
Bacu
Bacu
Bacu

Cost
250000
200000
300000
100000

Proiecia
Intersecia
Jonciunea
Diviziunea
Selecia

7. Indicai tipul relaiei reprezentate conceptual prin diagrama de mai jos:


CURSURI

a.
b.
c.
d.
e.

GRUPE

1-1
1-n
n-1
m-n
13

8. Redundana datelor este nul dac:


a. Datele apar o singur dat n sistem
b. Nu se realizeaz validri ale datelor
c. Ansamblul datelor reflect fidel realitatea pe care o modeleaz
d. Nu se admit date de intrare n format electronic
e. Datele nu se arhiveaz

9. Conceptul de partajare a datelor ntr-o baz de date se refer la:


a. Salvarea din timp n timp a unor copii coerente ale bazei de date
b. Identificarea utilizatorilor bazei de date prin nume sau cod
c. Autentificarea utilizatorilor prin parole
d. nlnuirea tranzaciilor solicitate simultan pe aceeai baz de date i deservirea
ulterioar a acestora
e. Gestiunea unui jurnal de tranzacii.

11.2 Testul 2
1. Atributul se definete ca fiind:
a. O proprietate a unei entiti sau a unei asocieri
b. Corespondentul unui obiect din lumea real
c. O instaniere a unei entiti
d. O legtur logic ntre dou realizri de entitate
e. O colecie de instane de entitate de acelai tip
2. Formularul de analiz (utilizat n faza de analiz a sistemului informaional existent)
care conine: volumul i periodicitatea documentelor, timpul estimat pentru completarea
acestora, tipul lor (de intrare sau de ieire), forma documentelor (tipizate sau nu) precum i
necesitatea documentelor se numete:
a. Gril informaional
b. Lista purttorilor de informaie
c. Flux informaional
d. Lista procedurilor existente
e. Chestionar de opinie
3. Categoria de personal care se ocup cu asigurarea securitii datelor i a cererilor de
informaie precum i refacerea bazei de date n cazuri de incoeren sau deteriorri
accidentale se refer la:
a. Analiti de sistem
b. Programatori
c. Ingineri de sistem
d. Administrator
e. Operatori
4. Fie relaia
Contracte (Cod-contract, Tip, Client, Data)
care stocheaz date despre contractele ncheiate de firma de leasing X cu clienii si i
interogarea:
SELECT COUNT(*) AS var_1
FROM Contracte
WHERE Data BETWEEN #01/01/03# AND #06/30/03#;
Aceast interogare are ca rezultat:
a.
b.
c.
d.

Lista clienilor firmei X


Lista contractelor cu cea mai mare valoare
Lista contractelor ncheiate ntre 1 ianuarie 2003 i 30 iunie 2003
Numrul clienilor care au ncheiat contracte cu firma X ntre 1 ianuarie 2003 i 30
iunie 2003
e. Valoarea total a contractelor ncheiate ntre 1 ianuarie 2003 i 30 iunie 2003
5. Care din urmtoarele afirmaii este fals?
a. Datorit utilizrii pe scar larg a calculatoarelor i a echipamentelor electronice
cuplate la acestea, majoritatea sistemelor informaionale au o component
informatic.
b. Sistemul informaional asigur legtura ntre sistemul de conducere i sistemul
de execuie.
c. Sistemul informaional are un rol de interfa ntre unitatea economic i mediul
exterior.
d. Un sistem informaional se creeaz i se dezvolt odat cu activitatea pe care o
reflect, iar delimitarea lui se realizeaz prin acte normative.
e. Sistemul informaional este un subsistem al celui informatic

6. O regul de validare are urmtorul rol:


a. Realizeaz iniializarea cmpurilor unei tabele
b. Testeaz, conform unui criteriu furnizat, valorile introduse ntr-un cmp
c. Stabilete obligativitatea introducerii unei valori ntr-un cmp
d. Realizeaz eliminarea unui index
e. Stabilete tipul unui cmp
7. S se precizeze prin ce operaie a algebrei relaionale se poate obine lista cu
localitile de domiciliu ale studenilor:
Localitate
Iai
Bacu
Constana
pornind de la urmtoarea relaie STUDENT:
Nume_student
Traian Marius
Ionescu Maria
Dobre Raluca
Popovici Ioana
Filipescu Alexandru
Iordan Mihai
a.
b.
c.
d.
e.

Secie
CIG
Biologie
CIG
Matematic
Biologie
CIG

Localitate
Iai
Bacu
Iai
Constana
Constana
Bacu

Reuniune.
Proiecie.
Selecie.
Diviziune.
Intersecie.

8. Dac un cmp are definiia NOT NULL, atunci:


a. Poate rmne necompletat
b. Poate primi numai valori numerice, nenule
c. Este obligatorie introducerea unei valori pentru acesta
d. Poate primi numai valoarea 0
e. Nu poate fi modificat
9. Relaia CORESPONDENI, cu structura i coninutul:
ara
Frana
Italia
Spania

Jurnaliti
Marin Gabriel, Iurea Victor
Pricop Adrian, Dan Irina
Manoliu Alexandru

se afl n forma normal:


a.
b.
c.
d.
e.

FN1
FN2
FN3
FN4
Nici una dintre acestea.

11.3 Testul 3
1. Operaiile de: selectare, codificare, conversie de suport, validare sunt specifice,
ntr-un sistem informatic, fazei de:
a. Culegere i pregtire a datelor
b. Pelucrare a datelor
c. Memorare a datelor
d. Ahivare a datelor
e. Comunicare / raportare
2. SGBD Micrososft ACCESS este de tip:
a. Ierarhic
b. Reea
c. Relaional
d. Funcional
e. Soft pentru gestiunea unui depozit de date
3. Fie relaia
CATALOG(nr_matricol, nume, an, nota)
care conine date despre studenii seciei Informatic (numrul matricol, numele, anul de
studiu i nota la un concurs de baze de date) i urmtoarea fraz SQL ACCESS:
SELECT nume, nota
FROM Catalog
WHERE an in (2,3) AND nota BETWEEN 8 AND 10
ORDER BY 2;
Aceast interogare realizeaz:
a. Lista studenilor cu note mai mari dect 8, din anii 2 i 3.
b. Lista studenilor din anii 2 i 3 i nota lor la concurs, ordonat descresctor dup
not.
c. Lista numelor i notelor studenilor din anii 2 i 3, cu note ntre 8 i 10, sortat
alfabetic (cresctor) dup nume.
d. Lista numelor i notelor studenilor cu note ntre 8 i 10.
e. Afiarea mediei notelor obinute la concurs de studenii din anii 2 i 3
4. Funcia totalizatoare COUNT, folosit ntr-o interogare de selecie SQL ACCESS,
returneaz:
a. Numrul de nregistrri care respect condiiile stabilite prin clauza WHERE
b. Suma tuturor valorilor dintr-un cmp precizat
c. Valoarea medie a unui cmp numeric precizat
d. Valoarea cea mai mic dintr-un cmp precizat
e. Valoarea cea mai mare dintr-un cmp precizat
5. Care dintre urmtoarele elemente nu reprezint obiecte ale unei baze de date
ACCESS:
a.
Tabele
b.
Fiiere de parametri
c.
Formulare
d.
Rapoarte
e.
Cereri de interogare
6. Avnd n vedere c un furnizor poate avea mai muli clieni i un client se poate
aproviziona de la mai muli furnizori, relaia ntre entitile FURNIZORI i CLIENI este de tip:
a.
1-1
b.
1-n
c.
n-1
d.
m-n
e.
nici unul din tipurile a,b,c,d

7. Una sau mai multe colecii de date aflate n interdependen, mpreun cu descrierea
datelor i a relaiilor dintre acestea reprezint:
a. un fiier
b. un server
c. o structur arborescent
d. o baz de date
e. o arhiv electronic
8. Pentru o baz de date, care dintre urmtoarele afirmaii este fals?
a. Datele sunt independente de prelucrri
b. Totdeauna, redundana datelor este nul
c. Redundana datelor este controlat
d. Este asigurat confidenialitatea datelor
e. Pot fi utilizate tehnici de prelucrare pentru mbuntirea timpului de optimizare.
9. O comand Macro reprezint:
a. Un obiect care conine proceduri definite de utilizator, scrise n Visual Basic
b. Un obiect care conine o definiie structurat a uneia sau mai multor aciuni pe
care ACCESS le realizeaz ca rspuns la un anumit eveniment
c. Un obiect care permite vizualizarea informaiilor obinute prin prelucrarea datelor
din una sau mai multe tabele i/sau cereri de interogare.
d. Un obiect care include un fiier HTML i alte fiiere suport, n vederea furnizrii
accesului la date prin intermediul browser-elor Internet
e. Un obiect n care sunt stocate date primare.

11.4 Testul 4
1. Fie asocierea
CLIENT

FACTURA

de tip 1-n, unde relaiile au intensia:


CLIENT(CodClient, Nume, Localitate) i
FACTURA(NrFactura, Data, ValoareFacturata, CodClient)
iar extensia relaiei CLIENT este:
10
20
30

Microsistem
InfoData
Flamingo Computers

Bacu
Bacu
Iai

Precizai care dintre urmtoarele tupluri poate fi adugat n tabela FACTURA, astfel nct
pentru atributul CodClient s fie satisfcut proprietatea de integritate referenial:
a.
b.
c.
d.
e.

100
200
500
101
400

12/07/04
08/08/04
03/23/05
06/25/04
01/10/05

3000
500
1000
1000
700

40
80
50
10
40

2. S se precizeze care dintre urmtoarele colecii de date se prezint n a treia form


normal.
a. PRODUSE1
CodProducto
r
Gr11
Sp20
Ro30
b. PRODUSE2
CodProducto
r
Gr11
Sp20
Ro30
Gr12
Sp22
c. PRODUSE3
CodProducto
r
Gr11
Sp20
Ro30
Gr12
Sp22
TIP
ConinutZahr
z1000

ara

Caracteristici

Grecia
Spania
Romnia

Varietatea1; Recolta2
Varietatea1; Recolta2
Varietatea2; Recolta1

ara

ConinutZahr

Productor

Grecia
Spania
Romnia
Grecia
Spania

z1000
z0800
z0450
z1000
z0800

Alexis
Jose
Tudor
Alexis
Jose

ara

ConinutZahr

Productor

Grecia
Spania
Romnia
Grecia
Spania

z1000
z0800
z0450
z1000
z0800

Alexis
Jose
Tudor
Alexis
Jose

Productor
Alexis

z0800
z0450
d. PRODUSE4
ara
Grecia
Spania

Jose
Tudor
CantitateaImportat
1000000; 95000
50000; 70000; 20000

e. PRODUSE5
CodProducto
r
Gr11
Gr11
Gr11
Gr11
Sp20

NrLot

Data

Cantitate

N0001
N0001
N0001
N0002
N0005

09-04
12-04
01-05
11-04
02-05

10000
10000
10000
20000
25000

3. Precizai care dintre urmtoarele funcii (ce pot fi incluse n clauza Group By, pentru
gruparea tuplurilor) furnizeaz valoarea medie pentru atributul specificat?
a. Count
b. StDev
c. Max
d. Min
e. Avg
4. Care urmtoarele linii ale grilei Query Design permite inhibarea afirii realizrilor
unui cmp?
a. Table
b. Sort
c. Criteria
d. Show
e. Or
5. Proiectarea logic a unui sistem informatic trebuie s se realizeze avndu-se n
vedere:
a. O soluie hardware viitoare
b. O tehnologie existent
c. Funcie de cunotinele actuale ale programatorilor
d. Independent de echipamente i software
e. n conformitate cu un sistem deja existent
6. Care dintre urmtoarele aspecte este esenial pentru elegerea unui atribut drept cheie
primar a unei tabele?
a. Valorile atributului s fie de tip numeric
b. Valorile atributului s fie de tip caracter
c. Valorile atributului s fie unice
d. Tabela s conin cel puin dou nregistrri
e. Tabela s fie deja indexat dup atributul respectiv
7. Care dintre atributele de mai jos este adecvat pentru a deveni cheia primar a entitii
CLIENI?
a. Nume
b. Cod fiscal
c. Telefon
d. Adresa
e. Banca
8. Cte niveluri de imbricare a formularelor sunt admise n Access?

a.
b.
c.
d.
e.

Cel mult dou


Maximum trei
Maximum apte
Nu sunt admise imbricri ale formularelor
Oricte se dorete.

9. Dat tabela
PRODUSE
CodProdus
A201
A205
A700
X309
B285

DenumireProdus
Carton Canson
Vopsea acrilic
Creion B3
Pnz pictur
Crbune desen

Gestiun
e
1
1
2
3
2

alegei varianta care conduce la obinerea relaiei


MAGAZII
Gestiun
e
1
2
3
a.
b.
c.
d.
e.

SELECTION (PRODUSE; Gestiune<=3)


PROJECT (PRODUSE; Gestiune)
PROJECT (PRODUSE; Cod Produs, Gestiune)
SELECTION (PRODUSE, DenumireProdus=Creion B3)
Nici una dintre variantele de mai sus.

11.5 Testul 5
1. Fie relaiile
STUDENI
NumeStudent
Ionescu Mihai
Popa Angela
Zaharia Florin

NumrMatricol
101
103
107

i
NOTE1
NumrMatrico
l
101
103
107

NotaProgramar
e
9
8
10

Relaia
LISTA
NumeStudent
Ionescu Mihai
Popa Angela
Zaharia Florin

NumrMatricol
101
103
107

NotaProgramare
9
8
10

este rezultatul unei operaii:


a. UNION (STUDENI, NOTE1)
b. MINUS (STUDENI, NOTE1)
c. SELECTION (STUDENI, NotaProgramare>=7)
d. PROJECT (STUDENI, NotaProgramare)
e. JOIN (STUDENI, NOTE1; STUDEN.NumrMatricol=NOTE1. NumrMatricol)
2. Dat relaia CARTE(Autor, Titlu, ISBN, Pre), precizai care dintre urmtoarele fraze
SELECT va furniza titlurile crilor cu preul ntre 50000 i 200000:
a. SELECT DISTINCTROW [Titlu], Pre FROM CARTE
WHERE Pre<=200000;
b. SELECT Titlu FROM CARTE
WHERE Pre>=50000;
c. SELECT DISTINCT Autor FROM CARTE;
d. SELECT Titlu FROM CARTE
WHERE Pre IN (50000, 100000, 200000);
e. SELECT Titlu FROM CARTE
WHERE Pre BETWEEN 50000 AND 200000;
3. Pentru tabela PRODUSE creat cu comanda
CREATE TABLE PRODUSE (CodProdus TEXT(4), DenProdus TEXT(15), Um TEXT(4), Pre
NUMBER, Calitatea NUMBER CONSTRAINT CodProdus PRIMARY KEY(CodProdus));
precizai care dintre urmtoarele comenzi de inserare este corect:
a. INSERT INTO PRODUSE VALUES ("129, "AGENDA, "BUC, 50000, 1);
b. INSERT INTO PRODUSE VALUES (129, AGENDA, "BUC, 50000, 1);
c. INSERT INTO PRODUSE VALUES ("129, "AGENDA, 50000, "BUC, 1);
d. INSERT INTO PRODUSE VALUES ("129, "AGENDA, "BUC, "50000", "1");
e. INSERT INTO PRODUSE VALUES (129, "AGENDA, BUC, 50000, 1);

4. ntr-o baz de date, alegerea arhitecturii de stocare a datelor nu trebuie s fie


influenat de:
a. Cantitatea de date ce urmeaz a fi memorat
b. Numrul de utilizatori ce vor accesa datele
c. Numrul de tranzacii pe unitate de timp
d. Limbajul de programare cunoscut de ctre managerul unitii beneficiare
e. Resursele financiare disponibile
5. Dac ntr-o baz de date s-ar proceda la tergerea unor date care fac parte din tupluri
n care se gsesc i alte date care mai sunt nc necesare, aceast manevr ar reprezenta:
a. O anomalie de modificare
b. O anomalie de adugare
c. O anomalie de tergere
d. O violare a integritii entitii
e. O violare a integritii referirii
6. Un obiect Access care conine o definiie structurat a uneia sau mai multor aciuni pe
care Access le realizeaz ca rspuns la un anumit eveniment este:
a. O cerere de interogare
b. Un raport
c. Un formular
d. O comand macro
e. Un modul
7. O valoare care este atribuit automat unui cmp, atunci cnd utilizatorul nu introduce
nici o valoare n cmp, se numete:
a. Etichet (Caption)
b. Regul de validare (Validation Rule)
c. Text de validare (Validation Text)
d. Valoare iniial (Default Value)
e. Cmp memo
8. Dac U este o mulime de atribute i se manifest dependena XY, atunci regula de
inferen:
{XY, ZU} XZYZ
se numete:
a. Reflexivitatea dependenelor funcionale
b. Amplificarea dependenelor funcionale
c. Tranzitivitatea dependenelor funcionale
d. Complementarea dependenelor multivaloare
e. Tranzitivitatea dependenelor multivaloare
9. Structura care conine informaii i metode de prelucrare a acestora se numete:
a. Dicionar
b. Obiect
c. Clas
d. Ierarhie
e. Mesaj.

11.6 Testul 6
1. Precizai ordinea corect a etapelor ce trebuie urmate n proiectarea unei baze de
date:
a. alegerea SGBD-ului
b. ncrcarea datelor
c. proiectarea schemei interne
d. proiectarea schemei externe
e. proiectarea schemei conceptuale
f. analiza structural
g. analiza cerinelor informaionale
h. analiza temporal
i. integrarea modelelor
j. exploatarea i ntreinerea
2. Restriciile de integritate de comportament:
a. se definesc prin egalitatea sau inegalitatea unor valori din cadrul relaiilor
b. sunt proprii unei anumite baze de date relaionale
c. sunt obligatoriu de definit.
Precizai o restricie de comportament pentru o baz de date n care figureaz relaia:
PENSIONAR(Nume, Prenume, Vrsta, Adresa)
3. Fie relaia OLIMPIADA, ce conine informaii despre elevii participani la un concurs
de informatic organizat la Bacu:
Legitimaie
23
67
55
31
20
11

Numele
Barbu
Barbu
Constantinescu
Manoliu
Parincea
Semenov

Prenumele
Andreea
Codrin Mihai
Adela
Cristian
Maria Monica
Alexandru

Clasa
9
9
10
9
10
9

Liceul
Ferdinand I Bacu
Gh.Vrnceanu Bacu
N. Comneci Oneti
H. Coand Bacu
Letea Bacu
G. Apostu Bacu

Punctajul
68
70
61
84
50
37

S se scrie o fraz SELECT ce permite afiarea numelor i punctajului elevilor din


clasa a 9-a, care au obinut cel puin 50 de puncte, n ordinea descresctoare a punctajului.
Cte tupluri conine rezultatul? S se scrie numerele de legitimaie corespunztoare acestor
tupluri.
4. Transformai relaia de mai jos (de tip

) n dou relaii de tip 1-n:

REVISTE

CITITORI
AI Journal

PC Magazine
CD Forum

Ionu
tefan
Maria

5.
Care
sunt caracteristicile SGBD Access? Ce instrumente de ajutor ofer? Ce tipuri de obiecte pot fi
incluse ntr-o baz de date Access?

6. Ce este un depozit de date? Indicai cteva elemente specifice unui depozit de date.
7. Cum se realizeaz protecia unei baze dae date la nivel utilizator?
8. Cum pot fi accesate bazele de date Access pe Internet?
9. Aplicaie. Catedra de Informatic organizeaz un simpozion cu participare
internaional. Pentru aceasta, responsabilul cu activitatea tiinific decide implementarea
unei baze de date relaionale. Se dorete ca, utiliznd datele incluse n baza de date, s se
obin urmtoarele informaii:
- Lista seciunilor simpozionului (codul i denumirea)
- Lista lucrrilor iinifice prezentate pe seciuni
- Lista lucrrilor tiinifice pe Institute de nvmnt Superior, n numele crora s-au
nscris lucrrile la simpozion
- Lista autorilor (nume, prenume, adresa profesional i adresa personal) care vor
susine lucrri pe seciuni.
Se cere s se elaboreze modelul relaional al bazei de date.

11.7 Testul 7
1. Ce nseamn modelarea datelor i de ce este necesar?
2. n ce const optimizarea unei baze de date?
3. Ce nseamn replicarea unei baze de date?
4. Ce nseamn normalizarea datelor i care este scopul normalizrii?
5. Care sunt implicaiile accesului concurent la o baz de date?
6. Care sunt caracteristicile bazelor de date distribuite?
7. Ce este o baz de cunotine?
8. Care sunt problemele actuale ale dezvoltrii de aplicaii cu baze de date?
9. Aplicaie. Se propune realizarea informatizrii bibliotecii unei Instituii de nvmnt
Superior, folosind o baz de date relational. Se fac urmtoarele precizri:
- n bibliotec se afl exemplare ale unor lucrri de mare interes; fiecare exemplar are
un cod de identificare unic;
- Fiecare lucrare are un titlu, un numr ISBN, o editur n care apare i unul sau mai
muli autori;
- Exemplarele pot fi imprumutate de catre cadrele didactice, doctoranzi sau studeni;
- Exemplarele se mprumut n baza unui bon de mprumut, n care se pot trece mai
multe cri imprumutate;
- n momentul mprumutului se precizeaz data de mprumut i data returnrii crilor.
Cititorilor le sunt utile urmtoarele informaii:
- Lista lucrrilor existente n bibliotec;
- Lista exemplarelor existente n bibliotec pentru fiecare lucrare;
- Lista cititorilor care nu au returnat la termen exemplarele mprumutate;
- Lista lucrrilor existente n bibliotec pe o anumit tem.
Se cere s se elaboreze modelul relaional al bazei de date.

BIBLIOGRAFIE
1.

[Bas97] Bsc O. Baze de date, Editura All, Bucureti, 1997

2.

[Bro98] Browne A., Balter A. Bazele Access 95, Editura Teora, 1998

3.

[Dim99] Dima G., Dima M. FoxPro 2.5, 2.6 sub DOS, Editura Teora, 1999

4.

[Ede02] Edelhauer, E. Ionic, A. Sistemele de Gestiune a Bazelor de date Access,


FoxPro. Manual de utilizare, Editura Universitas, Petroani, 2002

5.

[Fel96] Felea, V. Baze de date relaionale. Dependene, Editura Universitii Al. I.


Cuza, Iai, 1996

6.

[Flo99] Florescu V., Stanciu V., Cozgarea G., Cozgarea A. Baze de date, Editura
Economic, Bucureti, 1999

7.

[Gro96] Grommes, B., Hampe K. Secretele sistemului FoxPro 2.5 pentru DOS,
Editura Teora, 1996

8.

[Lue99] Luers, T. Bazele Oracle 7, Editura Teora, 1999

9.

[Lun95] Lungu I., Bodea C., Bdesc G., Ioni C. Baze de date. Organizare,
proiectare i implementare, Editura All, Bucureti, 1995

10. [Lun96] Lungu I., Muat N., Velicaru M. Sistemul FoxPro 2.6. Prezentare i aplicaii,
Editura All, 1996
11. [Nas00] Nstase P., Mihai F., Coscescu L., Brbulescu B., Stanciu A., ova R.A., Covrig
L. Baze de date. Microsoft Access 2000, Editura Teora, Bucureti, 2000
12. [Opr02] Oprea D., Airinei D., Fotache M. Sisteme informaionale pentru afaceri,
Editura Polirom, 2002
13. [Tod02] Todoroi D., Micua D., Clocotici V., Linga I., apcov V., Drucioc N., Calcatin A.,
Morari M. Data Bases and Communication Tools. MS Access 2000, Editura
ASEM, Chiinu, 2002
14. [Tod04] Todoroi D., Micua D., Sptaru S., Andronatiev V., Todoroi Z., Donici S.
Databases and Multimedia Communications (Teaching Aids), Series IEEE2000, Chiinu, 2004