You are on page 1of 108

Cornel GIULVEZAN

Gabriela MIRCEA
Diana TÂRNĂVEANU
Camelia MARGEA

Timişoara, 2009

1
REFERENŢI ŞTIINŢIFICI:
Prof. univ. dr. Mihaela MUNTEAN
Prof. univ. dr. Ioan BANDU

2
3
4
CUPRINS

CUPRINS ............................................................................................. 5
OBIECTIVELE CURSULUI .............................................................. 7
Capitolul 1 INTRODUCERE .............................................................. 8
1.1. Conceptele de Dată şi Fişier ........................................................ 8
1.2. De ce baze de date? ................................................................... 12
1.3. Autoevaluare ............................................................................. 14
Capitolul 2 BAZE DE DATE – CONCEPTE ................................... 15
2.1. Conceptul de bază de date ......................................................... 15
2.2. Modelarea baze de date ............................................................. 17
2.3. Obiectivele datelor în baze de date ............................................ 21
2.4. Sisteme de gestiune a bazelor de date ........................................ 23
2.5. Funcţiunile sistemului de gestiune al bazei de date .................... 27
2.6. Componentele unui mediu SGBD.............................................. 28
2.7. Limbaje pentru baze de date ...................................................... 31
2.8. Proiectarea bazei de date ........................................................... 32
2.9. Modelul de date relaţional ......................................................... 35
2.9.1. Operatorii modelului relaţional ........................................... 43
2.9.2. Integritatea referenţială ....................................................... 44
2.10. Întrebări teoretice de auto-evaluare .......................................... 45
Capitolul 3 MICROSOFT ACCESS ................................................. 47
3.1. Noţiuni generale privind bazele de date ACCESS...................... 47
3.2. Tabelele .................................................................................... 50
3.3. Interogările ................................................................................ 52
3.4. Formularele ............................................................................... 53
3.5. Rapoartele ................................................................................. 54
3.6. Macrocomenzile şi modulele ..................................................... 55
3.7. Tipuri de fişiere în ACCESS ..................................................... 57
3.8. Teste de auto-evaluare ............................................................... 58
Capitolul 4 LIMBAJUL SQL ............................................................ 59
4.1. Prezentarea limbajului SQL ....................................................... 59

5
4.2. Limbajul SQL ŞI VBA .............................................................. 60
4.3. Descrierea limbajului SQL......................................................... 61
4.3.1. Instrucţiunea SELECT ........................................................ 61
4.3.2. Clauza FROM ..................................................................... 62
4.3.3. Clauza WHERE .................................................................. 63
4.3.4. Clauza GROUP BY ............................................................ 63
4.3.5. Clauza HAVING................................................................. 64
4.3.6. Clauza ORDER BY ............................................................ 64
4.3.7. Instrucţiunea UPDATE ....................................................... 65
4.3.8. Instrucţiunea DELETE ........................................................ 65
4.3.9. Instrucţiunea INSERT INTO ............................................... 66
4.3.10. Alte instrucţiuni ................................................................ 67
4.4. Exemple de utilizare a interogărilor SQL ................................... 68
4.4.1. Actualizarea înregistrărilor .................................................. 68
4.4.2. Încărcarea unei liste derulante ............................................. 69
4.5. Teste de auto-evaluare ............................................................... 70
PARTEA PRACTICĂ........................................................................ 71
Aplicaţii practice rezolvate ................................................................ 71
5.1. Aplicaţia 1 ................................................................................. 71
5.1.1. Aplicaţie propusă .................................................................... 78
5.1.2. Aplicaţie propusă .................................................................... 79
5.2. Aplicaţia 2 ................................................................................. 79
5.2.1. Aplicaţie propusă: ................................................................... 86
5.3. Aplicaţia 3 ................................................................................. 86
5.3.1. Aplicaţie propusă .................................................................... 93
5.4. Aplicaţia 4 ................................................................................. 93
5.4.1. Aplicaţie propusă .................................................................... 96
5.5. Aplicaţia 5 ................................................................................. 96
5.5.1 Aplicaţie propusă ................................................................... 100
Bibliografie ....................................................................................... 101
GLOSAR DE TERMENI ................................................................. 103

6
OBIECTIVELE CURSULUI
Evoluţia diferitelor metode şi tehnici de organizare a datelor, pe
suporturi tehnice adresabile (memorii externe), a fost determinată
de necesitatea de a avea un acces cât mai rapid şi mai uşor la un
volum cât mai mare de date.
Sistemele de gestiune a bazelor de date reprezintă modalitatea
principală de structurare şi organizare a datelor în cadrul
sistemelor informatice. Obiectivul unei bazei de date este de a
separa descrierea datelor faţă de programele de aplicaţii,
ajungîndu-se la abstractizarea datelor memorate.
Obiectivele cursului sunt însuşirea noţiunilor fundamentale şi
conceptelor de bază din domeniu, precum şi capacitatea de a
iniţia, proiecta şi implementa o bază de date. Ne propunem să
răspundem la întrebările: ce este o bază de date, cum este
structurată aceasta, cum se proiectează?
Pentru aceasta considerăm necesare:
 înţelegerea impactului tehnologiilor informaţiei şi a
comunicaţiilor (TIC) în societate, a conexiunilor dintre
informatică şi alte obiecte de studiu, precum şi identificarea
posibilităţilor de utilizare a SGBD-urilor în disciplinele
specializării de bază;
 familiarizarea cu instrumentele oferite de sistemele de gestiune
a bazelor de date (tabele, formulare, interogări, rapoarte,
macro-uri, proceduri VBA);
 dezvoltarea abilităţii de a crea o aplicaţie user-friendly, cu o
interfaţă grafică atractivă;
 iniţierea în limbajul SQL – Structured Query Language;
 dezvoltarea unei culturi informatice.

Octombrie, 2009 Autorii

7
PARTEA TEORETICĂ

CAPITOLUL 1
INTRODUCERE
Organizarea datelor în vederea prelucrării pe calculator este o
activitate cel puţin la fel de importantă ca şi scrierea progamelor.
În acest prim capitol vor fi prezentate noţiuni legate de modul de
organizare a datelor, plecând de la conceptele de bază de „dată”
şi „fişier”, prezentând o clasificare a datelor, a tipurilor de
structuri de date existente şi a organizării datelor în fişiere.
Sistemele informatice pot fi realizate fie cu ajutorul unor aplicaţii
care utilizează fişiere independente sau integrate, fie cu ajutorul
unor aplicaţii care accesează o structură complexă numită bază de
date. Sistemului informatic are două componente principale şi
anume datele şi programele, acestea fiind într-o strânsă
interdependenţă. O bază de date are mijloace proprii pentru
crearea şi evoluţia în timp a structurii, realizând o departajare
între datele stocate şi programele care le accesează.

1.1. Conceptele de Dată şi Fişier


Apariţia şi dezvoltarea rapidă a bazelor de date se datorează unei
multitudini de factori de natură tehnică şi socio-economică. Creşterea
necesarului şi implicit a consumului de informaţie a avut ca prim rezultat
creşterea cantităţii de informaţie stocată pe suporturi de memorare externă şi
optimizarea tehnicilor de stocare şi regăsire a informaţiei.
Chiar de la primele aplicaţii informatice realizate cu ajutorul
calculatorului s-a pus problema utilizării unor tehnici eficiente de organizare,
stocare şi regăsire a datelor. O informaţie codificată şi stocată pe un suport de
memorare reprezintă ceea ce numim „dată”. Din punctul de vedere al prelucrării
de calculator, în cadrul aplicaţiilor, datele se definesc cu ajutorul unui nume
(identificator), a atributelor pe care le are şi de o valoare. Rezolvarea
problemelor concrete cu ajutorul calculatorului presupune definirea unui
algoritm adecvat pentru rezolvarea fiecărei probleme. Un algoritm este definit
ca fiind o succesiune finită, corect definită şi fără ambiguităţi de operaţii
elementare care se aplică asupra unei mulţimi de date de intrare pentru a se
obţine un rezultat. Algoritmul trebuie sa conducă la acelaşi rezultat de fiecare
dată când se aplică asupra aceleaşi mulţimi de date de intrare. Calculatorul
prelucrează doar date reprezentate cu ajutorului unui cod binar, motiv pentru

8
care datele sunt din punctul de vedere al calculatorului şiruri de cifre binare, de
biţi. Semnificaţia şirurilor de biţi depinde de codul pentru codificarea
informaţiei, de modul de utilizare a acesteia de către programator în cadrul
aplicaţiei informatice şi de limbajul de programare folosit. Fiecare limbaj de
programare are reguli specifice pentru definirea şi utilizarea datelor.
Organizarea datelor reprezintă procesul de identificare, definire,
evaluare, structurare şi memorare a informaţiilor, în cadrul unui sistem
informaţional. Prin organizarea datelor se realizează gruparea datelor în colecţii
de date omogene, se stabilesc care sunt relaţiilor dintre date, dintre elementele
colecţiilor şi dintre colecţii, precum şi modul de stocare a datelor pe suportul
fizic de memorare.
Datele pot fi clasificate în funcţie de modul de alocare al memoriei,
astfel existând date de tip static şi date de tip dinamic. La datele de tip static,
memoria este alocată la începutul execuţiei programului, rămânând ocupată de
respectivele date pe întreaga durată a execuţiei, pe când la datele de tip dinamic
memoria este alocată în momentul execuţiei programului, existând instrucţiuni
care permit alocarea memoriei atunci când datele sunt necesare şi alte
instrucţiuni care permit eliberarea respectivei zone de memorie în momentul în
care datele nu mai sunt necesare.
Datele trebuie privite sub două aspecte: fizic şi logic. Din punct de
vedere fizic, în cazul stocării şi prelucrării cu ajutorul calculatorului datele sunt
şiruri de biţi. Din punct de vedere logic, datele au o anumită semnificaţie şi sunt
de mai mult tipuri, funcţie de semnificaţia lor.
Datele pot fi simple (elementare), respectiv compuse (structurate).
Datele simple (elementare) sunt date independente unele de altele din
punctul de vedere fizic, adică al reprezentării pe suportul de memorare, chiar
dacă din punct de vedere logic există interdependenţe. Tipul de dată precizează
care sunt valorile datei. Dacă pe parcursul procesului de prelucrare data
păstrează aceeaşi valoare este numită dată constantă. Pentru datele constante se
utilizează ca identificator valoarea acestora. Dacă valorile datei sunt modificate
în timpul procesului de prelucrare datele se numesc date variabile sau variabile.
În mod uzual pentru date elementare se folosesc ca tipuri de dată:
 tipul numeric – include numerele întregi, reale si complexe având
diferite reprezentări (virgulă fixă, virgulă mobilă, precizie simplă,
precizie dublă etc.). Asupra lor se pot realiza operaţii de adunare,
scădere, înmulţire, împărţire etc.;
 tipul logic (boolean) – utilizat pentru reprezentarea valorilor logice
“Adevărat”, respective “Fals” cu ajutorul unor valori numerice,
asupra acestora putându-se efectua operaţii logice precum negaţia,
conjuncţia, disjuncţia;

9
 tipul caracter (text, string) – permite reprezentarea unor succesiuni
de caractere folosind mulţimi de simboluri alfanumerice,
reprezentarea pe suporturile de memorare utilizând codul ASCII.
Asupra acestora se pot defini operaţii de căutare, concatenare,
ordonare;
 tipul dată calendaristică, timp (Date, Time, DateTime) –
reprezentarea internă a acestora făcându-se de regulă cu ajutorul
unor valori numerice.
Datele compuse numite şi structuri de date sunt colecţii (mulţimi) de
date elementare între care există relaţii structurale, omogene din punct de vedere
al descrierii şi al prelucrării. Componentele unei structuri formează un întreg
astfel încât prelucrarea se poate face atât la nivelul structurii de date cât şi la
nivelul fiecărei componente, care poartă numele de câmp.
Majoritatea limbajelor de programare operează cu două categorii de
structuri: structuri interne şi structuri externe.
Structurile de date interne se referă la modul de amplasare în memoria
internă a datelor elementare aparţinând unei colecţii. În această categorie sunt
incluse structurile de tip tablou (masiv), înregistrare (articol), mulţime, listă şi
arbore.
Structurile externe se referă la modul de memorare a datelor pe
suporturi de memorare externă. Din această categorie fac parte fişierele şi
bazele de date.
Datele, văzute iniţial ca şiruri de caractere, care reproduceau
caracteristicile unor obiecte, fenomene, fapte, evenimente, respectiv concepte
din lumea reală, datorită factorului de repetare au fost organizate în structuri
care poartă numele de fişier. Fişierul este o structură care grupează date dintr-
un anumit domeniu care au anumite caracteristici comune. Fişierele pot fi cu
organizare definită, respectiv nedefinită. Accesul la datele ce formează fişierul
depinde de structura ce defineşte fişierul, adică de organizarea datelor şi de
suportul de memorare. Există doi parametrii ce măsoară performanţele accesului
la date: cantitatea de date transferată şi timpul de răspuns. Suportul de
memorare poate fi adresabil sau nu, poate fi reutilizabil sau nu, poate fi
magnetic, optic sau de altă natură. Accesul la date poate fi secvenţial sau direct.
Accesul direct este permis doar de suporturile de memorare adresabile, adică
acele suporturi de memorare care permit accesul direct pe baza unei adrese la o
anumită zonă de pe suportul de memorare, numită locaţie sau bloc. Principiile
de organizare a fişierelor şi tehnicile de regăsire a datelor stocate în fişiere
reprezintă o transpunere în cadrul aplicaţiilor informatice a tehnicilor utilizate în
sisteme de prelucrare manuală a informaţiei. Fişierul fiind o colecţie de date
trebuie considerat ca având două structuri distincte suprapuse, şi anume, o

10
structură fizică şi una logică, cea logică fiind dată de semnificaţia datelor. Din
punct de vedere fizic fişierul este o colecţie finită de înregistrări fizice, iar din
punctul de vedere al semnificaţiei, o colecţie de înregistrări logice, numite şi
articole.
Fişierul ocupă un anumit spaţiu pe suportul de memorare extern, spaţiul
alocat putând fi continuu sau nu. Componentele sistemului de operare
gestionează în mod transparent alocarea fizică pe suportul de memorare externă
precum şi accesul la fişiere.
Din punctul de vedere al sistemului de operare fişierul are un nume şi
eventual o extensie de fişier, are asociată o mulţime de atribute care depind de
sistemul de operare (Read Only, Hidden, System, Archive etc.), informaţii
privind momentul creării, al ultimei modificări, al ultimei accesări, privind
dimensiunea ca număr de octeţi etc. Extensia oferă sistemului de operare
informaţii privind conţinutul fişierului.
Din punctul de vedere al aplicaţiilor fişierul are un conţinut
informaţional, un anumit mod de organizare, permite unul sau mai multe
moduri de acces etc.
Datele într-un fişier sunt structurate în înregistrări. Organizarea
înregistrărilor într-un fişier poate fi privită atât ca organizare logică cât şi ca
organizare fizică.
Din punctul de vedere al organizării fizice datele ce formează fişierul
sunt structurate în înregistrări fizice. Organizarea fizică reprezintă o organizare
internă care depinde de resursele fizice ale calculatorului şi este supusă rigorilor
sistemului de operare. Înregistrarea fizică reprezintă numărul de octeţi care se
transferă între memoria internă a calculatorului şi suportul de memorare extern
(scriere), respectiv de pe suportul extern în memorie (citire). Pentru optimizarea
transferului se folosesc zone de memorie numite zone tampon, sau buffer, prin
intermediul cărora se transferă mai multe înregistrări fizice vecine cu
înregistrarea de care este nevoie.
Din punct de vedere al organizării logice datele conţinute într-un fişier
sunt structurate în înregistrări logice. În principiu, un fişier conţine acelaşi tip
de înregistrări logice, dispuse într-o anumită ordine. Mulţimea înregistrărilor
logice conţinute într-un fişier reprezintă o mărime finită şi caracterizează, în
mod direct, mărimea oricărui fişier.
Din punct de vedere al utilizatorului, înregistrarea logică reprezintă şi
unitatea de acces la datele conţinute într-un fişier. Organizarea logică a
înregistrărilor în fişier, ca mod de organizare externă a datelor, este impusă de
natura aplicaţiilor şi cerinţele de prelucrare.
Datele conţinute într-o înregistrare logică caracterizează o entitate
informaţională, se referă la o clasă de obiecte, fenomene, procese etc., în timp

11
ce datele ce formează o înregistrare fizică caracterizează o unitate de stocare
fizică pe suportul de memorie a calculatorului. Utilizatorul operează cu
concepte, privind organizarea datelor, la nivel logic, în vreme ce sistemul de
operare stochează şi manipulează datele, pe suportul de memorie, numai la nivel
de înregistrare fizică. În funcţie de natura şi complexitatea datelor, lungimea
unei înregistrări logice poate să corespundă sau nu cu lungimea unei înregistrări
fizice. O înregistrare fizică poate să conţină mai multe înregistrări logice,
respective o înregistrare logică poate fi stocată în mai multe înregistrări fizice.

1.2. De ce baze de date?

Totalitate informaţiilor care definesc şi menţin în funcţiune un sistem


real formează sistemul informaţional al sistemului real, iar în cadrul sistemului
informaţional putem delimita sistemul informatic, care reprezintă acea parte a
sistemului informaţional în care informaţia este stocată şi procesată cu ajutorul
tehnicii de calcul. Sistemele informatice pot fi realizate fie cu ajutorul unor
aplicaţii care utilizează fişiere independente sau integrate, fie cu ajutorul unor
aplicaţii care accesează o structură complexă numită bază de date. Baza de date
are mijloace proprii pentru crearea şi evoluţia în timp a structurii. Organizarea
datelor în fişiere aparţinând fiecărei aplicaţii reprezintă o metodă rigidă care are
mai multe dezavantaje pentru utilizatori. Cel mai mare dezavantaj este acela că
modificările în structura unui fişier obligă la modificarea tuturor programelor
care utilizează fişierul a cărui structură a fost modificată. Din punctul de vedere
al utilizatorului sistemele bazate pe fişiere reprezintă un progres extraordinar
faţă de sistemele manuale, totuşi acestea fiind dependente de programele de
aplicaţie, orice interogare necesită scrierea unui program şi integrarea acestuia
în sistemul implementat, obţinerea de noi informaţii spontan fiind practic
imposibilă.
Realizarea sistemelor informatice cu ajutorul aplicaţiilor independente
presupune ca fiecare astfel de aplicaţie să definească şi să întreţină propriile
structuri de date organizate de regulă în fişiere. În acest caz are loc separarea şi
izolarea datelor, precum şi legarea acestora de fiecare aplicaţie. Datorită
modului de abordare descentralizat are loc o creştere a redundanţei datelor,
adică datele vor fi multiplicate necontrolat. Redundanţa reprezintă o proprietate
a unei colecţii de date care se referă la faptul că unele componente ale colecţiei
de date sunt memorate de mai multe ori pe suportul de memorare. Multiplicarea
datelor implică costuri suplimentare şi în plus, creşte riscul alterării integrităţii
datelor, adică apariţia de neconcordanţe. În cazul sistemelor reale complexe

12
creşterea redundanţei are ca efect apariţia de erori frecvente datorate
neconcordanţei informaţiilor memorate în fişiere aparţinând unor aplicaţii
diferite, rezultând costuri de actualizare mărite corespunzător.
Sistemului informatic are două componente principale şi anume datele
şi programele, acestea fiind într-o strânsă interdependenţă.
În codul program al fiecărei aplicaţii creat într-un limbaj de programare
clasic se definesc structurile de date, atât cele interne ale aplicaţiei respective
cât şi structura logică a fişierelor utilizate de aplicaţia respectivă, împreună cu
modul de acces la datele stocate în aceste fişiere. În cazul în care structura
logică a unei înregistrări este modificată prin adăugarea unui câmp, sau
schimbarea dimensiunii unui câmp, toate programele care operează cu fişierul a
cărui structură a fost modificată trebuie actualizate. De asemenea orice
modificare a semnificaţiei, respectiv a modului de reprezentarea a informaţiei
respective în sistemul real impune modificarea tuturor aplicaţiilor care folosesc
informaţia respectivă, ceea ce reprezintă în cazul sistemelor informatice
complexe un efort de programare considerabil, precum şi costuri ridicate.
Această caracteristică a sistemelor bazate pe fişiere este cunoscută sub
denumirea de dependenţă program-date. Deoarece structura fişierului este
încorporată în programele de aplicaţie, ea este dependentă de limbajul în care
sunt scrise programele în este realizată aplicaţia respectivă.
Atunci când datele sunt izolate în fişiere aparţinând unor aplicaţii
independente, accesarea datelor de care este nevoie la un moment dat se
realizează cu mare greutate deoarece programatorul trebuie să sincronizeze
prelucrarea simultană a tuturor fişierelor aplicaţiilor, dificultatea crescând odată
cu numărul de fişiere. Structura fişierelor este încorporată în programele de
aplicaţie, fiind dependentă de limbajul de programare folosit pentru fiecare
aplicaţie. Mai mult chiar, fiecare interogare a fondului de date stocate în
fişierele independente se realizează doar prin intermediul programelor de
aplicaţie, interogarea fiind dependentă de programatorul care a realizat aplicaţia
şi chiar mai mult de limbajul de programare folosit. În sistemele complexe,
odată cu creşterea necesarului de informaţie există riscul ca satisfacerea
necesarului de informaţie prin noi programe să nu poată fi realizată într-un timp
optim. Reducerea timpului alocat analizei precum şi proiectării de noi aplicaţii
are ca rezultat obţinerea de programe inadecvate sau ineficiente pentru
îndeplinire cerinţelor utilizatorilor, de regulă cu o documentaţie limitată şi greu
de întreţinut. În astfel de condiţii securitatea datelor devine limitată, iar
integritatea datelor est practic imposibil de asigurat.
Limitele sistemelor bazate pe fişiere independente se datorează
următorilor doi factori:
 definiţia datelor este încorporată în programele de aplicaţie,

13
 controlul accesului şi cel al manipulării datelor se realizează
exclusiv prin intermediul programelor de aplicaţie.
Pentru ca un sistem informatic să fie eficient este necesară o nouă
abordare care să scoată în afara programelor de aplicaţie definirea, controlul şi
manipularea datelor. Aceasta se poate realiza cu ajutorul bazei de date şi a
sistemului de gestiune a bazelor de date.

1.3. Autoevaluare

1. Explicaţi:
a. Noţiunea de dată;
b. Organizarea datelor;
c. Date constante, date variabile;
d. Noţiune de fişier;
e. Tipuri de date simple;
f. Date compuse;
g. Redundanţa datelor;
h. Înregistrare fizică şi înregistrare logică;
i. Dependenţa date-program.

2. Analizaţi critic noţiunile de dată elementară şi dată compusă.

14
CAPITOLUL 2
BAZE DE DATE – CONCEPTE
Baza de date realizează separarea definiţiei datelor de programele
de aplicaţie. Ne propunem o trecere în revistă a avantajelor ce
decurg din organizarea datelor în baze de date, precum şi a
principalelor concepte din teoria bazelor de date. Vom prezenta
mai multe puncte de vedere legate de definiţia bazei de date,
insistând asupra principalelor caracteristici ale bazelor de date,
modelarea bazei de date, obiectivele datelor în baze de date,
definiţia, funcţiunile şi componentele unui sistem de gestiune a
bazelor de date. Am considerat necesare prezentarea conceptelor
de limbaje pentru baze de date, principalele principii pe care se
bazează proiectarea bazelor de date şi modelul de date relaţional.

2.1. Conceptul de bază de date

Pentru conceptul de bază de date există un număr foarte mare de


definiţii, adesea contradictorii, cu atât mai mult cu cât conceptul a fost în
continuă evoluţie.

Baza de date:
 reprezintă o colecţie partajată de date, între care există relaţii logice
(şi o descriere a acestor date), proiectată pentru a satisface
necesităţile informaţionale ale unei organizaţii;
 este o colecţie de date operaţionale folosite de către aplicaţiile
sistem ale unei organizaţii;
 este un ansamblu structurat de date coerent, fără redundanţă inutilă,
astfel încât aceasta pot fi prelucrate eficient de mai mulţi utilizatori
într-un mod concurent;
 reprezintă un ansamblu de date înregistrate pe suporturi accesibile
calculatorului pentru a satisface simultan mai mulţi utilizatori de o
manieră selectivă şi într-un timp oportun;
 se defineşte ca un ansamblu de date elementare sau structurate,
accesibile unei comunităţi de utilizatori.

15
Baza de date este un ansamblu structurat de date legate structural între
ele, un depozit de date unic definit o singură dată şi utilizat simultan de mai
mulţi utilizatori. Baza de date este o resursă comună şi partajată. Baza de date
conţine nu numai date ci şi descrierea acestora. Descrierea datelor este
cunoscută sub denumirea de dicţionar de date (catalog de sistem, sau meta-
date) şi reprezintă date despre date. Prin faptul ca baza de date conţine şi
descrierea datelor se realizează independenţa program - date. Baza de date
realizează separarea definiţiei datelor de programele de aplicaţie. Prin această
abstractizare a datelor devine posibilă modificarea definiţiei unei date fără a
afecta utilizatorii acesteia cu condiţia ca semnificaţia datei respective, adică
definiţia externă a acesteia, să rămână aceeaşi.
Ceea ce este important de reţinut referitor la conceptul de bază de date
este aceea că el nu poate fi definit complet decât dacă se au în vedere două
unghiuri de vedere diferite şi legătura dintre acestea:
 caracteristicile bazei de date din punctul de vedere al utilităţii în
cadrul sistemului real în care se implementează, respectiv locul şi
rolul bazei de date în cadrul sistemului informaţional-decizional,
schema externă, nivelul extern (viziunea externă);
 caracteristicile tehnice ale bazei de date, respectiv locul şi rolul
bazei de date în cadrul sistemului de prelucrarea datelor, schema
internă, nivelul intern (viziunea internă);
 legătura dintre cele două viziuni, cea externă şi cea internă este
realizată de schema conceptuală (nivelul conceptual), care are
rolul de a constitui schema logică a întregii baze de date, adică
reprezintă o imagine completă a cerinţelor organizaţiei privind
datele, fiind independentă de orice consideraţii privind stocarea.
Standardizarea în domeniul bazelor de date s-a impus de la începutul
anilor 70 impunându-se pentru baza de date trei niveluri de abstractizare, adică
trei niveluri distincte la care pot fi descrise datele. Aceasta formează o
arhitectură cu trei niveluri, cuprinzând un nivel extern, unul conceptual şi unul
intern. Pentru fiecare nivel se defineşte o schemă corespunzătoarea a bazei de
date. Obiectivul arhitecturii cu trei niveluri este separarea vederii fiecărui
utilizator asupra bazei de date de modul în care ea este reprezentată fizic.
Viziunea utilizatorului individual se numeşte vedere externă sau
model extern, la nivel extern existând o mulţime de vederi externe, de sub-
scheme externe, corespunzătoare fiecărui utilizator individual. O vedere
externă poate fi considerată ca fiind din punctul de vedere al utilizatorului
individual conţinutul bazei de date, adică ceea ce „vede” el din baza de date.
Acest nivel descrie acea parte a bazei de date care este relevantă pentru fiecare
utilizator schema externă fiind formată din mulţimea de sub-schemelor externe.

16
Schema conceptuală este o reprezentare a tuturor informaţiilor conţinute de
baza de date într-o formă abstractă. Ea reprezintă o viziune, o vedere a datelor
aşa cum sunt ele în realitate, fără a ţine cont de modul în care vede datele
fiecare utilizator. Nivelul conceptual reprezintă o vedere generală a bazei de
date. Acest nivel descrie ce date sunt stocate în baza de date şi relaţiile dintre
acestea. Pentru o bază de date există o singură schemă conceptuală. Vederea
internă precizează modul în care se memorează efectiv datele ce formează baza
de date şi este descrisă de schema internă a bazei de date. Nivelul intern este
reprezentarea fizică a bazei de date pe calculator. Acest nivel descrie cum sunt
stocate datele în baza de date precum şi metodele de acces, criteriile de ordonare
şi regăsire pe baza unor criterii de performanţă şi flexibilitate care asigură
performanţe optime. Pentru baza de date există o singură schemă externă.
Pentru a stabili corespondenţa între fiecare schemă externă şi schema
internă, în cadrul bazei de date există mecanisme care folosesc informaţiile din
schema conceptuală. Fiecare sub-schemă externă este o imagine a schemei
conceptuale.
Trebuie să se facă distincţie între descrierea bazei de date, care
constituie schema bazei de date şi baza de date însăşi. Schema bazei de date este
definită în cursul procesului de proiectare a bazei de date, modificările
ulterioare fiind nesemnificative. Datele reale din baza de date pot fi modificate
frecvent. Mulţimea de valori concrete stocate, la un moment dat, se numeşte
instanţă a bazei de date.
Descrierea generală a bazei de date se numeşte schema bazei de date şi
vizează structurile de date, legăturile dintre date şi regulile care asigură coerenţa
datelor. Pentru o bază de date există trei tipuri diferite de scheme care sunt în
concordanţă cu nivelurile de abstractizare ale arhitecturii bazei de date.

2.2. Modelarea baze de date

Numim model de date o colecţie integrată de concepte, necesare


descrierii datelor, a relaţiilor dintre date şi a constrângerilor asupra datelor dintr-
o organizaţie. Modelul de date este o reprezentare abstractă a obiectelor şi a
evenimentelor lumii reale şi a asocierilor dintre acestea, cu ajutorul căruia se
reprezintă o organizaţie. Un model de date este definit sub trei aspecte, şi anume
o componentă structurală, care cuprinde regulile de definire a datelor, o
componentă de manipulare datelor, care defineşte tipurile de operaţii permise
asupra datelor şi o mulţime de reguli care garantează integritatea şi coerenţa
datelor. Pentru modelarea datelor la nivel conceptual şi extern se folosesc

17
modele de date bazate pe obiecte şi modele de date bazate pe înregistrări,
iar la nivel fizic modele de date fizice. Modelele de date bazate pe obiecte
utilizează conceptele: entitate, atribut şi relaţie. Cele mai cunoscute tipuri de
modele de date bazate pe obiecte sunt modelul Entitate - Relaţie, modelul
semantic, modelul funcţional şi modelul orientat spre obiecte. Modelul
Entitate – Relaţie reprezintă un model de date conceptual de nivel înalt,
neformalizat, care descrie structura bazei de date, precum şi tranzacţiile de
regăsire, respectiv de reactualizare asociate. Acest model, permite o
reprezentare a unui sistem real, grupând elementele sistemului real în entităţi şi
asocieri (legături) între entităţi. Modelul de date orientat spre obiecte extinde
definiţia conceptului entitate în sensul că se descrie atât starea prin atribute, cât
şi comportamentul prin acţiunile asociate. Obiectul încapsulează starea şi
comportamentul. Modelarea conceptuală presupune realizarea unui model de
date pentru informaţiile care există în cadrul unei organizaţii independent de
detaliile de implementare.
Analiza necesităţilor informaţionale ale unei organizaţii presupune
identificarea entităţilor, a atributelor acestora şi a relaţiilor dintre entităţi.
O Entitate (entity) este un obiect care poate fi identificat în mod
distinctiv (persoană, loc, concept, activitate, eveniment), care este semnificativ
pentru sistemul real, un obiect despre care dorim să înregistrăm informaţii.
Un atribut (attribute) este o proprietate care descrie un aspect oarecare
al obiectului pe care dorim să îl definim. Entităţile similare care pot fi descrise
prin aceleaşi atribute formează un tip de entitate (entity type), iar colecţia
formată din toate entităţile de acelaşi tip formează o mulţime de entităţi (entity
set).
Entitatea este descrisă de atributele sale relevante. Fiecare atribut
reprezintă o caracteristică semnificativă, atributele având rolul de a defini
conţinutul unei identităţi. Pentru fiecare atribut există o mulţime de valori
posibile, potenţiale, care formează un domeniu de valori. Atributele pot fi
simple sau compuse. Atributul simplu are o singură componentă cu existenţă
independentă. Atributul compus este format din mai multe componente, fiecare
având o existenţă independentă. Prin valori concrete date atributelor ce definesc
o entitate se obţine o realizare, o apariţie, o instanţă a respectivei entităţi. Un
atribut poate avea o singură valoare, sau mai multe valori pentru o anumită
entitate. Este posibil ca valoarea unui atribut să fie derivabilă din valoarea unui
alt atribut sau din valorile mai multor atribute ale respectivei entităţi sau ale
altor entităţi.
Numim cheie candidat atributul sau mulţimea de atribute ale unei
entităţi care identifică în mod unic apariţiile individuale ale unui tip de entitate.
Un tip de entitate poate avea mai multe chei candidat. Pe baza unor consideraţii

18
privind privind caracterul unic, precum şi de structura cheilor candidat din
mulţimea de chei candidat se alege o cheie candidat care va fi numită cheie
primară, iar celelalte vor fi numire chei alternative. O cheie candidat formată
din mai multe atribute va fi numită cheie compusă.
Numim tip de relaţie o asociere semnificativă între tipuri de entităţi.
Un tip de relaţie are asociată o anumită funcţie. Fiecare prezenţă unic
identificabilă a unui tip de relaţie se numeşte relaţie. Numim relaţie
(relationship) o asociere, o comunicare, o corespondenţă între două sau mai
entităţi. Relaţia exprimă raportul existent între respectivele entităţi şi există doar
dacă entităţile există. O valoare a unei relaţii este o comunicare între valorile
entităţilor pe care le leagă. Entităţile implicate într-o anumită relaţie se numesc
participanţi în relaţie. O relaţie în care o anumită entitate participă mai mult
decât o dată având roluri diferite se numeşte relaţie recursivă. O relaţie este
caracterizată prin gradul relaţiei, care exprimă numărul de entităţi participante.
Din punctul de vedere al numărului de mulţimi de entităţi participante entităţile
pot fi binare, respectiv multiple. Asocierile binare sunt de trei tipuri, în funcţie
de numărul elementelor din fiecare dintre cele două mulţimi puse în
corespondenţă:
- asocierea unul - la - unul (one-to-one);

- asocierea unul – la - mai multe (one-to-many) şi mai multe – la -


unul (many-to-one);

- asocierea mai multe – la - mai multe (many-to-many)

19
Între date există diverse relaţii (legături). Între datele ce aparţin unor
tipuri de entităţi pot exista două categorii de legături: prin apartenenţa datelor la
entitate; dintre entităţile de acelaşi tip sau de tipuri diferite1.
Exemple
1. Fie A mulţimea persoanelor ce lucrează într-o societate comercială.
Între datele acestei mulţimi se pot stabili relaţii de tipul:
− x are acceaşi profesie cu y;
− x este soţia lui y;
− x este mai în vârstă ca y etc.
2. Fie două clase de entităţi: PRODUSE şi BENEFICIARI. Între datele
acestor două clase de entităţi pot exista următoarele relaţii:
− între entităţile clasei PRODUSE, date de faptul că un produs
poate intra în alcătuirea altui produs;
− între clasele de entităţi PRODUSE şi BENEFICIARI, date de
faptul că un produs poate fi livrat la unul sau mai mulţi
beneficiari iar un beneficiar poate primi unul sau mai multe
produse.

Constrângerile care pot fi impuse entităţilor participante într-o relaţie


trebuie să reflecte restricţiile asupra relaţiilor, aşa cum sunt ele în sistemul real.
Există două tipuri de constrângeri asupra relaţiilor, numire constrângeri de
cardinalitate şi constrângeri de participare. Regulile care definesc
cardinalitatea sunt numite reguli de afaceri. Toate regulile de afaceri din
sistemul real trebuie identificate şi reprezentate în modelul de date. Prin
constrângerile de participare se stabileşte Atunci când existenţa unei entităţi
depinde de o altă entitate de care este legată printr-o relaţie spunem că există o
constrângere de participare. Constrângerea de participare poate fi totală
(obligatorie) atunci când existenţa unei entităţi necesită existenţa unei entităţi
asociate printr-o relaţie, respectiv constrângere de participare este parţială
(opţională) atunci când constrângerea nu condiţionează când existenţa entităţii.
Baza de date este o transpunere fizică, în calculator, a modelului de
date, care conţine entităţile, atributele ce definesc entităţile şi relaţiile dintre
entităţi.

1
Lungu I., Bodea Constanţa, Bădescu Georgeta, Ioniţă Cristina; Baze de date. Organizare,
proiectare şi implementare, Editura All Educational, Bucureşti, 1995, p. 3

20
2.3. Obiectivele datelor în baze de date

Datele reprezintă suportul real pentru informaţia necesară subsistemului


de decizie. Datele sunt stocate în structuri complexe numite baze de date.
Utilizarea bazelor de date în cadrul sistemelor informatice are următoarele
obiective fundamentale din punctul de vedere al datelor:
1. Independenţa fizică – reprezintă obiectivul esenţial, şi anume,
realizarea independenţei structurilor de stocare în raport cu structurile
de date din sistemul real. În baza de date mulţimea de date se defineşte
fără a ţine cont de forma datelor în sistemul real, luând în considerare
doar accesul rapid la date cu performanţe prestabilite. Aceasta se
realizează prin asigurarea independenţei fizice a datelor faţă de
programele de aplicaţie, adică orice modificare organizării interne a
datelor şi a structurilor de înregistrare nu va afecta programele de
aplicaţie.
2. Independenţa logică – presupune că fiecare utilizator, respectiv grup
de utilizatori are o sub-schemă externă particulară proprie fără a afecta
schema generală a bazei de date. Fiecare grup poate să cunoască doar o
parte a semanticii datelor, să vadă doar o submulţime a datelor şi numai
în forma de care are nevoie. Schema conceptuală a bazei de date fiind o
sinteză a schemelor externe nu va fi afectată de evoluţia în timp a unei
sub-scheme particulare, fiecare grup de utilizatori putând să-şi modifice
propria sub-schemă fără a afecta schema conceptuală.
3. Manipularea datelor direct de către utilizatorul final – face ca datele
să fie văzute de utilizatori independent de implementarea datelor în
baza de date şi pot manipula datele cu ajutorul unor limbaje ne-
procedurale foarte apropiate de limbajul natural. Utilizatorul poate
obţine informaţii din baza de date fără să cunoască în întregime
organizarea complexă a bazei de date. Realizarea acestui obiectiv are ca
rezultat îmbunătăţirea accesibilităţii datelor şi a capacităţii de răspuns.
Utilizatorul va putea accesa baza de date cel mai adesea prin
intermediul unei interfeţe prietenoase în asociere cu un limbaj ne-
procedural, care permit un dialog simplu şi eficient pentru actualizarea
şi exploatarea bazei de date. Utilizatorii nu cunosc structura întregii
baze de date, dar pot, prin utilizarea un limbaj apropiat de limbajul
natural să acceseze procedurile de actualizare, interogare şi afişarea
datelor din baza de date. Sistemul informaţional are o mult mai mare
funcţionalitate potenţială deoarece prin utilizarea unor instrumente

21
adecvate devine posibilă interogarea ad-hoc a colecţiei de date de către
utilizatorul final, consumatorul de informaţie, eliminându-se astfel
intermediarul, adică personalul calificat care are menirea de a crea
aplicaţia informatică.
4. Asigurarea unei redundanţe minime şi controlate a datelor – este al
doilea obiectiv major al organizării datelor în baze de date. Aceasta
înseamnă că se urmăreşte pe cât posibil ca fiecare dată să apară numai o
singură dată în baza de date, indiferent de numărul de utilizatori care o
accesează . Duplicarea datelor se păstrează doar pentru a asigura
coerenţa bazei de date, redundanţa, trebuie redusă la minim şi menţinută
sub control. Redundanţa minimă se asigură prin tehnicile de proiectare a
bazei de date.
5. Creşterea cantităţii de informaţii disponibile – prin stocarea în baza
de date a datelor generate de un departament al unei organizaţii devine
posibilă accesarea lor de toţi membrii organizaţiei. Prin utilizarea bazei
de date, aceasta fiind o colecţie unică de date împreună cu legăturile
logice existente între date, utilizatorul poate obţine toate datele legate
logic de o anumită dată pe care acesta o foloseşte. Prin integrarea
datelor devine posibil accesul la date pentru toţi membrii unei
organizaţii pentru care o anumită date este semnificativă.
6. Coerenţa şi integritatea datelor – coerenţa datelor se realizează prin
verificarea tuturor dependenţelor existente între date în sistemul real.
Consistenţa datelor este asigurată prin faptul că actualizarea datelor va
fi percepută de fiecare utilizator al bazei de date nu doar de utilizatorii
care au realizat actualizarea în plus datorită unicităţii datei stocate în
baza de date orice actualizare a valorii sale trebuie efectuată o singură
date, iar noua valoare va fi disponibilă instantaneu pentru toţi
utilizatorii. Integritatea datelor se referă la validarea şi coerenţa datelor
stocate şi se realizează prin unicitatea datelor, precum şi prin validarea
datelor introduse sau actualizate în baza de date. Informaţia trebuie să
satisfacă constrângeri statice sau dinamice, locale sau generale.
7. Administrarea şi controlul centralizat al datelor – administrarea
datelor presupune definirea structurii datelor şi a modului de stocare a
datelor. Administrarea este centralizată şi permite o organizare coerentă
şi eficace a informaţiei. Fiecare utilizator are propriile cerinţe care pot
intra în conflict cu ale altor utilizatori. Administrarea centralizată are
rolul de a optimiza performanţele pentru organizaţie luată în ansamblu.

22
8. Partajabilitatea datelor – permite ca datele să fie partajate între
membrii unei organizaţii fiecare utilizator va accesa datele ca şi cum ar
fi singur, fără a şti că în acelaşi timp un alt utilizator va accesa pentru a
le modifica. Prin mecanisme proprii de control baza de date va permite
accesul concurent la date menţinându-se în acelaşi timp coerenţa
datelor. Acest obiectiv face posibilă dezvoltarea de noi aplicaţii ce
necesită poate chiar extinderea, respectiv modificarea aplicaţiilor aflate
deja în funcţiune.
9. Securitatea datelor – baza de date trebuie să fie protejată pentru
distrugeri logice prin actualizări eronate, respectiv distrugeri fizice.
Securitatea va fi asigurată prin mecanisme proprii care permit refacerea
bazei de date în cazul apariţiei unei erori. Prevenirea distrugerii
accidentale a datelor, obligă la instituirea unui set de proceduri de
autorizare, dar şi de confirmare a operaţiilor de ştergere, adăugare,
precum şi realizarea unor copii de siguranţă, a unor jurnale de urmărire
a actualizărilor şi proceduri de refacere a bazei de date, de restaurare a
acesteia, în caz de incidente.
10. Confidenţialitatea datelor - datele vor fi protejate de accesul
neautorizat. Baza de date are mecanisme proprii care permit
identificarea şi autentificarea utilizatorilor, precum şi accesul autorizat
şi diferenţiat. Accesul depinde de date şi de utilizatori.

2.4. Sisteme de gestiune a bazelor de date

În cadrul oricărei organizaţii este necesar ca resursa de date să fie bine


definită şi documentată, bine organizată şi controlată, partajabilă şi relevantă
pentru deciziile luate în cadrul organizaţiei.
Sistemul de Gestiune al Bazei de Date (SGBD) reprezintă un pachet
de programe specializat pentru definirea, crearea, întreţinerea şi accesul
controlat la baza de date.
Obiectivul principal al unui SGBD este de a separa datele de
programele de aplicaţie. SGBD constituie o interfaţă între utilizatori şi baza de
date şi constă din programe care interacţionează cu programele de aplicaţie ale
utilizatorului şi cu baza de date. Un SGBD are o structură complexă şi include
module program specializate pentru a îndeplini anumite funcţiuni:
 gestionarea bazei de date;
 definirea datelor (descrierea datelor);

23
 manipularea datelor (actualizare şi interogarea bazei de date);
 controlul şi securitatea datelor (controlul integrităţii, accesul
concurenţial şi securitatea datelor);
 utilitare.
SGBD trebuie să asigure trecerea de la un nivel de abstractizare la altul,
adică să poată interpreta „comenzile” exprimate în termen de schemă externă,
pentru a le transpune prin intermediul schemei conceptuale în operaţii de
intrare-ieşire la nivel fizic. SGBD gestionează la nivel conceptual un dicţionar
de date. Modulele program de gestiune a bazei de date realizează accesul fizic la
date în conformitate cu cerinţele exprimate printr-o „comandă”. Modulele
program de definirea datelor permit traducerea unui limbaj specializat care
realizează descrierea naturii datelor şi a legăturii logice dintre date la nivel
global conform schemei conceptuale, precum şi schemelor externe specifice
fiecărei aplicaţii program externe. Modulele program de manipulare a datelor
permit utilizatorilor prin intermediul unui limbaj specializat să găsească, să
insereze, să modifice, respectiv să elimine datele din baza de date. Modulele
program pentru controlul şi securitate datelor au rolul de a asigura
confidenţialitate a şi integritatea datelor, precum şi rezolvarea problemelor de
concurenţă. Modulele program utilitare permit întreţinerea, manipularea
exploatarea corectă şi facilă a bazei de date.
Sistemele SGBD evoluează continuu şi trebuie să se extindă pentru a
rezolva eficient noile cerinţe ale utilizatorilor.
Istoria sistemelor de gestiune a bazelor de date delimitează trei generaţii
care sunt caracterizate de modelele logice folosite:
 sisteme de tip ierarhic şi de tip reţea,
 sisteme relaţionale;
 sisteme avansate, care se reperă la sistemele orientate obiect, la cele
deductive, multimedia, active etc.
SGBD de tip ierarhic (hierarchical database) şi reţea (network
database) reprezintă din punct de vedere istoric primele generaţii de SGBD. În
modelele ierarhice şi reţea datele sunt reprezentate la nivel de articol prin
legături ierarhice de tip arbore, respectiv de tip graf. Structurile de date
corespunzătoare acestor modele pot fi descrise la nivel logic cu ajutorul unei
structură de date abstract numit diagramă. Diagrama este în acest caz un graf
orientat prin care se reprezintă tipuri de entităţi şi legăturile funcţionale dintre
acestea. Sistemele de gestiune a bazelor de date bazate pe modelul de date reţea,
respectiv cel ierarhic, poartă numele de sisteme navigaţionale şi au fost
dezvoltate în perioada 1960-1970.
A doua generaţie de SGBD o reprezintă modelul relaţional care
tratează entităţile ca relaţii. Sistemele de Gestiunea Bazelor de Date

24
Relaţionale sunt caracterizate de structuri de date simple şi intuitive, de
operatori care se aplică relaţiilor pentru a defini, căuta, şi reactualiza datele.
Bazele de date relaţionale asigură independenţa completă a descrierii logice a
datelor în termeni de relaţii şi în descrierea fizică a datelor în termen de fişiere.
În prezent există câteva sute de sisteme SGBD relaţionale pentru toate tipurile
de calculatoare. Modelul relaţional asigură o independenţă completă în ceea ce
priveşte descrierea logică şi fizică a datelor. În plus SGBD relaţionale pun
includ limbaje specializate pentru descrierea şi manipularea datelor. Modelul
relaţional are capacităţi limitate de modelarea datelor. SGBD relaţionale nu
folosesc obiecte complexe şi dinamice, nu realizează gestiunea distribuită a
datelor şi nici gestiunea de cunoştinţe.
Conceptul de programare orientată obiect sau programarea
calculatoarelor cu ajutorul obiectelor utilizează conceptele de obiect şi clasă de
obiecte. Obiectul este definit de o mulţime de proprietăţi numite atribute şi are
un anumit comportament care în cazul obiectelor folosite în programare se
concretizează prin metode, care sunt programe care se execută în mod automat
atunci când în mediul extern sau cel extern al obiectului apare un anumit
eveniment. Numim obiect o entitate unic identificabilă, care conţine atât
atributele care definesc starea unui obiect din lumea reală, cât şi acţiunile
asociate acestuia. Obiectele de acelaşi tip formează o clasă de obiecte care
reprezintă o generalizare a noţiunii de tip de dată. Clasa include definiţia datelor
şi a metodelor. Conform principiului încapsulării datelor, datele clasei sunt
vizibile doar metodelor clasei, iar conform principiului moştenirii sau al
derivării o clasă poate fi definită folosind o clasă existentă. Conceptul de
încapsulare presupune că un obiect conţine atât structura de date, cât şi
mulţimea de operaţii care pot fi utilizate pentru al manipula. Ascunderea
informaţiilor semnifică separarea aspectelor externe ale unui obiect de detaliile
sale interne, care sunt ascunse de lumea exterioară. În acest mod, detaliile
interne ale unui obiect pot fi modificate fără a afecta aplicaţiile care îl utilizează
cu condiţia ca detaliile externe să rămână neschimbate. Includerea tehnicilor de
programare orientată obiect în domeniul bazelor da date a condus la apariţia
Sistemelor de Gestiune a Bazelor de Date Orientate Obiect, care realizează o
modelare superioară a informaţiei luând în considerare aspectele dinamice şi
integrarea descrierii structurale şi comportamentale. Prin utilizarea principiului
programării orientate obiect în domeniul bazelor de date relaţionale a apărut
Sistemele de Gestiune a Bazelor de Date Relaţionale Orientate Obiect.
O relaţie este o mulţime de înregistrări ce reprezintă fapte. Cunoştinţele
sunt aserţiuni generale şi abstracte asupra faptelor. Pe baza cunoştinţelor se
deduc fapte noi prin deducţie plecând de la fapte cunoscute. Pentru a rezolva
problema gestiunii de cunoştinţe au apărut bazele de date deductive, care

25
utilizând programarea logică gestionează cunoştinţe relativ la baze de date. Un
Sistem de Baze de Date Deductiv posedă un limbaj de definire a datelor care
permite definirea structuri predicatelor sub formă de relaţii şi constrângeri de
integritate asociate, un limbaj de manipulare a datelor care permite pe lângă
actualizarea datelor şi formularea de cereri, un limbaj de reguli de deducţie care
să permită construirea predicatelor derivate.
Sistemele distribuite reprezintă calculatoare interconectate printr-o reţea
de comunicaţie utilizate pentru un scop global. Gestionarea datelor aflate pe
calculatoare diferite, eterogene din punctul de vedere al sistemului de operare
folosit se realizează cu ajutorul unei baze de date distribuite. Bazele de date
distribuite sunt sisteme de baze de date cooperante care sunt rezidente pe
calculatoare diferite şi situate în locuri în locaţii diferite. Sistemul de gestiune al
unei baze de date distribuite face posibil accesul programelor de aplicaţie la date
rezidente pe mai multe calculatoare fără ca localizarea datelor să fie cunoscută.
Bazele de date distribuite folosesc ca instrument principal pentru prelucrarea
datelor distribuite modelul relaţional.
Integrarea mai multor baze de date autonome şi eterogene conform unei
scheme globale cu scopul de a realiza accesul uniform şi integrat la fiecare din
bazele de date componente a condus al conceptul de sistem multibază de date.
Avantajul major al acestui model constă în faptul că printr-o singură interogare
pot fi accesate date din mai multe baze de date fără a afecta aplicaţiile care
manipulează datele din fiecare bază de date componentă a sistemului integrat.
Fiecare bază de date din sistemul integrat poate folosi propriile limbaje de
interogare.
Bazele de date permit stocarea unei cantităţi foarte mari de informaţie,
care poate fi folosită în mod pentru elaborarea deciziilor operative, dar şi a celor
strategice. Pentru elaborarea deciziilor operative se folosesc date aferente
activităţii curente, date aferente unei perioade scurte de timp. Acestea sunt
generate şi preluate în sistem în mod dinamic pentru optimizarea procesului de
decizie. Prelucrarea acestor date se realizează în pe baza unor scenarii de tip
procesarea de tranzacţii în timp real (OLTP – On Line Transaction
Processing). Necesitatea analizării unor cantităţi foarte mari de date a condus la
conceptul de magazie de date (Data Warehouse), care utilizează pentru
atingerea acestui scop scenarii de tip procesare analitică în timp real (OLAP
– On Line Analytical Processing). Baza de date analitică permite realizarea de
interogări multidimensionale instantanee, fără a fi necesar ca acestea sa fie
definite anterior. Magazia de date este proiectată pentru a facilita analiza
multidimensională a datelor şi reprezintă un sistem care include informaţii
despre o organizaţie structurate în mai multe baze de date, numite în acest caz
rafturi de date (Data Marts). Data Warehouse reprezintă o bază de date

26
proiectată pentru a facilita analiza datelor fiind orientată spre dimensiuni.
Structurile de date multidimensionale sunt vizualizate cel mai bine sub forma
unor cuburi de date şi a unor cuburi în cadrul cuburilor. Fiecare faţă a unui cub
reprezintă o dimensiune. Bazele de date multidimensionale reprezintă o
modalitate compactă pentru vizualizarea şi manipularea elementelor de date
care pot avea multe inter-relaţii.

2.5. Funcţiunile sistemului de gestiune al bazei de date

Sistemul de gestiune al bazei de date (SGBD) reprezintă o interfaţă


între utilizatori şi baza de date, care permite crearea, actualizarea şi consultarea
bazei de date. În 1982 E.F. Codd a enunţat opt servicii listă completată ulterior
cu încă două servicii pe care trebuie să le furnizeze un SGBD complet:
1. Stocarea, regăsirea şi reactualizarea datelor reprezintă funcţia
fundamentală a unui SGBD. SGDB trebuie sa ascundă faţă de utilizator detaliile
privind implementarea fizică internă.
2. Un catalog sistem accesibil utilizatorului. SGBD va asigura
utilizatorului şi a SGBD la un catalog sistem integrat (dicţionar de date - Data
Dictionary) care va conţine date despre scheme, utilizatori, aplicaţii şi
reprezintă un depozit de informaţii care descrie datele din baza de date, date
despre date. Catalogul sistem conţine descrierea şi localizarea datelor,
denumirile, tipurile şi dimensiunile articolelor de date, denumirile relaţiilor,
constrângerile de integritate asupra datelor, numele utilizatorilor autorizaţi care
au acces la date, schemele externe, conceptuale şi interne, precum şi
transpunerile dintre ele, statistica utilizării. Catalogul sistem permite ca
informaţiile despre date să fie colectate şi gestionate central, permite ca definiţia
datelor să fie accesibilă tuturor posibililor utilizatori, comunicarea fiind
simplificată deoarece de sensul exact al datelor este stocat.
3. Asigurarea tranzacţiilor. Tranzacţia reprezintă o mulţime de acţiuni,
realizate de un utilizator sau un program de aplicaţie prin care se accesează sau
se modifică conţinutul bazei de date. Dacă o tranzacţie eşuează în timpul
execuţiei baza de date va intra într-o stare de incoerenţă, motiv pentru care este
necesar ca baza de date baza de date să fie readusă în stare de coerenţă care a
precedat lansarea în execuţie a tranzacţia. Acesta se realizează printr-un
mecanism propriu al SGBD care este capabil să anuleze modificările efectuate
asupra bazei de date de tranzacţia eşuată, care nu a fost efectuată în întregime ci
doar parţial.
4. Servicii de control concurente. SGBD trebuie să furnizeze un
mecanism care să garanteze că baza de date este corect reactualizată atunci când

27
mai mulţi utilizatori efectuează simultan tranzacţii asupra bazei de date.
Interogarea concurentă trebuie sa fie capabilă să asigure simultan tuturor
utilizatorilor aceeaşi informaţie, chiar şi în cazul reactualizării datelor şi să
garanteze că nu vor avea loc interferenţe atunci când mai mulţi utilizator
accesează baza de date.
5. Servicii de reconstituire. SGBD trebuie să furnizeze un mecanism
propriu de reconstituire a bazei de date în cazul deteriorării datorită unei cauze
interne sau externe.
6. Servicii de autorizare. SGBD trebuie să furnizeze un mecanism prin
care să garanteze că doar utilizatorii autorizaţi pot accesa datele. Termenul de
securitate se referă la protecţia bazei de date împotriva accesului ne-autorizat
intenţionat sau accidental. Fiecare utilizator trebuie sa acceseze doar datele care
îi sunt necesare şi pentru care are definit accesul autorizat.
7. Suport pentru comunicarea datelor. SGBD trebuie sa poată fi
integrat într-un pachet de programe de comunicaţie din care va primi cereri sub
formă de mesaje şi va răspunde în acelaşi mod.
8. Servicii de integritate. SGBD trebuie sa furnizeze mijloace care să
asigure că atât datele din baza de date, cât şi modificării acestora respectă
anumite reguli. Integritatea bazei de date se referă la corectitudinea şi coerenţa
datelor stocate şi se exprimă în termeni de constrângeri, care reprezintă reguli
de coerenţă pe care baza de date trebuie să le respecte.
9. Servicii pentru promovarea independenţei de date. SGBD trebuie să
permită ca programele de aplicaţie să fie independente de structura reală a bazei
de date. Pentru realizarea acestui obiectiv se utilizează mecanisme de
vizualizare, sau sub-scheme externe.
10. Servicii utilitare. Serviciile utilitare asigură suport pentru
administrare efectivă a bazei de date. Prin acestea se asigură suport pentru
importul şi exportul de date, facilităţi de monitorizare, analiză statistică,
reorganizarea datelor, realocarea spaţiului, eliminarea informaţiei perimate etc.

2.6. Componentele unui mediu SGBD

Un mediu SGBD este un sistem informatic care foloseşte baze de date. În


structura unui astfel de sistem în se pot delimita cinci componente principale:
hardware, software, date, proceduri şi persoane.
1. Hardware.
Reprezintă suportul fizic pentru SGBD şi poate fi format de un singur
calculator personal, un calculator mainframe, sau chiar o reţea de calculatoare.
Elementele specifice de hardware depind de cerinţele organizaţiei şi de SGBD

28
utilizat. Fiecare SGBD impune cerinţe minimale pentru echipamentele fizice
necesare funcţionării optime.
2. Software.
Componenta software include programele ce formează SGBD,
programele de aplicaţie, sistemul de operare local şi atunci când este cazul
software de reţea. Programele de aplicaţie se realizează folosind limbaje de
programare de generaţia treia sau chiar a patra, ele nu fac parte din SGBD, dar
accesează baza de date prin intermediul SGBD. Programele de aplicaţie nu au
rolul de a gestiona datele ci doar de a prezenta informaţia în termeni specifici
aplicaţiei prin intermediul unei interfeţe.
3. Date.
Reprezintă cea mai importantă componentă a unui mediu SGBD şi
include atât meta-datele cât şi datele propriu-zise.
4. Proceduri.
Procedurile includ regulile care guvernează proiectarea şi utilizarea bazei
de date. Activitatea utilizatorilor sistemului şi a personalul care administrează
baza de date se desfăşoară conform unor proceduri documentate privind modul
de folosire şi funcţionare a sistemului. Aceste instrucţiuni se referă la
deschiderea şi închiderea unei sesiuni de lucru, utilizarea unor facilităţi SGBD
şi a programelor de aplicaţie, activarea şi dezactivarea SGBD, arhivarea datelor,
utilizarea copiilor de siguranţă, tratarea defecţiunilor hardware, respectiv
software, refacerea bazei de date în caz de incident, modificarea şi
reorganizarea bazei de date.
5. Persoane.
În mediul SGBD se identifică patru tipuri distincte de persoane implicate:
1 administratorii, 2 proiectanţii, 3 programatorii de aplicaţie şi 4 utilizatorii
finali.
1 Baza de date reprezintă o resursă în cadrul organizaţiei care este
gestionată de doi administratori: administratorul de date şi de administratorul
bazei de date. Administratorul de date (Data Administrator) gestionează
resursele de date, fiind responsabil de proiectarea conceptuală şi logică a bazei
de date, de planificarea bazei de date, de realizarea şi întreţinerea standardelor, a
politicilor şi a procedurilor bazei de date. Este persoana sau grupul de persoane
responsabil de dezvoltarea bazei de date în direcţia susţinerii obiectivelor
generale ale organizaţiei, fiind un foarte bun cunoscător al organizaţiei. El
determină cerinţele organizaţiei privind datele, răspunde de proiectarea
conceptuală şi logică a bazei de date, dezvoltă modelul general de date conform
cu progresul din domeniul tehnologiei informaţiei şi al afacerilor, creează
standarde de colectarea datelor, stabileşte necesităţile şi protecţia privind
accesul la date, gestionează dicţionarul de date şi răspunde de asigurarea unei

29
documentaţii complete care va include modelul de date, standardele, politicile,
procedurile, utilizarea dicţionarului de date şi controlul asupra utilizatorilor
finali. Administratorul bazei de date (Database Administrator) este persoana
sau grupul de persoane responsabil de proiectarea, implementarea şi realizarea
fizică a bazei de date, de securitatea şi controlul integrităţii, de întreţinerea
întregului sistem. El monitorizează performanţele sistemului şi reorganizarea
baze de date, atunci când este cazul, defineşte constrângerile de securitate şi
integritate, răspunde de selectarea SGBD şi de implementarea proiectului de
bază de date, de instruirea utilizatorilor şi de realizarea copiilor de siguranţă.
Este persoana care trebuie sa cunoască foarte bine SGBD folosit precum şi
mediul sistemelor de operare.
2 Proiectanţii bazei de date sunt persoanele implicate în proiectarea
logică şi cea fizică a bazei de date. Proiectarea conceptuală şi logică presupune
identificarea entităţilor, a relaţiilor dintre entităţi, a constrângerilor asupra
datelor ce vor fi stocate în baza de date. Proiectantul de bază de date
conceptuale şi logice trebuie sa cunoască amănunţit şi complet toate datele din
cadrul organizaţiei, precum şi a regulilor interne şi externe conform cărora
funcţionează organizaţia. Aceste reguli descriu principalele caracteristici ale
datelor aşa cum sunt ele în cadrul organizaţiei respective. În etapa de proiectare
a bazei de date proiectantul va implica toţi presupuşii utilizatori. Proiectarea
conceptuală este independentă de detaliile privind implementarea, iar
proiectarea logică este presupune utilizarea unui model de date. Proiectantul de
hibază de date fizice preia modelul logic de date şi îl implementează folosind
un anumit SGBD, el alege strategia de stocare adecvată ţinând cont de modul de
utilizare.
3 Programatorii de aplicaţie realizează şi implementează programele
de aplicaţie care conferă funcţionalitatea cerută de utilizatorii finali. Programele
de aplicaţie se realizează în conformitate cu documentaţia elaborată în etapa de
proiectare. Fiecare program de aplicaţie este realizat fie cu ajutorul unu limbaj
extern sau cu unul propriu SGBD şi efectuează o anumită operaţie asupra bazei
de date: extragere, inserare, reactualizare şi ştergere de date.
4 Utilizatorii finali reprezintă clienţii bazei de date şi pot fi grupaţi în
două categorii: utilizatori simpli şi utilizatori specialişti. Utilizatorii simpli nu
percep baza de date şi nici SGBD ci doar accesează baza de date prin
intermediul programelor de aplicaţie. Utilizatorii specialişti cunosc structura
bazei de date şi facilităţile oferite de SGBD. Ei sunt capabil să efectueze
instantaneu interogări ale bazei de date, pentru aceasta folosind fie un limbaj
extern, fie unul intern al SGBD pentru a efectua anumite operaţii asupra bazei
de date, fiind capabili să realizeze chiar propriile programe de aplicaţie.

30
2.7. Limbaje pentru baze de date

În limbajele de programare clasice declaraţiile de date şi instrucţiunile


executabile aparţin limbajului respectiv. Limbajele de programare sunt grupate
în generaţii de limbaje. Limbajele de programare clasice sunt incluse în
generaţia a treia de limbaje (3GL – 3 Generation Language) fiind limbaje de
programare procedurale. Generaţia a patra de limbaje de programare (4GL)
reprezintă limbaje de programare ne-procedurale şi au fost create pentru a mării
productivitatea în programarea calculatoarelor folosind instrumente de tip
generator (de formulare, de rapoarte, de structuri de interogare, de grafice, de
aplicaţii) care permit ca în mod interactiv fără a scrie cod program să fie
generate în mod automat programe complexe. Limbajele procedurale precizează
ce date sunt necesare şi cum trebuie să fie obţinut rezultatul unei acţiuni tratând
înregistrările în mod individual, iar cele neprocedurale precizează doar ce
trebuie obţinut, operând asupra unor mulţimi de înregistrări.
În sistemele de gestiune a bazelor de date funcţiile de declarare, de
manipulare şi de control al datelor sunt realizate cu ajutorul unor limbaje
diferite. Acestea sunt numite sub-limbaje de date deoarece includ doar
facilităţii specifice funcţiei pe care o au. Ele pot fi încorporate într-un limbaj
gazdă de nivel înalt. SGBD asigură suport pentru utilizarea în mod interactiv a
acestor limbaje proprii.
Limbajul pentru definirea datelor (LDD – Data Description Language)
este un limbaj specific pentru fiecare SGBD fiind utilizat pentru a specifica
schema bazei de date. Este un limbaj descriptiv care permite administratorului
bazei de date, respectiv utilizatorului final sa descrie şi să definească entităţile
din baza de date precum şi relaţiile existente între entităţi, adică să definească o
schemă sau să o modifice. Nu include facilităţi pentru manipularea datelor. Prin
compilarea instrucţiunilor limbajului de definirea datelor se obţin tabele, care
vor fi incluse în catalogul sistem (dicţionar de date, sau director de date) şi care
descriu datele, relaţiile, strategiile de acces la date, criteriile de confidenţialitate
şi de validare a datelor. Teoretic pot fi identificate limbaje de definire a datelor
aferente fiecărei scheme din arhitectura bazei de date: internă, conceptuală şi
externă.
Limbajul pentru manipularea datelor (LMD – Data Manipulation
Language) este un limbaj care asigură un set de procedee ce permit operaţiile de
bază pentru manipularea datelor din baza de date. Operaţiile executate în cadrul
bazei de date presupun existenţa unui limbaj specializat în care comenzile se
exprimă prin fraze ce descriu acţiuni asupra bazei de date. Manipulările de date
se efectuează la cele trei niveluri extern, conceptual şi intern. O comandă va
preciza operaţia, criteriul de selecţie, modul de acces şi forma de editare.

31
Operaţia poate fi de calcul aritmetic sau logic, deschidere-închidere, căutare,
extragere, adăugare, ştergere, reactualizare şi chiar de editare. Cele mai
importante comenzi sunt cele de regăsire. Limbajele de manipulare a datelor
sunt de două tipuri: procedurale şi neprocedurale (declarative). Setul de
instrucţiuni din cadrul limbajului de manipulare a datelor responsabil de
regăsirea datelor de numeşte limbaj de interogare.
Limbajul pentru controlul datelor (LCD – Data Control Language)
este un limbaj specific care include comenzi pentru asigurarea confidenţialităţii
şi integrităţii datelor, pentru salvarea informaţiei cu scopul menţinerii
integrităţii bazei de date şi chiar pentru rezolvarea problemelor de acces
concurenţial la date.

2.8. Proiectarea bazei de date

Sistemul informaţional cuprinde totalitatea resurselor care permit


colectarea, administrarea, controlul şi propagarea informaţiilor în cadrul unei
organizaţii. Datele reprezintă o resursă importantă din cadrul organizaţiei şi
trebuie gestionată similar celorlalte resurse. Sistemul informatic poate fi realizat
cu ajutorul unei baze de date şi reprezintă cea mai importantă componentă a
sistemului informaţional din cadrul organizaţiei, baza de date fiind o
componentă fundamentală a sistemului informaţional. Sistemul informaţional
evoluează în timp, parcurge anumite etape, are un ciclu de viaţă. Etapele din
ciclul de viaţă al unui sistem informaţional sunt: planificarea, colectarea şi
analiza cerinţelor, proiectarea, realizarea prototipului, implementarea, testarea
şi întreţinerea operaţională. În practică, însă, aceste etape nu sunt rigide. Pot
exista întrepătrunderi importante şi proiectul poate repeta unele etape înainte de
a trece la altele. Aceste etape sunt parcurse şi în cazul sistemelor ce folosesc
baze de date. În fiecărei etapă a ciclului de viaţă sunt desfăşurate anumite
activităţi.
1. Planificarea bazei de date, este prima etapă a ciclului de viaţă şi
include activităţile care permit realizarea eficientă a etapelor din ciclul de viaţă.
Planificarea bazei de date trebuie să fie integrată în strategia generală a
organizaţiei stabilind prin aceasta care sunt cerinţele informaţionale viitoare ale
organizaţiei pentru a susţine planurile de afaceri şi scopul organizaţiei. Pentru a
susţine planificarea bazei de date se va realiza un model general de date, care va
include datele importante, relaţiile dintre acestea, precum şi legătura cu
componentele funcţionale ale organizaţiei. În această etapă vor fi dezvoltate de
standarde pentru modul de colectare a datelor şi de specificare a formatelor,
pentru documentaţia necesară, fiind stabilite modalităţile de realizare a

32
proiectării şi implementării. Utilizarea standardelor asigură suport pentru
controlul calităţii. Cerinţele organizaţiei cu privire la date fi documentate
corespunzător.
2. Definirea sistemului este a etapa în care se identifică scopul şi
limitele noului sistem, inclusiv domeniile de aplicaţie şi grupurile de utilizatori.
La definirea noului sistem va fi precizat în mod necesar şi modul în care se va
realiza interfaţa cu celelalte componente ale sistemului informaţional din cadrul
organizaţiei.
3. Colectarea şi analiza cerinţelor (Analiza) este etapa de cea mai
mare importanţă în care, folosind diferite metode şi tehnici adecvate, vor fi
colectate şi analizate cerinţele informaţionale ale organizaţiei cu privire baza
data. Informaţiile necesare proiectării bazei de date vor fi colectate folosind
metoda interviului individual, metoda interviului de grup, metoda
chestionarelor, observarea organizaţiei în funcţiune, examinarea documentelor
din cadrul organizaţiei, toate asociate cu experienţa anterioară a echipei de
analiză. Fără o analiză adecvată nu se va putea determina ceea ce utilizatorul
doreşte de la noul sistem, infrastructura tehnică în cadrul căreia se va
implementa, respectiv care sunt constrângerile impuse datele. O analiză
inadecvată, la un moment ulterior, poate fi foarte costisitoare sau poate conduce
chiar la încetarea proiectului. O cerinţă reprezintă o caracteristică care trebuie
inclusă în noul sistem. Informaţiile colectare pentru fiecare domeniu de aplicaţie
şi grup de utilizatori se vor concretiza sun forma unui set de documente care
descriu activităţile şi sub-activităţile din diferite puncte de vedere şi va include
documentaţia folosită şi elaborată, detaliile privind tranzacţiile, precum ordinea
de prioritate a cerinţelor. Cantitate de date colectată depinde de politica
organizaţiei şi de aria de cuprindere a noului sistem. Colectarea şi analiza
cerinţelor reprezintă etapa preliminară a proiectării conceptuale a bazei de date.
Pentru structurarea cerinţelor se folosesc tehnici speciale de specificare a
cerinţelor cum sunt analiza şi proiectarea structurată, diagramele de flux de
date, proiectarea asistată de calculator.
4. Proiectarea bazei de date (Design-ul) este procesul de realizare a
proiectului de bază de date care va trata toate operaţiile şi obiectivele
organizaţiei, este etapa în care se va realiza proiectare conceptuală, logică şi
fizică a bazei de date. Se va realiza reprezentarea datelor şi a relaţiilor dintre ele
conform specificaţiilor stabilite în etapa de analiză, va fi elaborat un model de
date care va fi capabil să accepte efectuarea tuturor tipurilor de tranzacţii
necesare asupra datelor, se va realiza o structurare adecvată pentru realizarea
cerinţelor inclusiv cele privind performanţele noului sistem şi a sistemului
informaţional în ansamblu. Modelul de date este optim atunci când este simplu,
expresiv, extensibil, nonredundant, permite validarea structurală, permite

33
partajarea datelor, asigură integritatea datelor şi oferă posibilitatea unei
reprezentări schematice. Unul din scopurile principale a procesului de design
este stabilirea de scheme pe baza căreia se poate construi baza de date.
Proiectarea se poate realiza folosind o metodă de tip „de jos în sus”, „de sus în
jos”, „din interior spre exterior”, respectiv „strategia compusă” care
combină primele două metode. Metoda de proiectare de jos în sus se foloseşte
în cazul bazelor de date simple şi începe de la nivelul fundamental al atributelor
ce definesc entităţile car sunt grupate în relaţii care reprezintă tipuri de entităţi şi
asociaţii ale acestora, după care prin procesul numit normalizare se identifică
atributele necesare şi dependenţa funcţională a acestora. Strategia de proiectare
de tip de sus în jos se foloseşte pentru baze de date complexe şi începe cu
realizarea unor modele de date care conţin entităţi şi relaţii relevante, după care
prin rafinări succesive de sus în jos se identifică toate entităţile şi relaţiile
existente între acestea. Tratarea de tip din interior spre exterior este foloseşte
proiectarea de jos în sus pentru entităţile principale, care apoi se extinde pentru
a cuprinde toate entităţile şi relaţiile.
Sub-etapa de proiectare fizică a bazei de date presupune cunoaşterea
SGBD care va fi utilizat, motiv pentru pe baza cerinţelor curente şi viitoare ale
organizaţiei va fi alea cel mai potrivit SGBD. Alegerea SGBD poate fi
considerată o etapă din ciclul de viaţă a sistemului informatic, care se poate
parcurge în orice fază, dar înainte de proiectarea fizică. În această etapa se vor
elabora în mod obligatoriu şi toate documentaţiile aferente.
5. Realizarea prototipului este etapa în care se construieşte un model
de lucru, care nu are toate caracteristicile cerute şi nu acoperă întreaga
funcţionalitate. Scopul creării prototipului este de a oferi utilizatorilor
posibilitatea de a utiliza un sistem apropiat de cel real pentru identifica
caracteristicile incluse deja, de a le verifica cu scopul de a clarifica cerinţele
utilizatorilor.
6. Implementarea este etapa care include realizarea fizică a bazei de
date prin utilizarea limbajului de definire a datelor al SGBD şi implementarea
programelor de aplicaţie realizate în limbajul ales de echipa de proiectare.
Tranzacţiile din baza de date vor fi efectuate cu ajutorul limbajului de
manipularea datelor. În această etapă pot fi folosite instrumentele de tip
interactiv ale SGBD pentru definirea şi accesarea datelor. Transferarea datelor
din vechiul sistem are o foarte mare importanţă pentru reducerea timpului
necesar pentru implementare. Acest transfer face ca datele preluate să fie
corecte chiar dacă este necesară conversia datelor în formatul cerul de noul
sistem. În etapa de implementare vechiul sistem şi noul sistem funcţionează în
paralel, iar echipa de implementare poate reduce semnificativ efortul

34
utilizatorilor prin preluarea datelor pentru noul sistem din vechil sistem cu
ajutorul unor proceduri automate.
7. Testarea este etapa în care vor fi detectate eventualele erori ale nolui
sistem. Există un număr de practici pentru asigurarea calităţii, pe care le putem
aplica proiectului, dar cea mai bună este testarea. Testarea trebuie făcută
conform unui plan de testare bine pus la punct, care este esenţial atât pentru
sistem cât şi pentru verificarea reacţiei utilizatorului. Baza acestui plan trebuie
să fie documentarea obţinută în timpul etapei de analizare a cerinţelor. Acest
plan de testare trebuie să definească nu doar exact ceea ce trebuie verificat ci şi
ce rezultate trebuie generate de noul sistem inclusiv de programele de aplicaţie.
Testarea poate fi făcută „de sus în jos”, „de jos în sus”, „pe fir”, sau la
„suprasolicitare”. Testarea de „de sus în jos” permite testare la nivel de
subsistem şi permite detectarea erorilor în fazele iniţiale ele proiectului.
Testarea „de jos în sus” pleacă de la fiecare modul individual. Testarea „pe
fir” este folosită pentru testarea sistemelor care funcţionează în timp real,
testându-se răspunsul sistemului la fiecare eveniment. Testele la
„suprasolicitare” au menirea de a testa componentele sistemului în toate
situaţiile posibile.
8. Întreţinerea operaţională reprezintă procesul de monitorizare şi
întreţinere a noului sistem. Sunt monitorizate performanţele sistemului şi se
încorporează noi cerinţe atunci când este cazul. Este etapa care se întinde pe
întreaga durată de viaţă a sistemului. Monitorizarea presupune urmărireqa
sistematică a performanţelor şi înregistrarea eventualelor anomali de
funcţionare.

2.9. Modelul de date relaţional

Modelul relaţional a fost propus de E. F. Codd în 1970 care prin


articolul „Un model relaţional de date pentru bănci de date partajate de
dimensiuni mari” a stabilit cerinţele teoretice pentru modelul de date relaţional.
Modelul relaţional este un model formal de organizare conceptuală a datelor,
destinat reprezentării legăturilor dintre date şi bazat pe teoria matematică a
relaţiilor. Modelul relaţional a fost definit cu rigoare matematică deosebită,
fiind un mijloc performant de studiu al proprietăţilor logice ale unui sistem de
baze de date. Modelul relaţional este orientat spre mulţimi în timp ce sistemele
ierarhice şi reţea sunt orientate spre fişiere. În modelul relaţional relaţiile sunt
utilizate pentru a reprezenta informaţiile despre obiectele reprezentate în baza
de date. Conform modelului relaţional datele sunt structurate logic sub formă de
tabele care definesc relaţii. Fiecare relaţie are o denumire şi este definită prin

35
atribute care sunt coloanele tabelei. O relaţie este reprezentată printr-un tabel
bidimensional, în care coloanele corespund atributelor, iar liniile corespund
înregistrărilor individuale. Ordinea coloanelor (atributelor) este arbitrară, relaţia
fiind invariantă la modificarea ordinii atributelor. Pentru fiecare atribut există
un domeniu de valori posibile. Domeniile pot fi diferite pentru fiecare atribut,
dar este posibil ca mai multe atribute să aibă acelaşi domeniu. Conceptul de
domeniu permite definirea sensului şi a sursei de valori pentru fiecare atribut.
Un element unei relaţii este numit tuplu, şi corespunde unei linii a tabelei.
Tuplurile pot apărea în orice ordine fără a modifica semnificaţia relaţiei fiind
formate din valori concrete pentru toate atribute ce definesc relaţia. Numim
intensitate a relaţiei componenta fixă, invariantă, în timp a unei relaţii, formată
din structura relaţiei împreună cu domeniile de valori pentru atribute şi
eventualele restricţii asupra valorilor posibile. Numim extensie (stare) a
relaţiei partea care se modifică în timp, adică tuplurile. Gradul relaţiei
reprezintă numărul de coloane (atribute), iar cardinalitatea relaţiei numărul de
linii (tupluri) pe care le are tabela ce defineşte relaţia. Gradul relaţiei este o
parte a intensităţii relaţiei. Cardinalitatea exprimă starea relaţiei la un moment
dat şi se modifică prin adăugarea, respectiv ştergerea de tupluri. Spunem că o
relaţie este normalizată dacă este structurată adecvat. Baza de date relaţională
este o mulţime de relaţii normalizate. Numim schemă a relaţiei denumirea
relaţiei urmată de o mulţime de perechi atribut, domeniu.
Un domeniu este o mulţime de valori care poate fi definită fie
enumerând elementele componente, fie definind o proprietate distinctă a
domeniului valorilor. Fie atributele A1, A2, . . ., An şi domeniile finite D1, D2, . .
., Dn, nu neapărat disjuncte. Mulţimea {A1:D1, A2:D2, . . ., An:Dn} reprezintă
schema de relaţie. Numim tuplu, sau n-tuplu, un element (V1,V2, . . .,Vn) al
produsului cartezian D1 × D2 × . . . × Dn al domeniilor D1, D2, . . ., Dn, unde V1є
D1, …, Vn є Dn.
O relaţie R pe mulţimile D1, D2, . . ., Dn este o submulţime a produsului
cartezian D1 × D2 × . . . × Dn, adică o mulţime de tupluri. Mulţimea numelor
atributelor corespunzătoare unei relaţii o numim schemă relaţională şi o notăm
cu R (A1, A2, . . ., An). Putem reprezintă o relaţie printr-un tabel bidimensional
în care fiecare linie corespunde unui tuplu, iar fiecare coloană unui domeniu din
produsul cartezian, de fapt unui atribut. Atunci când se reprezintă o relaţie sub
forma unui tabel în care antetul coloanelor sunt înscrise numele atributelor, iar
fiecare linie reprezintă tuplurile (V1,V2, . . .,Vn) în care fiecare valoare este luată
din domeniul corespunzător. Numele atributului exprimă semnificaţia valorilor
din calcul coloanei respective. Numărul atributelor defineşte gradul relaţiei, iar
numărul de tupluri din relaţie defineşte cardinalitatea relaţiei.
O relaţie are următoarele proprietăţi:

36
 are o denumire care identifică relaţia în mod unic;
 fiecare element (celulă) al relaţiei conţine exact o valoarea atomică
(singulară);
 fiecare atribut are o denumire unică în cadrul relaţiei;
 toate valorile unui tribut aparţin domeniului de valori al atributului;
 ordinea atributelor nu este semnificativă;
 fiecare tuplu este distinct; nu există tupliri duplicate;
 ordinea tuplurilor nu este semnificativă, dar poate optimiza accesul
individual la fiecare tuplu.
Atunci când inserăm tupluri într-o relaţie, este posibil ca un atribut să
fie necunoscut sau nedefinit. Pentru a reprezenta acest tip de atribut a fost
introdusă o valoare convenţională în relaţie, şi anume valoarea null, care
reprezintă o modalitate de a trata datele incomplete sau deosebite. Există
sistemele relaţionale care nu acceptă conceptul de null, care nu are
corespondent în logica booleană, din care face parte calculul predicatelor folosit
pentru modelul relaţional.
Numim relaţie de bază o relaţie caracterizată printr-o denumire, care
corespunde unei entităţi din schema conceptuală, ale cărei tupluri sunt
memorate în baza de date. O vizualizare este rezultatul dinamic al mai multor
operaţii relaţionale, care acţionează asupra relaţiilor de bază pentru a realiza o
altă relaţie. Numim relaţie virtuală o vizualizare. Spunem că un tabel este de
tip virtual (view, vizualizare, vedere), dacă reprezintă o relaţie virtuală. Relaţia
virtuală nu există fizic ca tabel în baza de date, ci doar ca definiţie a relaţiei,
deoarece datele pe care le conţine nu sunt în realitate memorate, ele fiind
incluse în alte tabele reale care reprezintă relaţii reale. Tabelul de tip view
(vizualizare, filtru, relaţie virtuală) reprezintă o filtrare a unui tabel iniţial, sau
mai multor tabele legate între ele, necesară unei anumite abordări, unei anumite
aplicaţii. Utilizarea vizualizărilor asigură securitatea tabelelor iniţiale şi permite
prezentarea informaţiei în conformitate cu drepturile de acces al fiecărui
utilizator, asigură accesul la date personalizat pentru fiecare utilizator şi în plus
simplifică operaţiile complexe asupra relaţiilor de bază. Deoarece vizualizările
sunt relaţii virtuale toate reactualizările efectuate asupra relaţiilor de bază care
sunt folosite la definirea relaţiilor virtuale trebuie să fie imediat reflectate
imediat de toate vizualizările afectate.
Pentru o relaţie trebuie să fie posibilă identificarea în mod unic a
fiecărui tuplu prin valorile atributelor ce definesc relaţia. Numim supercheie un
atribut sau o mulţime de atribute care identifică în mod unic fiecare tuplu
relaţiei. Numim cheie candidat o supercheie pentru care nici o submulţime de
atribute nu este supercheie. Cheia candidat are două proprietăţi: unicitatea şi
ireductibilitatea. Numim cheie primară cheia candidat selectată pentru a

37
identifica în mod unic tuplurile din cadrul relaţiei. Cheile candidat care nu sunt
cheie principală se numesc chei alternative. Numim cheie străină un atribut
sau o mulţime de atribute care sunt identice cu cele din cheia candidat ale unei
alte relaţii.
Model relaţional este caracterizat de trei elemente:
 structura relaţională a datelor;
 operatorii de tip relaţional folosiţi în model;
 regulile de integritate care se aplică asupra cheilor în model.
În anul 1985, E.F. Codd a publicat un set de 13 reguli de fidelitate pe
baza cărora se apreciază dacă un sistem de gestiune de baze de date poate fi
considerat relaţional. Majoritatea sistemelor de gestiune de baze de date
considerate ca fiind de tip relaţional nu respectă absolut toate regulile definite
de Codd, mai mult, în prezent, lista este reformulată şi cuprinde 100 de regulii.
Regula 0 – regula gestionării datelor: Un SGBD considerat ca fiind
relaţional trebuie să fie capabil să gestioneze o bază de date prin posibilităţile
sale relaţionale. Aceasta înseamnă că SGBD nu va folosi pentru definirea şi
manipularea datelor operaţii care nu sunt de tip relaţional. Practic, majoritatea
implementările existente de SGBD nu respectă această regulă.
Regula 1 – regula reprezentării datelor: Într-o bază de date
relaţională, informaţia este reprezentată explicit la nivel logic sub forma unor
tabele ce poartă numele de relaţii. Este regula cea mai importantă şi conform
lui E.F. Codd şi în cazul în care un SGBD care nu respectă această regulă, nu
poate fi considerat relaţional. Referirea la nivelul logic precizează că elemente
de construcţii logice, cum sunt indecşi, nu au obligatoriu o reprezentare sub
formă de tabele.
Regula 2 – regula accesului garantat la date: Fiecare valoare de dată
(valoare atomică) dintr-o bază de date trebuie să poată fi adresată în mod logic
printr-o combinaţie formată din numele relaţiei, valoarea cheii primare şi
numele atributului. Se poate regăsi orice valoare aparţinând oricărui atribut al
unei relaţii, dacă sunt specificate numele relaţiei, numele atributului şi valoarea
cheii primare.
Regula 3 – regula reprezentării informaţiei necunoscute (tratarea
sistematică a valorilor null): Un sistem relaţional trebuie să permită
utilizatorului definirea unui tip de date numit null pentru reprezentarea unei
informaţii necunoscute la momentul respectiv indiferent de tipul de dată. Într-un
SGBD relaţional trebuie să putem face diferenţa între valoarea zero, un şir vid
de caractere şi o valoare necunoscută.
Regula 4 – regula dicţionarelor de date (catalog dinamic on-line,
bazat pe modelul relaţional): Asupra descrierii bazelor de date (informaţii
relative la relaţii, vizualizări, indecşietc) trebuie să se poată aplica aceleaşi

38
operaţii ca şi asupra datelor din baza de date. Descrierea bazei de date este
reprezentată la nivel logic sub forma unor tabele care pot fi accesate în acelaşi
mod ca şi datele efective.
Regula 5 – regula limbajului de interogare (sub-limbaje de date
cuprinzătoare): Trebuie să existe cel puţin un limbaj care să permită: (1)
definirea datelor, (2) definirea vizualizărilor, (3) manipularea datelor
(interactiv sau prin intermediul programului), (4) constrângerile de integritate,
(5) autorizarea, (6) limitele tranzacţiilor (început, execuţie, reluare). În general,
toate implementările SQL respectă această regulă. Limbajul permite
utilizatorilor să definească relaţii şi vizualizări, să regăsească informaţia şi să o
poată actualiza, să verifice şi să corecteze datele de intrare etc.
Regula 6 – regula de reactualizare a vizualizării: Toate vizualizările
care sunt teoretic reactualizabile pot fi reactualizate de sistem. Un SGBD
trebuie să poată determina dacă o vizualizare poate fi actualizată şi să stocheze
rezultatul interogării într-un dicţionar de tipul unui catalog de sistem. Trebuie să
existe un mecanism prin care să se poată determina dacă anumite vizualizări pot
fi actualizate sau nu. Majoritatea implementărilor SQL stabilesc aceasta, în
funcţie de variantele instrucţiunii de selecţie utilizate.
Regula 7 – regula limbajului de nivel înalt (operaţiile de inserare,
reactualizare şi ştergere de nivel înalt): Regulile de manipulare asupra unei
relaţii luată ca întreg sunt valabile atât pentru operaţiile de regăsire a datelor,
cât şi asupra operaţiilor de inserare, actualizare şi ştergere a datelor. Un
SGBD relaţional nu trebuie să oblige utilizatorul să caute într-o relaţie, tuplu cu
tuplu, pentru a regăsi informaţia dorită. Operaţiile de manipulare a datelor pot fi
aplicate atât în mod interactiv cât şi prin program, într-un limbaj gazdă.
Regula 8 – regula independenţei fizice a datelor: Programele de
aplicaţie şi activităţile utilizatorilor nu depind de modul de stocare a datelor
sau de modul de acces la date. Într-un SGBD relaţional trebuie să se separe
aspectul fizic al datelor (stocare sau acces la date) de aspectul logic al datelor.
Regula 9 – regula independenţei logice a datelor: Programele de
aplicaţie şi activităţile utilizatorilor trebuie să fie transparente la modificările
de orice tip efectuate asupra datelor. Orice modificare efectuată asupra unei
relaţii, nu trebuie să afecteze operaţiile de manipulare a datelor, programele de
aplicaţie şi mecanismele de interogare directă nu sunt afectate de modificările
făcute asupra datelor.
Regula 10 – regula independenţei datelor din punct de vedere al
integrităţii: Constrângerile de integritate specifice unei baze de date
relaţionale nu vor fi definite programele de aplicaţie ci de sub-limbajul
relaţional de date, urmând a fi memorate în catalogul sistem. (Regulile de
integritate trebuie să fie definite într-un sub-limbaj relaţional, nu în programul

39
de aplicaţie). Limbajul SQL permite definirea de restricţii privind integritatea
datelor şi stocarea lor în catalogul de sistem prin aceasta asigurându-se controlul
centralizat asupra constrângerilor.
Regula 11 – regula independenţei datelor din punct de vedere al
distribuirii: Sub-limbajul de manipulare a datelor trebuie să permită utilizarea
aceloraşi programe de aplicaţie şi interogări (să fie invariante din punct de
vedere logic)pentru a accesa date centralizate sau distribuite (Distribuirea
datelor pe mai multe calculatoare dintr-o reţea de comunicaţii de date, nu
trebuie să afecteze programele de aplicaţie şi interogările, dacă şi ori de câte
ori datele sunt centralizate sau distribuite fizic). Independenţa de distribuţie
presupune ca un program de aplicaţie care accesează sistemul SGBD pe un
singur calculator trebuie să funcţioneze fără modificări şi într-o reţea chiar dacă
datele sunt mutate de pe un calculator pe altul, utilizatorul percepând datele fără
a cunoaşte locul în care sunt stocate. Programele de aplicaţie trebuie să
funcţioneze fără modifică şi într-o reţea, chiar dacă datele sunt transferate de pe
un calculator pe altul.
Regula 12 – regula versiunii procedurale a SGBD (nonsubversiune):
Orice componentă procedurală a unui SGBD trebuie să respecte aceleaşi reguli
de integritate ca şi componenta relaţională (orice limbaj de nivel inferior
trebuie să respecte aceleaşi reguli de integritate exprimate în limbajul
relaţional de nivel înalt).

Cele 13 reguli pot fi grupate în cinci domenii de funcţionalitate:


 reguli fundamentale (regula 0 şi regula 12);
 reguli structurale (regula 1 şi regula 6);
 reguli de integritate (regula 3 şi regula 10);
 reguli de manipulare a datelor (regula 2, regula 4, regula 5,
regula 7);
 reguli privind independenţa de date (regula 8, regula 9 şi regula 11).

Un SGBD este minimal relaţional dacă datele din cadrul bazei de date
sunt reprezentate prin valori în tabele, nu există pointeri observabili de către
utilizatori, iar sistemul suportă operatorii relaţionali de proiecţie, selecţie şi
compunere naturală, fără limitări impuse din considerente interne.
Un SGBD este complet relaţional dacă este minimal relaţional şi, în
plus, sistemul suportă restricţiile de integritate de bază (unicitatea cheii primare,
constrângerile de referinţă, integritatea entităţii) şi precum şi toate operaţiile de
bază ale algebrei relaţionale.
Un SGBD relaţional îndeplineşte funcţiile unui SGBD, cu anumite
particularităţi care decurg din concepţia de organizare a datelor, respectiv din

40
modelul relaţional. Fiecare SGBD relaţional implementează modelul relaţional
într-o manieră proprie care îl diferenţiază de restul sistemelor relaţionale.
Caracterizarea unui SGBD relaţional se poate realiza la nivelul clasei de
SGBD relaţionale, în sensul caracterizării globale, unitare în raport cu celelalte
tipuri de SGBD, sau la nivelul unui SGBD relaţional individual în sensul
caracterizării particularităţilor sale, în raport cu alte SGBD de tip relaţional.
Realizarea funcţiilor unui SGBD relaţional se face cu ajutorul unor
instrumentele şi mecanisme de lucru specifice de tip relaţional, care le separă de
sistemele considerate ca fiind nerelaţionale:
 un limbaj relaţional pentru descrierea datelor la nivel fizic, logic şi
conceptual;
 un limbaj relaţional pentru manipularea datelor;
 mecanisme pentru controlul integrităţii semantice a datelor;
 mecanisme pentru optimizarea cererilor de date;
 mecanisme pentru asigurarea coerenţei datelor în condiţiile
accesului la date;
 utilitare pentru generarea de formulare şi rapoarte, utilitare pentru
generarea de aplicaţii, utilitare pentru generarea unor statistici
referitoare la starea şi activitatea bazei de date etc.

Un obiectiv important a proiectării unei baze de date de tip relaţional îl


reprezintă gruparea atributelor în relaţii astfel încât redundanţa datelor să fie
minimă. Relaţiile care conţin date redundante pot crea probleme, denumite
anomalii de reactualizare, care clasificate în:
- anomalii de ştergere constau în faptul că anumite date care urmează
să fie şterse, fac parte din tupluri în care se găsesc şi alte date care
mai sunt necesare în continuare, ori ştergerea făcându-se la nivelul
tuplului, acestea se pierd;
- anomalii de inserare (adăugare) constau în faptul că anumite date
care urmează să fie adăugate fac parte din tupluri incomplete
(pentru care nu se cunosc toate datele), ceea ce face ca acestea să nu
poată fi adăugate;
- anomalii de modificare rezultă din faptul că este dificil de modificat
o valoare a unui atribut atunci când ea apare în mai multe tupluri ale
relaţiei.
Spunem că un atribut B al unei relaţii R depinde funcţional de un alt
atribut A, atunci când fiecărei valori a atributului A îi corespunde exact o
anumită valoare atributului B (A→ →B). Dependenţa funcţională este o proprietate
a semnificaţiei sau a semanticii atributelor. Semantica indică modul în care
atributele sunt legate unele de altele şi specifică dependenţele funcţionale ale

41
acestora. Dependenţa funcţională este specificată ca o constrângere între
atribute. Dacă atributul B depinde funcţional de atributul A, spunem că atributul
A este determinatul atributului B. Spunem că o dependenţă funcţională este
totală sau completă dacă cele două atribute au o dependenţă funcţională în
ambele sensuri (A→ →B şi B→ →A). Pentru trei atribute A, B şi C, în care A→ →B şi
B→→C spunem că C este dependent tranzitiv de A prin intermediul atributului
B, dacă avem şi A→ →C. În acest caz spunem că există o dependenţă tranzitivă.
Eliminarea acestor anomalii se realizează cu ajutorul operaţiei numite
normalizare, care este o tehnică formală care se bazează pe cheile primare,
respectiv cheile candidat ale relaţiilor şi pe dependenţele funcţionale. Tehnica
include o mulţime de reguli care pot fi utilizate pentru testarea relaţiilor
individuale. Dacă o anumită cerinţă nu este îndeplinită pentru o anumită relaţie,
atunci relaţia în cauză va fi descompusă în relaţii care satisfac în mod individual
cerinţele normalizării. Normalizarea presupune parcurgerea unei succesiuni de
paşi, fiecare pas corespunzând unei forme normale. Prin parcurgerea etapelor de
normalizare relaţiile devin progresiv mai restrictive ca format şi mai puţin
vulnerabile la anomaliile de actualizare. Procesul de normalizare a relaţiilor se
realizează în mai mulţi paşi, începând cu forma normală unu (1NF) şi ajungând
la forma normală cinci (5NF). Pentru modelul relaţional doar prima formă
normală (1NF) este de importanţă critică, celelalte forme normale fiind
opţionale. Pentru a înlătura aceste anomalii, E.F. Codd a stabilit iniţial trei
forme normale pentru relaţii şi a introdus procesul de normalizare care se
bazează pe noţiunea de dependenţă funcţională ca relaţie între atributele unei
entităţi care are un caracter invariant. Teoria normalizării se ocupă cu
îmbunătăţirea succesivă a schemei conceptuale, fiind satisfăcute, în acelaşi
timp, următoarele condiţii:
 conservarea datelor, adică în schema conceptuală finală să existe
toate datele din cadrul schemei iniţiale;
 conservarea dependenţelor dintre date, adică să se păstreze tipurile
de relaţii dintre entităţi;
 descompunerea minimală a relaţiilor iniţiale, adică în schema
conceptuală finală nici o relaţie nu trebuie să fie conţinută într-alta.
O relaţie este în forma normală unu (1NF), dacă şi numai dacă toate
atributele ei conţin numai valori atomice, adică o sigură valoare şi numai una. În
plus, un tuplu nu trebuie să conţină atribute sau grupuri de atribute repetitive.
Este forma de bază a relaţiilor, care figurează ca cerinţă minimală la majoritatea
sistemelor de gestiune a bazelor de date de tip relaţional.
O relaţie este în a doua formă normală (2NF), dacă este în forma
normală unu şi oricare dintre atributele non-cheie este dependent funcţional
complet de cheia primară a relaţiei.

42
O relaţie este în a treia formă normală (3NF), dacă se găseşte în forma
normală doi şi toate atributele non-cheie sunt dependente tranzitiv de cheia
primară.
În afara primelor trei forme normale au fost introduse şi formele
normale: forma normală Boyce – Codd (BCNF), a patra formă normală (4NF)
şi a cincia formă normală (5NF) care conduc la diminuarea redundanţei în baza
de date. Trecerea de la forma 3FN la 4FN şi 5FN se face operând asupra cheilor
compuse între ale căror atribute apar relaţii care generează dependenţe ce nu
sunt funcţionale, numite dependenţe multi-valoare.
O relaţie este în forma normală Boyce – Codd (BCNF), dacă fiecare
determinant este o cheie candidat.
A patra formă normală (4NF) elimină redundanţele datorate relaţiilor de
tip n:m, adică a dependenţelor multiple.
A cincia formă normală (5NF) elimină dependenţele multiple de tip
ciclic, având ca rezultat o descompunerea a relaţiilor de tip uniune fără
pierderi, din relaţiile rezultate în urma descompunerii putând fi reconstituită
relaţia iniţială. Dependenţa de tip uniune fără pierderi este o proprietate a
operaţiei de descompunere, care garantează că nu sunt introduse linii false
atunci când relaţiile rezultare în urma descompunerii sunt reunite printr-o
operaţie de uniune naturală.

2.9.1. Operatorii modelului relaţional

Operatorii modelului relaţional definesc operaţiile care pot fi efectuate


asupra relaţiilor, pentru realizarea funcţiilor de prelucrare asupra datelor din
baza de date. Modelul relaţional foloseşte operatori relaţie din algebra
relaţională şi calculul relaţional. Algebra relaţională şi calculul relaţional sunt
limbaje formale utilizate pentru bazele de date relaţionale ca suport pentru
limbajul de manipulare a datelor, de nivel înalt. Algebra relaţională a fost
introdusă de E.F. Codd în 1971 ca o mulţime de operaţii formale în care
operanţii şi rezultatul sunt relaţii şi care acţionează asupra uneia sau a mai
multor relaţii pentru a defini o nouă relaţie, fără a modifica relaţiile iniţiale. Cei
cinci operatorii fundamentali ai algebrei relaţionale sunt fie operatori folosiţi
pentru operaţiile de regăsire: selecţia (sau restricţia), proiecţia, produsul
cartezian, reuniunea şi diferenţa, şi alţi trei operatori pentru operaţiile de
uniune, intersecţie şi împărţire, adică operatori tradiţionali pe mulţimi (UNION,
INTERSECT, PRODUCT, DIFFERENCE) şi operatori relaţionali speciali
(PROJECT, SELECT, JOIN, DIVISION). Operatorii de selecţie şi proiecţie

43
sunt unari, operând asupra unei singure relaţii, iar ceilalţi sunt operatori binari,
acţionând asupra unei perechi de relaţii. În algebra relaţională se specifică în
mod explicit o anumită ordine pentru evaluarea oricărei expresii, ceea ce
implică o anumită strategie de evaluare a interogării bazei de date.
În calculul relaţional o interogare precizează ce va fi extras din baza de
date fără a se preciza modul de evaluare a unei interogări. Calculul relaţional
este o adaptare a calculului predicatelor din logica simbolică aplicat pentru
interogarea bazelor de date. În logica simbolică, un predicat este o funcţie de
mai multe variabile, care are o valoare de adevăr. Înlocuind variabile cu valori
se obţine o expresie numită propoziţie, care poate fi adevărată sau falsă.
Variabilele iau valori dintr-un domeniu dat. Calculul relaţional se prezintă sub
două forme: orientat spre tupluri şi orientat spre domenii. Pe baza unor
predicate iniţiale, prin aplicarea unor operatori ai calculului cu predicate
(conjuncţia, disfuncţia, negaţia, cuantificatorul existenţial şi cuantificatorul
universal) se pot defini noi predicate, noi relaţii.
J.D. Ullmann a demonstrat echivalenţa dintre algebra relaţională şi
calculul relaţional. Motiv pentru care orice relaţie posibil de definit în algebra
relaţională poate fi definită şi în cadrul calculului relaţional, şi reciproc.

2.9.2. Integritatea referenţială

Constrângerile de domeniu sunt restricţii care se aplică asupra


mulţimi de valori permise pentru atributele relaţiilor.
Regulile de integritate sunt constrângeri sau restricţii ce se aplică
tuturor instanţelor din baza de date, adică aserţiuni pe care datele conţinute în
baza trebuie să le satisfacă şi prin care se asigură corectitudinea datelor. Se face
distincţie între regulile structurale, care sunt inerente modelării datelor şi
regulile de funcţionare (comportament), care sunt specifice unei aplicaţii
particulare. Există trei tipuri de constrângeri structurale (de cheie, de referinţă,
de entitate) ce constituie mulţimea minimală de reguli de integritate pe care
trebuie să le respecte un SGBD relaţional şi care sunt definite în raport cu
noţiunea de cheie a unei relaţii. Integritatea entităţilor impune ca într-o relaţie
de bază (care corespunde unei entităţi în schema conceptuală) nici un atribut al
unei chei primare nu poate fi null. Conform reguli de integritate referenţiale
dacă o relaţie are o cheie externă atunci orice valoare a cheii externe va coincide
cu valoarea unei chei candidat a unui tuplu în relaţia de bază a acesteia sau este
o valoare null. Sunt formulate trei reguli de integritate structurală:
 unicitatea cheii: cheia primară trebuie să fie unică şi minimală;

44
 integritatea entităţii: atributele cheii primare trebuie să fie diferite
de valoarea null;
 integritatea referirii: o cheie externă trebuie ori să fie null în
întregime, ori să corespundă la o valoare a cheii primare asociate.

2.10. Întrebări teoretice de auto-evaluare

1. Explicaţi:
a. Conceptul de bază de date
b. Noţiunea de model de date
c. Modelul Entitate-Relaţie
d. Tipurile de chei în cadrul modelării bazei de date
e. Obiectivele datelor în baze de date
f. Sistemele de gestiune a bazelor de date. Obiective
g. Funcţiunile sistemelor de gestiune a bazelor de date
h. Componentele unui mediu SGBD

2. Analizaţi diferenţele dintre limbajele pentru definirea datelor, limbajele


pentru manipularea datelor şi limbajele pentru controlul datelor.

3. Prezentaţi principalele concepte din cadrul proiectării bazelor de date.

4. Modelul de date relaţional. Baza de date relațională.

5. Detaliaţi cele 13 reguli ale lui Codd.

6. Operatorii modelului relaţional. Integritate referenţială.

45
CAPITOLUL 3
MICROSOFT ACCESS
Capitolul curent îşi propune deprinderea noţiunilor şi operaţiilor
specifice pentru crearea bazelor de date Access. Pornind de la
organizarea datelor în tabele, capitolul punctează principalele
tipuri de obiecte ce pot fi incluse într-o bază de date Access: cereri
(interogări) şi/sau rapoarte – pentru consultarea, actualizarea şi
realizarea situaţiilor de ieşire; formulare – pentru a crea o
interfaţă grafică cu utilizatorul (GUI – Graphical User Interface)
este necesară crearea formularelor; obiecte de tip macro – pentru
a automatiza acţiuni pe care Access le realizează ca răspuns la un
anumit eveniment şi module – procedurile scrise în limbajul de
programare Visual Basic. În final, sunt prezentate tipurile de
fişiere specifice Microsoft Access 2007.

3.1. Noţiuni generale privind bazele de date ACCESS

Sistemul de gestiune a bazelor de date (SGBD) Microsoft Access face


parte din pachetul de aplicaţii Microsoft Office, având caracteristicile specifice
unui sistem de gestiune a bazelor de date relaţionale, care reprezintă totodată un
instrument complex de dezvoltare a aplicaţiilor de baze de date. Microsoft
Access include facilităţile oferite de sistemul de operare Microsoft Windows
(meniu contextual al obiectelor, de exemplu); în plus, permite şi facilităţi de
tipul drag and drop. Microsoft Access este compatibil cu tehnicile de legare şi
încapsulare din tehnologia OLE Microsoft. Caracteristicile definitorii ale
SGBD Access sunt următoarele:
1. Posibilitatea creării unei baze de date care poate fi utilizată de către
un utilizator sau mai mulţi utilizatori în mod partajat;
2. Interogarea bazei de date se poate realiza în mod grafic prin
interfaţa QBE (Query By Example), sau prin limbajul SQL
(Standard Query Language);
3. Automatizarea unor activităţi/acţiuni prin macro-comenzi sau prin
aplicaţi program în limbajul VBA;
4. Realizarea importului/exportului de date către alte aplicaţii ale
pachetului Microsoft Office sau alte SGBD de tip relaţional;

47
5. Interfaţa utilizator este uşor de folosit şi respectă principiile de
utilizare caracteristice tuturor aplicaţiilor pachetului MS Office;
6. Asistenţă în dezvoltarea aplicaţiilor şi utilizarea bazei de date;
7. Existenţa componentei Help şi a facilităţilor de ajutor de tip
contextual;
8. Instrumente de lucru interactiv pe baze model de tip Wizard pentru
a ajuta utilizatorii în dezvoltarea de aplicaţii;

O bază de date ACCESS este bază de date relaţională orientată spre


obiecte. Obiectele aferente unei baze de date creată pot fi observate în panul din
stânga din Figura 3.1 – Panoul de navigare. Acesta oferă și posibilitatea
vizualizării pe categorii de obiecte sau în funcţie de relaţiile care există între
acestea, data creării ş.a.m.d.

Figura 3.1 – Interfaţa Aplicaţiei Access 2007 şi opţiunile disponibile


în Fila Create (Creare)
Un element de interfaţă specific versiunii 2007 este Office Button
(Butonul Microsoft Office) , din partea stângă-sus, care se foloseşte pentru
gestionarea lucrului cu fişierele în general (el poate fi considerat un înlocuitor al
meniului File din versiunile anterioare ale aplicaţiilor Microsoft Office).
Principalele elemente pe care el le conţine (Figura 3.2) sunt:
 un meniu de comenzi de bază (New, Open, Convert etc.) pentru
lucrul cu fişiere;
 o listă a celor mai recente documente;
 comenzi legate de tipărirea şi salvarea fişierelor;

48
 butonul Access Options (Opţiuni Access), utilizat pentru a
vizualiza şi selecta diferite opţiuni de configurare al Access-
ului (componenţa panglicilor cu butoane, modalităţi de
vizualizare a unor elemente de interfaţă, localizarea implicită a
noilor baze de date create etc.).

Figura 3.2. – Butonul Microsoft Office al aplicaţiei Access 2007


Lista butoanele de comenzi este concentrată în bara de comenzi rapide
(implicit, situată în dreapta butonului Office) şi patru file: Home, Create (care
conţine tipurile de comenzi pentru crearea obiectelor prezentate în paragrafele
următoare), fila External data – pentru realizarea preluării/exportării datelor
din/către alte aplicaţii şi fila Database Tools.

49
3.2. Tabelele

Tabelele conţin datele propriu-zise corespunzătoare entităţilor din baza


de date, organizate sub forma unei matrice în care coloane reprezintă atribute
(câmpuri), iar liniile reprezintă apariţiile, realizările entităţii (înregistrări). O
înregistrare este o linie dintr-un tabel, în care fiecare câmp conţine o valoare
concretă dintr-un domeniu de valori şi conţine informaţii care identifică o
anumită realizare concretă a entităţii; persoană, loc sau obiect – în
exemplu, 1 . Un câmp este o informaţie individuală din componenţa unei
înregistrări, iar fiecare coloană din tabelul Access reprezintă un câmp cu
informaţii diferite, bine definite ca şi tip de dată – în exemplu, 2.

Construirea tabelelor Access se poate rezuma la două activităţi


principale: crearea structurii (în modul de vizualizare Design View, spre
exemplu) şi popularea tabelului cu date – direct, în modul de vizualizare
Datasheet View (asemănător mediului de lucru din aplicaţia Excel), sau prin
intermediul formularelor sau instrucţiunilor VBA.
Câmpurile din tabelele ACCESS trebuie definite ca fiind de un anumit
tip de dată, în funcţie de elementele pa care va trebui să le stocheze fiecare
câmp (text, date calendaristice, legături către fişiere externe etc.) şi în funcţie de
limitările de spaţiu de care trebuie să ţinem cont – în special atunci când este
vorba de baze de date foarte mari, care trebuie să execute rapid un număr foarte
mare de operaţii.
Tabelul 3.1
Tipurile de date disponibile pentru câmpuri în Access 2007
Tipul de
Stochează Dimensiune
date
Text Text sau text şi numere care nu se utilizează Până la 255
pentru calcule. de caractere.
Memo Text lung sau combinaţii de text şi numere. Până la
63999
caractere.

50
Tipul de
Stochează Dimensiune
date
Number Numere, întregi sau fracţionare, care se vor
(Număr) utiliza în calcule, cu excepţia valorilor
monetare.
 Byte (Octet) — pentru valori un octet.
numerice între 0 şi 255 de caractere.
 Integer (Întreg) — pentru valori
numerice între -32.768 şi +32.768.
 Long Integer (Întreg lung) — doi octeţi.
pentru valori numerice între -
2.147.483.648 şi +2.147.483.647.
 Single (Simplă) — pentru valori patru octeţi.
numerice în virgulă mobilă între -
3,4 × 1038 şi +3,4 × 1038 şi până la patru octeţi.
şapte cifre semnificative.
 Double (Dublă) — pentru valori
numerice în virgulă mobilă între -
1,797 × 10308 şi +1,797 × 10308 şi
până la cincisprezece cifre opt octeţi.
semnificative.
 Decimal (Zecimal) — pentru valori
numerice între -9,999... × 1027 şi
+9,999... × 1027.. doisprezece
octeţi.
Date/Time Valori de dată/oră. Toate valorile stocate includ 8 octeţi.
(Dată/Oră) atât o componentă de dată, cât şi una de oră.
Currency Valori monetare (simboluri monetare). 8 octeţi.
(Simbol
monetar)
AutoNumber Generează valori unice. Un câmp AutoNumber 4 octeţi.
(Auto poate fi incrementat secvenţial, printr-un
Numerotare) increment specificat sau ales aleator. O valoare
numerică unică este inserată automat de Access
2007 la adăugarea unei înregistrări.
Yes/No De utilizat pentru câmpuri de tip Adevărat/Fals 1 bit.
(Da/Nu) care pot conţine una din două valori posibile:
Da/Nu sau Adevărat/Fals, de exemplu.
Obiect OLE Obiecte OLE din alte aplicaţii Microsoft Până la 1
Windows (documente Word, Excel, de gigaoctet.
exemplu).

51
Tipul de
Stochează Dimensiune
date
Attachment Unul sau mai multe fişiere de tip imagine Pentru
(Ataşare) digitală, fişiere Office şi orice tipuri de fişiere atașările
binare. comprimate, 2
GO. Pentru
atașări
necomprimate,
aproximativ
700KO, în
funcție de
gradul la care
poate fi
comprimat
ataşamentul.
Hyperlink Hyperlinkuri, pentru a furniza acces cu un Până la 1
singur clic pe butonul mouse-ului la pagini Web gigaoctet de
prin intermediul unui URL sau la fişiere prin caractere sau
intermediul unui nume în format UNC 2 GO de
(convenţie universală de denumire). De
spațiu.
asemenea, se pot crea legături la obiecte Access
stocate într-o bază de date.
Lookup Nu este un tip de date propriu-zis. În funcție de
Wizard De utilizat pentru pornirea expertului Căutare, tabel sau
(Expert astfel încât să se poată crea un câmp care interogare
Căutare) utilizează o casetă combo pentru căutarea
valorilor într-un alt tabel, interogare sau listă de
valori.

3.3. Interogările

Interogările sunt obiecte virtuale de tip tabelă, adică vizualizări,


care nu au corespondent fizic, fiind definite cu ajutorul tabelelor create deja în
baza de date. Tabelele virtuale definite cu ajutorul interogărilor permit
efectuarea:
• selecţiilor şi sortărilor în tabele;
• calculelor simple şi analizelor încrucişate;
• acţiunilor (adăugarea, ştergerea, actualizarea înregistrărilor);

52
• operaţiilor SQL.
Crearea unei cereri de interogare în Access 2007 se poate face în mai multe
moduri:
 utilizând instrumentul Wizard;
 prin intermediul ferestrei de proiectare (Query Design) (Figura 3.3);
 cu ajutorul limbajului SQL;
 prin salvarea unei operaţii de filtrare ca cerere de interogare.

Figura 3.3. – Fereastra de proiectare a unei interogări (Design View)


Formularele sunt obiecte folosite pentru a consulta sau actualiza datele
dintr-un tabel sau o structură de interogare.

3.4. Formularele

Formularele sunt obiecte


folosite pentru a consulta sau actualiza datele dintr-un tabel sau o structură de
interogare. Ele fac mai uşoară munca de introducere a datelor într-o bază de
date, dar şi vizualizarea celor deja existente, pentru a le face modificări. În
figura 3.4. este exemplificată utilitatea acestui obiect pentru introducerea datelor

53
unei noi persoane în baza de date. Aspectul formulare poate să difere foarte
mult ca structură, dar şi modalităţile oferite de Access 2007 pentru crearea şi
modificarea lor sunt multiple (vezi butoanele din grupul Forms, aferent filei
Create).

Figura 3.4. – Exemplu de fereastră de formular

3.5. Rapoartele

Rapoartele sunt obiecte folosite pentru a


sintetiza datele stocate într-o tabela reală sau virtuală şi a oferi un rezultat tipărit
al informaţiilor din baza de date – un raport ACCES, de la cea mai simplă listă a
unui tabel până la rapoartele cele mai complexe ce conţin regrupări de
înregistrări şi calcule.
Asemenea celorlalte obiecte prezentate până acum, rapoarte pot fi
create în mai multe modalităţi, în funcţie de complexitatea dorită şi de gradul de
personalizare pe care dorim să-l oferim acestor situaţii de ieşire. Distingem
astfel:

54
 un mod de creare rapid, fără prea multe informaţii solicitate privind
conţinutul (butonul Report din grupul Reports, fila Create);
 un mod de asemenea facil, dar cu posibilitatea de a face mici
precizări privind o „triere” a câmpurilor care să apară în raport
(Report Wizard);
 generarea unui raport „de la zero” (Blank Report), populând fiecare
secţiune cu elemente de tip control (liste, butoane, imagini), diferite
surse de date şi explicaţiile de tip text aferente.

Figura 3.5. – Exemplu de raport în modul de vizualizare Report View

Figura 3.6. – Raportul din figura 3.5 în modul de vizualizare Design View

3.6. Macrocomenzile şi modulele


Macrocomenzile ACCESS reprezintă o modalitate optimă de acces la date, care
permit automatizarea mai multor sarcini folosind un limbaj specific. Pentru a
rezolva o sarcină mai complexă se poate construi un macro (format dintr-o
mulţime de acţiuni) sau o procedură (formată dintr-o succesiune de instrucţiuni
scrise în limbajul de programare Visual Basic).

55
Vom exemplifica în continuare utilitatea unui asemenea obiect într-o
bază de date: să presupunem că dorim să creăm un
raport direct din unul din formularele de
introducere de date. Există posibilitatea să adăugăm
un buton la formular şi să creăm apoi o
macrocomandă care porneşte raportul.
Macrocomanda poate fi individuală (un obiect
separat în baza de date), care este apoi legată la
evenimentul On Click (La Clic) al butonului sau
poate fi încorporată direct în evenimentul On Click
al butonului — o caracteristică nouă în Office
Access 2007. La clic pe acel buton, macrocomanda
se lansează în execută şi porneşte raportul.

Modulele program conţin o parte a codului VBA al aplicaţiei, şi anume


declaraţiile de variabile şi constante, funcţiile şi procedurile globale ale întregii
aplicaţii. VBA reprezintă un mediu de programare orientat obiect.

Figura 3.6. – Structura obiectelor din perspectiva programării VBA

56
Un obiect este o entitate autonomă ce prezintă caracteristici (proprietăţi:
mărime, culoare, valoare etc.) şi comportamente (metode) proprii. Unele obiecte
au o reprezentare vizuală (Formular, Raport etc.) în timp ce altele nu sunt
accesibile decât în cod VBA (DBEngine, Container etc.) Marea majoritate a
obiectelor vizuale au posibilitatea de a reacţiona la evenimente (deschidere,
actualizare etc.). Programarea VBA permite declanşarea evenimentelor,
comportamentelor specifice asupra obiectelor prin intermediul codului program:
metode, proceduri şi funcţii.
 Evenimentul reprezintă acţiunea utilizatorului sau a sistemului
asupra unui obiect ceea ce declanşează execuţia codului program
corespunzător.
 Metoda constă în codul program predefinit ce se raportează la un tip
de obiect şi care se execută în momentul apariţiei unui eveniment.
 Procedura este alcătuită dintr-un set de instrucţiuni (un modul
program) ce nu returnează nici o valoare ci execută o anumită
acţiune.
 Funcţia constă dintr-un set de instrucţiuni (un modul program) care
în urma execuţiei returnează o valoare de un anumit tip.

3.7. Tipuri de fişiere în ACCESS


Office Access 2007 utilizează un nou format de fișier, care permite noi
caracteristici precum câmpurile de căutare multivalorice, utilizarea textului
îmbogățit și atașările. Principalele noi extensii de fişiere Acces sunt:
 .accdb — înlocuiește extensia .mdb a numelui de fișier din
versiunile anterioare şi este fişierul bază de date propriu-zisă. Aici
se regăseşte întreg conţinutul bazei de date: datele (Tabele), legături
(Relations/Relaţii), interfaţa vizuală (Formulare şi Rapoarte) şi
codul (Interogări, Macro-uri şi Module);
 .accde — înlocuiește extensia .mde a numelui de fișier din
versiunile anterioare. Fişierele având această extensie sunt salvate
în modul „doar în executare”, având tot codul sursă VBA eliminat.
Utilizatorul unui astfel de fișier poate doar executa codul VBA și
nu poate modifica nici codul şi nici design-ul formularelor sau
rapoartelor;
 .accdt —extensia de nume de fișier pentru Șabloane bază de date
Access.

57
3.8. Teste de auto-evaluare
1. La ce se pot folosi obiectele de tip Interogare?
2. Descrieţi una dintre modalităţile de a crea o interogare în Access 2007.
3. Ce operaţii se efectuează în mod uzual prin intermediul formularelor?
4. Descrieţi tipul de dată OLE şi Attachment.
5. Cu ce diferă modul de vizualizare Design View faţă de modul de
vizualizare Report View al unui raport?
6. Cum se poate obţine în Access 2007 un fişier cu extensia mdb?
7. Ce reprezintă fişierul având extensia mdb?
8. Ce reprezintă fişierul având extensia accdb?
9. Ce reprezintă fişierul având extensia mde?
10. Ce reprezintă fişierul având extensia accde?

58
CAPITOLUL 4
LIMBAJUL SQL
Unul dintre cele mai puternice limbaje structurate pentru
interogarea datelor, SQL (Structured Query Language), a devenit
un standard pentru o gamă din ce în ce mai largă de sisteme
pentru gestiunea bazelor de date. Vom prezenta comanda Select –
care permite realizarea interogării bazelor de date, precum şi
instrucţiunile care permit actualizarea datelor (adăugarea,
modificarea şi ştergerea datelor prin comenzi SQL).

4.1. Prezentarea limbajului SQL

Limbajul SQL (Structured Query Language sau limbajul structurat de


interogări) este un limbaj de interogări şi gestionare a bazelor de date
relaţionale. Access foloseşte SQL ca limbaj de interogare. În momentul creării
unei interogări în modul de interogare Design, Access construieşte în paralel
instrucţiunile SQL echivalente. De altfel, majoritatea proprietăţilor interogărilor
în modul de interogare Design prezintă clauze echivalente şi opţiuni accesibile
în limbajul SQL.
Exemplu: Deschideți o interogare în modul Design View:

Faceţi clic pe opţiunea Mode SQL al icoanei View

59
Se va obţine instrucţiunea SQL corespunzătoare interogării

Observaţie:
• Această operaţie este foarte interesantă în special pentru cei
nefamiliarizaţi cu limbajul SQL: se poate crea interogarea în Access şi
recupera instrucţiunea SQL astfel generată pentru a o include în codul
VBA.

Anumite interogări SQL, numite interogări specifice limbajului SQL, nu pot


fi create în grila de generare a interogărilor, ci trebuie să fie scrise direct în
modul SQL. Este vorba de:
- interogările directe ce permit operarea directă cu tabele în server,
- interogările definiţii de date ce permite crearea, ştergerea sau
modificarea structurilor tabelelor,
- interogările Union ce permit regruparea câmpurilor de două tabele (sau
mai multe) în acelaşi câmp rezultat din interogare. Aceste interogări
sunt foarte utile în fuzionarea înregistrărilor ce provin din tabele
diferite.

4.2. Limbajul SQL ŞI VBA

Interogările SQL se integrează perfect în VBA şi pot fi utilizate pornind de


la metodele diverselor obiecte:
- metoda OpenRecordset a obiectelor DataBase şi Connection,

60
- metoda CreateQueryDef a obiectelor DataBase şi Connection,
- metoda Execute a obiectelor Command şi Connection etc.
Interogările SQL sunt de asemenea foarte des utilizate în formulare:
- proprietatea RecordSource a unui formular sau raport,
- proprietatea RowSource a unei liste derulante etc.
Majoritatea acestor proprietăţi pot fi modificate de codul VBA.
Avantajele utilizării instrucţiunii SQL în VBA sunt următoarele:
 Viteza de execuţie: o instrucţiune Select este mai rapidă decât
parcurgerea secvenţială a unui tabel.
 Performanţă mai bună: în modul client/server, interogările sunt
compilate de SGBD care le optimizează performanţele.
 Întreţinere mai uşoară: codul de instrucţiuni SQL este mai scurt, deci
mai uşor de citit, decât echivalentul său în VBA.
 Standardizare: limbajul SQL este standardul de interogare al bazelor de
date relaţionale.

4.3. Descrierea limbajului SQL


4.3.1. Instrucţiunea SELECT
SELECT este cea mai folosită instrucţiune, corespunzând interogării Selection
din Access. Permite extragerea câmpurilor unui ansamblu de înregistrări ce
corespund unor criterii.

Sintaxă:
SELECT [ALL |DISTINCT <listă de câmpuri>
FROM <listă de tabele>
[WHERE ...]
[GROUP BY...]
[HAVING...]
[ORDER BY]

ALL Sunt luate în considerare toate înregistrările ce


corespund criteriilor.
Distinct Sunt omise toate înregistrările pentru care câmpurile
selectate conţin date în dublu exemplar.
<listă de câmpuri> Listă de câmpuri selectate, separate de virgule
* Indică faptul că toate câmpurile tabelului/tabelelor
specifcat(e) sunt selectate.

61
alias1, alias2 Indică numele ce trebuie folosite drept antete de
coloană în locul numelor coloanelor originale din
tabel.
<listă de tabele> Numele tabelului sau tabelelor ce conţin datele care
trebuie extrase.

4.3.2. Clauza FROM


Aceasta specifică tabelele sau interogările din care sunt extrase datele.
Sintaxă:
FROM table 1 [LEFT|RIGHT|INNER JOIN table2
ON TABLE1.camp1 <operator de comparare> TABLE2.câmp2

[LEFT|RIGHT| Aceşti operatori permit definirea tipului de imbricare


INNER] între tabele.

LEFT JOIN Se foloseşte pentru a crea o imbricare externă de


stânga. Rezultatul acesteia cuprinde toate
înregistrările provenite din primul tabel (cel din
stânga: <tabel1>) şi pe acelea pentru care există o
valoare corespunzătoare în al doilea tabel (cel din
dreapta: <tabel2>).

RIGHT JOIN Se foloseşte pentru a crea o imbricare externă de


dreapta. Rezultatul acesteia cuprinde toate
înregistrările provenite din al doilea tabel (cel din
dreapta: <tabel2>) şi pe acelea pentru care nu
există valoare corespunzătoare în primul tabel (cel
din stânga: <tabel1>).

INNER JOIN Se foloseşte pentru a crea o imbricare ce nu cuprinde


decât înregistrările în care datele câmpurilor sunt
identice.

<operator de Toţi operatorii de comparare relaţională ce sunt


comparare> utilizaţi (=, <, >, < =, > =).

Exemple:
Select Clients.Cli_societate, Commandes.Cde_DateCde

62
From Clients INNER JOIN Commandes ON
Clients.Cli_CodeCli =Commandes.Cde_CodeCli

Listă de comenzi lansate de societate. În primul exemplu, sunt selectaţi doar


clienţii care au făcut deja comenzi.
Select Clients.Cli_societate, Commandes.Cde_DateCde
From Clients LEFT JOIN Commandes ON
Clients.Cli_CodeCli =Commandes.Cde_CodeCli

În al doilea exemplu, sunt selectaţi toţi clienţii.

4.3.3. Clauza WHERE


Permite filtrarea înregistrărilor după anumite criterii.
Condiţiile clauzei WHERE se exprimă cu ajutorul operatorilor următori:
- operatori de comparare: =, <, >, < =, > =, Is [Not] Null,
[Not] In, Between.
- operatori logici: And, Or, Not.

Exemplu:
SELECT * From Produse WHERE [Prod_Pret] = 500000
SELECT * From Produse WHERE [Prod_Pret]
BETWEEN 100000 AND 200000
SELECT * FROM Clienti WHERE [Cli_plata] In
(`France, `Italia, `Spania)

4.3.4. Clauza GROUP BY


Clauza GROUP BY corespunde „Totalului” interogărilor Access (numite
Regrupări în versiunile anterioare). Permite regruparea datelor într-unul sau mai
multe câmpuri. În principal, clauza este folosită pentru executarea funcţiilor de
agregare SQL, ca şi Sum (sumă), Count (calcul), Avg (medie).
Exemple:
Această interogare returnează numărul comenzilor lansate de client.
SELECT Clienti.Cli_Societate, Count(Comenzi.Cde_DateCde
AS NbComenzi
FROM Clienti
LEFT JOIN Comenzi
ON Clienti.Cli_CodeCli = Comenzi.Cde_CodeCli
GROUP BY Clienti.Cli_Societate

63
Această interogare returnează totalul fiecărei comenzi.
SELECT Comenzi.Cde_NumCde, Sum([Cde_Pret]*[Cde_Buc]
AS TotalCde
FROM Comenzi
INNER JOIN [Detalii Comenzi]
ON Comenzi.Cde_NumCde = [Detalii Comenzi].Cde_NumCde
GROUP BY Comenzi.Cde_NumCde

4.3.5. Clauza HAVING


Specifică înregistrările regrupate ce trebuie afişate într-o instrucţiune SELECT
dotată cu o clauză GROUP BY. Odată ce regruparea este efectuată se afişează
lista de câmpuri a clauzei GROUP BY şi sunt selectate doar înregistrările care
respectă condiţia specificată în clauza HAVING.
Exemplu:
Această interogare extrage comenzile ale căror total este mai mare de
2 000 000.
SELECT Comenzi.Cde_NumCde, Sum([Cde_Pret]*[Cde_Buc]
AS TotalCde, Commandes.Cde_DateCde FROM Comenzi
INNER JOIN [Detalii Comenzi]
ON Comenzi.Cde_NumCde = [Detalii Comenzi].Cde_NumCde
GROUP BY Comenzi.Cde_NumCde, Comenzi.Cde_DateCde
HAVING (Sum(Cde_Pret*Cde_Buc)> 2 000 000)

4.3.6. Clauza ORDER BY


Această clauză determină sortarea (aranjarea în ordine crescătoare sau
descrescătoare), înregistrările rezultă dintr-o interogare în funcţie de
câmpul/câmpurile specificat(e).
Sintaxă:
[ORDER BY camp1 [ASC|DESC][, camp2 [ASC|DESC]][,. . . ]]

ASC Ordine crescătoare.


DESC Ordine descrescătoare.

Exemplu:
SELECT Clienti.Cli_Soc, Count(Comenzi.Cde_DateCde)
AS NbComenzi
FROM Clienti
LEFT JOIN Comenzi

64
ON Clienti.Cli_CodeCli =Comenzi.Cde_CodeCli
GROUP BY Clienti.Cli_Soc
ORDER BY Count (Comenzi.Cde_DateCde) DESC

4.3.7. Instrucţiunea UPDATE


Corespunde unei interogări de actualizare care modifică valorile câmpurilor
într-un tabel specificat, pentru înregistrările ce corespund criteriului dat
(facultativ).
Sintaxă:
UPDATE table
SET câmp1=valoarenouă1,[câmp2=valoarenouă2] ...
[WHERE criteriu]
Observaţie:
• Dacă nu se specifică nici o clauză WHERE, toate înregistrările sunt
actualizate.
Exemple:
Această interogare modifică codul ţării din toate înregistrările tabelului Clienţi.
UPDATE Clients SET Clients.Cli_Pays = „RO”

Această interogare modifică în tabelul Clienţi codul de ţară al înregistrărilor


clienţilor al căror oraş este „Timişoara”.
UPDATE Clients SET Clients.Cli_Pays = „RO”
Where Clienti.Cli_oras =”Timisoara

4.3.8. Instrucţiunea DELETE


Corespunde unei interogări DELETE ce şterge înregistrările din tabelul
menţionat în clauza FROM, după criteriile date (facultativ).

Sintaxă:
DELETE FROM tabel
[Where criteriu]
Observaţie:
• Dacă nu este specificată nici o clauză WHERE, toate înregistrările sunt
şterse.

65
Exemplu:
Această interogare şterge comenzile de dinainte de 1997.
DELETE Comenzi.Cde_DateCde
FROM Comenzi
WHERE (( Comenzi.Cde_DateCde) < #1/1/1997#)

4.3.9. Instrucţiunea INSERT INTO


Instrucţiunea SQL INSERT INTO corespunde unei interogări Add care adaugă
înregistrări într-un tabel.
Sintaxa:
Interogare Add de adăugare a unei singure înregistrări :
INSERT INTO <TabelDestinatie>[( câmp1 [, câmp2 [‚ ...] ] ) ]
VALUES ( valoare1 [, valoare2 [, ...]])
Observaţie:
• Trebuie să existe tot atâtea valori câte coloane de valorificat, de acelaşi
tip şi în aceeaşi ordine.

Interogare Add cu una sau mai multe înregistrări:


INSERT INTO <TabelDestinatie>[( câmp1 [, câmp2 [‚ ...] ] ) ]
SELECT [<TabelSursa>.]câmp1 [, câmp2 [,...] ]
FROM <lista de tabele>
Observaţie:
• Instrucţiunea SELECT trebuie să returneze atâtea valori în aceeaşi
ordine şi de acelaşi tip către coloanele de valorificat (câmpul
instrucţiunii INSERT).
Exemple:
Adăugarea unei înregistrări în tabelul Clienţi
INSERT INTO Clienti (Cli_CodCli, Cli_societate, Cli_oras,
Cli_plata)
VALUES( `Mirton`, `Editura Mirton`, `Timisoara~, `RO`)

Adăugarea unei înregistrări din tabelul Prospecte în tabelul Clienţi.


INSERT INTO Clienti
SELECT Prospecte.*
FROM Prospecte

66
4.3.10. Alte instrucţiuni
Interogare
TRANSFORM Creează o interogare imbricată.

UNION Creează o interogare ce fuzionează rezultatele a două sau


mai multe tabele sau interogări.

Crearea şi gestiunea de tabele


CREATE TABLE Creează un nou tabel.

CREATE INDEX Creează un nou index pentru un tabel existent.

ALTER TABLE Modifică structura unui tabel.

DROP TABLE Şterge tabelul din baza de date.

DROP INDEX Şterge indexul unui tabel.

Crearea şi gestiunea utilizatorilor şi a grupurilor


CREATE USER Creează unul sau mai mulţi utilizatori.

ADD USER Adaugă unul sau mai mulţi utilizatori grupului de


utilizatori existenţi

DROP USER Şterge unul sau mai mulţi utilizatori.

CREATE GROUP Creează una sau mai multe grupe de utilizatori.

DROP GROUP Şterge una sau mai multe grupe de utilizatori.

GRANT Oferă privilegii specifice unui utilizator sau a unui


grup de utilizatori existent.

REVOKE Retrage privilegiile specifice ale unui utilizator sau a


unui grup de utilizatori existent.

67
4.4. Exemple de utilizare a interogărilor SQL
Pentru a demonstra rezultatele limbajului SQL, exemplele următoare
propun două proceduri echivalente, una folosind limbajul SQL, cealaltă nu.
Pentru a realiza aceste exemple, se creează un tabel Clienţi având
câmpurile Cli_Societate, Cli_Ţară şi Cli_Oraş şi se tastează câteva înregistrări
în acest tabel.

4.4.1. Actualizarea înregistrărilor


Codul din exemplul următor permite modificarea conţinutului unui câmp dintr-
un tabel pentru înregistrările ce corespund criteriilor.
Codul VBA ce utilizează o interogare SQL de tip UPDATE
Private Sub Maj_Plati()
Dim cncDeviz As ADODB.Connection
Dim strSQL As Sring
`Actualizarea codului ţării din tabelul Clienţi
Set CncDeviz = CurrentProject.Connection
strSQL = „UPDATE Clients SET Clients.Cli_Plati = `RO` _
& „WHERE Clienti.Cli_Oras = „Timisoara”
cncDeviz.Execute strSQL
END SUB

Codul VBA echivalent fără interogarea SQL


Private Sub Maj_Plati()
Dim cncDeviz As ADODB.Connection
Dim rstClient As ADODB.RecordSet
` Deschidere pentru înregistrare
Set CncDeviz = CurrentProject.Connection
Set rstClient = New ADODB.RecordSet
rstClient.Open „Clienti”, cncDeviz, adOpenForwardOnly,_
adLockOptimistic
`Parcurgerea secvenţială a tabelului Clienţi
Do While Not rstClient.EOF
If rstClienti(„Cli_Oras”)= „Timisoara” Then
rstClient(„Cli_Plata”)= „RO”
rstClient.Update
EndIf
rstClient.MoveNext
Loop
End Sub

68
4.4.2. Încărcarea unei liste derulante
Codul exemplului de mai jos permite afişarea într-o listă derulantă (controlul
zonă de listă) a numelui clienţilor a căror nume de Societate începe cu o listă
dată (litera este scrisă într-o zonă de text).
Pentru a testa acest exemplu:
- se creează un formular numit Clienţi
- se adaugă controalele următoare în acest formular:
- o zonă de text (txtNameSoc),
- o zonă de listă (IstSoc),
- un buton de comandă (cmdLista1).

Codul VBA ce utilizează interogarea SQL de tipul SELECT. Conţinutul listei


este rezultatul interogării SQL.
Private Sub cmdListe1_Click()
Dim strSQL As Sring
`Controlul numelui scris
If txt numeSoc = „ „ Then
MSGBOX(„Trebuie să tastaţi cel puţin o literă”, _
txtNumeSoc.SetFocus
Exit Sub
End If
`Proprietăţi ale listei derulante
`Lista conţine o interogare
Me.lstSoc.RowSourceType = „Table/Interogare”
strSQL = „SELECT Clienti.Cli_Societate Like `”& _
Me.txtNumeSoc & „*`
Me.lstSoc.RowSource = strSQL
`Reactualizarea datelor listei
Me.lstSoc.Interogare
End Sub

Codul VBA echivalent fără interogarea SQL.


Private Sub cmdListe1_Click()
Dim cncDeviz As ADODB.Connection
Dim rstClient As ADODB.RecordSet
Dim strNumeSoc as String
`Controlarea numelui scris
If txtNumeSoc = „ „ Or IsNull(txtNumeSoc) Then
MSGBOX(„Numele acesta a mai fost introdus”, vbExclamation)

69
txtNumeSoc.SetFocus
Exit Sub
End If
`Iniţializarea listei derulante
`Lista conţine o suită de valori
Me.lstSoc.RowSourceType = „Lista de valori”
Me.lstSoc.RowSource = „ „
Me.lstSoc.Requery
`Deschiderea unui set de înregistrări
Set cncDeviz = CurrentProject.Connection
Set rstClient = New ADODB.Recordset
rstClient.Open „Clienti”, cncDeviz, adOpenForwardOnly, _
adLockOptimistic
` Parcurgere secvenţială a tabelului şi adăugarea elementelor în
listă
Do While Not rstClienti.EOF
If Left(rst(Client(„Cli_Societate”),1) = _
Left(MetxtNumeSoc, Len(Me.txtNumeSoc)) Then
strNumeSoc = rstClient(„Cli_Societate”)
Me.LstSoc.AddItem strNumeSoc
End If
rstClient.close
End Sub

Observaţie:
1. În exemplele precedente, codul ce utilizează SQL este mai scurt şi
execuţia sa este mai rapidă în special dacă tabelul Client conţine un
număr important de înregistrări.

4.5. Teste de auto-evaluare


11. Explicaţi şi exemplificaţi:
a. Instrucţiunea Select
b. Instrucţiunea Update
c. Instrucţiunea Delete
d. Instrucţiunea Insert Into
12. Ce se înţelege prin operaţia de actualizare a înregistrărilor?
13. Cum se poate realiza încărcarea unei liste derulante?

70
PARTEA PRACTICĂ

APLICAŢII PRACTICE REZOLVATE


Acest capitol se doreşte a fi un îndrumător pentru orele de
laborator, în vederea însuşirii deprinderilor practice de utilizare a
programului Microsoft Access 2007. Acesta va cuprinde atât
aplicaţii rezolvate cât şi aplicaţii propuse studenţilor pentru
munca individuală sau pentru autoverificarea cunoştinţelor
însuşite din partea teoretică şi în urma realizării aplicaţiilor
rezolvate. Suntem conştienţi că noţiunile prezentate prin exemplele
din acest capitol nu acoperă toate facilităţile de prelucrare oferite
de Microsoft Access, dar reprezintă exemple edificatoare privind
posibilităţile de gestionare oferite de Access 2007.

5.1. Aplicaţia 1

1. Să cere informatizarea activităţii unei firme. Furnizorii sunt identificaţi


prin cod furnizor, denumire furnizor (numele şi prenumele
furnizorului), localitatea, adresa, email, banca furnizor şi cont furnizor.
Despre produse se cunosc cod produs, denumire produs, unitate de
măsură, stoc, preţ unitar. Produsele sunt depozitate în magazii, pentru
care se cunosc cod magazie, denumire magazie, gestionar (numele
persoanei care are în gestiune depozitul respectiv). Operaţiunile se
desfăşoară pe baza unor facturi, care trebuie să conţină numărul
facturii şi data facturii. Fiecare factură va avea detaliate liniile facturii
în tabelul LiniiFact, care va conţine număr factură, cod produs şi
cantitate.
2. Se cere afişarea tuturor produselor în ordinea alfabetică a denumirii
acestora.
3. Să se afişeze toate produsele cu unitatea de măsură bucăţi care au
cantitatea strict mai mare decât 2, ordonate alfabetic după denumirea
produsului.

71
Obiective:

- Crearea unei baze de date.


- Crearea tabelelor în Design View. Analiza informaţiilor şi stabilirea
structurii tabelelor. Stabilirea cheilor primare şi a indecşilor.
- Crearea relaţiilor dintre tabele.
- Afişarea unei liste ordonate şi aplicarea filtrelor pentru afişarea datelor
după anumite criterii.

Rezolvare

1. Propunem următoarea schemă de structurare a datelor:

În tabela LiniiFact se observă faptul că pentru câmpul nr_f nu poate fi


definită o cheie primară, de aceea vom adăuga câmpul ID.
Se ştie că un furnizor va apare pe mai multe facturi. Deci relaţia dintre
tabelele Furnizori şi Facturi este de tipul one-to-many. Pentru a crea această
relaţie, este necesară adăugarea câmpului cod_f în tabela Facturi. Într-o magazie
se găsesc mai multe produse, deci relaţia dintre tabela Magazii şi tabela Produse
este de tipul one-to-many. Pentru aceasta este necesară adăugarea câmpului
cod_m în tabela Produse. În acelaşi timp un produs se regăseşte de mai multe
ori (posibil) pe liniile unei facturi, sau pe liniile mai multor facturi. Deci relaţia
dintre tabela Produse şi tabela Liniifact este one-to-many. Pentru a o crea este
necesară adăugarea câmpului cod_p în tabela Liniifact. În final, o factură are
mai multe linii, deci relaţia dintre tabelele Facturi şi Liniifact este de tipul one-
to-many.
Pentru a realiza aceste leagături, unele tabele trebuie completate cu
anumite câmpuri suplimentare, care să permită crearea ulterioară a relaţiilor.
Pentru aceasta, în tabela copil, se adaugă câmpul pe care a fost creată cheia
primară din tabela părinte. Câmpurile de tip cheie primară alese vor fi: Furnizori
(cod furnizor), Produse (cod produs), Magazii (cod magazin), Facturi (nr fact) şi
Liniifact (ID). Deci tabelele părinte sunt: Furnizori, Magazii şi Facturi, iar

72
Produse şi Liniifact sunt tabele Copil. Adăugând şi rearanjând tabelele, acestea
vor arăta ca în figura următoare:

Primul pas este crearea bazei de date. Aceasta va purta numele Firme.
Pentru a crea baza de date, din meniul File se alege opţiunea New, iar din Task
Pane-ul New File se alege opţiunea Blank Database. Primul pas este alegerea
locaţiei în care va fi salvat fişierul, apoi denumirea propriu-zisă a acestuia.
După crearea bazei de date se trece la analiza fiecărui tabel în parte şi
alegerea tipului de câmp cel mai potrivit datelor care vor fi salvate în acesta.
Propunem următoarele:
- în tabela Furnizori: cod_f (codul furnizorului) – cheie primară, de tip
Number, Field Size: Integer, Decimal Places:0, Caption: cod furnizor,
Validation Rule: <=200, Validation Text: “Maxim 200 de furnizori”,
Required: Yes; den_f (denumirea furnizorului) – de tip Text, Field Size:
30, Format: >, Caption: denumire furnizor, Required: Yes, Allow Zero
Length: No, Indexed: Yes (Duplicates OK); loc_f (localitate) – de tip
Text, Field Size: 30, Caption: localitate, Default Value: Timisoara;
adresa – de tip Memo; email – de tip Hyperlink; banca – de tip Text,
Field Size: 30, Format: >, Required: Yes, Allow Zero Length: No; cont
(contul din bancă, IBAN) – de tip Text, Fields Size: 24, Input Mask:
"RO"99>AAAA0000099999999999.

După ce toate câmpurile au fost create, se salvează tabela alegând


butonul Save, apoi se apasă săgeata de pe butonul View, de unde se alege
Datasheet View, pentru a introduce datele a trei furnizori în tabelă.

73
- în tabela Magazii: cod_m (cod magazin) – Primary key, de tip Number,
Field Size: Byte, Caption: Cod magazin, Required: Yes; den_m – de tip
Text, Field Size: 15, Caption: Denumire magazie, Indexed: Yes
(Duplicates OK), gest – de tip Text, Field Size: 30, Caption: Gestionar.
Vom introduce în continuare 3 magazii, cu codurile magazilor 111, 112
şi 113;

- în tabela Produse: cod_p – Primary key, de tip Number, Field Size:


Long Integer, Caption: Codul produsului, Required: Yes; den_p
(denumirea produsului) – tipul câmpului Text, Field Size:15, Caption:
denumirea produsului; um (unitate de măsură) – de tipul Lookup
Wizard, apoi selectăm – I will type in the values that I want, la
opţiunea Number of Columns lăsăm 1, iar în lista col1 vom tasta pe
rând, una sub alta, valorile dorite: kg, l, cm, buc, selectând butonul
Next, apoi Finish; stoc (stocul disponibil în magazie) – de tip Number,
Field Size: Long Integer, Caption: unitate de masura, Required: Yes;
pret_u, de tip Currency, Caption: Pret unitary; cod_m (cod magazie) –
un câmp de tip Lookup Wizard – vom selecta opţiunea I want the
lookup column to lookup the values in a table or query, apoi se allege
tabela Magazii; selectăm câmpul cod_m (cod magazie):

74
Ordonarea va fi făcută după acelaşi camp cod_m, putându-se observa
valorile introduse anterior în tabela Magazii:

În continuare se selectează butonul Next, apoi Finish. Între cele două


tabele (Magazii (tabela părinte) şi Produse (tabela copil) va fi creată
automat o relaţie). Pentru ca această relaţie să fie de tipul one-to-many,
vom introduce minim 4 produse, 2 dintre ele găsindu-se în aceeaşi
magazine, de exemplu cea cu codul 113;

- tabela Facturi: nr_f (numărul facturii) – Primary key, de tip Number,


Field Size: Long integer, Caption: Numarul facturii, Required: Yes;
data_f – de tip Date/Time, Caption: Data Facturii, Required: Yes,
Format: Short date, cod_f (cod furnizor) – tipul de date Lookup Wizard,
ne legăm de tabela Furnizori, câmpul cod_f, Caption: Cod furnizor.
Tabela Facturi este copilul tabelei Furnizori. Având 3 furnizori în tabela
părinte, vom introduce minim 4 facturi, codul furnizorului 125
repetându-se de 2 ori:

- tabela Liniifact: ID – Primary Key, un câmp de tip Autonumber,


Caption: Numar curent; nr_f (numărul facturii) – un câmp de tip
Lookup Wizard, ne legăm de tabela Facturi, câmpul nr_f, Caption:

75
Numarul facturii; cod_p (codul produsului) – un câmp de tip Lookup
Wizard, ne legăm de tabela Produse, câmpul cod_p şi cant – un câmp
de tip Number, Field Size: Integer, Caption: Cantitate. Acest tabel fiind
copilul tabelelor Produse şi Facturi, vom introduce minim 5 înregistrări:

Pentru a verifica relaţiile şi a seta regulile de integritate referenţială, se

selectează butonul Relationships de pe bara de unelte: :

Pentru fiecare relaţie în parte, se apelează meniul contextual, se alege


opţiunea Edit Relationship... Pentru a seta regulile de integritate referenţială se
selectează opţiunea Enforce Referential Integrity, bifând opţiunea Cascade
Update Related Field. Dacă se doreşte modificarea tipului de relaţie dintre cele
două tabele, se selectează butonul Join Type..., alegând una dintre cele trei
tipuri de relaţii.

76
Selectând pentru fiecare relaţie în parte opţiunile respective, se obţine
următoarea situaţie:

2. Pentru a vizualiza datele într-o anumită ordine se pot folosi butoanele


de pe bara de unelte , sau:

Pentru aceasta trebuie să fim poziţionaţi pe o anumită coloană din tabel,


în modul de vizualizare Datasheet View.

3. Pentru a filtra datele dintr-o anumită tabelă putem selecta fie unul
dintre butoanele: Filter by selection, respectiv Filter by form, şi
Apply/Remove filter, fie una dintre opţiunile din următoarea figură. Opţiunea
Filter by Form ascunde înregistrările, permiţând fie selectarea valorii dorite
utilizând combo-box-ul corespunzător coloanei dorite, fie introducerea unei sau
mai multor valori, operatorul dintre condiţiile multiple fiind AND. Pentru a
vedea rezultatul, se selectează butonul Apply Filer de pe bara de unelte Table
Datasheet.

Opţiunea Filter by selection permite selectarea cu mouse-ul a valorii


căutate (efectuându-se un click în celula respectivă), rezultatul fiind vizibil
atunci când se apasă butonul Apply Filter. Dacă se doreşte anularea filtrului, se
selectează butonul Remove Filter (acest buton este un buton de tip On/Off).
Filter excluding selection funcţionează exact ca şi opţiunea Filter by
selection, diferenţa fiind operatorul NON pus în faţa condiţiei.

77
Ultima opţiune – Advanced Filer/Sort permite deschiderea unei
ferestre cu ajutorul căreia putem sorta şi compune condiţii compuse, putându-se
utiliza operatorul OR între condiţii:

5.1.1. Aplicaţie propusă

Se cere informatizarea activităţii unei societăţi de asigurări. Clienţii pot fi


persoane fizice sau juridice caracterizate printr-un număr unic, nume şi
prenume/denumire, adresă şi telefon. Aceştia pot să încheie diferite tipuri de
asigurări (de bunuri, de viaţă etc). Asigurările sunt încheiate de agenţii ce sunt
identificaţi printr-un cod unic, nume şi prenume. Contractul de asigurare este
caracterizat printr-un număr, data încheierii, obiectul asigurării, perioada (în
luni), valoarea asigurată şi prima ce va trebui să fie plătită în fiecare lună de
client. Clienţii efectuează plata primelor prin ordin de plată (persoane juridice)
sau direct la casierie (persoane fizice), eliberându-se chitanţe. Documentul de
plată conţine: numărul documentului, data la care a fost întocmit şi suma plătită.
În momentul producerii riscului pentru care a fost întocmită asigurarea,
societatea plăteşte clientului despăgubiri. La plata despăgubirilor se întocmeşte
un proces verbal care este caracterizat prin nume, data încheierii, descrierea
cauzei ce a generat despăgubirea şi procentul în care este despăgubit clientul.

78
5.1.2. Aplicaţie propusă

Se cere informatizarea activităţii la o filială CEC. Clienţii filialei sunt


identificaţi prin seria şi numărul de buletin, data eliberării buletinului, nume,
prenume şi adresă. Fiecare client poate să deţină unul sau mai multe cecuri.
Pentru fiecare cec se cunoaşte: seria, numărul, data la care a fost eliberat, suma
depusă în momentul eliberării şi tipul cecului (poate fi la termen şi la vedere).
De asemenea, fiecare cec poate să aibă unul sau mai mulţi titulari. Fiecare client
poate efectua depuneri şi restituiri. Depunerile se efectuează prin intermediul
unei foi de depunere (FD) caracterizată prin: număr, data şi suma depusă.
Restituirile se efectuează prin intermediul foilor de restituire (FR) caracterizate
prin: număr, data şi suma restituită. Fiecare cec se poate lichida de către unul
din titulari prin intermediul unei foi de lichidare (FL) caracterizată prin: număr,
data şi suma din momentul lichidării. Dobânda acordată pentru cecuri se
modifică de la o zi la alta şi este diferită pentru cecurile la termen faţă de cele la
vedere.

5.2. Aplicaţia 2

1. Să se paroleze baza de date.


2. Pentru a vizualiza cât mai sugestiv relaţiile dintre tabele, se vor
crea formulare cu subformulare.
3. Formularele create vor fi modificate pentru a adăuga titluri,
butoane de comandă şi controale de tip Textbox pentru afişarea şi
calcularea valorilor TVA şi VALOARE.
4. Se cere crearea unei forme de meniu. Aceasta va apela cu ajutorul
butoanelor de comandă alte forme, câte una pentru fiecare table,
pentru vizualizarea datelor.
5. Se doreşte crearea unui panou de comandă (Switchboard) pentru
crearea unui meniu care să conţină toate formele.

79
Obiective:

- Protejarea bazei de date.


- Vizualizarea datelor cu posibilitatea efectuării unor operaţii
elementare asupra acestora.
- Afişarea unor valori calculate după anumite formule.
- Crearea unei interfeţe vizuale cu utilizatorul.

Rezolvare

1. Pentru a proteja baza de date cu o parolă, aceasta trebuie deschisă în


mod Exclusive. Pentru aceasta, vom închide baza de date, alegem opţiunea
Open, după selectarea bazei de date se apasă săgeata din dreptul butonului
Open, pentru a alege opţiunea Open Exclusive.

Apoi, pentru a seta o parolă, Tools/Security/Set Database Password:

80
2. Pentru a crea un formular pentru fiecare tabel în parte, se
selectează tabelul, apoi din meniul Insert se alege opţiunea Autoform.
De exemplu, pentru tabela Facturi, fiind tabela părinte tabelei
Liniifact, automat se va crea un formular cu un subformular.

3. Pentru a adăuga un titlu în antet şi butoane de comandă acestei


forme, vom utiliza butonul View pentru a trece în Design View:

Pentru a adăuga un antet/subsol, din meniul Insert vom alege opţiunea


Form Header/Footer. Pentru a adăuga controale pe formă este necesară
afişarea barei de unelte Toolbox, prin apăsarea butonului Toolbox de pe bara de
unelte.

Pentru a adăuga un titlu în partea de antet (Header), se utilizează

controlul Label de pe bara de unelte, , se tastează textul dorit, apoi se


formatează folosind butoanele de pe bara de unelte.

81
Pentru a adăuga un control de tip buton de comandă, trebuie ca butonul

Control Wizards să fie selectat. Apoi, se alege butonul Command

Button , dând un click în zona de subsol. Aceasta va porni asistentul


care permite construirea butonului. Acţiunile pe care le putem ataşa butonului
de comandă sunt grupate în mai multe categorii. De exemplu, pentru a închide o
formă, se selectează categoria Form Operations, selectând apoi acţiunea Close
Form. La apăsarea butonului Next asistentul vă ghidează pentru a alege fie o
imagine grafică asociată butonului, fie un text. Ultimul pas este dat de
denumirea butonului. După convenţiile cunoscute, orice buton de comandă are
un antet de 3 litere, cmd, deci numele acestuia va fi cmdIesire. Analog se
construiesc restul butoanelor dorite. Forma se va salva cu numele Facturi-
Liniifact. Analog se construiesc restul formelor.

Vom construi o formă care să conţină datele din tabelele Produse şi


Liniifact. Pentru aceasta, vom selecta opţiunea Create Form in Design View.
Vom deschide fereastra Properties pentru a selecta tabelele de unde vor fi
preluate datele. Pentru aceasta, fiind poziţionaţi pe formă, apelăm meniul
contextual (click-dreapta) şi alege Properties:

82
Dacă se alege obiectul Form, prima opţiune pe pagina All este Record
Source. Dacă dorim să extragem datele dintr-o singură tabelă, alegem una
dintre cele afişate atunci când este selectat combo-box-ul. Dacă se doreşte
extragerea datelor din mai multe tabele, se apasă butonul cu trei puncte. Din
fereastra Show Table vom alege cele două tabele, Liniifact şi Produse.

Vom alege din cele două tabele câmpurile nr_f, den_p, um, pret_u şi
cant. La închiderea ferestrei se salvează interogarea. Pentru a putea utiliza

câmpurile, dacă acestea nu apar implicit, se apasă butonul . Prin drag-and-


drop, aceste cîmpuri vor fi aşezate pe formă.

Pentru a calcula un câmp, acesta trebuie creat cu ajutorul controlului


Text-box de pe bara de unelte Toolbox. Selectând controlul şi dând un click pe
formă, vom observa o etichetă cu numele Text urmat de un număr, şi un text-
box în care apare completat Unbound. În locul textului se completează: TVA,
iar în locul lui Unbound se tastează =0,19*[cant]*[pret_u]. Pentru a formata
această casetă de text, din fereastra Properties, opţiunea Format, se alege
Currency.

83
Analog se calculează câmpul Valoare.

4. Pentru a crea o formă de meniu, se crează o formă cu ajutorul


opţiunii Create a Form in Design View, apoi se creează butoanele de comandă
(cu ajutorul asistentului Control Wizards), selectîndu-se de la categoria Form
Operation, acţiuneaOpen a form, urmând a selecta numele formei care se
doreşte a fi deschisă atunci când se execută click pe buton.

6. Pentru a construi un panou de comandă (Switchboard):

Dacă apare acest mesaj de eroare, se alege opţiunea Yes:

Din fereastra Switchboad Manager se alege opţiunea Edit, pentru a


edita panoul de comandă principal (Main).

84
Pentru a crea o nouă opţiune (un nou buton pe panoul de comandă) se
alege butonul New:

Analog se crează pentru fiecare formă o nouă opţiune. Pentru a crea un


buton care permite părăsirea aplicaţiei:

Putem alege oricare acţiune dintre următoarele:

Forma poate fi regăsită oricând în cadrul formularelor:

85
5.2.1. Aplicaţie propusă:
Să se creeze o interfaţă grafică cu utilizatorul cu ajutorul opţiunii
Switchboard, fiind create formulare cu subformulare, îmbogăţite cu butoane de
comandă şi câmpuri calculate, pentru baza de date de la Aplicaţia 5.1.1. şi 5.1.2.

5.3. Aplicaţia 3

1. Să se creeze o interogare care să permită afişarea informaţiilor de


pe toate facturile (nr_f, data_f, den_p, cant şi preţ unitar) pentru
data curentă.
2. Să se creeze o interogare pentru tabela Produse, afişându-se
pentru fiecare înregistrare TVA-ul şi Valoarea (cant*pret).
3. Să se creeze o interogare care să permită citirea interactivă în
momentul execuţiei a unui număr de factură şi afişarea
informaţiilor legate de aceasta.
4. Să se creeze o interogare care să permită afişarea tuturor
facturilor eliberate între 2 date calendaristice (operatorii Between
cu And).
5. Să se creeze prin intermediul unei interogări un nou câmp cu
numele Observaţii care va conţine textul “Produs eficient” dacă

86
valoarea este mai mare decât o anumită valoare sau “Produs
ineficient” daca valoarea este mai mică decât acea valoare.
6. Să se afişeze toate facturile eliberate luna aceasta.
7. Operatorul Like:
a. Să se afişeze toate produsele care încep cu litera p.
b. Să se afişeze doar produsele care sunt din 5 litere si încep
cu litera p.
8. Să se afişeze toate produsele care au preţurile 3 şi 5 lei.
9. Să se afişeze toate produsele care nu au completat câmpul
denprodus.
10. Să se determine pentru fiecare factură valoarea totală.
11. Să se creeze un nou tabel pe baza tabelelor Facturi, Produse şi
LiniiFact, rezultatul unei interogări, care să conţină toate datele
din toate tabele, suprimând apariţia dublată a câmpurilor de
legătură, tabelul fiind ordonat alfabetic după denumirea
produselor.
12. Să se numere câte produse au preţul mai mic decât 100 lei. Să se
salveze interogarea cu numele Minim.
13. Să se calculeze valoarea totală a facturii cu numărul citit de la
tastatură. Să se salveze interogarea cu numele ValoareTot.
14. Să se calculeze valoarea medie a valorii tuturor facturilor. Să se
salveze interogarea cu numele Medie.

Obiective:

- Crearea interogărilor de selecţie.


- Funcţii pentru date calendaristice.
- Crearea unor câmpuri calculate.
- Interogări cu parametru.
- Operatorii Between, Like, In, Is Null.
- Funcţia IIF.
- Interogări de tip Totals.
- Interogări de tip Make Table.

Rezolvare:

1. Pentru a crea o interogare, se alege obiectul Query, selectând apoi


opţiunea Create Query In Design View. În fereastra Show table vom selecta
pe rând tabelele Facturi, Liniifact şi Produse, apăsând apoi butonul Add, apoi
se închide fereastra. Pentru a alege câmpurile dorite, acestea se selectează prin
dublu-click. Pentru a selecta condiţia ne poziţionăm sub coloana data_f, pe linia

87
Criteria, unde tastăm =Date(). Se salvează interogarea apăsând pe butonul
Save. Pentru a vizualiza rezultatul interogării, de pe butonul View se alege
Datasheet View.

Observaţie: Dacă înterogarea nu returnează nici un rezultatul,


înseamnă că nici o înregistrare nu a verificat condiţia ca data facturii să fie data
curentă.
2. Pentru a crea a doua interogare, se alege tabela Produse din fereastra
Show Tables, apoi se calculează câmpurile TVA şi valoare, pe rând, pe linia
Field, prima coloană liberă: TVA: [pret_u]*[cant]*0,19, respectiv Valoare:
[pret_u]*[cant]*1,19. Se salvează şi vizualizeză rezultatul interogării. Pentru a
formata o anumită coloană din interogare (TVA şi Valoare), în Design View se
selectează coloana, se apelează meniul contextual opţiunea Properties, iar la
opţiunea Format se alege Currency. Analog se procedează şi cu coloana
Valoare.

Se salvează interogarea şi se vizualizează rezultatele.

3. Se selectează tabelele Facturi, Produse şi Liniifact, câmpurile: nr_f,


data_f, den_p, pret_u şi cant. Pentru a crea o interogare cu parametru, care să
permită citirea interactivă a numărului facturii de pe tastatură, pe coloana nr_f,
linia Criteria se tastează [Introduceti numarul facturii].

88
4. Se selectează tabela Facturi, Liniifact şi Produse, câmpurile: nr_f,
data_f, den_p, pret_u şi cant:

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


cu alt nume (Save as). Se apelează meniul contextual asociat unui nou câmp, se
alege opţiunea Build Event:

Se selectează funcţia IIF, modificând-o astfel: Observatii:


IIf([valoare]>50;"Produs eficient";"Produs ineficient").

6. Vom folosi 2 funcţii care pot fi aplicate unor date calendaristice:


Datepart (o parte dintr-o dată calendaristică) şi funcţia Month (extrage luna
dintr-o dată calendaristică).

89
7. a). Se alege tabela Produse, câmpurile: den_p, pret_u, stoc, um şi
cod_m. Pe coloana den_p, linia Criteria se tasteauă condiţia: LIKE "p*".
b) Se deschide interogarea de la punctul a), se salvează cu alt nume,
se trece în modul de vizualizare Design View şi se modifică condiţia: LIKE
"p????".

8. Se alege tabela Produse, coloana pret_u, utilizându-se operatorul


IN.

9. Tabela aleasă va fi Produse, câmpurile: den_p, cant, cod_m. Pe


coloana den_p, linia Criteria se tastează IS NULL.

10. Deschidem interogarea de la punctul 2, unde avem calculată


valoarea. Salvăm interogarea cu un alt nume, trecem în Design View şi ştergem
sau modificăm restul câmpurilor, lăsând doar următoarele: nr_f şi valoare.

90
Se selectează butonul Totals de pe bara de unelte, iar sub valoare, pe
linia Total, se alege funcţia SUM.

11. Pentru a crea o nouă tabelă cu toate înregistrările din tabelele


Facturi, Produse şi Liniifact, se adaugă toate câmpurile din aceste tabele, fără
a duplica respectivele câmpuri, iar din meniul Query se alege opţiunea Make
Table Query, se dă un nume tabelei noi create, apoi se salvează interogarea, şi
apasă butonul Run pentru a executa acţiunea:

Mesajul următor este doar unul de avertizare, şi anume datele salvate în


tabele vor fi adăugate în tabelul nou creat. Deci vom apăsa butonul Yes.

12. Din fereastra Show Table se alege tabela Produse, utilizându-se


funcţia COUNT:

91
13. Pentru a calcula valoarea totală pe fiecare factură în parte, se
grupează datele după numărul facturii (interogări de tip Totals) şi se alege
funcţia SUM:

14. Pentru a calcula media se aplică funcţia AVG:

92
5.3.1. Aplicaţie propusă

Să se încerce toate tipurile de interogări din exemplul anterior pe


problemele propuse 5.1.1 şi 5.1.2.

5.4. Aplicaţia 4

1. Să se creeze un raport pentru tabelul Furnizori, datele fiind


grupate după localitate.
2. Să se creeze un raport pentru afişarea datelor de pe fiecare factură
în parte, calculându-se valoarea facturii şi valoarea totală a tuturor
facturilor.
3. Să se creeze rapoarte pentru fiecare tabel şi interogare create
anterior.

Obiective:

- Crearea rapoartelor cu ajutorul Wizard-ului.


- Crearea rapoartelor cu datele provenind din mai multe tabele.
- Adăugarea unor câmpuri calculate.

Rezolvare:
1. Pentru a crea un raport cu ajutorul asistentului, se alege opţiunea
Create Report by Using Wizard. La primul pas se alege tabela sau interogarea
pe baza căreia se va crea raportul (Tables/Forms). Din caseta Available Fields
se selectează câmpurile dorite, apoi se apasă butonul Next.

93
La pasul 2 se selectează criteriul de grupare, în cazul de faţă vom grupa
furnizorii după localitate. Dacă se apasă butonul Grouping Options se pot
alege mai multe variante de grupare: după prima iniţială, a doua etc...

La pasul următor se selectează ordinea în care vor fi afişate


înregistrările în raport:

În continuare se selectează orientarea paginii (verticală, orizontală),


precum şi modul de afişare al informaţiilor pe pagină:

94
La pasul următor se alege un stil din lista afişată. Ultimul pas permite
modificarea titlului raportului (nu este vorba de numele cu care va fi salvat
raportul, ci doar textul care va apare în antentul raportului), apoi putem alege
între a vizualiza raportul şi a modifica raportul. Pentru a încheia crearea
raportului se alege opţiunea Finish.

Raportul în modul Design va apare ca în figura următoare:

Dacă datele care dorim să apară provin din mai multe tabele, sau avem
nevoie de unele câmpuri calculate, putem crea o interogare în care să selectăm
tabelele, calculând câmpurile dorite, apoi creăm raportul pe baza interogării.
Dacă se doreşte adăugarea unui câmp care va fi calculat, se alege de pe
bara de unelte Toolbox controlul TextBox. În caseta în care apare Unboand, se
începe cu simbolul =, apoi se tastează funcţia sau formula dorită. Numele
câmpurile vor fi trecute între paranteze drepte. De exemplu, un câmp valoare ar
putea fi calculat astfel =[cant]*[pret_u]*0,19.

95
2. Pentru a crea raportul, vom alege ca sursă a datelor interogarea cu
numele Valoare. Dacă în această interogare avem câmpuri de tip Numeric, la
pasul 3 se selectează butonul Summary Option, bifând check-box-urile de sub
funcţia SUM pentru câmpurile TVA şi Valoare.

Pentru a vizualiza raportul, de pe butonul View se alege opţiunea Print


Preview.

5.4.1. Aplicaţie propusă

Să se creeze rapoarte cu ajutorul Wizard-ului şi cu ajutorul opţiunii


Create Report in Design View pentru problemele propuse 5.1.1 şi 5.1.2.

5.5. Aplicaţia 5

1. Să se creeze următoarea formă de meniu.

96
Obiective:

- Crearea butoanelor de comandă fără ajutorul asistentului.


- Utilizarea ferestrei Properties pentru a customiza butonul.
- Prezentarea mediului de programare VBA.
- Utilizarea comenzii DoCmd cu metodele OpenTable, RunSQL şi Quit.
- Instrucţiuni VBA – citirea de la tastatură a datelor prin InputBox.
- Instrucţiuni SQL – inserarea unei noi înregistrări, modificarea valorii
unui câmp, selecţia datelor.

Rezolvare:

În acest caz se va folosi facilitatea Create form in Design View. De pe


bara de unelte Toolbox se verifică dacă butonul Control Wizard este
selectat. Acesta trebuie să fie deselectat pentru a permite crearea manuală a
controalelor, fără ajutorul asistentului. În continuare se alege butonul de

comandă Command Button , acesta fiind depozitat pe formă.


Apelând meniul contextual asociat butonului de comandă creat pe formă, se
selectează opţiunea Properties şi se modifică proprietăţile Name: cmdDesPr şi
Caption: Produse – Design. Analog se procedează pentru restul butoanelor.
Pentru a introduce instrucţiuni ataşate butoanelor trebuie să apelăm
editorul Visual Basic. Pentru aceasta, se apelează meniul contextual al fiecărui
buton în parte, se alege Build event, Code builder, OK.
Mediul de programare Visual Basic Application arată ca în figura
următoare:

97
În zona de declarare a variabilelor se tastează:

Butonul 1
Private Sub cmdDesPr_Click()
' se deschide tabela Produse pt. vizualizare in Design
DoCmd.OpenTable "Produse", acViewDesign
End Sub

Toate liniile care încep cu caracterul apostrof sunt comentarii, ele vor fi
ignorate de compilatorul Visual Basic.

Butonul 2
Private Sub cmdDescPr2_Click()
' se deschide tabela Produse pt. vizualizare in Datasheet View
DoCmd.OpenTable "Produse"

98
End Sub

Butonul 3
Private Sub cmdInsPr_Click()
'adaugarea unei noi inregistrari
DoCmd.RunSQL "insert into produse values (cod_produs, den_produs,
um_produs, stoc_produs, pret_produs, cod_mag)"
End Sub

Butonul 4
Private Sub cmdModDen_Click()
'modificarea denumirii unui produs la care este cunoscut codul
v_cod = InputBox("Introduceti codul produsului la care doriti sa ii modificati
denumirea:")
DoCmd.RunSQL "update produse set den_p=denumire where cod_p=" &
v_cod
End Sub

Butonul 5
Private Sub cmdCrTNou_Click()
'selectarea produselor cu stoc 0 si crearea unei tabele cu aceste produse
DoCmd.RunSQL "Select cod_p, den_p, um, stoc, pret_u, cod_m into
StocNul from produse where stoc=0"
DoCmd.OpenTable "StocNul"
End Sub

Butonul 6
Private Sub cmdViz_Click()
'vizualizarea produselor cu codul >= o valoare introdusa de la tastatura
v_cod = InputBox("Introduceti un cod pentru a fi afisate produsele cu codul
mai mare decat aceasta valoare")
DoCmd.RunSQL "Select cod_p,den_p,um,stoc, pret_u, cod_m into Temp1
from produse where cod_p>=" & v_cod
DoCmd.OpenTable "Temp1"
End Sub

Butonul 7
Private Sub cmdValoare_Click()
DoCmd.RunSQL "select cod_p, den_p, um, categorie, pret, cant, cant*pret as
valoare into Valoare from produse"
DoCmd.OpenTable "Valoare"
End Sub

99
Butonul 8
Private Sub cmdIesire_Click()
DoCmd.Quit
End Sub

5.5.1 Aplicaţie propusă


Să se creeze un formular cu opţiuni corespunzătoare tabelelor
existente create pentru problemele propuse 5.1.1 şi 5.1.2.

100
BIBLIOGRAFIE

1. I. Bandu „Baze de date Access 2007”, Editura Mirton, Timişoara,


2009;

2. S.Biriescu, „Baze de date în mediul Acces”, Editura Mirton,


Timişoara, 2006;

3. T.Connolly, C.Beg, A.Strachan, „Baze de date – proiectare,


implementare, gesionare”, Editura Teora, Bucureşti, 2001;

4. D.Dănăiaţă, C.Margea, D.Mogoşanu, „Excel 2000. Aplicaţii


economice rezolvate pas cu pas”, Editura Mirton, Timişoara, 2001;

5. D.Dănăiaţă, C.Margea, D.Târnăveanu, A.-M. Negovan „Excel 2007.


Aplicaţii economice rezolvate pas cu pas”, Editura Mirton,
Timişoara, 2008;

6. I.Despi, G.Petrov, R.Reisz, A.Stepan, „Teoria generală a bazelor de


date”, Editura Mirton, Timişoara, 2000;

7. C.Fehily, „SQL –visual quickstart guide”, Editura All, Bucureşti,


2004;

8. V. Florescu, P.Năstase, F.Berbec, „Baze de date – fundamente


teoretice şi practice”, Editura Infomega, Bucureşti, 2002;

9. C.Giulvezan, G.Mircea, „Baze de date. Teorie şi practică. Acces şi


VBA”, Ed.Universităţii de Vest, Timişoara, 2006;

10. C.Giulvezan, G.Mircea, D.Târnăveanu, „Baze de date. Teorie şi


practică. Acces, VBA şi SQL”, Ed.Universităţii de Vest, Timişoara,
2009;

11. M.J.Hernandez, „Proiectarea bazelor de date”, Editura Tora,


Bucureşti, 2003;

12. L.Hurbean, „Baze de date. Concepte teoretice şi abordare practică


în Microsoft Access”, Editura Mirton, Timişoara, 2006;

101
13. F. Ionescu, „Baze de date relaţionale şi aplicaţii”, Editura Tehnică,
Bucureşti, 2004;

14. S.Johnson, „Microsoft Office Access 2007”, Editura Niculescu,


Bucureşti, 2008;

15. M.Lupulescu, M.Muntean, C.Giulvezan, „FoxPro de la iniţiere la


performanţă”, Editura de Vest, Timişoara, 1994;

16. M.Miloşescu, „Baze de date în Visual FoxPro”, Editura Teora,


Bucureşti, 2003;

17. G.Mircea, „Access 2002. Tehnici de programare în VBA”, Editura


Mirton, Timişoara, 2003

18. M.Muntean, „Note de curs – Baze de date”, 2008-2009;

19. M.Muntean, „Baze de date în sisteme informatice economice”,


Editura Mirton, Timişoara, 2002;

20. P.Năstase ş.a. „Baze de date – Microsoft Access 2000”, Editura


Teora, Bucureşti, 1999;

21. J.V.Petersen, „Baze de date pentru începători”, Editura All,


Bucureşti, 2002;

22. I.Popescu, „Modelarea bazelor de date”, Editura Tehnică, Bucureşti,


2001;

23. R.Smith, D.Sussman, „Programare în ACCESS 97 VBA, pentru


începători”, Editura Tora, Bucureşti, 1999;

24. M.Velicanu, I.Lungu, M.Muntean, „Dezvoltarea aplicaţiilor cu


Visual FoxPro”, Editura All, Bucureşti, 2001;

25. ***, „Microsoft Visual Basic 6.0 – ghidul programatorului”, Editura


Teora, Bucureşti, 1999.

26. Site-ul oficial Microsoft Office Romania / produsul Access –


http://office.microsoft.com/ro-ro/access/

102
GLOSAR DE TERMENI

Administratorul este persoana sau grupul de persoane responsabil de


bazei de date proiectarea, implementarea şi realizarea fizică a bazei
(Database de date, de securitatea şi controlul integrităţii, de
Administrator) întreţinerea întregului sistem.
Administratorul gestionează resursele de date, fiind responsabil de
de date (Data proiectarea conceptuală şi logică a bazei de date, de
Administrator) planificarea bazei de date, de realizarea şi întreţinerea
standardelor, a politicilor şi a procedurilor bazei de
date.
Bază de date este un ansamblu structurat de date legate structural
între ele, un depozit de date unic definit o singură dată
şi utilizat simultan de mai mulţi utilizatori. Baza de
date este o resursă comună şi partajată. Baza de date
conţine nu numai date ci şi descrierea acestora.
Bibliotecă de un fişier prevăzut de obicei cu o extensie .olb,
obiecte furnizând informaţii ce permit maipularea obiectelor
puse la dispoziţia utilizatorului de un server. Se poate
folosi Exploratorul de obiecte pentru a examina
conţinutul unei biblioteci de obiecte.
Câmpul este o informaţie individuală din componenţa unei
înregistrări, iar fiecare coloană din tabelul Access
reprezintă un câmp diferit.
Chei alternative se numesc celelalte chei candidat, rămase nealese.
Cheie candidat este atributul sau mulţimea de atribute ale unei entităţi
care identifică în mod unic apariţiile individuale ale
unui tip de entitate. Un tip de entitate poate avea mai
multe chei candidat.
Cheie compusă este o cheie candidat formată din mai multe atribute.
Cheie primară din mulţimea de chei candidat se alege un singură
care va fi numită cheie primară.
Clauza FROM specifică tabelele sau interogările din care sunt
(SELECT) extrase datele.
Clauza GROUP este folosită pentru executarea funcţiilor de agregare
BY (SELECT) SQL, ca şi Sum (sumă), Count (calcul), Avg (medie).

103
Clauza specifică înregistrările regrupate ce trebuie afişate
HAVING într-o instrucţiune SELECT dotată cu o clauză
(SELECT) GROUP BY. Odată ce regruparea este efectuată se
afişează lista de câmpuri a clauzei GROUP BY şi sunt
selectate doar înregistrările care respectă condiţia
specificată în clauza HAVING.
Clauza ORDER determină sortarea (aranjarea în ordine crescătoare
BY (SELECT) sau descrescătoare), înregistrările rezultă dintr-o
interogare în funcţie de câmpul/câmpurile
specificat(e).
Clauza permite filtrarea înregistrărilor după anumite criterii.
WHERE
(SELECT)
Dată o informaţie codificată şi stocată pe un suport de
memorare. Din punctul de vedere al prelucrării de
calculator, în cadrul aplicaţiilor, datele se definesc cu
ajutorul unui nume (identificator), a atributelor pe
care le are şi de o valoare.
Evenimentul reprezintă acţiunea utilizatorului sau a sistemului
asupra unui obiect ceea ce declanşează execuţia
codului program corespunzător.

Fişier este o structură care grupează date dintr-un anumit


domeniu care au anumite caracteristici comune. Din
punct de vedere fizic fişierul este o colecţie finită de
înregistrări fizice, iar din punctul de vedere al
semnificaţiei, o colecţie de înregistrări logice, numite
şi articole. Din punctual de vedere al sistemului de
operare fişierul are un nume şi eventual o extensie de
fişier.
Formularele sunt obiecte folosite pentru a consulta sau actualiza
datele dintr-un tabel sau o structură de interogare.
Instrucţiunea corespunde unei interogări DELETE ce şterge
DELETE înregistrările din tabelul menţionat în clauza
FROM, după criteriile date (facultativ).
Instrucţiunea corespunde unei interogări ADD care adaugă
INSERT INTO înregistrări într-un tabel.

104
Instrucţiunea este cea mai folosită instrucţiune, corespunzând
SELECT interogării Selection din Access. Permite extragerea
câmpurilor unui ansamblu de înregistrări ce
corespund unor criterii.
Instrucţiunea corespunde unei interogări de actualizare care
UPDATE modifică valorile câmpurilor într-un tabel specificat,
pentru înregistrările ce corespund criteriului dat
(facultativ).
Interogările sunt obiecte virtuale de tip tabelă, adică vizualizări,
care nu au corespondent fizic, fiind definite cu
ajutorul tabelelor definite deja în baza de date.
Înregistrarea este o linie dintr-un tabel, în care fiecare câmp conţine
o valoare concretă dintr-un domeniu de valori şi
conţine informaţii care identifică o anumită realizare
concretă a entităţii; persoană, loc sau obiect
Limbajul este un limbaj specific care include comenzi pentru
pentru asigurarea confidenţialităţii şi integrităţii datelor,
controlul pentru salvarea informaţiei cu scopul menţinerii
datelor (LCD – integrităţii bazei de date şi chiar pentru rezolvarea
Data Control
problemelor de acces concurenţial la date.
Language)
Limbajul este un limbaj specific pentru fiecare SGBD fiind
pentru definirea utilizat pentru a specifica schema bazei de date. Este
datelor (LDD – un limbaj descriptiv care permite administratorului
Data bazei de date, respectiv utilizatorului final sa descrie
Description
şi să definească entităţile din baza de date precum şi
Language)
relaţiile existente între entităţi, adică să definească o
schemă sau să o modifice.
Limbajul este un limbaj care asigură un set de procedee ce
pentru permit operaţiile de bază pentru manipularea datelor
manipularea din baza de date. Operaţiile executate în cadrul bazei
datelor (LMD – de date presupun existenţa unui limbaj specializat în
Data
care comenzile se exprimă prin fraze ce descriu
Manipulation
Language) acţiuni asupra bazei de date.

Limbajul SQL este un limbaj de interogări şi gestionare a bazelor de


(Structured date relaţionale.
Query
Language)

105
Macro-urile reprezintă o modalitate optimă de acces la date, care
permit automatizarea mai multor sarcini folosind un
limbaj specific. Pentru a rezolva o sarcină mai
complexă se poate construi un macro (format dintr-o
mulţime de acţiuni) sau o procedură (formată dintr-o
succesiune de instrucţiuni în Visual Basic).
Metoda constă în codul program predefinit ce se raportează la
un tip de obiect şi care se execută în momentul
apariţiei unui eveniment.
Model de date este o colecţie integrată de concepte, necesare
descrierii datelor, a relaţiilor dintre date şi a
constrângerilor asupra datelor dintr-o organizaţie, o
reprezentare abstractă a obiectelor şi a evenimentelor
lumii reale şi a asocierilor dintre acestea, cu ajutorul
căruia se reprezintă o organizaţie.
Modelul reprezintă un model de date conceptual de nivel înalt,
Entitate – neformalizat, care descrie structura bazei de date,
Relaţie precum şi tranzacţiile de regăsire, respectiv de
reactualizare asociate. Acest model, permite o
reprezentare a unui sistem real, grupând elementele
sistemului real în entităţi şi asocieri (legături) între
entităţi.
Modulele conţin o parte a codului VBA al aplicaţiei, şi anume
declaraţiile de variabile şi constante, funcţiile şi
procedurile globale ale întregii aplicaţii. VBA
reprezintă un mediu de programare orientat obiect.
OLE (Object este tehnologia care permite manipularea obiectelor
Linking and unei alte aplicaţii, direct din Access sau din VBA
Embedding) sau Access.
OLE
Automation
Organizarea reprezintă procesul de identificare, definire, evaluare,
datelor structurare şi memorare a informaţiilor, în cadrul unui
sistem informaţional. Prin organizarea datelor se
realizează gruparea datelor în colecţii de date
omogene, se stabilesc care sunt relaţiilor dintre date,
dintre elementele colecţiilor şi dintre colecţii, precum
şi modul de stocare a datelor pe suportul fizic de
memorare.

106
Paginile de reprezintă obiecte specifice ACCESS care permit
prezentare afişarea într-un format accesibil care permite
transmiterea rapidă a datelor prin Internet sau
Intranet.
Procedura este alcătuită dintr-un set de instrucţiuni (un modul
program) ce nu returnează nici o valoare ci execută o
anumită acţiune.
Proiectanţii sunt persoanele implicate în proiectarea logică şi cea
bazei de date fizică a bazei de date. Proiectarea conceptuală şi
logică presupune identificarea entităţilor, a relaţiilor
dintre entităţi, a constrângerilor asupra datelor ce vor
fi stocate în baza de date.
Rapoartele sunt obiecte folosite pentru a sintetiza datele stocate
într-o tabela reală sau virtuală şi a oferi un rezultat
tipărit al informaţiilor din baza de date – un raport
ACCES, de la cea mai simplă listă a unui tabel până
la rapoartele cele mai complexe ce conţin regrupări de
înregistrări şi calcule.
Redundanţa reprezintă o proprietate a unei colecţii de date care se
datelor referă la faptul că unele componente ale colecţiei de
date sunt memorate de mai multe ori pe suportul de
memorare. Creşterea redundanţei are ca efect apariţia
de erori frecvente datorate neconcordanţei
informaţiilor memorate în fişiere aparţinând unor
aplicaţii diferite, rezultând costuri de actualizare
mărite corespunzător.
Relaţie este o asociere, o comunicare, o corespondenţă
(relationship) între două sau mai entităţi. Relaţia exprimă raportul
existent între respectivele entităţi şi există doar dacă
entităţile există.
Sistemul de reprezintă un pachet de programe specializat pentru
Gestiune al definirea, crearea, întreţinerea şi accesul controlat la
Bazei de Date baza de date.
(SGBD)
Tabelele conţin datele propriu-zise corespunzătoare entităţilor
din baza de date, organizate sub forma unei matrice în
care coloane reprezintă atribute (câmpuri), iar liniile
apariţiile, realizările entităţii (înregistrări).

107
Visual Basic este un limbaj de programare orientat obiect,
Application dezvoltat de Microsoft folosind limbajul Visual
(VBA) Access BASIC adaptat la cerinţele specifice ale sistemelor de
gestiune de baze de date.

108