Sunteți pe pagina 1din 99

UNIVERSITATEA TEFAN CEL MARE

SUCEAVA
Facultatea de tiine Economice i Administraie Public
Departamentul ID
Specializarea : Administrarea Afacerilor
Anul I, Sem II

BAZE DE DATE
Curs pentru nvmnt la distan

Lect. univ. dr. Nicolae MORARIU

2008

CUPRINS
Introducere...................................................................................................................................3
I. ORGANIZAREA DATELOR ............................................................................................. 4
I.1. Concepte utilizate n organizarea datelor.............................................................. 4
I.1.1. Date, informaii, cunotine ....................................................................... 4
I.1.2. Metode utilizate pentru organizarea datelor .............................................. 4
I.1.3. Arhitectura unei baze de date..........6
I.2. Modelarea datelor .................................................................................................. 7
I.2.1. Modelul de date ierarhic............................................................................ 8
I.2.2. Modelul de date reea ................................................................................ 9
I.2.3. Modelul de date relaional....................................................................... 10
I.3. Proiectarea conceptual a bazelor de date............................................................ 11
I.3.1. Dependene n bazele de date, normalizarea relaiilor, forme normale... 12
I.4. Necesitatea definirii de noi modele de date n proiectarea SGBD-urilor ............ 15
I.4.1. Tehnologia orientat spre obiecte............................................................ 16
I.4.2. Abordarea logic...................................................................................... 19
I.5. Gestiunea tranzaciilor i controlul concurenei................................................... 19
I.6. Baze de date distribuite........................................................................................ 20
I.7. Baze de date multimedia....................................................................................... 21
I.8. Rezistena la defecte i recuperarea din avarii...................................................... 22
I.9. Arhitecturi client-server pentru sistemele SGBD................................................. 23
Probleme rezolvate ....................................................................................................... 23
Probleme propuse spre rezolvare.................................................................................. 24
II. SISTEMUL DE GESTIUNE A BAZELOR DE DATE FoxPro ......................................... 26
II.1. Definirea i prelucrarea datelor organizate n tabele ............................................ 26
II.2. Limbajul FoxPro ................................................................................................... 28
II.2.1. Elementele limbajului ............................................................................ 28
II.2.2. Proceduri, programe n FoxPro .............................................................. 31
II.2.3. Ferestre i meniuri utilizator ................................................................. 33
II.2.4. Controlul execuiei programelor ............................................................ 37
II.2.5. Instruciuni de intrare/ieire ................................................................... 40
II.2.6. Ordonarea nregistrrilor unei tabele ..................................................... 41
II.2.7. Comenzi SET ......................................................................................... 43
II.2.8. Instrumente de lucru pentru creterea productivitii ............................ 43
II.3. Programarea n Visual FoxPro............................................................................ 44
II.3.1. Obiecte n Visual FoxPro....................................................................... 44
II.3.2. Clase n Visual FoxPro .......................................................................... 44
II.3.3. Evenimentele din Visual FoxPro ........................................................... 45
II.3.4. Crearea unei baze de date ...................................................................... 45
II.3.5. Creare relaii persistente ntre tabelele bazei de date................................... 47
II.3.6. Crearea integritii refereniale............................................................... 47
II.3.7. Crearea vederilor.................................................................................... 47
II.3.8. Formularele n Visual FoxPro ..............................................................48
II.3.9. Crearea meniurilor i a barelor de instrumente..................................................................... 49
II.3.10. Crearea unei aplicaii ........................................................................... 50
II.4. Soluii client-server............................................................................................. 50
1

III. SISTEMUL DE GESTIUNE A BAZELOR DE DATE ACCESS .................................... 51


III.1. Crearea unei baze de date.................................................................................. 51
III.1.1. Crearea unei baze de date goale............................................................ 51
III.1.2. Crearea bazei de date folosind Database Wizard.................................. 53
III.2. Crearea i utilizarea tabelelor ........................................................................... 55
III.2.1. Tipuri de date ........................................................................................ 55
III.2.2. Crearea unei tabele goale ...................................................................... 57
III.2.3. Crearea unei tabele folosind vederea Design........................................ 58
III.2.4. Definirea cmpurilor............................................................................. 59
Problem propus.............................................................................................. 66
III.3. Crearea i utilizarea interogrilor ...................................................................... 68
III.3.1. Tipuri de interogri ............................................................................... 68
Problem rezolvat............................................................................................ 68
Probleme propuse.............................................................................................. 71
III.4. Crearea i utilizarea formularelor...................................................................... 71
Problem rezolvat............................................................................................ 72
Probleme propuse.............................................................................................. 72
III.5. Crearea i vizualizarea rapoartelor .................................................................... 77
Problem rezolvat............................................................................................ 78
Probleme propuse.............................................................................................. 79
Teste de verificare ............................................................................................ 79
IV LIMBAJUL SQL................................................................................................................. 85
IV.1. Manipularea datelor (comenzi DML................................................................... 85
IV.1.1. Interogarea baelor de date. Fraza SELECT .......................................... 85
IV.1.2 Instruciuni pentru inserarea i actualizarea datelor n tabele ............... 89
IV.1.3. Comenzi pentru gestiunea tranzaciilor................................................ 90
IV.2. Descrierea datelor (comenzi DDL) ..................................................................... 90
IV.2.1. Comenzi pentru crearea/actualizarea schemei bazei de date................ 90
IV.2.2. Comenzi pentru optimizarea interogrilor ........................................... 91
IV.3. Controlul datelor (comenzi DCL) ....................................................................... 91
IV.3.1. Vederi ................................................................................................... 91
IV.3.2. Nivelul 1 de securitate a datelor ........................................................... 92
IV.3.3. Nivelul 2 de securitate a datelor ........................................................... 92
IV.4. SQL3 - Extensii ale limbajului SQL2 cu faciliti de orientare spre obiecte ...... 93
Tipuri de rnduri (ROW).................................................................................. 93
Tipuri definite de utilizator (UDT)................................................................... 93
Rutine definite de utilizator (UDR User Defined Routine).....93
Subtipuri i supertipuri ..................................................................................... 94
Crearea tabelelor............................................................................................... 94
Tipuri de referine i identitatea obiectelor....................................................... 94
Tipuri de colecii............................................................................................... 94
Module stocate persistente................................................................................ 94
Tratarea condiiilor de excepie ........................................................................ 94
Obiecte mari ..................................................................................................... 95
IV.5. Extensii ale limbajului SQL cu faciliti de procesare analitic a datelor........... 95
ADENDA...97
Bibliografie ...98
2

Introducere
Scopul cursului
Informatica de gestiune a impus dezvoltarea i diversificarea rapid a Sistemelor de Gestiune a
Bazelor de Date (S.G.B.D.) i a condus la realizarea unui numr impresionant de aplicaii informatice
cu baze de date. Sistemele i aplicaiile informatice cu baze de date sunt utilizate azi n aproape toate
domeniile de activitate din care un loc aparte l ocup utilizarea lor n cadrul agenilor economici.
Scopul cursului este de a familiariza studenii economiti cu principalele noiuni legate de
definirea i utilizarea bazelor de date cu accent pe caracteristicile generale, metodele i sistemele
folosite pentru proiectarea acestora. Sunt prezentate cele mai uzuale modele de baze de date (ierarhic,
reea i relaional) i preocuprile actuale pentru definirea de noi modele utiliznd facilitile
tehnologiei orientate spre obiecte. Pentru utilizare n cadrul lucrrilor practice de laborator sunt
prezentate produsele FoxPro i Access.
Pentru a asigura parcurgerea i nsuirea problematicii propuse, lucrarea de fa cuprinde patru
pri i anume: I Organizarea datelor, II Sistemul de gestiune a bazelor de date FoxPro, III
Sistemul de gestiune a bazelor de date Access, IV - Limbajul SQL.
Obiective
- sunt prezentate conceptele utilizate n organizarea datelor, cele dou modaliti de organizare a
datelor (fiiere, baze de date), arhitectura unei baze de date, Sistemul de Gestiune a Bazei de Date;
- sunt prezentate i exemplificate principalele modele de date utilizate n proiectarea SGBD-urilor i
anume modelele ierarhic, reea i relaional, precum i noi modele de date care au fost definite n
ultimii ani n vederea rezolvrii aplicaiilor avansate de baze de date, modele bazate pe tehnologia
orientat obiect;
- prezentarea conceptelor i metodelor utilizate n sistemele bazate pe modelul relaional;
- nsuirea tehnicilor de normalizare ca mijloc de eliminare a eventualelor neajunsuri i anomalii
care pot s apar n exploatarea curent a aplicaiilor informatice cu baze de date;
- soluii practice de organizare i exploatare a bazelor de date relaionale cu ajutorul sistemului Fox
Pro, prezentarea limbajului FoxPro i facilitilor oferite de mediul de programare Visual FoxPro;
- prezentarea sistemului de gestiune a bazelor de date Access;
- prezentarea limbajului SQL pentru crearea, administrarea i interogarea bazelor de date relaionale
implementat n majoritatea produselor software moderne de baze de date, a extensiilor limbajului
privind facilitile de orientare spre obiecte n cadrul standardului SQL3 i a unor funcii privind
procesarea analitic a datelor.

Forma de evaluare (E examen, C colocviu/test final, LP lucrri de control


E 2C
- rspunsuri la examen/colocviu/lucrri practice
65%
Stabilirea notei
- activiti aplicative atestate/laborator/lucrri practice/ proiect
finale (procentaje)
etc.
35%
- teste pe parcursul semestrului
- teme de control

I. ORGANIZAREA DATELOR
Rezumat - sunt prezentate conceptele utilizate n organizarea datelor, cele dou modaliti de
organizare a datelor (fiiere, baze de date), arhitectura unei baze de date, Sistemul de Gestiune a
Bazei de Date, principalele modele de date clasice utilizate n proiectarea SGBD-urilor i anume
modelele ierarhic, reea i relaional, precum i noi modele de date care au fost definite n ultimii ani
n vederea rezolvrii aplicaiilor avansate de baze de date, modele bazate pe tehnologia orientat
obiect, conceptele i metodele utilizate n sistemele bazate pe modelul relaional, elemente de
proiectarea bazelor de date avnd n vedere tehnicile de normalizare ca mijloc de eliminare a
eventualelor neajunsuri i anomalii care pot s apar n exploatarea curent a aplicaiilor informatice
cu baze de date.

I.1. Concepte utilizate n organizarea datelor


I.1.1. Date, informaii, cunotine.
Datele sunt fapte culese din lumea real pe baz de observaii i msurtori. Un obiect,
fenomen sau proces din lumea real poate fi descris cu ajutorul unei colecii de date care reprezint
valori ale proprietilor ce definesc obiectul, fenomenul sau procesul n cauz.
Informaia este rezultatul interpretrii datelor de ctre un anumit subiect, i va putea fi utilizat
de acesta luarea deciziilor. Aceleai date pot fi interpretate n mod diferit de ctre subieci diferii i
deci pot genera informaii diferite. n acest context se poate meniona [DORO98] c sistemele de calcul
prelucreaz date i nu informaii.
Cunotinele cuprind att fapte ce reprezint lucruri adevrate despre lumea real, ct i
proceduri de raionament care permit urmrirea raionamentului ntre fapte. Diferena existent ntre
cunotine i date este ilustrat de E. Feigenbaum, un nume de referin n inteligena artificial, prin
urmtorul exemplu [FLAM02]:
un medic care trateaz un pacient folosete cunotine i date. Datele sunt reprezentate de fia
pacientului: simptome, boli anterioare, tratament prescris, reacie la tratament, etc. Cunotinele
utilizate n tratarea pacientului reprezint tot ceea ce medicul a nvat n facultate i n decursul
ntregii lui cariere prin practic, studiu, experien, n legtur cu modul de vindecare a bolii. Aceste
cunotine se refer la fapte, teorii, tratament i, cel mai important, la cunotine euristice. Astfel,
cunotinele necesit i includ utilizarea datelor dar sunt mai mult dect acestea.
n vederea obinerii informaiilor necesare lurii de decizii corecte omul din societatea
modern se confrunt cu necesitatea prelucrrii unui volum imens de date care trebuiesc culese,
memorate, organizate, regsite i prelucrate n timp util i cu mijloace adecvate.
I.1.2. Metode utilizate pentru organizarea datelor
Utilizarea sistemelor de calcul n vederea realizrii dezideratelor mai sus menionate presupune
un anumit mod de organizare a datelor. n acest sens n cele ce urmeaz sunt prezentate principalele
modaliti de organizare a datelor i anume:
- fiierul:
- baza de date.
Fiierul este o organizare a datelor preluat din sistemul manual i adaptat la cerinele
impuse de utilizarea sistemelor de calcul.
Se definesc urmtoarele concepte:
1. Data elementar, cmp elementar - este o dat care nu mai poate fi descompus;
Exemplu: nume (nume persoan din descrierea unui grup de persoane)
2. Data grupat, cmp grupat este o grupare logic de date;
Exemplu: - adresa:
- localitate
- strada
- numr

3. nregistrare logic sau articol o colecie de date ce descriu un acelai obiect;


4. Fiier un ansamblu de nregistrri logice
Un fiier poate fi privit din dou puncte de vedere:
- nivelul logic = un ansamblu de nregistrri logice;
- nivelul fizic = modul n care sunt nregistrate datele pe suportul de memorare.
Unitatea de transfer ntre memoria secundar i memoria principal este pagina (nregistrare
fizic). O pagin poate conine una sau mai multe nregistrri logice. Nu este exclus nici situaia n
care o nregistrare logic mare se poate ntinde pe mai multe pagini.
Moduri de organizare a fiierelor:
- fiiere secveniale datele sunt nregistrate secvenial pe suportul de memorare i pot fi consultate
secvenial (pentru a regsi o nregistrare se parcurge fiierul de la nceput pn la nregistrarea n
cauz);
- fiiere secvenial indexate - nregistrrile sunt ordonate dup valorile unui cmp numit cheie de
indexare (unu sau mai multe cmpuri ale nregistrrii). nregistrrile pot fi accesate fie secvenial fie
direct pe o nregistrare de cheie dat. n afara datelor propriu-zise fiierul mai conine tabele de index
care memoreaz corespondena ntre cheile nregistrrilor i adresele fizice pe suportul de memorare
(disc);
- fiiere n acces direct - nregistrrile sunt stocate n pagini a cror adres este calculat cu ajutorul
unei funcii numit funcie hash pe baza unuia sau mai multor cmpuri din nregistrare.
Limitri ale sistemelor bazate pe fiiere:
- datele sunt izolate n fiiere separate - programele de aplicaie trebuie s realizeze
sincronizarea prelucrrii a dou sau mai multor fiiere;
- dependena de date - fiecare program de aplicaie trebuie s descrie datele pe care le
utilizeaz;
- formate de fiiere incompatibile - structura fiierelor fiind ncorporat n programul de
aplicaie, este dependent de limbajul n care este scris aplicaia;
- redundana datelor - aceleai date pot apare n fiiere diferite;
- accesul concurent la date - nu este asigurat.
Aceste limitri se datoreaz urmtoarelor cauze:
1) definiia datelor este ncorporat n programele de aplicaie n loc s fie stocat
separat i independent.
2) nu exist un control privind accesul i manipularea datelor n afara celuia impus
de aplicaie;
Eliminarea acestor deficiene a condus la un nou mod de organizare a datelor i anume organizarea
datelor n baze de date.
Baza de date o colecie partajat de date, care conine datele propriu-zise, relaiile
logice dintre acestea, precum i descrierea datelor (structura datelor).
O baz de date este proiectat pentru a satisface necesitile informaionale ale unei organizaii.
Sistemul de Gestiune a Bazelor de Date (SGBD sau DBMS Data Base Management
System) este un sistem de programe care permite definirea, crearea i
ntreinerea bazei de date, precum i accesul controlat la baza de date.
Un SGBD ofer urmtoarele faciliti:
- faciliti de descriere a datelor - prin intermediul unui limbaj de descriere a datelor DDL - Data
Description Language, care permite utilizatorului s descrie structurile de date;
- faciliti de manipulare a datelor - prin intermediul unui limbaj de manipulare a datelor DML
Data Manipulation Language - care permite utilizatorului s insereze, actualizeze, tearg i s
extrag date din baza de date;
- controlul accesului la baza de date prin:
- sistem de securitate - previne accesarea bazei de date de ctre utilizatori
neautorizai
- sistem de integritate - menine concordana datelor stocate

- sistem de control al concurenei - permite accesul partajat la baza de date


- sistem de control al refacerii - recuperare n urma unor defeciuni hard sau soft
- mecanism de vizualizare - un utilizator poate vedea acea parte a bazei de date
care l intereseaz.
Administratorul bazei de date (DBA Data Base Administrator) - este o persoan sau un grup
de persoane care rspunde de ansamblul activitilor privind baza de date.
I.1.3. Arhitectura unei baze de date
Organizarea datelor n baze de date impune adoptarea unei arhitecturi n care pot fi identificate
urmtoarele 3 nivele de abstractizare [DORO98] (3 nivele distincte la care pot fi descrise datele)
cunoscut sub denumirea de arhitectura ANSI-SPARC pe 3 nivele:
- Nivelul extern (subschema, vedere);
- Nivelul conceptual (schema conceptual);
- Nivelul intern (baza de date fizic).

Nivel
extern

Utilizator 1

Utilizator 2

Utilizator n

Vedere 1

Vedere 2

Vedere n
SO

Nivel
conceptual

Nivel
intern

Sistemul de
Gestiune a
Bazeelor de
Date (SGBD)
Baza de date
fizic

Nivelul extern vederea utilizatorului asupra bazei de date (subschema, schema extern).
Fiecare utilizator are o vedere asupra bazei de date care include numai entitile, atributele i relaiile
din lumea real de care este interesat utilizatorul respectiv. Utilizatori diferii pot avea vederi diferite
asupra acelorai date (ex. Data calendaristic poate fi vzut de un utilizator sub forma an, lun, zi iar
de un alt utilizator sub forma zi,lun, an). n vederi pot fi incluse i date derivate sau calculate din
datele stocate n baza de date (ex. vrsta plecnd de la data naterii i data curent).
Nivelul conceptual vederea general a bazei de date conine structura logic a ntregii baze
de date aa cum este vzut de administratorul bazei de date (ex. concepte de tipul : Persoane, Produse,
Beneficiari, Furnizori etc.)
Nivelul intern reprezentarea fizic a datelor n baza de date o colecie de fiiere coninnd
datele, la care se adaug diverse structuri auxiliare (indeci, pointeri, tabele de dispersie etc.) pentru
asigurarea accesului operativ la date. Transformarea de la nivelul conceptual la nivelul intern i invers
se realizeaz prin comunicarea dintre SGBD i sistemul de operare.
Orice comunicare ntre nivele se realizeaz sub controlul SGBD.
Adoptarea arhitecturii pe cele 3 nivele asigur independena logic i fizic a datelor.

Independena logic de date imunitatea schemelor externe (vederilor utilizatorilor) fa de


modificri efectuate n schema conceptual. Adugarea sau eliminarea de noi entiti, atribute sau
relaii trebuie s fie posibil fr a afecta schemele externe existente.
Independena fizic de date imunitatea schemei conceptuale fa de modificrile efectuate n
schema intern. Modificri efectuate n schema intern cum ar fi: utilizarea unor organizri de fiiere
diferite, a unor dispozitive diferite de stocare, modificarea de indeci sau de algoritmi hash trebuie s
fie posibil fr a fi necesar schimbarea schemei conceptuale sau a schemelor externe.
I.2. Modelarea datelor
Prin modelarea datelor se urmrete organizarea acestora astfel nct s fie ndeplinite
urmtoarele dou cerine:
- s se reprezinte ct mai fidel situaia din lumea real;
- datele s fie adaptate reprezentrii i prelucrrii pe calculator;
Modelarea datelor presupune identificarea celor mai importante caracteristici ale datelor. Un model de
date este un instrument teoretic care permite identificarea semnificaiei sau coninutului de informaie
pentru o colecie de date, vzut n ansamblul ei, prin contrast cu valorile individuale ale datelor. Din
punct de vedere tehnic un model de date este un formalism avnd dou componente:
- un set de reguli pentru organizarea i structurarea datelor;
- un set de reguli (operaii) pentru manipularea datelor;
Un model conceptual sau schem cuprinde numele categoriilor (Ex: Faculti, Cadre, ...),
proprietile acestora (Ex: denumire facultate, nume profesori, ..) i legturile dintre categorii (Ex:
profesorul . este ncadrat la facultatea .).
Entiti, legturi ntre entiti.
O entitate este un coninut de sine stttor, o realitate obiectiv care exist prin ea nsi. Orice
entitate este definit prin proprietile sale caracteristice care n cadrul modelelor de date sunt
reprezentate prin atribute i aparine unui tip de entitate. n cadrul unui model, un tip de entitate
corespunde unei categorii de obiecte din lumea real.
O etap important n definirea modelului conceptual al unei baze de date o constituie
identificarea categoriilor de obiecte (tipuri de entiti), a proprietilor (atributelor) caracteristice
fiecrei categorii i a legturilor (relaiilor) dintre tipurile de entiti.
Exemplu:
Faculti (denumire, adresa),
Cadre (nume, funcie)
Prima form de structurare a datelor se refer la modul de asociere a atributelor pentru a
descrie tipul de entitate. Toate modelele de date utilizate pn n prezent realizeaz aceast asociere
(definirea tipului de entitate) prin structuri de tip nregistrare care se obin prin concatenarea valorilor
atributelor tipului de entitate respectiv. Un tip de entitate poate fi descrise convenabil prin intermediul
unui tabel astfel:
- capul de tabel descrie tipul de entitate;
- liniile tabelului definesc fiecare entitate n parte;
ntre mulimile de entiti dintr-o baz de date exist diverse legturi (relaii) care trebuie s fie
descrise n modelul conceptual al bazei de date. Reprezentarea legturilor ntre mulimile de entiti
constituie a doua form de structurare a datelor. Modelele de date utilizate pn n prezent difer ntre
ele n principal prin modul n care se poate realiza reprezentarea legturilor dintre mulimile de entiti.
ntre dou mulimi de entiti M1, M2 pot exista urmtoarele tipuri de legturi:
Relaie 1 : 1 unei entiti din M1 i corespunde o singur entitate n M2 i reciproc (so soie).
Relaie 1 : n unei entiti din M1 i corespund una sau mai multe entiti din M2, dar fiecrei
entiti din M2 i corespunde o singur entitate din M1 (relaii de tip tat - fiu);
Relaie m : n unei entiti din M1 i corespunde una sau mai multe entiti din M2 i reciproc
(relaie de tip prieten - prieten);
Exemplu: Cadre -> Studeni, m : n (un profesor pred la mai muli studeni, fiecare student audiaz
cursurile mai multor profesori).

Funcie de modul n care sunt reprezentate relaiile ntre mulimile de entiti se cunosc n
ordine cronologic urmtoarele tipuri eseniale de modele de date: modelul ierarhic, modelul reea,
modelul relaional.

I.2.1. Modelul de date ierarhic.


Este primul model de date care a stat la baza realizrii unor SGBD-uri. Cel mai reprezentativ
SGBD realizat dup acest model este sistemul IMS (Information Management System) al firmei IBM
dezvoltat n cadrul programului de cercetri spaiale APOLLO. Structurile de date sunt reprezentate
prin intermediul diagramei structurii de date care este un graf orientat reprezentnd tipurile de entiti
i legturi funcionale ntre acestea. Nodurile grafului reprezint tipurile de entiti iar arcele grafului,
legturile ntre tipurile de entiti de la extremitile arcului respectiv. Un arc de la tipul de entitate
origine ctre tipul de entitate extremitate reprezint o legtur 1 : n ). n cadrul modelului exist un tip
de entitate numit rdcin care nu este subordonat nici unui alt tip de entitate. Fiecare tip de entitate
poate avea unul sau mai multe tipuri de entitate subordonate cu excepia nodurilor finale (de la care nu
mai pleac arce). Deci nodurile sunt organizate pe nivele sub forma unui arbore ordonat. O astfel de
reprezentare poart numele de arbore de definiie ierarhic.
Exemplu:
Facultati

Specializari

Discipline

Cadre

Sali

Administrativ

Studenti

Tipurile de nregistrri care reprezint tipurile de entiti din arborele de mai sus sunt:
Facultati (Codf, Nume, Adresa)
Specializari (Codf,Cods,Numes)
Cadre (Marca,Nume, Funcie)
Sali (Numr, Adresa, Capacitate)
Studenti (Nume, ncadrare, An)
Discipline (Codd, Denumire)
Administrativ(Nume, Functie)
O relaie de tip 1: n ntre dou tipuri de entiti este reprezentat printr-o colecie de arbori avnd n
rdcin o instaniere a entitii printe i ca descendeni un numr de instanieri a entitii fiu.
Exemplu: Pentru relaia Facultati, Cadre
01-Calculatoare-Suceava
15-Popescu-Asistent
102-Ionescu-SefLucrari
02-Silvicultura-Suceava
24-Mironescu-Confereniar
Pentru relaiile de tip m :n apar duplicate.
Exemplu: Pentru relaia Cadre, Studenti
15-Popescu-Asistent
Ionescu-CIG-zi-I
Popescu-CIG-zi-I
102-Ionescu-SefLucrari
Ionescu-CIG-zi-I
Lucescu-TS-fr-II

Reprezentarea relaiilor de tip m:n introduce o mare redundan de date (nregistrarea corespunztoare
apare n baza de date de mai multe ori). Avnd n vedere c interogrile se realizeaz prin parcurgerea
arborilor, anumite interogri pot fi dificil de realizat.(exemplu: care sunt profesorii (cadre) studentului
Ionescu? -necesit parcurgerea tuturor subarborilor corespunztori fiecruia dintre profesori i reinerea
instanierilor din nodul rdcin ale acelor subarbori n care apare studentul Ionescu). Modelul ierarhic
este indicat pentru structuri natural-ierarhice (relaii de tip 1 : n). Bazele de date realizate dup modelul
ierarhic pot utiliza pentru memorarea datelor i suporturi cu acces strict secvenial.
I.2.2. Modelul de date reea
Standardul pentru bazele de date de tip reea este definit n documentele emise de comisia
DBTG (Data Base Task Group) nfiinat cu ocazia conferinei CODASYL din anul 1971.
Reprezentarea structurii datelor (tipurile de nregistrri i relaiile explicite ntre acestea) n modelul
reea este realizat prin diagrama structurii datelor care este un graf oarecare n care nodurile reprezint
tipurile de entiti iar arcele sunt etichetate i reprezint legturile ntre tipurile de entiti.
In cadrul sistemului DBTG aceste arce etichetate poart numele de tip de set i reprezint o
legtur ntre dou tipuri de nregistrri:
- tipul de nregistrare proprietar
- tipul de nregistrare membru
Pot fi reprezentate doar legturile de tip 1:1 i 1: n. Spre deosebire de modelul ierarhic n modelul reea
un tip de entitate poate fi legat la unul sau mai multe tipuri de entitate printe sau chiar prin mai multe
arce la acelai tip de entitate printe (din acest motiv arcele sunt etichetate). Pot exista i tipuri de
entitate fr legturi.
Diagrama structurii datelor pentru exemplul tratat anterior se reprezint astfel:
Facultati

Domenii

Pers_didactic

Specializari
Cursuri_predate
Cursuri
Cursuri_audiate

S_curs

Cadre

Sali

Angajati
Administrativ

Note_acordate
Discip_Note

Note

Note_primite

Discipline

Studenti

Colecia de arce care leag o nregistrare de tip proprietar de 0, 1 sau mai multe nregistrri
membru se numete set sau fan-set. n majoritatea sistemelor de tip reea implementarea seturilor se
realizeaz prin lanuri de pointeri avnd drept cap de lan o nregistrare de tip proprietar i se prezint
sub forma unei liste circulare cap_lan, nregistrare membru, cap_lan. Pot fi utilizate urmtoarele tipuri
de pointeri:
NEXT (obligatoriu) nlnuirea nainte a nregistrrilor
PRIOR (opional) nlnuirea napoi a nregistrrilor
OWNER (opional) leag o nregistrare de tip membru de nregistrarea proprietar.
Rezult c pot exista:
- structuri cu pointeri NEXT

- structuri cu pointeri NEXT i PRIOR


- structuri cu pointeri NEXT i OWNER
- structuri cu pointeri NEXT, PRIOR, OWNER
Se constat c a aprut n plus tipul de entitate Note pentru transformarea relaiei Cadre-Studenti din
tipul m:n n dou relaii de tip 1:n i anume Cadre-Note i Studenti-Note. De asemenea a aprut n plus
tipul de entitate Cursuri pentru transformarea relaiei Cadre-Discipline de tip m:n n dou relaii de tip
1:n i anume: Cadre-Cursuri i Discipline-Cursuri. Relaia Discip_Note stabilete corespondena 1 :1
ntre Discipline i Note prin intermediul entitii Cursuri care a fost necesar n primul rnd datorit
presupunerii c un profesor poate preda mai multe discipline.
Tipurile de entitate Note, Cursuri astfel introduse poart numele de entiti de legtur i pot
chiar s fie vide (nu conin nici un atribut ci doar pointeri ca de exemplu Cursuri).
Tipul de entitate Note ar putea fi eliminat cu condiia multiplicrii nregistrrilor din tipul de
entitate Studenti ca i n cazul modelului ierarhic.
Dezavantaje ale modelului reea:
- gestionarea pointerilor de nlnuire cade n sarcina utilizatorului;
- cu ct numrul de entiti crete cu att structura devine mai complicat i dificil de
utilizat.
- posibilitile de interogare sunt determinate de legturile definite ntre tipurile de
entiti.
I.2.3. Modelul de date relaional
Modelul de date relaional are la baz teoria matematic a relaiilor i a fost propus n 1970 de
cercettorul american E.F. Codd. Acest model st la baza majoritii SGBD-urilor comerciale deoarece
acestea dispun de limbaje puternice de manipulare a datelor i simplu de utilizat numite limbaje
relaionale care au la baz dou formalisme abstracte din teoria matematic a relaiilor i anume:
- algebra relaional
- calculul relaional
Pentru aceste limbaje s-au realizat interfee prietenoase, ceea ce le face accesibile unor categorii largi
de utilizatori.
Relaii definiie
Fie o colecie de mulimi D1, D2, Dn nu neaprat distincte.
R este o relaie pe aceste mulimi dac este o mulime de n-tuple ordonate (d1, d2, ., dn)
astfel nct d1 D1, d2 D2, ., dn Dn.
D1, D2, ., Dn se numesc domeniile relaiei R, iar n este gradul relaiei R.
O relaie R pe mulimile D1, D2, ., Dn este o submulime a produsului cartezian
D1xD2x.xDn.
O relaie fiind o mulime de n-tuple rezult c asupra acestora se pot aplica proprietile din
teoria mulimilor dintre care dou sunt amintite n continuare:
1. O mulime fiind o colecie de elemente fr repetiie rezult c ntr-o relaie nu pot exista dou
n-tuple identice.
2 Ordinea elementelor ntr-o mulime fiind nerelevant rezult c prin schimbarea ordinii n-tuplelor
unei relaii, relaia rmne neschimbat.
Un domeniu este ansamblul de valori admisibile pentru o component a unei relaii.
Un domeniu cu nume este un atribut.
Chei
O cheie a unei relaii R este un subset K de atribute ale relaiei care satisface proprietile:
1) identific unic n-tuplele relaiei
2) subsetul K este minimal (eliminarea oricrui atribut din K duce la pierderea proprietii 1) de
identificare unic).
Orice atribut ce face parte dintr-o cheie se numete atribut prim.

10

Dintre cheile unei relaii se desemneaz o anumit cheie ca fiind primar (celelalte numinduse candidate) care va fi folosit de SGBD pentru identificarea unic a n-tuplelor.
Cheia primar este comunicat SGBD-ului prin limbajul LDD i pentru atributele ce compun
aceasta cheie se impun restriciile:
- nu sunt admise valori nedefinite pentru atributele ce compun cheia primar.
- nici o valoare a unui atribut ce compune o cheie primar nu poate fi modificat n
cadrul operaiilor de actualizare.
Reprezentarea structurii datelor n cadrul modelului relaional se realizeaz prin schema
relaional care const din una sau mai multe scheme de relaie.
Exemplu:
Faculti (Codf, Nume, Adresa)
Specializari (Codf, Cods, Numes)
Cadre (Codf, Marca, Nume, Functie)
Sali (Codf, Numar, Adresa, Capacitate)
Administrativ (Codf, Nume, Functie)
Discipline (Codd, Denumire)
Studenti (Nume,Cods, Incadrare, An)
Cursuri (Marca,Codd)
Note (Marca,Codd, Nume-stud, Nota)
Se contat c pentru reprezentarea legturilor ntre tipurile de entiti pot fi utilizate dou
tehnici:
1) propagarea cheilor (pentru relaiile 1 : 1, 1 : n) spre exemplu, atributul Codf propriu tipului de
entitate Facultati este preluat n schemele de relaie Specializari, Cadre, Sali, Administrativ pentru
a reprezenta legturile 1 : n corespunztoare.
2) crearea unei scheme de relaie separate (pentru reprezentarea legturilor m : n) spre exemplu
Note ce are ca atribute cheile celor trei tipuri de entiti (Cadre, Discipline, Studenti) a cror
legtur o reprezint i eventual alte atribute (Ex: Nota).
Fiecare schem de relaie se poate reprezenta printr-un tabel n care coloanele sunt domeniile
(atributele) relaiei iar liniile (rndurile tabelului) sunt nregistrrile corespunztoare tipului de entitate
descris de relaia respectiv.
O posibil descriere a bazei de date avnd schema relaional de mai sus este:
CREATE TABLE Facultati (Codf INTEGER (3) NOT NULL, Nume CHAR (15), Adresa
CHAR (20))
CREATE TABLE Specializari (Codf INTEGER (3), Cods CHAR (6) NOT NULL,
Numes CHAR (30), ...)
Observaii:
n modelul relaional att tipurile de entiti ct i legturile dintre ele sunt
reprezentate
prin relaii.
De asemenea orice interogare a bazei de date este definit tot printr-o relaie.
O baz de date relaional este o colecie de relaii de diverse grade (gradul unei relaii este dat
de numrul de atribute ce definesc relaia respectiv).
I.3. Proiectarea conceptual a bazelor de date
n proiectarea unei baze de date relaionale se pune problema definirii relaiilor care descriu
tipurile de entiti corespunztoare acelei pri din lumea real ce urmeaz a fi modelat i reprezentat
n baza de date, precum i a legturilor dintre tipurile de entiti. Deci, se pune problema de a alege
schemele de relaie i modul de grupare al atributelor n relaii pentru a reprezenta tipuri de entiti sau
legturi ntre tipuri de entiti. n general, exist mai multe posibiliti pentru aceste alegeri, iar anumite
modele conceptuale (seturi de scheme de relaii) pot fi mai avantajoase.

11

I.3.1. Dependene n bazele de date, normalizarea relaiilor, forme normale


ntre atributele unei relaii sau ntre atribute din relaii diferite pot exista anumite legturi
logice (dependene), care influeneaz proprietile schemelor de relaie n raport cu operaiile curente
care intervin n timpul exploatrii bazei de date: adugare, tergere, actualizare. Aceste legturi logice,
cunoscute n literatura de specialitate sub denumirile de dependenele funcionale, dependenele
multivalorice i dependene de cuplare, au implicaii majore asupra criteriilor de proiectare a schemelor
relaionale. Alegerea unui model conceptual convenabil pentru o baz de date relaional poate necesita
realizarea unor descompuneri pentru anumite scheme de relaie date, descompuneri care s izoleze
dependenele existente i prin aceasta s elimine anomaliile care se datoreaz acestor dependene.
Dependene funcionale
Penru definirea acestui tip de dependene se consider schema de relaie
Prestari_Servicii (Cod, Nume_client, Adresa, Serviciu_prestat, Valoare)
definit pentru urmrirea serviciilor prestate de o firm pentru diveri clieni.
Atributul Adresa este dependent de atributul Nume_client (presupunnd c fiecare client are o singur
adres, rezult c fiecare valoare a atributului Nume_client determin n mod unic valoarea
corespunztoare a atributului Adresa). Analiznd schema de relaie de mai sus, se constat o redundan
relativ la atributul Adresa a crei valoare este repetat pentru un client pentru fiecare serviciu prestat pentru
acest client, ceea ce conduce la apariia urmtoarelor anomalii:
- Anomalia la adugare:
adresa unui client poate fi preluat numai dup ce pentru acesta se presteaz cel puin un serviciu.
- Anomalia la tergere:
dac se terg toate serviciile prestate pentru un anumit client, se pierde adresa acestui client.
- Anomalia la actualizare:
datorit redundanei relativ la atributul Adresa, dac se schimb adresa unui client este necesar
parcurgerea ntregii relaii pentru a identifica i actualiza toate apariiile acestui client, n caz contrar
baza de date devine inconsistent (acelai client poate apare la adrese diferite).
Aceste anomalii pot fi eliminate, dac schema de relaie Prestari_Servicii se nlocuiete prin
urmtoarele dou scheme de relaie:
Clienti(Cod, Nume_client, Adresa)
Servicii(Cod, Serviciu_prestat, Valoare).
Relaia Clienti conine codul, numele i adresa fiecrui client, fr nici un fel de redundan, iar relaia
Servicii conine serviciile prestate pentru fiecare client i valorile acestor servicii. Un dezavantaj al
descompunerii relaiei iniiale n cele dou relaii este acela c pentru a determina adresa clientului
pentru care s-a prestat un anumit serviciu este necesar efectuarea unei operaii de cuplare a relaiilor
Clienti i Servicii.
Se consider o schem de relaie R i A,B dou atribute simple sau compuse ale schemei de
relaie R. Atributul A determin funcional atributul B sau B depinde funcional de A, dac i numai dac
oricrei valori a atributului A i corespunde o singur valoare a atributului B (se noteaz A->B).
Dependena funcional A->B este total dac nu exist nici un subset C al atributului A (CcA)
astfel nct C->B i este parial n caz contrar.
n relaia Prestari_Servicii, una din dependenele funcionale care poate fi pus n eviden este
Nume_client->Adresa.
Deoarece ntr-o relaie orice cheie identific n mod unic fiecare tupl a relaiei, deci
determin n mod univoc valorile atributelor tuplei, rezult c n orice relaie atributele sunt
dependente funcional fa de cheile acesteia.
Se pot face, pn n acest moment, urmtoarele precizri:
Eliminarea dependenelor funcionale din schemele de relaie i a consecinelor negative
(redundana datelor; anomaliile de adugare, tergere, actualizare) se realizeaz prin descompunerea
schemei date ntr-o colecie de scheme mai simple n care sunt evitate neajunsurile mai sus menionate.

12

Reconstituirea relaiei iniiale se poate face prin operaia de cuplare (uniune). Pentru ca descompunerea
schemei de relaie s fie echivalent cu relaia iniial, trebuie s fie ndeplinite condiiile:
- cuplare fr pierdere de informaie;
- conservarea dependenelor (dependenele funcionale din relaia iniial trebuie s se regseasc
n relaiile rezultate prin descompunere).
Formele normale sunt scheme de relaie echivalente obinute prin descompunerea unor scheme
de relaie n vederea eliminrii redundanei datelor i anomaliilor la adugare, actualizare, tergere
nregistrri n baza de date. Descompunerile schemelor de relaii n scheme de relaii echivalente avnd
n vedere dependenele funcionale conduc la definirea primelor 4 nivele de forme normale i anume:
prima form normal (FN1), a doua form normal (FN2), a treia form normal (FN3) i forma
normal Boyce-Codd (FNBC).
A patra form normal (FN4) este definit avnd n vedere dependenele multivalorice, iar a
cincea form normal (FN5) este definit avnd n vedere dependenele de cuplare. ncepnd de la
prima form normal i pn la forma normal FN5 se impun condiii din ce n ce mai restrictive asupra
relaiilor. Astfel o relaie aflat pe un anumit nivel de normalizare (FN5) satisface toate restriciile cerute
de nivele inferioare de normalizare (FN1, FN2, FN3, FNBC, FN4). n cele ce urmeaz sunt date
definiiile formelor normale avnd n vedere dependenele funcionale.
O relaie R este n prima form normal (FN1) dac i numai dac toate atributele sale iau
numai valori atomice (nu pot fi descompuse). Spre exemplu, atributul Adresa ar putea fi considerat un
atribut neatomic dac n cadrul adresei ne-ar interesa localitatea, strada etc., caz n care trebuie descompus
n atribute atomice.
O relaie R este n a doua form normal (FN2) dac este n FN1 i orice atribut neprim este total
dependent fa de orice cheie a relaiei (atributele prime sunt atribute care fac parte dintr-o cheie a relaiei
i cele neprime sunt atributele care nu aparin nici unei chei a relaiei).
O relaie R este n a treia form normal (FN3) dac este n FN2 i nici un atribut neprim nu
este funcional dependent fa de un alt atribut neprim al relaiei.
O relaie R se afl n forma normal Boyce-Codd (FNBC) dac singurele dependene
funcionale admise sunt cele n care o cheie determin un alt atribut (nici un atribut prim sau neprim nu
poate fi dependent funcional fa de un alt atribut dac acesta nu este sau nu conine o cheie).
Dependene multivalorice
Pentru ilustrarea acestui tip de dependene se ia n considerare urmtoarea schem de relaie:
Clase(Clasa, Discipline, Elevi)
ce conine clasele dintr-o instituie de nvmnt, iar pentru fiecare clas sunt nregistrate disciplinele ce
se predau i elevii nmatriculai n clasa respectiv. Se poate constata c relaia Clase poate rezulta prin
operaia de cuplare dup atributul Clasa a urmtoarelor dou relaii:
CD(Clasa, Discipline)
CE(Clasa, Elevi)
n relaia Clase, presupunnd c pentru o clas dat, fiecare elev frecventeaz toate disciplinele
nregistrate pentru acea clas, exist dependenele multivalorice:
Clasa ->> Discipline
Clasa ->> Elevi.
Ca i n cazul dependenelor funcionale, existena dependenelor multivalorice prezint aceleai
neajunsuri privind redundana datelor i anomalii la efectuarea operaiilor de adugare, actualizare i
tergere nregistrri n baza de date.
O relaie R este n a patra form normal dac singurele dependene multivalorice admise sunt
cele determinate de un alt atribut care este o cheie sau care conine o cheie a relaiei.
ntruct orice dependen funcional este un caz particular de dependen multivaloric, rezult
c orice relaie care se afl n forma normal FN4, se afl i n forma normal FNBC. Transformarea
unei relaii ntr-o colecie de relaii care s se afle n FN4 este similar cu trecerea n FNBC, ns trebuie
avut n vedere att eliminarea dependenelor funcionale ct i a dependenelor multivalorice.

13

n concluzie, putem afirma c n cazul formelor normale de la FN1 la FN4, trecerea de la o


form normal la alta s-a fcut prin descompunerea unei relaii n altele dou, urmrindu-se eliminarea
dependenelor funcionale i multivalorice. O relaie aflat n forma normal FN4 nu mai poate fi
descompus n continuare pe baza acestei metode. Exist situaii cnd relaii aflate n FN4 conin
redundane i prezint anomalii la operaiile de adugare, tergere i actualizare. Aceste anomalii sunt
cauzate de existena dependenelor de cuplare i pot fi eliminate prin descompunerea relaiei n 3 sau
mai multe relaii a cror cuplare are ca rezultat relaia iniial.
Dependene de cuplare
Se consider schema de relaie:
SDS (Specializari, Discipline, Studenti)
care conine disciplinele care se predau la diverse specializri i studenii care le frecventeaz, cu
precizarea c pot exista discipline opionale care nu sunt frecventate de toi studenii de la specializarea
respectiv. n aceste condiii n cadrul schemei de relaie SDS nu au loc dependenele
multivalorice:
Specializari ->> Discipline
Specializari->> Studenti
ceea ce nseamn c relaia SDS este n FN4. Dei este n FN4, relaia SDS conine mai multe
redundane care pot conduce la anomalii de actualizare. Pe de alt parte, relaia SDS nu poate fi
descompus n dou componente din a cror cuplare s rezulte relaia iniial cu conservarea informaiei.
Se constat ns c relaia SDS poate fi descompus n urmtoarele 3 relaii:
SD(Specializari, Discipline)
SS(Specializari, Studenti)
DS(Discipline, Studenti)
i relaia SDS este rezultatul cuplrii relaiilor: SD, SS i DS fr pierdere de informaie.
SDS = SDSSDS.
n acest caz spunem c n relaia SDS exist o dependen de cuplare. Dependenele multivalorice sunt
cazuri particulare de dependene de cuplare.
A cincea form normal este o generalizare a formei normale patru, trecerea unei relaii n FN5
presupunnd eliminarea dependenelor de cuplare existente n cadrul relaiei, mpreun cu anomaliile
pe care acestea le creeaz. n cadrul unei relaii pot exista dependene de cuplare care nu conduc la
redundan n memorarea datelor i nu produc anomalii la operaiile efectuate asupra nregistrrilor bazei
de date (acestea sunt dependenele de cuplare implicate de o cheie a relaiei).
O relaie este n forma normal cinci (FN5) dac i numai dac toate dependenele de cuplare
existente n relaie sunt implicate de o cheie a acesteia. Relaia SDS se poate descompune, cu
conservarea coninutului de informaie, n cele 3 componente ale sale: SD, SS i DS care sunt n FN5.
Avnd n vedere similaritatea ce exist ntre definiiile pentru FNBC, FN4 i FN5, acestea pot fi
unificate n urmtoarea definiie [DORO98]:
O relaie R este n FNBC, FN4, FN5 dac i numai dac singurele dependene funcionale,
multivalorice, de cuplare existente sunt cele implicate de o cheie a relaiei R.
n concluzie, prin procesul de normalizare se realizeaz eliminarea din schemele de relaie a
dependenelor (funcionale, multivalorice i de cuplare) cu scopul de a obine o schem relaional mai
bun din punctul de vedere al redundanei datelor i al anomaliilor ce pot apare la operaiile de
adugare, tergere i actualizare nregistrri n baza de date. Normalizarea unei scheme de relaie R
nseamn nlocuirea acesteia cu o mulime de proiecii R1,...,Rn astfel nct R s fie echivalent cu
uniunea proieciilor R1,...,Rn. Dei normalizarea este o operaie util n proiectarea bazelor de date,
aceasta nu ofer ntotdeauna reete pentru obinerea celor mai bune modele i de aceea este la latitudinea
proiectantului decizia de a aplica sau nu o anumit etap de normalizare dup o analiz temeinic a
avantajelor i dezavantajelor modelului obinut. n unele cazuri normalizarea complet, pn la FN5,
s-ar putea s fie dezavantajoas. Avnd n vedere constatrile de mai sus se poate afirma c dei
normalizarea nu reprezint o soluie general valabil n orice situaie, totui dac pentru

14

proiectarea bazei de date se aplic corect o metodologie de proiectare descendent, modelul rezultat
va fi de la sine normalizat. Cercetrile n acest domeniu continu, fiind definite i alte forme normale
printre care FN6 pentru baze de date temporale. O baz de date temporal, pe lng datele curente,
conine i date istorice, iar factorul (atributul) timp are un rol esenial (exemple concludente de astfel de
baze de date sunt depozitele de date). Astfel, n proiectarea unei baze de date temporale trebuie avute n
vedere i alte operaii de descompunere a schemelor de relaie i anume:
- descompunerea orizontal pentru separarea datelor curente de datele istorice;
- descompunerea vertical pentru separarea atributelor aceleiai entiti avnd n vedere valorile lor
raportate la atributul temporal.
n proiectarea unei baze de date nu este exclus nici operaia invers normalizrii numit
denormalizare [DATE04], prin care se urmrete nlocuirea unei colecii de scheme de relaie cu o
schem de relaie echivalent n vederea eliminrii necesitii efecturii unor operaii de cuplare care
pot fi costisitoare. Dac n cazul normalizrii tendina este de a ajunge la nivele ct mai nalte (FN5),
pentru denormalizare nu exist criterii clare putnd fi avute n vedere doar aspecte legate de
performanele anumitor aplicaii.
Un alt principiu care se urmrete n proiectarea unei baze de date este principiul proiectrii
ortogonale conform cruia n cadrul unei baze de date dou scheme de relaie reale (variabile de relaie
de baz) nu trebuie s aib semnificaii suprapuse. n timp ce prin normalizare se urmrete reducerea
redundanei din cadrul unei scheme de relaie, prin proiectarea ortogonal se urmrete reducerea
redundanei dintre schemele de relaie.
I.4. Necesitatea definirii de noi modele de date n proiectarea SGBD-urilor
SGBD-urile realizate la sfritul anilor 60 i nceputul anilor 70 au la baz modelul ierarhic i
modelul reea, constituind prima generaie de sisteme SGBD.
Principalele dezavantaje ale acestor dou modele sunt:
- necesitatea scrierii unor programe complexe pentru realizarea interogrilor, bazate pe acces
navigaional orientat pe nregistrri;
- inexistena unui fundament teoretic;
- independena de date minimal.
La nceputul anilor 70 E.F. Codd a pus bazele modelului relaional fundamentat pe algebra
relaiilor i calculul relaional. SGBD-urile realizate dup acest model constituie a doua generaie de
SGBD-uri cu o larg rspndire (exist astzi peste 100 de sisteme SGBDR att pentru sisteme
mainframe ct i pentru sisteme PC).
Majoritatea sistemelor SGBD comerciale aflate n exploatare au fost proiectate pentru a
satisface cerinele aplicaiilor din domeniul afacerilor i anume :
- probleme de gestiune a ntreprinderilor (personal, salarii, magazii, producie, etc.);
- sisteme de rezervare a locurilor (transporturi, staiuni, hoteluri, etc.);
- sisteme de gestiune biblioteci;
- sisteme financiar-bancare, etc.
care se caracterizeaz prin efectuarea unor operaii relativ simple asupra unor volume mari de date.
Limbajele de manipulare utilizate n cadrul acestor sisteme, rezolv problema accesului
operativ la volume mari de date, ns au o putere de expresie limitat, considerabil mai redus fa de
cea a limbajelor de programare convenionale cum ar fi: PASCAL, COBOL, FORTRAN etc. Spre
exemplu, limbajele LMD utilizate n cadrul SGBD-urilor relaionale, nu permit exprimarea operaiilor
cu caracter recursiv. Reducerea limbajelor LMD la posibilitatea exprimrii doar a unor operaii simple
s-a impus din urmtoarele dou motive:
- optimizarea timpului de rspuns mai ales n cazul cnd se opereaz asupra unor volume mari
de date - prin utilizarea optimizatoarelor care pot exploata informaii privind structurile fizice auxiliare
(indeci, tabele de dispersie, etc.) de care utilizatorul nu trebuie s aib cunotin. Prin optimizare, se
poate obine o reducere considerabil a timpului de rspuns la interogri (ex.100.000 ori );

15

- simplitatea (uurina) utilizrii acestor limbaje le face accesibile unor categorii largi de
utilizatori.
Una din deficienele modelelor de date utilizate n proiectarea SGBD-urilor din prima i a doua
generaie, o constituie posibilitile limitate de modelare. Astfel a fost definit conceptul de model
semantic sau model extins nc din 1976, cnd Chen a prezentat modelul Entitate-Relatie (E/R), care
constituie astzi o tehnic larg acceptat pentru proiectarea bazelor de date.
Modelul E/R permite proiectantului bazei de date s elaboreze un model conceptual, fr a ine
seama de anumite constrngeri impuse de cele trei modele care stau la baza proiectrii SGBD-urilor,
ceea ce permite o reprezentare mai fidel a realitii avute n vedere. Modelul conceptual astfel realizat
const dintr-o diagram E/R, care ulterior poate fi transpus n cadrul unuia din modelele : ierarhic,
reea, relaional. Deci modelul E/R constituie o etap intermediar n proiectarea unei baze de date,
fiind din acest punct de vedere asemntor pseudocodului utilizat n activitatea de programare.
Necesitatea rezolvrii unor probleme complexe care nu se ncadreaz n clasa de probleme din
domeniul afacerilor pentru care au fost proiectate SGBD-urile din prima i a doua generaie, impune
elaborarea de limbaje de manipulare cu putere de expresie mult mai apropiat de cea a limbajelor de
programare convenionale. Aceste aplicaii sunt cunoscute sub denumirea de aplicaii avansate de baze
de date [COBS01] sau aplicaii complexe de baze de date [DATE04] i includ:
- Proiectarea asistat de calculator CAD (Computer Aided Design);
- Fabricarea asistat de calculator CAM (Computer Aided Manufacturing);
- Ingineria programrii asistat de calculator CASE (Computer Aided Software
Engineering);
- Sistemele informaionale de birou OIS (Office Information Systems) i sistemele multimedia;
- Editarea digital (stocarea electronic a crilor, revistelor, ziarelor, articolelor i furnizarea lor la
consumatori prin reele foarte rapide);
- Sistemele informaionale geografice GIS (Geographical Information Systems) Aplicaii tiinifice
i medicale (ex. date complexe pt. modelele moleculare ale compuilor chimici sintetici, date
complexe privind materialul genetic, etc.);
- Sisteme expert (cunotine i baze de reguli pentru aplicaii de inteligen artificial).
Aplicaiile avansate de baze de date de tipul celora enumerate mai sus necesit accesarea i
manipularea unor volume mari de date ca i n cazul SGBD-urilor clasice, precum i efectuarea unor
operaii mult mai complexe dect cele posibile n cadrul SGBD-urilor clasice. Pentru soluionarea
acestor probleme cercetrile sunt ndreptate n dou direcii [DORO98] i anume:
- Abordarea orientat obiect;
- Abordarea logic.
I.4.1. Tehnologia orientat spre obiecte
Concepte utilizate n tehnologia orientat spre obiecte
Pentru a reprezenta n memoria calculatorului obiectele fizice sau noiunile din lumea real
este necesar s identificm proprietile specifice acestora i s le reprezentm prin numere care
constituie singurul mod de nregistrare a informaiei n memoria calculatoarelor actuale.
n cadrul tehnologiei orientate obiect informaiile specifice obiectelor din lumea real trebuie
s fie pstrate la un loc (ntr-o zon compact) i s poat fi prelucrate ca un tot unitar.
Cnd analizm un obiect sau o noiune din lumea real pentru a le reprezenta n calculator,
trebuie s avem n vedere att proprietile caracteristice acestora ct i operaiile care pot fi efectuate,
deci trebuie s avem n vedere datele ce descriu proprietile precum i operaiile care pot fi aplicate
datelor. Reprezentarea datelor se va realiza prin intermediul tipurilor de date, iar a operaiilor ce
acioneaz asupra datelor, prin intermediul funciilor. De asemenea trebuie s avem n vedere modul
cum reacioneaz obiectul atunci cnd este supus la aciuni exterioare. Setul de operaii specifice unui
obiect mpreun cu modul cum acesta reacioneaz la stimuli externi poart denumirea de
comportament al obiectului.

16

Obiecte i atribute
Un obiect este o entitate unic identificabil, care conine att atributele care descriu starea unui
obiect din lumea real, ct i aciunile asociate acestuia. n timp ce un obiect modeleaz att starea ct
i comportamentul, o entitate modeleaz doar starea.
Starea unui obiect este descris de unul sau mai multe atribute numite i variabile de instan,
starea curent a obiectului fiind dat de valorile pe care le iau atributele respective la un moment dat.
Atributele pot fi :
- simple tipuri simple de date (ex. ntreg, ir, real, etc.) care pot lua valori de tip literal;
- complexe - pot conine colecii (descriu colecii de obiecte) i/sau referine (descriu relaii dintre
obiecte) putnd conine o valoare sau o colecie de valori.
Un obiect care conine unul sau mai multe atribute complexe se numete obiect complex.
Pentru reprezentarea atributelor se utilizeaz notaia punct astfel:
PERSOANA.nume (precizeaz atributul nume al obiectului PERSOANA).
Aciunile asociate obiectului sunt operaii (funcii) numite metode ce se vor aplica asupra
valorilor atributelor. Metodele definesc comportamentul obiectelor i pot fi utilizate pentru schimbarea
strii obiectelor, sau pentru interogarea valorilor atributelor selectate. Spre exemplu putem avea
metode pentru a aduga o persoan n baza de date, pentru reactualizarea salariului unei persoane
existente n baza de date, sau pentru tiprirea la imprimant a datelor referitoare la o persoan din baza
de date.
Mijloacele prin care comunic obiectele sunt mesajele.
Exemplu : pentru a executa metoda Creste_salariu asupra unui obiect Persoana de tip Personal i a
transmite metodei o valoare de cretere de 250000 se va scrie:
Persoana.Creste_salariu(250000)
iar ntr-un limbaj de programare un mesaj poate fi scris ca o apelare de funcie astfel:
Creste_salariu(Persoana,250000)
Identitatea obiectelor
n sistemele orientate pe obiecte, fiecrui obiect, atunci cnd este creat, i este atribuit un
identificator de obiect OID care satisface condiiile [COBS01]: este generat de sistem, este unic pentru
acel obiect, este invariant (nu poate fi modificat i nici utilizat pentru identificarea altui obiect, chiar
dac obiectul iniial a fost ters), este independent de valorile atributelor sale (starea sa). Dou obiecte
pot avea aceeai stare dar vor avea identiti diferite, invizibil pentru utilizatori.
Spre deosebire de modelul relaional unde unicitatea este impus doar n cadrul relaiei (la
nivel de relaie prin cheia primar format din valori de atribute deci dependent de starea
obiectului) , identificatorul de obiect asigur unicitatea la nivelul ntregului sistem.
Dou obiecte sunt identice (se noteaz =) dac i numai dac ele reprezint acelai obiect
(adic identificatorii lor OID sunt aceiai).
Dou obiecte sunt egale (se noteaz ==) dac strile lor sunt aceleai (au aceleai valori ale
atributelor).
Obiecte complexe
Exist situaii n care un obiect este format din subobiecte, fiind vzut ca un singur obiect din
lumea real, dar fiind combinat cu alte obiecte printr-un set de relaii de tip A-PART-OF (APO = o
parte din). La rndul lor subobiectele pot fi ele nsele obiecte complexe, ceea ce permite construirea
unei ierarhii de tip A_PART_OF. Obiectul coninut poate fi manipulat n dou moduri:
- poate fi ncapsulat n obiectul complex formnd o parte a acestuia i n acest caz poate fi accesat
numai cu metodele obiectului complex;
- poate fi considerat ca avnd o existen independent de cea a obiectului complex caz n care n
obiectul complex este stocat doar identificatorul OID al obiectului coninut. Obiectul coninut are
structura i metodele lui proprii i poate fi deinut de diverse obiecte printe.

17

Astfel de tipuri de obiecte sunt denumite obiecte complexe structurate, spre deosebire de obiectele
complexe nestructurate cunoscute n domeniul bazelor de date sub denumirea de obiecte binare mari
(BLOB Binary Large OBject) a cror structur poate fi interpretat doar de programe aplicaie.
Clase de obiecte, instan a unei clase, subclase, superclase i motenire
n lumea real se pot identifica clase (familii) de obiecte.
n limbajul de programare SIMULA realizat nc din anii 60, clasele sunt cliee negative
pentru definirea unei mulimi de obiecte similare obiecte ce au aceleai atribute i care rspund la
aceleai mesaje. Atributele i metodele asociate sunt definite o singur dat pentru clas i nu separat
pentru fiecare obiect al clasei. Deci atributele (proprietile) sunt aceleai pentru ntreaga familie de
obiecte, dar valorile atributelor pot diferi de la un obiect la altul. De asemenea operaiile sunt
ntotdeauna aceleai ns rezultatul aplicrii lor poate s difere n funcie de valorile atributelor
obiectului asupra crora sunt aplicate. Rezultatul aplicrii operaiilor nu depinde numai de valorile
atributelor obiectului respectiv, ci i de unele valori exterioare acestuia. Nu are rost s transmitem ca
parametri ai unei operaii valori ale atributelor, deoarece acestea sunt ntotdeauna disponibile operaiei.
Dei n literatura de specialitate termenii clas i tip sunt sinonimi, tip corespunde
noiunii de tip de date abstract. Pentru o variabil declarat de un anumit tip ntr-un limbaj de
programare compilatorul verific dac operaiile executate asupra variabilei, sunt compatibile cu tipul
ei, iar o clas fiind un clieu negativ de creare a obiectelor i furniznd metode ce pot fi aplicate
acestora, se face referire la o clas mai degrab n timpul execuiei dect n momentul compilrii
[COBS01].
O clas poate fi privit ea nsi ca un obiect avnd propriile atribute i metode ce descriu
caracteristicile generale ale clasei (ex. totaluri, medii, etc.).
Obiectele unei clase se numesc instane ale clasei. Exist metode speciale ale clasei pentru
crearea de noi instane i distrugerea celor inutile. De obicei metodele pentru crearea de noi instane
sunt numite constructori, iar cele de distrugere a instanelor sunt denumite destructori.
Unele obiecte pot avea atribute i metode comune, deci se poate pune problema partajrii
acestora n vederea definirii unei clase mai generale. Cazurile speciale sunt numite subclase, iar
cazurile mult mai generale, superclase. Procesul de formare a unei superclase se numete
generalizare, iar procesul de formare a unei subclase se numete specializare.
n sistemele orientate pe obiecte, motenirea permite ca o clas s fie definit ca un caz special
al unei clase mult mai generale. O subclas motenete implicit toate proprietile (atributele i
metodele) superclasei sale i n plus definete proprieti specifice. Toate instanele subclasei sunt i
instane ale superclasei. Relaia dintre subclas i superclas este numit A-KIND-OF (AKO) n
traducere un fel de, iar relaia dintre o instan i clasa ei este denumit IS-A (este un, o).
Prin operaia de definire a unei noi clase de obiecte pe baza uneia deja existente, operaie
numit i derivare (sau extindere) [ROEU96], rezult o ierarhizare a claselor de obiecte n baza creia
putem spune c toate clasele de obiecte sunt derivate dintr-o clas iniial numit clasa de obiecte
generice n care se pot defini proprietile i operaiile comune tuturor claselor de obiecte cum ar fi :
testul de egalitate ntre dou instane, duplicarea instanelor, determinarea clasei la care aparine o
anumit instan etc.
Modele de date bazate pe tehnologia orientat spre obiecte.
Tehnologia orientat obiect, st la baza elaborrii a dou noi modele de date pentru rezolvarea
problemelor puse de elaborarea aplicaiilor avansate de baze de date i anume:
- Modelul de date orientat spre obiecte OODM (Object Oriented Data Model);
- Modelul de date relaional cu obiecte ORDM (Object Relational Data Model).
SGBD-urile realizate dup aceste modele reprezint a treia generaie de sisteme SGBD
constituit din:
- Sisteme de Gestiune a Bazelor de Date Orientate Obiect (SGBDOO sau OODBMS - Object
Oriented Data Base Management System);
- Sisteme de Gestiune a Bazelor de Date Obiect Relaionale (SGBDOR sau ORDBMS - Object
Relational Data Base Management System).

18

Avnd n vedere rspndirea larg i popularitatea de care se bucur sistemele relaionale, pn


nu demult alegerea sistemelor SGBD prea s se fac ntre sistemele SGBD relaionale i sistemele
SGBD orientate spre obiecte. Productorii de sisteme SGBDR consider c pentru aplicaiile avansate
de baze de date, modalitatea cea mai eficient de a remedia insuficienele modelului relaional este de
a-l extinde cu noi caracteristici de orientare spre obiecte i anume: posibilitatea definirii de noi tipuri de
date de ctre utilizator (UDT), ncapsularea, motenirea, polimorfismul, legarea dinamic a metodelor,
obiecte complexe ce includ obiecte care nu se afl n prima form normal, identitatea obiectelor,
stocarea de metode sau proceduri n baza de date n mod asemntor datelor.
Se obine astfel un hibrid dintre sistemul SGBDR i sistemul SGBDOO denumit SGBDOR, care
pstreaz cunotinele i experiena obinute cu SGBDR i nglobeaz o serie larg de caracteristici ale
sistemelor orientate spre obiecte. n aceast idee s-a realizat extinderea limbajului SQL cu faciliti de
orientare spre obiecte n vederea definirii standardului SQL3.
Sistemele SGBDOR au avantaje i dezavantaje dup cum urmeaz:
Avantaje: pstreaz cunotinele i experiena acumulate cu SGBDR, costul trecerii la orientarea spre
obiecte este redus, standardul SQL3 este astfel proiectat nct s fie compatibil cu standardul SQL
curent.
Dezavantaje: se pierde simplitatea i puritatea modelului relaional, nu sunt tratate modele de obiecte ci
sunt extinse relaiile din modelul relaional (obiectele persist doar stocate n tabele i interogrile se
aplic numai tabelelor), suport limitat pentru metode de acces multidimensional la date.
Productori importani de sisteme SGBD relaionale printre care: Oracle, IBM i Informix, iau extins sistemele pentru a deveni sisteme SGBDOR.
I.4.2. Abordarea logic
Abordarea logic are n vedere dezvoltarea de sisteme denumite SGBC (Sisteme de Gestiune a
Bazelor de Cunotine) [DORO98], sau Intelligent Database Systems [IDBS02], care s rspund pe de
o parte cerinelor oferite de un SGBD i pe de alt parte s posede un limbaj declarativ cu o putere de
expresie apropiat de cea a limbajelor convenionale.
Cercetrile desfurate n aceast direcie au n vedere adaptarea limbajelor logice de tip
PROLOG la cerinele impuse de manipularea unor volume mari de date ntlnite n cadrul SGBDurilor. n acest sens sunt avute n vedere limbajele din familia DATALOG, care sunt considerate a fi
intermediare ntre limbajele relaionale i limbajul PROLOG. Aceste limbaje sunt privite din dou
puncte de vedere opuse i anume:
- un limbaj DATALOG este o extensie recursiv a unui limbaj relaional;
- un limbaj de tip DATALOG este un limbaj PROLOG liber de funcii, rezultat
din
eliminarea argumentelor de tip funcie ale predicatelor n programele PROLOG.
I.5. Gestiunea tranzaciilor i controlul concurenei
Tranzacia este unitatea logic de prelucrare constnd dintr-o secven de operaii efectuate
asupra bazei de date de ctre un singur utilizator astfel nct s fie asigurat consistena i sigurana
bazei de date. Consistena const n respectarea tuturor constrngerilor de integritate definite asupra
datelor, iar sigurana const n rezistena la defecte i capacitatea de recuperare din avarii. O baz de
date trebuie s fie consistent att naintea ct i dup execuia unei tranzacii, ns n timpul execuiei
tranzaciei pot apare situaii n care baza se afl temporar ntr-o stare inconsistent. O tranzacie poate
consta din execuia uneia sau mai multor comenzi (instruciuni ale unui limbaj de programare) asupra
bazei de date. Pentru a defini (delimita) explicit o tranzacie, unele limbaje pentru baze de date (spre
exemplu SQL) conin instruciunile BEGIN TRANSACTION i END TRANSACTION, iar pentru
acceptarea (validarea) respectiv anularea (abortarea) tranzaciei, instruciunile COMMIT respectiv
ROLLBACK. Raportat la conceptul de tranzacie, execuia unui program sau aplicaii poate reprezenta
execuia uneia sau mai multor tranzacii. Se subliniaz faptul c toate aciunile efectuate asupra bazei
de date n cadrul unei tranzacii vor fi operate efectiv n baza de date numai dup validarea tranzaciei
(execuia instruciunii COMMIT), ceea ce nseamn c operaiile unei tranzacii sau sunt executate n

19

totalitate , sau ntreaga tranzacie este anulat (abortat), deci execuia unei tranzacii se bazeaz pe
principiul ori totul, ori nimic. Dac n cadrul unui program, tranzaciile nu sunt delimitate, ntregul
program este considerat o tranzacie i SGBD-ul execut automat o instruciune COMMIT dac
programul s-a terminat normal, sau o instruciune ROLLBACK dac programul s-a terminat anormal.
Pentru bazele de date accesate simultan de ctre mai muli utilizatori, se pune problema
rezolvrii situaiilor de conflict care pot apare datorit accesului concurent la aceleai date. Dac baza
de date este accesat doar n citire de ctre utilizatorii concureni, atunci rezolvarea problemei privind
accesul concurent se realizeaz prin secvenializarea accesului utilizatorilor de ctre sistemul de
operare care stabilete ordinea de satisfacere a cererilor de acces avnd n vedere minimizarea timpului
total de satisfacere a cererilor. Sistemele de operare care conin mecanisme ce pot trata independent
operaiile de intrare/ieire concomitent cu efectuarea altor operaii de ctre unitatea central de
prelucrare, permit executarea simultan a dou sau mai multor tranzacii. ns dac doi sau mai muli
utilizatori concureni acceseaz simultan baza de date, iar unul dintre ei actualizeaz date care ar putea
fi accesate de ali utilizatori, pot apare interferene ce pot conduce la incoerene. Dou tranzacii T1, T2
pot conduce la interferene dac rezultatul execuiei lor secveniale difer de rezultatul execuiei lor
concurente. Astfel de tranzacii concurente i care pot conduce la interferen sunt numite conflictuale.
Pentru evitarea situaiilor de conflict, n cadrul sistemelor SGBD se utilizeaz urmtoarele dou
metode:
- controlul concurenei prin blocare;
- controlul concurenei prin mrci de timp.
Pentru controlul concurenei prin blocare, sistemele SGBD dispun de dou funcii primitive i
anume LOCK() i UNLOCK(), sau de un mecanism de zvorre, care utilizate pentru o tranzacie T
prin intermediul componentei lock manager realizeaz blocarea respectiv deblocarea accesului altor
tranzacii la elemente (uniti de acces) din baza de date utilizate de tranzacia T. Unitile de acces
sunt elemente ale bazei de date care pot constitui obiectul unei operaii de blocare n timpul execuiei
tranzaciei.
O problem sensibil care poate apare prin mecanismul de blocare este interblocarea sau impasul, care
apare n situaia n care o tranzacie T1 este blocat de o alt tranzacie T2 care la rndul su este
blocat de tranzacia T1, astfel nct nici una din tranzacii nu i poate continua execuia. O astfel de
situaie nu poate fi rezolvat dect fie printr-o intervenie din exterior, fie printr-un modul software
special realizat n acest sens.
I.6. Baze de date distribuite
Spre deosebire de o baz de date centralizat, care este stocat pe un singur calculator
(server) i aflat sub controlul unui singur sistem SGBD, o baz de date distribuit este o colecie de
date distribuit fizic pe mai multe baze de date gestionate de diverse sisteme SGBD pe mai multe
maini sub diverse sisteme de operare n cadrul unei reele de calculatoare. Un sistem SGBD distribuit
(SGBDD) este un sistem pentru gestiunea bazelor de date distribuite astfel nct distribuirea s fie
transparent pentru utilizatori. Din punct de vedere utilizator, baza de date distribuit este format
dintr-o singur baz de date logic constituit dintr-un numr de fragmente, fiecare fragment fiind
stocat pe unul sau mai multe calculatoare (site, nod) interconectate n reea, putnd fi reprodus i fiind
controlat de un SGBD. Tratarea distribuit este motivat din urmtoarele considerente:
- reelele de calculatoare au aprut i s-au dezvoltat din necesitatea descentralizrii;
- n mod natural o organizaie este constituit din uniti funcionale distribuite local sau la distan;
- fiecare unitate funcional din cadrul unei organizaii i ntreine propriile date operaionale;
- datele trebuie stocate i ntreinute ct mai aproape de sursele care le genereaz.
Un sistem de baze de date distribuite poate fi omogen, caz n care n toate nodurile sistemului
se utilizeaz acelai SGBD, sau poate fi eterogen, caz n care n noduri diferite pot fi utilizate sisteme
SGBD diferite eventual de tipuri diferite (ierarhice, reea, relaionale, orientate obiect). Sistemele
eterogene necesit realizarea comunicrii ntre diverse tipuri de sisteme SGBD, care trebuie s fie

20

transparent pentru utilizator astfel nct acesta s poat formula cereri n limbajul sistemului SGBD
local.
n cadrul arhitecturii de referin a unui sistem de baze de date distribuite, pot fi puse n
eviden urmtoarele scheme [COBS01]: un set de scheme globale externe, o schem conceptual
global, o schem de fragmentare, o schem de alocare, un set de scheme pentru fiecare SGBD local
dup arhitectura ANSI-SPARC pe trei nivele.
Schema conceptual global conine descrierea la nivel logic a ntregii baze de date.
Schemele externe globale corespund vederilor utilizatorilor asupra bazei de date distribuite.
Schema de fragmentare definete fragmentele de date la nivel logic.
Schema de alocare descrie locul unde vor fi stocate datele i reproducerile acestora.
Fiecrui nod al reelei n care sunt stocate date n cadrul sistemului SGBDD i corespunde o
schem local conform arhitecturii ANSI-SPARC pe 3 nivele, altfel spus fiecrui SGBD local i
corespunde o arhitectur ANSI-SPARC pe 3 nivele (nivelul extern, nivelul conceptual, nivelul intern),
n cadrul nivelului extern fiind realizat corespondena dintre fragmentele din schema de alocare i
obiectele externe din baza de date local. Aplicaiile locale (care nu necesit date din alte noduri ale
reelei) pot fi tratate autonom n cadrul SGBD-ului local. n cadrul sistemului pot exista noduri care s
nu aib propria lor baz de date local.
Transparena unui sistem distribuit are n vedere ascunderea aspectelor privind distribuirea fa
de utilizator, astfel nct utilizarea unei baze de date distribuite este realizat n acelai mod ca
utilizarea unei baze de date centralizate. n acest sens, un utilizator nu trebuie s tie cum a fost
realizat fragmentarea, unde sunt amplasate datele, cum sunt reproduse datele, ce sisteme SGBD sunt
utilizate n celelalte noduri ale reelei, etc.
Avnd n vedere dificultatea soluionrii problemelor ridicate de utilizarea bazelor de date
distribuite, la ora actual sistemele SGBD distribuite nu sunt larg acceptate, fiind preferabil o tratare
simplificat a distribuirii datelor prin reproducerea datelor n servere de reproducere. Reproducerea
const n crearea i ntreinerea mai multor copii ale datelor n unul sau mai multe noduri ale reelei,
oferind astfel o serie de faciliti sporite privind disponibilitatea datelor, refacerea n urma unor
incidente i funcionalitatea sistemului. Operaia de reproducere a datelor poate fi realizat n dou
moduri i anume:
- reproducerea sincron, caz n care datele reproduse sunt actualizate imediat ce sunt actualizate
datele surs (exemplu protocolul 2PC);
- reproducerea asincron, caz n care reproducerile datelor (instantanee) pot fi actualizate dup o
ntrziere fa de momentul actualizrii datelor surs, ntrzierea putnd fi de ordinul secundelor,
orelor sau chiar zilelor acolo unde se pot utiliza reproduceri care nu trebuie s fie neaprat
sincronizate sau ntreinute la zi.
O alt modalitate de tratare a reproducerilor o constituie crearea de ctre utilizatori a unor aplicaii
proprii de reproducere numite declanatoare de baze de date, care conin cod ce va fi executat la
declanarea anumitor evenimente cum ar fi spre exemplu inserarea unei nregistrri, modificarea unei
nregistrri existente, etc.
I.7. Baze de date multimedia
Conceptul multimedia reprezint capacitatea de achiziionare, stocare, manipulare i redare
informaii obinute de la diverse surse ce conin text, grafic, sunet, imagine static sau dinamic,
grupate n documente electronice. Organizarea informaiei sub form de documente electronice i
accesarea acestora a devenit posibil odat cu apariia Web-ului. Crearea documentelor electronice pe
Web se realizeaz cu ajutorul limbajului HTML (HyperText Markup Language) bazat pe hiperlegturi
(legturi ctre date stocate ierarhic), iar accesarea acestora se face cu ajutorul unor programe numite
navigatoare (Internet Explorer, Netscape). Pentru realizarea de pagini Web dinamice se utilizeaz
limbaje specializate cum ar fi JavaScript, care permit ncorporarea unor programe simple n
documentul HTML i care vor fi executate de ctre programul navigator.

21

Organizarea i gestionarea eficient a informaiei multimedia se realizeaz n cadrul


sistemelor de gestiune a bazelor de date multimedia (SGBD MM). n cadrul unor sisteme SGBD
comerciale, informaia multimedia poate fi stocat direct n baza de date n tipuri de cmpuri speciale,
sau baza de date poate conine locaiile (cile de acces) la fiierele externe ce conin informaia
multimedia. O baz de date multimedia trebuie s permit stocarea i regsirea informaiei multimedia
n condiii optime privind necesarul de suport i timpul de rspuns. Dei exist la ora actual o serie de
modele teoretice de obiecte multimedia, acestea sunt specifice anumitor aplicaii, sunt limitate ca
funcionalitate i nu au fost nc implementate n produse SGBD comerciale. Aceste produse au
faciliti de stocare, ns multe din operaiile de prelucrare a unor tipuri de date multimedia trebuie
realizate n cadrul aplicaiei multimedia prin intermediul unui limbaj gazd.
I.8. Rezistena la defecte i recuperarea din avarii
n timpul exploatrii curente a unei baze de date centralizate sau distribuite pot apare diverse
incidente (defecte, avarii, pene), fie n funcionarea echipamentelor , fie software. Se pune astfel
problema utilizrii unor instrumente i tehnici pentru a elimina sau mcar pentru a reduce la minimum
efectele apariiei unui defect. Comportarea unui sistem n condiiile apariiei unor astfel de incidente
hardware sau software sau altfel spus tolerana fa de defecte i capacitatea sistemului de recuperare
din avarii este cunoscut n literatura de specialitate sub denumirea de rezisten la defecte.
Att pentru bazele de date centralizate ct mai ales pentru bazele de date distribuite se pune
problema realizrii unor sisteme fiabile care s funcioneze corect ntr-un interval de timp dat. Exist
situaii cnd astfel de sisteme trebuie s funcioneze corect fr ntreruperi, 7 zile pe sptmn, 24 ore
pe zi (aanumitele sisteme cu grad ridicat de disponibilitate cum ar fi spre exemplu sistemele pentru
programele spaiale sau sistemele pentru centralele nucleare). n cadrul unui sistem cu baze de date,
principalele elemente utilizate sunt: memoria principal (buffer), memoria secundar (suportul extern
de memorare), echipamentele i liniile de comunicaie, software de sistem i software de aplicaie.
Astfel, principalele tipuri de defecte ce pot apare n funcionarea sistemului sunt:
- defecte hardware (cderi ale memoriei principale, memoriei secundare sau a altor componente
hardware ale sistemului de calcul);
- defecte software care se datoreaz funcionrii defectuoase ale unor componente ale sistemului de
operare, sistemului SGBD, sau a unor programe de aplicaie;
- defecte ale sistemului de comunicaii, datorate unor cderi de linii de comunicaie sau funcionrii
defectuoase a unor echipamente de comunicaie.
n vederea asigurrii funcionrii corecte n condiiile apariiei unor incidente, sistemul SGBD
dispune de o component numit modulul de recuperare care permite recuperarea din avarii (refacerea
bazei de date n urma apariiei unor incidente) prin cooperare cu componenta numit buffer manager.
Principalele funciuni realizate de modulul de recuperare sunt: commit, rollback, backup-recovery.
Pentru a putea realiza recuperarea bazei de date, sistemul SGBD faciliteaz utilizarea unor
mecanisme de asisten a refacerii i anume:
- realizarea de copii de siguran periodice ale bazei de date;
- crearea fiierului jurnal (log) care este un fiier secvenial ce conine o istorie a tuturor
actualizrilor, la nivel de tranzacie, efectuate asupra bazei de date;
- crearea de puncte de control (puncte de reluare) prin care se salveaz starea sistemului n memoria
secundar la diverse momente de timp i pentru fiecare punct de reluare se scrie n jurnal o
nregistrare corespunztoare. Punctele de reluare pot fi create fie la diverse momente de timp, fie
dup memorarea unui numr de nregistrri n fiierul jurnal. Dac este necesar recuperarea bazei
de date vor fi utilizate cel mult ultimele dou puncte de reluare. O metod mai convenabil prin
care s nu fie perturbat funcionarea sistemului, este crearea de puncte de reluare fuzzy prin care
salvarea strii sistemului n memoria secundar are loc n paralel cu operarea normal a
tranzaciilor n baza de date. Este posibil ca starea salvat n memoria secundar s nu
ndeplineasc condiia de consisten, ns aceasta poate fi transformat ntr-o stare consistent prin
operarea asupra sa a tuturor modificrilor nscrise n jurnal pe durata crerii punctului de reluare.

22

Utilizarea mecanismului UNDO/REDO care permite recuperarea bazei de date dup o cdere a
sistemului att pentru tranzaciile ncheiate n memoria principal dar netransferate n totalitate n
memoria secundar, ct i pentru tranzaciile neterminate n
momentul cderii sistemului.
Pentru primul caz, pentru operarea tranzaciilor n memoria
secundar se parcurge fiierul
jurnal nainte de la ultimul punct de reluare pn la sfrit i se opereaz n baza de date (operaie
de tip REDO), iar n cel de-al doilea caz pentru tranzaciile nevalidate n momentul cderii
sistemului, acestea vor trebui abortate, ceea ce se realizeaz prin parcurgerea fiierului jurnal de la
sfrit spre nceput i anularea tuturor
operaiilor efectuate de tranzaciile nevalidate (operaie
de tip UNDO).

I.9. Arhitecturi client-server pentru sistemele SGBD


Sistemele client-server au aprut ca urmare a descentralizrii activitii din diverse domenii,
ceea ce presupune o repartizare a realizrii sarcinilor pe cele dou nivele: client, server. De obicei
clienii reprezint utilizatorii finali care vor comunica cu serverul bazei de date n cadrul unei reele de
calculatoare.
Dup rolul pe care l are fiecare din componentele client, server, se pot distinge [COBS01] trei
arhitecturi de baz pentru un sistem client-server (Loomis 1992) i anume:
arhitectura de tip server de obiecte n care se distribuie prelucrarea ntre cele dou
componente (server, client). Serverul este responsabil de administrarea memoriei i zvoarelor,
efectuarea operaiilor n memoria secundar, securitatea, integritatea i recuperarea bazei de date,
executarea procedurilor stocate i optimizarea interogrilor. Clientul este responsabil de
administrarea tranzaciilor i realizarea interfeei cu limbajul de programare;
arhitectura de tip server de pagini cea mai mare parte a prelucrrilor este realizat de ctre
client. Serverul este responsabil de memoria secundar i furnizeaz paginile corespunztor
cererilor formulate de client;
arhitectura de tip server de baz de date cea mai mare parte din prelucrrile bazei de date
este efectuat de ctre server. Clientul transmite cererea serverului, primete rezultatele i le
transmite aplicaiei. Este modul utilizat frecvent de ctre sistemele relaionale.
n fiecare dintre cele trei cazuri serverul se gsete pe aceeai main ca i baza de date fizic. Clientul
se poate afla pe aceeai main sau pe una diferit. n cazul bazelor de date distribuite pe mai multe
maini, clientul va comunica cu cte un server de pe fiecare main. De asemenea mai muli clieni pot
comunica concomitent cu acelai server (accesul concurent).
Arhitectura tradiional a sistemelor client-server este o arhitectur pe dou nivele (etaje), n
care la primul nivel (clientul) se realizeaz interfaa cu utilizatorul i logica principal a aplicaiei, iar la
al doilea nivel (serverul) se realizeaz validarea datelor i accesul la baza de date. Necesitatea
rezolvrii unor probleme complexe care presupun accesul la baza de date a unui numr mare de
utilizatori, utilizarea unor platforme hard-soft diferite, precum i integrarea bazelor de date n mediul
Web, au impus definirea unei noi arhitecturi client-server n care sunt definite trei nivele i anume:
- nivelul client, la care se realizeaz interfaa cu utilizatorul aplicaiei;
- nivelul server de aplicaie, la care se realizeaz logica aplicaiei i prelucrrii datelor;
- nivelul server de baze de date, la care se realizeaz validarea datelor i accesul la baza de date.
Un server de aplicaie poate servi mai muli clieni, fiind conectat fizic att la nivelul client ct i la
nivelul server de baze de date. Spre exemplu n mediul Web, clientul poate fi un browser Web, iar
serverul de aplicaie poate fi un server Web.
Probleme rezolvate
1. Principalele modaliti de organizare a datelor sunt:
a)
Fiierul
b)
Tabela
c)
Baza de date
d)
nregistrarea

23

Rspuns corect: a), c).


2. Modele de date utilizate n proiectarea Sistemelor de Gestiune a Bazelor de date sunt:
a)
Modelul ierarhic
b)
Modelul fizic
c)
Modelul reea
d)
Modelul relaional
e)
Modelul logic
f)
Modele slab tipizate
g)
Modele semantice
h)
Modelul orientat obiect
i)
Modelul relaional cu obiecte
Rspuns corect: a), c), d), h), i).
3. n modelul relaional reprezentarea structurii datelor se realizeaz prin:
a)
O colecie de arbori de structur
b)
Schema relaional
c)
Diagrama structurii datelor
Rspuns corect: b).
4. Normalizarea unei relaii const n:
a) Descrierea relaiei n limbajul de descriere a datelor
b) Descompunerea relaiei ntr-un set de relaii echivalente n vederea eliminrii redundanei
datelor i anomaliilor la adugare, actualizare i tergere nregistrri n baza de date
c) Identificarea dependenelor ntre atributele relaiei
Rspuns corect: b).
5. Aplicaiile avansate de baze de date pot fi realizate utiliznd un SGBD de tip:
a)
ierarhic
b)
orientat obiect (SGBDOO)
c)
relaional cu obiecte (SGBDOR)
d)
reea
Rspuns corect: b), c).
6. n modelele orientate obiect, o instan a unui obiect este definit de:
a)
Atribute i metode
b)
Starea obiectului
c)
Starea i comportamentul obiectului
d)
Comportamentul obiectului
Rspuns corect: c).
Probleme propuse spre rezolvare
1. O baza de date este:
a) Un ansamblu de date n memoria intern a calculatorului
b) O colecie de date i un soft numit SGBD care controleaz accesul la baza de date
c) O aplicaie care gestioneaz un volum mare de date
d) O colecie partajat de date, care conine datele propriu-zise, relaiile logice dintre
acestea, precum i descrierea datelor (structura datelor).
2. Sistemul de Gestiune a Bazei de Date este:

24

a) Un sistem de programe care permite definirea, crearea i ntreinerea bazei de date, precum i
accesul controlat la baza de date.
b) Un sistem de programe pentru interogarea bazei de date
3.

n modelul relaional legturile dintre tipurile de entiti pot fi realizate prin:


a)
pointeri
b)
propagarea cheilor
c)
crearea unor scheme de relaie separate
d)
multiplicarea nregistrrilor

4. O cheie a unei relatii poate fi:


a) Orice atribut din cadrul relaiei
b) Un subset K de atribute din cadrul relaiei ce identific unic n-tuplele relaiei,
subsetul K
fiind minimal (eliminarea oricrui atribut din K duce la pierderea proprietii de identificare
unic).
c) Unul sau mai multe atribute oarecare, care identific n mod unic tuplele relaiei
5. Aplicaiile care prelucreaz date simple i necesit interogri complexe sunt adecvate sistemelor:
a) SGBDR
b) SGBDOO
c) SGBDOR
6.

Descriei cele 3 nivele de abstractizare n care pot fi privite datele n cadrul unei baze de date

7.

Enumerai modelele de date cunoscute n ordine cronologic

8.

Enumerai tipurile de aplicaii avansate de baze de date

9.

Prezentai principalele avantaje i dezavantaje ale sistemelor SGBDOR.

25

II. SISTEMUL DE GESTIUNE A BAZELOR DE DATE FoxPro


Rezumat. Sunt prezentate ci practice de organizare i exploatare a bazelor de date relaionale cu
ajutorul sistemului Fox Pro. Sunt prezentate elementele limbajului FoxPro i evideniate faciliti
oferite de mediul de programare Visual FoxPro
II.1. Definirea i prelucrarea datelor organizate n tabele.
n modelarea unei pri a lumii reale se identific tipurile de entiti (mulimile de obiecte
similare avnd aceleai proprieti) i legturile (relaiile) ntre entiti.
Fiecrui tip de entitate i corespunde un tabel n care fiecare coloan corespunde unei
proprieti ce definete tipul de entitate i fiecare rnd reprezint o entitate aparinnd tipului respectiv
de entitate.
Capul de tabel conine denumirea proprietilor ce definesc tipul de entitate.
Exemplu:
O list de persoane (tipul de entitate Persoane) poate fi definit de proprietile:
NR. CRT, NUME, PRENUME, DATA NASTERII, SEXUL, ADRESA
NR.
CRT
1

NUME

PRENUME

TELEFON

SEXUL

ADRESA

236412

DATA
NASTERII
02/27/1978

IONESCU

ION

Suceava

7 Noiembrie 3

POPESCU

GHEORGHE

221122

05/13/1980

Suceava

Narciselor

ANGELESCU

ANA

211564

01/11/1978

Suceava

G. Enescu

10

Corespunztor acestei liste n FoxPro se va crea o tabel care va conine:


- o nregistrare antet corespunztoare capului de tabel (structura datelor)
- cte o nregistrare pentru fiecare rnd al tabelului corespunztoare fiecrei persoane
n FoxPro pentru WINDOWS lungimea maxim a unei nregistrri poate fi de 65500 caractere.
Coloanele tabelei create se vor numi cmpuri, iar rndurile se vor numi nregistrri.
Corespunztor tabelei se va crea un fiier care va avea un nume precizat de utilizator (Ex:
Persoane) i extensia .dbf.
nregistrarea antet corespunztoare capului de tabel va conine denumirea fiecrei coloane
(cmp), tipul datelor din coloan, limea n numr de caractere i eventual numrul de zecimale pentru
cmpurile numerice.
O baz de date FoxPro este un ansamblu de astfel de tabele prin care se descriu entitile i
legturile dintre entiti ce se definesc pentru rezolvarea unei probleme date.
Pentru crearea unei tabele se va utiliza comanda CREATE <nume tabel> sau din meniul File
se alege opiunea New i apoi Table.
n ambele situaii sistemul FoxPro va afia un ecran pentru definirea structurii tabelei n care
utilizatorul va introduce pentru fiecare cmp numele, tipul, dimensiunea (limea) eventual numrul de
zecimale pentru cmpurile numerice.
Tipurile de date acceptate n FoxPro sub WINDOWS vor fi prezentate n cadrul acestui capitol.
Pentru introducerea datelor n tabel se poate utiliza una din comenzile:
APPEND, EDIT, BROWSE .
Fiecare nregistrare de date din tabel, pe lng datele propriu-zise mai conine nc un octet
numit de invalidare logic care permite marcarea nregistrrilor pentru tergere (conine valoarea *
pentru nregistrrile marcate pentru tergere).
De asemenea fiecare nregistrare primete un numr curent numit indicator de nregistrare
ncepnd de la 1 n ordinea introducerii nregistrrilor.
Fiecare nou nregistrare este adugat la sfritul fiierului.

26

Ordinea introducerii nregistrrilor n tabel este numit ordine natural i este ordinea
implicit n care vor fi vizualizate nregistrrile tabelei.
Pentru modificarea datelor introduse n tabel pot fi folosite comenzile EDIT, BROWSE.
tergerea de nregistrri dintr-o tabel se realizeaz n dou etape:
- tergerea logic = marcarea pentru tergere (completarea octetului de
invalidare logic pentru tergere)
- tergerea fizic = eliminarea nregistrrii i eliberarea spaiului ocupat.
tergerea logic se realizeaz cu comanda DELETE.
Dac SET DELETED este ON atunci nregistrrile marcate pentru tergere nu vor fi vzute de
alte comenzi FoxPro (Ex: LIST, DISPLAY, BROWSE etc.).
Anularea tergerii logice se realizeaz cu comanda RECALL.
tergerea fizic se realizeaz cu comanda PACK.
tergerea fizic realizeaz rescrierea fiierului mai puin nregistrrile marcate pentru tergere.
tergerea fizic a tuturor nregistrrilor se poate realiza fie cu comanda ZAP, fie cu comenzile
DELETE ALL, PACK.
Structura unei tabele poate fi modificat (modificare cmpuri existente, adugare de noi
cmpuri, tergere cmpuri existente) utiliznd comanda MODIFY STRUCTURE.
Structura unei tabele poate fi vizualizat utiliznd comanda LIST STRUCTURE sau
DISPLAY STRUCTURE.
Afiarea nregistrrilor unei tabele poate fi realizat cu una din comenzile LIST, DISPLAY
ALL.
Oricare din operaiile de mai sus asupra unei tabele poate fi efectuat numai dac n prealabil
tabela respectiv a fost deschis.
Deschiderea (activarea) unei tabele se realizeaz cu comanda USE.
USE < nume tabel >
Deschiderea unei tabele presupune utilizarea unei zone de memorie n care sunt memorate
informaii privind tabela respectiv, zon numit zona de lucru.
FoxPro 2.6 sub WINDOWS aloc 225 astfel de zone de lucru numerotate de la 1 la 225 ceea ce
nseamn c pot fi deschise la un moment dat maximum 225 tabele.
Precizarea zonei de lucru n care este deschis o tabel se poate face :
- fie cu comanda USE astfel :
USE <nume tabel> IN <nr.zon>
- fie cu comanda SELECT astfel :
SELECT <ne.zon>
USE <nume tabel>
Zona de lucru implicit este zona 1.
Zona de lucru curent este ultima zon selectat cu comanda SELECT sau zona 1 n lipsa unei
comenzi SELECT <nr.zon>.
Fiecare zon de lucru utilizat poate primi un alias specificat n comanda USE, iar n lipsa
specificrii, aliasul zonei este numele tabelei deschise n zona de lucru respectiv.
Astfel se pot referi cmpurile unei tabele folosind aliasul zonei de lucru n care a fost deschis
tabela respectiv.
Exemplu:
m.nr = 0
STORE SPACE(15) TO m.nume
USE Personal IN 3
m.nr = Personal.nr
m.nume = Personal.nume
n secvena de instruciuni de mai sus Personal.nr, Personal.nume refer cmpurile nr, nume
din tabela Personal deschis n zona de lucru 3 care nu este zona de lucru curent.

27

Dup terminarea lucrului cu baza de date aceasta trebuie nchis utiliznd una din comenzile
USE, CLOSE.
Tipuri de date recunoscute n FoxPro.
n FoxPro sunt recunoscute urmtoarele tipuri de date:
Tipul caracter (C) = ir format din 0 pn la 254 caractere ASCII cu excepia caracterelor 0
binar (NULL), Ctrl/z (cod 26).
Tipul numeric (N) = succesiune de cifre zecimale, eventual precedat de semnul + sau i
putnd conine marca zecimal (caracterul .).
Tipul flotant (F) = date numerice reprezentate n virgul flotant, utilizate pentru calcule
matematice de precizie.
Tipul data calendaristic (D) = date calendaristice reprezentate n memorie ca numere, iar
formatul extern implicit este ll/zz/aa (ll=nr.lun, zz=nr.zi din lun, aa=ultimele dou cifre ale anului).
Tipul logic (L) = date logice reprezentate pe un octet ce pot avea una din valorile:
T adevrat (True) sau Y (Yes) sau t sau y
F fals (False) sau N (No) sau f sau n
Tipul memo (M) = poate conine un ir de octei de lungime maxim dou
miliarde de
caractere. Numai cmpurile tabelelor pot fi de tip memo (nu i variabilele sau constantele) i astfel de
cmpuri conin doar adresa pe 10 octei ctre un fiier cu extensia .FPT care conine informaia
propriuzis pentru fiecare nregistrare din fiierul .DBF pe lungime variabil (pn la max. dou
miliarde de caractere)
Tipul general (G) = utilizat pentru susinerea tehnologiei OLE (Object Linking and Empeding)
legarea i nglobarea obiectelor (texte, desene, imagini, sunete, foi de calcul tabelar etc.). Stocarea
datelor se face tot n fiierul .FPT la fel ca n cazul cmpurilor memo. Pentru a prelua un obiect OLE
dintr-o aplicaie extern n baza de date se folosete opiunea Copy din meniul Edit al programului
Windows Explorer pentru a copia obiectul n memoria temporar Clipboard, apoi cu opiunea Paste sau
Paste special din meniul Edit al programului FoxPro se insereaz sau se face referina la obiectul din
Clipboard n cmpul General din baza de date.
II.2. Limbajul FoxPro
Produsul FoxPro dispune de un limbaj de programare denumit FoxPro care conine
aproximativ 200 comenzi care pot fi executate individual din fereastra de comenzi sau din programe,
pentru crearea, ntreinerea i interogarea bazelor de date.
II.2.1. Elementele limbajului :identificatori, constante, variabile scalare (cmpuri, variabile de
memorie), masive, operatori, funcii, expresii, instruciuni, ferestre, meniuri, proceduri, programe.
Identificatori - succesiune de caractere (doar primele 10 au semnificaie) alfabetice, cifre i liniua de
subliniere _ , care poate ncepe cu o liter sau _.
Identificatorii pot reprezenta:
- cuvinte cheie ale limbajului (ex. CREATE, FOR, IF, etc.)
- cuvinte definite de utilizator (ex. Persoane, Nume, Datan, etc.)
Este indicat a se evita utilizarea de cuvinte cheie pentru cuvinte definite de utilizator (pentru a
nu crea confuzii i pentru nelegerea semnificaiei cuvintelor utilizate)
Cuvintele cheie ale limbajului pot fi trunchiate la minim primele 4 caractere ca de exemplu:
CREATE, CREA, CREAT au aceeai semnificaie.
Pot fi utilizate litere majuscule, minuscule sau orice combinaie de majuscule i minuscule.
Constante:
- Constanta caracter succesiune de caractere ncadrat ntre sau sau [ ]
Exemplu: Limbajul FoxPro la dispoziia dvs.
(caracterul s-a utilizat pentru a indica nceputul i sfritul constantei iar
caracterele fac parte din constant)
- Constanta data calendaristic o dat calendaristic ncadrat ntre acolade

28

Exemplu: {03/08/02}
- Constante logice reprezint valorile logice adevrat , fals dup cum
urmeaz:
.T. sau .t. sau .Y. sau .y. pentru adevrat (True, true, Yes, yes)
.F. sau .f. sau .N. sau .n. pentru fals (False, false, No, no)
- Constante numerice - succesiuni de cifre zecimale precedate eventual de
semnul + sau i putnd conine marca zecimal ..
Exemplu: 125
-12.5
Poate fi utilizat i notaia tiinific
Exemplu: 5.878E+12 reprezint 5,878 nmulit cu 10 la puterea 12
1.6E-12
reprezint 1.6 nmulit cu 10 la puterea 12
Variabile - sunt identificatori pentru variabile de memorie sau cmpuri ntr-o tabel .DBF.
Pentru a preciza c variabila este o variabil de memorie sau un cmp ntr-o tabel se poate folosi
operatorul . sau -> i aliasul astfel:
M.Nume
sau M->Nume
specific variabila de memorie Nume
Persoane.Nume sau Persoane->Nume specific cmpul Nume din tabela Persoane .
Dac nu se face precizarea ca mai sus i tabela Persoane este deschis n
zona de lucru curent atunci Nume refer cmpul Nume i nu variabila de memorie Nume.
O variabil de memorie poate fi creat prin operaia de atribuire astfel:
m.Nume = Ionescu sau folosind comanda STORE astfel
STORE Ionescu TO m.Nume.
Tipul unei variabile de memorie este dat de valoarea memorat n acea variabil.
La momente diferite de timp aceeai variabil de memorie poate avea tipuri diferite
funcie de valoarea memorat n variabil la fiecare moment.
O clas special de variabile o reprezint variabilele de sistem care sunt utilizate pentru a
pstra anumite informaii ca de exemplu variabila sistem _PCOPIES pstreaz numrul de copii de
tiprit pentru urmtorul raport.
Identificatorii acestor variabile ncep cu caracterul liniua de subliniere _.
Masive sunt structuri de date care permit memorarea mai multor valori ntr-o zon de memorie creia
i se atribuie un nume, valorile respective putnd fi tratate att ca un tot ct i ca elemente distincte.
Masivele sunt organizate sub forma unui tablou de valori unidimensional sau bidimensional,
deci sub form de vectori sau de matrice.
Declararea unui masiv se realizeaz cu una din comenzile DIMENSION sau DECLARE ca n
exemplele de mai jos:
DIMENSION Vec(10) declar un vector numit Vec de 10 elemente
Vec(1),Vec(2),,Vec(10)
DIMENSION alfa(2,4)
declar matricea alfa cu 2 linii i 4 coloane avnd elementele alfa(1,1)
alfa(1,2) alfa(1,3) alfa(1,4) alfa(2,1) alfa(2,2) alfa(2,3) alfa(2,4)
DECLARE vector(8),matrice(4,3) declar vectorul vector de 8 elemente i matricea matrice cu 4 linii
i 3 coloane.
Elementele unui masiv pot fi de acelai tip sau de tipuri diferite.
Dup declararea unui masiv toate elementele sale vor fi de tip logic avnd valoarea .F.
Ulterior fiecare element al masivului poate primi orice valoare prin instruciunea de atribuire =,
sau STORE.
Operatori precizeaz aciunile ce trebuie efectuate asupra datelor (operanzilor).
Operatori aritmetici:
(unar) specific un numr negativ
+ (unar) specific un numr pozitiv , este implicit
+ adunare
scdere
* nmulire
/
mprire

29

** ridicare la putere
% modulo - restul mpririi a dou expresii (ex. 42%10 rezult 2)
( ) grupare operaii
Operatori de comparare:
= egal
== egalitate exact (numai pentru tipul caracter)
> mai mare
< mai mic
>= mai mare sau egal
<= mai mic sau egal
<> diferit
#
diferit
!= diferit
$
este cuprins (numai pentru tipurile caracter i memo (ex. Dac A=Cimp caracter
i memo atunci comanda ? caracter $ A d rezultatul .T. deoarece caracter
este coninut n A).
Operatori logici:
OR
sau
AND i
NOT negaie
()
Grupare operaii pt. schimbare prioritate
Operatori asupra irurilor de caractere:
+
concatenare iruri (ex. ABC + DE rezult ABCDE)
concatenare iruri cu mutarea spaiilor libere de la sfritul primului
ir la sfritul irului rezultat (ex. ABC - DE rezult ABCDE
Pentru toate tipurile de operatori ordinea de prioritate (precedena) este cea convenional i
poate fi schimbat folosind parantezele ( ).
Funcii.
Sistemul FoxPro dispune de o gam variat de funcii (peste 200) reprezentnd:
- Funcii matematice (SIN, COS, TAN, ASIN, ACOS, ATAN, SQRT, etc.)
- Funcii de conversie date (conversia unui tip de dat n alt tip de dat
(DTOC, DTOS, CTOD, VAL, STR, etc.)
- Funcii pentru irurile de caractere
(LTRIM, RTRIM, ALLTRIM, LOWWER, UPPER, SUBSTR, etc.)
- Funcii pentru date calendaristice (CTOD, DATE, YEAR, etc.)
- Funcii pentru fiiere .DBF (DBF, DELETED, EOF, BOF, RECCOUNT, RECNO, etc.)
- Funcii pentru cmpuri memo (MEMLINES, MLINE, etc.)
- Funcii pentru meniuri (PAD, BAR, PROMPT, etc.)
- Funcii pentru operaii de intrare/ieire (LASTKEY, COL, ROW, PRINTSTATUS)
- Funcii de intrare/ieire de nivel inferior
(FCREATE, FOPEN, FCLOSE, FREAD, FWRITE, FGETS, FPUTS, etc.)
- Alte funcii (FILE, SYS, etc.)
Expresii sunt construcii realizate folosind elementele limbajului (constante, identificatori, operatori,
variabile, masive, funcii) i utilizate n cadrul instruciunilor limbajului.
O caracteristic important a expresiilor este tipul, care este dat de tipul elementelor utilizate n
cadrul expresiilor.
Astfel tipul unei expresii poate fi: Numeric <expN>, Caracter <expC>, Logic <expL>
n cadrul unei expresii toate elementele trebuie s fie de acelai tip.
Pentru realizarea acestei cerine se pot folosi funciile de conversie de tip.
Dac ntr-o expresie tipurile operanzilor nu sunt compatibile ntre ele sau cu operatorii
utilizai, atunci va apare eroarea:

30

Data type mismatch


Instruciuni
O instruciune (comand) FoxPro este o construcie care ncepe cu un verb (cuvnt cheie care
precizeaz o anumit aciune) i care mai poate conine o serie de clauze care specific condiiile n
care se va executa comanda respectiv.
O instruciune poate fi scris pe una sau mai multe linii, continuarea instruciunii pe linia
urmtoare fiind precizat prin caracterul ;.
Fac excepie instruciunile pentru controlul execuiei programului (instruciunile de programare
structurat) i anume:
IFELSEENDIF
DO CASEENDCASE
DO WHILEENDDO
FORENDFOR
care conin cte un singur cuvnt cheie pe o linie i nu pot fi executate din fereastra de comenzi FoxPro
ci numai din programe.
Pe aceeai linie nu poate fi scris dect o singur comand FoxPro.
Liniile care ncep cu caracterul * sunt considerate linii de comentarii i deci nu sunt
interpretate de compilator.
O linie instruciune poate conine n continuare un comentariu precedat de caracterele &&.
Exemple de instruciuni:
BROWSE FIELDS Nume,Prenume,Datan
(Permite editarea n mod Browse doar a cmpurilor Nume,Prenume,Datan ale tabelei Persoane descrise
anterior.)
DEFINE WINDOW f1 FROM 1,1 TO 10,50;
TITLE Fereastra f1;
COLOR SCHEME 3
(Definete fereastra f1 din linia 1 coloana 1 pn n linia 10 coloana 50, avnd titlul Fereastra f1 i
utiliznd schema de culori 3)
IF sw = 1
SELECT 1
ELSE
SELECT 2
ENDIF
(dac variabila de memorie sw are valoarea 1 selecteaz zona de lucru 1, altfel selecteaz zona de lucru
2)
Observaie: Orice cuvnt cheie FoxPro poate fi trunchiat la minim primele 4 caractere ale
cuvntului.(Ex. DEFINE este acelai lucru cu DEFI, DEFIN, DEFINE, WINDOW este acelai lucru cu
WIND, WINDO, WINDOW).
Orice instruciune FoxPro poate fi executat fie din fereastra de comenzi FoxPro, fie dintr-un
program, cu excepia instruciunilor de control al execuiei programelor (IF, DO CASE, DO WHILE,
FOR) care nu pot fi executate din fereastra de comenzi, ci doar din programe sau proceduri.
II.2.2. Proceduri, programe n FoxPro
Proceduri.
O procedur FoxPro este o secven de instruciuni care ncepe cu instruciunea PROCEDURE
<nume procedur> i se termin cu instruciunea RETURN. Dac instruciunea RETURN lipsete
atunci urmtorul cuvnt PROCEDURE determin sfritul procedurii anterioare.
O procedur este lansat n execuie cu comanda DO <nume procedur>.
O procedur poate face parte din fiierul .PRG din care este apelat, poate fi ea nsi un fiier
.PRG distinct, sau poate face parte dintr-o bibliotec de proceduri (un fiier .PRG care conine una sau

31

mai multe proceduri) caz n care nainte de apelarea procedurii, biblioteca care o conine trebuie
deschis cu comanda SET PROCEDURE TO <nume bibliotec>
unde <nume bibliotec> este numele fiierului .PRG ce reprezint biblioteca de proceduri.
Pot fi utilizate i proceduri cu parametri, caz n care prima instruciune a procedurii este
instruciunea PARAMETERS <lista parametri formali> , iar apelarea procedurii se realizeaz cu
comanda DO <nume procedur> WITH <lista parametri actuali>
Programe
UN program FoxPro este o secven de instruciuni coninut ntr-un acelai fiier cu extensia
.PRG. Pentru editarea unui program se poate folosi fie un editor extern (care trebuie specificat n
fiierul CONFIG.FPW), fie editorul produsului FoxPro care se lanseaz cu comanda
MODIFY
COMMAND <nume program>
Un program FoxPro poate fi construit ca o ierarhie de proceduri astfel:
main

P1

P21

P2

Pn

P22

P2k

P2k1

P2k2

.
Programul FoxPro corespunztor va fi de forma:
PROCEDURE < main>
...
DO P1
...
DO P2
...
DO Pn
...
RETURN
PROCEDURE P1
...
RETURN
PROCEDURE P2
...
DO P21
...
DO P22
...
DO P2k
...

&&(opional)

32

P2kr

RETURN
...
PROCEDURE Pn
...
RETURN
PROCEDURE P21
...
RETURN
PROCEDURE P22
...
RETURN
...
PROCEDURE P2k
...
DO P2k1
...
DO P2k2
...
DO P2kr
...
RETURN
PROCEDURE P2k1
...
RETURN
PROCEDURE P2k2
...
RETURN
...
PROCEDURE P2kr
...
RETURN
.................
Pentru a putea fi executat, un program FoxPro va trebui mai nti compilat rezultnd astfel un
fiier obiect cu extensia .FXP.
Lansarea n execuie a unui program se realizeaz cu comanda
DO <nume program>
La lansarea n execuie, dac n programul surs au fost efectuate modificri cu editorul
MODIFY COMMAND sau cu un editor specificat n fiierul CONFIG.FPW, obinerea fiierului obiect
.FXP se realizeaz automat i apoi se execut programul.
II.2.3. Ferestre i meniuri utilizator
Ferestre
Produsul FoxPro permite lucrul cu ferestre definite de utilizator.
O fereastr este o zon dreptunghiular de ecran definit fie prin dou puncte (colul din stnga
sus i colul din dreapta jos), fie printr-un punct (colul din stnga sus) i nlimea (nr. de rnduri) i
limea ferestrei (nr. de coloane) .
Un punct este definit de coordonatele sale reprezentnd numrul de rnd i numrul de
coloan.
Pentru a putea fi folosit, o fereastr utilizator trebuie mai nti definit, operaie care se
realizeaz cu comanda DEFINE WINDOW.

33

O fereastr utilizator poate fi definit n interiorul unei ferestre printe, care poate fi: fie
fereastra principal FoxPro , fie o alt fereastr utilizator.
Coordonatele punctelor ce definesc fereastra n cazul definirii prin dou puncte (colul din
stnga sus i colul din dreapta jos) sunt funcie de dimensiunea fontului ferestrei printe.
Se pot defini ferestre utilizator care sunt mai mari dect ecranul.
Exemple.
DEFINE WINDOW f1 FROM 4,4 TO 15,45
DEFINE WINDOW f1 AT 4,4 SIZE 10,40
Cele dou instruciuni sunt echivalente i definesc fereastra f1 ncepnd din colul din stnga
sus precizat de punctul dat de rndul 4 coloana 4 i avnd 10 rnduri i 40 coloane.
Dac presupunem c fontul ferestrei principale FoxPro nu este stilul Roman de 24 puncte
atunci comenzile de mai jos definesc ferestre de dimensiuni diferite:
DEFINE WINDOW f1 FROM 4,4 TO 15,45 FONT Roman,24
DEFINE WINDOW f1 AT 4,4 SIZE 10,40 FONT Roman,24
Pentru prima comand coordonatele punctelor ce definesc fereastra se bazeaz pe fontul ferestrei
principale FoxPro, iar n a doua comanda dimensiunile ferestrei se bazeaz pe fontul precizat n
comand (Roman de 24 de puncte).
Pentru ferestrele definite pot fi realizate urmtoarele operaii:
- Activare ferestre cu comanda ACTIVATE WINDOW
Dup activarea unei ferestre, aceasta rmne pe ecran pn la dezactivarea ei i toate informaiile de
ieire pe ecran vor fi dirijate ctre aceast fereastr.
- Dezactivare ferestre cu comanda DEACTIVATE WINDOW
O fereastr dezactivat este tears de pe ecran, ns rmne n continuare n memorie.
- Ascunde ferestre cu comanda HIDE WINDOW
O fereastr ascuns este tears de pe ecran, rmnnd n continuare n memorie, ns informaiile
trimise spre ecran sunt afiate n continuare n acea fereastr.
- Afiare ferestre cu comanda SHOW WINDOW
Fereastra ascuns cu comanda HIDE va fi afiat pe ecran.
- tergere ferestre cu comanda RELEASE WINDOW sau CLEAR WINDOW
(dezactiveaz ferestrele precizate i le elimin din memorie).
- Salvare ferestre cu comanda SAVE WINDOW (salveaz ferestrele
specificate ntr-un fiier pe disc sau ntr-un cmp memo)
- Recuperare ferestre cu comanda RESTORE WINDOW (ferestrele menionate sunt
aduse n memorie de pe disc sau din cmpul memo).
Meniuri
Meniurile sunt o categorie important de obiecte pentru realizarea interfeei utilizator n cadrul
aplicaiilor FoxPro.
Produsul FoxPro, alturi de meniurile sistem, ofer posibilitatea definirii i folosirii meniurilor
utilizator i anume: meniuri orizontale i meniuri verticale.
Meniuri orizontale (bara de meniuri) conine un numr de opiuni numite
pad-uri aezate de regul pe acelai rnd.
Crearea i utilizarea unui meniu presupune parcurgerea urmtoarelor operaii:
- Definire meniu cu comanda DEFINE MENU <nume meniu>
- Definire opiuni cu comanda DEFINE PAD
- Precizare aciune de executat la selecia unei opiuni cu una din comenzile
ON SELECTION PAD <pad> OF <nume meniu> DO <nume procedur>
ON PAD <pad> OF <nume meniu> ACTIVATE POPUP <p>|MENU<m>
- Activare meniu cu comanda ACTIVATE MENU
- Ascundere meniu cu comanda HIDE MENU
- Afiare meniu cu comanda SHOW MENU
- Dezactivare meniu cu comanda DEACTIVATE MENU

34

La dezactivarea unui meniu, controlul programului este dat instruciunii care urmeaz celeia
care a activat meniul respectiv.
Exemplu.
S se defineasc i s se utilizeze un meniu orizontal pentru efectuarea operaiilor de
adugare, tergere, editare (actualizare) date n tabela Persoane astfel:

Adaugare

Stergere

Actualizare

Sfirsit

CLEAR
CLOSE ALL
DEFINE MENU Mo1
DEFINE PAD P1 OF Mo1 PROMPT \<Adaugare
DEFINE PAD P2 OF Mo1 PROMPT \<Stergere
DEFINE PAD P3 OF Mo1 PROMPT Actuali\<Zare
DEFINE PAD P4 OF Mo1 PROMPT S\<Firsit
ON SELECTION PAD P1 OF Mo1 DO PA
ON SELECTION PAD P2 OF Mo1 DO PS
ON SELECTION PAD P3 OF Mo1 DO PZ
ON SELECTION PAD P4 OF Mo1 DO PF
USE Persoane
ACTIVATE MENU Mo1
PROCEDURE PA
APPEND
RETURN
PROCEDURE PS
DELETE ALL FOR <conditie>
RETURN
PROCEDURE PZ
BROWSE NOAPPEND NODELETE
RETURN
PROCEDURE PF
PACK
USE
DEACTIVATE MENU
RETURN
Meniuri verticale (obiecte popup).
Un meniu vertical sau popup este o caset dreptunghiular care conine un numr de opiuni
(bare de selecie) care pot fi definite fiecare separat, sau pot reprezenta fiiere din directorul curent, sau
valorile unei expresii definite folosind cmpuri ale unei tabele, sau denumirile cmpurilor unei tabele.
Crearea i utilizarea unui meniu popup necesit parcurgerea urmtoarelor operaii:
- Definire meniu cu comanda DEFINE POPUP
- Definire opiuni cu comanda DEFINE BAR n cazul cnd opiunile sunt
definite fiecare separat
- Precizare aciune de executat la selecia unei opiuni cu una din comenzile
ON SELECTION POPUP <nume popup> DO <nume procedur>
ON SELECTION BAR OF <nume popup> DO <nume procedur>
ON BAR <expN> OF <nume popup> ACTIVATE MENU <m>|POPUP <P>
- Activare meniu cu comanda ACTIVATE POPUP <nume popup>

35

- Ascundere meniu cu comanda HIDE POPUP


- Afiare meniu cu comanda SHOW POPUP
- Dezactivare meniu cu comanda DEACTIVATE POPUP
La dezactivarea unui meniu, controlul programului este dat instruciunii care urmeaz celeia
care a activat meniul respectiv.
Exemplu 1. Se definete i utilizeaz un meniu vertical pentru adugare, tergere, actualizare,
nregistrri n tabela Persoane cu opiunile: Adaugare, Stergere, Actualizare, Sfirsit:
CLEAR
CLOSE ALL
USE Persoane
DEFINE POPUP Mv1 FROM 5,3 TITLE Tabela Persoane
DEFINE BAR 1 OF Mv1 PROMPT \<Adaugare inregistrari
DEFINE BAR 2 OF Mv1 PROMPT \<Stergere inregistrari
DEFINE BAR 3 OF Mv1 PROMPT Actuali\<Zare inregistrari
DEFINE BAR 4 OF Mv1 PROMPT S\<Firsit program
ON SELECTION POPUP Mv1 DO Pp
ACTIVATE POPUP Mv1
PROCEDURE Pp
DO CASE
CASE BAR() = 1
DO PA
CASE BAR() = 2
DO PS
CASE BAR() = 3
DO PZ
CASE BAR() = 4
DO PF
ENDCASE
PROCEDURE PA
APPEND
RETURN
PROCEDURE PS
DELETE ALL FOR <conditie>
RETURN
PROCEDURE PZ
BROWSE NOAPPEND NODELETE
RETURN
PROCEDURE PF
PACK
USE
DEACTIVATE POPUP
RETURN
Exemplu 2. Se definete i utilizeaz un meniu vertical n care opiunile sunt valorile cmpurilor
Nume, Prenume din tabela Persoane, iar la selecia unei opiuni se afieaz nregistrarea
corespunztoare din tabela Persoane.
CLEAR
CLOSE ALL
DEFINE POPUP Mv2 FROM 5,10 PROMPT FIELD Nume + + Prenume;
TITLE Lista inregistrarilor din tabela Persoane COLOR SCHEME 5
ON selection POPUP Mv2 DO afis_pers
USE Persoane

36

ACTIVATE POPUP Mv2


USE
PROCEDURE afis_pers
? nrm, ,Nume, , ,Prenume, ,Datan
Wait Apasati o tasta
CLEAR
DEACTIVATE POPUP
RETURN
EXEMPLU 3. Se definete un meniu vertical n care opiunile sunt toate fiierele .dbf din directorul
curent. La selecia unei opiuni se afieaz toate nregistrrile din tabela respectiv.
CLEAR
CLOSE ALL
DEFINE POPUP Mv2 FROM 5,10 PROMPT FILES LIKE *.dbf;
TITLE Lista Tabele COLOR rb+/bg,GR+/r,gr+/g,W+/n
ON selection POPUP Mv2 DO afis_date
ACTIVATE POPUP Mv2
USE
PROCEDURE afis_date
m.fis=
m.fis=prompt()
USE (m.fis)
LIST
Wait Apasati o tasta
CLEAR
DEACTIVATE POPUP
RETURN
II.2.4. Controlul execuiei programelor (instruciuni de programare structurat)
Pentru rezolvarea unor probleme de complexitate mare sunt necesare instruciuni care s
schimbe ordinea de execuie secvenial a comenzilor n cadrul unui program. Limbajul FoxPro
dispune de instruciuni pentru realizarea de ramificaii (execuia condiionat a unor secvene de
instruciuni) i bucle (iteraii, cicluri execuia repetat a unei secvene de instruciuni) care permit
realizarea de programe structurate, fiind din acest motiv numite i instruciuni de programare
structurat.
Ramificaiile sunt realizate cu ajutorul instruciunilor IFELSEENDIF i
DO CASEENDCASE.
Instruciunea IF realizeaz selecia execuiei unui grup de instruciuni din dou posibile:
IF <condiie>
<instruciuni 1>
ELSE
<instruciuni 2>
ENDIF
Execuia acestei instruciuni se realizeaz astfel:
Se evalueaz expresia logic <condiie >.
Dac valoarea rezultat n urma evalurii este .T. (adevrat), atunci se execut secvena de
instruciuni <instruciuni 1>, altfel se execut secvena de instruciuni <instruciuni 2> i n ambele
cazuri programul continu cu execuia instruciunii care urmeaz dup clauza ENDIF.
Poate fi utilizat i forma simplificat a instruciunii n care lipsete clauza ELSE :
IF <condiie>
<instruciuni>
ENDIF

37

Secvenele <instruciuni 1>, <instruciuni 2> pot conine la rndul lor instruciuni IF,
obinndu-se astfel imbricarea instruciunilor IF pe un numr oarecare de nivele.
Exemplu.
IF FILE(Persoane.dbf)
USE Persoane
LIST
ELSE
? Fisier Persoane.dbf lipsa in ,sys(2003)
ENDIF
(dac fiierul Persoane.dbf exist n directorul curent, deschide fiierul i afieaz nregistrrile sale,
altfel afieaz mesajul Fisier Persoane.dbf lipsa in <cale>).
Instruciunea DO CASE realizeaz execuia unui grup de instruciuni din mai multe grupuri
posibile astfel:
DO CASE
CASE <condiie 1>
<instruciuni 1>
CASE <condiie 2>
<instruciuni 2>

CASE <condiie n>


<instruciuni n>
[OTHERWISE
<instruciuni>]
ENDCASE
Se execut primul grup de instruciuni <instruciuni k> pentru care rezultatul evalurii
expresiei logice <condiie k> este .T. (adevrat) i programul continu cu instruciunea care urmeaz
dup clauza ENDCASE.
Dac nici una din expresiile logice <condiie k> nu are valoarea .T. (adevrat) i dac clauza
OTHERWISE este prezent, atunci se execut grupul de instruciuni <instruciuni> precizat n clauza
OTHERWISE i apoi programul continu cu instruciunea care urmeaz dup clauza ENDCASE.
Buclele (iteraiile, ciclurile) sunt realizate cu ajutorul instruciunilor
DO WHILE ENDDO, FOR ENDFOR, SCAN ENDSCAN.
Instruciunea DO WHILE ENDDO realizeaz execuia repetat a unui grup de instruciuni
atta timp ct o condiie este adevrat astfel:
DO WHILE <condiie>
<instruciuni 1>
[LOOP
<instruciuni 2>]
[EXIT
[<instruciuni 3>]]
ENDDO
Se execut repetat grupul de instruciuni <instruciuni 1> atta timp ct rezultatul evalurii
expresiei logice <condiie> este .T. (adevrat) i apoi programul continu cu instruciunea care
urmeaz dup clauza ENDDO.
Dac clauza LOOP este prezent, atunci se reia ciclul cu grupul de instruciuni <instruciuni 1>
fr a se executa grupul de instruciuni <instruciuni 2>.
Dac clauza EXIT este prezent, atunci se prsete forat bucla fr a se mai executa grupul
de instruciuni <instruciuni 3> i programul continu cu instruciunea care urmeaz dup clauza
ENDDO.

38

Grupurile de instruciuni <instruciuni 1>,<instruciuni 2>,<instruciuni 3> pot conine ele


nsele instruciuni DO WHILE ENDDO, obinndu-se astfel instruciuni DO WHILE imbricate pe
un numr oarecare de nivele.
Exemplu Calculul sumei primelor n numere naturale
m.S=0
m.i=1
INPUT Introduceti numarul <n>: TO m.n
DO WHILE m.i <= m.n
m.S = m.S + m.i
M.i = m.i + 1
ENDDO
? Suma primelor ,m.n, numere naturale este S = ,m.S
Instruciunea FOR ENDFOR realizeaz execuia repetat a unui grup de instruciuni
plecnd de la o valoare iniial a unei variabile, pn la o valoare final a variabilei, cu un anumit pas
astfel:
FOR <variabila> = <val.iniial> TO <val.final> [STEP <pas>]
<instruciuni 1>
[LOOP
<instruciuni 2>]
[EXIT
[<instruciuni 3>]]
ENDFOR
Se execut grupul de instruciuni <instruciuni 1> de un numr de ori determinat plecnd de la
valoarea iniial a variabilei <variabila> pn la valoarea sa final cu pasul <pas> (<val.iniial>,
<val.final>, <pas> sunt expresii numerice ntregi), dup care programul continu cu instruciunea care
urmeaz dup clauza ENDFOR.
Grupurile de instruciuni <instruciuni 1>,<instruciuni 2>,<instruciuni 3> pot conine ele
nsele instruciuni FOR ENDFOR, obinndu-se astfel instruciuni FOR imbricate pe un numr
oarecare de nivele.
Clauzele LOOP, EXIT au acelai efect ca n cazul instruciunii DO WHILE.
Exemplu Calculul sumei primelor n numere naturale
m.S=0
INPUT Introduceti numarul <n>: TO m.n
FOR i = 1 TO m.n STEP 1
m.S = m.S + i
ENDFOR
? Suma primelor ,m.n, numere naturale este S = ,m.S
Instruciunea SCAN ENDSCAN realizeaz parcurgerea secvenial (i eventual selectiv
precizat printr-o condiie) a nregistrrilor tabelei deschise n zona de lucru curent i execuia unui
grup de instruciuni pentru fiecare nregistrare parcurs, ncepnd cu nregistrarea curent pn la
sfritul fiierului .DBF, sau pn cnd bucla este ntrerupt prin clauza EXIT.
Sintaxa instruciunii este:
SCAN [<domeniu>][FOR <condiie 1>][WHILE <condiie 2>]
<instruciuni 1>
[LOOP
<instruciuni 2>]
[EXIT
[<instruciuni 3>]]
ENDSCAN
Prin <domeniu> poate fi precizat numrul de nregistrri de parcurs cu ajutorul clauzelor ALL
sau NEXT <nr.nregistrri>.

39

Clauzele FOR i WHILE precizeaz condiia pe care trebuie s o ndeplineasc nregistrrile ce


vor fi luate n considerare respectiv condiia ce precizeaz pn cnd va fi parcurs tabela.
Grupurile de instruciuni <instruciuni 1>,<instruciuni 2>,<instruciuni 3> pot conine ele
nsele instruciuni SCAN ENDSCAN, obinndu-se astfel instruciuni SCAN imbricate pe un
numr oarecare de nivele.
Clauzele LOOP, EXIT au acelai efect ca n cazul instruciunii DO WHILE.
Exemplu Afisarea cimpurilor Nrm,Nume,Prenume,Datan separate printr-un spaiu pentru toate
nregistrrile tabelei Persoane
USE Persoane
SCAN
? nrm, ,nume, ,prenume, ,datan
ENDSCAN
USE
II.2.5. Instruciuni de intrare/ieire
Din aceast categorie fac parte instruciunile utilizate pentru introducerea datelor de la tastatur
i afiarea rezultatelor pe ecran sau listarea la imprimant.
Instruciunile de intrare/ieire se mpart n dou grupe i anume :
- Instruciuni pentru realizarea operaiilor de intrare/ieire n mod linie
- Instruciuni pentru realizarea operaiilor de intrare/ieire n mod ecran
Instruciuni pentru realizarea operaiilor de intrare/ieire n mod linie
Din aceast grup fac parte instruciunile:
? <lista expresii> - realizeaz afiarea sau listarea rezultatelor evalurii expresiilor din <lista expresii>
ncepnd din prima coloan a liniei urmtoare liniei curente (deci nainte de afiare se genereaz
codurile <CR>, <LF>).
?? <lista expresii> - realizeaz afiarea sau listarea ncepnd din coloana curent a ecranului sau
imprimantei.
ACCEPT <expC> TO <variabila de memorie> - afieaz mesajul <expC> i ateapt introducerea de
la tastatur a unui ir de caractere care va fi memorat n variabila de memorie specificat.
INPUT <expC> TO <variabila de memorie> - afieaz mesajul <expC> i ateapt introducerea de la
tastatur a unei date de tip ir, sau numr, sau dat calendaristic, sau dat de tip logic care va fi
memorat n variabila de memorie specificat.
Spre deosebire de instruciunea ACCEPT data de tip ir de caractere va trebui ncadrat ntre
sau sau [].
WAIT <expC> - afieaz mesajul <expC> i ateapt apsarea unei taste.
Dac <expC> este omis se va afia mesajul Press any key to continue.
LIST realizeaz afiarea sau listarea la imprimant a nregistrrilor din tabela deschis n zona de
lucru curent.
DISPLAY ALL este similar comenzii LIST cu deosebirea c dup fiecare ecran plin se afieaz
mesajul Press any key to continue i se ateapt apsarea unei taste. Dac clauza ALL este omis ,
se va afia doar nregistrarea curent.
Instruciuni pentru realizarea operaiilor de intrare/iesire n mod ecran .
Instruciunile @sayget, read.
Pentru crearea unui formular (machete) de preluare date n mod ecran pot fi folosite
instruciunile @ sayget, read n urmtoarea sintax simplificat:
@ <lin>,<col> SAY <expC> GET <variabil> PICTURE <ablon> COLOR<culori>
READ
Unde:
<lin> = linia din care ncepe afiarea
<col> = coloana din care ncepe afiarea
<expC> = un ir de caractere ncadrat ntre ,,[] sau expresie de tip ir ce va fi afiat

40

<variabil> = variabil de memorie, nume cmp, element de masiv, n care vor fi preluate datele
introduse de la tastatur
<ablon> = formatul de afiare a datelor preluate, succesiune de caractere X pt.iruri de caractere, sau
succesiune de caractere 9 pentru datele numerice, sau succesiune de caractere A pentru iruri care
conin doar litere, etc. ncadrate ntre apostroafe, sau ghilimele. De asemenea n cadrul formatului de
afiare mai pot fi folosite o serie de funcii ca de exemplu: ! pt.conversie litere mici n litere mari, @Z
pt.suprimare zerouri nesemnificative etc.
<culori> = o list de doua perechi de culori, prima pereche pentru SAY i a doua pereche pentru GET,
reprezentnd culoare scris i culoare fond.
n cadrul instruciunii pot fi utilizate i alte clauze ca de exemplu: SIZE, FONT, STYLE,
VALID, ERROR, VERB, BITMAP etc.
Instruciunea @ sayget poate fi utilizat i ca dou instruciuni distincte
@ <lin>,<col> SAY <expC> PICTURE <ablon> COLOR <cs>/<cf>
@ <lin>,<col> GET <variabil> PICTURE <ablon> COLOR ,<cs>/<cf>
Instruciunea READ clasic citete un set de comenzi @GET ncepnd cu primul GET din list
i continund pn la deplasarea dincolo de ultimul cmp sau naintea primului cmp dup care se iese
din instruciunea READ.
mbuntirile aduse formei clasice a instruciunii permit realizarea de interfee mai puternice
i mai flexibile utiliznd un numr redus de instruciuni FoxPro.
n cele ce urmeaz vom da un exemplu de utilizare a instruciunilor @sayget, read
pentru crearea unui ecran de preluare date n tabela Persoane :
m.nrcrt=0
STORE SPACE(15) TO m.nume,m.prenume
m.datan={ / / }
@3,5 SAY Nr.crt.:
@5,5 SAY Nume:
@7,5 SAY Prenume:
@9,5 SAY Data nasterii:
@3,25 GET m.nrcrt PICT 99 COLOR ,GR+/B
@5,25 GET m.nume PICT XXXXXXXXXXXXXXX COLOR ,GR+/B
@7,25 GET m.prenume PICT XXXXXXXXXXXXXXX COLOR ,GR+/B
@9,25 GET m.datan PICT XX/XX/XX COLOR ,GR+/B
READ
II.2.6. Ordonarea nregistrrilor unei tabele
Ordinea implicit de parcurgere a nregistrrilor ntr-o tabel este ordinea n care au fost
introduse, aceasta fiind numit ordine natural.
Pentru a putea parcurge nregistrrile tabelei i n alt ordine se pot utiliza dou metode i
anume :
1 - Ordonarea nregistrrilor prin operaia de sortare a tabelei
2 - Ordonarea nregistrrilor prin operaia de indexare a tabelei
Ordonarea prin sortare se realizeaz cu comanda
SORT TO <nume fiier> ON <cmp1> [/A|/D|/C]
care are drept rezultat crearea unei noi tabele n care nregistrrile sunt scrise n ordinea precizat
(ordonate dup unul sau mai multe cmpuri /A-ascendent (implicit), /D descendent, /C fr a lua n
considerare deosebirea dintre litere mici sau mari (/C poate fi combinat cu /A sau /D astfel: /AC sau
/DC).
Ordonarea prin indexare se realizeaz cu comanda INDEX care ntr-o form simplificat are
sintaxa:
INDEX ON <expresie index>TAG <nume crit.ord.>[ASCENDING|DESCENDING]

41

(care are drept rezultat crearea unui criteriu de ordonare a nregistrrilor ntr-un fiier avnd acelai
nume cu numele tabelei i extensia .CDX).
Precizarea ordinii n care se vor parcurge nregistrrile ntr-o tabel se face cu comanda SET
ORDER TO <nume criteriu de ordonare>.
Revenirea la ordinea natural (ordinea n care au fost ncrcate nregistrrile n tabel) se face
cu comanda SET ORDER TO.
Exemplu Crearea unui criteriu de ordonare n tabela Persoane, alfabetic dup primele 3 litere din
cmpul Nume:
INDEX ON LEFT(Nume,3) TAG nume3
Comenzile:
USE Persoane
SET ORDER TO TAG nume3
LIST
SET ORDER TO
realizeaz: deschide tabela Persoane, precizeaz ordinea de parcurgere nume3 (alfabetic dup primele 3
litere din Nume), afieaz nregistrrile tabelei n aceast ordine i precizeaz c n continuare
nregistrrile tabelei vor fi vzute n ordinea natural (ordinea n care au fost ncrcate).
Funcia TAG(<nr criteriu>)_returneaz numele criteriului de ordonare <nr criteriu>
Funcia KEY(<nr criteriu>) returneaz expresia index pentru criteriul de ordonare
<nr_criteriu>.
Instruciuni de poziionare pe nregistrri ntr-o tabel.
Fiecrei tabele deschise ntr-o zon de lucru i este asociat un indicator de nregistrri care
conine numrul nregistrrii curente. Aflarea nregistrrii curente (coninutului indicatorului de
nregistrri) ntr-o tabel se realizeaz cu funcia RECNO(). La deschiderea unei tabele cu comanda
USE indicatorul de nregistrri este poziionat pe prima nregistrare (conine valoarea 1). Pentru
schimbarea indicatorului de nregistrri (poziionarea pe o alt nregistrare) se pot folosi instruciunile:
GO <expN> - realizeaz poziionarea pe nregistrarea avnd indicatorul de nregistrri
rezultatul evalurii expresiei <expN>
GO TOP realizeaz poziionarea pe prima nregistrare a tabelei
GO BOTTOM realizeaz poziionarea pe ultima nregistrare a tabelei
SKIP <expN> - realizeaz mutarea indicatorului de nregistrri peste un numr de nregistrri
dat de rezultatul evalurii expresiei <expN>, nainte sau napoi fa de nregistrarea curent, dup cum
rezultatul evalurii expresiei <expN> este un numr pozitiv sau negativ.
Funciile BOF(), EOF() testeaz dac indicatorul de nregistrri este poziionat pe nceputul
tabelei, respectiv pe sfritul tabelei.
Numrul de nregistrri dintr-o tabel este returnat de funcia RECCOUNT().
Dimensiunea unei nregistrri (n nr. octei) este returnat de funcia RECSIZE().
Pentru specificarea domeniului nregistrrilor n anumite instruciuni se pot utiliza urmtoarele
clauze :
ALL specific toate nregistrrile
RECORD <nr> - specific nregistrarea <nr>
NEXT <nr> - specific urmtoarele <nr> nregistrri ncepnd cu nregistrarea curent.
REST specific restul nregistrrilor pn la sfritul tabelei ncepnd cu nregistrarea
curent.
Exemplu.
LIST NEXT 3 afieaz urmtoarele 3 nregistrri ncepnd cu nregistrarea curent.
n tabelele indexate (i numai n acestea) se poate realiza poziionarea direct pe o nregistrare
pentru o valoare a expresiei de indexare precizat, folosind fie instruciunile SEEK <valoare cheie
index>, IF FOUND(), fie funcia SEEK() n instruciunea IF astfel IF SEEK(<valoare cheie
index.>)

42

II.2.7. Comenzi SET permit stabilirea unor condiii de lucru valabile n sesiunea FoxPro de lucru
curent.
SET BELL activeaz sau dezactiveaz sunetele
SET BELL TO stabilete frecvena i durata unui sunet
SET CONFIRM determin dac tasta <Enter> trebuie acionat la ieirea dintr-un cmp
SET DATE specific formatul datelor calendaristice
SET DECIMALS stabilete numrul zecimalelor de afiat pentru datele numerice
SET DELETED stabilete accesul la nregistrrile marcate pentru tergere
SET DEFAULT specific directorul i unitatea de disc implicit (poziionarea intr-un anumit
director)
SET DEVICE stabilete perifericul de afiare
SET EXACT specific dac este necesar o potrivire exact n operaiile de comparare
pentru iruri de caractere
SET FILTER specific condiiile pe care trebuie s le ndeplineasc nregistrrile unei tabele
pentru a fi accesibile
SET ORDER stabilete ordinea de parcurgere a nregistrrilor unei tabele
SET PRINTER activeaz sau dezactiveaz ieirea la imprimant
SET PROCEDURE deschide un fiier de proceduri specificat
SET RELATION TO stabilete o relaie ntre dou sau mai multe tabele
SET RELATION OFF - terge o relaie ntre dou tabele
SET SKIP TO creaz o relaie 1-n (on to many) ntre o nregistrare a unei tabele printe i
mai multe nregistrri a unei tabele copil
SET SAFETY activeaz sau dezactiveaz facilitatea de protecie a fiierelor
SET TALK controleaz afiarea rezultatelor unor comenzi.
II.2.8. Instrumente de lucru pentru creterea productivitii (ex. de utilizare n FoxPro 2.6 sub
Windows).
- Generatorul de meniuri se lanseaz cu comanda Create menu <nume meniu>, sau se selecteaz
File -> New -> Menu -> New, n caseta Prompt se tasteaz numele meniului, din meniul Menu se
selecteat General Optionns , n caseta Location se precizeaz locul unde va apare meniul creat n bara
de meniuri Fox (ex. After, Help pentru ca meniul nou creat s apar dup meniul Help) apoi se
selecteaz OK. Din lista Result se selecteaz Submenu apoi Create iar n caseta Prompt se tasteaz
opiunile de meniu vertical corespunztoare meniului orizontal nou creat i pentru fiecare opiune se
alege din coloana Result cuvntul Command iar n caseta Options se tasteaz DO <nume procedura>
coresp.(dac n caseta Prompt n loc de opiune se tasteaz \- atunci se va trasa un rnd de linii ntre
opiuni). Din meniul Program se selecteaz Generate, se apas butonul Yes i n caseta Save Menu As
se tasteaz numele fiierului n care se va salva meniul i extensia .mnx, apoi se apas butonul Save iar
din caseta Generate Menu se alege Generate. Pentru execuia meniului se d comanda DO <nume fiier
salvat>.mpr, iar pt.modificare MODI COMM <nume fiier salvat>.mpr Pentru revenire la meniul Fox
se d comanda SET SYSMENU TO DEFAULT.
- Creare, salvare,tiprire rapoarte sumare se selecteaz Database->Report->Quick Report
Apoi selecie buton stnga pt. raport n mod Browse, sau buton dreapta pt. raport n mod Change, dup
care se salveaz cu <nume fiier>.frx, care poate fi editat cu MODI REPORT <nume fiier> i executat
din meniul Run cu opiunea Report.
Crearea unei aplicaii din bara de meniuri FoxPro se selecteaz Run->Application->New, apoi din
caseta care apare se selecteaz Step1 pt. creare sau modificare tabel sau/i Step2 pt. creare sau
modificare ecran i n final se apas butonul Generate. Pentru execuia aplicaiei se selecteaz
Run->Application, apoi se selecteaz fiierul cu extensia .app de executat i se apas butonul Run.
- Generatorul de ecrane (Screen Builder)
- Generatorul de rapoarte (Report Writer)

43

II.3. Programarea n Visual FoxPro


Programul Visual FoxPro este un instrument puternic, interactiv, de gestionare a datelor,
mediul Visual FoxPro permind crearea aplicaiilor, utilizarea tehnicilor de programare orientat spre
obiecte i condus de evenimente, faciliti ce sporesc la maximum productivitatea n programare. Dei
Visual FoxPro este compatibil cu programarea procedural standard, noile extensii ale limbajului ofer
puterea i flexibilitatea programrii orientate spre obiect.
Spre deosebire de programarea procedural n care un program const dintr-o secven de
instruciuni, proiectarea i programarea orientate spre obiect reprezint o abordare nou n care efortul
de programare const n proiectarea obiectelor componente de sine stttoare ale unei aplicaii.
II.3.1. Obiecte n Visual FoxPro.
Obiectele n mediul Visual FoxPro sunt formularele i controalele care pot fi gestionate prin
intermediul proprietilor, evenimentelor i metodelor i care vor fi incluse n aplicaii. Extensiile
orientate spre obiect ale limbajului Visual FoxPro permit crearea i ntreinerea cu uurin a
bibliotecilor de cod reutilizabil. Programarea orientat spre obiect este o modalitate de a mpacheta
codul astfel nct s poat fi refolosit i ntreinut mai uor. Primul nivel de mpachetare se numete
clas. O aplicaie este construit din clase i obiecte. Clasele descriu proprietile i comportamentul
obiectelor care se mai numesc i instane ale clasei. Un obiect are anumite proprieti, sau atribute. De
exemplu, un automobil are o anumit denumire i o anumit culoare. Aceste proprieti pot fi stabilite
n faza de proiectare sau de execuie.
Metode i evenimente asociate obiectelor
Fiecare obiect recunoate i poate reaciona la anumite aciuni numite evenimente iniiate fie
de utilizator, fie de sistem. De cele mai multe ori, evenimentele sunt generate de interaciunea cu
utilizatorul. Aciunile utilizatorilor care pot declana evenimente sunt clicurile de mouse, micrile
mouse-ului i apsrile de taste. Evenimente declanate de sistem sunt iniializarea unui obiect i
ntlnirea unei linii de cod care genereaz o eroare. Evenimentele pot avea metode asociate. Metodele
sunt proceduri asociate unui obiect, difer de procedurile Visual FoxPro obinuite, sunt legate
indisolubil de obiect si sunt apelate altfel dect celelalte proceduri Visual FoxPro. Astfel, dac scriem
cod pentru metoda asociat evenimentului Click, codul respectiv este executat atunci cnd survine
evenimentul Click. Metodele pot exista i independent de evenimente, caz n care, trebuie apelate
explicit n cadrul codului. Setul de evenimente este determinat (nu pot fi create noi evenimente), n
schimb, setul de metode este nelimitat
Pentru o descrierea fiecrei proprieti, a fiecrui eveniment sau control, pot fi consultate
fiierele Help ale programului Visual FoxPro.
II.3.2. Clase n Visual FoxPro
Toate proprietile, metodele i evenimentele asociate unui obiect sunt specificate n definiia
clasei. Clasele au o serie de caracteristici care permit crearea de cod reutilizabil, uor de ntreinut i
anume: ncapsularea, subclasele, motenirea. Spre exemplu, proprietile care determin elementele
unei casete cu list i codul care se execut atunci cnd se selecteaz un element din list pot fi
ncapsulate ntr-un singur control pe care-l adugm la un formular.
O subclas poate avea toate funcionalitile unei clase existente, precum i controale sau
funcionaliti suplimentare. Crearea subclaselor este una dintre cile de reducere a dimensiunilor
codului Astfel pentru realizarea unei aplicaii se ncepe cu definirea unei clase ct mai apropiate de
scopul urmrit i apoi se realizeaz personalizarea acesteia. Prin motenire, o modificare efectuat
asupra unei clase se reflect n toate subclasele derivate din aceasta.
Containere i non-containere
Cele dou tipuri primare de clase Visual FoxPro, i, prin extensie, de obiecte Visual FoxPro,
sunt clasele container i clasele control. Containerele pot conine alte obiecte i permit accesul la
acestea. Astfel, dac se creeaz o clas container care cuprinde dou casete cu list i dou butoane de
comand, care apoi se vor aduga la un formular un obiect bazat pe aceast clas, fiecare obiect poate

44

fi manipulat individual, att n momentul proiectrii ct i n momentul execuiei. Se poate crea cte o
clas pentru fiecare control i fiecare formular, ns n acest mod n final vor exista mai multe clase
care fac cam acelai lucru, dar care trebuie ntreinute separat. Se poate crea o clas control pentru o
funcionalitate generic. Astfel spre exemplu, butoanele de comand care permit utilizatorului s mute
indicatorul de nregistrri n cadrul unei tabele, un buton care s nchid formularul i un buton de
asisten pot fi salvate sub form de clase i pot fi adugate la formulare cnd se dorete aceast
funcionalitate. Se pot crea clase pentru seturi de formulare, formulare i controale cu o anumit
nfiare, astfel nct toate componentele aplicaiei s aib acelai aspect.
Visual FoxPro permite crearea mai multor tipuri de clase, fiecare cu propriile sale
caracteristici, tipul clasei putnd fi precizat n caseta de dialog New Class sau n clauza AS a comenzii
CREATE CLASS. Se pot crea subclase ale majoritii claselor de baz din Visual FoxPro cu ajutorul
proiectantului de Clase (Class Designer).
II.3.3. Evenimentele din Visual FoxPro.
Codul pentru evenimente este declanat automat de ctre sistem ca rspuns la o anumit
aciune a utilizatorului. Spre exemplu, codul scris pentru evenimentul Click este prelucrat automat de
sistem atunci cnd utilizatorul execut clic pe un control.
Codul pentru evenimente poate fi declanat i de evenimente din sistem, ca n cazul
evenimentului Timer al controlului timer (ceas).
Principalele evenimente din Visual FoxPro, valabile pentru majoritatea controalelor sunt
prezentate n tabelul de mai jos:
Evenimentul
Momentul declanrii evenimentului
Init
La crearea unui obiect
Destroy
La descrcarea unui obiect din memorie
Click
Cnd utilizatorul execut clic pe obiect cu butonul stnga al
mouse-ului
DblClick
Cnd utilizatorul execut dublu-clic pe obiect cu butonul
stnga al mouse-ului
RightClick
Cnd utilizatorul execut clic pe obiect cu butonul dreapta al mouse-ului
GetFocus
Cnd obiectul devine inta intrrilor (primete focusul), fie datorit
aciunii utilizatorului (de exemplu, la apsarea tastei Tab sau la executarea
unui clic), fie ca urmare a metodei SetFocus din program
LostFocus
Cnd obiectul nu mai este inta intrrilor (pierde focusul), fie datorit aciunii
utilizatorului (de exemplu, la apsarea tastei Tab sau la executarea unui clic),
fie ca urmare a metodei SetFocus din program
KeyPress
La apsarea i eliberarea unei taste de ctre utilizator
MouseDow
La apsarea butonului mouse-ului de ctre utilizator atunci cnd indicatorul
mouse-ului se afl deasupra obiectului
MouseMove
Cnd utilizatorul deplaseaz indicatorul mouse-ului deasupra obiectului
MouseUp
Cnd utilizatorul elibereaz butonul mouse-ului n timp ce indicatorul
mouse-ului se afl deasupra obiectului
II.3.4. Crearea unei baze de date
Crearea unei baze de date se poate realiza cu ajutorul interfeei sau al limbajului. La crearea
bazei de date, se reunesc tabelele ntr-o singur colecie (fiier cu extensia .dbc) i se creeaz
dicionarul de date n care se memoreaz o serie de informaii printre care: cheile primare i candidate,
relaiile persistente dintre tabelele bazei de date, numele lungi pentru tabele i cmpuri, titlurile de
cmpuri afiate n fereastra Browse i n anteturile coloanelor
unei grile, valorile implicite ale
cmpurilor, clasele implicite ale controalelor folosite n formulare, mtile de intrare i formatele de
afiare a cmpurilor, regulile la nivel de cmp i de nregistrare, declanatoarele, procedurile stocate,

45

conexiunile la surse de date externe, vederile locale i externe, comentariile pentru fiecare cmp, tabel
i baz de date
Unele faciliti ale dicionarului de date, cum ar fi numele lungi pentru cmpuri, cheile primare
i candidate, valorile implicite, regulile la nivel de cmp i de nregistrare i declanatoarele, sunt
stocate n fiierul .dbc, dar sunt create n cadrul procesului de construire a unei tabele sau vederi.
Crearea unei noi baze de date se realizeaz astfel:
1. cu Gestionarul de Proiecte, se selecteaz fia cu eticheta Data, iar din lista afiat se selecteaz
Databases i apoi New.
sau
2. cu comanda CREATE DATABASE
La crearea unei baze de date se creaz un container de baz de date vid, cruia i se vor aduga
ulterior obiectetele ce se vor crea pentru aceasta.
Adugarea tabelelor la o baz de date
O tabel Visual FoxPro poate exista n una din urmtoarele dou situaii: ca tabel liber
(extern), adic sub form de fiier .dbf neasociat vreunei baze de date, sau ca tabel dintr-o baz de
date, adic sub form de fiier .dbf asociat unei baze de date. Tabelele asociate unei baze de date au unele
proprieti specifice, care nu exist n cadrul tabelelor externe, cum ar fi regulile la nivel de cmp i de
nregistrare, declanatoarele i relaiile persistente. Tabelele pot fi asociate cu o baz de date prin crearea
lor n cadrul unei baze de date deschise n fundal sau prin adugarea tabelelor existente la o baz de date.
Pentru adugarea unei tabele libere la o baz de date se poate proceda astfel:
n cadrul Gestionarului de Proiecte, se selecteaz Tables din cadrul fielor All sau Data,
apoi se selecteaz Add.
sau
cu comanda ADD TABLE.
Exemplu, secvena de instruciuni de mai jos deschide baza de date BazaTest i i adaug tabela liber
TabTest:
OPEN DATABASE BazaTest
ADD TABLE TabTest
O tabel existent poate fi asociat la o singur baz de date.
O tabel (un fiier .DBF) poate fi folosit i fr a fi ncorporat ntr-o baz de date.
Pentru a face o referin la o tabel dintr-o alt baz de date dect cea curent se folosete
simbolul !, ca de exemplu:
USE BazaTest!TabTest
BROWSE
Pentru eliminarea unei tabele dintr-o baz de date se poate utiliza una din cile:
n cadrul Gestionarului de Proiecte (Project Manager), se selecteaz numele tabelei, apoi se
selecteaz Remove.
sau
n cadrul Proiectantului de Baze de Date (Database Designer), se selecteaz tabela i se alege
comanda Remove din meniul Database.
sau
cu comanda REMOVE TABLE.
Exemplu, codul de mai jos deschide baza de date BazaTest i elimin tabela TabTest
OPEN DATEBASE BazaTest
REMOVE TABLE TabTest
La eliminarea unei tabele dintr-o baz de date nu se realizeaz i tergerea automat a fiierului
asociat tabelei.
Pentru eliminarea tabelei din baza de date i tergerea fiierului .dbf al tabelei de pe hard-disc, se
va folosi clauza DELETE a comenzii REMOVE TABLE sau comanda DROP TABLE astfel:
OPEN DATABASE BazaTest
REMOVE TABLE TabTest DELETE

46

II.3.5. Creare relaii persistente ntre tabelele bazei de date


Aceste relaii sunt create utiliznd indecii (sunt create ntre indeci i nu ntre cmpuri) i sunt
folosite automat drept condiii implicite de legare n ferestrele Proiectantului de interogri i de
Vederi (Query Designer i View Designer) i pentru a stoca informaii despre integritatea
referenial.
Pentru Crearea unei relaii persistente ntre tabele se poate proceda astfel:
- n fereastra Proiectantului de Baze de Date (Database Designer), se alege numele indexului ce urmeaz a
fi legat i apoi se trage cu mouse-ul spre numele indexului din tabela ce urmeaz a fi legat
sau
- se utilizeaz clauza FOREIGN KEY n comenzile CREATE TABLE sau ALTER TABLE.
n fereastra Proiectantului de Baze de Date (Database Designer), se va vedea o linie care leag
tabelele respective, reprezentnd noua relaie persistent.
Pentru tergerea unei relaii persistente ntre dou tabele se poate proceda astfel:
1. n cadrul Proiectantului de Baze de Date (Database Designer), se execut
clic pe linia care reprezint relaia dintre cele dou tabele. (Limea liniei de relaie crete pentru
a indica faptul c s-a selectat relaia respectiv), dup care se apas tasta DELETE.
sau
2. se utilizeaz clauza DROP FOREIGN KEY cu comanda ALTER TABLE.
II.3.6. Crearea integritii refereniale
Crearea integritii refereniale presupune crearea unui set de reguli care s pstreze
relaiile definite ntre tabele cnd se insereaz sau se terg nregistrri.
Meninerea integritii refereniale mpiedic efectuarea urmtoarelor operaii:
- Adugarea de nregistrri la o tabel legat atunci cnd nu exist nici o nregistrare asociat n tabela
primar.
- Modificarea de valori n tabela primar care ar duce la apariia de nregistrri orfane n tabela
asociat.
- tergerea de nregistrri din tabela primar atunci cnd exist nregistrri asociate.
Se pot scrie declanatoare i proceduri stocate care s ntreasc integritatea referenial, ns
Visual FoxPro dispune de Generatorul de Integritate Referenial (RI) (Referenial Integrity Builder)
care permite s se determine tipurile de reguli de ntrit, tabelele pentru care se dorete ca regulile s
fie ntrite i evenimentele de sistem care vor impune mediului Visual FoxPro s verifice respectarea
regulilor de integritate referenial.
II.3.7. Crearea vederilor
Vederile reprezint un concept utilizat n cadrul bazelor de date relaionale care permite
personalizarea unui set de date din baza de date utilizat n cadrul unei aplicaii, combinnd calitile
tabelelor i ale interogrilor. Astfel la fel ca n cazul unei interogri, se poate folosi o vedere pentru a
extrage un set de date din una sau mai multe tabele asociate i la fel ca o tabel, o vedere poate fi folosit
pentru actualizarea informaiilor din baza de date.
La crearea unei vederi, Visual FoxPro stocheaz definiia acesteia n baza de date curent,
definiie ce conine numele tabelelor utilizate n cadrul vederii, precum i cmpurile selectate i valorile
proprietilor lor. La utilizarea vederii, definiia acesteia este folosit de Visual FoxPro pentru a genera o
instruciune SQL care definete setul de date al vederii.
Se pot crea dou tipuri de vederi i anume: locale i externe.
Vederile externe folosesc sintaxa SQL extern pentru a selecta informaii din tabelele unei surse
de date ODBC externe. Vederile locale folosesc sintaxa SQL Visual FoxPro pentru a selecta informaii
din tabele sau vederi. La o vedere local se poate aduga una sau mai multe vederi externe, obinnd
astfel acces la informaii Visual FoxPro i la informaii ODBC externe din aceeai vedere. O vedere
local poate fi creat fie prin intermediul Proiectantului de Vederi (View Designer), fie cu comanda
CREATE SQL VIEW astfel:.

47

n cadrul Gestionarului de Proiecte (Project Manager), se selecteaz o baz de date, se alege Local
Views, apoi New pentru a deschide fereastra proiectantului de Vederi (View Designer).

sau
- avnd deschis o baz de date, se d comanda CREATE SQL VIEW pentru a afia fereastra
Proiectantului de Vederi.
sau
- se d comanda CREATE SQL VIEW cu clauza AS.
Exemplu:
CREATE SQL VIEW ViewTest AS SELECT * FROM BazaTest!TabTest
Definiia unei vederi poate fi tears din baza de date cu ajutorul Gestionarului de Proiecte
(Project Manager) sau cu comanda DELETE VIEW (nainte de a terge vederea, baza de date din care
face parte trebuie s fie deschis i s fie baza de date curent).
Pentru accesarea datelor stocate pe un server la distan este necesar s se creeze o vedere
extern ceea ce necesit conectarea la sursa de date prin driver-ul ODBC corespunztor. Sursa de date
i conexiunile pot fi definite din Visual FoxPro. Definiia conexiunii va fi stocat n baza de date i va
putea fi referit atunci cnd se creaz vederea extern.
Pentru crearea unei conexiuni se poate proceda astfel:
- n fereastra Gestionarului de Proiecte (Project Manager), se selecteaz Connections, apoi New pentru a
deschide fereastra Proiectantului de Conexiuni (Connection Designer).
sau
- se deschide baza de date i se folosete comanda CREATE CONNECTION pentru a deschide
fereastra Proiectantului de Conexiuni.
sau
- se folosete comanda CREATE CONNECTION, urmat de numele conexiunii.
Exemplu, pentru a crea o conexiune n baza de date BazaTest n vederea conectrii la sursa de date ODBC
ServerRemote, se poate utiliza urmtoarea secven de instruciuni:
OPEN DATABASE BazaTest
CREATE CONNECTION conexiune_01;
DATASOURCE ServerRemote utilizator parola
Visual FoxPro va activa conexiunea atunci cnd se va folosi vederea (pn la activarea conexiunii,
aceasta exist doar ca definiie stocat pe un rnd al fiierului .dbc al bazei de date). La utilizarea vederii
externe, Visual FoxPro va crea, prin intermediul conexiunii indicate n cadrul vederii, o conexiune activ
cu sursa de date extern, dup care trimite ctre aceasta o cerere de date folosind conexiunea activ drept
canal de legtur.
Se poate crea o vedere care indic doar numele sursei de date, nu i denumirea conexiunii, iar la
utilizarea acestei vederi, Visual FoxPro va folosi informaia ODBC pentru a crea i a activa o conexiune cu
sursa de date.
La nchiderea vederii, se nchide i conexiunea.
Pentru afiarea conexiunilor existente se poate utiliza comanda DISPLAY CONNECTIONS.
II.3.8. Formularele n Visual FoxPro
Formularele ofer utilizatorului faciliti pentru vizualizarea i introducerea datelor ntr-o baz
de date, putnd ncorpora o colecie de obiecte care pot rspunde la evenimentele generate de utilizator
sau de sistem i avnd propriile lor proprieti i metode.
Pentru proiectarea formularelor, Visual FoxPro dispune de un Proiectant de Formulare (Form
Designer) puternic, cu ajutorul cruia utilizatorul poate crea:
- Diverse tipuri de obiecte n cadrul formularelor;
- Date asociate obiectelor dintr-un formular;
- Formulare printe i formulare fiu (ierarhii de formulare);
- Formulare multiple care pot fi manipulate mpreun;
- Formulare bazate pe abloane definite de utilizator.

48

Crearea unui formular poate fi realizat astfel:


- cu Gestionarul de Proiecte (Project Manager), se selecteaz Forms i New.
sau
- din meniul File, se selecteaz New, apoi Form i, apoi, New File
sau
- c u comanda CREATE FORM
Odat creat formularul, urmeaz s i se adauge controalele, s se configureze proprietile
controalelor i ale formularului i s se scrie codul pentru evenimente. Tipurile de obiecte care pot fi
adugate unui formular sunt: Controale, Containere, Clase definite de utilizator, Obiecte OLE. Adugarea
controalelor standard Visual FoxPro la un formular se poate face cu ajutorul barei de instrumente
Controls.
Controalele standard Visual FoxPro sunt:
Caset de validare
Hyperlegturi
Caset cu list
Caset de increment
Caset combinat
Imagine
Control OLE asociat
Caset de text
Buton de comand Etichet
Control container OLE Control timer
Caset de editare
Linie
Form geometric
Una dintre cele mai puternice faciliti din Visual FoxPro este posibilitatea crerii de clase
care pot fi folosite n diferite puncte ale aplicaiei. Dup ce au fost create, clasele pot fi adugate la
formulare astfel: din fereastra Gestionarului de Proiecte (Project Manager),se trage clasa n cadrul
containerului.
Exist dou tipuri de controale n formulare i anume: controale care sunt asociate datelor i
controale care nu sunt asociate datelor. Dac utilizatorul interacioneaz cu controalele asociate datelor,
valorile introduse de el sunt stocate n sursa de date, care poate fi un cmp de tabel, de cursor sau o
variabil. Un control poate fi legat de date atribuind valoarea corespunztoare proprietii ControlSource
sau, n cazul grilelor, proprietii RecordSource.
Dac utilizatorul nu configureaz proprietatea ControlSource a unui control, valoarea pe care o
introduce sau pe care o alege din cadrul controlului este pstrat ca valoare a proprietii nefiind salvat pe
hard-disc i nici pstrat n memorie la expirarea duratei de via a controlului.
II.3.9. Crearea meniurilor i a barelor de instrumente
Meniurile pot fi create cu ajutorul Proiectantului de Meniuri (Menu Designer) din Visual
FoxPro.
Pentru generarea meniului, din cadrul meniului Menu, se selecteaz Generate.
Sistemul de meniuri va fi salvat ntr-un fiier cu extensia .mnx, iar programul meniului generat
va fi salvat ntr-un fiier cu extensia .mpr.
De asemenea , pot fi create meniuri contextuale (meniuri care apar la apsarea butonului drept
al mouse-ului pe un control sau obiect)
Pentru crearea unui meniu contextual se procedeaz astfel:
1. n fereastra Gestionarului de Proiecte (Project Manager), se selecteaz fia Other, din care se
selecteaz Menus, apoi New.
2. se selecteaz Shortcut.
Pe ecran va aprea Proiectantul de Meniuri Contextuale (Shortcut Designer) din care procesul de
adugare a articolelor de meniu este identic cu cel de creare a meniurilor.
Pentru fiecare articol de meniu se poate crea un submeniu care s cuprind articole de meniu
suplimentare.
La crearea unui meniu, acesta poate fi salvat ntr-un fiier HTML (Hypertext Markup
Language) folosind opiunea Save As HTML din cadrul meniului File.
De asemenea, un formular poate fi salvat ca fiier HTML astfel:
1. Se deschide meniul FILE
2.. Se selecteaz Save As HTML din cadrul meniului File. (Dac meniul a fost modificat, sistemul va
cere confirmarea salvrii modificrilor).

49

3. Se introduce numele fiierului HTML i apoi se alege Save.


Pentru a crea o bar de instrumente cu butoane care nu apar n barele de instrumente existente,
se poate defini o clas Toolbar personalizat.
Visual FoxPro ofer o clas de baz Toolbar din care se poate deriva clasa dorit la care pot fi
adugate obiecte, apoi se pot defini proprietile, evenimentele i metodele i n final, bara de instrumente
poate fi adugat unui set de formulare.
O bar de instrumente poate fi adugat la un set de formulare, astfel nct bara de instrumente s se
deschid odat cu formularele respective.
II.3.10. Crearea unei aplicaii
Dup crearea tuturor componentelor funcionale ale unei aplicaii, acestea pot fi compilate ntr-o
singur aplicaie care reunete componentele executabile ale proiectului - formulare, rapoarte, meniuri,
programe .a.m.d. - ntr-un fiier unic, ce poate fi distribuit utilizatorilor mpreun cu datele. Pentru a crea
un proiect complet cu ajutorul componentei Application Framework, se poate folosi Vrjitorul Aplicaiei
(Application Wizard). Dup crearea proiectului, se va deschide noul Generator de Aplicaii (Aplication
Builder), pentru a aduga o baz de date, tabele, rapoarte i formulare. Pentru a putea distribui aplicaia,
se va crea fie un fiier aplicaie, cu extensia .app, fie un fiier executabil cu extensia .exe.
Proiectarea unei aplicaii OLE.
Obiecte cum sunt documentele Word i foile de calcul Excel, pot fi legate sau nglobate prin
intermediul controlului OLE Container n cadrul formularelor, i pot fi stocate n cmpurile de tip
General ale unei tabele, urmnd s fie afiate n formulare cu ajutorul controlului OLE Bound.
Diferena dintre legare i nglobare const n locul de stocare a datelor astfel: nglobarea pstreaz datele
n tabel sau n formular, iar legarea refer obiectele din locul unde sunt stocate.
II.4. Soluii client-server
Aplicaiile client/server combin funcionalitatea mediului Visual FoxPro de pe calculatorul
local cu avantajele de stocare i de securitate oferite de un server extern.
Pentru aceasta, se poate crea mai nti un prototip local al aplicaiei, dup care, aplicaia poate
fi transformat pentru un mediu client/server prin intermediul Vrjitorului de Transformare (Upsizing
Wizard).
Se poate utiliza tehnologia SQL de transfer pentru a mbunti aplicaia transformat.
n timp ce vederile externe ofer acces la datele de pe server, tehnologia SQL de transfer
permite transmiterea de comenzi direct ctre server folosind funcia SQLEXEC().
Cele mai performante soluii de creare a unei aplicaii Visual FoxPro client/server se obin
combinnd vederile i tehnologia SQL de transfer.

50

III. SISTEMUL DE GESTIUNE A BAZELOR DE DATE ACCESS


Rezumat. Partea a III-a intitulat Sistemul de gestiune a bazelor de date Access prezint un mediu
de lucru performant cu baze de date. Sunt definite componentele unei baze de date Access, fazele i
procedurile de urmat pentru crearea i exploatarea bazei de date.
Microsoft Access este un sistem pentru crearea i utilizarea bazelor de date de complexitate
medie pentru calculatoare personale, putnd lucra performant cu sute de mii de nregistrri pe un
calculator personal sau n cadrul unei reele de pn la 20 utilizatori care lucreaz simultan cu baza de
date. Programul Access stocheaz toate componentele unei baze de date ntr-un singur fiier pe disc cu
extensia .mdb.
Componentele unei baze de date ACCESS
O baz de date Access poate conine urmtoarele componente:
- Tabele stocheaz datele bazei de date. Fiecare coloan a tabelei este numit cmp i fiecare rnd
al tabelei este numit nregistrare.
- Interogri realizeaz extragerea unor date din una sau mai multe tabele conform unor criterii
precizate de utilizator n vederea vizualizrii i actualizrii datelor din baza de date sau pentru a
crea alte tabele n vederea pstrrii unui instantaneu al informaiilor. O interogare nu are date
proprii i opereaz cu date din tabelele bazei de date.
- Formulare un formular este o fereastr pentru introducerea sau afiarea i editarea datelor. Un
formular poate conine subformulare pentru a afia date asociate unor date din formular i butoane
sau alte obiecte grafice pentru realizarea anumitor aciuni.
- Rapoarte sunt utilizate pentru operaii de ieire n vederea obinerii unor situaii rezultate
din
prelucrarea unor date din baza de date. Pentru includerea selectiv a unor date ntr-un raport sau
pentru realizarea unui raport care folosete date din mai multe tabele va trebui creat mai nti o
interogare i apoi raportul s fie fundamentat pe rezultatele interogrii.
- Comenzi macro permit realizarea unei secvene de aciuni care poate fi ataat unui buton.
- Module stocheaz proceduri i funcii scrise n limbajul Visual Basic pentru tratarea
evenimentelor.
III.1. Crearea unei baze de date.
Microsoft Access furnizeaz dou metode de creare a unei baze de date.
1.
se poate crea o baz de date goal i apoi se adaug tabelele, interogrile,
formularele, rapoartele i alte obiecte necesare.
2.
se poate crea o baz de date folosind Database Wizard.
Indiferent de metoda prin care se creeaz baza de date, ea poate fi oricnd modificat.
III.1.1. Crearea unei baze de date goale
Pentru a crea o baz de date goal se vor executa urmtoarele operaii:
1.
Atunci cnd se deschide o sesiune Microsoft Access, pe ecran se afieaz caseta de dialog
Microsoft Access ce conine opiuni care permit crearea unei baze de date noi sau deschiderea uneia
existente (vezi figura 1). Pentru a crea o baz de date goal (fr a folosi un Wizard), se execut clic pe
opiunea Blank Database i apoi se execut clic pe butonul OK. Dac baza de date este deschis deja
sau caseta de dialog Microsoft Access este nchis, atunci se va executa clic pe butonul New Database
din bara instrumentelor Database. Pe ecran se afieaz caseta de dialog New (vezi figura 2). Se execut
dublu-clic pe pictograma Blank Database din eticheta General

51

Figura1 Caseta de dialog Microsoft Access


Blank Database permite crearea unei baze de date goale
Database Wizard permite crearea unei noi baze de date folosind un wizard
Open an Existing Database permite deschiderea unei baze de date existente.

Figura 2 Caseta de dialog New

52

2.
n caseta de dialog File New Database care apare pe ecran (figura 2.1), se va specifica numele
bazei de date n controlul File name i se alege un dosar pentru baza de date n controlul Save in, apoi
execut clic pe butonul Create. Pe ecran se va deschide fereastra Database (vezi figura 4).

Figura 2.1. Caseta de dialog File New Database


Dup crearea unei baze de date goale se vor defini obiectele (tabelele, formularele,
interogrile, rapoartele etc.) care vor forma baza de date.
III.1.2. Crearea bazei de date folosind Database Wizard
Pentru a crea o nou baz de date folosind un Wizard se vor executa urmtoarele operaii:
Atunci cnd se deschide o sesiune de lucru Access, pe ecran se afieaz caseta de dialog Microsoft
Access ce conine opiuni care permit crearea unei baze de date noi sau deschiderea uneia deja
existente (vezi figura 1). Pentru a crea o baz de date folosind un Wizard, se va executa clic pe
opiunea Database Wizard i apoi se execut clic pe butonul OK. Dac este deja deschis o baz de
date sau caseta de dialog Microsoft Access este nchis, atunci se execut clic pe butonul New
Database din bara instrumentelor Standard. Pe ecran se afieaz caseta de dialog New (vezi figura 2).
Se execut apoi clic pe eticheta Databases.
n eticheta Databases, se execut dublu-clic pe pictograma tipului de baz de date care se va
crea (vezi figura 3). n caseta de dialog File New Database se selecteaz dosarul n care se va salva
baza de date i se va tasta numele acesteia. Se execut clic pe butonul Create pentru a ncepe definirea
noii baze de date. Se vor urma indicaiile din casetele de dialog ce apar pe ecran. La terminarea
operaiei de creare a bazei de date pe ecran se afieaz fereastra Database coninnd obiectele definite
de Wizard (vezi figura 4), pe baza indicaiilor care au fost date n casetele de dialog.

53

Figura 3 Caseta de dialog New avnd selectat eticheta Databases

Figura 4 Obiectele bazei de date de tip Contact Management

Problem propus
S se creeze baza de date FurnizoriClieni prin fiecare din cele dou metode prezentate mai
sus.

54

III.2. Crearea i utilizarea tabelelor


Tabela este o colecie organizat de date despre un anumit subiect, cum ar fi produse, furnizori
etc. Folosind o tabel separat pentru fiecare subiect se elimin duplicarea datelor, asigurndu-se astfel
utilizarea mai eficient a spaiului de stocare i reducerea erorilor la introducerea datelor. Tabelele sunt
organizate n coloane (numite cmpuri) i linii (numite nregistrri sau articole).
III.2.1. Tipuri de date
La alegerea tipului de date pentru un cmp se vor avea n vedere urmtoarele observaii:
Tipul de date admise n camp. Spre exemplu, nu se va putea memora text ntr-un cmp cu tipul de
date Number.
Spaiul alocat pentru memorarea valorilor din cmp
Tipurile de operaii ce se vor execute cu valorile din camp. Spre exemplu, Microsoft Access poate
aduna valorile din cmpurile Number sau Currency, dar nu i valorile din cmpurile Text sau OLE
Object.
Cmpurile de tip Memo sau OLE Object nu pot fi sortate sau indexate.
Cmpurile Memo sau OLE Object nu se pot folosi pentru a grupa articolele n cereri sau rapoarte.
ntr-un cmp Text, numerele sunt sortate ca iruri de caractere (1, 10, 100, 2, 20, 200 s.a.m.d.), nu ca
valori numerice. Pentru a sorta numerele ca valori numerice se folosesc cmpurile Number sau
Currency. De asemenea, multe formate de date calendaristice nu se vor sorta corect dac se introduc
ntr-un cmp Text. Pentru a fi sortate corect se introduc numai
ntr-un cmp de tip Date/Time.
Tipurile de date admise n Microsoft Access, modul lor de folosire i dimensiunea de
memorare sunt prezentate n tabelul T1.
T1. Tipuri de date admise ntr-o baz de date Access
Tipul datei
Utilizare
Text

Spaiul de memorie necesar

Text sau combinaie de text i numere, cum ar fi

Pn la 255 caractere. Microsoft

adresele. De asemenea, numere ce nu necesit

Access memoreaz numai

calcule, cum ar fi numerele de telefon, numerele

caracterele introduse n cmp; nu

de partid sau codurile potale.

se memoreaz caractere spaiu


pentru poziiile nefolosite. Pentru
a controla numrul maxim de
caractere ce pot fi introduse se
seteaz proprietatea FieldSize.

Memo

Texte i numere foarte lungi, cum ar fi notie sau

Pn la 64,000 caractere.

descrieri.
Number

Date numerice folosite pentru calcule

1, 2, 4 sau 8 bytes (16 bytes

matematice, cu excepia calculelor ce impun

numai pentru Replication ID).

valori monetare. Pentru a defini un anumit tip


Number setai proprietatea FieldSize.
Date/Time

Date calendaristice i timpi.

8 bytes.

Currency

Valori monetare. Se va folosi tipul de date

8 bytes.

55

Currency pentru a preveni rotunjirea pe timpul


calculelor. Precizia tipului este de 15 cifre la
partea ntreag i 4 cifre la partea zecimal.
AutoNumber

Numere n secven unic (din 1 n 1) sau

4 bytes (16 bytes numai pentru

aleatoare care sunt automat inserate atunci cnd

Replication ID).

se adaug un articol.
Yes/No

Cmpuri care vor conine numai una din dou

1 bit.

valori, cum ar fi Yes/No, True/False, On/Off.


OLE Object

Obiecte (cum ar fi documente Microsoft Word,

Pna la 1 GB (limitat de spaiul

foi de calcul Microsoft Excel, imagini, sunete

disc).

sau alte date binare) create n alte programe


folosind protocolul OLE, ce pot fi nlnuite sau
ncapsulate ntr-o tabel Microsoft Access.
Trebuie s se foloseasc un cadru de obiect legat
ntr-o machet sau raport pentru a afia obiectul
OLE.
Hyperlink

Legare cu alte obiecte

Lookup

Crearea unui cmp care permite alegerea unei

Acelai spaiu ca i cmpul cheii

Wizard

valori dintr-o alt tabel sau dintr-o list de

primare folosit pentru a executa

valori folosind o caset combo. Alegnd aceast

examinarea, n mod obinuit 4

opiune, se lanseaz un Wizard care dirijeaz

bytes.

crearea listei.
n tabelul T2 sunt prezentate tipurile i mrimea valorilor numerice ce pot fi memorate n
cmpurile de tip Number.
T2. Date de tip Number
Valoarea proprietii
Domeniu
FieldSize
Byte
0 la 255

Precizie

Memorie necesar
1 byte

Integer

-32,768 la 32,767

2 bytes

Long Integer

-2,147,483,648 la 2,147,483,647

4 bytes

Single

-3.402823E38 la 3.402823E38

Double

-1.79769313486232E308 la
1.79769313486232E308

56

4 bytes

15

8 bytes

Crearea unei tabele


n Microsoft Access exist dou metode de a creare a unei tabele i anume:
- se poate crea o tabel goal (empty) pentru a introduce datele;
- se poate crea o tabel folosind datele existente ntr-o alt surs de date.
III.2.2. Crearea unei tabele goale
n Microsoft Access exist patru procedee pentru crearea unei tabele goale, astfel:

Database Wizard pentru a crea ntr-o singur operaie toate tabelele, formularele i rapoartele
necesare ntregii baze de date. Database Wizard creeaz o nou baz de date. Acest procedeu nu
poate fi folosit pentru a aduga noi tabele, formulare sau rapoarte ntr-o baz de date existent.

Table Wizard pentru a alege cmpurile tabelei dintr-o varietate de tabele predefinite, cum ar fi
contacte de afaceri, inventare de cas sau articole medicale.

DataSheet pentru introducerea datelor direct ntr-o foaie de date (datasheet). La salvarea foii de
date Microsoft Access va analiza datele i automat va atribui tipul de date i formatul pentru
fiecare cmp.

Design pentru a defini toate detaliile tabelei.

Indiferent de metoda care se folosete pentru crearea unei tabele, se poate utiliza vederea
Design pentru a modifica descrierea tabelei, prin adugarea de noi cmpuri, stabilirea valorilor
implicite sau crearea mtilor de introducere. n figura 5 este reprezentat fereastra Design view pentru
crearea unei tabele.

Figura 5 Fereastra Design View a unei tabele


57

III.2.3. Crearea unei tabele folosind vederea Design.


Pentru a crea o tabel folosind vederea Design se execut urmtoarele operaii:
1. Se deschide n fereastra Database baza de date n care se creeaz o nou tabel, dac ea nu este
deja deschis. Se poate folosi tasta funcional F11 pentru a comuta n fereastra Database din orice
alt fereastr.
2. Se activeaz eticheta Tables i apoi, fie se selecteaz opiunea Create table in Design view (vezi
figura 5), fie se execut clic pe butonul New (vezi figura 6) i n caseta de dialog New Table, ce
apare pe ecran (vezi figura 6), se va selecta opiunea Design View i apoi se execut clic pe butonul
OK.
3.
n fereastra Design View care apare pe ecran (vezi figura 5) se va defini fiecare cmp al
tabelei.
4.
nainte de a salva tabela, se va defini o cheie primar prin click dreapta pe numele
cmpului corespunztor i selectare opiune Primary key. Cheia primar poate fi stabilit i
ulterior.
5.
Dup definirea structurii tabelei, se execut clic pe butonul Save din bara butoanelor
Standard sau se selecteaz opiunea Save din meniul File i apoi se va tasta un nume pentru tabel.

Figura 6 Caseta de dialog New Table avnd selectat opiunea Design View

58

III.2.4. Definirea cmpurilor


Pentru a defini cmpuri n Design View se vor executa, n general urmtoarele operaii:
1.
Pentru adugarea unui cmp n interiorul unei structuri deja definite, se selecteaz linia sub
care se va aduga noul cmp i apoi se execut clic pe butonul Insert Rows din bara
instrumentelor Standard sau se selecteaz comanda Rows din meniul Insert. Pentru a aduga
cmpul la sfritul structurii se execut clic n coloana Field Name a primei linii goale.
2.
n coloana Field Name se tasteaz numele cmpului, respectnd regulile Microsoft Access
pentru denumirea obiectelor.
3.
n coloana Data Type, se execut clic pe sgeat i se selecteaz tipul de dat dorit.
4.
n coloana Description se poate introduce o descriere a cmpului.
5.
n foaia de configurare Field Properties se stabilesc caracteristicile cmpului (dimensiune,
mesaj de introducere, valoarea implicit, formate de afiare etc.).
Algoritmul prezentat este valabil pentru urmtoarele tipuri de cmpuri: Text, Memo, Number,
Curency, Yes/No, Date/Time, AutoNumber.
Reguli de denumirea obiectelor
Numele unui obiect poate avea maximum 64 caractere i poate include orice combinaie de
litere, cifre, spatii i caractere speciale, exceptnd punctul (.), semnul exclamrii (!), apostroful (`) i
parantezele drepte ([,]). Este indicat s se evite folosirea spatiilor n numele obiectelor i nume foarte
lungi pentru obiecte dac acestea vor fi referite frecvent n expresii sau cod Visual Basic.
Proprietile cmpurilor
Fiecare cmp are un set de proprieti care se pot folosi pentru a personaliza modul n care
datele unui cmp sunt stocate, manipulate sau afiate. Spre exemplu, se poate controla numrul maxim
de caractere ce se pot introduce ntr-un cmp Text stabilind proprietatea FieldSize a acestuia.
Proprietile care exist pentru fiecare cmp depind de tipul de date care a fost selectat pentru cmpul
respectiv.
Pentru a modifica proprietile unui cmp se execut urmtoarele operaii:
1. Se deschide tabela n vederea Design.
2. n partea superioar a ferestrei Design se selecteaz cmpul ale crei proprieti urmeaz a
fi modificate.
3. Se selecteaz proprietatea a crei valoare vrem s-o modificm executnd clic n linia din
dreapta numelui proprietii (n fila General de sub descrierea tabelei).
4. Se repet operaiile 2 i 3 pentru toate proprietile ale cror valori vrem s le modificm.
5. Dup efectuarea tuturor modificrilor se nchide fereastra Design.
n cazul n care pentru un cmp s-a ales tipul Lookup Wizard, atunci se lanseaz un Wizard
prin intermediul cruia putem realiza o list de examinare care afieaz datele dintr-o tabel (sau
interogare) existent care conine deja date, sau dintr-o list de valori prestabilit dup cum este ilustrat
n imagiea de ecran din figura 7. Acest tip de cmp permite selectarea valorilor dintr-o tabel sau list
afiat, n loc ca ele s fie tastate.

Crearea cmpurilor de tip Lookup Wizard


Acest tip de cmp permite selectarea valorilor dintr-o tabel sau list afiat, n loc ca
ele s fie tastate. n cele ce urmeaz se vor prezenta paii de parcurs pentru definirea unui
astfel de cmp pentru fiecare din cele dou situaii.

59

Figura 7. Caset de dialog Lookup Wizard pentru crearea unei liste din valorile unei tabele, (interogri),
sau liste de valori
Crearea unui cmp pentru examinarea i afiarea valorilor dintr-o tabel sau interogare
Pentru a crea un cmp care s afieze valorile dintr-o tabel sau interogare se execut
urmtoarele operaii:
1.

n coloana Data Type a cmpului, se execut clic pe sgeat i selecteaz Lookup Wizard
din lista afiat.

2.

n prima caset de dialog Lookup Wizard (vezi fihgura 7) se selecteaz opiunea I will the
lookup column to look up the values n a table or query (doresc o coloan de examinare pentru a
vizualiza valorile dintr-o tabel sau interogare) i apoi se execut clic pe butonul Next pentru a
trece la urmtoarea caset de dialog.

3.

n a doua caset de dialog Lookup Wizard (vezi figura 8) se selecteaz tabela (interogarea)
care va sta la baza listei de examinare i care va trebui s existe i s conin date n cmpul
respectiv. Se execut clic pe butonul Next pentru a trece la urmtoarea caset de dialog.

4.

n a treia caset de dialog Lookup Wizard (vezi figura 9) se vor selecta cmpurile din
tabela examinat a cror valori se vor afia n lista de examinare. Lista de examinare va conine
cmpurile ce se gsesc n lista Selected Fields. Pentru a muta un cmp din lista Available Fields n
lista Selected Field se va selecta cmpul n lista Available Fields i apoi se va executa clic pe
butonul >. Dup selectarea cmpurilor pentru lista de examinare se va executa clic pe butonul Next
pentru a trece la urmtoarea caset de dialog.

5.

n a patra caset de dialog Lookup Wizard (vezi figura 10) se stabilete aspectul listei de
examinare. Se recomand activarea casetei de validare Hide key column pentru ca lista de
examinare s nu afieze i coloana care conine cheia de legtur. Pentru a trece la urmtoarea
caset de dialog se execut clic pe butonul Next.

6.

n a cincea caset de dialog (vezi figura 11) se selecteaz coloana pentru preluare.

60

7.

n a asea caset de dialog Lookup Wizard (vezi figura 12) se modific, dac este
necesar, numele cmpului de examinare i caseta de validare Display Help on customizing the
lookup column (afiarea Help-ului la personalizarea coloanei de examinare). Se execut clic pe
butonul Finish pentru a termina crearea cmpului de examinare.

Figura 8. A doua caset de dialog Lockup Wizard (pentru selectare tabel sau interogare)

Figura 9. A treia caset de dialog Lockup Wizard (pentru selectare cmpuri pentru list)
61

Figura 10. A patra caset de dialog Lockup Wizard (pentru aspectul listei de examinare)

Figura 11. A cincea caset de dialog Lockup Wizard (pentru selectare coloan pentru preluare)

62

Figura 12. A asea caset de dialog Lockup Wizard


Crearea unui cmp pentru examinarea i afiarea unei liste de valori
Pentru a crea o list de valori se execut urmtoarele operaii:
1.

n coloana Data Type a cmpului de examinare, se execut clic pe sgeat i selecteaz


Lookup Wizard din lista afiat (vezi figura 13).

2.

n prima caset de dialog Lookup Wizard (vezi figura 14) se selecteaz opiunea I will
type n the values that I want (voi tasta valorile pe care le doresc) i apoi se execut clic pe
butonul Next pentru a trece la urmtoarea caset de dialog.

3.

n a doua caset de dialog Lookup Wizard (vezi figura 15) se va stabili numrul de coloane
al listei i se vor introduce valorile listei. Se execut clic pe butonul Next pentru a trece la
urmtoarea caset de dialog.

4.

n a treia caset de dialog Lookup Wizard (vezi figura 16) se modific, dac este necesar,
numele cmpului de examinare i caseta de validare Display Help on customizing the lookup
column (afiarea Help-ului la personalizarea coloanei de examinare). Se execut clic pe butonul
Finish pentru a termina crearea cmpului de examinare.

63

Figura 13. Selectare tip de cmp Lookup Wizard

Figura 14. Caset de dialog Lookup Wizard pentru crearea unui cmp pentru afiarea unei listede
valori
64

Figura 15. A doua caset de dialog Lockup Wizard pentru crearea unei liste de valori

Figura 16. A treia caset de dialog Lockup Wizard pentru crearea unei liste de valori

65

Problem propus. n baza de date FurnizoriClieni se creaz urmtoarele tabele:


PRODUSE (catalog de produse)
Cmp
Codp
Denp
Desp

Semnificaie
Cod produs
Denumire produs
Descriere produs

Tip dat
Number, Integer
Text
Hyperlink

Dimensiune Observaii
4
Cheie primar
20
Refer document
corespunztor

STOCURI (stocurile de produse pe depozite)


Cmp
Codp
CodDep
Ump
Cant
Pret

Semnificaie
Cod produs

Tip dat
Number, Integer
Lockup Wizard
Cod depozit
Text
Unitate de msur Lockup Wizard
produs
Cantitate
Number, Integer
Pre unitar
Number,
LongInteger

Dimensiune Observaii
4
Lockup Wizard cu
tabela PRODUSE
2
8
Creare i utilizare
list de valori
4
8

FURNIZORI (catalog de furnizori)


Cmp
Codf
Denf
Adresaf

Semnificaie
Cod furnizor
Denumire furnizor
Adresa furnizor

Tip dat
Number, Integer
Text
Text

Dimensiune Observaii
4
Cheie primar
30
25

OFERTE (oferte de produse de la furnizori)


Cmp
Codf
Codp
Ump
Pret
Datao
Oferta

Semnificaie
Cod furnizor

Tip dat
Number, Integer
Lockup Wizard
Number, Integer
Cod produs
Lockup Wizard
Unitate de msur Lockup Wizard
produs
Pre unitar
Number,
LongInteger
Data ofertei
Date
Oferta furnizor
Hyperlink

Dimensiune Observaii
4
Lockup Wizard cu
tabela FURNIZORI
4
Lockup Wizard cu
tabela PRODUSE
8
Creare i utilizare
list de valori
8
8
Refer document
corespunztor

CLIENTI (catalog de clieni)


Cmp
Codc
Denc
Adresac

Semnificaie
Cod client
Denumire client
Adresa client

Tip dat
Number, Integer
Text
Text
66

Dimensiune Observaii
4
Cheie primar
30
25

VANZARI (vnzrile de produse pe clieni)


Cmp
Codc
Codp
Ump
Cant
Pret
Datav

Semnificaie
Cod furnizor

Tip dat
Number, Integer
Lockup Wizard
Number, Integer
Cod produs
Lockup Wizard
Unitate de msur Lockup Wizard
produs
Cantitate
Number, Integer
Pre unitar
Number,
LongInteger
Data vnzrii
Date

Dimensiune Observaii
4
Lockup Wizard cu
tabela CLIENTI
4
Lockup Wizard cu
tabela PRODUSE
8
Creare i utilizare
list de valori
4
8
8

n imaginea de ecran din figura 17 sunt evideniate tabelele bazei de date FurnizoriClienti i
este reprezentat descrierea tabelei Produse.
n mod asemntor i conform precizrilor din tabelele de mai sus, se vor defini i celelalte
tabele n baza de date i se vor ncrca date pentru diverse produse, preuri, furnizori, clieni.
Pentru modificarea structurii unei tabele se va deschide tabela n modul Design.
Pentru preleare sau actualizare date ntr-o tabel se va deschide tabela n modul Open.

Figura 17. Baza de date FurnizoriClienti. Descrierea tabelei Produse.


67

III.3. Crearea i utilizarea interogrilor


Interogrile se folosesc pentru a vizualiza, modifica i analiza datele n diverse moduri. De
asemenea, ele pot fi utilizate ca surs de articole pentru formulare i rapoarte. Pentru a crea un raport n
care sunt utilizate anumite date dintr-o tabel sau date din mai multe tabele se va crea mai nti
interogarea corespunztoare i apoi se va defini raportul utiliznd acea interogare.
III.3.1. Tipuri de interogri
Exist mai multe tipuri de interogri, dar cel mai utilizat tip este interogarea de selecie.
Interogarea poate fi creat folosind un Wizard sau prin proiectare n vederea Design a interogrii. n
vederea Design, se specific datele cu care se va lucra prin adugarea tabelelor sau interogrilor ce
conin acele date i se completeaz celulele din reeaua de proiectare.
Problem rezolvat
n cele ce urmeaz este ilustrat modul de definire a unei interogri de selecie pentru situaia
stocurilor de produse utiliznd tabelele Produse, Stocuri.
- Se selecteaz Qeries i apoi New, iar din caseta New Query se selecteaz modul Design View (vezi
figura 18) i se apas butonul OK. Va apare ecranul din figura 19.
- Din caseta Show Table se selecteaz tabela Produse i se apas butonul Add, apoi se selecteaz tabela
Stocuri i se apas butonul Add i apoi se apas butonul Close. Va apare ecranul din figura 20 pentru
definirea cmpurilor interogrii ilustrate n imaginea de ecran din figura 21. Pentru salvare interogare
se nchide fereastra Query i se tasteaz numele interogrii Situatia Stocurilor. Pentru vizualizarea
datelor corespunztoare interogrii, se selecteaz interogarea i se deschide n modul Open (rezultatul
este ilustrat n figura 22.

Figura 18. Creare interogare n modul Design View.

68

Figura 19. Selectare tabele pentru creare interogare.

Figura 20. Caseta Query pentru definirea cmpurilor interogrii.


69

Figura 21. Definirea interogrii Situatia Stocurilor.

Figura 22. Vizualizarea datelor corespunztoare interogrii Situatia Stocurilor


70

Probleme propuse
S se creeze interogrile corespunztoare situaiei ofertelor de produse i situaiei vnzrilor de
produse conform specificaiilor de mai jos.
Situaia ofertelor
Cmp
Tabela

Codf
Furnizori

Denf
Furnizori

Adresaf
Furnizori

Codp
Produse

Denp
Produse

Ump
Oferte

Pret
Oferte

Datao
Oferte

Situaia vnzrilor
Cmp
Tabela

Codc
Clienti

Denc
Clienti

Adresac
Clienti

Codp
Produse

Denp
Produse

Ump
Vanzari

Cant
Vanzari

Pret
Vanzari

Valoare
Cant*Pret

Datav
Vanzari

Pentru vnzri se va crea i o interogare cu parametru pentru situaia vnzrilor n luna ..., unde
luna se va comunica drept parametru de interogare.
III.4. Crearea i utilizarea formularelor.
n Microsoft Access formularele se pot folosi pentru a crea:
- un ecran pentru introducerea datelor n una sau mai multe tabele;
- un ecran tip panou de comutatoare pentru a deschide alte formulare sau rapoarte;
- o caset de dialog care s solicite de la utilizator informaii suplimentare necesare
executrii unei aciuni.
Majoritatea informaiilor dintr-un formular provin dintr-o surs de informaii, dar exist i
informaii care se introduc la proiectarea machetei. Legtura dintre formular i sursa de date se
realizeaz prin intermediul unor obiecte grafice, numite controale. Cele mai utilizate controale sunt
casetele de text, cu ajutorul crora se pot afia fie informaiile dintr-o surs de date, fie rezultatele
evalurii unei expresii.
Un formular poate fi creat n dou moduri i anume:
- n modul Design view;
- utiliznd un wizard.
Un wizard poate fi utilizat n modurile (figura 23, caseta New Form care apare la apsarea
butonului New din fereastra Database):
Form Wizard;
AutoForm: Columnar;
AutoForm: Tabular;
Chart Wizard;
Pivot Table Wizard.
Odat creat, un formular poate fi modificat i n acest sens se deschide formularul n modul
Design pentru a-l modifica aa cum se dorete.
Pentru crearea unui singur formular simplu, pe o singur coloan, se poate utiliza opiunea
AutoForm. Pentru ca formularul s poat afia cmpurile tabelei (interogrii) selectate, trebuie
adugate controale (casete de text, casete combinate, liste etc.) n macheta acestuia. Pentru a putea
aduga controale este necesar ca pe ecran s existe caseta cu instrumente Toolbox i fereastra List
Field. Dac aceste obiecte nu sunt afiate pe ecran, atunci va trebui ca din meniul View s se selecteze
opiunile Toolbox, pentru a afia caseta instrumentelor Toolbox, respectiv Field List pentru a afia lista
cmpurilor. Dup adugarea controalelor i stabilirea proprietilor formularului, se nchide formularul
i i se d un nume.
Subformulare
Subformularul este un formular n interiorul altui formular. Formularul primar este denumit
formular principal (main form), iar formularul din interiorul formularului este numit subformular.

71

Combinaia formular/subformular este referit adeseori ca formular ierarhic, formular principal/detaliu


sau formular printe/copil.
Subformularele sunt eficiente n special pentru prezentarea datelor din tabele sau interogri cu
relaii 1m (one-to-many). Spre exemplu, se poate crea un formular cu un subformular pentru a
prezenta datele din tabelele Produse i Stocuri. Datele din tabela Produse reprezint partea 1 din
relaie, iar datele din tabela Stocuri reprezint partea m din relaie fiecare produs putnd avea mai
multe nregistrri n tabela Stocuri.
Formularul principal i subformularul din acest tip de formulare sunt nlnuite, astfel nct
subformularul afieaz numai nregistrrile care sunt corelate cu nregistrarea curent din formularul
principal. Spre exemplu, atunci cnd formularul principal afieaz produsul Tastatur, subformularul
afieaz numai stocurile pentru acest produs.
Atunci cnd se folosete un formular cu un subformular pentru a introduce noi nregistrri,
Microsoft Access salveaz nregistrarea curent din formularul principal cnd se intr n subformular.
Aceasta asigur ca nregistrrile din tabela m (mai muli) s aib o nregistrare n tabela 1 (unul) cu
care s se coreleze. De asemenea, acesta salveaz automat fiecare nregistrare adugat n subformular.
Subformularul poate fi afiat ca o foaie de date, sau ca un formular singular sau continuu.
Formularul principal poate fi afiat numai ca un formular singular.
Formularul principal poate
avea oricte subformulare, dac se plaseaz fiecare subformular pe formularul principal. De asemenea,
se pot realiza cel mult dou nivele de subformulare. Aceasta nseamn c poate exista un subformular
ntr-un formular principal i un alt subformular n interiorul subformularului, de nivel 1. Spre exemplu,
poate exista un formular principal care afieaz clienii, un subformular care prezint produsele i un
alt subformular care afieaz vnzrile pentru acele produse i clieni.
Una din metodele utilizate pentru crearea unui subformular n cadrul unui formular const n
efectuarea urmtoarelor operaii:
- se creaz un formular principal i un subformular i se salveaz fiecare separat;
- se deschide formularul principal n modul Design;
- se trage cu mouse-ul subformularul din fereastra Database peste formularul principal.
Problem rezolvat
n figurile 24,,29 sunt ilustrai paii parcuri pentru crearea formularului principal Produse
utiliznd modul Form Wizard. Analog se procedeaz pentru crearea subformularului Stocuri. n figura
30 este ilustrat rezultatul tragerii subformularului Stocuri peste formularul Produse. Deschiderea
formularului Produse n modul Open permite vizualizarea i actualizarea att a datelor din tabela
Produse ct i a datelor corespunztoare din tabela Stocuri aa cum este ilustrat n imaginea de ecran
din figura 31.
Probleme propuse.
Utiliznd metoda prezentat mai sus, s se creeze urmtoarele formulare:
- formularul Furnizori cu subformularul Oferte;
- formularul Clieni cu subformularul Vnzri.

72

Figura 23. Fereastra Database. Modaliti de creare a unui formular (Caseta New Form).

Figura 24. Creare formular Produse (pasul 1)

73

Figura 25. Creare formular Produse (pasul 2)

Figura 26. Creare formular Produse (pasul 3)


74

Figura 27. Creare formular Produse (pasul 4)

Figura 28. Creare formular Produse (pasul 5)


75

Figura 29. Vizualizare formular Produse.

Figura 30. Depunere subformular Stocuri n formular Produse.


76

Figura 31. Utilizare formular Produse pentru vizualizare i actualizare date n tabelele
Produse i Stocuri.

III.5. Crearea i vizualizarea rapoartelor


Rapoartele au n vedere prelucrarea unor date din baza de date pentru obinerea unor situaii ce
urmeaz a fi tiprite sau afiate pe ecran la cererea utilizatorului. Spre deosebire de formulare care pe
lng vizualizarea datelor permite i actualizarea acestora, rapoartele realizeaz interogarea i
prelucrarea datelor din baza de date nefiind posibil modificarea datelor.
Exist dou modaliti de creare a rapoartelor i anume (figura 32):
-

creare raport n modul Design view;


creare raport utiliznd un wizard.

Un wizard poate fi utilizat n modurile (figura 32, caseta New Report care apare la apsarea
butonului New din fereastra Database):
-

Report Wizard;
AutoReport: Columnar:
AutoReport: Tabular;
Chart Wizard;
Label Wizard.

77

Figura 32. Fereastra Database. Modaliti de creare a unui raport (Caseta New Report).
Problem rezolvat
n cele ce urmeaz se vor prezenta paii de parcurs pentru realizarea unui raport n modul
Report Wizard.
1. n caseta de dialog Choose the table or query se selecteaz tabela sau interogarea pe care se va
fundamenta raportul i se apas butonul OK (figura 33, Situaia Stocurilor).
2. Selectare cmpuri pentru raport din lista Available Fields n lista Selected Fields folosind
butoanele > sau >> , dup care se apas butonul Next (figura 34).
3. Selectare mod pentru vizualizare date, dup care se apas butonul Next (figura 35).
4. Selectare nivele de grupare date n raport, dup care se apas butonul Grouping Options pentru a
preciza modul de grupare, apoi se apas butonul Next (figura 36).
5. Precizare criterii de ordonare date n raport, dup care se apas butonul Sumary Options pentru
precizarea operaiilor de efectuat asupra grupurilor de nregistrri (figura 37).
6. Precizare operaii de efectuat asupra grupurilor de nregistrri, dup care se apas butonul OK
(figura 38) i apoi butonul Next.
7. n casetele Layout, Orientation, se selecteaz forma de realizare a raportului (figura 39) i apoi se
apas butonul Next.
8. Se selecteaz stilul de realizare a raportului, apoi se apas butonul Next (figura 40).
9. Precizare titlu raport, dup care se apas butonul Finish (figura 41).
n figura 42 este vizualizat raportul obinut. Pentru modificarea raportului, acesta trebuie
deschis n modul Design i apoi se execut modificrile dorite.

78

Probleme propuse
Dup exemplul prezentat, s se creeze urmtoarele rapoarte utiliznd modul Report Wizard:
Situaia ofertelor de produse pe produs
Cod produs Denumire produs
Cod furnizor Denumire furnizor Adresa furnizor Ump Pret Data ofertei
.
..
Situaia ofertelor de produse pe furnizor
Cod furnizor Denumire furnizor Adresa furnizor
Cod produs Denumire produs Ump Pret Data ofertei

.......
Situaia vnzrilor de produse pe produs
Cod produs Denumire produs
Cod client Denumire client Adresa client Ump Cantitate Pret Valoare Data vnzrii
.
Total produs
xxxxxxx
xxxxxx

Total general
xxxxxx
Situaia vnzrilor de produse pe client
Cod client Denumire client Adresa client
Cod produs Denumire produs Ump Cantitate Pret Valoare Data vnzrii

Total client
xxxxxx
.
Total general
xxxxxx
Teste de verificare
1. La nivel fizic o baz de date Access este:
a) un ansamblu de fiiere ce conin obiectele bazei de date
c) un fiier cu extensia .mdb
d) un fiier cu extensia .xls

b) un fiier cu extensia .acc


e) un fiier .dbf pt. fiecare tabel

2. Enumerai principalele componente ale unei baze de date Access


3. Pentru crearea unei tabele n ACCESS din fereastra ACCESS se selecteaz:
a) Table, Design
b) Table, New
c) Table, Open
d) Forms, Design
4. Pentru crearea unui raport n ACCESS care folosete date din mai multe tabele se va proceda astfel:
a) Se va crea cte un formular pentru fiecare tabel
b) Se proiecteaz raportul n modul Design view cu specificarea tabelelor utilizate
c) Se creaz o interogare corespunztoare raportului i apoi se proiecteaz raportul utiliznd acea
interogare

79

Figura 33. Modul Report Wizard Selectare tabel sau interogare pentru raport .

Figura 34. Modul Report Wizard Selectare cmpuri pentru raport .


80

Figura 35. Modul Report Wizard. Selectare mod (tabel) dup care vor fi vizualizate datele.

Figura 36. Modul Report Wizard. Selectare nivele de grupare date n raport.
81

Figura 37. Modul Report Wizard. Precizare criterii de ordonare date n raport.

Figura 38. Modul Report Wizard. Precizare operaii de efectuat asupra grupurilor de nregistrri.
82

Figura 39. Modul Report Wizard. Precizare format de realizare raport.

Figura 40. Modul Report Wizard. Selectare stil de realizare raport.


83

Figura 41. Modul Report Wizard. Precizare titlu raport.

Figura 42. Modul Report Wizard. Vizualizare raport Situaia stocurilor de produse.
84

IV LIMBAJUL SQL
Rezumat. Este prezentat limbajul SQL pentru crearea, administrarea i interogarea bazelor de date
relaionale. Implementat n majoritatea produselor software moderne de baze de date, limbajul SQL
este larg utilizat n arhitecturi cu baze de date client / server, sisteme de baze de date distribuite,
pentru accesarea bazelor de date n reele de calculatoare, ct i pentru interogarea bazelor de date
pe un singur calculator personal. De asemenea, sunt prezentate extensiile limbajului privind facilitile
de orientare spre obiecte n cadrul standardului SQL3, precum i o serie de funcii privind procesarea
analitic a datelor.
Limbajul SQL (Structured Query Language) a fost realizat n cadrul firmei IBM ca limbaj
de interogare al SGBD System R i ulterior a devenit unul din cele mai rspndite limbaje pentru
SGBD-urile relaionale. Limbajul SQL, ca limbaj de interogare a bazelor de date relaionale, este
construit pe baza a dou formalisme abstracte i anume:
1. Algebra relaional prin care interogrile sunt exprimate prin aplicarea unor operatori unari sau
binari care constituie primitive ce acioneaz asupra relaiilor, rezultatul interogrilor fiind tot relaii,
ceea ce permite asocierea i imbricarea acestor operatori pentru a forma interogri complexe.
Operatorii algebrei relaionale se mpart n dou grupe i anume:
- operaii pe mulimi (Reuniunea, Intersecia, Diferena, Produsul cartezian)
- operatori relaionali speciali (Selecia, Proiecia, Cuplarea (JOIN), Diviziunea)
2. Calculul relaional prin care interogrile descriu mulimea tuplelor rezultat prin specificarea unui
predicat (condiie) care trebuie satisfcut de aceste tuple.
ncepnd din 1986 limbajul SQL a devenit standard ANSI pentru limbajele de interogare ale
bazelor de date relaionale fiind utilizat att n cadrul unor SGBD-uri complexe cum ar fi SGBD
ORACLE (liderul mondial n domeniul bazelor de date), ct i n cadrul unor SGBD-uri de
complexitate redus cum ar fi cele din familia xBase (Dbase IV, FoxPro). Standardul SQL utilizat pn
la nceputul anului 2000 este cel realizat n 1992 i cunoscut sub numele de SQL92 sau SQL2.
Noul standard SQL3 lansat n 1999 are n vedere o serie de extensii fa de SQL2 dup cum
urmeaz:
- Faciliti orientate obiect posibilitatea de definire de ctre utilizator a tipurilor abstracte de date
care s permit descrierea de metode, identitatea obiectelor, subtipuri i motenire, polimorfism
etc.
- Structuri de control pentru a conferi limbajului completitudine de calcul (IF, FOR, WHILE, etc.)
pentru a deveni un limbaj de sine stttor a crui putere de expresie s nu mai fie limitat la nivelul
limbajelor relaionale.
- Faciliti pentru exprimarea prelucrrilor recursive.
- Faciliti de comunicare n reea.
- Faciliti de prelucrare distribuit (mecanisme pentru crearea, memorarea i execuia procedurilor
la nivelul serverelor de date stored procedures).
- Faciliti multimedia.
- Faciliti pentru tratarea timpului n bazele de date.
Modelul relaional al datelor propus de Codd, relativ la manipularea datelor, a fost iniial
orientat exclusiv pe problema regsirii datelor prin operaia de interogare a bazelor de date, ulterior
(SQL2, 1990) fiind avute n vedere i problemele introducerii actualizrii i eliminrii datelor.
IV.1. Manipularea datelor (comenzi DML)
IV.1.1. Interogarea bazelor de date
Interogarea bazelor de date n limbajul SQL se realizeaz cu ajutorul unei singure instruciuni
i anume instruciunea SELECT avnd urmtoarea sintax:
SELECT [DISTINCT] <lista atribute>|*
FROM <lista relaii>
[WHERE <condiie>]
85

[GROUP BY <lista atribute de grupare>]


[HAVING <condiie>]
[ORDER BY <atribut1 de ordonare> [ASC]|DESC,]
[UNION <fraz SELECT>]
<lista atribute> este o list ce conine nume de atribute (cmpuri) sau expresii construite
utiliznd atribute, separate prin caracterul , i care fac parte din relaiile (tabelele) enumerate n <lista
relaii> din clauza FROM. Numele fiecrui atribut sau expresii din <lista atribute> va fi afiat n capul
de tabel ce reprezint rezultatul interogrii, fiecare atribut sau expresie putnd primi un alias folosind
specificarea AS <alias>.
(Caracterul * specific faptul c se extrag toate atributele tabelei precizate n clauza FROM).
Clauza DISTINCT precizeaz faptul c n relaia rezultat nu pot aprea duplicate (tuple
identice).
Clauza WHERE precizeaz condiiile de interogare (condiii care trebuie s fie satisfcute de
tuplele interogate, condiii de cuplare relaii (JOIN, relaii ntre tabele). n clauza WHERE pot fi
utilizai operatori logici (AND, NOT, OR) , predicate (IN, LIKE, BETWEEN, EXISTS, ALL, ANY) ,
operatori aritmetici (+, -, **, /, *) operatori de comparare (=, #,<, >, <=, >=, <>), parantezele ( ) pentru
schimbarea ordinii de prioritate a operaiilor, operatorilor, funcii i alte subinterogri SELECT, pentru
construirea de expresii pe care trebuie s le ndeplineasc tuplele ce constituie rezultatul interogrii.
Predicatul IN permite specificarea unei liste pentru domeniul de cutare pentru un atribut, iar predicatul
BETWEEN permite specificarea unui interval pentru domeniul de cutare a valorilor unui atribut, fiind
echivalent cu o condiie de forma
<atribut> >= <limita inf. interval> AND <atribut> <= <limita sup. interval>
Exemple:
Fie tabela Persoane(Nrcrt,Nume,Prenume, Datan, Sexul, Adresa)
Selectarea tuturor nregistrrilor din tabela Persoane pentru care primele 7 caractere din cmpul Adresa
sunt Suceava sau Rdui se realizeaz cu comanda:
SELECT * FROM Persoane
WHERE SUBSTR(Adresa,1,7) IN (Suceava,Rdui)
Interogarea de mai sus este echivalent cu interogarea:
SELECT * FROM Persoane WHERE SUBSTR(Adresa,1,7) = Suceava
OR SUBSTR(Adresa,1,7) = Rdui
Selectarea tuturor nregistrrilor din tabela Persoane pentru care data naterii este cuprins ntre
01/01/72 i 01/01/82 se realizeaz astfel:
SELECT * FROM Persoane WHERE Datan BETWEEN {01/01/72} AND {01/01/82}
Interogarea de mai sus este echivalent cu interogarea:
SELECT * FROM Persoane WHERE Datan >= {01/01/72} AND Datan <= {01/01/82}
Predicatul LIKE permite selecia irurilor de caractere care conin anumite caractere specificate prin
intermediul unei mti definite cu ajutorul unor caractere speciale (%, _ n dBASE IV, FoxPro,
ORACLE, *, ? n INFORMIX)
Exemple:
SELECT * FROM Persoane WHERE Nume LIKE %a
(selecteaz toate nregistrrile din tabela Persoane pentru care valorile atributului Nume se termin cu
litera a).
SELECT Nume,Prenume,Datan FROM Persoane WHERE Nume LIKE A%u
(selecteaz valorile atributelor Nume, Prenume, Datan pentru toate nregistrrile din tabela Persoane
pentru care prima liter din Nume este A iar ultima liter este u).
SELECT Nume FROM Persoane WHERE Nume LIKE _o%
(selecteaz valorile atributului Nume pentru toate nregistrrile din tabela Persoane pentru care prima
liter din Nume este orice liter, a doua liter din Nume este litera o i ncepnd din poziia a treia
numele poate conine orice litere.)

86

Predicatele ALL, ANY, EXISTS se utilizeaz pentru interogri ce conin subinterogri, n


vederea verificrii anumitor condiii ce trebuie ndeplinite ntre rezultatele interogrii i rezultatele
subinterogrii.
Clauza GROUP BY realizeaz gruparea tuplelor unei relaii pe baza valorilor unui atribut sau
grup de atribute i genereaz o singur tupl pentru fiecare grup de tuple avnd aceeai valoare pentru
atributele care definesc grupul. Atributele care definesc grupul trebuie obligatoriu s se regseasc n
lista atributelor interogate <lista atribute>. De asemenea asupra unor atribute pot fi aplicate funcii
agregat:
AVG(<atribut>) media valorilor atributului specificat ca parametru, pe grup
SUM(<atribut>) suma valorilor atributului specificat ca parametru, pe grup
MAX(<atribut>) maximum valorilor atributului specificat ca parametru, pe grup
MIN(<atribut>) minimum valorilor atributului specificat ca parametru, pe grup
COUNT(<atribut>) numrul nregistrrilor pe grupare dup <atribut>
Observaie. <atribut> poate fi fie un atribut, fie o expresie definit utiliznd atribute ale tabelei.
Clauza HAVING, opiune a clauzei GROUP BY, este o form special a clauzei WHERE
ntruct se aplic unor grupuri de tuple (i nu unor tuple) definite de clauza GROUP BY.
Exemple:
Fie tabela Stoc_Prod(CodDep,CodProd,Cant,Pret)
SELECT CodDep,SUM(Cant*Pret) AS Valoare,COUNT(CodDep) AS Contor
FROM Stoc_Prod GROUP BY CodDep
(Calculeaz suma produselor Cant*Pret pentru toate tuplele avnd aceeai valoare n cmpul CodDep
i numrul nregistrrilor din fiecare grup definit de cmpul CodDep i afiseaz rezultatele sub form
de tabel avnd coloanele CodDep, Valoare, Contor)
SELECT CodDep,CodProd,MAX(Pret) FROM Stoc_Prod
GROUP BY CodProd HAVING MAX(Pret) < 150000
(selecteaz pentru fiecare grup de nregistrri avnd aceeai valoare n cmpul CodProd, nregistrarea
cu preul maxim mai mic dect 150000)
Clauza ORDER BY permite precizarea ordinii de afiare a datelor astfel:
ORDER BY <nume atribut 1> [ASC]|DESC,<nume atribut 2>[ASC]|DESC,
Exemplu:
SELECT * FROM Persoane ORDER BY Datan DESC,Prenume
(afieaz toate nregistrrile din tabela Persoane n ordine descresctoare dup data naterii i n cadrul
aceleiai date a naterii cresctor dup prenume)
Clauza UNION permite obinerea rezultatului a dou sau mai multe interogri printr-o
singur instruciune SELECT.
Exemplu:
SELECT CodDep,CodProd,Cant FROM Stoc_Prod WHERE CodDep = Dep01
UNION
SELECT CodDep,CodProd,Cant FROM Stoc_Prod WHERE Cant >= 100
(selecteaz tuplele (CodDep,CodProd,Cant) din tabela Stoc_Prod pentru toate nregistrrile pentru care
CodDep = Dep01, la care adaug tuplele (CodDep,CodProd,Cant) din tabela Stoc_Prod pentru toate
nregistrrile pentru care Cant >= 100).
Pentru a nu se elimina tuplele duplicat trebuie specificat UNION ALL.
Pentru a schimba ordinea de afiare a tuplelor extrase se poate utiliza clauza ORDER BY aplicat doar
relaiei finale i nu asupra fiecrei fraze SELECT.
Regsirea datelor din dou sau mai multe relaii.
Interogarea datelor din dou sau mai multe tabele (relaii) presupune existena unor cmpuri
comune pentru realizarea operaiei de cuplare (operatorul JOIN). n fraza SELECT operaia de cuplare
este definit n clauza WHERE sub forma:
<nume tabela1>.<cheie1> = <nume tabela2>.<cheie2>

87

(unde <cheie1>, <cheie2> reprezint cmpurile ce identific nregistrrile corespondente n cele dou
tabele).
Pentru exemplificare pe lng tabela Stoc_Prod mai considerm tabela Produse(CodProd,
DenProd, UmProd).
SELECT Produse.CodProd,DenProd,UmProd,Cant,Pret
FROM Produse,Stoc_Prod
WHERE Produse.CodProd = Stoc_Prod.CodProd
(extrage toate tuplele (CodProd,DenProd,UmProd,Cant,Pret) pentru care valoarea atributului CodProd
din tabela Produse este egal cu valoarea atributului CodProd din tabela Stoc_Prod ).
n lipsa clauzei WHERE se vor extrage toate combinaiile posibile ntre tuplele celor dou tabele
(produsul cartezian).
Fiecrei tabele i se poate atribui un alias astfel nct fraza de mai sus este echivalent cu fraza:
SELECT A.CodProd,DenProd,UmProd,Cant,Pret
FROM Produse A,Stoc_Prod B WHERE A.CodProd = B.CodProd
n anumite situaii poate fi necesar corelarea (cuplarea) unei relaii (tabele) cu ea nsi. Spre
exemplu dac presupunem c n tabela Stoc_Prod unele produse pot apare de mai multe ori cu preuri
diferite i ne intereseaz poziiile cu preul minim, formulm urmtoarea interogare:
SELECT A.CodProd,A.Cant,A.Pret FROM Stoc_Prod A WHERE A.Pret =
(SELECT MIN(B.Pret) FROM Stoc_Prod B WHERE A.CodProd = B.CodProd)
Pentru rezolvarea unor astfel de probleme s-au utilizat instruciuni SELECT imbricate care vor
fi tratate n detaliu n cele ce urmeaz.
Instruciuni SELECT imbricate
Limbajul SQL ofer posibilitatea construirii unor interogri complexe prin includerea n clauza
WHERE a unei instruciuni SELECT, a altei instruciuni SELECT (numit sub-interogare sau inner)
astfel:
SELECT <lista atribute> FROM <lista relaii> WHERE <condiie> (<sub-interogare>)
La rndul ei sub-interogarea poate conine n clauza WHERE o alt instruciune SELECT
obinnd astfel o interogare complex constituit din instruciuni SELECT imbricate pe un numr
oarecare de nivele.
Instruciunea SELECT interioar genereaz valori pentru condiia de cutare a instruciunii
SELECT exterioare care o conine (numit i outer).
O sub-interogare poate returna o singur valoare, sau poate returna mai multe valori.
n ce privete ordinea de evaluare a interogrilor pot exista :
- Sub-interogri simple - n care interogarea interioar este evaluat prima,
independent de interogarea exterioar, iar rezultatul interogrii interioare este utilizat de interogarea
exterioar.
- Sub-interogri corelate - n care interogarea exterioar transmite repetat cte o valoare
pentru interogarea interioar, care n baza valorii primite, parcurge tuplele relaiei i transmite
interogrii exterioare rezultatul obinut. Astfel de interogri realizeaz corelarea unei relaii cu ea nsi
i sunt cele mai performante.
Spre exemplu dac presupunem c n tabela Stoc_Prod unele produse pot apare de mai multe
ori cu preuri diferite i ne intereseaz poziiile cu preul minim, formulm urmtoarea interogare:
SELECT A.CodProd,A.Cant,A.Pret FROM Stoc_Prod A
WHERE A.Pret = (SELECT MIN(B.Pret) FROM Stoc_Prod B
WHERE A.CodProd = B.CodProd)
Sub-interogri simple care returneaz o singur valoare - pot fi utilizate n interogri imbricate
avnd sintaxa:

88

SELECT <lista atribute> FROM <lista relaii>


WHERE <atribut>
=
<
>
<=
>=
!=
(<sub-interogare>)
[ORDER BY <atribut[ASC]|DESC,]
Exemplu:
SELECT CodDep,CodProd,Cant FROM Stoc_Prod
WHERE Cant > (SELECT AVG(Cant) FROM Stoc_Prod ) ORDER BY CodDep
(afieaz produsele pentru care exist stocuri peste medie, ordonate pe depozite)
Sub-interogari simple care returneaza mai multe valori
Acest tip de interogare imbricat utilizeaz n clauza WHERE codiii care genereaz o mulime
de valori folosind unul din predicatele: (NOT)IN, (NOT)ANY, (NOT)ALL, (NOT)EXISTS.
SELECT * FROM Produse
WHERE Cod_Produs IN (SELECT Cod_Produs FROM Facturi
WHERE Numar IN (SELECT Numar FROM Beneficiari,Comenzi
WHERE Beneficiari.Nume=Ionescu AND
Beneficiari.Cod_Beneficiar=Comenzi.Cod_Beneficiar))
Predicatul ANY poate fi utilizat n combinaie cu oricare din operatorii <, >, =, <=, >=, != i
permite verificarea dac valoarea unui atribut satisface condiia precizat pentru orice valoare din lista
rezultat din subinterogare.
SELECT Cod_Produs FROM Facturi WHERE Cantitate > ANY
(SELECT Cantitate FROM Facturi WHERE Numar = 1014)
Predicatul ALL returneaz toate tuplele pentru care valorile atributului din clauza WHERE sunt
<, >, <=, >= dect toate valorile generate de interogarea interioar (acest predicat nu poate fi utilizat cu
operatorul = ce ar corespunde cazului banal n care toate interogrile din list sunt egale).
SELECT * FROM Facturi WHERE Cantitate < ALL
(SELECT Cantitate FROM Facturi WHERE Numar = 1200)
Predicatul EXISTS verific dac pentru fiecare tupl a relaiei exist tuple care satisfac condiia
din interogarea interioar (deci EXISTS permite specificarea mai multor atribute n interogarea
interioar).
Astfel spre exemplu instruciunea:
SELECT * FROM Beneficiari A WHERE NOT EXISTS
(SELECT * FROM COMENZI B WHERE B.Cod_Beneficiar=A.Cod_Beneficiar)
va returna o list de beneficiari care nu au fcut nici o comand pentru produse.
IV.1.2. Instruciuni pentru inserarea i actualizarea datelor n tabele
Inserarea datelor comanda INSERT are urmtoarea sintax:
INSERT INTO <nume relatie>|<nume vedere> [(<nume atribut>)]
[VALUES] <lista valori>|<subinterogare>
Exemple:
Fie tabela Persoane(Nrcrt,Nume,Prenume, Datan, Sexul, Adresa)
INSERT INTO Persoane VALUES (1,Ionescu,Ion,05/23/82,M,Suceava)
(adaug o nregistrare n tabela Persoane completnd toate atributele)
INSERT INTO Persoane(Nrcrt,Nume,Prenume) VALUES (2,Ionescu,Ana)
(adaug o nregistrare n Persoane completnd numai atributele Nrcrt,Nume, Prenume)
Pentru a insera n tabela PersF(Nrcrt,Nume,Prenume) toate nregistrrile din tabela Persoane
pentru care Sexul=F se scrie comanda:

89

INSERT INTO PersF(Nrcrt,Nume,Prenume) SELECT Nrcrt,Nume,Prenume


FROM Persoane WHERE Sexul = F
Actualizarea datelor comanda UPDATE are sintaxa:
UPDATE <nume relaie>|<nume vedere>
SET <nume atribut> = <expresie>,[WHERE <condiie>]
Condiia din clauza WHERE definete tuplele care vor face obiectul actualizrii.
Clauza WHERE poate conine i o subinterogare.
Exemple:
UPDATE Persoane SET Nume = Popescu, Prenume = Ana Maria
WHERE Nume = Ionescu AND Prenume = Ana
(actualizeaz numele i prenumele persoanei Ionescu Ana cu valorile Popescu respectiv Ana Maria).
UPDATE Produse SET Pret = Pret*1.2 WHERE CodProdus IN
(SELECT CodProdus FROM Facturi WHERE Numar = 120)
(realizeaz majorarea preului cu 20% pentru produsele comandate cu factura 120).
Dac n comanda UPDATE clauza WHERE este omis, actualizarea se va efectua asupra
tuturor tuplelor relaiei.
tergerea datelor comanda DELETE are sintaxa:
DELETE FROM <nume relaie>|<nume vedere> [WHERE <condiie>]
unde <condiie> poate fi o condiie simpl, o expresie sau o subinterogare.
Exemple
DELETE FROM Persoane WHERE Nrcrt > 10 AND Nrcrt <= 20
(terge toate nregistrrile din tabela Persoane cu Nrcrt cuprins ntre 11 si 20).
DELETE Persoane
(terge toate nregistrrile din tabela Persoane).
IV.1.3. Comenzi pentru gestiunea tranzaciilor
Tranzacia este o succesiune de instruciuni SQL grupate ntr-un bloc de instruciuni utilizate
pentru actualizarea i/sau interogarea datelor din baza de date. O tranzacie se consider ncheiat dup
realizarea tuturor operaiilor pe care le conine. Operaiile coninute ntr-o tranzacie pot fi realizate
efectiv n baza de date sau nu, fie automat de ctre sistem dup fiecare operaie, fie printr-o comand
explicit dat dup o succesiune de operaii. Astfel salvarea automat de ctre sistem a modificrilor
este realizat prin comanda
SET AUTOCOMMIT ON.
Dac iniial a fost specificat comanda SET AUTOCOMMIT OFF, salvarea modificrilor efectuate
asupra datelor se realizeaz prin comanda COMMIT, iar abandonarea modificrilor se realizeaz prin
comanda ROLLBACK.
Blocul de operaii ce definesc o tranzacie poate fi delimitat de instruciunile :
BEGIN TRANSACTION
END TRANSACTION
(pentru unele sisteme SGBDR cum ar fi dBASE IV SQL aceste delimitri sunt obligatorii).
IV.2. Descrierea datelor (comenzi DDL)
IV.2.1. Comenzi pentru crearea/actualizarea schemei bazei de date
Adugarea relaiilor ntr-o baz de date comanda CREATE TABLE are sintaxa:
CREATE TABLE <nume relaie>[(<nume atribut> <tip dat>,)]
Exemplu -crearea tabelei Persoane n SQL Oracle se realizeaz cu comanda:
CREATE TABLE Persoane (Nrcrt NUMBER UNIQUE NOT NULL,Nume CHAR(15),Prenume
CHAR(15),Datan DATE,Sexul CHAR,Adresa VARCHAR2(50));
O nou relaie poate fi creat i ca rezultat al unei operaii de interogare astfel:
CREATE TABLE <nume relaie> (<nume atribut> <tip dat>,) AS <subinterogare>
Adugarea/modificarea de atribute pentru o relaie existent se realizeaz cu comanda:

90

ALTER TABLE <nume relaie> ADD|MODIFY (< nume atribut> <tip dat>,)
tergerea unei relaii se realizeaz cu comanda:
DROP TABLE <nume relaie>
IV.2.2. Comenzi pentru optimizarea interogrilor
Una din principalele ci de optimizare a timpilor de interogare a unei baze de date este
indexarea. Un index poate fi privit ca o relaie cu dou atribute i anume:
- primul atribut conine valorile atributelor relaiei dup care se creaz indexul
- al doilea atribut conine un pointer (adresa) la locaia tuplelor corespunztoare.
Crearea unui index se realizeaz cu comanda:
CREATE [UNIQUE] INDEX <nume index>
ON <nume relaie>(<nume atribut>[ASC|DESC],)
Dac pentru atributele utilizate n clauza WHERE a unor instruciuni SQL au fost creai
indeci, atunci acetia vor fi utilizai n vederea optimizrii timpului de prelucrare. Decizia de utilizare
sau nu a unui index este luat de limbajul SQL i nu de utilizator. Pentru aceasta fiecare model de
limbaj SQL dispune de o component numit optimizator,
care examineaz interogarea i decide care este modul optim de obinere a rezultatului.
O alt tehnic de optimizare a interogrilor este tehnica clustering disponibil n ORACLE i
care const n gruparea tuplelor din mai multe relaii i stocarea lor n aceeai zon pe disc.
IV.3. Controlul datelor (comenzi DCL)
IV.3.1. Vederi
O vedere este o relaie virtual, definit plecnd de la alte relaii din baza de date i care nu
conine date i deci nu ocup spaiu fizic pe disc. Vederile se definesc n dou scopuri i anume:
- pentru a simplifica accesul utilizatorilor la date
- pentru a asigura protecia i securitatea datelor fiecrui utilizator fiindu-i permis acces la
o poriune a bazei de date i putnd efectua doar anumite operaii (drepturi de acces
specificate cu comenzile GRANT/REVOKE).
Asupra unei vederi se pot efectua aceleai operaii ca i asupra unei relaii cu deosebirea c vederile nu
conin date i c orice modificri efectuate asupra datelor sunt reflectate i n vederi.
Asupra unei vederi se pot realiza operaiile:
- Creare vedere (CREATE VIEW)
- Creare sinonim pentru vedere (CREATE SYNONIM)
- tergere vedere (DROP VIEW)
- Interogare vedere (SELECT)
- Actualizare date din vedere (UPDATE)
- tergere date din vedere (DELETE)
- Adugare date (INSERT)
Crearea unei vederi se realizeaz cu comanda CREATE VIEW care are sintaxa:
CREATE VIEW <nume vedere> [<lista atribute>]
AS <fraza SELECT> [WITH CHECK OPTION]
Exemplu:
CREATE VIEW PersoaneSv(Nrcrt,Nume,Prenume,Sexul,Datan)
AS SELECT Nrcrt,nume,Prenume,Sexul,Datan from Persoane
WHERE Adresa=Suceava
Interogarea vederii se va realiza cu o comand de forma:
SELECT * FROM PersoaneSv
Utilizarea opiunii WITH CHECK OPTION asigur faptul c nici o tupl nu va fi adaugat sau
actualizat cu instruciunile INSERT, UPDATE, dac nu sunt respectate condiiile specificate n clauza
WHERE a instruciunii SELECT din definiia vederii.

91

Pentru acordarea sau retragerea drepturilor de acces la baza de date prin intermediul
vizualizrilor se vor folosi comenzi de forma:
GRANT [ALL|SELECT|INSERT|UPDATE|DELETE] ON <nume vedere>
TO <nume utilizator>
sau
REVOKE [ALL|SELECT|INSERT|UPDATE|DELETE] ON <nume vedere>
FROM <nume utilizator>
Asigurarea securitii datelor presupune definirea drepturilor de acces ale utilizatorilor i
protecia sistemului la accesul neautorizat. n acest sens asigurarea securitii se realizeaz pe dou
niveluri i anume:
- nivelul 1 acordarea dreptului de acces la sistem
- nivelul 2 acordarea dreptului de acces la nivel de relaii
Pentru conectarea utilizatorilor la sistem n majoritatea versiunilor de SQL se utilizeaz un
nume de utilizator i o parol.
Referitor la drepturile de acces la nivel de relaie n sistemele multi-user trebuie precizat
utilizatorul care a creat relaia (proprietarul relaiei). Fiecare utilizator are drepturi doar asupra
propriilor relaii, iar drepturi asupra unor relaii create de ali utilizatori pot fi acordate prin comanda
GRANT i pot fi retrase prin comanda REVOKE.
Datele privind definirea bazei de date, utilizatorii i drepturile de acces sunt stocate n
dicionarul de date i sunt gestionate de ctre sistemul de gestiune a bazei de date (SGBDR). n cele ce
urmeaz se va prezenta modul de realizare a celor dou nivele de securitate n cadrul sistemului
ORACLE.
IV.3.2. Nivelul 1 de securitate a datelor se realizeaz cu comanda:
GRANT <autorizare,> TO <nume utilizator> [IDENTIFIED BY <parola>]
unde <autorizare> poate fi:
DBA confer utilizatorului dreptul de efectuare a oricrei operaii asupra oricrei relaii din baza de
date
CONNECT confer utilizatorului dreptul de a a face interogri (SELECT) i actualizri (INSERT,
UPDATE, DELETE) asupra relaiilor create de ali utilizatori, ns nu permite utilizatorului s creeze
relaii (CREATE) sau s tearg relaii create de ali utilizatori (DROP).
RESOURCE confer utilizatorului drepturile ce rezult din autorizarea CONNECT i n plus dreptul
de a crea relaii (CREATE) i de a terge relaii ce i aparin (DROP).
Unui utilizator i pot fi acordate mai multe tipuri de autorizri n cadrul unei singure comenzi
GRANT. Parola stabilit pentru un utilizator poate fi modificat printr-o comand GRANT ulterioar
spre exemplu astfel:
GRANT RESOURCE TO <nume utilizator> IDENTIFIED BY <noua parol>
Unui utilizator cruia i s-a acordat un tip de autorizare i pot fi acordate i alte tipuri de
autorizare prin comenzi GRANT ulterioare.
Retragerea autorizrilor acordate unui utilizator se realizeaz cu comanda:
REVOKE <autorizare,> FROM <nume utilizator>
IV.3.3. Nivelul 2 de securitate a datelor
Pentru acordarea respectiv retragerea drepturilor de acces la relaii se utilizeaz comenzile
GRANT respectiv REVOKE cu urmtoarea sintax:
GRANT ALL|<drept de acces>, ON <nume relaie>
TO <nume utilizator>|PUBLIC [WITH GRANT OPTION]
respectiv
REVOKE ALL|<drept de acces>, ON <nume relaie>
FROM <nume utilizator>|PUBLIC

92

Privilegiile (drepturile de acces) pot fi acordate sau retrase de urmtoarele categorii de


utilizatori:
- utilizatorii cu nivel de autorizare DBA
- proprietarii relaiilor
- utilizatorii autorizai cu opiunea WITH GRANT OPTION
Prin specificarea PUBLIC acordarea respectiv retragerea drepturilor de acces se aplic tuturor
utilizatorilor.
Prin specificarea WITH GRANT OPTION, utilizatorul respectiv poate la rndul su s acorde
aceleai drepturi sau mai puine altor utilizatori.
n ORACLE pot fi acordate urmtoarele drepturi de access asupra relaiilor:
SELECT, INSERT, DELETE, ALTER, UPDATE, CREATE pt. tabele i indeci, DROP pt. tabele i
indeci. Drepturile de acces pot fi acordate asupra ntregii relaii, sau doar asupra anumitor atribute ale
relaiei.
Exemple:
Acordarea tuturor drepturilor de acces utilizatorilor Ionescu, Popescu, asupra relaiei Persoane
care aparine utilizatorului Vasilescu se realizeaz prin comanda:
GRANT ALL ON Vasilescu.Persoane TO Ionescu,Popescu
Acordarea tuturor utilizatorilor, drepturile SLECT,INSERT,UPDATE asupra relaiei Produse
aparinnd utilizatorului Ionescu se realizeaz cu comanda:
GRANT SELECT,INSERT,UPDATE ON Ionescu.Produse TO PUBLIC
Acordarea privilegiilor SELECT,UPDATE numai asupra atributelor CodProdus, Denumire din
relaia Produse aparinnd utilizatorului Ionescu, utilizatorului Popescu cu condiia ca acesta la rndul
su s poat acorda oricrui alt utilizator aceleai drepturi sau mai puine, se realizeaz cu comanda:
GRANT SELECT,UPDATE ON Ionescu.Produse(CodProdus,Denumire)
TO Popescu WITH GRANT OPTION
Retragerea drepturilor de acces INSERT,DELETE asupra relaiei Persoane aparinnd
utilizatorului Vasilescu, utilizatorului Ionescu se realizeaz cu comanda:
REVOKE INSERT,DELETE ON Vasilescu.Persoane FROM Ionescu
IV.4. SQL3 - Extensii ale limbajului SQL2 cu faciliti de orientare spre obiecte
La standardul SQL2 au fost adugate caracteristici de susinere a orientrii spre obiecte
prezentate succint n cadrul acestui capitol.
Tipurile de rnduri (ROW).
Un tip de rnd este o secven de perechi
denumire cmp/tip de date
care poate reprezenta
tipuri de rnduri n tabele, astfel nct rndurile complete s poat fi stocate n variabile, transmise ca
argumente rutinelor i returnate ca valori din apelul funciilor, sau s poat fi folosite i ca valori ale
unei coloane dintr-un tabel.
Tipuri definite de utilizator (UDT).
Utilizatorul poate defini tipuri abstracte de date (ADT) numite tipuri definite de utilizatori
(UDT), care pot fi folosite n acelai mod ca i tipurile standard (INT, CHAR, VARCHAR, FLOAT
etc.).
Rutine definite de utilizator (UDR User Defined Routine)
- definesc metodele de manipulare a datelor
- pot fi definite ca parte a unui tip UDT, sau separat ca parte a unei scheme
- pot fi proceduri, funcii sau rutine iterative
- pot fi definite complet n limbajul SQL, sau pot fi furnizate extern ntr-un limbaj de programare ca
de exemplu C++.
Subtipuri i supertipuri.
Tipurile UDT pot participa ntr-o ierarhie subtip/supertip utiliznd clauza UNDER. Este
acceptat motenirea multipl un tip poate avea mai mult dect un supertip i un tip poate avea mai
mult dect un subtip. Un subtip motenete toate atributele i comportamentele supertipurilor sale i

93

poate defini atribute i funcii suplimentare i poate anula funcii motenite. O instan a unui subtip
este considerat instan a tuturor supertipurilor sale. Pentru a crea un subtip este necesar ca utilizatorul
s aib privilegiul UNDER pentru fiecare tip definit de utilizator i specificat ca supertip n definiia
subtipului.
Crearea tabelelor.
O instan UDT poate persista numai dac este stocat ca valoare a unei coloane dintr-un tabel.
Pentru crearea unui tabel se va utiliza instruciunea CREATE TABLE chiar dac tabelul este format
dintr-un singur tip UDT.
Interogarea datelor
SQL3 pune la dispoziie aceeai sintax ca i SQL2 pentru interogarea i reactualizarea
tabelelor cu o serie de extensii pentru manipularea obiectelor.
Tipuri de referine i identitatea obiectelor
Spre deosebire de SQL2 n care definirea relaiilor dintre tabele se realizeaz prin mecanismul
cheie primar/cheie strin, n SQL3 pot fi utilizate tipurile de referine pentru a defini relaiile dintre
tipurile de rnduri i a identifica n mod unic un rnd din cadrul ntregii baze de date. Valoarea tipului
de referin poate fi stocat ntr-un tabel i utilizat ca o referin direct la un anumit rnd din alt tabel.
Tipul de referin are o funcionalitate similar identificatorului OID din sistemele SGBDOO (spre
exemplu n INFORMIX un OID este un identificator unic de 64 bii din care 24 bii identific tabelul,
iar 40 bii identific rndul din tabel).
Tipuri de colecii
Coleciile sunt utilizate pentru a stoca valori multiple ntr-o singur coloan a unui tabel
rezultnd tabele imbricate n care o coloan dintr-un tabel conine un alt tabel. SQL3 definete un tip
de colecie imbricat ARRAY, care reprezint un ir unidimensional cu un numr maxim de elemente,
iar n SQL4 se vor defini n plus tipurile de colecii parametrizate: LIST colecie ordonat care
permite dubluri, SET colecie neordonat care nu permite dubluri, MULTISET colecie neordonat
care permite dubluri.
Module stocate persistente
Pentru a conferi limbajului SQL completitudine de calcul, n standardul SQL3 au fost adugate
instruciuni noi astfel nct comportamentul obiectelor (metodele) s poat fi stocat i executat din
cadrul bazei de date, sub form de instruciuni SQL care pot fi grupate ntr-o instruciune compus
(bloc) cu propriile variabile locale. Dintre instruciunile noi adugate menionm:
- instruciunea de atribuire DECLARE
- instruciunea de prelucrare condiionat IFTHENELSEEND IF
- instruciunea de selecie a unei alternative CASEWHEN...THEN...END CASE
- instruciuni pentru iteraii
FOREND FOR, WHILEEND WHILE,
REPEATEND REPEAT
- instruciunea CALL pentru apelul procedurilor
- instruciunea RETURN care permite ca o expresie SQL s fie utilizat ca valoare returnat dintr-o
funcie SQL.
Tratarea condiiilor de excepie
SQL/PSM permite tratarea condiiilor de excepie precizate n definiia unui handler.
Declanatoare (trigger-e). Un declanator (trigger) este o instruciune SQL compus care este executat
ori de cte ori apare evenimentul declanator. Declanatoarele pot fi utilizate pentru validarea datelor
de intrare, ntreinerea informaiilor de audit (nregistrarea modificrilor efectuate asupra bazei de date
i de ctre cine), susinerea avertizrilor (ex. utilizarea potei electronice) n care este necesar
ntreprinderea unei aciuni atunci cnd un tabel este reactualizat ntr-un mod oarecare, susinerea
reproducerii (copierea i ntreinerea datelor pe servere multiple, metod preferat n locul distribuirii
datelor). Un declanator poate fi lansat nainte (BEFORE) sau dup (AFTER) apariia evenimentului
asociat lui, pentru fiecare rnd (FOR EACH ROW) afectat de eveniment, sau implicit o singur dat
pentru ntregul eveniment (FOR EACH STATEMENT). Evenimente declanatoare pot fi de exemplu
operaiile INSERT,UPDATE,DELETE etc.

94

Obiecte mari
Un obiect mare este un cmp dintr-un tabel care conine o cantitate mare de date reprezentnd
fie un fiier text mare, fie un fiier grafic. n SQL3 sunt definite urmtoarele tipuri de obiecte mari:
- obiecte binare mari BLOB (Binary Large Object) iruri binare
- obiecte mari de tip caracter CLOB, NCLOB (Character Large Object, National Character
Large Object) iruri de caractere
Aceste tipuri de obiecte difer de vechile obiecte BLOB din sistemele de baze de date tradiionale n
care cmpurile BLOB sunt iruri de octei neinterpretabile, ceea ce necesit ca ntregul obiect BLOB s
fie transferat prin reea de la serverul SGBD la client, fr nici o prelucrare chiar dac astfel de cmpuri
reprezint tipuri de date structurate cum ar fi : imagini, imagini video, documente de prelucrare de
texte word sau pagini Web. Spre deosebire de sistemele tradiionale, n SQL3, asupra obiectelor mari
se pot efectua unele operaii pe serverul SGBD. Astfel operatorii standard de tip ir, care opereaz
asupra irurilor de caractere opereaz i asupra obiectelor mari de tip caracter. Aceti operatori sunt:
- operatorul de concatenare ir1 || ir2 concateneaz cele dou iruri
- funcia SUBSTRING(ir FROM poziie FOR lungime) returneaz subirul extras din ir de la
poziia poziie pe lungimea lungime
- funcia de suprapunere a caracterelor OVERLAY(ir1 PLACING ir2 FROM poziie FOR lungime)
nlocuiete un subir din ir1 ncepnd din poziia poziie pe lungimea lungime cu ir2
- funciile de pliere UPPER(ir) i LOWER(ir) transform toate caracterele litere din ir n mari
respectiv mici.
- funcia de aranjare TRIM(LEADING | TRAILING | BOTH ir1 FROM ir2) returneaz ir2 cu
ir1 premergtor i/sau posterior eliminat. Dac nu este specificat clauza FROM, atunci toate
spaiile premergtoare i posterioare sunt eliminate din ir2
- funcia CHAR_LENGTH(ir) returneaz lungimea irului ir
- funcia POSITION(ir1 IN ir2) returneaz poziia de nceput a irului ir1 n cadrul irului
ir2
Obiectele binare mari BLOB sunt iruri de octei asupra crora pot fi efectuate operaii cu
funcionaliti similare celora definite pentru obiectele CLOB.
IV.5. Extensii ale limbajului SQL cu faciliti de procesare analitic a datelor.
Sistemele realizate pentru automatizarea proceselor din domeniul afacerilor prelucreaz datele
operaionale aferente tratrii operaiilor de zi cu zi din cadrul organizaiei. Aceste sisteme orientate spre
prelucrarea tranzaciilor, cunoscute sub denumirea de sisteme OLTP (On-Line Transaction Processing)
genereaz date operaionale care sunt orientate spre obiect. S-au acumulat astfel n cursul anilor
cantiti mari de date stocate n cadrul sistemelor operaionale funcionale la nivel de organizaie. n
ultimii ani, atenia specialitilor este ndreptat asupra modalitilor de utilizare a datelor operaionale,
stocate n baze de date i arhive, pentru a susine procesul decizional n vederea ctigrii unor avantaje
competitive. Se pune deci problema transformrii arhivelor de date n surs de cunotine care s
prezinte utilizatorului o vedere unitar asupra datelor organizaiei.
Magazia sau depozitul de date cunoscute i sub denumirea de data warehouse, care se
alimenteaz cu date de la multiple surse de date operaionale, reprezint soluia pentru realizarea unui
sistem capabil s susin procesul decizional al organizaiei, folosind tehnici speciale denumite OLAP
(OnLine Analytical Processing). Pentru a rspunde necesitilor de interogare n cadrul instrumentelor
OLAP, limbajul SQL a fost extins cu o serie de funcii specifice pentru prelucrarea i analiza datelor.
Astfel a fost adus amendamentul OLAP la standardul SQL, noile funcii disponibile pentru susinerea
tehnologiei OLAP oferind noi posibiliti de sintez a datelor i n acelai timp mbuntind n mod
substanial instrumentele oferite de limbajul SQL.
Principalele funcii oferite de noua tehnologie sunt ROLLUP i CUBE.
Funcia ROLLUP adaug la setul rezultat n urma executrii unei operaiuni Select standard
grade de totalizare pentru fiecare nivel de grupare stabilit prin intermediul instruciunii Group by.

95

Gradele de totalizare sunt prezentate ncepnd cu nivelul cel mai de jos al ierarhiei i continund apoi
cu nivelurile superioare ale acesteia. Pentru realizarea unei analize multidimensionale n adevratul
sens al cuvantului, prin intermediul creia s rezulte toate posibilitile de combinaie ntre diferite
dimensiuni este necesar s se utilizeze instruciunea CUBE.
Modelul conceptual al datelor supuse analizelor prin intermediul tehnologiei OLAP are
reprezentarea unui "cub" de informaie, care prezint informaiile incluse n bazele de date relaionale
prin dou elemente eseniale i anume:
- Dimensiuni - reprezint categoriile descriptive dup care se realizeaz totalizarea i gruparea
datelor;
- Valori - reprezint datele asupra crora se realizeaz operaiunile de nsumare, medie, minim,
maxim sau respectiv orice alt operaiune statistic sau matematic permis de sistemul de gestiune a
bazelor de date.
Se mai definete i termenul de ierarhie, care reprezint nivelurile de detaliere pentru o dimensiune de
date.
Exemplul cel mai sugestiv de analiz multidimensional l constituie o baz de date a
vnzrilor. Astfel, n cadrul unei asemenea baze de date organizarea informaiilor pentru realizarea
interogrilor prin intermediul OLAP presupune existena celor dou elemente: dimensiunile reprezentate n funcie de necesitile de analiz pe structura geografic (regiune, jude, ora, client) sau
pe structura produselor vndute (model, caracteristici model, data vnzrii); valorile fiind reprezentate
de vnzrile cantitative sau valorice (cifra de afaceri) asupra crora se vor aplica funciile statisticomatematice de consolidare a datelor (sum, average, min, max, etc.).

96

ADENDA
Fiierul este o organizare a datelor preluat din sistemul manual i adaptat la
cerinele impuse de utilizarea sistemelor de calcul.
Baza de date o colecie partajat de date, care conine datele propriu-zise, relaiile
logice dintre acestea, precum i descrierea datelor (structura datelor).
Sistemul de Gestiune a Bazelor de Date (SGBD sau DBMS Data Base Management
System) este un sistem de programe care permite definirea, crearea i ntreinerea bazei de
date, precum i accesul controlat la baza de date.
Administratorul bazei de date (DBA Data Base Administrator) - este o persoan
sau un grup de persoane care rspunde de ansamblul activitilor privind baza de date.
Independena logic de date imunitatea schemelor externe (vederilor utilizatorilor)
fa de modificri efectuate n schema conceptual. Adugarea sau eliminarea de noi entiti,
atribute sau relaii trebuie s fie posibil fr a afecta schemele externe existente.
Independena fizic de date imunitatea schemei conceptuale fa de modificrile
efectuate n schema intern. Modificri efectuate n schema intern cum ar fi: utilizarea unor
organizri de fiiere diferite, a unor dispozitive diferite de stocare, modificarea de indeci sau
de algoritmi hash trebuie s fie posibil fr a fi necesar schimbarea schemei conceptuale sau
a schemelor externe.
Model de date este un instrument teoretic care permite identificarea semnificaiei sau
coninutului de informaie pentru o colecie de date, vzut n ansamblul ei, prin contrast cu
valorile individuale ale datelor.
Entitate este un coninut de sine stttor, o realitate obiectiv care exist prin ea nsi.
Relaie pe mulimile D1, D2, ., Dn este o mulime de tuple ordonate, o submulime a
produsului cartezian D1xD2x.xDn.
Cheie a unei relaii R este un subset minimal K de atribute ale relaiei care identific
unic n-tuplele relaiei.
Obiect este o entitate unic identificabil, care conine att atributele care descriu starea
unui obiect din lumea real, ct i aciunile asociate acestuia.
Clas de obiecte este o mulime de obiecte descris de aceleai proprieti
(caracteristici, atribute).
ACCESS produs program pentru gestiunea bazelor de date relaionale de complexitate
medie
SQL limbaj universal pentru bazele de date relaionale.
Tabele stocheaz datele bazei de date. Fiecare coloan a tabelei este numit cmp i
fiecare rnd al tabelei este numit nregistrare.
Interogri (Queries) realizeaz extragerea unor date din una sau mai multe tabele
conform unor criterii precizate de utilizator n vederea vizualizrii i actualizrii datelor din
baza de date sau pentru a crea alte tabele n vederea pstrrii unui instantaneu al informaiilor.
Formulare un formular este o fereastr pentru introducerea sau afiarea i editarea
datelor. Un formular poate conine subformulare pentru a afia date asociate unor date din
formular i butoane sau alte obiecte grafice pentru realizarea anumitor aciuni.
Rapoarte sunt utilizate pentru operaii de ieire n vederea obinerii unor situaii
rezultate din prelucrarea unor date din baza de date.
Vedere este o relaie virtual, definit plecnd de la alte relaii din baza de date i care
nu conine date i deci nu ocup spaiu fizic pe disc.

97

Bibliografie:
1. [COBS01]. Thomas Connolly, Carolyn Begg, Anne Strachan Database Systems A
Practical Approach to Design, Implementation and Management Second
Edition (trad. Ed. Teora: Baze de date Proiectare . Implementare . Gestionare,
Buc. 2001)
2. [CVA00] Conf.univ.dr. Virgil Chichernea, Sistemul ACCESS, Ed.SYLVI, vol.I,
Buc.2000
3. [CVF00]. Conf.univ.dr. Virgil Chichernea, lector univ.dr. Cezar Botezatu, Sistemul
FoxPro,Ed.SYLVI, vol.II, Buc.2000
4. [DATE04]. C. J. Date, An Introduction to Database Systems, 8th Edition, published by
Pearson Education, Inc. Adison Wesley Higher Education, 2004.
5. [DORO98]. Robert Dollinger-Baze de date i gestiunea tranzaciilor,ClujNapoca,1998
6. [FLAM02]. Sistemele bazate pe cunotine, Adina Magda Florea
www.agora.ro/open/open5/ia.html
7. [FPV98]. FoxPro 2.6 pentru Windows. Ghidul programatorului, Traducere Ed. Teora, 1998
8. [FUS02]. Doina Fusaru, Arhitectura bazelor de date Mediul SQL, Univ.Spiru Haret,
Ed.Fundatiei Romnia de mine, Buc.2002
9. [HARK00] Utilizare Microsoft Access 2000 / Susan Sales Harkins, Ken Hansen i Tom
Gerhart ; trad. de Marian Daniel Merezeanu i Aurelia Nicoleta Merezeanu. Bucureti : Teora, cop.2000. - 527 p.
10. [JOJO97]. Jones John Data Bases in theory and practice Ed. Thompson Computer
Press, UK 1997
11. [MOLH03] lector univ. Nicolae Morariu, lector univ. Valeriu Lupu, ing.ec. Ovidiu
Hurjui, Baze de date, ISBN 973-8293-83-9, Editura Universitii tefan cel
Mare Suceava,117 p, Suceava, 2003.
12. [MONI05] Nicolae Morariu, Baze de date - ndrumar de laborator, ISBN 973-666159-8, Editura Universitii Suceava, 85 p, Suceava, 2005.
13. [ORA92]. Introduction to ORACLE SQL, SQL* Plus and PL/SQL Course Notes,
Glenn Maslen, Published by Oracle Corporation UK Ltd. 1992
14. [PASC94]. Totul despre SQL Interogarea bazelor de date, Corina Pascu, Adrian
Pascu, Ed. Tehnic Buc. 1994
15. [SAM96]. Mircea Srbu, Analiza multidimensional
http:www.byte.ro/byte96-03/datawar4.html
16. [SEKH94]. Khoshafian Setrag Object Oriented Databasses, pub. John Whiley
1994, UK
17. [TAMB96] Access - pentru programatori / Leon Tmbulea. - Cluj-Napoca : Promedia
Plus, cop.1996. - 297 p.
18. [UDRI98] Aplicaii de gestiune : Access i Visual Basic / Mioara Udric. - Bucureti :
Naional, 1998. - 197 p.
19. [VFP00]. Microsoft Visual FoxPro 6.0 Ghidul programatorului Ed.Teora 2000

98

S-ar putea să vă placă și