You are on page 1of 47

CUPRINS

1. Introducere …………………………………………………………….4
2. Prezentarea limbajului si a tehnologiei utilizate……………………….5
2.1. Baze de date……………………………………………………….5
2.1.1. Definire………………………………………………………..5
2.1.2. Scurt istoric……………………………………………………9
2.1.3. Nivelul de organizare al datelor într-o baza de date…………13
2.1.4. Sistemul de gestiune a bazelor de date………………………13
2.1.5. Regulile lui Codd…………………………………………….18
2.1.6. Proprietăţile câmpurilor bazelor de date……………………..20
2.2. SQL………………………………………………………………21
2.2.1. Caracteristicile limbajului SQL……………………………....22
2.2.2. Setul de comenzi SQL………………………………………..23
2.3. Visual FoxPro…………………………………………………….26
2.3.1. Arhitectura VFP 6.0…………………………………………..26
2.3.2. Modurile de lucru in VFP……………………………………...28
2.3.3. Dezvoltarea unei aplicaţii……………………………………....32
2.3.4. Tipuri de aplicaţii……………………………………………..33
2.3.5. Crearea si normalizarea unei baze de date…………………....34
2.3.6. Crearea interfeţei……………………………………………...37
3. Prezentarea aplicaţiei…………………………………………………..41
3.1. Descrierea facilităţilor…………………………………………..41
3.2. Descrierea bazei de date………………………………………...42
4. Concluzii……………………………………………………………….49
Bibliografie……………………………………………………………….50
1.Introducere

Modelarea evidenţei financiare într-un magazin de materiale de construcţie


presupune implementarea unui sistem informatic de gestiune economica care va
urmării pe tot parcursul evoluţia financiară a magazinului, respectiv raportul
facturilor. Astfel se vor urmării adăugarea sau ştergerea produselor din stoc,
evidenţa clienţilor, a facturilor şi a transporturilor. Un astfel de sistem trebuie sa
permită generarea de rapoarte ale facturilor şi transporturilor realizate, permiţând
filtrarea informaţiilor in funcţie de numele clientului, numele produsului, data
transportului. Pentru stabilirea acestor cerinţe, se va tine cont in mod deosebit de
utilizatorii care vor folosi această aplicaţie. Uşurinţa utilizării acestei aplicaţii
permite folosirea acesteia de către orice angajat al magazinului, accesul la date
fiind garantat prin deţinerea unui cont de utilizator. In momentul logării,
utilizatorul trebuie sa se autentifice printr-un user-name si o parola. De asemenea
se pot crea conturi noi pentru accesul la date şi al altor angajaţi.
Aplicaţia conţine o baza de date cu evidenţa produselor disponibile şi a
clienţilor care va putea fi modificata in momentul efectuării unor noi tranzacţii.
Sper că prin această aplicaţie voi reuşi să mă apropii de cerinţele unei
aplicaţii de gestiune. Ceea ce mi se pare incitant este ca tehnologiile actuale mi-au
permis sa nu fiu prea departe de acest deziderat. Dar totuşi “tehnologia umana “ m-
a ajutat in primul rând la realizarea acestei lucrări pe care nu as fi putut sa o concep
vreodată fără ajutorul ei. Pe aceasta cale doresc sa mulţumesc părinţilor mei pentru
ajutorul lor de-a lungul anilor studenţiei şi stimatului domn lector universitar
doctorand Daniel Hunyadi, profesorilor, lectorilor, şi asistenţilor pentru pregătirea
şi devotamentul lor, precum şi colegilor si prietenilor care au fost alături de mine si
m-au susţinut.

4
2. Prezentarea limbajului si a tehnologiei folosite

2.1. Baze de date

2.1.1. Definiţie
Evoluţia diferitelor metode şi tehnici de organizare a datelor, pe
suporturi de memorie externă, a fost determinată de necesitatea de a avea un acces
cât mai uşor la un volum cât mai mare de date. Datele stocate şi prelucrate sunt
foarte complexe cu foarte multe interdependenţe, lucru care a făcut necesară
apariţia bazelor de date.

Prin Baze de date se înţelege un ansamblu de informaţii organizate


tabelar care are următoarele proprietăţi:
- este organizat, pe mai multe niveluri ale informaţiei pe suportul de
informaţie extern uzual hard disc;
- este coerent, corespunzând unor proprietăţi restrictive specifice de
integritatea informaţiei;
- este structurat, astfel încât să corespundă unui model de tip bază de
date;
- este accesibil, putând fi folosit de mai mulţi operatori simultan sau
succesiv.
Datele sunt deţinătoare de informaţie, iar datele informatice prin metode
speciale pot fi transpuse într-un cod recogniscibil pentru calculator. În ambele
cazuri informaţia poate fi identificată, definită, evaluată, structurată si prelucrată
pentru a fi stocată sau memorată.
Informaţia poate fi stocată de creierul uman prin cunoaştere, învăţare, iar
atunci când volumul informaţional depăşeşte graniţele putinţei receptării, aceasta
este stocată pe diverse suporturi în vederea accesării la nevoie de către individ.

Din punct de vedere al serviciilor pe care le oferă, baza de date este o colecţie
de date care poate descrie întreaga activitate a unei organizaţii şi care furnizează
acces la diferite informaţii, prezentate in diferite formate.

Din punct de vedere al organizării datelor sub forma unei structuri de date pe
mediul de memorare, ea este forma optima de organizare a datelor. Se poate spune
ca: Baza de date (database) este o colecţie de fişiere şi înregistrări legate între ele.

În sensul larg, o bază de date este o colecţie de date corelate din


punct de vedere logic, care reflectă un anumit aspect al lumii reale şi este destinat
unui anumit grup de utilizatori. În acest sens, bazele de date pot fi create şi
menţinute manual (un exemplu ar fi fişele de evidenţa computerizată a cărţilor
5
dintr-o bibliotecă, aşa cum erau folosite cu mai mulţi ani in urmă) sau computerizat
aşa cum sunt majoritatea bazelor de date în momentul de faţă. O definiţie într-un
sens mai restrâns a unei baze de date este următoarea:
O bază de date este o colecţie de date centralizate, creată şi
menţinută computerizat, în scopul prelucrării datelor în contextul unui set de
aplicaţii. Prelucrarea datelor se referă la operaţiile de introducere, ştergere,
actualizare şi interogare a datelor. Orice bază de date are următoarele proprietăţi
implicite:
Baza de date este o colecţie logică coerentă de date ce are cel puţin un înţeles. Baza
de date este destinată, construită şi populată de date despre un domeniu bine
precizat. Ea are un grup de utilizatori şi se adresează unui anumit grup de aplicaţii.
O bază de date reprezintă câteva aspecte ale lumii reale creând orizontul
propriu.
Schimbările orizontului sunt reflectate în baza de date.

Faţă de vechile metode de înregistrare a datelor privind diferite activităţi pe


fişe (documente scrise) sau chiar în fişiere pe disc, sistemele de baze de date oferă
avantaje considerabile, ceea ce explică extinsa utilizare a acestora. Câteva dintre
avantajele oferite sunt:

• Controlul centralizat al datelor, putând fi desemnată o persoană ca


responsabil cu administrarea bazei de date.
• Viteză mare de regăsire şi actualizare a informaţiilor.
• Sunt compacte: volumul ocupat de sistemele de baze de date este mult mai
redus decât documentele scrise.
• Flexibilitatea ce constă în posibilitatea modificării structurii bazei de date
fără a fi necesară modificarea programelor de aplicaţie.
• Redundanţă scăzută a datelor memorate, care se obţine prin partajarea
datelor între mai mulţi utilizatori şi aplicaţii. În sistemele de baze de date,
mai multe aplicaţii pot folosi date comune, memorate o singură dată. De
exemplu, o aplicaţie pentru gestionarea personalului dintr-o universitate
şi o aplicaţie pentru gestionarea rezultatelor la examene din aceeaşi
universitate care foloseşte o singură bază de date, pot folosi aceleaşi
informaţii referitoare la structurarea facultăţilor.
• Posibilitatea introducerii standardelor privind modul de stocare a datelor,
ceea ce permite interschimbarea datelor între organizaţii.
• Menţinerea integrităţii datelor prin politica de securitate (drepturi de acces
diferenţiate în funcţie de rolul utilizatorilor), prin gestionarea tranzacţiilor şi
prin refacerea datelor în caz de funcţionare defectuoasă a diferitelor
componente hardware sau software.
• Independenţa datelor faţă de suportul hardware utilizat. Sistemul de
gestiunea a bazelor de date oferă o vizualizare a datelor, care nu se modifică
atunci când se schimbă suportul de memorare fizic, ceea ce asigură
imunitatea structurii bazei de date şi a aplicaţiilor la modificări ale
sistemului hardware utilizat.
6
Modelul entitate-relaţie este cel mai utilizat model conceptual de
nivel înalt, care reprezintă schema conceptuală a bazei de date cu ajutorul
entităţilor şi a relaţiilor dintre acestea. Elementele de bază folosite în cadrul acestui
model sunt conceptele de entitate şi cel de relaţie.
O entitate este un obiect al lumii reale, cu o existenţă independentă şi
poate reprezenta un obiect fizic, o activitate, un concept. O entitate este un obiect
cu existenţă fizică, de exemplu: persoană particulară, automobil, companie,
activitate, curs universitar.
Orice entitate are o serie de proprietăţi numite atribute , ce descriu
entitatea respectivă.
Cu toate că nu reprezintă acelaşi lucru, pentru denumirea de entitate se
mai foloseşte şi denumirea de tabel al bazei de date, iar pentru atribute câmpurile
tabelului.
Scurte definiţii a noţiunilor pe care le-am folosit şi le vom folosi în
continuare sunt:
Tabelă (entitate) este o colecţie de informaţii logice relaţionale tratată ca o
unitate.

Înregistrare (n-uplu). O tabelă este compusă din înregistrări sau rânduri.


Fiecare înregistrare este tratată ca o simplă unitate. Fiecare înregistrare este
legată de înregistrări ale altei tabele.

Câmp (atribut). Înregistrările sunt constituite din câmpuri (coloane) . Un


câmp este o particulă atomică a bazei de date ce reprezintă cea mai mică cantitate
de informaţie care poate fi manipulată. Toate înregistrările dintr-o tabelă au
aceleaşi câmpuri.
Avantajele folosirii bazelor de date sunt:
Partajarea informaţiilor .Spre deosebire de datele din fişierele de date la care
au acces numai utilizatorii care le-au creat şi le întreţin, la datele din baza de date
pot avea acces toţi membrii unei organizaţii, care îşi vor partaja datele din baza de
date. Pot fi create aplicaţii noi care să folosească datele din mai multe colecţii de
date şi care să furnizeze informaţii noi folosind tot ansamblul de date. În acest
mod, fiecare utilizator are senzaţia că este beneficiarul unic al colecţiei de date.
Creşterea cantităţii de informaţii disponibile unui utilizator. Deoarece
datele produse de un compartiment al organizaţiei pot fi folosite de toţi membrii
organizaţiei şi nu numai de membrii compartimentului respectiv, creşte cantitatea
de informaţii la care au acces membrii organizaţiei, chiar dacă se vor impune unei
restricţii de acces pentru unele grupuri de membri. Gruparea datelor într-o colecţie
unica de date face posibil ca utilizatorul să poată obţine toate datele legate logic de
o dată elementară de care el are nevoie pentru a-şi desfăşura activitatea în cadrul
companiei.
Micşorarea redundanţei datelor. Membrii organizaţiei vor avea acces la
aceeaşi colecţie de date in loc să-şi creeze fiecare propria colecţie de date, care
înseamnă de fapt existenţa aceloraşi date in mai multe colecţii (multiplicarea unor
seturi de date). Rămân multiplicate numai acele date care trebuie să asigure
7
coerenţa bazei de date. Prin eliminarea datelor multiplicate se micşorează şi spaţiul
de memorie externa alocat pentru colecţia de date şi timpul de actualizare a
colecţiei de date deoarece o dată va fi actualizată o singură dată, în cadrul colecţiei
şi nu de mai multe ori, in fiecare fişier de date în care apare.
Consistenţa datelor. Actualizarea datelor din baza de date este percepută de
fiecare utilizator al bazei de date, nu numai de utilizatorii din compartimentul care
gestionează acele date. Deoarece nu mai există mai multe copii ale aceloraşi date
se elimina situaţiile în care pot să apară valori diferite pentru aceeaşi data.
Integritatea datelor. Un alt efect al eliminării redundanţei datelor este
integritatea datelor, deoarece datele vor fi actualizate într-un singur loc (în baza de
date) şi nu în fiecare colecţie de date (în fişierele de date). În plus, pot fi adăugate
diferite proceduri pentru validarea datelor introduse sau actualizate. Astfel, nu mai
există riscul să apară neconcordanţe între datele care corespund aceloraşi
informaţii, dar care aparţin unor colecţii diferite de date, sau riscul ca datele să fie
incorecte (să nu aparţină domeniului de definiţie).
Securitatea datelor. Se poate asigura mult mai uşor pentru o singură
colecţie de date (baza de date) decât pentru mai multe colecţii de date (fişierele de
date). Astfel, numai utilizatorii autorizaţi vor avea acces la un anumit set de date
din colecţia de date.
Controlul centralizat al datelor. Prin stabilirea unui administrator al bazei
de date se poate asigura controlul tuturor datelor din colecţia de date (baza de
date), decât în cazul colecţiilor de date independente (fişierele de date) unde fiecare
utilizator îşi exercită controlul la nivelul propriei colecţii de date.
Transparenţa. Utilizatorul poate obţine informaţii din baza de date fără să
cunoască toată organizarea ei complexă.
Dezvoltarea standardelor. Se pot dezvolta standarde referitoare la bazele de
date atât la nivelul organizării, cât şi la nivelul limbajelor pentru manipularea şi
interogarea datelor, standarde care să permită transferul datelor dint-o baza de date
în alta. Cererea de dare se poate face prin intermediul unui limbaj simplu, prin
precizarea criteriului de selectare a datelor şi a modului de prezentare a
informaţiilor.
Independenţa datelor. Se asigură doua tipuri de independenţă a datelor:
independenţă fizică şi independenţă logică.
Independenţa fizică înseamnă independenţa datelor faţă de programele de
aplicaţie, adică orice modificare a structurii datelor nu afectează programul de
aplicaţie şi reciproc, orice modificare a programului de aplicaţie nu afectează
structura de dare.
Independenţa logică înseamnă independenţa fiecărei scheme particulare
unui utilizator faţă de schema generală, adică pot fi definite noi câmpuri şi pot fi
adăugate noi înregistrări în baza de date fără să fie afectaţi utilizatorii care nu au
nevoie de ele. În plus, baza de date poate fi reorganizată (pot fi regrupate
câmpurile din înregistrări) pentru a face fată cerinţelor unui nou utilizator, fără a fi
afectaţi vechii utilizatori. Eliminarea unor entităţi din baza de date poate afecta însă
utilizatorii care fac referiri la acele entităţi.

8
2.1.2. Scurt istoric

Calculatoarele au fost folosite încă din 1950 pentru stocarea şi procesarea


datelor. Un deziderat major al sistemelor informatice este de a realiza produse
software care să localizeze eficient datele pe suportul fizic şi să-l încarce rapid în
memoria internă pentru procesare. La baza unui sistem informatic se află un set de
fişiere memorate permanent pe unul sau mai multe suporturi fizice.

Gama largă de aplicaţii ale informaticii necesită acces rapid la mari cantităţi
de date. Iată câteva exemple:
• sistemele computerizate de marcare din supermarketuri trebuie să
traverseze întreaga linie de produse din magazin;
• sistemele de rezervare a locurilor la liniile aeriene sunt folosite în
mai multe locuri simultan pentru a plasa pasageri la numeroase zboruri la date
diferite;
• calculatoarele din biblioteci stochează milioane de intrări şi accesează
citaţii din sute de publicaţii;
• sistemele de procesare a tranzacţiilor în bănci şi casele de brokeraj
păstrează conturi care generează fluxul mondial de capital;
• motoarele de căutare World Wide Web scanează sute de pagini Web
pentru a produce răspunsuri cantitative la interogări aproape instantaneu;
• sute de mici întreprinzători şi organizaţii utilizează bazele de date pentru
a stoca orice de la inventare şi personal la secvenţe ADN şi informaţii despre
obiecte provenite din săpături arheologice.
Un produs software care presupune managementul fişierelor suportă
descompunerea logică a unui fişier în înregistrări. Fiecare înregistrare descrie o
entitate şi constă dintr-un număr de câmpuri, unde fiecare câmp dă valori unei
anumite proprietăţi (sau atribut) al entităţii.
Problemele reale ale procesării datelor solicită frecvent legarea datelor din
mai multe fişiere. Astfel, în mod natural s-au conceput structuri de date şi
programe de manipulare a datelor care să suporte legarea înregistrărilor din fişiere
diferite.
Au fost create, pentru a suporta legarea înregistrărilor de tipuri diferite,
trei modele de baze de date:

9
• modelul ierarhic: tipurile înregistrărilor sunt legate într-o structură
arborescentă exemplu înregistrările unor angajaţi s-ar putea grupa după o
înregistrare care să descrie departamentele în care aceştia lucrează); IMS
(Information Management System produs de IBM) este un exemplu de astfel
de sistem;
• modelul reţea : se pot crea legături arbitrare între diferitele tipuri de
înregistrări (de exemplu înregistrările unor angajaţi s-ar putea lega pe de o
parte de o înregistrare care să descrie departamentele în care aceştia lucrează
şi pe de altă parte supervizorii acestora care sunt de asemenea angajaţi);
• modelul relaţional: în care toate datele sunt reprezentate într-o formă
tabelată simplă.
În modelul relaţional descrierea unei entităţi particulare este dată de setul
valorilor atributelor, stocate sub forma unei linii în tabel şi numită relaţie. Această
legare a n valori de atribute furnizează cea mai potrivită descriere a entităţilor din
lumea reală.
Modelul relaţional suportă interogări (cereri de informaţii) care implică
mai multe tabele prin asigurarea unor legături între tabele (operaţia join) care
combină înregistrări cu valori identice ale unor atribute ale acestora.
Statele de plată, de exemplu, pot fi stocate într-un tabel iar datele
personalului beneficiar în altul. Informaţiile complete pentru un angajat pot fi
obţinute prin reunirea acestor tabele (join) pe baza numărului personal de
identificare.
Pentru a suporta o varietate de astfel de structuri de baze de date, o largă
varietate a software denumită sistem de gestiune a bazelor de date este necesară
pentru a stoca şi reda datele şi pentru a pune la dispoziţia utilizatorului posibilitatea
de a interoga şi actualiza baza de date.

În 1970, Ted Codd (IBM, părintele SQL), nemulţumit de performanţele


COBOL şi IMS formulează principiul de lucru al bazelor de date relaţionale.
Codd afirmă că SGBD trebuie să recunoască comenzi simple şi trebuie să fie
aproape de utilizatori prin punerea împreună a comenzilor potrivite pentru găsirea
a ceea ce se doreşte. Ceea ce Codd numeşte model relaţional se bazează pe două
puncte cheie:
• să furnizeze un mod de descriere a datelor cu numai cu structura lor
naturală, ceea ce înseamnă că trebuie realizat acest lucru fără impunerea nici
unei structuri adiţionale pentru scopuri de reprezentare în calculator;
• de asemenea, să furnizeze baza pentru un limbaj de date de nivel înalt care

10
va conduce la o maximă independenţă între programe, pe de o parte, şi
reprezentarea în calculator, pe de altă parte.
Cu alte cuvinte modelul relaţional consistă din:
• independenţa datelor faţă de hardware şi modul de memorare;
• navigarea automată sau un limbaj de nivel înalt neprocedural pentru
accesarea datelor;
În loc ca să se proceseze câte o înregistrare, programatorul utilizează
limbajul pentru a specifica operaţii unice care trebuie realizate asupra întregului set
de date. Limbajele de generaţia a 4-a (4th GLs) sunt mai aproape de limbajul uman ca
limbajele de nivel înalt (de generaţia a 3-a, 3th GLs). Primele dintre acestea sunt
FOCUS (Information Builders) SQL (IBM), QBE (Querry by example, IBM),
dBASE (succesorul lui SQL). Necesitatea pentru mai multă flexibilitate şi
performanţă din partea modelelor de date cum ar fi de a suporta aplicaţiile ştiinţifice
sau inginereşti a făcut ca să se extindă conceptul de model relaţional aşa încât
intrările în tabele să nu mai fie simple valori ci să poată fi programe, texte,
date nestructurate mari în formă binară sau orice alt format solicitat de
utilizator.
Un alt progres s-a făcut prin încorporarea conceptului de obiect devenit
esenţial în limbajele de programare. În bazele de date orientate obiect toate datele
sunt obiecte. Obiecte se pot lega între ele printr-o relaţie de apartenenţă pentru a
forma o familie mai largă şi mai diversă de obiecte (în anii '90 au fost lansate
primele sisteme de management orientat obiect OODMS). Datele care descriu un
transport pot fi stocate, de exemplu, ca familie mai largă care poate conţine
automobile, vapoare, vagoane, avioane. Clasele de obiecte pot forma ierarhii în
care obiecte individuale pot moşteni proprietăţi de la obiectele situate deasupra în
ierarhie. Bazele de date multimedia, în care vocea, muzica şi informaţia video se
stochează împreună cu informaţiile de tip text, devin tot mai frecvente şi îşi
imprimă trendul în dezvoltarea sistemelor de gestiune a bazelor de date
orientate obiect.

Modelul de date reprezintă ansamblul de concepte şi instrumente necesare


pentru a construi o schemă a bazei de date. Modelarea datelor poate viza totalitatea
datelor din cadrul bazei de date (schema/arhitectura datelor) sau o parte a acestora
(subscheme ale bazei de date). Schema şi subschema bazei de date sunt modelele
logice ale bazei de date, care au asociate principii generale pentru
gestionarea/definirea (structurarea) datelor, manipularea şi asigurarea integrităţii
datelor, fără a reflecta modul de reprezentare şi stocare a acestor date pe suportul
11
de memorie (care sunt atributele modelului fizic). Se cunosc mai multe tipuri
de baze de date după modul de organizare, modul de dispunere pe suport
magnetic a informaţiei şi a elementelor componente:
- modele primitive: datele sunt organizate la nivel logic în fişiere,
structura de bază este înregistrarea, mai multe înregistrări fiind grupate în
structuri de tip fişier;
- baze de date ierarhice - legăturile dintre date sunt ordonate unic,
accesul se face numai prin vârful ierarhiei, un subordonat nu poate avea decât un
singur superior direct şi nu se poate ajunge la el decât pe o singură cale;
- baze de date în reţea: datele sunt reprezentate ca într-o mulţime de
ierarhii, în care un membru al ei poate avea oricâţi superiori, iar la un subordonat se
poate ajunge pe mai multe căi;
- baze de date relaţionale : structura de bază a datelor este aceea de
relaţie - tabel, limbajul SQL (Structured Query Language) este specializat în
comenzi de manipulare la nivel de tabel. Termenul relaţional a fost introdus de un
cercetător al firmei IBM dr. E. F. Codd în 1969 cel care a enunţat cele 13 reguli de
bază necesare pentru definerea unei baze de date relaţionale. Baza de date relaţională
reprezintă o mulţime structurată de date, accesibile prin calculator, care pot satisface
în timp minim şi într-o manieră selectivă mai mulţi utilizatori. Această mulţime de
date modelează un sistem sau un proces din lumea reală şi serveşte ca suport unei
aplicaţii informatice;
- baze de date distribuite: sunt rezultatul integrării tehnologiei bazelor de
date cu cea a reţelelor de calculatoare. Sunt baze de date logic integrate, dar fizic
distribuite pe mai multe sisteme de calcul. Integrarea bazei de date distribuite se
face cu ajutorul celor 3 tipuri de de scheme care sunt implementate:
1. schema globală- defineşte şi descrie toate informaţiile din baza
de date distribuită în reţea;
2. schema de fragmentare - descrie legăturile dintre o colecţie
globală şi fragmentele sale. Ea este de tipul unu la mai mulţi şi are forma unei
ierarhii;
3. schema de alocare - descrie modul de distribuire a segmentelor pe
calculatoarele (nodurile) din reţea. Fiecare segment va avea o alocare fizică pe unul
sau mai multe calculatoare. Schema de alocare introduce o redundanţă minimă şi
controlată: un anumit segment se poate regăsi fizic pe mai multe calculatoare.
Utilizatorul unei asemenea baza de date o vede ca pe o bază de date unică,
compactă (nivel logic), cu toate că în realitate ea este distribuită pe mai
multe calculatoare legate în reţea (nivel fizic). Această organizare a dus la o
creştere substanţială a vitezei de acces la o bază de date într-o reţea de calculatoare.
Anumite date stocate pe un server local sunt mult mai rapid accesate decât dacă
ele s-ar afla pe un server la distanţă, unde baza de date ar fi fost stocată în
întregime (nedistribuită);
- -modele semantice: orientate spre obiecte. Aceste modele sunt
orientate pe reprezentarea semnificaţiei datelor. Structura de bază folosită pentru
reprezentarea datelor este cea de clasă de obiecte definită prin abstractizare din
entitatea fizică pe care o regăsim în lumea reală. Aici există entităţi simple şi clase
de entităţi care se reprezintă prin obiecte simple sau clase de obiecte, ordonate în
ierarhii de clase şi subclase. Acest tip de bază de date a apărut din necesitatea
gestionării obiectelor complexe: texte, grafice, hărţi, imagini, sunete (aplicaţii
12
multimedia) şi a gestionării obiectelor dinamice: programe, simulări.

2.1.3. Nivelul de organizare a datelor într-o bază de date


Datele dintr-o bază de date pot fi structurate pe 3 niveluri, în funcţie de categoria de
personal implicată:
- nivelul conceptual (global): exprimă viziunea administratorului bazei de
date asupra datelor. Acestui nivel îi corespunde structura conceptuală
(schema) a bazei de date, prin care se realizează o descriere a tuturor
datelor, într-un mod independent de aplicaţii, ce face posibilă
administrarea datelor.

- nivelul logic: exprimă viziunea programatorului de aplicaţie asupra datelor.


La acest nivel se realizează o descriere a datelor corespunzătoare unui anumit
program de aplicaţie.
- nivelul fizic: care exprimă viziunea inginerului de sistem asupra datelor.
Corespunde schemei interne a bazei de date prin care se realizează o descriere a
datelor pe suport fizic de memorie.

2.1.4. Sistemul de gestiune a bazelor de date

Pentru gestiunea datelor din baza de date trebuie să folosiţi un Sistem


de Gestiune a Bazelor de Date (SGBD). Sistemele de gestiune a bazelor de
date (SGBD) sunt sisteme informatice specializate în stocarea şi prelucrarea unui
volum mare de date, numărul prelucrărilor fiind relativ mic.
Termenul de bază de date se va referi la datele de prelucrat, la
modul de organizare a acestora pe suportul fizic de memorare, iar termenul
de gestiune va semnifica totalitatea operaţiilor ce se aplică asupra datelor din baza
de date.
SGBD este format din programe de software care interacţionează cu
programele de aplicaţie ale utilizatorilor şi cu baza de date. Sistemul de gestiune
al bazei de date asigura realizarea următoarelor activităţi:
- definirea structurii bazei de date;
- încărcarea datelor în baza de date;
- accesul la date (interogare, actualizare);
- întreţinerea bazei de date (colectarea şi reutilizarea spatiilor goale,
refacerea bazei de date în cazul unui incident);
- reorganizarea bazei de date (restructurarea şi modificarea strategiei de
acces);
- integritatea datelor;

13
- securitatea datelor.
Aşadar, sistemul de gestiune al bazei de date apare ca un sistem
complex de programe care asigura interfaţa între o baza de date şi utilizatorii
acestuia.
În plus un SGBD mai asigură şi alte servicii:
- suport pentru limbaj de programare;
- interfaţă cât mai atractivă pentru comunicare cu utilizatorul;
- tehnici avansate de memorare, organizare, accesare a datelor din baza de
date;
- utilitare încorporate: sistem de gestiune a fişierelor, liste, tabele etc.;
- -“help” pentru ajutarea utilizatorului în lucrul cu baza de date.
Apariţia şi răspândirea reţelelor de calculatoare a dus la dezvoltarea SGBD-
urilor în direcţia multiutilizator: mai mulţi utilizatori folosesc simultan aceeaşi bază
de date.
Principalul avantaj al reţelelor a fost eficienţa mult sporită de utilizare a
resurselor sistemelor de calcul: la o bază de date aflată pe un server central au
acces simultan mai mulţi utilizatori, situaţi la distanţă de server, de unde rezultă o
bună utilizare a resurselor server-ului şi o economie de memorie datorată memorării
unice a bazei de date.

Un SGBD este dotat cu un limbaj neprocedural de interogare a bazei de date


SQL care permite accesul rapid şi comod la datele stocate în baza de date.
În arhitectura unui sistem de baze de date SGBD ocupă locul central. Un
SGBD este un ansamblu complex de programe care asigură interfaţa între o
bază de date şi utilizatorii acesteia. SGBD este componenta software a unui sistem
de baze de date care interacţionează cu toate celelalte componente ale acestuia
asigurând legătura şi interdependenţa între ele.
Programele de aplicaţii sunt uşor de scris deoarece ele descriu datele folosind
modelul conceptual al bazei de date (numele entităţilor care formează baza de date) şi
nu structura fizică a datelor înregistrate pe suportul de memorare. Sistemul de gestiune
a bazelor de date furnizează instrumentele necesare pentru manipularea datelor, dintre
care cele mai importante sunt:
- căutarea uneia sau mai multor entităţi care îndeplinesc anumite criterii;
- sortarea în diferite moduri a diferitelor entităţi din baza de date;
- generarea unor rapoarte folosind datele stocate în baza de date;
- generarea unor formulare pentru introducerea şi validarea datelor.
În cazul bazelor de date, pentru asigurarea independenţei datelor,
organizarea trebuie să se facă pe cel puţin trei niveluri:
- Nivelul intern sau baza de date fizică este reprezentat de colecţia de
fişiere înregistrate pe suportul de memorare, fişiere care conţin datele propriu-zise

14
dar şi informaţii suplimentare, necesare accesului la datele din baza de date.
- Nivelul conceptual reprezintă descrierea unităţilor logice din care este
formata baza de date şi a legăturilor dintre ele. Tot în modelul conceptual sunt
specificate constrângerile aplicate asupra datelor, care determină restricţii ale
operaţiilor de actualizare. Ele sunt necesare pentru asigurarea integrităţii datelor.
- Nivelul extern reprezintă modelul extern cu care operează utilizatorul
bazei de date. Acesta este format din unităţile logice de la nivelul conceptual cu
care operează un utilizator sau un grup de utilizatori. Pentru modelul extern se mai
foloseşte si termenul de vizualizare sau tabel virtual, deoarece se defineşte pe baza
unei expresii relaţionale aplicate câmpurilor din tabelele reale de fiecare dată când
este folosita. Cea mai importantă utilitate a unei vizualizări este aceea că prin
intermediul ei se poate controla accesul unui grup de utilizatori la baza de date.
Deoarece utilizatorul are acces la baza de date nu prin modelul conceptual, ci prin
vizualizări, acestea pot să ascundă unui utilizator acele unităţi logice la care nu are
drept de acces. Vizualizările pot să controleze şi operaţiile pe care le poate executa
cu unităţile logice: unele vizualizări îi permit numai să le consulte.
Un SGBD trebuie să asigure următoarele activităţi:
- definirea şi descrierea structurii bazei de date: se realizează printr-un
limbaj propriu, limbaj de definire a datelor (LDD), conform unui anumit model de
date;
- încărcarea datelor în baza de date: se realizează prin comenzi în
limbaj propriu, limbaj de manipulare a datelor (LMD);
- accesul la date : se realizează prin comenzi specifice din limbajul de
manipulare a datelor. Accesul la date se referă la operaţiile de interogare şi
actualizare. Interogarea este complexă şi presupune vizualizarea, consultarea,
editarea de situaţii de ieşire (rapoarte, liste, regăsiri punctuale). Actualizarea
presupune trei operaţiuni: adăugare, modificare efectuate prin respectarea
restricţiilor de integritate ale BD şi ştergere;

- întreţinerea bazei de date: se realizează prin utilitare proprii ale SGBD;


- reorganizarea bazei de date: se face prin facilităţi privind actualizarea
structurii de date şi modificarea strategiei de acces. Se execută de către
administratorul bazei de date;
- securitatea datelor: se referă la asigurarea confidenţialităţii datelor prin
autorizarea şi controlul accesului la date, criptarea datelor.

Un SGBD are rolul de a furniza suportul software complet pentru dezvoltarea


de aplicaţii informatice cu baze de date. El trebuie să asigure:

- minimizarea costului de prelucrare a datelor,

- reducerea timpului de răspuns,

- flexibilitatea aplicaţiilor şi

15
- protecţia datelor.

Pentru satisfacerea performanţelor enumerate, SGBD trebuie să asigure un


minim de obiective.
1. Asigurarea independenţei datelor: trebuie privită din două puncte de
vedere:
- independenţa logică: se referă la posibilitatea adăgării de noi tipuri de
înregistrări de date sau extinderea structurii conceptuale, fără a determina
rescrierea programelor de aplicaţie;
- independenţa fizică: modificarea tehnicilor fizice de memorare fără a
determina rescrierea programelor de aplicaţie.
2. Asigurarea redundanţei minime şi controlate a datelor: stocarea
informaţiilor în bazele de date se face astfel încât datele să nu fie multiplicate.
Totuşi, pentru a îmbunătăţi performanţele legate de timpul de răspuns, se
acceptă o anumită redundanţă a datelor, controlată, pentru a asigura
coerenţa bazei de date şi eficienţa utilizării resurselor hardware.
3. Asigurarea facilităţilor de utilizare a datelor: presupune ca SGBD-
ul să aibă anumite componente specializate pentru:

- folosirea datelor de către mai mulţi utilizatori în diferite aplicaţii: datele


de la o aplicaţie trebuie să poată fi utilizate şi în alte aplicaţii.

- accesul cât mai simplu al utilizatorilor la date: fără ca ei să fie nevoiţi să


cunoască structura întregii baze de date; această sarcină cade în seama
administratorului bazei de date.
- existenţa unor limbaje performante de regăsire a datelor: care permit
exprimarea interactivă a unor cereri de regăsire a datelor.

- sistemul de gestiune trebuie să ofere posibilitatea unui acces


multicriterial la informaţiile din baza de date: spre deosebire de sistemul clasic
de prelucrare pe fişiere unde există un singur criteriu de adresare, cel care a stat
la baza organizării fişierului.

4. Asigurarea securităţii datelor împotriva accesului neautorizat.


5. Asigurarea coerenţei şi integrităţii datelor împotriva unor ştergeri
intenţionate sau neintenţionate: se realizează prin intermediul unor
proceduri de validare, a unor protocoale de control concurent şi a unor
proceduri de refacere a bazei de date.
6. Asigurarea partajabilităţii datelor: se referă pe de o parte la asigurarea
accesului mai multor utilizatori la aceleaşi date şi de asemenea la
posibilitatea dezvoltării unor aplicaţii fără a se modifica structura bazei de
date.
7. Asigurarea legăturilor între date: corespund asocierilor care se pot
16
realiza între obiectele unei aplicaţii informatice. Orice SGBD trebuie să
permită definirea şi descrierea structurii de date, precum şi a legăturilor dintre
acestea, conform unui model de date (de exemplu modelul relaţional).
8. Administrarea şi controlul datelor: sunt asigurate de SGBD, în sensul că
datele pot fi folosite de mai mulţi utilizatori în acelaşi timp, iar utilizatorii pot
avea cerinţe diferite şi care pot fi incompatibile. SGBD trebuie să rezolve
probleme legate de concurenţă la date, problemă care apare mai ales în lucrul în
mediu de reţea de calculatoare.
Evidenţiem următoarele funcţii ale unui SGBD.
- funcţia de descriere a datelor: se face cu ajutorul LDD, realizându-se
descrierea atributelor din cadrul structurii BD, legăturile dintre entităţile BD,
se definesc eventualele criterii de validare a datelor, metode de acces la date,
integritatea datelor. Concretizarea acestei funcţii este schema BD.
- funcţia de manipulare: este cea mai complexă şi realizează actualizarea şi
regăsire a datelor;
- funcţia de utilizare: asigură mulţimea interfeţelor necesare pentru
comunicare a tuturor utilizatorilor cu BD.
- funcţia de administrare: administratorul este cel care realizează schema
conceptuală a bazei de date, iar în perioada de exploatare a BD autorizează
accesul la date, reface baza în caz de incident.
- funcţia de protecţie a bazei de date - ansamblul de măsuri necesare pentru
asigurarea integrităţii (semantică, acces concurent, salvare/restaurare) şi
securităţii datelor (autorizare acces, utilizare viziuni, criptare).

Fig.1 Funcţiile unui SGBD

17
2.1.5. Regulile lui Codd

Definirea unui SGBDR impune o detaliere a caracteristicilor pe care trebuie


să le prezinte un SGBD pentru a putea fi considerat relaţional. În acest sens, Codd a
formulat 13 reguli care exprimă cerinţele pe care trebuie să le prezinte un
SGBD ca să fie relaţional. Deşi reguli au stârnit o serie de controverse, eu le voi
prezenta în continuare, ele fiind deosebit de utile în evaluarea unui SGBDR.
R1: Regula privind gestionarea datelor la nivel de relaţie
Sistemul trebuie să gestioneze baza de date numai prin mecanisme relaţionale.
Acest lucru înseamnă că sistemul trebuie să-şi îndeplinească toate
funcţiile prin manipulări în care unitatea de informaţie să fie mulţimea (relaţia),
adică să utilizeze limbaje, precum SQL, care să opereze la un moment dat pe o
întreagă relaţie. Deci SGBD nu trebuie să accepte operaţii non-relaţionale care să
îndeplinească operaţiile de definire şi manipulare a datelor.
Unele sisteme utilizează mecanisme releţionale numai pentru o parte din
funcţii, în special pentru interogare. Aceste sisteme se numesc sisteme cu interfaţă
relaţională ţi nu SGBDR.
R2: Regula privind reprezentarea logică a datelor
Toate datele din baza de date relaţională trebuie să fie reprezentate explicit
la nivel logic, într-un singur mod, şi anume ca valori în tabele de date. Aceste
lucru înseamnă că toate datele trebuie să fie memorate şi prelucrate în
acelaşi mod. Informaţiile privind numele de tabele,coloane, domenii, definiţiile
tabelelor virtuale, restricţii de integritate trebuie să fie memorate tot în tabele de date
(cataloage). Referinţa la nivelul logic înseamnă că construcţia fizică nu este
reprezentată şi nu necesită explicaţie.

R3: Regula privind garantarea accesului la date.


Orice dată din baza de date relaţională trebuie să poată fi accesată
prin specificarea numelui da tabelă, valorii cheii primare şi numelui de coloană.
Această regulă exprimă cerinţa ca limbajul de cereri al SGBDR să permită accesul
la fiecare valoare atomică din baza de date.
R4: Regula privind valorile null
Sistemele trebuie să permită declararea să manipularea sistematică a
valorilor null, cu semnificaţia unor date lipsă sau inaplicabile. Valorile null, care
diferă de şirurile de caractere 'spaţiu' sau de şirurile vide da caractere sunt
deosebit de importante în implementarea restricţiilor de integritate (integritatea
entităţii şi integritatea referenţială ).

R5: Regula privind datele


Descrierea bazei de date trebuie să se prezinte la nivel logic în acelaşi mod
cu descrierea datelor propriu-zise, astfel încât utilizatorii autorizaţi să poată descrierii
bazei de date aceleaşi operaţii ca şi asupra datelor obişnuite.
18
Această regulă specifică că trebuie să existe un unic limbaj de
manipulare a datelor propui-zise, mai mult, există o unică structură logică folosită
pentru a depozita informaţiile de sistem.
Sisteme nu trebuie să facă diferenţieri în definirea şi tratarea datelor,
utilizând o singură structură, şi anume cea relaţionala.
R6: Regula privind facilităţile limbajelor utilizate
Un sistem relaţional trebuie să facă posibilă utilizarea mai multor limbaje, în
mai multe moduri. Trebuie să existe însă cel puţin un limbaj de nivel înalt ale cărui
instrucţiuni să poată exprima oricare din următoarele operaţii: definirea tabelelor de
date, definirea tabelelor virtuale, manipularea datelor (interactiv dau prin program),
definirea restricţiilor de integritate, autorizarea accesului, precizarea limitelor
tranzacţiilor. A se nota aici că noul standard O/I pentru SQL furnizează toate
aceste funcţii, deci orice limbaj care acceptă acest standard va satisface automat
această regulă.
R7: Regula privind actualizarea tabelelor virtuale
Toate tabelele virtuale care teoretic sunt posibil de actualizat trebuie să poată fi
efectiv actualizabile. Nu toate atributele din cadrul unei tabele virtuale, deci nu
toate tabele virtuale sunt teoretic actualizabile.

R8: Regula privind inserările, modificările şi ştergerile în baza de date


Sistemul trebuie să ofere posibilitatea manipulării unei tabele (da bază sau
virtuală) nu numai în cadrul operaţiilor de regăsire, ci şi în acţiuni de inserare,
modificare şi ştergere a datelor.
Această regulă exprimă cerinţa ca prin operaţiile în care se schimbă bazei da
date să se lucreze la un moment dat pe o întreagă relaţie.
R9: Regula privind independenţa fizică a datelor
Programele de aplicaţie nu trebuie să fie afectate de schimbările efectuate
în modul de reprezentare a datelor sau în metodele de acces. O schimbare a structurii
fizice a datelor nu trebuie să blocheze funcţionarea programelor de aplicaţie.
R10: Regula privind independenţa logică a datelor
Programele de aplicaţie nu trebuie să fie afectate de schimbările efectuate
asupra relaţiilor bazei de date, schimbări care conservă datele şi care teoretic
garantează valabilitatea programelor de aplicaţie existente.
R11: Regula privind restricţiile de integritate
Restricţiile de integritate trebuie să fie definite în limbajul utilizat de
sistem pentru definirea datelor ţi să fie memorate în cadrul bazei de date şi
nu în cadrul programului de aplicaţie.
R12: Regula privind distribuirea geografică a datelor
Limbajul de manipulare a datelor utilizat de sistem trebuie să permită ca,
în situaţia în care datele sunt distribuite, programele de aplicaţie să fie logic
aceleaşi cu cele utilizate în cazul în care datele sunt fizic centralizate.
Utilizatorul trebuie să perceapă datele ca fiind centralizate. Sarcina de
localizare a datelor, atunci când acestea sunt distribuite geografic precum şi

19
sarcina recompunerii datelor trebuie să revină sistemului şi nu utilizatorului.
R13: Regula privind prelucrarea datelor la nivelul de bază
Dacă sistemul posedă un limbaj de bază (de nivel scăzut) orientat pe prelucrare
de recorduri (tupluri) şi nu pe prelucrarea mulţimilor (relaţiilor), acest limbaj nu
trebuie să fie utilizat pentru a se evita restricţiile de integritate sau restricţiile introduse
prin utilizarea limbajelor de nivel înalt, adică accesul la toate bazele va fi controlat de
SGBDR, altfel integritate bazelor de date nu poate fi compromisă fără cunoaşterea
utilizatorului sau a administratorului bazei de date.
Pe parcursul anilor regulile lui Codd au generat o seamă de controverse.
Câteva argumente sunt că aceste reguli nu sunt mai mult decât nişte exerciţii
academice. Unele revendicări ale produselor existente sunt că ele pot îndeplini cea
mai mare parte din reguli, dar nu toate. Această discuţie a generat într-o dispută între
utilizatori şi teoreticienii proprietăţilor esenţiale ale unui SGBDR.

Pentru a accentua implicaţia regulilor lui Codd în analiza unui SGBDR,


aceste reguli au fost reorganizate în cinci categorii, şi anume:
1) Reguli fundamentale,
2) Reguli structurale,
3) Reguli privind integritatea datelor,
4) Reguli privind manipularea datelor,
5) Reguli privind independenţa datelor.

2.1.6. Proprietăţile câmpurilor bazelor de date

Într-un câmp al bazei de date pot fi păstrate date elementare. Tipul datei
elementare determina tipul câmpului. Un câmp dintr-un tabel al bazei de date mai
are si alte proprietăţi pe lângă proprietatea dată de tipul datelor. Acestea sunt:
formatul, masca de introducere, eticheta, valoarea implicita, regula de validare,
textul regulii de validare, indexarea, valoarea nula.

Formatul (format). Această proprietate controlează modul în care sistemul


de gestiune a bazelor de date afişează valoarea memorată în câmp. Pentru fiecare
tip de dată există mai multe formate de afişare.

Masca de introducere (input mask). Această proprietate controlează


iniţializarea câmpului. Prin ea se poate stabili valoarea iniţială atribuită unui câmp
la adăugarea unei înregistrări în tabel. De exemplu, pentru câmpurile de tip dată
calendaristică se pot stabili ca valoare iniţială data curentă, iar pentru câmpurile
logice valoarea „true”.

Regula de validare (validation rule). Această proprietate controlează


valorile datelor introduse în câmp. Regula de validare se exprimă printr-o condiţie
logică, ce trebuie să aibă valoarea „true” după ce se introduce valoarea câmpului.

20
Textul regulii de validare (validation text). Această proprietate controlează
textul afişat in cazul în care datele introduse în câmp nu respectă regula de validare
(în cazul în care condiţia logică pentru validare are valoarea „false” după
introducerea câmpului ).

Indexarea (index). Această proprietate controlează dacă acel câmp este


folosit pentru indexare. Indexarea este o tehnologie utilizată de sistemele de
gestiune a bazelor de date care permite ordonarea logică, după un anumit criteriu, a
înregistrărilor dintr-un tabel, la exploatarea sau vizualizarea datelor din tabel, fără
să fie afectată ordinea fizică a înregistrărilor din tabel.

Valoarea nulă (NULL). Această proprietate este utilă pentru a face


deosebirea între un câmp în care utilizatorul nu a introdus date şi un câmp în care a
introdus o dată neutra cum ar fi 0 pentru datele numerice, şirul vid pentru şiruri de
caractere de lungime zero etc.

2.2. Limbajul SQL


Un sistem de management al bazei de date necesită un limbaj de interogare
pentru a permite utilizatorului să acceseze datele. SQL (iniţial numit SEQUEL, ca
limbaj de interogare structurată) este limbajul standardizat ANSI si ISO, utilizat de
majoritatea sistemelor ce manevrează baze de date relaţionale.
SQL poate fi folosit în două moduri:
- direct la terminal, adică în mod comandă
- în cadrul unor programe scrise într-un limbaj de programare, precum C++,
sau Visual Basic.

Prima versiune standardizată a SQL a apărut în 1986 şi conţine construcţiile


de bază ale limbajului pentru definirea şi manipularea tabelelor de date. O revizie în
1989 a adăugat limbajului extensii pentru integritatea referenţială şi
generalizează constrângerile de integritate. O altă extensie în 1992 furnizează
facilităţi în manipularea schemelor şi administrarea datelor şi de asemenea
substanţiale îmbunătăţiri în ceea ce priveşte definirea şi manipularea datelor.
Dezvoltarea sistemului este în desfăşurare pentru a face din acesta un limbaj
computaţional complet pentru definirea şi managementul obiectelor complexe
persistente. Aceasta include generalizarea şi specializarea ierarhiilor, moştenire
multiplă, tipuri de dată utilizator, generatoare şi construcţii declarative, suport
pentru sistemele bazate pe cunoştinţe, expresii interogative recursive şi
instrumente adiţionale de administrare a datelor. Include de asemenea tipuri
abstracte de date, identificatori de obiecte, metode, moştenire, polimorfism,

21
încapsulare şi toate celelalte facilităţi care sunt asociate uzual cu managementul
datelor de tip obiect.
În prezent, industria bazelor de date, ca segment al industriei de software
generează anual aproximativ 8 miliarde de dolari. Companiile care deţin supremaţia
pe acest segment de piaţă sunt IBM, Oracle, Informix, Sybase, Teradata (NCR),
Microsoft, Borland.

2.2.1. Caracteristicile limbajului SQL

SQL, ca şi majoritatea limbajelor de programare, foloseşte cuvinte din


limba engleză. SQL este un limbaj neprocedural: specifică care sunt informaţiile
dorite, nu cum se obţin acestea. Cu alte cuvinte, SQL nu cere să fie specificată
metoda de acces la date. Execuţia comenzilor SQL asupra înregistrărilor nu se poate
face decât secvenţial, asupra câte unei singure înregistrări. Setul de înregistrări fiind
văzut ca set de linii ale unui tabel.
SQL poate fi folosit de un şir de utilizatori, incluzând administratorul bazei
de date, programatorii de aplicaţii, personalul de management şi multe alte tipuri de
utilizatori.
SQL include comenzi pentru o varietate de sarcini, incluzând:
- selecţia unor date
- inserarea, extragerea şi ştergerea rândurilor dintr-un tabel
- crearea, modificarea şi ştergerea obiectelor de tip bază de date
- controlul accesului la baza de date şi la obiectele de tip bază de date o
verificarea - garantarea consistenţei bazei de date
La început, sistemele de management a bazelor de date au utilizat un
limbaj separat pentru fiecare categorie de sarcini în parte. SQL le-a unificat pe toate
acestea într-un singur limbaj.

Logic, comenzile limbajului SQL sunt împărţite în trei componente:


- limbajul de definire a datelor (Data Definition Language) -DLL;
- limbajul de manipulare a datelor (Data Manipulation Language)-
DML;
- limbajul de control al datelor (Data Control Language)-DCL.

Primul pentru crearea structurii de bază de date, al doilea pentru a adăuga date in

22
tabele şi pentru a le manipula. A treia componenta oferă posibilitatea de a proteja
(securiza) datele.

2.2.2. Setul de comenzi SQL

Comenzile de definire a datelor(DLL): CREATE, ALTER, DROP sunt


comenzi utilizate dinamic pentru a crea, utiliza şi şterge orice structură de date, în
particular tabele.

Comenzile de manipulare a datelor(DML): INSERT, UPDATE, DELETE si


SELECT utilizate pentru a introduce noi rânduri, pentru a schimba(actualiza)
rândurile existente, pentru a şterge rândurile nedorite din baza de date si cea mai
utilizata comandă, comanda de selecţie folosită pentru a căuta, a selecta înregistrări
din tabel sau dintr-o combinaţie de tabele ale bazei de date.

Comenzile de control(grupul DCL), la dispoziţia administratorului: GRANT,


REVOKE utilizate pentru a oferi sau lua drepturi de acces (la comenzi DML, deci
la operarea unor modificări a bazei de date).
Sintaxa comenzilor diferă de la un grup la altul. Când scriem comenzi SQL,
este important să ne reamintim câteva reguli simple pentru construirea unor
declaraţii valide care sunt uşor de citit şi de editat:
- Comenzile SQL pot fi scrise pe una sau mai multe linii.
- Clauzele sunt uzual plasate pe linii separate.
- Poate fi folosită tabelarea
- Cuvintele de comanda nu pot fi separate pe mai multe linii.
- Comenzile SQL pot fi scrise fie cu majuscule fie cu minuscule (nu sunt
„case sensitive”).
- O comandă SQL este introdusă la prompterul SQL, iar liniile
subsecvenţelor sunt numerotate.
- O singură declaraţie poate fi considerată curentă, cât timp ea este într-un
buffer şi poate fi rulată într-un anumit număr de moduri:
a) plasând un punct şi virgulă la sfârşitul ultimei clauze;
b) Plasând un punct şi virgulă urmat de semnul „slash” pe ultima linie
în buffer;
c) Plasând un „slash” la prompterul SQL.

Comanda SELECT

Este cea mai utilizată comandă a limbajului SQL. Permite interogarea


structurilor de date şi returnarea unui set de date care îndeplinesc anumite condiţii.

Operaţia fundamentală în SQL este maparea , reprezentată din punct de


vedere sintactic printr-o construcţie SELECT-FROM-WHERE ( construcţie

23
select). Construcţia aceasta corespunde unei succesiuni de operatori algebrici de
forma selecţie-proiecţie-cuplare. Clauza SELECT realizează operaţia de proiecţie
si este urmată de lista atributelor care se reţin în relaţia rezultat. Eliminarea tuplelor
duplicate, atunci când este necesară, trebuie solicitată în mod explicit de către
utilizator prin folosirea operatorului DISTINCT.

Operaţia de cuplare se realizează cu ajutorul clauzei FROM, atunci când ea


este urmată de o lista formată din cel puţin două nume de relaţie, împreună cu
condiţia de cuplare formulată în cadrul predicatului din clauza where. Selecţia este
realizată prin cea de-a treia clauză WHERE, care de cele mai multe ori este urmată
de un predicat (calificator) referitor la atributele relaţiei sau relaţiilor din clauza
FROM.

Sinataxa completă a construcţiei SELECT este următoarea:

SELECT [DISTINCT] nume_atribut1…


FROM nume_relaţie…
[ WHERE calificator1]
[GROUP BY nume_atribut2…
[HAVING calificator2]]
[ORDER BY nume_atribut3 [ASC|DESC]…]

Comenzi de ştergere, inserare şi actualizare

Fiecare dintre cele trei comenzi care urmează a fi prezentate în continuare


acţionează la un moment dat asupra unei singure relaţii.

Comanda SQL pentru efectuarea operaţiilor de ştergere este DELETE FROM, a


cărei sintaxa completă este:

DELETE FROM nume_relaţie


[WHERE calificator]

Comandă SQL pentru inserare este INSERT INTO şi prezintă două variante:

- inserare simplă- pentru inserarea unei tuple individuale;


- inserare multiplă- pentru inserarea a mai multor tuple.

Comanda pentru inserare simplă are sintaxa:

24
INSERT INTO nume_relaţie (nume_atribut…)
VALUES (valoare…)

Între valori şi numele de atribute trebuie să existe o corespondentă unu la unu.


Pentru atributele care acceptă valoarea NULL specificarea unei valori în comanda
de inserare este opţională.

Comanda pentru inserare multiplă are sintaxa:

INSERT INTO nume_relaţie (nume_atribut…)


construcţie_select şi permite adăugarea la relaţia specificată a unei mulţimi de
tuple (relaţie) care se obţine ca rezultat al unei construcţii SELECT.

Comanda SQL pentru actualizarea tuplelor este UPDATE şi are sintaxa:

UPDATE nume_relaţie [variabila_de_tupla]


SET nume_atribut=expresie_de_actualizare…
[WHERE calificator]

Operatorul de actualizare îndeplineşte două funcţii:

- selectează prin condiţia de căutare din clauza WHERE tuplele care


urmează a fi actualizate (dacă nu am WHERE se actualizează implicit
toate tuplele)
- în tuplele selectate modifică valorile atributelor specificate.

Comanda de creare a tabelelor (relaţiilor)

Sintaxa comenzii pentru definirea relaţiilor este:

CREATE TABLE nume_relaţie (nume_atribut1 tip_data [NOT NULL],


[nume_atribut2 tip_data[NOT NULL]]…)

Comanda specifică numele relaţiei care se creează precum şi una sau mai
multe descrieri de atribute. La descrierea fiecărui atribut se specifică numele
atributului şi tipul de dată corespunzător împreună cu dimensiunea asociată.
Opţiunea NOT NULL asociată unui atribut indică faptul că în coloana
corespunzătoare acestuia nu pot să apară valori nedefnite (NULL). Această opţiune
este utilă în special în definirea atributelor care compun cheia primară a relaţiei.

25
Comanda simetrică celei de creare a unei relaţii este DROP TABLE, care şterge
relaţia respectivă. Sintaxa comenzii este următoarea:

DROP TABLE nume_relaţie.

2.3. Visual Fox Pro


Microsoft Visual FoxPro (VFP) face parte din pachetul Microsoft Visual Studio
distribuit de firma Microsoft (TM). Începând cu versiunea 6.0 lansata in 1998,
Microsoft Visual Studio este un pachet integrat, care conţine Visual Basic,
Visual C++, Visual FoxPro, InterDev, Visual J++, SourceSafe şi o bogată
documentaţie denumită MSDN (Microsoft Developer Network Library).
Utilizatorii neinformaticieni au la dispoziţie o gamă largă de generatoare pentru
ecrane, meniuri, rapoarte etc. Utilizatorii de specialitate (informaticieni) pot
dezvolta programe în limbaj propriu şi în SQL, aplicaţii (prin componentele
DESIGNER şi APPLICATION). Administratorul bazei de date are la dispoziţie
instrumente oferite de VFP pentru asigurarea securităţii şi integrităţii datelor, pentru
refacerea bazei de date etc.

2.3.1. Arhitectura VFP 6.0

Arhitectura SGBD VFP6.0 (fig.1) corespunde unui model complet


relaţional, componentele sale fiind structurate pe trei niveluri:
nucleul(kernel), interfeţele (interfaces) şi instrumentele (toolkit).
1. Nucleul - este componenta centrală a sistemului. Din nucleu fac parte:

- limbajul FoxPro care este propriu sistemului, este de tip procedural.


El conţine comenzi atât pentru descrierea datelor (LDD) cât şi
pentru manipularea datelor (LMD). Tot aici sunt incluse comenzile
pentru programarea vizuală din tehnologia orientată spre obiecte.
- nucleul extins SQL - este un subset din standardul SQL. Acesta este
un limbaj relaţional descriptiv, care conţine atât comenzi pentru
descrierea datelor (LDD) cât şi pentru manipularea datelor (LMD).

2. Interfeţele - sunt produse VFP pentru dezvoltarea aplicaţiilor cu baze de


date relaţionale. Ele au următoarele componente:

- DESIGNER - permite crearea de diferite obiecte VFP: tabele (TABLE),

26
cereri de regăsire (QUERY), videoformate (FORM), rapoarte (REPORT),
etichete (LABEL), meniuri (MENU). Un produs DESIGNER se
apelează printr-o comandă CRETE/MODIFY aferentă obiectului
respectiv. Comanda poate fi generată de sistem sau scrisă de utilizator.
- BUILDER - permite adăugarea rapidă a unor noi elemente la obiectele tip
VFP create deja cu produsul DESIGNER.
- WIZARD - permite realizarea completă şi rapidă a obiectelor de tip
VFP. Utilizarea modulului WIZARD presupune asistarea utilizatorului
de către sistem în proiectarea obiectelor. Generarea lor se face automat,
pe baza opţiunilor exprimate de utilizator, sub formă de răspuns la diferite
întrebări. Acest modul face parte din categoria instrumentelor de proiectare
asistată de calculator.
- EXPORT/IMPORT - permite schimbul de date între VFP şi alte sisteme.

- Generatoare specializate pentru realizarea proiectelor (PROJECT), a


aplicaţiilor (APP), a documentaţiei (DOC).
- API (Application Programmer’s Interface) - permite apelarea din aplicaţia
VFP a unor rutine scrise în limbajul C sau limbaj de asamblare.

3. Instrumentele - sunt produse VFP pentru întreţinerea şi exploatarea bazei


de date:

- EDITOR de texte - permite încărcarea şi editarea programelor sursă


(fişiere .PRG), precum şi a fişierelor ASCII. Apelarea editorului se poate face prin
comanda dată în fereastra Command:

MODIFY COMMAND <nume_fişier>

- UTILITARE de întreţinere - permit gestiunea fişierelor, setarea unor


parametri de lucru, activităţi desfăşurate de administratorul bazei de date.
- DEBUG - permite depanarea interactivă a programelor scrise în FoxPro.
- HELP/DEMO - permite instruirea interactivă a utilizatorilor.
- INTERNET - permite utilizarea unor servicii de Internet (mail,
transfer de fişiere etc.).
2.3.1. Modurile de lucru in VFP

După intrarea în VFP utilizatorul poate lucra în două moduri: cu meniul


sistem şi prin comenzi. Ecranul principal VFP conţine o fereastră de tip Microsoft
cu următoarele elemente (fig. 2):

27
Fig.2 Fereastra VFP

- bara de titlu pe care este scris “Microsoft Visual FoxPro” (în stânga) şi
butoanele pentru minimizare/maximizare şi închidere fereastră (dreapta).
- bara meniului sistem care conţine un meniu orizontal cu opţiunile de
lucru (modul de lucru meniu sistem):File, Edit, View, Format, Tools, Program,
Window, Help. La selectarea unei opţiuni apare un submeniu vertical, de unde se
alege mai departe subopţiunea dorită.
- bara cu instrumente care conţine butoane (icon-uri) dispuse orizontal.
Acestea pot fi active sau nu, în funcţie de starea curentă de lucru. Prin aceste
butoane se poate apela, sub o altă formă, o suboperaţiune din meniul sistem.
- fereastra de comandă care conţine un cursor şi permite introducerea unei
comenzi VFP sau apelul unui program (modul de lucru prin comenzi).
- aria de ieşire este formată din restul spaţiului neocupat din fereastra
principală unde vor fi afişate rezultatele execuţiei unei comenzi sau a unui
program VFP.

Modul de lucru meniu sistem

Este modul de lucru care permite apelarea


tuturor instrumentelor şi interfeţelor sistemului
VFP. Soluţia este adoptată de utilizatorii care preferă
dezvoltarea aplicaţiilor cu ajutorul generatoarelor.
Efortul depus este redus şi nu se programează în cod
sursă. Opţiunile din meniul principal ca şi cele din
submeniuri pot fi apelate prin mouse, sau cu o
28
combinaţie de taste. De exemplu apelarea meniului File se face tastând secvenţa
ALT/F (litera subliniată din componenţa numelui meniului).

Funcţiile opţiunilor din meniul principal al sistemului sunt:

- File - apelează instrumente pentru întreţinerea fişierelor aferente unei baze


de date VFP
o New - crează un obiect nou. Apare o listă din care putem selecta:
Project (creare proiect), Database (creare bază de date), Table (creare tabel),
Query (creare cerere),Connection (conexiune).
o View (viziune locală), Remote View
(viziune la distanţă), Form (creare unui videoformat), Report (creare
raport), Label (creare etichetă), Program (creare program sursă), Class (creare clasă
de obiecte), Text file (creare fişier text ASCII), Menu (creare meniu utilizator). În
partea dreaptă există două butoane, pentru creare fişier nou (New) şi pentru
utilizarea asistentului (Wizard).
o Open (deschide) - apare o fereastră din care alegem tipul fişierului,
directorul şi numele, cu opţiunile New, Open, Cancel.
o Close - închide fişierul deschis.
o Save/Save As - salvare, respectiv salvare cu redenumire.
o Import/Export - permite importul respectiv exportul de date cu alte
sisteme de gestiune a bazelor de date.
o Print Preview - vizualizare înainte de ieşire la imprimantă. Print - ieşire
la imprimantă.
o Send - trimite prin e-mail.
o Exit - ieşire din program.

- Edit - oferă facilităţi de lucru obişnuite într-o fereastră de editare de texte

o Undo/Redo - renuţă la ultima modificare în text / repetă ultima acţiune


în text.
o Cut/Copy/Paste - tăiere, memorare în memoria tampon, copiere la o
nouă locaţie în fişier a unui text.
o Clear - ştergere text.
o Select all - selectează întreg textul.
o Find/Fiind again/Replace - caută/caută în continuare a unui şir de
caractere/înlocuieşte şirul găsit cu un altul. Căutarea se poate face cu

29
activarea/dezactivarea opţiunii de diferenţiere între litere mari/litere mici.
- View - permite setarea unor parametri privind bara curentă de instrumente
de lucru.
- Format - permite setarea unor parametri privind litele (Font), spaţierea etc.
- Tools - permite apelul interfeţelor şi instrumentelor VFP.
- Program - permite lansarea sau oprirea unuia din paşii ce se parcurg la
execuţia unui program VFP
o Do - lansează în execuţie un program.
o Cancel - anulează execuţia programului.
o Resume - reia execuţia programului.
o Suspend - suspendă execuţia programului.
o Compile - compilează programul.
- Window - permite setarea parametrilor ferestrei curente de lucru
(inclusiv fereastra de comandă). Conţine optiuni pentru operatii cu ferestrele
document: aranjarea ferestrelor (Arrange All), ascunderea ferestrei active (Hide),
ştergerea ferestrei active (Clear), comutarea între ferestre (Cycle), deschiderea
ferestrei de comenyi (Command Window), deschiderea ferestrei pentru vizualizarea
tabelelor din baza de date deschisa şi a legăturilor dintre tabele (View Window).
- Help - apelează instrumentele pentru autodocumentare.

Datele pot fi introduse în două moduri, utilizând fie tabele


independente (File/New/Table) care nu aparţin unei baze de date, fie creând
o bază de date (File/New/Database), în care se pot introduce tabele existente
sau se pot crea noi tabele.
Deschiderea unui tabel individual, cu secvenţa File/Open/Table/nume_tabel
nu duce automat la afişarea conţinutului acestuia în spaţiul de lucru. Pentru aceasta
trebuie activat icon-ul care corespunde opţiunii Data Session, care va afişa într-o
fereastră o serie de opţiuni legate de tabel .
- Properties - pentru modificare/consultare structură tabel (nume,tip, poziţie
câmp).
- Browse - pentru afişare date/nume câmpuri.
- Open - pentru deschidere altor tabele.
- Close - închidere fişier selectat.
- Relation - stabilirea relaţiilor între tabele independente, deschise în sesiunea
curentă.

30
La alegerea opţiunii Browse (răsfoire), fie din meniul View fie din
fereastra Data Session, va apare meniul Table în bara de meniuri cu următoarele
subopţiuni:
- Go to Record - regăsirea unei înregistrări după diferiţi parametri:
număr înregistrare, deplasare la începutul/sfârşitul tabelului, localizare
înregistrare după valoarea unui câmp etc.
- Append New Record - adăgarea unei noi înregistrări.
- Append Records - adăugarea de noi înregistrări dintr-un alt fişier
- Delete Records - marcare pentru ştergere (la nivel logic).
- Recall Records - anularea marcării pentru ştergere.
- Remove Deleted Records - ştergerea definitivă din tabel a înregistrărilor
marcate (la nivel fizic).
- Replace Field - actualizare câmp înregistrare (schimbarea valorii câmpului).
- Size Field - modificarea lăţimii de afişare a câmpului în browser. Fig.7
- Move Field - schimbarea poziţiei de afişare a câmpului în browser.

În cazul în care se construieşte o aplicaţie în care vor fi folosite o gamă


largă de obiecte din VFP, (baze de date, tabele independente, cereri,
videoformate, rapoarte, etichete, programe sursă, clase de obiecte, meniuri utilizator,
icon-uri etc.) se va construi un proiect (Project), în secţiunile căruia se pot declara
aceste obiecte. Întreg proiectul se va finaliza într-un program executabil care
va conţine toate obiectele declarate ca fiind utilizate în aplicaţie. Pentru a realiza
proiectul în formă executabilă, în prealabil se foloseşte opţiunea Build(Fig.3), pentru
a realiza compilarea şi link-editarea.

La fel ca în orice aplicaţie Microsoft, utilizatorul mai are la dispoziţie


meniul contextului sau meniul de comenzi rapide care se deschide atunci când
executaţi clic cu butonul din dreapta mouse-ului pe un obiect din fereastră.
Opţiunile din acest meniu depind de context.
Ferestrele document care se pot deschide în fereastra aplicaţiei Visual
FoxPro sunt:
- Fereastra Command folosita pentru editarea comenzilor
- Fereastra View folosită la vizualizarea tabelelor bazei de date
deschise, a relaţiilor dintre tabele şi a zonelor în care lucreaza
fiecare tabel.

2.3.3 Dezvoltarea unei aplicaţii

31
În FoxPro o aplicaţie comportă o serie de elemente componente cum sunt:
- una sau mai multe baze de date
- unul sau mai multe programe, din care unul este principal
- obiecte de interfaţă cum ar fi: meniuri, formulare cu obiecte, etc.
Toate componentele se prezintă ca fişiere de diferite tipuri, astfel încât o
aplicaţie este o mulţime de fişiere. Pentru o aplicaţie este necesar să se definească
un director cel puţin (o structură de directoare), iar fişierele trebuie organizate ca
proiect, într-un fişier de proiect cu extensia .pjx. Directorul numit director cadru
(Framework Directory) se construieşte cu ajutorul sistemului de operare (de ex.
Windows Explorer). Fişierul de proiect se construieşte în mediul FoxPro alegând
File → New → Project. Se dă un nume proiectului, care e un nume şi pentru fişier.
Aplicaţiile sub formă de proiect pot fi dezvoltate prin intermediul unui
program special oferit de mediu şi numit Project Manager(Fig. 3). Acest fişier,
lansat în execuţie, gestionează fişierul .pjx şi organizează fişierele componente ale
proiectului în structuri arborescente. Componentele sunt împărţite în categorii,
fiecare categorie având un arbore de structură. Categoriile sunt:
Data
- Databases (baze de date)
- Tables (tabele)
- Views (vizualizări)
- Cursors (tabele cursor - alias)
- Free Tables (tabele libere)
- Queries (cereri - interogări)
Docs
- Form (ecrane - formulare)
- Reports (rapoarte)
- Labels (etichete)
Class Libraries (librării de clase)
- Code
- Programs (programe)
- API Libraries (biblioteci API)
- Applications (aplicaţii)
Others
- Menus (meniuri)
- Text Files (fişiere text)
Fig.3 Project Manager

32
2.3.4. Tipuri de aplicaţii
Aplicaţiile au în vedere mulţimea tranzacţiilor ca tipuri de tranzacţii. În
FoxPro sunt următoarele tipuri de tranzacţii:
- de inserare;
- de modificare;
- de ştergere;
- de accesare.
Primele trei desemnează situaţia de actualizare a bazei de date, ultima referindu-
se la interogare bazelor de date.

Se disting următoarele trei tipuri de aplicaţii:


- Aplicaţii de actualizare: se fac în condiţiile în care nu e dorit ca
utilizatorul să intervină direct în baza de date (mijlocesc aceste tranzacţii şi asigură
controlul riguros). Se pot face aplicaţii pe fiecare dintre tranzacţii, sau, ele pot fi
grupate în aceeaşi aplicaţie.
- Aplicaţii de consultare: acestea extrag informaţii din baza de date pe care le
afişează sub o anumită formă, fie în fereastra sistemului, fie sub formă de rapoarte.
Este cea mai bogată categorie de aplicaţii având în vedere destinaţia bazei de
date ca mijloc de informare a utilizatorului.
- Aplicaţii mixte: acestea realizează atât consultarea cât şi actualizarea bazei de
date, fiind reprezentativă pentru baza de date.

Din punct de vedere al interfeţei şi al controlului execuţiei în aplicaţii,


putem distinge două categorii mari de aplicaţii:
- Aplicaţii cu control dirijat intern: sunt aplicaţii prin care utilizatorul este
condus de aplicaţie pas cu pas prin solicitări şi afişare de mesaje cu privire la
programul aplicaţiei. Interfaţa este una simplă, care nu exclude însă utilizarea
unor elemente de interfaţă grafică cum ar fi de ex. utilizarea formularelor pentru
introducerea de date şi afişarea de mesaje în casete de mesaje.
- Aplicaţii cu control prin eveniment: în aceste caz aplicaţia are un
comportament aleatoriu care rezultă din modul în care ea răspunde la evenimentele
create de utilizator sau de sistemul însuşi. În această aplicaţie interfaţa este una
grafică constituită din obiecte vizuale capabile să răspundă la evenimente prin
proceduri de tratare. În cadrul acestor aplicaţii programatorul defineşte evenimentele
semnificative, şi pentru acestea ataşează la obiectele de interfaţă procedurile de
tratare. Orice alt eveniment are o tratare implicită prin sistemul de execuţie. Din
33
punct de vedere structural, o aplicaţie de acest gen se concepe ca o mulţime de
obiecte vizuale (meniuri, formulare cu controale, etc.) şi trebuie să aibă un program
principal care să iniţieze execuţia şi să menţină bucla de mesaje a aplicaţiei.

o cod ptr. programul main.prg


do MainMenu.mpr && se afiseaza meniul
* alt cod de initializare
read events && bucla interna pentru evenimente
o cod de încheiere (curăţire)

Dacă aplicaţia nu are meniu, ea poate fi condusă prin casete de dialog. Trebuie
să existe o casetă principală care să fie lansată în programul principal în forma: do
MainForm.frm.

2.3.5. Crearea si normalizarea unei baze de date

Cu ajutorul butonului New se activează o fereastră cu butoane radio ca în


figură:

Fig. 4 Crearea unei baze de date

Se poate alege a se crea o bază de date cu ajutorul wizardului ca în figură în


care într-o succesiune de 5 paşi se precizează caracteristicile noii baza de date
care se doreşte să se creeze.

34
Fig. 5 Crearea unei tabele

Pentru a crea o tabela se alege opţiunea New Table si apar alte două
opţiuni: New Table si Table Wizard. După aceasta se vor introduce câmpurile
tabelei specificându-se tipul fiecărui câmp(numeric, character, date etc.) si
lungimea sa.

Fig. 6 Introducerea câmpurilor

Crearea unei baze de date relaţionale presupune identificarea tuturor relaţiilor


între atributele entităţilor care sunt stocate sau se vor stoca în baza de date. Se poate
ca aceste relaţii să se identifice după ce structura bazei de date a fost creată. Oricum,
procesul prin care se elimină cele 3 anomalii (la modificare, la ştergere şi la
adăugare) se numeşte normalizare. Înţelegerea normalizării este vitală pentru lucrul
cu baze de date relaţionale.
Normalizarea nu este un proces cu care se începe sau se termină designul
bazei de date. Este un proces care se aplică oricând se identifică anomalii.

35
Experienţa şi instinctul totdeauna joacă un rol important în crearea unei bune
baze de date.
Normalizarea se poate realiza prin trecerea succesivă a datelor prin câteva
forme normale. Până în prezent s-au stabilit 7 astfel de forme normale, dintre care
primele 3 asigură o calitate destul de bună a organizării relaţionale a bazei de date şi
majoritatea bazelor de date relaţionale sunt organizate până la această formă.
Prima formă normală a datelor necesită ca:
• datele să fie structurate într-un tabel;
• fiecare coloană trebuie să conţină o singură valoare de un singur tip,
adică să existe o singură valoare în fiecare celulă; nu sunt permise şiruri sau
alte forme de reprezentare a mai mult de o valoare pe celulă;
• fiecare coloană trebuie să aibă un nume unic;
• tabelul trebuie să aibă un set de valori care identifică în mod unic o
linie; valorile din această coloană se numesc chei primare pentru tabel;
• nu trebuie să existe două linii identice în tabel;
• nu sunt permise grupuri repetitive de date;
Cheile primare sunt o coloană sau un set de coloane care au pe fiecare linie o
valoare unică în şirul valorilor coloanei respective.
Dependenţa datelor este un element esenţial în organizarea lor relaţională. O
coloană este dependentă (de cheia primară) dacă ea nu poate exista în tabel când
cheia primară este înlăturată.
A doua formă normală intervine când la sfârşitul primei normalizări
obţinem o cheie primară formată din mai multe coloane. A doua formă normală nu
se aplică pentru tabelele care au o cheie primară formată de o singură coloană.
A 3-a formă normală rezolvă dependenţele tranzitive. O dependenţă
tranzitivă este atunci când o coloană există în tabel dar nu este condiţionată direct de
cheia primară. În loc de aceasta, ea este condiţionată de alte câmpuri, care la
rândul lor sunt condiţionate de cheia primară. O cale rapidă de a se ajunge la a 3-a
formă normală este de a ne uita la toate câmpurile din tabel şi de a ne întrebam dacă
aceste câmpuri descriu cheia primară.

2.3.6. Crearea interfeţei

Formularele ofera utilizatorului o inerfata familiara pentru vizualizarea si


introducerea datelor intr-o baza de date,dar reprezinta mai mult decat o simpla
interfata.Formularele ofera o colectie consistenta de obiecte care pot raspunde la
36
evenimente generate de utilizator,astfel incat acesta isi poate indeplini sarcinile de
gestionare a informatiilor cat mai usor si intuitiv posibil.
Visual Fox Pro include un proiectant de formulare(Form Designer) deosebit de
puternic,care permite proiectarea rapida si simpla a formularelor.Se pot crea:
-diferite tipuri de obiecte in cadrul formularelor
-date asociate obiectelor dintr-un formular
-formulare de nivelul cel mai inalt si formulare fiu
-formulare multiple care pot fi manipulate impreuna
-formulare bazate pe propriile sabloane ale programatorului
Pentru a atribui unui formular functionalitatea dorita trebuie sa i se adauge
controale adecvate,sa se configureze proprietatile controalelor si ale formularelor si
sa se scrie codul pentru evenimente.Tipuri de obiecte care se pot adauga intr-un
formular sunt:
-controale
-containere
-clase definite de utilizator
-obiecte OLE

Formularul (forma) reprezintă o fereastră pentru introducerea sau extragerea


datelor utilizatorului, în mod interactiv,cu ajutorul unor obiecte de interfaţă cărora le
sunt asociate proprietăţi şi metode (secvenţe de instrucţiuni - secvenţe de cod).
Definirea unui formular se realizează prin utilizarea tehnologiei POO
(Programare Orientată Obiect) care permite modificare proprietăţilor obiectelor
incluse în formular, ceea ce se reflectă în aspectul formularului şi a
comportamentului acesteia în diferite situaţii.
Form Designer („Constructorul de formulare”) este o componentă a Visual
FoxPro dedicată creării şi modificării formularelor precum şi generării secvenţei de
cod necesare pentru execuţia acestora (fişierele corespunzătoare au extensia implicită
scx).
Crearea unui formular (fişier cu extensia implicită SCX) poate fi iniţiată prin
alegerea opţiunii File, New din meniu (în acest caz în caseta New se selectează Form
şi New file). Scopul creării unui formular este obţinerea unei secvenţe executabile
care poate fi rulată în următoarele moduri: din meniul principal (Form, Run Form),
prin acţionarea butonului din linia de instrumente standard, prin comanda DO
FORM <nume formular>.

Observaţie
Prin lansarea Constructorului de formulare, în fereastra Form Designer, meniul
principal va include opţiunea Form care oferă instrumentele de lucru necesare.

Elementele constructorului de formulare sunt:


- Ferestrele de lucru
• Form Designer - fereastra principală care conţine obiectele formularului.

37
• Properties - fereastra de proprietăţi având ca rol modificarea proprietăţilor
obiectelor formularului (metode, nume, titluri, dimensiuni, fonturi, culori,
etc.).
• Data Environment - mediul de date al formularului, fereastra pentru
precizarea tabelelor de date care vor fi deschise automat în momentul rulării
formularului.
• Ferestrele pentru cod - succesiunile de instrucţiuni care urmează a fi
executate la apariţia diferitelor evenimente din cadrul formularului cum ar fi:
acţionare unui buton, selectare unui obiect, etc.
- Barele utilitare
• Form Designer Toolbar - bara de butoane standard a formularului. Butoanele
din această bară de instrumente permit deschiderea/închiderea
ferestrelor: Data Environment, Properties, Code (afişarea secvenţei de cod)
sau a barelor de lucru.
• Form Control Toolbar - butoanele de control;
• Color Palette Toolbar - stabilirea atributelor de culoare;
• Layout Toolbar -alinierea obiectelor în formular,suprapunerea obiectelor,
etc.

Raportul
In general un raport este perceput ca fiind o lista sau o sturctura de afisare(sau
format de listare) a unor informatii (inregistari)provenind din tabelele bazei de
date.
In Visual Fox Pro,rapoartele pot fi percepute ca avand o structura duala:
• pe de o parte,structura de date,care poate consta din una sau mai multe
tabele din baza de date,intre care exista eventual relatii permanente;
• pe de la,structura de afisare(listare)care se refera la formatul efectiv al
raportului sau,mai exact,la obiectele prin care se face legatura cu structura
de date si benzile(zonele) care compun raportul.
Clasic, structura de date a unui raport este specificata prin mediul de date(data
environment) asociat fiecărui raport.
In data environment pot fi aduse tabele sau view-uri din baza de date.Trebuie
precizat faptul ca atunci cand se doreste crearea unui raport mai complex,care
implica date din mai multe tabel,iar intre cele doua tabele este stabilita o relatie
permanenta,in Data Environment va fi mostenita si respectiva relatie.

Proiectarea meniurilor
Meniurile si barele de instrumente pun la dispoziţia utilizatorului o metoda
structurala si accesibila de lucru cu comenzile si instrumentele aplicaţiei.
Cea mai mare parte a procesorului de creare a unui sistem de meniuri se
desfăşoară in fereastra Proiectantului de meniuri(Menu Designer),in cadrul căreia
se creează efectiv meniurile, submeniurile si opţiunile de meniu. Crearea unui

38
sistem de meniuri comporta mai mulţi paşi. Indiferent de mărimea aplicaţiei si de
complexitatea meniurilor se va proceda in modul următor:
- planificare si proiectarea sistemului
- se decide care meniuri sunt necesare,unde vor apărea acestea in cadrul
interfeţei,care dintre ele vor avea submeniuri
- crearea meniurilor si submeniurilor
- cu ajutorul proiectantului de meniuri se definesc titlurile meniurilor,ale
articolelor de meniu si ale submeniurilor
- generarea programului pentru meniuri
- rularea programului in vederea testării sistemului
Meniurile pot fi create prin personalizarea sistemului de meniuri Visual Fox
Pro sau prin generarea propriului sistem de meniuri. Pentru a porni de la sistemul
de meniuri existent in Visual Fox Pro se foloseşte opţiunea Quick Meniu. De
obicei,meniul apare in partea superioara a ferestrei unei aplicaţii si are o structură
standard. In cadrul unui meniu sunt incluse diferite opţiuni,la alegerea cărora sunt
declanşate prelucrări ce pot fi realizate in aplicaţia respectiva.
Meniul reprezinta deci un mijloc prin care utilizatorul comunica sistemului ce
operatie sa efectueze la un moment dat.Desi meniurile pot fi de mai multe
tipuri,de-a lungul evolutiei interfetelor cu utilizatorul s-a conturat o structura
standard a acestor tipuri de elemente.Un meniu este format,in general ,dintr-o bara
care contine mai multe optiuni.Fiecare dintre acestea are asociata un submeniu
vertical,care este activat numai la alegerea optiunii respective.Alegerea de catre
utilizator a optiunii meniurilor verticale poate declansa o operatie de prelucrare sau
poate determina afisarea unui nou submeniu vertical.Constuctorul de meniu
realizeaza colectarea interactiva de la utilizator a parametrilor de construire a
meniului si depozitarea lor intr-un fisier special cu extensia ”mnx”. Odata
specificate caracteristicile de ansamblu ale meniului,se poate trece la precizarea
elementelor sale,adica a optiunilor si a proprietatilor acestoa.

39
3. Prezentarea aplicaţiei

3.1. Descrierea facilitaţilor

Pentru a demonstra mecanismul de lucru în Visual FoxPro am creat o


aplicaţie care foloseşte unele facilităţi oferite de acest mediu de programare. Voi
exemplifica in cele ce urmează modul cum se lucrează cu Visual FoxPro şi voi
prezenta posibilităţile şi drepturile pe care le are o persoana care accesează
aplicaţia.
Aplicaţia este un sistem de gestiune al unui magazin de materiale de
construcţie şi are menirea de a uşura munca angajatului.
În continuare voi prezenta aplicaţia propriu-zisă realizată în Visual
FoxPro 6.0. Am ales acest program deoarece este cel mai compatibil cu cerinţele
avute şi este foarte uşor de utilizat.
Una dintre cele mai importante părţi ale realizării aplicaţiei o constituie
planificarea deoarece aceasta duce la un rezultat final concret şi bazat pe cerinţele
utilizatorilor. După un studiu amănunţit si documentare, am trecut la
implementarea aplicaţiei. Lansarea în execuţie a acesteia nu se poate face decât pe
baza unui cont. Aplicaţia permite crearea mai multor conturi de utilizator, acest
lucru fiind realizat din meniul aplicaţiei. Orice încercare de logare, fără
cunoaşterea contului şi a parolei va duce automat la închiderea aplicaţiei.

40
Fig.7 Formular de login

După logare vom avea acces la meniul aplicaţiei. Selectând în meniu


opţiunea Utilizator se va deschide un submeniu care cuprinde opţiunile de creare şi
ştergere a conturilor de utilizator dar şi opţiunea de Iesire din aplicaţie. User-ul si
parola sunt stocate in tabela autentificare.dbf .
O alta opţiune din meniu este Operaţiuni care ne deschide un submeniu
din care alegem ce operaţie dorim sa efectuăm asupra tabelelor din baza de date.
Astfel se pot realiza adăugări, ştergeri sau căutarea unei înregistrări în tabelele
clienţi.dbf, produse.dbf şi facturi.dbf. Spre exemplu, pentru a realiza ştergerea unui
produs din stoc vom accesa opţiunea produse si ni se va afişa un form care
cuprinde operaţiile pe care le putem efectua. Apăsând butonul ştergere va apărea
un al doilea form. Din combo box selectăm produsul care dorim să îl ştergem şi
apăsăm butonul de ştergere. Pentru a evita ştergerea accidentala a unui produs va
apărea o căsuţă de dialog care ne va întreba dacă dorim să ştergem produsul având
astfel posibilitatea de a anula operaţia de ştergere.

Fig.8 Ştergerea unui produs

41
Accesând opţiunea Vizualizare din meniu, vom putea vizualiza evidenţa
principalelor tabele din cadrul bazei de date şi întocmi rapoarte cu privire la
facturile emise, clienţii existenţi şi produsele aflate în stoc.
Gestiunea magazinului se face prin ţinerea evidenţei facturilor emise, a
preţurilor, a clienţilor a produselor dar şi a transporturilor efectuate.

3.2. Descrierea bazei de date

Pentru început am creat un proiect denumit gestiune.pjx pentru


organizarea fişierelor componente ale aplicaţiei. Proiectul l-am creat cu ajutorul
gestionarului de proiecte (Project Manager) din Visual FoxPro. Gestionarul de
proiecte permite compilarea aplicaţiei pe care am creat-o, iar în faza de dezvoltare,
simplifică proiectarea, modificarea şi rularea componentelor.

Fig.9 Structura proiectului

Deoarece o baza de date depinde foarte mult de datele subsidiare, am început


proiectarea aplicaţiei cu datele. Aplicaţia foloseşte o baza de date creată in Visual
FoxPro denumită magazin. Cheia proiectării bazei de date este înţelegerea exactă a
tipului de informaţii care vor fi stocate şi a modului în care un sistem relaţional de
gestiune a unei baze de date cum este Visual FoxPro stochează datele. În acest sens

42
am împărţit informaţiile în cinci tabele: autentificare.dbf, clienţi.dbf, facturi.dbf,
produse.dbf şi transportur.dbf pe care le-am inclus în baza de date a
aplicaţiei.Câmpurile şi legâturile existente între aceste tabele conlucrează la buna
organizare si gestiune a datelor ce urmează să fie prelucrate.
Tabela autentificare are rolul de a memora numele si parola utilizatorului
aplicaţiei. Ea are următoarea structură:

Fig.10 Tabela autentificare

• nume C(15)- reprezintă numele (userul) utilizatorului


• parola C(10)- reprezintă parola pe baza căreia se realizează logarea

Tabela am realizat-o folosind Table Designer pentru a introduce


câmpurile iar apoi le-am încărcat din modul Browse folosind funcţia
append pentru a adăuga înregistrările în tabel.

Tabela clienţi are următoarea structură:

• nr_factura N(7) – reprezintă numărul facturii emise


• nume_client C(20)- memorează numele clientului
• localitate C(32)- reprezintă localitatea de provenienţă a
clientului
• adresa C(40)- reprezintă adresa clientului
• nr_telefon N(16)- reprezintă numărul de telefon al clientului

43
• cnp N(13)- codul numeric personal al clientului

Fig.11 Tabela clienti

Tabela facturi cuprinde următoarele câmpuri:


• nr_factura N(7)- reprezintă numărul facturii
• data_fact Date- reprezintă data emiterii facturii
• nume_client C(20)- numele clientului
• valoarea_neta C(7)- preţul produsului fără TVA
• TVA C(7)- valoarea TVA
• Val_totală C(7)- preţul produsului cu TVA inclus
• Cnp N(13)- codul numeric personal al clientului
• Nr_produs N(7)- codul produsului
Fig.12 Tabela facturi

44
Tabela produse cuprinde:
• Nr_produs N(7)- codul produsului
• Nume_prod C(20)- denumirea produsului
• Cantitate N(4)- cantitatea aflată în stoc
• Valoare N(7)- preţul produsului fără TVA
• Tva N(7)- valoarea TVA

Fig. 12 Tabela produse

Tabela transporturi cuprinde:


• Nume_client C(20)- numele clientului
• Localitate C(32)- localitatea
• Nr_factura N(7)- numărul facturii
• Ora DateTime – ora la care s-a efectuat livrarea

45
Fig.13 Tabela transport

Pentru ca angajatul să poată introduce datele in tabele am folosit o serie de


controale de tip TextBox sau ComboBox în cazurile în care trebuie selectată o
înregistrare care se află deja în tabelă.

Fig.14 Introducerea datelor

Spre exemplu, introducerea numelui produsului se face în textboxul cu


numele Text1. Codul produsului se introduce în textboxul Text2 (am selectat din
46
meniul contextual al acestuia, opţiunea Builder unde am modificat tipul de dată din
character în numeric evitând astfel apariţia unei erori în funcţionarea aplicaţiei
lucru pe care l-am efectuat în cazul fiecărei căsuţe de text în care se introduc date
care nu sunt de tip character).
În cadrul proiectului realizat, cele mai multe câmpuri de editare au fost
folosite pentru preluarea datelor. În final datele vor fi introduse în baza de date prin
intermediul codului sursă existent în spatele unui buton (în exemplul de mai sus,
butonul Adăugare):

locate for produse.cod_produs=Alltrim(thisform.text2.value)


if found()
messagebox("Codul pe care l-ati introdus exista deja in baza de date!")
else
insert into clienti(nume_produs,nr_produs,cantitate,valoare,tva);
values (alltrim(thisform.text1.value),thisform.text2.value,thisform.text3.value,;
thisform.text4.value,thisform.text5.value
endif

thisform.refresh()

În cazul câmpurilor de tip Date este necesară o conversie de la tipul caracter


la tipul dată, acest lucru realizându-se cu ajutorul opţiunii ctod.
Instrucţiunea thisform.refresh afişează form-ul cu valorile câmpurilor reiniţializate.

Proiectele reprezintă o facilitate pusă la dispoziţia proiectanţilor sistemelor


informatice, cu ajutorul căreia se ţine evidenţa şi sunt coordonate elementele unui
sistem informatic. Proiectele sunt folosite atunci când se lucrează cu un număr
mare de elemente, pentru a ţine evidenţa acestora. În general, lucrul la un sistem
informatic debutează prin crearea fişierului proiect. Toate operaţiile care se
efectuează asupra elementului respectiv se pot declanşa din interiorul proiectului,
în acest fel proiectul fiind întotdeauna înştiinţat despre modificările efectuate
asupra unui element.

47
4.Concluzii

În această lucrare am prezentat modul cum poate fi realizat un sistem


informatic, plecând de la mediul de programare Visual FoxPro 6.0.
Cu ajutorul mediului de programare Visual FoxPro am realizat o aplicaţie
care este folosită pentru gestiunea unui magazin de materiale de construcţii.
Sistemul proiectat este eficient si poate fi folosit pentru gestionarea unui magazin.
Argumentele care vin in sprijinul acestei constatări sunt:

- prin intermediul instrumentelor de lucru (meniuri, ferestre, câmpuri de


editare, butoane) aplicaţia face uşoara comunicarea cu operatorul.
- interfaţa este prietenoasa: ceea ce trebuie operatorul sa facă este să
urmărească cu atenţie cerinţele aplicaţiei si sa furnizeze datele necesare;
- rapiditatea execuţiei operaţiilor cerute, duce la reducerea substanţială a
timpului acordat acestora faţă de execuţia manuala.

Teoretic, această aplicaţie ar putea fi folosita pentru gestiunea unui magazin


de materiale de construcţie si cu mici modificări, ea poate fi generalizata astfel
încât sa poată fi utilizata si in alte domenii de activitate, mai mult sau mai puţin
colaterale cu domeniul ales. Consider ca scopul declarat al acestui sistem a fost
atins, fără a exclude însa posibilitatea îmbunătăţirii produsului.

48
Bibliografie

[1] Gabriel Dima, Mihai Dima –„Microsoft Visual FoxPro 7.0”, Editura Teora,
Bucureşti, 2003.
[2] Crăciunaş L-„Baze de date”,Editura Teora, 2001
[3] Marian Fotache- „SQL de la simplu la complex”, Editura Polirom,
Bucureşti, 2001
[4] Marian Fotache, Ioan Brava, Liviu Creţu- „Visual FoxPro – Ghidul
dezvoltării aplicaţiilor profesionale”, Editura Polirom, Iaşi, 2002
[5] Mariana Miloşescu- „Baze de date în Visual FoxPro”, Editura Teora,
Bucureşti, 2003
[6] M. Baziah, J. Booth, J.Long, V. Miller, C. Silver, R.A. Bzers- „Totul despre
Visual FoxPro 6.0”, Editura Teora, 2004

49