Академический Документы
Профессиональный Документы
Культура Документы
SPORTULUI
INSPECTORATUL ŞCOLAR JUDEŢEAN CLUJ
COLEGIUL TEHNIC TURDA
Profil: Mecatronica si Informatica
Specialitatea: Analist Programator
Proiect de Diplomă
Realizarea unui Test de inteligenta
Îndrumator: Elev:
Profesor: Antal Lenke
2011
I. INTRODUCERE
2
1. Baze de date
Baza de date reprezintă una sau mai multe colecţii de date aflate în interdependenţă
împreună cu descrierea datelor şi a relaţiilor dintre ele.
Colecţia de date reprezintă un ansamblu de date organizat după anumite criterii.
Descrierea datelor se întâlneş te sub denumirile de catalog de sistem, dicţionar de date sau
meta-date ceea ce reprezintă date despre date.
Relaţiile logice reprezintă asociaţiile dintre mai multe entităţi.
O entitate este un obiect distinct ce trebuie reprezentat în baza de date.
Un atribut este o proprietate ce descrie un anumit aspect al obiectului ce se înregistrează
în baza de date.
În sistemele de baze de date definirea datelor se separă de programele aplicaţie,
utilizatorii văd doar definiţia externă a unui obiect fără a cunoaşte modul în care e definit
acesta şi cum funcţ ionează. În acest mod, definiţia internă a obiectului poate fi
modificată fără a afecta utilizatorii acestuia dacă nu se modifică definiţia externă. De
exemplu, dacă sunt adăugate noi structuri de date sau sunt modificate cele existente,
atunci programele aplicaţie nu sunt afectate dacă nu depind direct de ceea ce se modifică.
În bazele de date are loc o integrare a datelor, în sensul că mai multe fiş iere sunt
privite în ansamblu, eliminându-se pe cât posibil informaţiile redondante. De asemenea,
se permite accesul simultan la aceleaş i date, situate în acelaşi loc sau distribuite spaţial, a
mai multor persoane de pregătiri diferite, fiecare cu stilul personal de lucru.
Sistemul de programe care permite construirea unor baze de date, introducerea
informaţiilor în bazele de date şi dezvoltarea de aplicaţii privind bazele de date se
numeşte sistem de gestiune a bazelor de date (SGBD).
Un SGBD dă posibilitatea utilizatorului să aibă acces la date folosind un limbaj de
nivel înalt, apropiat de modul obişnuit de exprimare, pentru a obţine informaţii,
utilizatorul făcând abstracţie de algoritmii aplicaţi privind selecţionarea datelor implicate
şi a modului de memorare a lor. SGBD-ul este o interfaţă între utilizatori şi sistemul de
operare.
În esenţă un SGBD permite:
1. definirea bazei de date printr-un limbaj de definire a datelor (DDL) prin care se
specifică tipurile de date şi structurile precum şi constrângerile asupra datelor.
3
2. extragerea, inserarea, ştergerea şi actualizarea datelor din baza de date cu ajutorul
unui limbaj de manipulare a datelor (DML) care oferă o facilitate de interogare generală a
datelor, denumită limbaj de interogare. Acest limbaj elimină dificultăţile sistemelor bazate
pe fişiere unde utilizatorul este constrâns să lucreze cu un set fix de interogări pentru a
evita apariţia de programe noi ce creează probleme majore privind gestionarea lor.
Componentele unui SGBD sunt:-Hardware, software, date , proceduri, resurse umane
a. Componenta hardware poate fi reprezentată de un singur calculator personal, un singur
calculator mainframe sau o reţea de calculatoare.
De obicei se aplică următoarea schemă într-o reţea de calculatoare:
• un calculator principal pe care se află programele back-end - adică partea din
SGBD care administrează şi controlează accesul la baza de date;
• mai multe calculatoare aflate în diferite locaţii pe care se află programele front-
end - adică partea din SGBD ce constituie interfaţa cu utilizatorul.
În această schemă, numită client-server, programele back-end reprezintă serverul
iar cele front-end reprezintă clienţii.
b. Componenta software - cuprinde:
1. programele SGBD;
2. programele aplicaţie - în limbaje de programare de generaţia a III-a (C, Pascal,
Cobol) sau SQL încorporat într-un limbaj de generaţia a III-a;
3. sistemul de operare;
4. software de reţea.
c. Datele - acţionează ca o punte între componentele maşină (hardware şi software) şi
componenta umană. Baza de date conţine atât datele operaţionale (setul de înregistrări pe
care se lucrează) cât şi metadatele. Structura bazei de date e numită schemă.
d. Procedurile - reprezintă instrucţiunile şi regulile aplicate în proiectarea şi utilizarea
bazei de date. Acestea pot fi:
1. deschiderea unei sesiuni de lucru în SGBD;
2. pornirea sau oprirea SGBD;
3. utilizarea unui program de aplicaţie sau a unei funcţii SGBD;
4. efectuarea de copii de siguranţă;
5. tratarea defecţiunilor hard şi soft;
4
6. modificarea structurii unui tabel, reorganizarea bazei de date, îmbunătăţirea
performanţelor, arhivarea datelor.
e. Resursele umane sunt reprezentate de:
1. Administratorul de date - responsabil de gestionarea resurselor de date şi
proiectarea conceptual / logică a bazei de date;
2. Administratorul bazei de date - responsabil de realizarea fizică a bazei de date
ce implică proiectarea şi implementarea acesteia;
3. Proiectanţii de baze de date - ei pot fi:
- Proiectant de BD logice: identifică datele (entităţi şi atribute); identifică
relaţiile dintre date ; identifică constrângerile ; identifică regulile ce
descriu principalele caracteristici ale datelor; implică utilizatori în
realizarea modelului de date
- Proiectant de BD fizice: transpune modelul logic într-un set de tabele şi
constrângeri; selectează structuri de stocare şi metode de acces specific;
asigură securitatea datelor
4. Programatorii de aplicaţii
5. Utilizatorii finali
Pentru a uşura munca administratorului de sistem, un SGBD conţine o serie de
componente ce permit:
• încărcarea (crearea unei versiuni iniţiale a bazei de date plecând de la unul sau
mai multe fişiere);
• salvarea şi reîncărcarea (efectuarea de copii periodice şi posibilitatea refacerii
bazei de date plecând de la aceste copii);
• reorganizarea (rearanjarea datelor pentru a obţine performanţe superioare);
• statistici, analize şi altele.
5
calculatoarelor din clasa staţiilor de lucru, care sunt puternice şi ieftine, programatorii au
posibilitatea de a proiecta rapid şi ieftin produse software pentru întreţinerea şi
distribuirea datelor.
6
- distribuite:
o cu accces distribuit;
o cu distribuire geografică.
Numin sistem de gestiune a bazelor de date (SGBD) un sistem software care
permite pe de o parte definirea, crearea şi întreţinerea bazei de date, iar pe de altă parte
accesul controlat la informaţiile din baza de date.
Un sistem de gestiune este format dintr-un:
- limbaj ce permite definirea datelor în care administratorul bazei de date sau
utilizatorul descrie şi denumeşte entităţtile, precum şi relaţiile dintre acestea;
- limbaj de manipulare al datelor ce cuprind operaţii de inserare, ştergere, modificare
şi regăsire a datelor în baza de date.
5. Abstractizarea datelor
Un scop important al unui sitem de estiune a bazelor de date (SGBD) este aceea că
oferă o viziune abstractă asupra realităţii. Este necesar să se reţină din mulţimea vastă de
informaţii doar acelea legate de aplicaţia curentă. Pentru aceasta s-a propus stuctura pe
trei nivele a unui sistem de date. Cele trei nivele sunt:
- nivelul logic, denumit şi sistemul extern, este dat de programatorul aplicaţiilor ce
folosesc baze de date;
- nivelul conceptual, sau global, care este dat de viziunea administratorului bazei de
date care realizează structura cnceptuală corespunzătoare descrierii întregii baze de
date;
- nivelul fizic, denumit şi nivelul intern, şi care este dat de viziunea inginerului de
sistem care realizează structura fizică corespunzătoare descrierii interne a datelor,
adică dimensiunea spaţiului de memorie, dreptul de acces, etc.
Descrierea unei baze de date se numeşte schema bazei de date. Pentru fiecare dintre
cele trei nivele există o schemă corespunzătoare, iar între scheme există legături.
Numin instanţa unei baze de date, datele aflate la un moment dat în descrierea
schemei bazei de date.
7
Organizarea datelor într-o bază de date
Arhitectura internă a unui sistem de baze de date conform standardului
ANSI/X3/SPARC (1975) conţine trei niveluri funcţionale. O caracteristică fundamentală
a bazelor de date este aceea că produce câteva niveluri de abstractizare a datelor prin
ascunderea (transparenţa) detaliilor legate de stocarea datelor, utilizatorilor.
Se defineşte modelul datelor, ca un set de concepte utilizat în descrierea structurii datelor.
Prin structura bazei de date se înţelege tipul datelor, legătura dintre ele, restricţiile
aplicate datelor. O structură de date asociată unei baze de date poate fi reprezentată pe trei
niveluri, Figura 2, astfel:
• Nivelul intern – constituit din schema internă ce descrie structura de stocare fizică a
datelor în baza de date, utilizând un model al datelor fizice. La acest nivel se
descriu detaliile complete ale stocării şi modul de acces la date.
• Nivelul conceptual – sau schema conceptuală, descrie structura întregii baze de date
pentru o cumunitate de utilizatori. La nivel conceptual se face o descriere completă
a bazei de date ascunzându-se detaliile legate de stocarea fizică şi detaliind
descrierea entităţilor, tipurilor de date, relaţiile dintre ele şi restricţiile asociate.
Nivelul extern – sau nivelul vizual (utilizator), include o colecţie de scheme externe ce
descriu baze de date prin prisma diferiţilor utilizatori.
8
În multe SGBD nu se poate face o distincţie clară între cele trei niveluri, de multe ori
nivelul conceptual este puternic dezvoltat şi suplineşte aparent celelalte niveluri. De
asemenea, la dezvoltarea aplicaţiilor se remarcă o contopire a nivelului extern cu cel
conceptual.
De la modelul conceptual, cererile sunt adresate modelului intern pentru a fi procesate şi
aplicate datelor stocate. Procesul de transfer a cererilor şi rezultatelor între nivele se
numeşte cartografiere (mapping).
În funcţie de categoria de personal implicată în folosirea bazei de date, datele dintr-o bază
de date pot fi structurate pe trei niveluri:
9
II. MEMORIU TEHNIC
10
nume distinct – atribut. În timp ce tuplurile sunt unice, un domeniu poate apărea de mai
multe ori în produsul cartezian pe baza căruia este definită tabela.
Schema tabelei este formată din numele tabelei, urmat între paranteze rotunde de
lista atributelor, iar pentru fiecare atribut se precizează domeniul asociat.
Schema bazei de date poate fi reprezentată printr-o diagramă de structură în care sunt
puse în evidenţă şi legăturile dintre tabele. Definirea legăturilor dintre tabele se face logic
construind asocieri între tabele cu ajutorul unor atribute de legătură. Atributele implicate
în realizarea legăturilor se găsesc fie în tabelele asociate, fie în tabele distincte construite
special pentru legături. Atributul din tabela iniţială se numeşte cheie externă iar cel din
11
tabela finală este cheie primară. Legăturile posibile sunt 1:1, 1:m, m:n. Potenţial, orice
tabelă se poate lega cu orice tabelă, după orice atribute
12
• Independenţa datelor faţă de programe trebuie asigurată atât la nivel logic cât şi
şi fizic.
Bazele de date relaţionale au evoluat ca un tip special de aplicaţii informatice, şi
anume cele care au organizarea datelor în memoria externă conform unui model de date
specific. De aceea, în metodologia de realizare a BDR se parcurg, în cea mai mare parte,
cam aceleaşi etape ca la realizarea unei aplicaţii informatice, cu o serie de aspecte
specifice. Pe de altă parte, în literatura de specialitate, sunt diferite propuneri de
metodologii de realizare a bazelor de date.
Ţinând cont de cele două aspecte de mai sus, sunt propuse câteva actvivităţi care trebuie
parcurse la realizarea unei baze de date. Aceste activităţi vor fi regăsite, sub aceeaşi
denumire sau sub denumiri diferite, în majoritatea metodologiilor de realizare a bazelor
de date, din literatura de specialitate.
13
• Identificarea asocierilor dintre entităţi ca fiind legăturile semnificative de un
anumit tip (verbele din prezentarea activităţii descrise).
• Identificarea atributelor ce caracterizează fiecare entitate în parte (exemple de
atribute: Marca, Nume, Adresă).
• Stabilirea atributelor de identificare unică a realizărilor entităţii, drept chei.
Rezultatul analizei structurale este modelul static (structural) numit şi diagrama entitate-
asociere. Diagrama entitate-asociere (Entity-Relationship) poate fi generată cu produse
software tip CASE (Computer Aided Software Engineering), ca de exemplu Oracle
Designer. Pornind de la o astfel de diagramă, se pot construi, în actvitatea de proiectare,
schemele relaţiilor (tabelelor).
b) Analiza dinamică evidenţiază comportamentul elementelor sistemului la anumite
evenimente. Una din tehnicile utilizate este diagrama stare-tranziţie. Aceasta presupune:
• Identificarea stărilor în care se pot afla componentele sistemului.
• Identificarea evenimentelor care determină trecerea unei componente dintr-o
stare în alta.
• Stabilirea tranziţiilor admise între stări.
• Construirea diagramei stare-tranziţie.
Rezultatul analizei dinamice este modelul dinamic.
c) Analiza funcţională evidenţiază modul de asigurare a cerinţelor informaţionale (fluxul
prelucrărilor) din cadrul sistemului, prin care intrările sunt transformate în ieşiri. Cea mai
utilizată tehnică este diagrama de flux al datelor. Conform acestei tehnici se delimitează:
• Aria de cuprindere a sistemului.
• Se identifică sursele de date: Se identifică modul de circulaţie şi prelucrare a datelor.
• Se identifică apoi rezultatele obţinute: Rezultatul analizei funcţionale este modelul
funcţional.
14
Cerinţele aplicaţiei se referă la: volumul de date estimat a fi memorat şi prelucrat în BDR;
complexitatea problemei de rezolvat; ponderea şi frecvenţa operaţiilor de intrare/ieşire;
condiţiile privind protecţia datelor; operaţiile necesare (încărcare/validare, actualizare,
regăsire etc.); particularităţile activităţii pentru care se realizează baza de date.
Performanţele tehnice ale SGBD-ului se referă la: modelul de date pe care-l
implementează; ponderea utilizării SGBD-ului pe piaţă şi tendinţa; configuraţia de calcul
minimă cerută; limbajele de programare din SGBD; facilităţile de utilizare oferite pentru
diferite categorii de utilizatori; limitele SGBD-ului; optimizările realizate de SGBD;
facilităţile tehnice; lucrul cu mediul distribuit şi concurenţa de date; elementele
multimedia; instrumentele CASE; interfeţele de comunicare; posibilitatea de
autodocumentare; instrumentele specifice oferite.
Proiectarea BDR se realizează prin proiectarea schemelor BDR şi proiectarea modulelor
funcţionale specializate.
Schemele bazei de date sunt: conceptuală, externă şi internă.
a) Proiectarea schemei conceptuale porneşte de la identificarea setului de date necesar
sistemului. Aceste date sunt apoi integrate şi structurate într-o schemă (exemplu: pentru
BDR relaţionale cea mai utilizată tehnică este normalizarea). Pentru acest lucru se
parcurg paşii:
15
Tehnica de normalizare este utilizată în activitatea de proiectare a structurii BDR şi
constă în eliminarea unor anomalii (neajunsuri) de actualizare din structură.
Anomaliile de actualizare sunt situaţii nedorite care pot fi generate de anumite tabele în
procesul proiectării lor:
1.5 Normalizarea
Este o teorie construită în jurul conceptului de forme normale (FN), care ameliorează
structura BDR prin înlăturarea treptată a unor neajunsuri şi prin imprimarea unor facilităţi
sporite privind manipularea datelor.
Normalizarea utilizează ca metodă descompunerea (top-down) unei tabele în două sau
mai multe tabele, păstrând informaţii (atribute) de legătură.
Forma normală unu (FN1). O tabelă este în FN1 dacă toate atributele ei conţin valori
elementare (nedecompozabile), adică fiecare tuplu nu trebuie să aibă date la nivel de grup
sau repetitiv. Structurile de tip arborescent şi reţea se transformă în tabele cu atribute
elemntare.
O tabelă în FN1 prezintă încă o serie de anomalii de actualizare datorită eventualelor
dependenţe funcţionale incomplete.
Fiecare structură repetitivă generează (prin descompunere) o nouă tabelă, iar atributele la
nivel de grup se înlătură, rămânând doar cele elemntare.
16
Forma normală doi (FN2). O tabelă este în FN2 dacă şi numai dacă este în FN1 şi
fiecare atribut noncheie al tabelei este dependent funcţional complet de cheie. Un atribut
B al unei tabele depinde funcţional de atributul A al aceleiaşi tabele, dacă fiecărei valori a
lui A îi corespunde o singură valoare a lui B, care îi este asociată în tabelă. Un atribut B
este dependent funcţional complet de un ansamblu de atribute A în cadrul aceleiaşi tabele,
dacă B este dependent funcţional de întreg ansamblul A (nu numai de un atribut din
ansamblu).
O tabelă în FN2 prezintă încă o serie de anomalii de actualizare, datorită eventualelor
dependenţe tranzitive.
Eliminarea dependenţelor incomplete se face prin descompunerea tabelei iniţiale în două
tabele, ambele conţinând atributul intermediar (B).
Forma normală trei (FN3). O tabelă este în FN3 dacă şi numai dacă este în FN2 şi
fiecare atribut noncheie depinde în mod netranzitiv de cheia tabelei. Într-o tabelă T, fie
A,B,C trei atribute cu A cheie. Dacă B depinde de A (A �B) şi C depinde de B (B �C)
atunci C depinde de A în mod tranzitiv. Eliminarea dependenţelor tranzitive se face prin
descompunerea tabelei iniţiale în două tabele, ambele conţinând atributul intermediar (B).
O tabelă în FN3 prezintă încă o serie de anomalii de actualizare, datorate eventualelor
dependenţe multivaloare.
O definiţie mai riguroasă pentru FN3 a fost dată prin forma intermediară BCNF (Boyce
Codd Normal Form): o tabelă este în BCNF dacă fiecare determinant este un candidat
cheie.Determinantul este un atribut elementar sau compus faţă de care alte atribute sunt
complet dependente funcţional.
Forma normală (FN4). O tabelă este în FN4 dacă şi numai dacă este în FN3 şi nu
conţine două sau mai multe dependenţe multivaloare. Într-o tabelă T, fie A,B,C trei
atribute. În tabela T se menţine dependenţa multivaloare A dacă şi numai dacă mulţimea
valorilor lui B ce corespunde unei perechi de date (A,C), depinde numai de o valoare a lui
A şi este independentă de valorile lui C.
17
Forma normală cinci (FN5). O tabelă este în FN5 dacă şi numai dacă este în FN4 şi
fiecare dependenţă joncţiune este generată printr-un candidat cheie al tabelei. În tabela T
(A,B,C) se menţine dependenţa joncţiune (AB, AC) dacă şi numai dacă T menţine
dependenţa multivaloare A -->> B sau C.
Dependenţa multivaloare este caz particular al dependenţei joncţiune. Dependenţa
funcţională este caz particular al dependenţei multivaloare.
a) Proiectare schemei externe are rolul de a specifica viziunea fiecărui utilizator asupra
BDR. Pentru acest lucru, din schema conceptuală se identifică datele necesare fiecărei
viziuni. Datele obţinute se structurează logic în subscheme ţinând cont de facilităţile de
utilizare şi de cerinţele utilizator. Schema externă devine operaţională prin construirea
unor viziuni (view) cu SGBD-ul şi acordarea drepturilor de acces. Datele într-o viziune
pot proveni din una sau mai multe colecţii şi nu ocupă spaţiul fizic.
b) Proiectarea schemei interne presupune stabilirea structurilor de memorare fizică a
datelor şi definirea căilor de acces la date. Acestea sunt specifice fie SGBD-ului (scheme
de alocare), fie sistemului de operare. Proiectarea schemei interne înseamnă estimarea
spaţiului fizic pentru BDR, definirea unui model fizic de alocare (a se vedea dacă SGBD-
ul permite explicit acest lucru) şi definirea unor indecşi pentru accesul direct, după cheie,
la date.
Proiectarea modulelor funcţionale ţine cont de concepţia generală a BDR, precum
şi de schemele proiectate anterior. În acest sens, se proiectează fluxul informaţional,
modulele de încărcare şi manipulare a datelor, interfeţele specializate, integrarea
elementelor proiectate cu organizarea şi funcţionarea BDR.
18
R2. Garantarea accesului la date: LMD trebuie să permită accesul la fiecare valoare
atomică din BDR (tabelă, coloană, cheie).
R3. Valoarea NULL: trebuie să se permită declararea şi prelucrarea valorii NULL ca date
lipsă sau inaplicabile.
R4. Metadatele: informaţiile despre descrierea BDR se stochează în dicţionar şi tratează ca
tabele ,la fel ca datele propiu-zise.
R5. Limbajele utilizate: SGBDR trebuie să permită utilizarea mai multor limbaje, dintre
care cel puţin unul să permită definirea tabelelor (de bază şi virtuale), definirea
restricţiilor de integritate, manipularea datelor, autorizarea accesului, tratarea tranzacţiilor.
R6. Actualizarea tabelelor virtuale: trebuie să se permită ca tabelele virtuale să fie şi
efectiv actualizabile, nu numai teoretic actualizabile (exemplu atributul “valoare” dintr-o
tabelă virtuală nu poate fi actualizat).
R7. Actualizările în baza de date: manipularea unei tabele trebuie să se facă prin operaţii
de regăsire dar şi de actulizare.
R8. Independenţa fizică a datelor: schimbarea stucturii fizice a datelor (modul de
reprezentare (organizare) şi modul de acces) nu afectează programele.
R9. Independenţa logică a datelor: schimbarea structurii de date (logice) a tabelelor nu
afectează programele.
R10. Restricţiile de integritate: acestea, trebuie să fie definite prin LDD şi stocate în
dicţionarul (catalogul) BDR.
R11. Distribuirea geografică a datelor: LMD trebuie să permită ca programele de aplicaţie
să fie aceleaşi atât pentru date distribuite cât şi petru date centralizate (alocarea şi
localizarea datelor vor fi în sarcina SGBDR-ului).
R12. Prelucrarea datelor la nivel de bază (scăzut): dacă SGBDR posedă un limbaj de nivel
scăzut (prelucrarea datelor se face la nivel de înregistrare), acesta nu trebuie utilizat
pentru a evita restricţiile de integritate.
Regulile lui Codd sunt greu de indeplinit în totalitate de către SGBDR. Pornind de
la cele 13 reguli de mai sus, au fost formulate o serie de criterii (cerinţe) pe care trebuie să
le îndeplinească un SGBD pentru a putea fi considerat relaţional într-un anumit grad. S-a
ajuns astfel, la mai multe grade de relaţional pentru SGBDR: cu interfaţă relaţională
19
(toate datele se reprezintă în tabele, există operatorii de selecţie, proiecţie şi joncţiune
doar pentru interogare), pseudorelaţional (toate datele se reprezintă în tabele, există
operatorii de selecţie, proiecţie şi joncţiune fără limitări), minimal relaţional (este
pseudorelaţional şi în plus, operaţiile cu tabele nu fac apel la pointeri observabili de
utilizatori), complet relaţional (este minimal relaţional şi în plus, există operatorii de
reuniune, intersecţie şi diferenţă, precum şi restricţiile de integritate privind unicitatea
cheii şi restricţia referenţială).
20
• Tabela client:
• Tabela test:
• Tabela rezultat:
21
• Tabela clientrez
22
b) Concurenţa la date (coerenţa). Unitatea de lucru pentru asigurarea coerenţei datelor
este tranzacţia. Aceasta este un ansamblu de comenzi tratate unitar. Tranzacţia se execută
în totalitate sau deloc. Coerenţa poate fi afectată la actualizarea concurentă sau la
incidente.
Mecanismele utilizate de SGBDR pentru asigurarea coerenţei datelor (controlul accesului
concurent) sunt:
• Blocarea la diferite niveluri: bază de date, tabelă, tuplu, atribut;
• Definirea unor puncte de salvare în interiorul tranzacţiilor (exemplu comanda
savepoint);
• Tranzacţii explicite (begin şi end transaction) şi implicite (comenzile de actualizare);
• Fişiere jurnal.
23
Majoritatea aplicaţiilor informatice presupun necesitatea memorării anumitor date.
Un sistem informatic care necesita o bază de date are un scop fundamental: accesarea
datelor de către utilizatorii aplicaţiei.
O bază de date poate fi definită ca un ansamblu da date elementare sau structurate,
accesibile. Este un ansamblu de fişiere intercorelate, care conţine nucleul de date necesare
unui sistem informatic (aplicaţie informatică).
Un fişier este un ansamblu de înregistrări fizice, omogene din punct de vedere al
conţinutului şi al prelucrării. O înregistrare fizică este unitatea de transfer între memoria
internă şi cea externă a calculatorului. Aceasta este formată din una sau mai multe
înregistrări logice. O înregistrare logică este unitatea de prelucrare din punct de vedere al
programului utilizator. Aceasta este formată din dintr-un ansamblu de câmpuri, care
descriu o anumită realitate.
Crearea, actualizarea şi consultarea unei baze de date este permisă prin intermediul
unui sistem de gestiune a bazelor de date, care constituie o interfaţă între utilizatori şi
baza de date. Astfel, un sistem de gestiune a bazelor de date este un instrument de
asamblare, codificare, aranjare, protecţie şi regăsire a datelor în baza de date.
Consultarea unei baze de date trebuie să se deruleze ca principiu în mai multe etape
care se succed într-o ordine bine stabilită:
1 programul de aplicaţie emite o cerere de consultare a unei date simple sau grupate din
baza de date;
2 cererea este recepţionată de sistemul de gestiune a bazelor de date, care consultă
schema aferentă programului de aplicaţie care a emis cererea;
3 sistemul de gestiune a bazelor de date obţine descrierea logică a datei solicitate, pe
care o compară cu descrierea acesteia în schema conceptuală;
4 acelaşi sistem lansează cereri către sistemul de operare, care prin metodele sale de
acces caută înregistrarea fizică aferentă şi o pune la dispoziţia sistemului de gestiune
a bazelor de date;
5 sistemul de gestiune a bazelor de date proiectează şi, eventual, converteşte
înregistrarea logică, după care transferă datele în zona de legătură a programului de
aplicaţie;
24
6 programul de aplicaţie primeşte de la sistemul de gestiune a bazelor de date în zona
de legătură informaţii privind modul de realizare al transferului.
O clasificare a problemelor rezolvate cu ajutorul calculatorului, tinand cont
de volumul datelor si al prelucrarilor implicate in rezolvare ar putea fi urmatoarea :
− probleme care implica prelucrari putine asupra unui volum mare de date
− probleme a caror rezolvare presupune un volum mediu de prelucrari asupra unui
volum mediu de date
− probleme in rezolvarea carora intra un volum mic de date asupra lor efectuandu-se un
volum mare de prelucrari.
Sistemele de gestiune a bazelor de date (SGBD) reprezinta sisteme informatice
specializate in stocarea si prelucrarea unui volum mare de date, in rezolvarea problemelor
de primul tip, din clasificarea anterioara. Termenul de « baza de date » se va referi la
datele de prelucrat, la modul de organizare a acestora pe suportul fizic de memorat iar
termenul de « gestiune » se va referi la actiunea de memorare si prelucrare a acestor date.
Un SGBD trebuie sa asigure urmatoarele functiuni elementare, referitoare la bazele de
date :
− definirea bazei de date
− introducerea datelor (adaugarea de noi date la baza de date)
− modificarea unor date existente in baza de date
− stergerea unor date
− interogarea bazei de date, adica extragerea informatiilor stocate in aceasta
Pe masura dezvoltarii acestor sisteme lista s-a completat cu facilitati importante cum
ar fi :
− generare de rapoarte
− modalitati noi de interogare a bazei de date (de exemplu un limbaj de tip SQL)
− noi tipuri de organizare a bazelor de date si noi tipuri de acces (de exemplu accesul
indexat)
FOXPRO 9.0 este un sistem de gestiune al bazelor de date relational iar in comparatie
cu concurentii sai directi se mentine in frunte datorita performantelor sale. Principalele
sale atuuri sunt modul relaiv simplu de lucru si limpezimea sintaxei, ceea ce il face si
utilizat si in scop didactic.
25
Proiectarea aplicaţiei
Majoritatea bazelor de date din domeniul juridic sunt baze de date relaţionale; de
aceea, vom descrie succint etapele proiectării acestora. Proiectarea bazelor de date
presupune fixarea structurii bazei de date şi a metodelor de prelucrare a datelor. Dacă, în
mod obişnuit, baza de date îşi schimbă frecvent conţinutul, structura ei rămâne
nemodificată pe lungi perioade de timp.
Prin proiectare se determină un model semantic, care să reflecte cât mai fidel
lumea reală, construit astfel:
1. Se identifică o mulţime de concepte semantice (entităţi, tipuri de entităţi,
proprietăţi ale entităţilor, identificatorii entităţilor, relaţii între entităţi) ce dau informaţii
despre lumea reală.
2. Se asociază obiecte simbolice formale, prin care sunt reprezentate conceptele
semantice.
3. Se defineşte o mulţime de operatori formali ce pot să transforme obiectele
formale.
Etapele construirii unei baze de date sunt următoarele:
1. Studiul de fezabilitate, ce constă în cercetarea sistemelor existente, evaluarea
costurilor pe diversele alternative.
2. Cercetarea sistemului existent (tipuri de date, dimensiuni etc.).
3. Analiza sistemului prin determinarea cauzelor diferitelor evenimente şi a
adoptării metodelor şi a alternativelor posibile.
4. Proiectarea sistemului prin determinarea celui mai bun model de reprezentare şi
prelucrare a datelor, de asigurare a securităţii şi integrităţii.
5. Dezvoltarea sistemului prin stabilirea detaliilor asociate datelor prevăzute a fi
luate în considerare, a relaţiilor dintre ele şi a modului de reprezentare fizică.
6. Implementarea sistemului prin proiectarea, scrierea şi testarea programelor,
antrenarea utilizatorilor, alcătuirea documentaţiei, crearea şi încărcarea fişierelor.
26
7. Revizuire şi întreţinere prin probe de lucru ale noului sistem, efectuarea unor
eventuale modificări, adăugarea de noi componente şi urmărirea procesului de
prelucrare a datelor.
Proiectarea urmăreşte obţinerea de baze de date care să întrunească următoarele
calităţi: corectitudine, consistenţă, distribuire, flexibilitate.
Criteriile de clasificare pentru determinarea modelului logic de date optim
corespunzător unei baze de date sunt:
- Validare structurală - reflectarea consistentă a modului de utilizare a informaţiilor
în lumea reală;
- Simplitate - uşurinţa înţelegerii structurilor chiar de către utilizatori fără o
pregătire specială;
- Neredundanţă - eliminarea, pe cât posibil, a reprezentării de mai multe ori a
aceleiaşi informaţii sau a informaţiilor ce se pot deduce logic din altele;
- Distribuire - un model general aplicabil mai multor domenii, fără caracteristici
specifice unor aplicaţii sau tehnologii particulare;
- Extensibilitate - posibilitatea de a dezvolta noi componente cu efecte minime
asupra bazei de date existente;
- Integritate - consistenţa în modul de utilizare şi întreţinere a valorilor din
informaţii.
O etapa extrem de importanta din ciclul de viata al unui sistem informatic este faza de
implementare. Acum programatorii trebuie sa transpuna intr-un limbaj de programare
toate specificatiile formulate in faza de proiectare.
27
Fig. 2.1
Crearea unui
proiect
28
înregistrări logice. O înregistrare logică este unitatea de prelucrare din punct de vedere al
programului utilizator. Aceasta este formată din dintr-un ansamblu de câmpuri, care
descriu o anumită realitate.
Crearea, actualizarea şi consultarea unei baze de date este permisă prin intermediul
unui sistem de gestiune a bazelor de date, care constituie o interfaţă între utilizatori şi
baza de date. Astfel, un sistem de gestiune a bazelor de date este un instrument de
asamblare, codificare, aranjare, protecţie şi regăsire a datelor în baza de date.
Creare bazei de date, se face folosind butonul New din fereastra Project Manager:
De regula seva selecta New Database, deoarece structura acesteia este strans legata
de aplicatia, rezovata, deci ea va fi definita treptat, in timpul construirii acesteia. Apare
onoua fereastra ce va indica numele noii baze de date.
30
Am preferat utilizarea meniului datorita interfatei mai prietenoase si a posibilatilor
inserari de iamgini. Fiecare formular contine la randul lui anumite “optiuni”.
3. DESCRIEREA APLICAŢIEI
31
Aplicatia are un meniu in partea de sus a ecranului compus din cinci operatii care
realizeaza o intretinere interactiva a bazelor de date.
Prima optiune de pe meniul principal este reprezentata de „Intrebare” in care se
realizeaza adaugarea si respectiv modificarea datelor unei intrebari si dea-semenea
stergerea unei intrebari din baza de date
32
se va efectua.Dar daca campurile sunt completate atunci inregistrarea se va efectua corect
si va aparea un mesaj pe ecran de in-formare precum ca inregistrarea s-a realizat cu
succes.
34
La selectarea comenzii Cauta client se deschide forma prezentată în imaginea de
mai jos. Se introduce seria şi numărul actului de identitate şi se apasă butonul CAUTA
CLIENT. Dacă clientul nu există în baza de date se poate adăuga acesând butonul
ADAUGĂ.
A doua optiune de pe meniul principal este reprezentata de „Chestionar” in care
se realizeaza obtinerea unui chestionar, afisarea raspunsurilor oferite de utilizator si
deasemenea raspunsurile corecte date de utlizator.
Prima optiune este reprezentata de „Incepe testul” care realizeaza afisarea unor
intre-bari aleatoarea apasand prima data butonul ‚Start’ si apoi apasand butonul
35
‚Urmatoarea’ pana cand utilizatorul va considera ca e suficient setul de intrebari.
Principala problema pe care trebuie sa o respecte programul acesta este ca numarul de
intrebari sa fie in jurul numarului 100,pentru ca generarea codului se face in intervalul
[1,100].Daca nu aveti destule intrebari la apasarea butonului ‚Urmatoarea’ si intrebarea
nu se va schimba nu inseamna ca programul nu merge ci doar ca codul generat nu exista
in baza de date.
A doua opţiune din meniul Chestionar, este Rezultat care va afişa rezultatul
evaluării ultimului test parcurs, punctajul obţinut pentru fiecare întrebare precum şi
puncatjul total obţinut.
36
Optiunea a treia din meniu, Adauga Rezultat, deschide un formular prin
intermediul căruia putem asocia în baza de date a persoanelor testate, punctajul obţinut
pentru fiecare persoană testată (Doar dacă şi-a înregistrat datele personale în baza de date)
37
A patra optiune este reprezentata de „Afisare raspunsuri corecte” care afiseaza
raspunsurile corecte date de utlizator in urma parcurgerii chestionarului.
38
Prima optiune este reprezentata de „Intrebari” afiseaza intrebarile si codul intrebarilor.
39
A treia optiune este reprezentata de „Persoane din BD” care realizeaza afisarea
persoanelor care s-au înscris în baza de date, care au parcurs testul de inteligenţă sau care
îl vor parcurge.
40
Opţiunile din meniul patru sunt operative, permiţând înregistrarea unuei persoane
venite, căutarea existenţei persoanei in baza de date precum şi afişarea rezultatelor
anterioare, înregistrate în baza de date.
Opţiunea Adaugă persoana permite introducerea unui nou client in baza de date.
Se introduc datele cum sunt: numele, prenumelele, nationalitatea, localitatea de domiciliu,
strada, tara de resednta, data sosirii, actul de identitate.
41
CLIENT. Dacă clentul nu există în baza de date se poate adăuga acesând butonul
ADAUGĂ.
Ultima optiune din meniul principa este reprezentata de iesirea din program.
42
Utilizand astfel aceste instrumente (tabele, formulare, rapoarte, interogări) ale Fox
Pro-ului reusim sa cream o aplicatie stabila care sa asigure o organizare precisa a datelor
si o interfata prietenoasa cu utilizatorul.
IV. CONCLUZIE
În acest capitol sunt prezentate unele aspecte care sunt considerate mai importante în
legătură cu prezenta aplicaţie.
Am realizat aceasta aplicatie pentru distractie si pentru a verifica cunostintele generale
a utilizatorilor.Este o aplicatie complexa pentru ca spre deosebire de aplicatiile de pe
internet cu teste de inteligenta aceasta aplicatie ofera si posibi-litatea sa vada raspunsurile
pe care le-a dat si raspunsurile corecte. Din acest motiv aplicatia ofera posibilitatea ca
utilizatorul sa adauge intrebari pe care le doreste si sa le invete mai usor pentru un
examen sau un test prin simpla par-curgere a chestionarului.
Am utilizat limbajul de programare Visual FoxPro pentru creearea lucrarii de
diplomă, deoarece acest limbaj are un viitor in domeniul economic (de gestiune a bazelor
de date), dar si pentru modul placut de lucru.
Am ales ca sistem de gestiune si realizare a aplicatiei Visual FoxPro 9, avand in vedere
maleabilitatea acestui sistem.
43
Datorită faptului că informaţiile pe care le prelucreayă nu sunt utilizate de o mare
varietate de persoane şi de module, iar datele de care are nevoie nu necesită informaţii
primite de la distanţă, aplicaţia nu a fost proiectată ca şi o aplicaţie distribuită.
Această abordare are ca principal avantaj viteza de acces la datele de stocare.
Datorită personalului restrâns care va utiliza programul, principalul dezavantaj, şi anume
acela al limitării la un anumit număr de clienţi ce poate fi suportat de aplicaţie şi a
volumului de date ce poate fi stocat în tabele, dispare.,,
Desigur, aceasta ar presupune dezvoltarea mult mai pe larg a aplicaţiei.
Se poate realiza un sit pentru efectuarea înscrierilor online, ceea ce presupune si
accesarea unei baze de date existente pe un server.
Acest proiect, este un program destinat utilizării în cadrul societatii datorită faptului că pe
tot parcursul proiectării am avut în vedere următoarele aspecte:
• modelul utilizatorului trebuie să corespundă cu modelul programului meu;
• clientul n-are manual, sau dacă-l are nu-l citeşte şi chiar dacă ar putea, n-ar
face-o (exceptând faptul în care nu are absolut nici o altă alternativă);
• alegerea trebuie să fie dictată de modelul utilizator, fiind sarcina mea să fac ca
modelul programului să corespundă cu cel al utilizatorului;
o inregistrarea sosirii unui client prin introducerea unor date despre client
precum: nume, prenume, data nasterii, locul nasterii, nationalitate, localitate de
domiciliu, strada, numarul, tara, data sosirii, data plecarii, tipul actului de
identitate, seria si numarul C.I.
o asocierea materialelor disponbile pentru clientul nou venit, şi pentru orice client
existent in baza de date
44
o căutarea unui client in baza de date după datele furnizate in actul de identitate
sau pasaport
• Rapoarte/ evidenţe privind lista clienţilor, lista materialelor disponibile în depozit, lista
comenzilor efectuată de către un client, lista distribuitorilo, lista producătorilor de
nateriale diverse, centralizator client-materiale
V. BIBLIOGRAFIE
45
3. Damian M., Vălean H., Miclea L, Revnic I. “Crearea si exploatarea bazelor de date
relationale”, U.T.PRES, Cluj-Napoca, 2006
4. www.msdn.microsoft.com
5. Cursurile oferite de COLEGIUL TEHNIC TURDA, Scola Postliceală
46
use depozit
select depozit
endif
append blank
replace codm with thisform.text8.value
replace material with thisform.text1.value
replace cantitate with thisform.text2.value
replace um with thisform.text4.value
replace pret with thisform.text3.value
replace zi with thisform.text5.value
replace luna with thisform.text6.value
replace an with thisform.text7.value
replace coddistr with dis
if used ("prodmat")
select prodmat
else
select 0
use prodmat
select prodmat
endif
47
thisform.edit1.value=""
thisform.text2.value=""
thisform.text1.setfocus
case this.value=2 &&vizualizare
browse fields cod_distr, nume, adresa, telefon freeze nume
48
*thisform.List2.AddlistItem(depozit.pret)
thisform.text2.value=(depozit.cantitate)
thisform.text3.value=(depozit.pret)
thisform.List1.AddlistItem(thisform.text2.text)
thisform.List2.AddlistItem(thisform.text3.text)
else
endif
endscan
sele depozit
go top
scan
if (depozit.cantitate<=thisform.text1.value) then
*!* thisform.Combo1.AddItem(table1.camp1)
thisform.List1.AddItem(depozit.material)
else
endif
endscan
asociere materiale-clienti
do case
case this.value=1
if used("centraliz")
select centraliz
else
select 0
use centraliz
select centraliz
endif
go bottom
append blank
replace codc with c1
replace codm with c2
replace cantitate with val(thisform.text1.value)
if used("depozit")
select depozit
else
select 0
use depozit
select depozit
endif
replace depozit.cantitate with depozit.cantitate-
val(thisform.text1.value)
replace centraliz.pretfaratva WITH
depozit.pret*centraliz.cantitate
replace centraliz.tva WITH 24/100*centraliz.pretfaratva
replace centraliz.prettotal WITH
centraliz.pretfaratva+centraliz.tva
messagebox("Ok...s-a efectuat operatiunea cu succes!..")
49
case this.value=2
thisform.release
endcase
--căutare client
if used("client")
select client
else
select 0
use client
select client
endif
LOCATE FOR UPPER(_seria)=seria AND _numar=numar
IF FOUND()
_nume=nume
_prenume=prenume
_national=national
_localitate=localitate
_strada=strada
_nr=nr
_actid=actid
_tara=tara
_data_ven=data_ven
_seria=seria
_numar=numar
thisform.Refresh
ELSE
MESSAGEBOX("Acest client nu este in baza noastra de date!")
MESSAGEBOX("Verificati datele si spatiile lasate in fata numarului de la
actul de identitate!")
ENDIF
if used("client")
select client
else
select 0
use client
select client
endif
if used("depozit")
select depozit
else
select 0
use depozit
50
select depozit
endif
go recno()
x=recno()
_screen.activeform.text1.value=""
_screen.activeform.text2.value=0
_screen.activeform.text3.value=0
_screen.activeform.text4.value=""
_screen.activeform.text5.value=0
_screen.activeform.text6.value=0
_screen.activeform.text7.value=0
if x>reccount()
go x-1
else
go x
endif
if used("depozit")
select depozit
else
select 0
use depozit
select depozit
endif
do case
case b=1
go top
case b=2
if recno()<>1
go recno()-1
endif
case b=3
if recno()<>reccount()
go recno()+1
endif
case b=4
go bottom
endcase
go recno()
_screen.activeform.text1.value=material
_screen.activeform.text2.value=cantitate
_screen.activeform.text3.value=pret
_screen.activeform.text4.value=um
_screen.activeform.text5.value=zi
51
_screen.activeform.text6.value=luna
_screen.activeform.text7.value=an
_screen.activeform.text1.refresh
_screen.activeform.text2.refresh
_screen.activeform.text3.refresh
_screen.activeform.text4.refresh
_screen.activeform.text5.refresh
_screen.activeform.text6.refresh
if x>reccount()
go x-1
else
go x
endif
if used("depozit")
select depozit
else
select 0
use depozit
select depozit
endif
do case
case b=1
go top
case b=2
if recno()<>1
go recno()-1
endif
case b=3
if recno()<>reccount()
go recno()+1
endif
case b=4
go bottom
endcase
go recno()
_screen.activeform.text1.value=material
_screen.activeform.text2.value=cantitate
52
_screen.activeform.text3.value=pret
_screen.activeform.text4.value=um
_screen.activeform.text5.value=zi
_screen.activeform.text6.value=luna
_screen.activeform.text7.value=an
if used ("client")
select client
else
SELECT 0
use client
select client
endif
IF EMPTY(_nume) OR EMPTY(_prenume) OR EMPTY(_national) OR EMPTY(_localitate);
OR EMPTY(_strada) OR EMPTY(_nr) OR EMPTY(_tara);
OR EMPTY(_seria) OR EMPTY(_numar)
MESSAGEBOX("Nu ati completat datele necesare pentru a reusi inregistrarea
clientului in baza de date!!")
ELSE
set order to codc
go bottom
cod=codc+1
APPEND BLANK
replace codc with cod
replace nume with PROPER(ALLTRIM(_nume)),prenume WITH
PROPER(ALLTRIM(_prenume)),actid WITH _actid
replace national with PROPER(ALLTRIM(_national))
replace localitate with PROPER(ALLTRIM(_localitate))
replace strada with PROPER(_strada)
replace nr with _nr
replace tara with PROPER(ALLTRIM(_tara))
replace data_ven with _data_ven
replace seria with UPPER(ALLTRIM(_seria))
replace numar with ALLTRIM(_numar)
replace data_ven with date()
seria1=_seria
numar1=_numar
MESSAGEBOX("Clientul a fost introdus in baza de date!")
_actid='B.I'
_nume=SPACE(25)
_prenume=SPACE(25)
_national=SPACE(15)
_localitate=SPACE(15)
_strada=SPACE(15)
_nr=SPACE(6)
_tara=SPACE(10)
_data_ven=DATE()
_seria=SPACE(3)
_numar=SPACE(10)
DO FORM asociereclientmaterial
Endif
_actid='B.I'
53
_nume=SPACE(25)
_prenume=SPACE(25)
_national=SPACE(15)
_localitate=SPACE(15)
_strada=SPACE(15)
_nr=SPACE(6)
_tara=SPACE(10)
_data_ven=DATE()
_seria=SPACE(3)
_numarul=SPACE(10)
thisform.optiongroup1.Value=1
thisform.Refresh
IF _act=1.00
_actid='B.I'
ELSE
IF _act=2.00
_actid='Permis'
ELSE
_actid='Pasaport'
ENDIF
ENDIF
--codul Sql-vedere2
SELECT Client.codc, Client.prenume, Client.nume, Depozit.material,;
Depozit.pret, Depozit.um, Centraliz.cantitate, Centraliz.pretfaratva,;
Centraliz.tva, Centraliz.prettotal;
FROM ;
materiale!client ;
INNER JOIN materiale!centraliz ;
ON Client.codc = Centraliz.codc ;
INNER JOIN materiale!depozit ;
ON Centraliz.codm = Depozit.codm;
ORDER BY Client.codc
DBSetProp(ThisView,"View","SendUpdates",.F.)
DBSetProp(ThisView,"View","BatchUpdateCount",1)
DBSetProp(ThisView,"View","CompareMemo",.T.)
DBSetProp(ThisView,"View","FetchAsNeeded",.F.)
DBSetProp(ThisView,"View","FetchMemo",.T.)
DBSetProp(ThisView,"View","FetchSize",100)
DBSetProp(ThisView,"View","MaxRecords",-1)
DBSetProp(ThisView,"View","Prepared",.F.)
DBSetProp(ThisView,"View","UpdateType",1)
DBSetProp(ThisView,"View","UseMemoSize",255)
DBSetProp(ThisView,"View","Tables","materiale!client")
DBSetProp(ThisView,"View","WhereType",3)
DBSetProp(ThisView+".codc","Field","DataType","N(5)")
DBSetProp(ThisView+".codc","Field","UpdateName","materiale!client.codc")
DBSetProp(ThisView+".codc","Field","KeyField",.T.)
DBSetProp(ThisView+".codc","Field","Updatable",.F.)
DBSetProp(ThisView+".prenume","Field","DataType","C(25)")
DBSetProp(ThisView+".prenume","Field","UpdateName","materiale!client.prenume")
DBSetProp(ThisView+".prenume","Field","KeyField",.F.)
DBSetProp(ThisView+".prenume","Field","Updatable",.T.)
DBSetProp(ThisView+".nume","Field","DataType","C(25)")
54
DBSetProp(ThisView+".nume","Field","UpdateName","materiale!client.nume")
DBSetProp(ThisView+".nume","Field","KeyField",.F.)
DBSetProp(ThisView+".nume","Field","Updatable",.T.)
DBSetProp(ThisView+".material","Field","DataType","C(10)")
DBSetProp(ThisView+".material","Field","UpdateName","materiale!
depozit.material")
DBSetProp(ThisView+".material","Field","KeyField",.F.)
DBSetProp(ThisView+".material","Field","Updatable",.F.)
DBSetProp(ThisView+".pret","Field","DataType","N(10)")
DBSetProp(ThisView+".pret","Field","UpdateName","materiale!depozit.pret")
DBSetProp(ThisView+".pret","Field","KeyField",.F.)
DBSetProp(ThisView+".pret","Field","Updatable",.F.)
DBSetProp(ThisView+".um","Field","DataType","C(10)")
DBSetProp(ThisView+".um","Field","UpdateName","materiale!depozit.um")
DBSetProp(ThisView+".um","Field","KeyField",.F.)
DBSetProp(ThisView+".um","Field","Updatable",.F.)
DBSetProp(ThisView+".cantitate","Field","DataType","N(10)")
DBSetProp(ThisView+".cantitate","Field","UpdateName","materiale!
centraliz.cantitate")
DBSetProp(ThisView+".cantitate","Field","KeyField",.F.)
DBSetProp(ThisView+".cantitate","Field","Updatable",.F.)
DBSetProp(ThisView+".pretfaratva","Field","DataType","N(10)")
DBSetProp(ThisView+".pretfaratva","Field","UpdateName","materiale!
centraliz.pretfaratva")
DBSetProp(ThisView+".pretfaratva","Field","KeyField",.F.)
DBSetProp(ThisView+".pretfaratva","Field","Updatable",.F.)
DBSetProp(ThisView+".tva","Field","DataType","F(10,2)")
DBSetProp(ThisView+".tva","Field","UpdateName","materiale!centraliz.tva")
DBSetProp(ThisView+".tva","Field","KeyField",.F.)
DBSetProp(ThisView+".tva","Field","Updatable",.F.)
DBSetProp(ThisView+".prettotal","Field","DataType","F(10,2)")
DBSetProp(ThisView+".prettotal","Field","UpdateName","materiale!
centraliz.prettotal")
DBSetProp(ThisView+".prettotal","Field","KeyField",.F.)
DBSetProp(ThisView+".prettotal","Field","Updatable",.F.)
--cod SQL-interogare 2
SELECT Client.codc, Client.nume, Client.prenume, Depozit.material,;
Centraliz.cantitate, Centraliz.pretfaratva, Centraliz.tva,;
Centraliz.prettotal;
FROM ;
materiale!centraliz ;
INNER JOIN materiale!depozit ;
ON Centraliz.codm = Depozit.codm ;
INNER JOIN materiale!client ;
ON Client.codc = Centraliz.codc;
ORDER BY Client.nume
55
CUPRINS
I. INTRODUCERE...................................................................................................1
1.1. Ce este o bază de date? Dar un sistem de gestiune a bazelor de date?..........3
1.2. O scurtă istorie a bazelor de date.......................................................................6
1.2.1. Evoluţia organizării datelor.............................................................................7
1.2.2 Avantajele şi dezavantajele sistemelor de gestiune a bazelor de date ...........7
56
3.2 Crearea proiectului Depozit...............................................................................23
3.3 Crearea bazei de date..........................................................................................24
3.4 Structrura tabelelor.............................................................................................25
3.5 Elemente ale limbajului Foxpro folosite in aplicatie.........................................27
3.6 Modul de functionare, Facilitati oferite de program:... ....................................29
IV. CONCLUZIE.....................................................................................................40
V. BIBLIOGRAFIE..................................................................................................42
VI. ANEXA-LISTING PROGRAM.........................................................................43
57