66
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

Gestiunea unui magazin de materiale de constructii

Embed Size (px)

Citation preview

Page 1: Gestiunea unui magazin de materiale de constructii

CUPRINS

1. Introducere …………………………………………………………….42. 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………………………………………...424. Concluzii……………………………………………………………….49Bibliografie……………………………………………………………….50

Page 2: Gestiunea unui magazin de materiale de constructii

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

Page 3: Gestiunea unui magazin de materiale de constructii

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 dintr-o bibliotecă, aşa cum erau folosite cu mai mulţi ani in urmă) sau computerizat

5

Page 4: Gestiunea unui magazin de materiale de constructii

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

Page 5: Gestiunea unui magazin de materiale de constructii

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 coerenţa bazei de date. Prin eliminarea datelor multiplicate se micşorează şi spaţiul

7

Page 6: Gestiunea unui magazin de materiale de constructii

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

Page 7: Gestiunea unui magazin de materiale de constructii

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

Page 8: Gestiunea unui magazin de materiale de constructii

• 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

Page 9: Gestiunea unui magazin de materiale de constructii

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

Page 10: Gestiunea unui magazin de materiale de constructii

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ă

12

Page 11: Gestiunea unui magazin de materiale de constructii

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 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,

13

Page 12: Gestiunea unui magazin de materiale de constructii

refacerea bazei de date în cazul unui incident);- reorganizarea bazei de date (restructurarea şi modificarea strategiei de

acces); - integritatea datelor;

- 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.

14

Page 13: Gestiunea unui magazin de materiale de constructii

Î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 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.

15

Page 14: Gestiunea unui magazin de materiale de constructii

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

- 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

16

Page 15: Gestiunea unui magazin de materiale de constructii

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 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).

17

Page 16: Gestiunea unui magazin de materiale de constructii

Fig.1 Funcţiile unui SGBD

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.

18

Page 17: Gestiunea unui magazin de materiale de constructii

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.

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

19

Page 18: Gestiunea unui magazin de materiale de constructii

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 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

20

Page 19: Gestiunea unui magazin de materiale de constructii

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.

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.

21

Page 20: Gestiunea unui magazin de materiale de constructii

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,

î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

22

Page 21: Gestiunea unui magazin de materiale de constructii

- 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

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”).

23

Page 22: Gestiunea unui magazin de materiale de constructii

- 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 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.

24

Page 23: Gestiunea unui magazin de materiale de constructii

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:

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.

25

Page 24: Gestiunea unui magazin de materiale de constructii

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.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:

26

Page 25: Gestiunea unui magazin de materiale de constructii

- 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),

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>

27

Page 26: Gestiunea unui magazin de materiale de constructii

- 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):

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

28

Page 27: Gestiunea unui magazin de materiale de constructii

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 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

29

Page 28: Gestiunea unui magazin de materiale de constructii

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

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

30

Page 29: Gestiunea unui magazin de materiale de constructii

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ă.

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.

31

Page 30: Gestiunea unui magazin de materiale de constructii

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

Î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)

32

Page 31: Gestiunea unui magazin de materiale de constructii

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

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.

33

Page 32: Gestiunea unui magazin de materiale de constructii

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

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ă:

34

Page 33: Gestiunea unui magazin de materiale de constructii

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.

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.

35

Page 34: Gestiunea unui magazin de materiale de constructii

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.

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

36

Page 35: Gestiunea unui magazin de materiale de constructii

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 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

37

Page 36: Gestiunea unui magazin de materiale de constructii

(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. 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.

38

Page 37: Gestiunea unui magazin de materiale de constructii

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 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

39

Page 38: Gestiunea unui magazin de materiale de constructii

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.

40

Page 39: Gestiunea unui magazin de materiale de constructii

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.

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.

41

Page 40: Gestiunea unui magazin de materiale de constructii

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

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.

42

Page 41: Gestiunea unui magazin de materiale de constructii

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 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ă:

43

Page 42: Gestiunea unui magazin de materiale de constructii

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 cnp N(13)- codul numeric personal al clientului

44

Page 43: Gestiunea unui magazin de materiale de constructii

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

45

Page 44: Gestiunea unui magazin de materiale de constructii

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

46

Page 45: Gestiunea unui magazin de materiale de constructii

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

47

Page 46: Gestiunea unui magazin de materiale de constructii

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.

48

Page 47: Gestiunea unui magazin de materiale de constructii

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.

49

Page 48: Gestiunea unui magazin de materiale de constructii

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

50