Documente Academic
Documente Profesional
Documente Cultură
SUCEAVA
Facultatea de tiine Economice i Administraie Public
Departamentul ID
Specializarea : Administrarea Afacerilor
Anul I, Sem II
BAZE DE DATE
Curs pentru nvmnt la distan
2008
CUPRINS
Introducere...................................................................................................................................3
I. ORGANIZAREA DATELOR ............................................................................................. 4
I.1. Concepte utilizate n organizarea datelor.............................................................. 4
I.1.1. Date, informaii, cunotine ....................................................................... 4
I.1.2. Metode utilizate pentru organizarea datelor .............................................. 4
I.1.3. Arhitectura unei baze de date..........6
I.2. Modelarea datelor .................................................................................................. 7
I.2.1. Modelul de date ierarhic............................................................................ 8
I.2.2. Modelul de date reea ................................................................................ 9
I.2.3. Modelul de date relaional....................................................................... 10
I.3. Proiectarea conceptual a bazelor de date............................................................ 11
I.3.1. Dependene n bazele de date, normalizarea relaiilor, forme normale... 12
I.4. Necesitatea definirii de noi modele de date n proiectarea SGBD-urilor ............ 15
I.4.1. Tehnologia orientat spre obiecte............................................................ 16
I.4.2. Abordarea logic...................................................................................... 19
I.5. Gestiunea tranzaciilor i controlul concurenei................................................... 19
I.6. Baze de date distribuite........................................................................................ 20
I.7. Baze de date multimedia....................................................................................... 21
I.8. Rezistena la defecte i recuperarea din avarii...................................................... 22
I.9. Arhitecturi client-server pentru sistemele SGBD................................................. 23
Probleme rezolvate ....................................................................................................... 23
Probleme propuse spre rezolvare.................................................................................. 24
II. SISTEMUL DE GESTIUNE A BAZELOR DE DATE FoxPro ......................................... 26
II.1. Definirea i prelucrarea datelor organizate n tabele ............................................ 26
II.2. Limbajul FoxPro ................................................................................................... 28
II.2.1. Elementele limbajului ............................................................................ 28
II.2.2. Proceduri, programe n FoxPro .............................................................. 31
II.2.3. Ferestre i meniuri utilizator ................................................................. 33
II.2.4. Controlul execuiei programelor ............................................................ 37
II.2.5. Instruciuni de intrare/ieire ................................................................... 40
II.2.6. Ordonarea nregistrrilor unei tabele ..................................................... 41
II.2.7. Comenzi SET ......................................................................................... 43
II.2.8. Instrumente de lucru pentru creterea productivitii ............................ 43
II.3. Programarea n Visual FoxPro............................................................................ 44
II.3.1. Obiecte n Visual FoxPro....................................................................... 44
II.3.2. Clase n Visual FoxPro .......................................................................... 44
II.3.3. Evenimentele din Visual FoxPro ........................................................... 45
II.3.4. Crearea unei baze de date ...................................................................... 45
II.3.5. Creare relaii persistente ntre tabelele bazei de date................................... 47
II.3.6. Crearea integritii refereniale............................................................... 47
II.3.7. Crearea vederilor.................................................................................... 47
II.3.8. Formularele n Visual FoxPro ..............................................................48
II.3.9. Crearea meniurilor i a barelor de instrumente..................................................................... 49
II.3.10. Crearea unei aplicaii ........................................................................... 50
II.4. Soluii client-server............................................................................................. 50
1
Introducere
Scopul cursului
Informatica de gestiune a impus dezvoltarea i diversificarea rapid a Sistemelor de Gestiune a
Bazelor de Date (S.G.B.D.) i a condus la realizarea unui numr impresionant de aplicaii informatice
cu baze de date. Sistemele i aplicaiile informatice cu baze de date sunt utilizate azi n aproape toate
domeniile de activitate din care un loc aparte l ocup utilizarea lor n cadrul agenilor economici.
Scopul cursului este de a familiariza studenii economiti cu principalele noiuni legate de
definirea i utilizarea bazelor de date cu accent pe caracteristicile generale, metodele i sistemele
folosite pentru proiectarea acestora. Sunt prezentate cele mai uzuale modele de baze de date (ierarhic,
reea i relaional) i preocuprile actuale pentru definirea de noi modele utiliznd facilitile
tehnologiei orientate spre obiecte. Pentru utilizare n cadrul lucrrilor practice de laborator sunt
prezentate produsele FoxPro i Access.
Pentru a asigura parcurgerea i nsuirea problematicii propuse, lucrarea de fa cuprinde patru
pri i anume: I Organizarea datelor, II Sistemul de gestiune a bazelor de date FoxPro, III
Sistemul de gestiune a bazelor de date Access, IV - Limbajul SQL.
Obiective
- sunt prezentate conceptele utilizate n organizarea datelor, cele dou modaliti de organizare a
datelor (fiiere, baze de date), arhitectura unei baze de date, Sistemul de Gestiune a Bazei de Date;
- sunt prezentate i exemplificate principalele modele de date utilizate n proiectarea SGBD-urilor i
anume modelele ierarhic, reea i relaional, precum i noi modele de date care au fost definite n
ultimii ani n vederea rezolvrii aplicaiilor avansate de baze de date, modele bazate pe tehnologia
orientat obiect;
- prezentarea conceptelor i metodelor utilizate n sistemele bazate pe modelul relaional;
- nsuirea tehnicilor de normalizare ca mijloc de eliminare a eventualelor neajunsuri i anomalii
care pot s apar n exploatarea curent a aplicaiilor informatice cu baze de date;
- soluii practice de organizare i exploatare a bazelor de date relaionale cu ajutorul sistemului Fox
Pro, prezentarea limbajului FoxPro i facilitilor oferite de mediul de programare Visual FoxPro;
- prezentarea sistemului de gestiune a bazelor de date Access;
- prezentarea limbajului SQL pentru crearea, administrarea i interogarea bazelor de date relaionale
implementat n majoritatea produselor software moderne de baze de date, a extensiilor limbajului
privind facilitile de orientare spre obiecte n cadrul standardului SQL3 i a unor funcii privind
procesarea analitic a datelor.
I. ORGANIZAREA DATELOR
Rezumat - sunt prezentate conceptele utilizate n organizarea datelor, cele dou modaliti de
organizare a datelor (fiiere, baze de date), arhitectura unei baze de date, Sistemul de Gestiune a
Bazei de Date, principalele modele de date clasice utilizate n proiectarea SGBD-urilor i anume
modelele ierarhic, reea i relaional, precum i noi modele de date care au fost definite n ultimii ani
n vederea rezolvrii aplicaiilor avansate de baze de date, modele bazate pe tehnologia orientat
obiect, conceptele i metodele utilizate n sistemele bazate pe modelul relaional, elemente de
proiectarea bazelor de date avnd n vedere tehnicile de normalizare ca mijloc de eliminare a
eventualelor neajunsuri i anomalii care pot s apar n exploatarea curent a aplicaiilor informatice
cu baze de date.
Nivel
extern
Utilizator 1
Utilizator 2
Utilizator n
Vedere 1
Vedere 2
Vedere n
SO
Nivel
conceptual
Nivel
intern
Sistemul de
Gestiune a
Bazeelor de
Date (SGBD)
Baza de date
fizic
Nivelul extern vederea utilizatorului asupra bazei de date (subschema, schema extern).
Fiecare utilizator are o vedere asupra bazei de date care include numai entitile, atributele i relaiile
din lumea real de care este interesat utilizatorul respectiv. Utilizatori diferii pot avea vederi diferite
asupra acelorai date (ex. Data calendaristic poate fi vzut de un utilizator sub forma an, lun, zi iar
de un alt utilizator sub forma zi,lun, an). n vederi pot fi incluse i date derivate sau calculate din
datele stocate n baza de date (ex. vrsta plecnd de la data naterii i data curent).
Nivelul conceptual vederea general a bazei de date conine structura logic a ntregii baze
de date aa cum este vzut de administratorul bazei de date (ex. concepte de tipul : Persoane, Produse,
Beneficiari, Furnizori etc.)
Nivelul intern reprezentarea fizic a datelor n baza de date o colecie de fiiere coninnd
datele, la care se adaug diverse structuri auxiliare (indeci, pointeri, tabele de dispersie etc.) pentru
asigurarea accesului operativ la date. Transformarea de la nivelul conceptual la nivelul intern i invers
se realizeaz prin comunicarea dintre SGBD i sistemul de operare.
Orice comunicare ntre nivele se realizeaz sub controlul SGBD.
Adoptarea arhitecturii pe cele 3 nivele asigur independena logic i fizic a datelor.
Funcie de modul n care sunt reprezentate relaiile ntre mulimile de entiti se cunosc n
ordine cronologic urmtoarele tipuri eseniale de modele de date: modelul ierarhic, modelul reea,
modelul relaional.
Specializari
Discipline
Cadre
Sali
Administrativ
Studenti
Tipurile de nregistrri care reprezint tipurile de entiti din arborele de mai sus sunt:
Facultati (Codf, Nume, Adresa)
Specializari (Codf,Cods,Numes)
Cadre (Marca,Nume, Funcie)
Sali (Numr, Adresa, Capacitate)
Studenti (Nume, ncadrare, An)
Discipline (Codd, Denumire)
Administrativ(Nume, Functie)
O relaie de tip 1: n ntre dou tipuri de entiti este reprezentat printr-o colecie de arbori avnd n
rdcin o instaniere a entitii printe i ca descendeni un numr de instanieri a entitii fiu.
Exemplu: Pentru relaia Facultati, Cadre
01-Calculatoare-Suceava
15-Popescu-Asistent
102-Ionescu-SefLucrari
02-Silvicultura-Suceava
24-Mironescu-Confereniar
Pentru relaiile de tip m :n apar duplicate.
Exemplu: Pentru relaia Cadre, Studenti
15-Popescu-Asistent
Ionescu-CIG-zi-I
Popescu-CIG-zi-I
102-Ionescu-SefLucrari
Ionescu-CIG-zi-I
Lucescu-TS-fr-II
Reprezentarea relaiilor de tip m:n introduce o mare redundan de date (nregistrarea corespunztoare
apare n baza de date de mai multe ori). Avnd n vedere c interogrile se realizeaz prin parcurgerea
arborilor, anumite interogri pot fi dificil de realizat.(exemplu: care sunt profesorii (cadre) studentului
Ionescu? -necesit parcurgerea tuturor subarborilor corespunztori fiecruia dintre profesori i reinerea
instanierilor din nodul rdcin ale acelor subarbori n care apare studentul Ionescu). Modelul ierarhic
este indicat pentru structuri natural-ierarhice (relaii de tip 1 : n). Bazele de date realizate dup modelul
ierarhic pot utiliza pentru memorarea datelor i suporturi cu acces strict secvenial.
I.2.2. Modelul de date reea
Standardul pentru bazele de date de tip reea este definit n documentele emise de comisia
DBTG (Data Base Task Group) nfiinat cu ocazia conferinei CODASYL din anul 1971.
Reprezentarea structurii datelor (tipurile de nregistrri i relaiile explicite ntre acestea) n modelul
reea este realizat prin diagrama structurii datelor care este un graf oarecare n care nodurile reprezint
tipurile de entiti iar arcele sunt etichetate i reprezint legturile ntre tipurile de entiti.
In cadrul sistemului DBTG aceste arce etichetate poart numele de tip de set i reprezint o
legtur ntre dou tipuri de nregistrri:
- tipul de nregistrare proprietar
- tipul de nregistrare membru
Pot fi reprezentate doar legturile de tip 1:1 i 1: n. Spre deosebire de modelul ierarhic n modelul reea
un tip de entitate poate fi legat la unul sau mai multe tipuri de entitate printe sau chiar prin mai multe
arce la acelai tip de entitate printe (din acest motiv arcele sunt etichetate). Pot exista i tipuri de
entitate fr legturi.
Diagrama structurii datelor pentru exemplul tratat anterior se reprezint astfel:
Facultati
Domenii
Pers_didactic
Specializari
Cursuri_predate
Cursuri
Cursuri_audiate
S_curs
Cadre
Sali
Angajati
Administrativ
Note_acordate
Discip_Note
Note
Note_primite
Discipline
Studenti
Colecia de arce care leag o nregistrare de tip proprietar de 0, 1 sau mai multe nregistrri
membru se numete set sau fan-set. n majoritatea sistemelor de tip reea implementarea seturilor se
realizeaz prin lanuri de pointeri avnd drept cap de lan o nregistrare de tip proprietar i se prezint
sub forma unei liste circulare cap_lan, nregistrare membru, cap_lan. Pot fi utilizate urmtoarele tipuri
de pointeri:
NEXT (obligatoriu) nlnuirea nainte a nregistrrilor
PRIOR (opional) nlnuirea napoi a nregistrrilor
OWNER (opional) leag o nregistrare de tip membru de nregistrarea proprietar.
Rezult c pot exista:
- structuri cu pointeri NEXT
10
Dintre cheile unei relaii se desemneaz o anumit cheie ca fiind primar (celelalte numinduse candidate) care va fi folosit de SGBD pentru identificarea unic a n-tuplelor.
Cheia primar este comunicat SGBD-ului prin limbajul LDD i pentru atributele ce compun
aceasta cheie se impun restriciile:
- nu sunt admise valori nedefinite pentru atributele ce compun cheia primar.
- nici o valoare a unui atribut ce compune o cheie primar nu poate fi modificat n
cadrul operaiilor de actualizare.
Reprezentarea structurii datelor n cadrul modelului relaional se realizeaz prin schema
relaional care const din una sau mai multe scheme de relaie.
Exemplu:
Faculti (Codf, Nume, Adresa)
Specializari (Codf, Cods, Numes)
Cadre (Codf, Marca, Nume, Functie)
Sali (Codf, Numar, Adresa, Capacitate)
Administrativ (Codf, Nume, Functie)
Discipline (Codd, Denumire)
Studenti (Nume,Cods, Incadrare, An)
Cursuri (Marca,Codd)
Note (Marca,Codd, Nume-stud, Nota)
Se contat c pentru reprezentarea legturilor ntre tipurile de entiti pot fi utilizate dou
tehnici:
1) propagarea cheilor (pentru relaiile 1 : 1, 1 : n) spre exemplu, atributul Codf propriu tipului de
entitate Facultati este preluat n schemele de relaie Specializari, Cadre, Sali, Administrativ pentru
a reprezenta legturile 1 : n corespunztoare.
2) crearea unei scheme de relaie separate (pentru reprezentarea legturilor m : n) spre exemplu
Note ce are ca atribute cheile celor trei tipuri de entiti (Cadre, Discipline, Studenti) a cror
legtur o reprezint i eventual alte atribute (Ex: Nota).
Fiecare schem de relaie se poate reprezenta printr-un tabel n care coloanele sunt domeniile
(atributele) relaiei iar liniile (rndurile tabelului) sunt nregistrrile corespunztoare tipului de entitate
descris de relaia respectiv.
O posibil descriere a bazei de date avnd schema relaional de mai sus este:
CREATE TABLE Facultati (Codf INTEGER (3) NOT NULL, Nume CHAR (15), Adresa
CHAR (20))
CREATE TABLE Specializari (Codf INTEGER (3), Cods CHAR (6) NOT NULL,
Numes CHAR (30), ...)
Observaii:
n modelul relaional att tipurile de entiti ct i legturile dintre ele sunt
reprezentate
prin relaii.
De asemenea orice interogare a bazei de date este definit tot printr-o relaie.
O baz de date relaional este o colecie de relaii de diverse grade (gradul unei relaii este dat
de numrul de atribute ce definesc relaia respectiv).
I.3. Proiectarea conceptual a bazelor de date
n proiectarea unei baze de date relaionale se pune problema definirii relaiilor care descriu
tipurile de entiti corespunztoare acelei pri din lumea real ce urmeaz a fi modelat i reprezentat
n baza de date, precum i a legturilor dintre tipurile de entiti. Deci, se pune problema de a alege
schemele de relaie i modul de grupare al atributelor n relaii pentru a reprezenta tipuri de entiti sau
legturi ntre tipuri de entiti. n general, exist mai multe posibiliti pentru aceste alegeri, iar anumite
modele conceptuale (seturi de scheme de relaii) pot fi mai avantajoase.
11
12
Reconstituirea relaiei iniiale se poate face prin operaia de cuplare (uniune). Pentru ca descompunerea
schemei de relaie s fie echivalent cu relaia iniial, trebuie s fie ndeplinite condiiile:
- cuplare fr pierdere de informaie;
- conservarea dependenelor (dependenele funcionale din relaia iniial trebuie s se regseasc
n relaiile rezultate prin descompunere).
Formele normale sunt scheme de relaie echivalente obinute prin descompunerea unor scheme
de relaie n vederea eliminrii redundanei datelor i anomaliilor la adugare, actualizare, tergere
nregistrri n baza de date. Descompunerile schemelor de relaii n scheme de relaii echivalente avnd
n vedere dependenele funcionale conduc la definirea primelor 4 nivele de forme normale i anume:
prima form normal (FN1), a doua form normal (FN2), a treia form normal (FN3) i forma
normal Boyce-Codd (FNBC).
A patra form normal (FN4) este definit avnd n vedere dependenele multivalorice, iar a
cincea form normal (FN5) este definit avnd n vedere dependenele de cuplare. ncepnd de la
prima form normal i pn la forma normal FN5 se impun condiii din ce n ce mai restrictive asupra
relaiilor. Astfel o relaie aflat pe un anumit nivel de normalizare (FN5) satisface toate restriciile cerute
de nivele inferioare de normalizare (FN1, FN2, FN3, FNBC, FN4). n cele ce urmeaz sunt date
definiiile formelor normale avnd n vedere dependenele funcionale.
O relaie R este n prima form normal (FN1) dac i numai dac toate atributele sale iau
numai valori atomice (nu pot fi descompuse). Spre exemplu, atributul Adresa ar putea fi considerat un
atribut neatomic dac n cadrul adresei ne-ar interesa localitatea, strada etc., caz n care trebuie descompus
n atribute atomice.
O relaie R este n a doua form normal (FN2) dac este n FN1 i orice atribut neprim este total
dependent fa de orice cheie a relaiei (atributele prime sunt atribute care fac parte dintr-o cheie a relaiei
i cele neprime sunt atributele care nu aparin nici unei chei a relaiei).
O relaie R este n a treia form normal (FN3) dac este n FN2 i nici un atribut neprim nu
este funcional dependent fa de un alt atribut neprim al relaiei.
O relaie R se afl n forma normal Boyce-Codd (FNBC) dac singurele dependene
funcionale admise sunt cele n care o cheie determin un alt atribut (nici un atribut prim sau neprim nu
poate fi dependent funcional fa de un alt atribut dac acesta nu este sau nu conine o cheie).
Dependene multivalorice
Pentru ilustrarea acestui tip de dependene se ia n considerare urmtoarea schem de relaie:
Clase(Clasa, Discipline, Elevi)
ce conine clasele dintr-o instituie de nvmnt, iar pentru fiecare clas sunt nregistrate disciplinele ce
se predau i elevii nmatriculai n clasa respectiv. Se poate constata c relaia Clase poate rezulta prin
operaia de cuplare dup atributul Clasa a urmtoarelor dou relaii:
CD(Clasa, Discipline)
CE(Clasa, Elevi)
n relaia Clase, presupunnd c pentru o clas dat, fiecare elev frecventeaz toate disciplinele
nregistrate pentru acea clas, exist dependenele multivalorice:
Clasa ->> Discipline
Clasa ->> Elevi.
Ca i n cazul dependenelor funcionale, existena dependenelor multivalorice prezint aceleai
neajunsuri privind redundana datelor i anomalii la efectuarea operaiilor de adugare, actualizare i
tergere nregistrri n baza de date.
O relaie R este n a patra form normal dac singurele dependene multivalorice admise sunt
cele determinate de un alt atribut care este o cheie sau care conine o cheie a relaiei.
ntruct orice dependen funcional este un caz particular de dependen multivaloric, rezult
c orice relaie care se afl n forma normal FN4, se afl i n forma normal FNBC. Transformarea
unei relaii ntr-o colecie de relaii care s se afle n FN4 este similar cu trecerea n FNBC, ns trebuie
avut n vedere att eliminarea dependenelor funcionale ct i a dependenelor multivalorice.
13
14
proiectarea bazei de date se aplic corect o metodologie de proiectare descendent, modelul rezultat
va fi de la sine normalizat. Cercetrile n acest domeniu continu, fiind definite i alte forme normale
printre care FN6 pentru baze de date temporale. O baz de date temporal, pe lng datele curente,
conine i date istorice, iar factorul (atributul) timp are un rol esenial (exemple concludente de astfel de
baze de date sunt depozitele de date). Astfel, n proiectarea unei baze de date temporale trebuie avute n
vedere i alte operaii de descompunere a schemelor de relaie i anume:
- descompunerea orizontal pentru separarea datelor curente de datele istorice;
- descompunerea vertical pentru separarea atributelor aceleiai entiti avnd n vedere valorile lor
raportate la atributul temporal.
n proiectarea unei baze de date nu este exclus nici operaia invers normalizrii numit
denormalizare [DATE04], prin care se urmrete nlocuirea unei colecii de scheme de relaie cu o
schem de relaie echivalent n vederea eliminrii necesitii efecturii unor operaii de cuplare care
pot fi costisitoare. Dac n cazul normalizrii tendina este de a ajunge la nivele ct mai nalte (FN5),
pentru denormalizare nu exist criterii clare putnd fi avute n vedere doar aspecte legate de
performanele anumitor aplicaii.
Un alt principiu care se urmrete n proiectarea unei baze de date este principiul proiectrii
ortogonale conform cruia n cadrul unei baze de date dou scheme de relaie reale (variabile de relaie
de baz) nu trebuie s aib semnificaii suprapuse. n timp ce prin normalizare se urmrete reducerea
redundanei din cadrul unei scheme de relaie, prin proiectarea ortogonal se urmrete reducerea
redundanei dintre schemele de relaie.
I.4. Necesitatea definirii de noi modele de date n proiectarea SGBD-urilor
SGBD-urile realizate la sfritul anilor 60 i nceputul anilor 70 au la baz modelul ierarhic i
modelul reea, constituind prima generaie de sisteme SGBD.
Principalele dezavantaje ale acestor dou modele sunt:
- necesitatea scrierii unor programe complexe pentru realizarea interogrilor, bazate pe acces
navigaional orientat pe nregistrri;
- inexistena unui fundament teoretic;
- independena de date minimal.
La nceputul anilor 70 E.F. Codd a pus bazele modelului relaional fundamentat pe algebra
relaiilor i calculul relaional. SGBD-urile realizate dup acest model constituie a doua generaie de
SGBD-uri cu o larg rspndire (exist astzi peste 100 de sisteme SGBDR att pentru sisteme
mainframe ct i pentru sisteme PC).
Majoritatea sistemelor SGBD comerciale aflate n exploatare au fost proiectate pentru a
satisface cerinele aplicaiilor din domeniul afacerilor i anume :
- probleme de gestiune a ntreprinderilor (personal, salarii, magazii, producie, etc.);
- sisteme de rezervare a locurilor (transporturi, staiuni, hoteluri, etc.);
- sisteme de gestiune biblioteci;
- sisteme financiar-bancare, etc.
care se caracterizeaz prin efectuarea unor operaii relativ simple asupra unor volume mari de date.
Limbajele de manipulare utilizate n cadrul acestor sisteme, rezolv problema accesului
operativ la volume mari de date, ns au o putere de expresie limitat, considerabil mai redus fa de
cea a limbajelor de programare convenionale cum ar fi: PASCAL, COBOL, FORTRAN etc. Spre
exemplu, limbajele LMD utilizate n cadrul SGBD-urilor relaionale, nu permit exprimarea operaiilor
cu caracter recursiv. Reducerea limbajelor LMD la posibilitatea exprimrii doar a unor operaii simple
s-a impus din urmtoarele dou motive:
- optimizarea timpului de rspuns mai ales n cazul cnd se opereaz asupra unor volume mari
de date - prin utilizarea optimizatoarelor care pot exploata informaii privind structurile fizice auxiliare
(indeci, tabele de dispersie, etc.) de care utilizatorul nu trebuie s aib cunotin. Prin optimizare, se
poate obine o reducere considerabil a timpului de rspuns la interogri (ex.100.000 ori );
15
- simplitatea (uurina) utilizrii acestor limbaje le face accesibile unor categorii largi de
utilizatori.
Una din deficienele modelelor de date utilizate n proiectarea SGBD-urilor din prima i a doua
generaie, o constituie posibilitile limitate de modelare. Astfel a fost definit conceptul de model
semantic sau model extins nc din 1976, cnd Chen a prezentat modelul Entitate-Relatie (E/R), care
constituie astzi o tehnic larg acceptat pentru proiectarea bazelor de date.
Modelul E/R permite proiectantului bazei de date s elaboreze un model conceptual, fr a ine
seama de anumite constrngeri impuse de cele trei modele care stau la baza proiectrii SGBD-urilor,
ceea ce permite o reprezentare mai fidel a realitii avute n vedere. Modelul conceptual astfel realizat
const dintr-o diagram E/R, care ulterior poate fi transpus n cadrul unuia din modelele : ierarhic,
reea, relaional. Deci modelul E/R constituie o etap intermediar n proiectarea unei baze de date,
fiind din acest punct de vedere asemntor pseudocodului utilizat n activitatea de programare.
Necesitatea rezolvrii unor probleme complexe care nu se ncadreaz n clasa de probleme din
domeniul afacerilor pentru care au fost proiectate SGBD-urile din prima i a doua generaie, impune
elaborarea de limbaje de manipulare cu putere de expresie mult mai apropiat de cea a limbajelor de
programare convenionale. Aceste aplicaii sunt cunoscute sub denumirea de aplicaii avansate de baze
de date [COBS01] sau aplicaii complexe de baze de date [DATE04] i includ:
- Proiectarea asistat de calculator CAD (Computer Aided Design);
- Fabricarea asistat de calculator CAM (Computer Aided Manufacturing);
- Ingineria programrii asistat de calculator CASE (Computer Aided Software
Engineering);
- Sistemele informaionale de birou OIS (Office Information Systems) i sistemele multimedia;
- Editarea digital (stocarea electronic a crilor, revistelor, ziarelor, articolelor i furnizarea lor la
consumatori prin reele foarte rapide);
- Sistemele informaionale geografice GIS (Geographical Information Systems) Aplicaii tiinifice
i medicale (ex. date complexe pt. modelele moleculare ale compuilor chimici sintetici, date
complexe privind materialul genetic, etc.);
- Sisteme expert (cunotine i baze de reguli pentru aplicaii de inteligen artificial).
Aplicaiile avansate de baze de date de tipul celora enumerate mai sus necesit accesarea i
manipularea unor volume mari de date ca i n cazul SGBD-urilor clasice, precum i efectuarea unor
operaii mult mai complexe dect cele posibile n cadrul SGBD-urilor clasice. Pentru soluionarea
acestor probleme cercetrile sunt ndreptate n dou direcii [DORO98] i anume:
- Abordarea orientat obiect;
- Abordarea logic.
I.4.1. Tehnologia orientat spre obiecte
Concepte utilizate n tehnologia orientat spre obiecte
Pentru a reprezenta n memoria calculatorului obiectele fizice sau noiunile din lumea real
este necesar s identificm proprietile specifice acestora i s le reprezentm prin numere care
constituie singurul mod de nregistrare a informaiei n memoria calculatoarelor actuale.
n cadrul tehnologiei orientate obiect informaiile specifice obiectelor din lumea real trebuie
s fie pstrate la un loc (ntr-o zon compact) i s poat fi prelucrate ca un tot unitar.
Cnd analizm un obiect sau o noiune din lumea real pentru a le reprezenta n calculator,
trebuie s avem n vedere att proprietile caracteristice acestora ct i operaiile care pot fi efectuate,
deci trebuie s avem n vedere datele ce descriu proprietile precum i operaiile care pot fi aplicate
datelor. Reprezentarea datelor se va realiza prin intermediul tipurilor de date, iar a operaiilor ce
acioneaz asupra datelor, prin intermediul funciilor. De asemenea trebuie s avem n vedere modul
cum reacioneaz obiectul atunci cnd este supus la aciuni exterioare. Setul de operaii specifice unui
obiect mpreun cu modul cum acesta reacioneaz la stimuli externi poart denumirea de
comportament al obiectului.
16
Obiecte i atribute
Un obiect este o entitate unic identificabil, care conine att atributele care descriu starea unui
obiect din lumea real, ct i aciunile asociate acestuia. n timp ce un obiect modeleaz att starea ct
i comportamentul, o entitate modeleaz doar starea.
Starea unui obiect este descris de unul sau mai multe atribute numite i variabile de instan,
starea curent a obiectului fiind dat de valorile pe care le iau atributele respective la un moment dat.
Atributele pot fi :
- simple tipuri simple de date (ex. ntreg, ir, real, etc.) care pot lua valori de tip literal;
- complexe - pot conine colecii (descriu colecii de obiecte) i/sau referine (descriu relaii dintre
obiecte) putnd conine o valoare sau o colecie de valori.
Un obiect care conine unul sau mai multe atribute complexe se numete obiect complex.
Pentru reprezentarea atributelor se utilizeaz notaia punct astfel:
PERSOANA.nume (precizeaz atributul nume al obiectului PERSOANA).
Aciunile asociate obiectului sunt operaii (funcii) numite metode ce se vor aplica asupra
valorilor atributelor. Metodele definesc comportamentul obiectelor i pot fi utilizate pentru schimbarea
strii obiectelor, sau pentru interogarea valorilor atributelor selectate. Spre exemplu putem avea
metode pentru a aduga o persoan n baza de date, pentru reactualizarea salariului unei persoane
existente n baza de date, sau pentru tiprirea la imprimant a datelor referitoare la o persoan din baza
de date.
Mijloacele prin care comunic obiectele sunt mesajele.
Exemplu : pentru a executa metoda Creste_salariu asupra unui obiect Persoana de tip Personal i a
transmite metodei o valoare de cretere de 250000 se va scrie:
Persoana.Creste_salariu(250000)
iar ntr-un limbaj de programare un mesaj poate fi scris ca o apelare de funcie astfel:
Creste_salariu(Persoana,250000)
Identitatea obiectelor
n sistemele orientate pe obiecte, fiecrui obiect, atunci cnd este creat, i este atribuit un
identificator de obiect OID care satisface condiiile [COBS01]: este generat de sistem, este unic pentru
acel obiect, este invariant (nu poate fi modificat i nici utilizat pentru identificarea altui obiect, chiar
dac obiectul iniial a fost ters), este independent de valorile atributelor sale (starea sa). Dou obiecte
pot avea aceeai stare dar vor avea identiti diferite, invizibil pentru utilizatori.
Spre deosebire de modelul relaional unde unicitatea este impus doar n cadrul relaiei (la
nivel de relaie prin cheia primar format din valori de atribute deci dependent de starea
obiectului) , identificatorul de obiect asigur unicitatea la nivelul ntregului sistem.
Dou obiecte sunt identice (se noteaz =) dac i numai dac ele reprezint acelai obiect
(adic identificatorii lor OID sunt aceiai).
Dou obiecte sunt egale (se noteaz ==) dac strile lor sunt aceleai (au aceleai valori ale
atributelor).
Obiecte complexe
Exist situaii n care un obiect este format din subobiecte, fiind vzut ca un singur obiect din
lumea real, dar fiind combinat cu alte obiecte printr-un set de relaii de tip A-PART-OF (APO = o
parte din). La rndul lor subobiectele pot fi ele nsele obiecte complexe, ceea ce permite construirea
unei ierarhii de tip A_PART_OF. Obiectul coninut poate fi manipulat n dou moduri:
- poate fi ncapsulat n obiectul complex formnd o parte a acestuia i n acest caz poate fi accesat
numai cu metodele obiectului complex;
- poate fi considerat ca avnd o existen independent de cea a obiectului complex caz n care n
obiectul complex este stocat doar identificatorul OID al obiectului coninut. Obiectul coninut are
structura i metodele lui proprii i poate fi deinut de diverse obiecte printe.
17
Astfel de tipuri de obiecte sunt denumite obiecte complexe structurate, spre deosebire de obiectele
complexe nestructurate cunoscute n domeniul bazelor de date sub denumirea de obiecte binare mari
(BLOB Binary Large OBject) a cror structur poate fi interpretat doar de programe aplicaie.
Clase de obiecte, instan a unei clase, subclase, superclase i motenire
n lumea real se pot identifica clase (familii) de obiecte.
n limbajul de programare SIMULA realizat nc din anii 60, clasele sunt cliee negative
pentru definirea unei mulimi de obiecte similare obiecte ce au aceleai atribute i care rspund la
aceleai mesaje. Atributele i metodele asociate sunt definite o singur dat pentru clas i nu separat
pentru fiecare obiect al clasei. Deci atributele (proprietile) sunt aceleai pentru ntreaga familie de
obiecte, dar valorile atributelor pot diferi de la un obiect la altul. De asemenea operaiile sunt
ntotdeauna aceleai ns rezultatul aplicrii lor poate s difere n funcie de valorile atributelor
obiectului asupra crora sunt aplicate. Rezultatul aplicrii operaiilor nu depinde numai de valorile
atributelor obiectului respectiv, ci i de unele valori exterioare acestuia. Nu are rost s transmitem ca
parametri ai unei operaii valori ale atributelor, deoarece acestea sunt ntotdeauna disponibile operaiei.
Dei n literatura de specialitate termenii clas i tip sunt sinonimi, tip corespunde
noiunii de tip de date abstract. Pentru o variabil declarat de un anumit tip ntr-un limbaj de
programare compilatorul verific dac operaiile executate asupra variabilei, sunt compatibile cu tipul
ei, iar o clas fiind un clieu negativ de creare a obiectelor i furniznd metode ce pot fi aplicate
acestora, se face referire la o clas mai degrab n timpul execuiei dect n momentul compilrii
[COBS01].
O clas poate fi privit ea nsi ca un obiect avnd propriile atribute i metode ce descriu
caracteristicile generale ale clasei (ex. totaluri, medii, etc.).
Obiectele unei clase se numesc instane ale clasei. Exist metode speciale ale clasei pentru
crearea de noi instane i distrugerea celor inutile. De obicei metodele pentru crearea de noi instane
sunt numite constructori, iar cele de distrugere a instanelor sunt denumite destructori.
Unele obiecte pot avea atribute i metode comune, deci se poate pune problema partajrii
acestora n vederea definirii unei clase mai generale. Cazurile speciale sunt numite subclase, iar
cazurile mult mai generale, superclase. Procesul de formare a unei superclase se numete
generalizare, iar procesul de formare a unei subclase se numete specializare.
n sistemele orientate pe obiecte, motenirea permite ca o clas s fie definit ca un caz special
al unei clase mult mai generale. O subclas motenete implicit toate proprietile (atributele i
metodele) superclasei sale i n plus definete proprieti specifice. Toate instanele subclasei sunt i
instane ale superclasei. Relaia dintre subclas i superclas este numit A-KIND-OF (AKO) n
traducere un fel de, iar relaia dintre o instan i clasa ei este denumit IS-A (este un, o).
Prin operaia de definire a unei noi clase de obiecte pe baza uneia deja existente, operaie
numit i derivare (sau extindere) [ROEU96], rezult o ierarhizare a claselor de obiecte n baza creia
putem spune c toate clasele de obiecte sunt derivate dintr-o clas iniial numit clasa de obiecte
generice n care se pot defini proprietile i operaiile comune tuturor claselor de obiecte cum ar fi :
testul de egalitate ntre dou instane, duplicarea instanelor, determinarea clasei la care aparine o
anumit instan etc.
Modele de date bazate pe tehnologia orientat spre obiecte.
Tehnologia orientat obiect, st la baza elaborrii a dou noi modele de date pentru rezolvarea
problemelor puse de elaborarea aplicaiilor avansate de baze de date i anume:
- Modelul de date orientat spre obiecte OODM (Object Oriented Data Model);
- Modelul de date relaional cu obiecte ORDM (Object Relational Data Model).
SGBD-urile realizate dup aceste modele reprezint a treia generaie de sisteme SGBD
constituit din:
- Sisteme de Gestiune a Bazelor de Date Orientate Obiect (SGBDOO sau OODBMS - Object
Oriented Data Base Management System);
- Sisteme de Gestiune a Bazelor de Date Obiect Relaionale (SGBDOR sau ORDBMS - Object
Relational Data Base Management System).
18
19
totalitate , sau ntreaga tranzacie este anulat (abortat), deci execuia unei tranzacii se bazeaz pe
principiul ori totul, ori nimic. Dac n cadrul unui program, tranzaciile nu sunt delimitate, ntregul
program este considerat o tranzacie i SGBD-ul execut automat o instruciune COMMIT dac
programul s-a terminat normal, sau o instruciune ROLLBACK dac programul s-a terminat anormal.
Pentru bazele de date accesate simultan de ctre mai muli utilizatori, se pune problema
rezolvrii situaiilor de conflict care pot apare datorit accesului concurent la aceleai date. Dac baza
de date este accesat doar n citire de ctre utilizatorii concureni, atunci rezolvarea problemei privind
accesul concurent se realizeaz prin secvenializarea accesului utilizatorilor de ctre sistemul de
operare care stabilete ordinea de satisfacere a cererilor de acces avnd n vedere minimizarea timpului
total de satisfacere a cererilor. Sistemele de operare care conin mecanisme ce pot trata independent
operaiile de intrare/ieire concomitent cu efectuarea altor operaii de ctre unitatea central de
prelucrare, permit executarea simultan a dou sau mai multor tranzacii. ns dac doi sau mai muli
utilizatori concureni acceseaz simultan baza de date, iar unul dintre ei actualizeaz date care ar putea
fi accesate de ali utilizatori, pot apare interferene ce pot conduce la incoerene. Dou tranzacii T1, T2
pot conduce la interferene dac rezultatul execuiei lor secveniale difer de rezultatul execuiei lor
concurente. Astfel de tranzacii concurente i care pot conduce la interferen sunt numite conflictuale.
Pentru evitarea situaiilor de conflict, n cadrul sistemelor SGBD se utilizeaz urmtoarele dou
metode:
- controlul concurenei prin blocare;
- controlul concurenei prin mrci de timp.
Pentru controlul concurenei prin blocare, sistemele SGBD dispun de dou funcii primitive i
anume LOCK() i UNLOCK(), sau de un mecanism de zvorre, care utilizate pentru o tranzacie T
prin intermediul componentei lock manager realizeaz blocarea respectiv deblocarea accesului altor
tranzacii la elemente (uniti de acces) din baza de date utilizate de tranzacia T. Unitile de acces
sunt elemente ale bazei de date care pot constitui obiectul unei operaii de blocare n timpul execuiei
tranzaciei.
O problem sensibil care poate apare prin mecanismul de blocare este interblocarea sau impasul, care
apare n situaia n care o tranzacie T1 este blocat de o alt tranzacie T2 care la rndul su este
blocat de tranzacia T1, astfel nct nici una din tranzacii nu i poate continua execuia. O astfel de
situaie nu poate fi rezolvat dect fie printr-o intervenie din exterior, fie printr-un modul software
special realizat n acest sens.
I.6. Baze de date distribuite
Spre deosebire de o baz de date centralizat, care este stocat pe un singur calculator
(server) i aflat sub controlul unui singur sistem SGBD, o baz de date distribuit este o colecie de
date distribuit fizic pe mai multe baze de date gestionate de diverse sisteme SGBD pe mai multe
maini sub diverse sisteme de operare n cadrul unei reele de calculatoare. Un sistem SGBD distribuit
(SGBDD) este un sistem pentru gestiunea bazelor de date distribuite astfel nct distribuirea s fie
transparent pentru utilizatori. Din punct de vedere utilizator, baza de date distribuit este format
dintr-o singur baz de date logic constituit dintr-un numr de fragmente, fiecare fragment fiind
stocat pe unul sau mai multe calculatoare (site, nod) interconectate n reea, putnd fi reprodus i fiind
controlat de un SGBD. Tratarea distribuit este motivat din urmtoarele considerente:
- reelele de calculatoare au aprut i s-au dezvoltat din necesitatea descentralizrii;
- n mod natural o organizaie este constituit din uniti funcionale distribuite local sau la distan;
- fiecare unitate funcional din cadrul unei organizaii i ntreine propriile date operaionale;
- datele trebuie stocate i ntreinute ct mai aproape de sursele care le genereaz.
Un sistem de baze de date distribuite poate fi omogen, caz n care n toate nodurile sistemului
se utilizeaz acelai SGBD, sau poate fi eterogen, caz n care n noduri diferite pot fi utilizate sisteme
SGBD diferite eventual de tipuri diferite (ierarhice, reea, relaionale, orientate obiect). Sistemele
eterogene necesit realizarea comunicrii ntre diverse tipuri de sisteme SGBD, care trebuie s fie
20
transparent pentru utilizator astfel nct acesta s poat formula cereri n limbajul sistemului SGBD
local.
n cadrul arhitecturii de referin a unui sistem de baze de date distribuite, pot fi puse n
eviden urmtoarele scheme [COBS01]: un set de scheme globale externe, o schem conceptual
global, o schem de fragmentare, o schem de alocare, un set de scheme pentru fiecare SGBD local
dup arhitectura ANSI-SPARC pe trei nivele.
Schema conceptual global conine descrierea la nivel logic a ntregii baze de date.
Schemele externe globale corespund vederilor utilizatorilor asupra bazei de date distribuite.
Schema de fragmentare definete fragmentele de date la nivel logic.
Schema de alocare descrie locul unde vor fi stocate datele i reproducerile acestora.
Fiecrui nod al reelei n care sunt stocate date n cadrul sistemului SGBDD i corespunde o
schem local conform arhitecturii ANSI-SPARC pe 3 nivele, altfel spus fiecrui SGBD local i
corespunde o arhitectur ANSI-SPARC pe 3 nivele (nivelul extern, nivelul conceptual, nivelul intern),
n cadrul nivelului extern fiind realizat corespondena dintre fragmentele din schema de alocare i
obiectele externe din baza de date local. Aplicaiile locale (care nu necesit date din alte noduri ale
reelei) pot fi tratate autonom n cadrul SGBD-ului local. n cadrul sistemului pot exista noduri care s
nu aib propria lor baz de date local.
Transparena unui sistem distribuit are n vedere ascunderea aspectelor privind distribuirea fa
de utilizator, astfel nct utilizarea unei baze de date distribuite este realizat n acelai mod ca
utilizarea unei baze de date centralizate. n acest sens, un utilizator nu trebuie s tie cum a fost
realizat fragmentarea, unde sunt amplasate datele, cum sunt reproduse datele, ce sisteme SGBD sunt
utilizate n celelalte noduri ale reelei, etc.
Avnd n vedere dificultatea soluionrii problemelor ridicate de utilizarea bazelor de date
distribuite, la ora actual sistemele SGBD distribuite nu sunt larg acceptate, fiind preferabil o tratare
simplificat a distribuirii datelor prin reproducerea datelor n servere de reproducere. Reproducerea
const n crearea i ntreinerea mai multor copii ale datelor n unul sau mai multe noduri ale reelei,
oferind astfel o serie de faciliti sporite privind disponibilitatea datelor, refacerea n urma unor
incidente i funcionalitatea sistemului. Operaia de reproducere a datelor poate fi realizat n dou
moduri i anume:
- reproducerea sincron, caz n care datele reproduse sunt actualizate imediat ce sunt actualizate
datele surs (exemplu protocolul 2PC);
- reproducerea asincron, caz n care reproducerile datelor (instantanee) pot fi actualizate dup o
ntrziere fa de momentul actualizrii datelor surs, ntrzierea putnd fi de ordinul secundelor,
orelor sau chiar zilelor acolo unde se pot utiliza reproduceri care nu trebuie s fie neaprat
sincronizate sau ntreinute la zi.
O alt modalitate de tratare a reproducerilor o constituie crearea de ctre utilizatori a unor aplicaii
proprii de reproducere numite declanatoare de baze de date, care conin cod ce va fi executat la
declanarea anumitor evenimente cum ar fi spre exemplu inserarea unei nregistrri, modificarea unei
nregistrri existente, etc.
I.7. Baze de date multimedia
Conceptul multimedia reprezint capacitatea de achiziionare, stocare, manipulare i redare
informaii obinute de la diverse surse ce conin text, grafic, sunet, imagine static sau dinamic,
grupate n documente electronice. Organizarea informaiei sub form de documente electronice i
accesarea acestora a devenit posibil odat cu apariia Web-ului. Crearea documentelor electronice pe
Web se realizeaz cu ajutorul limbajului HTML (HyperText Markup Language) bazat pe hiperlegturi
(legturi ctre date stocate ierarhic), iar accesarea acestora se face cu ajutorul unor programe numite
navigatoare (Internet Explorer, Netscape). Pentru realizarea de pagini Web dinamice se utilizeaz
limbaje specializate cum ar fi JavaScript, care permit ncorporarea unor programe simple n
documentul HTML i care vor fi executate de ctre programul navigator.
21
22
Utilizarea mecanismului UNDO/REDO care permite recuperarea bazei de date dup o cdere a
sistemului att pentru tranzaciile ncheiate n memoria principal dar netransferate n totalitate n
memoria secundar, ct i pentru tranzaciile neterminate n
momentul cderii sistemului.
Pentru primul caz, pentru operarea tranzaciilor n memoria
secundar se parcurge fiierul
jurnal nainte de la ultimul punct de reluare pn la sfrit i se opereaz n baza de date (operaie
de tip REDO), iar n cel de-al doilea caz pentru tranzaciile nevalidate n momentul cderii
sistemului, acestea vor trebui abortate, ceea ce se realizeaz prin parcurgerea fiierului jurnal de la
sfrit spre nceput i anularea tuturor
operaiilor efectuate de tranzaciile nevalidate (operaie
de tip UNDO).
23
24
a) Un sistem de programe care permite definirea, crearea i ntreinerea bazei de date, precum i
accesul controlat la baza de date.
b) Un sistem de programe pentru interogarea bazei de date
3.
Descriei cele 3 nivele de abstractizare n care pot fi privite datele n cadrul unei baze de date
7.
8.
9.
25
NUME
PRENUME
TELEFON
SEXUL
ADRESA
236412
DATA
NASTERII
02/27/1978
IONESCU
ION
Suceava
7 Noiembrie 3
POPESCU
GHEORGHE
221122
05/13/1980
Suceava
Narciselor
ANGELESCU
ANA
211564
01/11/1978
Suceava
G. Enescu
10
26
Ordinea introducerii nregistrrilor n tabel este numit ordine natural i este ordinea
implicit n care vor fi vizualizate nregistrrile tabelei.
Pentru modificarea datelor introduse n tabel pot fi folosite comenzile EDIT, BROWSE.
tergerea de nregistrri dintr-o tabel se realizeaz n dou etape:
- tergerea logic = marcarea pentru tergere (completarea octetului de
invalidare logic pentru tergere)
- tergerea fizic = eliminarea nregistrrii i eliberarea spaiului ocupat.
tergerea logic se realizeaz cu comanda DELETE.
Dac SET DELETED este ON atunci nregistrrile marcate pentru tergere nu vor fi vzute de
alte comenzi FoxPro (Ex: LIST, DISPLAY, BROWSE etc.).
Anularea tergerii logice se realizeaz cu comanda RECALL.
tergerea fizic se realizeaz cu comanda PACK.
tergerea fizic realizeaz rescrierea fiierului mai puin nregistrrile marcate pentru tergere.
tergerea fizic a tuturor nregistrrilor se poate realiza fie cu comanda ZAP, fie cu comenzile
DELETE ALL, PACK.
Structura unei tabele poate fi modificat (modificare cmpuri existente, adugare de noi
cmpuri, tergere cmpuri existente) utiliznd comanda MODIFY STRUCTURE.
Structura unei tabele poate fi vizualizat utiliznd comanda LIST STRUCTURE sau
DISPLAY STRUCTURE.
Afiarea nregistrrilor unei tabele poate fi realizat cu una din comenzile LIST, DISPLAY
ALL.
Oricare din operaiile de mai sus asupra unei tabele poate fi efectuat numai dac n prealabil
tabela respectiv a fost deschis.
Deschiderea (activarea) unei tabele se realizeaz cu comanda USE.
USE < nume tabel >
Deschiderea unei tabele presupune utilizarea unei zone de memorie n care sunt memorate
informaii privind tabela respectiv, zon numit zona de lucru.
FoxPro 2.6 sub WINDOWS aloc 225 astfel de zone de lucru numerotate de la 1 la 225 ceea ce
nseamn c pot fi deschise la un moment dat maximum 225 tabele.
Precizarea zonei de lucru n care este deschis o tabel se poate face :
- fie cu comanda USE astfel :
USE <nume tabel> IN <nr.zon>
- fie cu comanda SELECT astfel :
SELECT <ne.zon>
USE <nume tabel>
Zona de lucru implicit este zona 1.
Zona de lucru curent este ultima zon selectat cu comanda SELECT sau zona 1 n lipsa unei
comenzi SELECT <nr.zon>.
Fiecare zon de lucru utilizat poate primi un alias specificat n comanda USE, iar n lipsa
specificrii, aliasul zonei este numele tabelei deschise n zona de lucru respectiv.
Astfel se pot referi cmpurile unei tabele folosind aliasul zonei de lucru n care a fost deschis
tabela respectiv.
Exemplu:
m.nr = 0
STORE SPACE(15) TO m.nume
USE Personal IN 3
m.nr = Personal.nr
m.nume = Personal.nume
n secvena de instruciuni de mai sus Personal.nr, Personal.nume refer cmpurile nr, nume
din tabela Personal deschis n zona de lucru 3 care nu este zona de lucru curent.
27
Dup terminarea lucrului cu baza de date aceasta trebuie nchis utiliznd una din comenzile
USE, CLOSE.
Tipuri de date recunoscute n FoxPro.
n FoxPro sunt recunoscute urmtoarele tipuri de date:
Tipul caracter (C) = ir format din 0 pn la 254 caractere ASCII cu excepia caracterelor 0
binar (NULL), Ctrl/z (cod 26).
Tipul numeric (N) = succesiune de cifre zecimale, eventual precedat de semnul + sau i
putnd conine marca zecimal (caracterul .).
Tipul flotant (F) = date numerice reprezentate n virgul flotant, utilizate pentru calcule
matematice de precizie.
Tipul data calendaristic (D) = date calendaristice reprezentate n memorie ca numere, iar
formatul extern implicit este ll/zz/aa (ll=nr.lun, zz=nr.zi din lun, aa=ultimele dou cifre ale anului).
Tipul logic (L) = date logice reprezentate pe un octet ce pot avea una din valorile:
T adevrat (True) sau Y (Yes) sau t sau y
F fals (False) sau N (No) sau f sau n
Tipul memo (M) = poate conine un ir de octei de lungime maxim dou
miliarde de
caractere. Numai cmpurile tabelelor pot fi de tip memo (nu i variabilele sau constantele) i astfel de
cmpuri conin doar adresa pe 10 octei ctre un fiier cu extensia .FPT care conine informaia
propriuzis pentru fiecare nregistrare din fiierul .DBF pe lungime variabil (pn la max. dou
miliarde de caractere)
Tipul general (G) = utilizat pentru susinerea tehnologiei OLE (Object Linking and Empeding)
legarea i nglobarea obiectelor (texte, desene, imagini, sunete, foi de calcul tabelar etc.). Stocarea
datelor se face tot n fiierul .FPT la fel ca n cazul cmpurilor memo. Pentru a prelua un obiect OLE
dintr-o aplicaie extern n baza de date se folosete opiunea Copy din meniul Edit al programului
Windows Explorer pentru a copia obiectul n memoria temporar Clipboard, apoi cu opiunea Paste sau
Paste special din meniul Edit al programului FoxPro se insereaz sau se face referina la obiectul din
Clipboard n cmpul General din baza de date.
II.2. Limbajul FoxPro
Produsul FoxPro dispune de un limbaj de programare denumit FoxPro care conine
aproximativ 200 comenzi care pot fi executate individual din fereastra de comenzi sau din programe,
pentru crearea, ntreinerea i interogarea bazelor de date.
II.2.1. Elementele limbajului :identificatori, constante, variabile scalare (cmpuri, variabile de
memorie), masive, operatori, funcii, expresii, instruciuni, ferestre, meniuri, proceduri, programe.
Identificatori - succesiune de caractere (doar primele 10 au semnificaie) alfabetice, cifre i liniua de
subliniere _ , care poate ncepe cu o liter sau _.
Identificatorii pot reprezenta:
- cuvinte cheie ale limbajului (ex. CREATE, FOR, IF, etc.)
- cuvinte definite de utilizator (ex. Persoane, Nume, Datan, etc.)
Este indicat a se evita utilizarea de cuvinte cheie pentru cuvinte definite de utilizator (pentru a
nu crea confuzii i pentru nelegerea semnificaiei cuvintelor utilizate)
Cuvintele cheie ale limbajului pot fi trunchiate la minim primele 4 caractere ca de exemplu:
CREATE, CREA, CREAT au aceeai semnificaie.
Pot fi utilizate litere majuscule, minuscule sau orice combinaie de majuscule i minuscule.
Constante:
- Constanta caracter succesiune de caractere ncadrat ntre sau sau [ ]
Exemplu: Limbajul FoxPro la dispoziia dvs.
(caracterul s-a utilizat pentru a indica nceputul i sfritul constantei iar
caracterele fac parte din constant)
- Constanta data calendaristic o dat calendaristic ncadrat ntre acolade
28
Exemplu: {03/08/02}
- Constante logice reprezint valorile logice adevrat , fals dup cum
urmeaz:
.T. sau .t. sau .Y. sau .y. pentru adevrat (True, true, Yes, yes)
.F. sau .f. sau .N. sau .n. pentru fals (False, false, No, no)
- Constante numerice - succesiuni de cifre zecimale precedate eventual de
semnul + sau i putnd conine marca zecimal ..
Exemplu: 125
-12.5
Poate fi utilizat i notaia tiinific
Exemplu: 5.878E+12 reprezint 5,878 nmulit cu 10 la puterea 12
1.6E-12
reprezint 1.6 nmulit cu 10 la puterea 12
Variabile - sunt identificatori pentru variabile de memorie sau cmpuri ntr-o tabel .DBF.
Pentru a preciza c variabila este o variabil de memorie sau un cmp ntr-o tabel se poate folosi
operatorul . sau -> i aliasul astfel:
M.Nume
sau M->Nume
specific variabila de memorie Nume
Persoane.Nume sau Persoane->Nume specific cmpul Nume din tabela Persoane .
Dac nu se face precizarea ca mai sus i tabela Persoane este deschis n
zona de lucru curent atunci Nume refer cmpul Nume i nu variabila de memorie Nume.
O variabil de memorie poate fi creat prin operaia de atribuire astfel:
m.Nume = Ionescu sau folosind comanda STORE astfel
STORE Ionescu TO m.Nume.
Tipul unei variabile de memorie este dat de valoarea memorat n acea variabil.
La momente diferite de timp aceeai variabil de memorie poate avea tipuri diferite
funcie de valoarea memorat n variabil la fiecare moment.
O clas special de variabile o reprezint variabilele de sistem care sunt utilizate pentru a
pstra anumite informaii ca de exemplu variabila sistem _PCOPIES pstreaz numrul de copii de
tiprit pentru urmtorul raport.
Identificatorii acestor variabile ncep cu caracterul liniua de subliniere _.
Masive sunt structuri de date care permit memorarea mai multor valori ntr-o zon de memorie creia
i se atribuie un nume, valorile respective putnd fi tratate att ca un tot ct i ca elemente distincte.
Masivele sunt organizate sub forma unui tablou de valori unidimensional sau bidimensional,
deci sub form de vectori sau de matrice.
Declararea unui masiv se realizeaz cu una din comenzile DIMENSION sau DECLARE ca n
exemplele de mai jos:
DIMENSION Vec(10) declar un vector numit Vec de 10 elemente
Vec(1),Vec(2),,Vec(10)
DIMENSION alfa(2,4)
declar matricea alfa cu 2 linii i 4 coloane avnd elementele alfa(1,1)
alfa(1,2) alfa(1,3) alfa(1,4) alfa(2,1) alfa(2,2) alfa(2,3) alfa(2,4)
DECLARE vector(8),matrice(4,3) declar vectorul vector de 8 elemente i matricea matrice cu 4 linii
i 3 coloane.
Elementele unui masiv pot fi de acelai tip sau de tipuri diferite.
Dup declararea unui masiv toate elementele sale vor fi de tip logic avnd valoarea .F.
Ulterior fiecare element al masivului poate primi orice valoare prin instruciunea de atribuire =,
sau STORE.
Operatori precizeaz aciunile ce trebuie efectuate asupra datelor (operanzilor).
Operatori aritmetici:
(unar) specific un numr negativ
+ (unar) specific un numr pozitiv , este implicit
+ adunare
scdere
* nmulire
/
mprire
29
** ridicare la putere
% modulo - restul mpririi a dou expresii (ex. 42%10 rezult 2)
( ) grupare operaii
Operatori de comparare:
= egal
== egalitate exact (numai pentru tipul caracter)
> mai mare
< mai mic
>= mai mare sau egal
<= mai mic sau egal
<> diferit
#
diferit
!= diferit
$
este cuprins (numai pentru tipurile caracter i memo (ex. Dac A=Cimp caracter
i memo atunci comanda ? caracter $ A d rezultatul .T. deoarece caracter
este coninut n A).
Operatori logici:
OR
sau
AND i
NOT negaie
()
Grupare operaii pt. schimbare prioritate
Operatori asupra irurilor de caractere:
+
concatenare iruri (ex. ABC + DE rezult ABCDE)
concatenare iruri cu mutarea spaiilor libere de la sfritul primului
ir la sfritul irului rezultat (ex. ABC - DE rezult ABCDE
Pentru toate tipurile de operatori ordinea de prioritate (precedena) este cea convenional i
poate fi schimbat folosind parantezele ( ).
Funcii.
Sistemul FoxPro dispune de o gam variat de funcii (peste 200) reprezentnd:
- Funcii matematice (SIN, COS, TAN, ASIN, ACOS, ATAN, SQRT, etc.)
- Funcii de conversie date (conversia unui tip de dat n alt tip de dat
(DTOC, DTOS, CTOD, VAL, STR, etc.)
- Funcii pentru irurile de caractere
(LTRIM, RTRIM, ALLTRIM, LOWWER, UPPER, SUBSTR, etc.)
- Funcii pentru date calendaristice (CTOD, DATE, YEAR, etc.)
- Funcii pentru fiiere .DBF (DBF, DELETED, EOF, BOF, RECCOUNT, RECNO, etc.)
- Funcii pentru cmpuri memo (MEMLINES, MLINE, etc.)
- Funcii pentru meniuri (PAD, BAR, PROMPT, etc.)
- Funcii pentru operaii de intrare/ieire (LASTKEY, COL, ROW, PRINTSTATUS)
- Funcii de intrare/ieire de nivel inferior
(FCREATE, FOPEN, FCLOSE, FREAD, FWRITE, FGETS, FPUTS, etc.)
- Alte funcii (FILE, SYS, etc.)
Expresii sunt construcii realizate folosind elementele limbajului (constante, identificatori, operatori,
variabile, masive, funcii) i utilizate n cadrul instruciunilor limbajului.
O caracteristic important a expresiilor este tipul, care este dat de tipul elementelor utilizate n
cadrul expresiilor.
Astfel tipul unei expresii poate fi: Numeric <expN>, Caracter <expC>, Logic <expL>
n cadrul unei expresii toate elementele trebuie s fie de acelai tip.
Pentru realizarea acestei cerine se pot folosi funciile de conversie de tip.
Dac ntr-o expresie tipurile operanzilor nu sunt compatibile ntre ele sau cu operatorii
utilizai, atunci va apare eroarea:
30
31
mai multe proceduri) caz n care nainte de apelarea procedurii, biblioteca care o conine trebuie
deschis cu comanda SET PROCEDURE TO <nume bibliotec>
unde <nume bibliotec> este numele fiierului .PRG ce reprezint biblioteca de proceduri.
Pot fi utilizate i proceduri cu parametri, caz n care prima instruciune a procedurii este
instruciunea PARAMETERS <lista parametri formali> , iar apelarea procedurii se realizeaz cu
comanda DO <nume procedur> WITH <lista parametri actuali>
Programe
UN program FoxPro este o secven de instruciuni coninut ntr-un acelai fiier cu extensia
.PRG. Pentru editarea unui program se poate folosi fie un editor extern (care trebuie specificat n
fiierul CONFIG.FPW), fie editorul produsului FoxPro care se lanseaz cu comanda
MODIFY
COMMAND <nume program>
Un program FoxPro poate fi construit ca o ierarhie de proceduri astfel:
main
P1
P21
P2
Pn
P22
P2k
P2k1
P2k2
.
Programul FoxPro corespunztor va fi de forma:
PROCEDURE < main>
...
DO P1
...
DO P2
...
DO Pn
...
RETURN
PROCEDURE P1
...
RETURN
PROCEDURE P2
...
DO P21
...
DO P22
...
DO P2k
...
&&(opional)
32
P2kr
RETURN
...
PROCEDURE Pn
...
RETURN
PROCEDURE P21
...
RETURN
PROCEDURE P22
...
RETURN
...
PROCEDURE P2k
...
DO P2k1
...
DO P2k2
...
DO P2kr
...
RETURN
PROCEDURE P2k1
...
RETURN
PROCEDURE P2k2
...
RETURN
...
PROCEDURE P2kr
...
RETURN
.................
Pentru a putea fi executat, un program FoxPro va trebui mai nti compilat rezultnd astfel un
fiier obiect cu extensia .FXP.
Lansarea n execuie a unui program se realizeaz cu comanda
DO <nume program>
La lansarea n execuie, dac n programul surs au fost efectuate modificri cu editorul
MODIFY COMMAND sau cu un editor specificat n fiierul CONFIG.FPW, obinerea fiierului obiect
.FXP se realizeaz automat i apoi se execut programul.
II.2.3. Ferestre i meniuri utilizator
Ferestre
Produsul FoxPro permite lucrul cu ferestre definite de utilizator.
O fereastr este o zon dreptunghiular de ecran definit fie prin dou puncte (colul din stnga
sus i colul din dreapta jos), fie printr-un punct (colul din stnga sus) i nlimea (nr. de rnduri) i
limea ferestrei (nr. de coloane) .
Un punct este definit de coordonatele sale reprezentnd numrul de rnd i numrul de
coloan.
Pentru a putea fi folosit, o fereastr utilizator trebuie mai nti definit, operaie care se
realizeaz cu comanda DEFINE WINDOW.
33
O fereastr utilizator poate fi definit n interiorul unei ferestre printe, care poate fi: fie
fereastra principal FoxPro , fie o alt fereastr utilizator.
Coordonatele punctelor ce definesc fereastra n cazul definirii prin dou puncte (colul din
stnga sus i colul din dreapta jos) sunt funcie de dimensiunea fontului ferestrei printe.
Se pot defini ferestre utilizator care sunt mai mari dect ecranul.
Exemple.
DEFINE WINDOW f1 FROM 4,4 TO 15,45
DEFINE WINDOW f1 AT 4,4 SIZE 10,40
Cele dou instruciuni sunt echivalente i definesc fereastra f1 ncepnd din colul din stnga
sus precizat de punctul dat de rndul 4 coloana 4 i avnd 10 rnduri i 40 coloane.
Dac presupunem c fontul ferestrei principale FoxPro nu este stilul Roman de 24 puncte
atunci comenzile de mai jos definesc ferestre de dimensiuni diferite:
DEFINE WINDOW f1 FROM 4,4 TO 15,45 FONT Roman,24
DEFINE WINDOW f1 AT 4,4 SIZE 10,40 FONT Roman,24
Pentru prima comand coordonatele punctelor ce definesc fereastra se bazeaz pe fontul ferestrei
principale FoxPro, iar n a doua comanda dimensiunile ferestrei se bazeaz pe fontul precizat n
comand (Roman de 24 de puncte).
Pentru ferestrele definite pot fi realizate urmtoarele operaii:
- Activare ferestre cu comanda ACTIVATE WINDOW
Dup activarea unei ferestre, aceasta rmne pe ecran pn la dezactivarea ei i toate informaiile de
ieire pe ecran vor fi dirijate ctre aceast fereastr.
- Dezactivare ferestre cu comanda DEACTIVATE WINDOW
O fereastr dezactivat este tears de pe ecran, ns rmne n continuare n memorie.
- Ascunde ferestre cu comanda HIDE WINDOW
O fereastr ascuns este tears de pe ecran, rmnnd n continuare n memorie, ns informaiile
trimise spre ecran sunt afiate n continuare n acea fereastr.
- Afiare ferestre cu comanda SHOW WINDOW
Fereastra ascuns cu comanda HIDE va fi afiat pe ecran.
- tergere ferestre cu comanda RELEASE WINDOW sau CLEAR WINDOW
(dezactiveaz ferestrele precizate i le elimin din memorie).
- Salvare ferestre cu comanda SAVE WINDOW (salveaz ferestrele
specificate ntr-un fiier pe disc sau ntr-un cmp memo)
- Recuperare ferestre cu comanda RESTORE WINDOW (ferestrele menionate sunt
aduse n memorie de pe disc sau din cmpul memo).
Meniuri
Meniurile sunt o categorie important de obiecte pentru realizarea interfeei utilizator n cadrul
aplicaiilor FoxPro.
Produsul FoxPro, alturi de meniurile sistem, ofer posibilitatea definirii i folosirii meniurilor
utilizator i anume: meniuri orizontale i meniuri verticale.
Meniuri orizontale (bara de meniuri) conine un numr de opiuni numite
pad-uri aezate de regul pe acelai rnd.
Crearea i utilizarea unui meniu presupune parcurgerea urmtoarelor operaii:
- Definire meniu cu comanda DEFINE MENU <nume meniu>
- Definire opiuni cu comanda DEFINE PAD
- Precizare aciune de executat la selecia unei opiuni cu una din comenzile
ON SELECTION PAD <pad> OF <nume meniu> DO <nume procedur>
ON PAD <pad> OF <nume meniu> ACTIVATE POPUP <p>|MENU<m>
- Activare meniu cu comanda ACTIVATE MENU
- Ascundere meniu cu comanda HIDE MENU
- Afiare meniu cu comanda SHOW MENU
- Dezactivare meniu cu comanda DEACTIVATE MENU
34
La dezactivarea unui meniu, controlul programului este dat instruciunii care urmeaz celeia
care a activat meniul respectiv.
Exemplu.
S se defineasc i s se utilizeze un meniu orizontal pentru efectuarea operaiilor de
adugare, tergere, editare (actualizare) date n tabela Persoane astfel:
Adaugare
Stergere
Actualizare
Sfirsit
CLEAR
CLOSE ALL
DEFINE MENU Mo1
DEFINE PAD P1 OF Mo1 PROMPT \<Adaugare
DEFINE PAD P2 OF Mo1 PROMPT \<Stergere
DEFINE PAD P3 OF Mo1 PROMPT Actuali\<Zare
DEFINE PAD P4 OF Mo1 PROMPT S\<Firsit
ON SELECTION PAD P1 OF Mo1 DO PA
ON SELECTION PAD P2 OF Mo1 DO PS
ON SELECTION PAD P3 OF Mo1 DO PZ
ON SELECTION PAD P4 OF Mo1 DO PF
USE Persoane
ACTIVATE MENU Mo1
PROCEDURE PA
APPEND
RETURN
PROCEDURE PS
DELETE ALL FOR <conditie>
RETURN
PROCEDURE PZ
BROWSE NOAPPEND NODELETE
RETURN
PROCEDURE PF
PACK
USE
DEACTIVATE MENU
RETURN
Meniuri verticale (obiecte popup).
Un meniu vertical sau popup este o caset dreptunghiular care conine un numr de opiuni
(bare de selecie) care pot fi definite fiecare separat, sau pot reprezenta fiiere din directorul curent, sau
valorile unei expresii definite folosind cmpuri ale unei tabele, sau denumirile cmpurilor unei tabele.
Crearea i utilizarea unui meniu popup necesit parcurgerea urmtoarelor operaii:
- Definire meniu cu comanda DEFINE POPUP
- Definire opiuni cu comanda DEFINE BAR n cazul cnd opiunile sunt
definite fiecare separat
- Precizare aciune de executat la selecia unei opiuni cu una din comenzile
ON SELECTION POPUP <nume popup> DO <nume procedur>
ON SELECTION BAR OF <nume popup> DO <nume procedur>
ON BAR <expN> OF <nume popup> ACTIVATE MENU <m>|POPUP <P>
- Activare meniu cu comanda ACTIVATE POPUP <nume popup>
35
36
37
Secvenele <instruciuni 1>, <instruciuni 2> pot conine la rndul lor instruciuni IF,
obinndu-se astfel imbricarea instruciunilor IF pe un numr oarecare de nivele.
Exemplu.
IF FILE(Persoane.dbf)
USE Persoane
LIST
ELSE
? Fisier Persoane.dbf lipsa in ,sys(2003)
ENDIF
(dac fiierul Persoane.dbf exist n directorul curent, deschide fiierul i afieaz nregistrrile sale,
altfel afieaz mesajul Fisier Persoane.dbf lipsa in <cale>).
Instruciunea DO CASE realizeaz execuia unui grup de instruciuni din mai multe grupuri
posibile astfel:
DO CASE
CASE <condiie 1>
<instruciuni 1>
CASE <condiie 2>
<instruciuni 2>
38
39
40
<variabil> = variabil de memorie, nume cmp, element de masiv, n care vor fi preluate datele
introduse de la tastatur
<ablon> = formatul de afiare a datelor preluate, succesiune de caractere X pt.iruri de caractere, sau
succesiune de caractere 9 pentru datele numerice, sau succesiune de caractere A pentru iruri care
conin doar litere, etc. ncadrate ntre apostroafe, sau ghilimele. De asemenea n cadrul formatului de
afiare mai pot fi folosite o serie de funcii ca de exemplu: ! pt.conversie litere mici n litere mari, @Z
pt.suprimare zerouri nesemnificative etc.
<culori> = o list de doua perechi de culori, prima pereche pentru SAY i a doua pereche pentru GET,
reprezentnd culoare scris i culoare fond.
n cadrul instruciunii pot fi utilizate i alte clauze ca de exemplu: SIZE, FONT, STYLE,
VALID, ERROR, VERB, BITMAP etc.
Instruciunea @ sayget poate fi utilizat i ca dou instruciuni distincte
@ <lin>,<col> SAY <expC> PICTURE <ablon> COLOR <cs>/<cf>
@ <lin>,<col> GET <variabil> PICTURE <ablon> COLOR ,<cs>/<cf>
Instruciunea READ clasic citete un set de comenzi @GET ncepnd cu primul GET din list
i continund pn la deplasarea dincolo de ultimul cmp sau naintea primului cmp dup care se iese
din instruciunea READ.
mbuntirile aduse formei clasice a instruciunii permit realizarea de interfee mai puternice
i mai flexibile utiliznd un numr redus de instruciuni FoxPro.
n cele ce urmeaz vom da un exemplu de utilizare a instruciunilor @sayget, read
pentru crearea unui ecran de preluare date n tabela Persoane :
m.nrcrt=0
STORE SPACE(15) TO m.nume,m.prenume
m.datan={ / / }
@3,5 SAY Nr.crt.:
@5,5 SAY Nume:
@7,5 SAY Prenume:
@9,5 SAY Data nasterii:
@3,25 GET m.nrcrt PICT 99 COLOR ,GR+/B
@5,25 GET m.nume PICT XXXXXXXXXXXXXXX COLOR ,GR+/B
@7,25 GET m.prenume PICT XXXXXXXXXXXXXXX COLOR ,GR+/B
@9,25 GET m.datan PICT XX/XX/XX COLOR ,GR+/B
READ
II.2.6. Ordonarea nregistrrilor unei tabele
Ordinea implicit de parcurgere a nregistrrilor ntr-o tabel este ordinea n care au fost
introduse, aceasta fiind numit ordine natural.
Pentru a putea parcurge nregistrrile tabelei i n alt ordine se pot utiliza dou metode i
anume :
1 - Ordonarea nregistrrilor prin operaia de sortare a tabelei
2 - Ordonarea nregistrrilor prin operaia de indexare a tabelei
Ordonarea prin sortare se realizeaz cu comanda
SORT TO <nume fiier> ON <cmp1> [/A|/D|/C]
care are drept rezultat crearea unei noi tabele n care nregistrrile sunt scrise n ordinea precizat
(ordonate dup unul sau mai multe cmpuri /A-ascendent (implicit), /D descendent, /C fr a lua n
considerare deosebirea dintre litere mici sau mari (/C poate fi combinat cu /A sau /D astfel: /AC sau
/DC).
Ordonarea prin indexare se realizeaz cu comanda INDEX care ntr-o form simplificat are
sintaxa:
INDEX ON <expresie index>TAG <nume crit.ord.>[ASCENDING|DESCENDING]
41
(care are drept rezultat crearea unui criteriu de ordonare a nregistrrilor ntr-un fiier avnd acelai
nume cu numele tabelei i extensia .CDX).
Precizarea ordinii n care se vor parcurge nregistrrile ntr-o tabel se face cu comanda SET
ORDER TO <nume criteriu de ordonare>.
Revenirea la ordinea natural (ordinea n care au fost ncrcate nregistrrile n tabel) se face
cu comanda SET ORDER TO.
Exemplu Crearea unui criteriu de ordonare n tabela Persoane, alfabetic dup primele 3 litere din
cmpul Nume:
INDEX ON LEFT(Nume,3) TAG nume3
Comenzile:
USE Persoane
SET ORDER TO TAG nume3
LIST
SET ORDER TO
realizeaz: deschide tabela Persoane, precizeaz ordinea de parcurgere nume3 (alfabetic dup primele 3
litere din Nume), afieaz nregistrrile tabelei n aceast ordine i precizeaz c n continuare
nregistrrile tabelei vor fi vzute n ordinea natural (ordinea n care au fost ncrcate).
Funcia TAG(<nr criteriu>)_returneaz numele criteriului de ordonare <nr criteriu>
Funcia KEY(<nr criteriu>) returneaz expresia index pentru criteriul de ordonare
<nr_criteriu>.
Instruciuni de poziionare pe nregistrri ntr-o tabel.
Fiecrei tabele deschise ntr-o zon de lucru i este asociat un indicator de nregistrri care
conine numrul nregistrrii curente. Aflarea nregistrrii curente (coninutului indicatorului de
nregistrri) ntr-o tabel se realizeaz cu funcia RECNO(). La deschiderea unei tabele cu comanda
USE indicatorul de nregistrri este poziionat pe prima nregistrare (conine valoarea 1). Pentru
schimbarea indicatorului de nregistrri (poziionarea pe o alt nregistrare) se pot folosi instruciunile:
GO <expN> - realizeaz poziionarea pe nregistrarea avnd indicatorul de nregistrri
rezultatul evalurii expresiei <expN>
GO TOP realizeaz poziionarea pe prima nregistrare a tabelei
GO BOTTOM realizeaz poziionarea pe ultima nregistrare a tabelei
SKIP <expN> - realizeaz mutarea indicatorului de nregistrri peste un numr de nregistrri
dat de rezultatul evalurii expresiei <expN>, nainte sau napoi fa de nregistrarea curent, dup cum
rezultatul evalurii expresiei <expN> este un numr pozitiv sau negativ.
Funciile BOF(), EOF() testeaz dac indicatorul de nregistrri este poziionat pe nceputul
tabelei, respectiv pe sfritul tabelei.
Numrul de nregistrri dintr-o tabel este returnat de funcia RECCOUNT().
Dimensiunea unei nregistrri (n nr. octei) este returnat de funcia RECSIZE().
Pentru specificarea domeniului nregistrrilor n anumite instruciuni se pot utiliza urmtoarele
clauze :
ALL specific toate nregistrrile
RECORD <nr> - specific nregistrarea <nr>
NEXT <nr> - specific urmtoarele <nr> nregistrri ncepnd cu nregistrarea curent.
REST specific restul nregistrrilor pn la sfritul tabelei ncepnd cu nregistrarea
curent.
Exemplu.
LIST NEXT 3 afieaz urmtoarele 3 nregistrri ncepnd cu nregistrarea curent.
n tabelele indexate (i numai n acestea) se poate realiza poziionarea direct pe o nregistrare
pentru o valoare a expresiei de indexare precizat, folosind fie instruciunile SEEK <valoare cheie
index>, IF FOUND(), fie funcia SEEK() n instruciunea IF astfel IF SEEK(<valoare cheie
index.>)
42
II.2.7. Comenzi SET permit stabilirea unor condiii de lucru valabile n sesiunea FoxPro de lucru
curent.
SET BELL activeaz sau dezactiveaz sunetele
SET BELL TO stabilete frecvena i durata unui sunet
SET CONFIRM determin dac tasta <Enter> trebuie acionat la ieirea dintr-un cmp
SET DATE specific formatul datelor calendaristice
SET DECIMALS stabilete numrul zecimalelor de afiat pentru datele numerice
SET DELETED stabilete accesul la nregistrrile marcate pentru tergere
SET DEFAULT specific directorul i unitatea de disc implicit (poziionarea intr-un anumit
director)
SET DEVICE stabilete perifericul de afiare
SET EXACT specific dac este necesar o potrivire exact n operaiile de comparare
pentru iruri de caractere
SET FILTER specific condiiile pe care trebuie s le ndeplineasc nregistrrile unei tabele
pentru a fi accesibile
SET ORDER stabilete ordinea de parcurgere a nregistrrilor unei tabele
SET PRINTER activeaz sau dezactiveaz ieirea la imprimant
SET PROCEDURE deschide un fiier de proceduri specificat
SET RELATION TO stabilete o relaie ntre dou sau mai multe tabele
SET RELATION OFF - terge o relaie ntre dou tabele
SET SKIP TO creaz o relaie 1-n (on to many) ntre o nregistrare a unei tabele printe i
mai multe nregistrri a unei tabele copil
SET SAFETY activeaz sau dezactiveaz facilitatea de protecie a fiierelor
SET TALK controleaz afiarea rezultatelor unor comenzi.
II.2.8. Instrumente de lucru pentru creterea productivitii (ex. de utilizare n FoxPro 2.6 sub
Windows).
- Generatorul de meniuri se lanseaz cu comanda Create menu <nume meniu>, sau se selecteaz
File -> New -> Menu -> New, n caseta Prompt se tasteaz numele meniului, din meniul Menu se
selecteat General Optionns , n caseta Location se precizeaz locul unde va apare meniul creat n bara
de meniuri Fox (ex. After, Help pentru ca meniul nou creat s apar dup meniul Help) apoi se
selecteaz OK. Din lista Result se selecteaz Submenu apoi Create iar n caseta Prompt se tasteaz
opiunile de meniu vertical corespunztoare meniului orizontal nou creat i pentru fiecare opiune se
alege din coloana Result cuvntul Command iar n caseta Options se tasteaz DO <nume procedura>
coresp.(dac n caseta Prompt n loc de opiune se tasteaz \- atunci se va trasa un rnd de linii ntre
opiuni). Din meniul Program se selecteaz Generate, se apas butonul Yes i n caseta Save Menu As
se tasteaz numele fiierului n care se va salva meniul i extensia .mnx, apoi se apas butonul Save iar
din caseta Generate Menu se alege Generate. Pentru execuia meniului se d comanda DO <nume fiier
salvat>.mpr, iar pt.modificare MODI COMM <nume fiier salvat>.mpr Pentru revenire la meniul Fox
se d comanda SET SYSMENU TO DEFAULT.
- Creare, salvare,tiprire rapoarte sumare se selecteaz Database->Report->Quick Report
Apoi selecie buton stnga pt. raport n mod Browse, sau buton dreapta pt. raport n mod Change, dup
care se salveaz cu <nume fiier>.frx, care poate fi editat cu MODI REPORT <nume fiier> i executat
din meniul Run cu opiunea Report.
Crearea unei aplicaii din bara de meniuri FoxPro se selecteaz Run->Application->New, apoi din
caseta care apare se selecteaz Step1 pt. creare sau modificare tabel sau/i Step2 pt. creare sau
modificare ecran i n final se apas butonul Generate. Pentru execuia aplicaiei se selecteaz
Run->Application, apoi se selecteaz fiierul cu extensia .app de executat i se apas butonul Run.
- Generatorul de ecrane (Screen Builder)
- Generatorul de rapoarte (Report Writer)
43
44
fi manipulat individual, att n momentul proiectrii ct i n momentul execuiei. Se poate crea cte o
clas pentru fiecare control i fiecare formular, ns n acest mod n final vor exista mai multe clase
care fac cam acelai lucru, dar care trebuie ntreinute separat. Se poate crea o clas control pentru o
funcionalitate generic. Astfel spre exemplu, butoanele de comand care permit utilizatorului s mute
indicatorul de nregistrri n cadrul unei tabele, un buton care s nchid formularul i un buton de
asisten pot fi salvate sub form de clase i pot fi adugate la formulare cnd se dorete aceast
funcionalitate. Se pot crea clase pentru seturi de formulare, formulare i controale cu o anumit
nfiare, astfel nct toate componentele aplicaiei s aib acelai aspect.
Visual FoxPro permite crearea mai multor tipuri de clase, fiecare cu propriile sale
caracteristici, tipul clasei putnd fi precizat n caseta de dialog New Class sau n clauza AS a comenzii
CREATE CLASS. Se pot crea subclase ale majoritii claselor de baz din Visual FoxPro cu ajutorul
proiectantului de Clase (Class Designer).
II.3.3. Evenimentele din Visual FoxPro.
Codul pentru evenimente este declanat automat de ctre sistem ca rspuns la o anumit
aciune a utilizatorului. Spre exemplu, codul scris pentru evenimentul Click este prelucrat automat de
sistem atunci cnd utilizatorul execut clic pe un control.
Codul pentru evenimente poate fi declanat i de evenimente din sistem, ca n cazul
evenimentului Timer al controlului timer (ceas).
Principalele evenimente din Visual FoxPro, valabile pentru majoritatea controalelor sunt
prezentate n tabelul de mai jos:
Evenimentul
Momentul declanrii evenimentului
Init
La crearea unui obiect
Destroy
La descrcarea unui obiect din memorie
Click
Cnd utilizatorul execut clic pe obiect cu butonul stnga al
mouse-ului
DblClick
Cnd utilizatorul execut dublu-clic pe obiect cu butonul
stnga al mouse-ului
RightClick
Cnd utilizatorul execut clic pe obiect cu butonul dreapta al mouse-ului
GetFocus
Cnd obiectul devine inta intrrilor (primete focusul), fie datorit
aciunii utilizatorului (de exemplu, la apsarea tastei Tab sau la executarea
unui clic), fie ca urmare a metodei SetFocus din program
LostFocus
Cnd obiectul nu mai este inta intrrilor (pierde focusul), fie datorit aciunii
utilizatorului (de exemplu, la apsarea tastei Tab sau la executarea unui clic),
fie ca urmare a metodei SetFocus din program
KeyPress
La apsarea i eliberarea unei taste de ctre utilizator
MouseDow
La apsarea butonului mouse-ului de ctre utilizator atunci cnd indicatorul
mouse-ului se afl deasupra obiectului
MouseMove
Cnd utilizatorul deplaseaz indicatorul mouse-ului deasupra obiectului
MouseUp
Cnd utilizatorul elibereaz butonul mouse-ului n timp ce indicatorul
mouse-ului se afl deasupra obiectului
II.3.4. Crearea unei baze de date
Crearea unei baze de date se poate realiza cu ajutorul interfeei sau al limbajului. La crearea
bazei de date, se reunesc tabelele ntr-o singur colecie (fiier cu extensia .dbc) i se creeaz
dicionarul de date n care se memoreaz o serie de informaii printre care: cheile primare i candidate,
relaiile persistente dintre tabelele bazei de date, numele lungi pentru tabele i cmpuri, titlurile de
cmpuri afiate n fereastra Browse i n anteturile coloanelor
unei grile, valorile implicite ale
cmpurilor, clasele implicite ale controalelor folosite n formulare, mtile de intrare i formatele de
afiare a cmpurilor, regulile la nivel de cmp i de nregistrare, declanatoarele, procedurile stocate,
45
conexiunile la surse de date externe, vederile locale i externe, comentariile pentru fiecare cmp, tabel
i baz de date
Unele faciliti ale dicionarului de date, cum ar fi numele lungi pentru cmpuri, cheile primare
i candidate, valorile implicite, regulile la nivel de cmp i de nregistrare i declanatoarele, sunt
stocate n fiierul .dbc, dar sunt create n cadrul procesului de construire a unei tabele sau vederi.
Crearea unei noi baze de date se realizeaz astfel:
1. cu Gestionarul de Proiecte, se selecteaz fia cu eticheta Data, iar din lista afiat se selecteaz
Databases i apoi New.
sau
2. cu comanda CREATE DATABASE
La crearea unei baze de date se creaz un container de baz de date vid, cruia i se vor aduga
ulterior obiectetele ce se vor crea pentru aceasta.
Adugarea tabelelor la o baz de date
O tabel Visual FoxPro poate exista n una din urmtoarele dou situaii: ca tabel liber
(extern), adic sub form de fiier .dbf neasociat vreunei baze de date, sau ca tabel dintr-o baz de
date, adic sub form de fiier .dbf asociat unei baze de date. Tabelele asociate unei baze de date au unele
proprieti specifice, care nu exist n cadrul tabelelor externe, cum ar fi regulile la nivel de cmp i de
nregistrare, declanatoarele i relaiile persistente. Tabelele pot fi asociate cu o baz de date prin crearea
lor n cadrul unei baze de date deschise n fundal sau prin adugarea tabelelor existente la o baz de date.
Pentru adugarea unei tabele libere la o baz de date se poate proceda astfel:
n cadrul Gestionarului de Proiecte, se selecteaz Tables din cadrul fielor All sau Data,
apoi se selecteaz Add.
sau
cu comanda ADD TABLE.
Exemplu, secvena de instruciuni de mai jos deschide baza de date BazaTest i i adaug tabela liber
TabTest:
OPEN DATABASE BazaTest
ADD TABLE TabTest
O tabel existent poate fi asociat la o singur baz de date.
O tabel (un fiier .DBF) poate fi folosit i fr a fi ncorporat ntr-o baz de date.
Pentru a face o referin la o tabel dintr-o alt baz de date dect cea curent se folosete
simbolul !, ca de exemplu:
USE BazaTest!TabTest
BROWSE
Pentru eliminarea unei tabele dintr-o baz de date se poate utiliza una din cile:
n cadrul Gestionarului de Proiecte (Project Manager), se selecteaz numele tabelei, apoi se
selecteaz Remove.
sau
n cadrul Proiectantului de Baze de Date (Database Designer), se selecteaz tabela i se alege
comanda Remove din meniul Database.
sau
cu comanda REMOVE TABLE.
Exemplu, codul de mai jos deschide baza de date BazaTest i elimin tabela TabTest
OPEN DATEBASE BazaTest
REMOVE TABLE TabTest
La eliminarea unei tabele dintr-o baz de date nu se realizeaz i tergerea automat a fiierului
asociat tabelei.
Pentru eliminarea tabelei din baza de date i tergerea fiierului .dbf al tabelei de pe hard-disc, se
va folosi clauza DELETE a comenzii REMOVE TABLE sau comanda DROP TABLE astfel:
OPEN DATABASE BazaTest
REMOVE TABLE TabTest DELETE
46
47
n cadrul Gestionarului de Proiecte (Project Manager), se selecteaz o baz de date, se alege Local
Views, apoi New pentru a deschide fereastra proiectantului de Vederi (View Designer).
sau
- avnd deschis o baz de date, se d comanda CREATE SQL VIEW pentru a afia fereastra
Proiectantului de Vederi.
sau
- se d comanda CREATE SQL VIEW cu clauza AS.
Exemplu:
CREATE SQL VIEW ViewTest AS SELECT * FROM BazaTest!TabTest
Definiia unei vederi poate fi tears din baza de date cu ajutorul Gestionarului de Proiecte
(Project Manager) sau cu comanda DELETE VIEW (nainte de a terge vederea, baza de date din care
face parte trebuie s fie deschis i s fie baza de date curent).
Pentru accesarea datelor stocate pe un server la distan este necesar s se creeze o vedere
extern ceea ce necesit conectarea la sursa de date prin driver-ul ODBC corespunztor. Sursa de date
i conexiunile pot fi definite din Visual FoxPro. Definiia conexiunii va fi stocat n baza de date i va
putea fi referit atunci cnd se creaz vederea extern.
Pentru crearea unei conexiuni se poate proceda astfel:
- n fereastra Gestionarului de Proiecte (Project Manager), se selecteaz Connections, apoi New pentru a
deschide fereastra Proiectantului de Conexiuni (Connection Designer).
sau
- se deschide baza de date i se folosete comanda CREATE CONNECTION pentru a deschide
fereastra Proiectantului de Conexiuni.
sau
- se folosete comanda CREATE CONNECTION, urmat de numele conexiunii.
Exemplu, pentru a crea o conexiune n baza de date BazaTest n vederea conectrii la sursa de date ODBC
ServerRemote, se poate utiliza urmtoarea secven de instruciuni:
OPEN DATABASE BazaTest
CREATE CONNECTION conexiune_01;
DATASOURCE ServerRemote utilizator parola
Visual FoxPro va activa conexiunea atunci cnd se va folosi vederea (pn la activarea conexiunii,
aceasta exist doar ca definiie stocat pe un rnd al fiierului .dbc al bazei de date). La utilizarea vederii
externe, Visual FoxPro va crea, prin intermediul conexiunii indicate n cadrul vederii, o conexiune activ
cu sursa de date extern, dup care trimite ctre aceasta o cerere de date folosind conexiunea activ drept
canal de legtur.
Se poate crea o vedere care indic doar numele sursei de date, nu i denumirea conexiunii, iar la
utilizarea acestei vederi, Visual FoxPro va folosi informaia ODBC pentru a crea i a activa o conexiune cu
sursa de date.
La nchiderea vederii, se nchide i conexiunea.
Pentru afiarea conexiunilor existente se poate utiliza comanda DISPLAY CONNECTIONS.
II.3.8. Formularele n Visual FoxPro
Formularele ofer utilizatorului faciliti pentru vizualizarea i introducerea datelor ntr-o baz
de date, putnd ncorpora o colecie de obiecte care pot rspunde la evenimentele generate de utilizator
sau de sistem i avnd propriile lor proprieti i metode.
Pentru proiectarea formularelor, Visual FoxPro dispune de un Proiectant de Formulare (Form
Designer) puternic, cu ajutorul cruia utilizatorul poate crea:
- Diverse tipuri de obiecte n cadrul formularelor;
- Date asociate obiectelor dintr-un formular;
- Formulare printe i formulare fiu (ierarhii de formulare);
- Formulare multiple care pot fi manipulate mpreun;
- Formulare bazate pe abloane definite de utilizator.
48
49
50
51
52
2.
n caseta de dialog File New Database care apare pe ecran (figura 2.1), se va specifica numele
bazei de date n controlul File name i se alege un dosar pentru baza de date n controlul Save in, apoi
execut clic pe butonul Create. Pe ecran se va deschide fereastra Database (vezi figura 4).
53
Problem propus
S se creeze baza de date FurnizoriClieni prin fiecare din cele dou metode prezentate mai
sus.
54
Memo
Pn la 64,000 caractere.
descrieri.
Number
8 bytes.
Currency
8 bytes.
55
Replication ID).
se adaug un articol.
Yes/No
1 bit.
disc).
Lookup
Wizard
bytes.
crearea listei.
n tabelul T2 sunt prezentate tipurile i mrimea valorilor numerice ce pot fi memorate n
cmpurile de tip Number.
T2. Date de tip Number
Valoarea proprietii
Domeniu
FieldSize
Byte
0 la 255
Precizie
Memorie necesar
1 byte
Integer
-32,768 la 32,767
2 bytes
Long Integer
-2,147,483,648 la 2,147,483,647
4 bytes
Single
-3.402823E38 la 3.402823E38
Double
-1.79769313486232E308 la
1.79769313486232E308
56
4 bytes
15
8 bytes
Database Wizard pentru a crea ntr-o singur operaie toate tabelele, formularele i rapoartele
necesare ntregii baze de date. Database Wizard creeaz o nou baz de date. Acest procedeu nu
poate fi folosit pentru a aduga noi tabele, formulare sau rapoarte ntr-o baz de date existent.
Table Wizard pentru a alege cmpurile tabelei dintr-o varietate de tabele predefinite, cum ar fi
contacte de afaceri, inventare de cas sau articole medicale.
DataSheet pentru introducerea datelor direct ntr-o foaie de date (datasheet). La salvarea foii de
date Microsoft Access va analiza datele i automat va atribui tipul de date i formatul pentru
fiecare cmp.
Indiferent de metoda care se folosete pentru crearea unei tabele, se poate utiliza vederea
Design pentru a modifica descrierea tabelei, prin adugarea de noi cmpuri, stabilirea valorilor
implicite sau crearea mtilor de introducere. n figura 5 este reprezentat fereastra Design view pentru
crearea unei tabele.
Figura 6 Caseta de dialog New Table avnd selectat opiunea Design View
58
59
Figura 7. Caset de dialog Lookup Wizard pentru crearea unei liste din valorile unei tabele, (interogri),
sau liste de valori
Crearea unui cmp pentru examinarea i afiarea valorilor dintr-o tabel sau interogare
Pentru a crea un cmp care s afieze valorile dintr-o tabel sau interogare se execut
urmtoarele operaii:
1.
n coloana Data Type a cmpului, se execut clic pe sgeat i selecteaz Lookup Wizard
din lista afiat.
2.
n prima caset de dialog Lookup Wizard (vezi fihgura 7) se selecteaz opiunea I will the
lookup column to look up the values n a table or query (doresc o coloan de examinare pentru a
vizualiza valorile dintr-o tabel sau interogare) i apoi se execut clic pe butonul Next pentru a
trece la urmtoarea caset de dialog.
3.
n a doua caset de dialog Lookup Wizard (vezi figura 8) se selecteaz tabela (interogarea)
care va sta la baza listei de examinare i care va trebui s existe i s conin date n cmpul
respectiv. Se execut clic pe butonul Next pentru a trece la urmtoarea caset de dialog.
4.
n a treia caset de dialog Lookup Wizard (vezi figura 9) se vor selecta cmpurile din
tabela examinat a cror valori se vor afia n lista de examinare. Lista de examinare va conine
cmpurile ce se gsesc n lista Selected Fields. Pentru a muta un cmp din lista Available Fields n
lista Selected Field se va selecta cmpul n lista Available Fields i apoi se va executa clic pe
butonul >. Dup selectarea cmpurilor pentru lista de examinare se va executa clic pe butonul Next
pentru a trece la urmtoarea caset de dialog.
5.
n a patra caset de dialog Lookup Wizard (vezi figura 10) se stabilete aspectul listei de
examinare. Se recomand activarea casetei de validare Hide key column pentru ca lista de
examinare s nu afieze i coloana care conine cheia de legtur. Pentru a trece la urmtoarea
caset de dialog se execut clic pe butonul Next.
6.
n a cincea caset de dialog (vezi figura 11) se selecteaz coloana pentru preluare.
60
7.
n a asea caset de dialog Lookup Wizard (vezi figura 12) se modific, dac este
necesar, numele cmpului de examinare i caseta de validare Display Help on customizing the
lookup column (afiarea Help-ului la personalizarea coloanei de examinare). Se execut clic pe
butonul Finish pentru a termina crearea cmpului de examinare.
Figura 8. A doua caset de dialog Lockup Wizard (pentru selectare tabel sau interogare)
Figura 9. A treia caset de dialog Lockup Wizard (pentru selectare cmpuri pentru list)
61
Figura 10. A patra caset de dialog Lockup Wizard (pentru aspectul listei de examinare)
Figura 11. A cincea caset de dialog Lockup Wizard (pentru selectare coloan pentru preluare)
62
2.
n prima caset de dialog Lookup Wizard (vezi figura 14) se selecteaz opiunea I will
type n the values that I want (voi tasta valorile pe care le doresc) i apoi se execut clic pe
butonul Next pentru a trece la urmtoarea caset de dialog.
3.
n a doua caset de dialog Lookup Wizard (vezi figura 15) se va stabili numrul de coloane
al listei i se vor introduce valorile listei. Se execut clic pe butonul Next pentru a trece la
urmtoarea caset de dialog.
4.
n a treia caset de dialog Lookup Wizard (vezi figura 16) se modific, dac este necesar,
numele cmpului de examinare i caseta de validare Display Help on customizing the lookup
column (afiarea Help-ului la personalizarea coloanei de examinare). Se execut clic pe butonul
Finish pentru a termina crearea cmpului de examinare.
63
Figura 14. Caset de dialog Lookup Wizard pentru crearea unui cmp pentru afiarea unei listede
valori
64
Figura 15. A doua caset de dialog Lockup Wizard pentru crearea unei liste de valori
Figura 16. A treia caset de dialog Lockup Wizard pentru crearea unei liste de valori
65
Semnificaie
Cod produs
Denumire produs
Descriere produs
Tip dat
Number, Integer
Text
Hyperlink
Dimensiune Observaii
4
Cheie primar
20
Refer document
corespunztor
Semnificaie
Cod produs
Tip dat
Number, Integer
Lockup Wizard
Cod depozit
Text
Unitate de msur Lockup Wizard
produs
Cantitate
Number, Integer
Pre unitar
Number,
LongInteger
Dimensiune Observaii
4
Lockup Wizard cu
tabela PRODUSE
2
8
Creare i utilizare
list de valori
4
8
Semnificaie
Cod furnizor
Denumire furnizor
Adresa furnizor
Tip dat
Number, Integer
Text
Text
Dimensiune Observaii
4
Cheie primar
30
25
Semnificaie
Cod furnizor
Tip dat
Number, Integer
Lockup Wizard
Number, Integer
Cod produs
Lockup Wizard
Unitate de msur Lockup Wizard
produs
Pre unitar
Number,
LongInteger
Data ofertei
Date
Oferta furnizor
Hyperlink
Dimensiune Observaii
4
Lockup Wizard cu
tabela FURNIZORI
4
Lockup Wizard cu
tabela PRODUSE
8
Creare i utilizare
list de valori
8
8
Refer document
corespunztor
Semnificaie
Cod client
Denumire client
Adresa client
Tip dat
Number, Integer
Text
Text
66
Dimensiune Observaii
4
Cheie primar
30
25
Semnificaie
Cod furnizor
Tip dat
Number, Integer
Lockup Wizard
Number, Integer
Cod produs
Lockup Wizard
Unitate de msur Lockup Wizard
produs
Cantitate
Number, Integer
Pre unitar
Number,
LongInteger
Data vnzrii
Date
Dimensiune Observaii
4
Lockup Wizard cu
tabela CLIENTI
4
Lockup Wizard cu
tabela PRODUSE
8
Creare i utilizare
list de valori
4
8
8
n imaginea de ecran din figura 17 sunt evideniate tabelele bazei de date FurnizoriClienti i
este reprezentat descrierea tabelei Produse.
n mod asemntor i conform precizrilor din tabelele de mai sus, se vor defini i celelalte
tabele n baza de date i se vor ncrca date pentru diverse produse, preuri, furnizori, clieni.
Pentru modificarea structurii unei tabele se va deschide tabela n modul Design.
Pentru preleare sau actualizare date ntr-o tabel se va deschide tabela n modul Open.
68
Probleme propuse
S se creeze interogrile corespunztoare situaiei ofertelor de produse i situaiei vnzrilor de
produse conform specificaiilor de mai jos.
Situaia ofertelor
Cmp
Tabela
Codf
Furnizori
Denf
Furnizori
Adresaf
Furnizori
Codp
Produse
Denp
Produse
Ump
Oferte
Pret
Oferte
Datao
Oferte
Situaia vnzrilor
Cmp
Tabela
Codc
Clienti
Denc
Clienti
Adresac
Clienti
Codp
Produse
Denp
Produse
Ump
Vanzari
Cant
Vanzari
Pret
Vanzari
Valoare
Cant*Pret
Datav
Vanzari
Pentru vnzri se va crea i o interogare cu parametru pentru situaia vnzrilor n luna ..., unde
luna se va comunica drept parametru de interogare.
III.4. Crearea i utilizarea formularelor.
n Microsoft Access formularele se pot folosi pentru a crea:
- un ecran pentru introducerea datelor n una sau mai multe tabele;
- un ecran tip panou de comutatoare pentru a deschide alte formulare sau rapoarte;
- o caset de dialog care s solicite de la utilizator informaii suplimentare necesare
executrii unei aciuni.
Majoritatea informaiilor dintr-un formular provin dintr-o surs de informaii, dar exist i
informaii care se introduc la proiectarea machetei. Legtura dintre formular i sursa de date se
realizeaz prin intermediul unor obiecte grafice, numite controale. Cele mai utilizate controale sunt
casetele de text, cu ajutorul crora se pot afia fie informaiile dintr-o surs de date, fie rezultatele
evalurii unei expresii.
Un formular poate fi creat n dou moduri i anume:
- n modul Design view;
- utiliznd un wizard.
Un wizard poate fi utilizat n modurile (figura 23, caseta New Form care apare la apsarea
butonului New din fereastra Database):
Form Wizard;
AutoForm: Columnar;
AutoForm: Tabular;
Chart Wizard;
Pivot Table Wizard.
Odat creat, un formular poate fi modificat i n acest sens se deschide formularul n modul
Design pentru a-l modifica aa cum se dorete.
Pentru crearea unui singur formular simplu, pe o singur coloan, se poate utiliza opiunea
AutoForm. Pentru ca formularul s poat afia cmpurile tabelei (interogrii) selectate, trebuie
adugate controale (casete de text, casete combinate, liste etc.) n macheta acestuia. Pentru a putea
aduga controale este necesar ca pe ecran s existe caseta cu instrumente Toolbox i fereastra List
Field. Dac aceste obiecte nu sunt afiate pe ecran, atunci va trebui ca din meniul View s se selecteze
opiunile Toolbox, pentru a afia caseta instrumentelor Toolbox, respectiv Field List pentru a afia lista
cmpurilor. Dup adugarea controalelor i stabilirea proprietilor formularului, se nchide formularul
i i se d un nume.
Subformulare
Subformularul este un formular n interiorul altui formular. Formularul primar este denumit
formular principal (main form), iar formularul din interiorul formularului este numit subformular.
71
72
Figura 23. Fereastra Database. Modaliti de creare a unui formular (Caseta New Form).
73
Figura 31. Utilizare formular Produse pentru vizualizare i actualizare date n tabelele
Produse i Stocuri.
Un wizard poate fi utilizat n modurile (figura 32, caseta New Report care apare la apsarea
butonului New din fereastra Database):
-
Report Wizard;
AutoReport: Columnar:
AutoReport: Tabular;
Chart Wizard;
Label Wizard.
77
Figura 32. Fereastra Database. Modaliti de creare a unui raport (Caseta New Report).
Problem rezolvat
n cele ce urmeaz se vor prezenta paii de parcurs pentru realizarea unui raport n modul
Report Wizard.
1. n caseta de dialog Choose the table or query se selecteaz tabela sau interogarea pe care se va
fundamenta raportul i se apas butonul OK (figura 33, Situaia Stocurilor).
2. Selectare cmpuri pentru raport din lista Available Fields n lista Selected Fields folosind
butoanele > sau >> , dup care se apas butonul Next (figura 34).
3. Selectare mod pentru vizualizare date, dup care se apas butonul Next (figura 35).
4. Selectare nivele de grupare date n raport, dup care se apas butonul Grouping Options pentru a
preciza modul de grupare, apoi se apas butonul Next (figura 36).
5. Precizare criterii de ordonare date n raport, dup care se apas butonul Sumary Options pentru
precizarea operaiilor de efectuat asupra grupurilor de nregistrri (figura 37).
6. Precizare operaii de efectuat asupra grupurilor de nregistrri, dup care se apas butonul OK
(figura 38) i apoi butonul Next.
7. n casetele Layout, Orientation, se selecteaz forma de realizare a raportului (figura 39) i apoi se
apas butonul Next.
8. Se selecteaz stilul de realizare a raportului, apoi se apas butonul Next (figura 40).
9. Precizare titlu raport, dup care se apas butonul Finish (figura 41).
n figura 42 este vizualizat raportul obinut. Pentru modificarea raportului, acesta trebuie
deschis n modul Design i apoi se execut modificrile dorite.
78
Probleme propuse
Dup exemplul prezentat, s se creeze urmtoarele rapoarte utiliznd modul Report Wizard:
Situaia ofertelor de produse pe produs
Cod produs Denumire produs
Cod furnizor Denumire furnizor Adresa furnizor Ump Pret Data ofertei
.
..
Situaia ofertelor de produse pe furnizor
Cod furnizor Denumire furnizor Adresa furnizor
Cod produs Denumire produs Ump Pret Data ofertei
.......
Situaia vnzrilor de produse pe produs
Cod produs Denumire produs
Cod client Denumire client Adresa client Ump Cantitate Pret Valoare Data vnzrii
.
Total produs
xxxxxxx
xxxxxx
Total general
xxxxxx
Situaia vnzrilor de produse pe client
Cod client Denumire client Adresa client
Cod produs Denumire produs Ump Cantitate Pret Valoare Data vnzrii
Total client
xxxxxx
.
Total general
xxxxxx
Teste de verificare
1. La nivel fizic o baz de date Access este:
a) un ansamblu de fiiere ce conin obiectele bazei de date
c) un fiier cu extensia .mdb
d) un fiier cu extensia .xls
79
Figura 33. Modul Report Wizard Selectare tabel sau interogare pentru raport .
Figura 35. Modul Report Wizard. Selectare mod (tabel) dup care vor fi vizualizate datele.
Figura 36. Modul Report Wizard. Selectare nivele de grupare date n raport.
81
Figura 37. Modul Report Wizard. Precizare criterii de ordonare date n raport.
Figura 38. Modul Report Wizard. Precizare operaii de efectuat asupra grupurilor de nregistrri.
82
Figura 42. Modul Report Wizard. Vizualizare raport Situaia stocurilor de produse.
84
IV LIMBAJUL SQL
Rezumat. Este prezentat limbajul SQL pentru crearea, administrarea i interogarea bazelor de date
relaionale. Implementat n majoritatea produselor software moderne de baze de date, limbajul SQL
este larg utilizat n arhitecturi cu baze de date client / server, sisteme de baze de date distribuite,
pentru accesarea bazelor de date n reele de calculatoare, ct i pentru interogarea bazelor de date
pe un singur calculator personal. De asemenea, sunt prezentate extensiile limbajului privind facilitile
de orientare spre obiecte n cadrul standardului SQL3, precum i o serie de funcii privind procesarea
analitic a datelor.
Limbajul SQL (Structured Query Language) a fost realizat n cadrul firmei IBM ca limbaj
de interogare al SGBD System R i ulterior a devenit unul din cele mai rspndite limbaje pentru
SGBD-urile relaionale. Limbajul SQL, ca limbaj de interogare a bazelor de date relaionale, este
construit pe baza a dou formalisme abstracte i anume:
1. Algebra relaional prin care interogrile sunt exprimate prin aplicarea unor operatori unari sau
binari care constituie primitive ce acioneaz asupra relaiilor, rezultatul interogrilor fiind tot relaii,
ceea ce permite asocierea i imbricarea acestor operatori pentru a forma interogri complexe.
Operatorii algebrei relaionale se mpart n dou grupe i anume:
- operaii pe mulimi (Reuniunea, Intersecia, Diferena, Produsul cartezian)
- operatori relaionali speciali (Selecia, Proiecia, Cuplarea (JOIN), Diviziunea)
2. Calculul relaional prin care interogrile descriu mulimea tuplelor rezultat prin specificarea unui
predicat (condiie) care trebuie satisfcut de aceste tuple.
ncepnd din 1986 limbajul SQL a devenit standard ANSI pentru limbajele de interogare ale
bazelor de date relaionale fiind utilizat att n cadrul unor SGBD-uri complexe cum ar fi SGBD
ORACLE (liderul mondial n domeniul bazelor de date), ct i n cadrul unor SGBD-uri de
complexitate redus cum ar fi cele din familia xBase (Dbase IV, FoxPro). Standardul SQL utilizat pn
la nceputul anului 2000 este cel realizat n 1992 i cunoscut sub numele de SQL92 sau SQL2.
Noul standard SQL3 lansat n 1999 are n vedere o serie de extensii fa de SQL2 dup cum
urmeaz:
- Faciliti orientate obiect posibilitatea de definire de ctre utilizator a tipurilor abstracte de date
care s permit descrierea de metode, identitatea obiectelor, subtipuri i motenire, polimorfism
etc.
- Structuri de control pentru a conferi limbajului completitudine de calcul (IF, FOR, WHILE, etc.)
pentru a deveni un limbaj de sine stttor a crui putere de expresie s nu mai fie limitat la nivelul
limbajelor relaionale.
- Faciliti pentru exprimarea prelucrrilor recursive.
- Faciliti de comunicare n reea.
- Faciliti de prelucrare distribuit (mecanisme pentru crearea, memorarea i execuia procedurilor
la nivelul serverelor de date stored procedures).
- Faciliti multimedia.
- Faciliti pentru tratarea timpului n bazele de date.
Modelul relaional al datelor propus de Codd, relativ la manipularea datelor, a fost iniial
orientat exclusiv pe problema regsirii datelor prin operaia de interogare a bazelor de date, ulterior
(SQL2, 1990) fiind avute n vedere i problemele introducerii actualizrii i eliminrii datelor.
IV.1. Manipularea datelor (comenzi DML)
IV.1.1. Interogarea bazelor de date
Interogarea bazelor de date n limbajul SQL se realizeaz cu ajutorul unei singure instruciuni
i anume instruciunea SELECT avnd urmtoarea sintax:
SELECT [DISTINCT] <lista atribute>|*
FROM <lista relaii>
[WHERE <condiie>]
85
86
87
(unde <cheie1>, <cheie2> reprezint cmpurile ce identific nregistrrile corespondente n cele dou
tabele).
Pentru exemplificare pe lng tabela Stoc_Prod mai considerm tabela Produse(CodProd,
DenProd, UmProd).
SELECT Produse.CodProd,DenProd,UmProd,Cant,Pret
FROM Produse,Stoc_Prod
WHERE Produse.CodProd = Stoc_Prod.CodProd
(extrage toate tuplele (CodProd,DenProd,UmProd,Cant,Pret) pentru care valoarea atributului CodProd
din tabela Produse este egal cu valoarea atributului CodProd din tabela Stoc_Prod ).
n lipsa clauzei WHERE se vor extrage toate combinaiile posibile ntre tuplele celor dou tabele
(produsul cartezian).
Fiecrei tabele i se poate atribui un alias astfel nct fraza de mai sus este echivalent cu fraza:
SELECT A.CodProd,DenProd,UmProd,Cant,Pret
FROM Produse A,Stoc_Prod B WHERE A.CodProd = B.CodProd
n anumite situaii poate fi necesar corelarea (cuplarea) unei relaii (tabele) cu ea nsi. Spre
exemplu dac presupunem c n tabela Stoc_Prod unele produse pot apare de mai multe ori cu preuri
diferite i ne intereseaz poziiile cu preul minim, formulm urmtoarea interogare:
SELECT A.CodProd,A.Cant,A.Pret FROM Stoc_Prod A WHERE A.Pret =
(SELECT MIN(B.Pret) FROM Stoc_Prod B WHERE A.CodProd = B.CodProd)
Pentru rezolvarea unor astfel de probleme s-au utilizat instruciuni SELECT imbricate care vor
fi tratate n detaliu n cele ce urmeaz.
Instruciuni SELECT imbricate
Limbajul SQL ofer posibilitatea construirii unor interogri complexe prin includerea n clauza
WHERE a unei instruciuni SELECT, a altei instruciuni SELECT (numit sub-interogare sau inner)
astfel:
SELECT <lista atribute> FROM <lista relaii> WHERE <condiie> (<sub-interogare>)
La rndul ei sub-interogarea poate conine n clauza WHERE o alt instruciune SELECT
obinnd astfel o interogare complex constituit din instruciuni SELECT imbricate pe un numr
oarecare de nivele.
Instruciunea SELECT interioar genereaz valori pentru condiia de cutare a instruciunii
SELECT exterioare care o conine (numit i outer).
O sub-interogare poate returna o singur valoare, sau poate returna mai multe valori.
n ce privete ordinea de evaluare a interogrilor pot exista :
- Sub-interogri simple - n care interogarea interioar este evaluat prima,
independent de interogarea exterioar, iar rezultatul interogrii interioare este utilizat de interogarea
exterioar.
- Sub-interogri corelate - n care interogarea exterioar transmite repetat cte o valoare
pentru interogarea interioar, care n baza valorii primite, parcurge tuplele relaiei i transmite
interogrii exterioare rezultatul obinut. Astfel de interogri realizeaz corelarea unei relaii cu ea nsi
i sunt cele mai performante.
Spre exemplu dac presupunem c n tabela Stoc_Prod unele produse pot apare de mai multe
ori cu preuri diferite i ne intereseaz poziiile cu preul minim, formulm urmtoarea interogare:
SELECT A.CodProd,A.Cant,A.Pret FROM Stoc_Prod A
WHERE A.Pret = (SELECT MIN(B.Pret) FROM Stoc_Prod B
WHERE A.CodProd = B.CodProd)
Sub-interogri simple care returneaz o singur valoare - pot fi utilizate n interogri imbricate
avnd sintaxa:
88
89
90
ALTER TABLE <nume relaie> ADD|MODIFY (< nume atribut> <tip dat>,)
tergerea unei relaii se realizeaz cu comanda:
DROP TABLE <nume relaie>
IV.2.2. Comenzi pentru optimizarea interogrilor
Una din principalele ci de optimizare a timpilor de interogare a unei baze de date este
indexarea. Un index poate fi privit ca o relaie cu dou atribute i anume:
- primul atribut conine valorile atributelor relaiei dup care se creaz indexul
- al doilea atribut conine un pointer (adresa) la locaia tuplelor corespunztoare.
Crearea unui index se realizeaz cu comanda:
CREATE [UNIQUE] INDEX <nume index>
ON <nume relaie>(<nume atribut>[ASC|DESC],)
Dac pentru atributele utilizate n clauza WHERE a unor instruciuni SQL au fost creai
indeci, atunci acetia vor fi utilizai n vederea optimizrii timpului de prelucrare. Decizia de utilizare
sau nu a unui index este luat de limbajul SQL i nu de utilizator. Pentru aceasta fiecare model de
limbaj SQL dispune de o component numit optimizator,
care examineaz interogarea i decide care este modul optim de obinere a rezultatului.
O alt tehnic de optimizare a interogrilor este tehnica clustering disponibil n ORACLE i
care const n gruparea tuplelor din mai multe relaii i stocarea lor n aceeai zon pe disc.
IV.3. Controlul datelor (comenzi DCL)
IV.3.1. Vederi
O vedere este o relaie virtual, definit plecnd de la alte relaii din baza de date i care nu
conine date i deci nu ocup spaiu fizic pe disc. Vederile se definesc n dou scopuri i anume:
- pentru a simplifica accesul utilizatorilor la date
- pentru a asigura protecia i securitatea datelor fiecrui utilizator fiindu-i permis acces la
o poriune a bazei de date i putnd efectua doar anumite operaii (drepturi de acces
specificate cu comenzile GRANT/REVOKE).
Asupra unei vederi se pot efectua aceleai operaii ca i asupra unei relaii cu deosebirea c vederile nu
conin date i c orice modificri efectuate asupra datelor sunt reflectate i n vederi.
Asupra unei vederi se pot realiza operaiile:
- Creare vedere (CREATE VIEW)
- Creare sinonim pentru vedere (CREATE SYNONIM)
- tergere vedere (DROP VIEW)
- Interogare vedere (SELECT)
- Actualizare date din vedere (UPDATE)
- tergere date din vedere (DELETE)
- Adugare date (INSERT)
Crearea unei vederi se realizeaz cu comanda CREATE VIEW care are sintaxa:
CREATE VIEW <nume vedere> [<lista atribute>]
AS <fraza SELECT> [WITH CHECK OPTION]
Exemplu:
CREATE VIEW PersoaneSv(Nrcrt,Nume,Prenume,Sexul,Datan)
AS SELECT Nrcrt,nume,Prenume,Sexul,Datan from Persoane
WHERE Adresa=Suceava
Interogarea vederii se va realiza cu o comand de forma:
SELECT * FROM PersoaneSv
Utilizarea opiunii WITH CHECK OPTION asigur faptul c nici o tupl nu va fi adaugat sau
actualizat cu instruciunile INSERT, UPDATE, dac nu sunt respectate condiiile specificate n clauza
WHERE a instruciunii SELECT din definiia vederii.
91
Pentru acordarea sau retragerea drepturilor de acces la baza de date prin intermediul
vizualizrilor se vor folosi comenzi de forma:
GRANT [ALL|SELECT|INSERT|UPDATE|DELETE] ON <nume vedere>
TO <nume utilizator>
sau
REVOKE [ALL|SELECT|INSERT|UPDATE|DELETE] ON <nume vedere>
FROM <nume utilizator>
Asigurarea securitii datelor presupune definirea drepturilor de acces ale utilizatorilor i
protecia sistemului la accesul neautorizat. n acest sens asigurarea securitii se realizeaz pe dou
niveluri i anume:
- nivelul 1 acordarea dreptului de acces la sistem
- nivelul 2 acordarea dreptului de acces la nivel de relaii
Pentru conectarea utilizatorilor la sistem n majoritatea versiunilor de SQL se utilizeaz un
nume de utilizator i o parol.
Referitor la drepturile de acces la nivel de relaie n sistemele multi-user trebuie precizat
utilizatorul care a creat relaia (proprietarul relaiei). Fiecare utilizator are drepturi doar asupra
propriilor relaii, iar drepturi asupra unor relaii create de ali utilizatori pot fi acordate prin comanda
GRANT i pot fi retrase prin comanda REVOKE.
Datele privind definirea bazei de date, utilizatorii i drepturile de acces sunt stocate n
dicionarul de date i sunt gestionate de ctre sistemul de gestiune a bazei de date (SGBDR). n cele ce
urmeaz se va prezenta modul de realizare a celor dou nivele de securitate n cadrul sistemului
ORACLE.
IV.3.2. Nivelul 1 de securitate a datelor se realizeaz cu comanda:
GRANT <autorizare,> TO <nume utilizator> [IDENTIFIED BY <parola>]
unde <autorizare> poate fi:
DBA confer utilizatorului dreptul de efectuare a oricrei operaii asupra oricrei relaii din baza de
date
CONNECT confer utilizatorului dreptul de a a face interogri (SELECT) i actualizri (INSERT,
UPDATE, DELETE) asupra relaiilor create de ali utilizatori, ns nu permite utilizatorului s creeze
relaii (CREATE) sau s tearg relaii create de ali utilizatori (DROP).
RESOURCE confer utilizatorului drepturile ce rezult din autorizarea CONNECT i n plus dreptul
de a crea relaii (CREATE) i de a terge relaii ce i aparin (DROP).
Unui utilizator i pot fi acordate mai multe tipuri de autorizri n cadrul unei singure comenzi
GRANT. Parola stabilit pentru un utilizator poate fi modificat printr-o comand GRANT ulterioar
spre exemplu astfel:
GRANT RESOURCE TO <nume utilizator> IDENTIFIED BY <noua parol>
Unui utilizator cruia i s-a acordat un tip de autorizare i pot fi acordate i alte tipuri de
autorizare prin comenzi GRANT ulterioare.
Retragerea autorizrilor acordate unui utilizator se realizeaz cu comanda:
REVOKE <autorizare,> FROM <nume utilizator>
IV.3.3. Nivelul 2 de securitate a datelor
Pentru acordarea respectiv retragerea drepturilor de acces la relaii se utilizeaz comenzile
GRANT respectiv REVOKE cu urmtoarea sintax:
GRANT ALL|<drept de acces>, ON <nume relaie>
TO <nume utilizator>|PUBLIC [WITH GRANT OPTION]
respectiv
REVOKE ALL|<drept de acces>, ON <nume relaie>
FROM <nume utilizator>|PUBLIC
92
93
poate defini atribute i funcii suplimentare i poate anula funcii motenite. O instan a unui subtip
este considerat instan a tuturor supertipurilor sale. Pentru a crea un subtip este necesar ca utilizatorul
s aib privilegiul UNDER pentru fiecare tip definit de utilizator i specificat ca supertip n definiia
subtipului.
Crearea tabelelor.
O instan UDT poate persista numai dac este stocat ca valoare a unei coloane dintr-un tabel.
Pentru crearea unui tabel se va utiliza instruciunea CREATE TABLE chiar dac tabelul este format
dintr-un singur tip UDT.
Interogarea datelor
SQL3 pune la dispoziie aceeai sintax ca i SQL2 pentru interogarea i reactualizarea
tabelelor cu o serie de extensii pentru manipularea obiectelor.
Tipuri de referine i identitatea obiectelor
Spre deosebire de SQL2 n care definirea relaiilor dintre tabele se realizeaz prin mecanismul
cheie primar/cheie strin, n SQL3 pot fi utilizate tipurile de referine pentru a defini relaiile dintre
tipurile de rnduri i a identifica n mod unic un rnd din cadrul ntregii baze de date. Valoarea tipului
de referin poate fi stocat ntr-un tabel i utilizat ca o referin direct la un anumit rnd din alt tabel.
Tipul de referin are o funcionalitate similar identificatorului OID din sistemele SGBDOO (spre
exemplu n INFORMIX un OID este un identificator unic de 64 bii din care 24 bii identific tabelul,
iar 40 bii identific rndul din tabel).
Tipuri de colecii
Coleciile sunt utilizate pentru a stoca valori multiple ntr-o singur coloan a unui tabel
rezultnd tabele imbricate n care o coloan dintr-un tabel conine un alt tabel. SQL3 definete un tip
de colecie imbricat ARRAY, care reprezint un ir unidimensional cu un numr maxim de elemente,
iar n SQL4 se vor defini n plus tipurile de colecii parametrizate: LIST colecie ordonat care
permite dubluri, SET colecie neordonat care nu permite dubluri, MULTISET colecie neordonat
care permite dubluri.
Module stocate persistente
Pentru a conferi limbajului SQL completitudine de calcul, n standardul SQL3 au fost adugate
instruciuni noi astfel nct comportamentul obiectelor (metodele) s poat fi stocat i executat din
cadrul bazei de date, sub form de instruciuni SQL care pot fi grupate ntr-o instruciune compus
(bloc) cu propriile variabile locale. Dintre instruciunile noi adugate menionm:
- instruciunea de atribuire DECLARE
- instruciunea de prelucrare condiionat IFTHENELSEEND IF
- instruciunea de selecie a unei alternative CASEWHEN...THEN...END CASE
- instruciuni pentru iteraii
FOREND FOR, WHILEEND WHILE,
REPEATEND REPEAT
- instruciunea CALL pentru apelul procedurilor
- instruciunea RETURN care permite ca o expresie SQL s fie utilizat ca valoare returnat dintr-o
funcie SQL.
Tratarea condiiilor de excepie
SQL/PSM permite tratarea condiiilor de excepie precizate n definiia unui handler.
Declanatoare (trigger-e). Un declanator (trigger) este o instruciune SQL compus care este executat
ori de cte ori apare evenimentul declanator. Declanatoarele pot fi utilizate pentru validarea datelor
de intrare, ntreinerea informaiilor de audit (nregistrarea modificrilor efectuate asupra bazei de date
i de ctre cine), susinerea avertizrilor (ex. utilizarea potei electronice) n care este necesar
ntreprinderea unei aciuni atunci cnd un tabel este reactualizat ntr-un mod oarecare, susinerea
reproducerii (copierea i ntreinerea datelor pe servere multiple, metod preferat n locul distribuirii
datelor). Un declanator poate fi lansat nainte (BEFORE) sau dup (AFTER) apariia evenimentului
asociat lui, pentru fiecare rnd (FOR EACH ROW) afectat de eveniment, sau implicit o singur dat
pentru ntregul eveniment (FOR EACH STATEMENT). Evenimente declanatoare pot fi de exemplu
operaiile INSERT,UPDATE,DELETE etc.
94
Obiecte mari
Un obiect mare este un cmp dintr-un tabel care conine o cantitate mare de date reprezentnd
fie un fiier text mare, fie un fiier grafic. n SQL3 sunt definite urmtoarele tipuri de obiecte mari:
- obiecte binare mari BLOB (Binary Large Object) iruri binare
- obiecte mari de tip caracter CLOB, NCLOB (Character Large Object, National Character
Large Object) iruri de caractere
Aceste tipuri de obiecte difer de vechile obiecte BLOB din sistemele de baze de date tradiionale n
care cmpurile BLOB sunt iruri de octei neinterpretabile, ceea ce necesit ca ntregul obiect BLOB s
fie transferat prin reea de la serverul SGBD la client, fr nici o prelucrare chiar dac astfel de cmpuri
reprezint tipuri de date structurate cum ar fi : imagini, imagini video, documente de prelucrare de
texte word sau pagini Web. Spre deosebire de sistemele tradiionale, n SQL3, asupra obiectelor mari
se pot efectua unele operaii pe serverul SGBD. Astfel operatorii standard de tip ir, care opereaz
asupra irurilor de caractere opereaz i asupra obiectelor mari de tip caracter. Aceti operatori sunt:
- operatorul de concatenare ir1 || ir2 concateneaz cele dou iruri
- funcia SUBSTRING(ir FROM poziie FOR lungime) returneaz subirul extras din ir de la
poziia poziie pe lungimea lungime
- funcia de suprapunere a caracterelor OVERLAY(ir1 PLACING ir2 FROM poziie FOR lungime)
nlocuiete un subir din ir1 ncepnd din poziia poziie pe lungimea lungime cu ir2
- funciile de pliere UPPER(ir) i LOWER(ir) transform toate caracterele litere din ir n mari
respectiv mici.
- funcia de aranjare TRIM(LEADING | TRAILING | BOTH ir1 FROM ir2) returneaz ir2 cu
ir1 premergtor i/sau posterior eliminat. Dac nu este specificat clauza FROM, atunci toate
spaiile premergtoare i posterioare sunt eliminate din ir2
- funcia CHAR_LENGTH(ir) returneaz lungimea irului ir
- funcia POSITION(ir1 IN ir2) returneaz poziia de nceput a irului ir1 n cadrul irului
ir2
Obiectele binare mari BLOB sunt iruri de octei asupra crora pot fi efectuate operaii cu
funcionaliti similare celora definite pentru obiectele CLOB.
IV.5. Extensii ale limbajului SQL cu faciliti de procesare analitic a datelor.
Sistemele realizate pentru automatizarea proceselor din domeniul afacerilor prelucreaz datele
operaionale aferente tratrii operaiilor de zi cu zi din cadrul organizaiei. Aceste sisteme orientate spre
prelucrarea tranzaciilor, cunoscute sub denumirea de sisteme OLTP (On-Line Transaction Processing)
genereaz date operaionale care sunt orientate spre obiect. S-au acumulat astfel n cursul anilor
cantiti mari de date stocate n cadrul sistemelor operaionale funcionale la nivel de organizaie. n
ultimii ani, atenia specialitilor este ndreptat asupra modalitilor de utilizare a datelor operaionale,
stocate n baze de date i arhive, pentru a susine procesul decizional n vederea ctigrii unor avantaje
competitive. Se pune deci problema transformrii arhivelor de date n surs de cunotine care s
prezinte utilizatorului o vedere unitar asupra datelor organizaiei.
Magazia sau depozitul de date cunoscute i sub denumirea de data warehouse, care se
alimenteaz cu date de la multiple surse de date operaionale, reprezint soluia pentru realizarea unui
sistem capabil s susin procesul decizional al organizaiei, folosind tehnici speciale denumite OLAP
(OnLine Analytical Processing). Pentru a rspunde necesitilor de interogare n cadrul instrumentelor
OLAP, limbajul SQL a fost extins cu o serie de funcii specifice pentru prelucrarea i analiza datelor.
Astfel a fost adus amendamentul OLAP la standardul SQL, noile funcii disponibile pentru susinerea
tehnologiei OLAP oferind noi posibiliti de sintez a datelor i n acelai timp mbuntind n mod
substanial instrumentele oferite de limbajul SQL.
Principalele funcii oferite de noua tehnologie sunt ROLLUP i CUBE.
Funcia ROLLUP adaug la setul rezultat n urma executrii unei operaiuni Select standard
grade de totalizare pentru fiecare nivel de grupare stabilit prin intermediul instruciunii Group by.
95
Gradele de totalizare sunt prezentate ncepnd cu nivelul cel mai de jos al ierarhiei i continund apoi
cu nivelurile superioare ale acesteia. Pentru realizarea unei analize multidimensionale n adevratul
sens al cuvantului, prin intermediul creia s rezulte toate posibilitile de combinaie ntre diferite
dimensiuni este necesar s se utilizeze instruciunea CUBE.
Modelul conceptual al datelor supuse analizelor prin intermediul tehnologiei OLAP are
reprezentarea unui "cub" de informaie, care prezint informaiile incluse n bazele de date relaionale
prin dou elemente eseniale i anume:
- Dimensiuni - reprezint categoriile descriptive dup care se realizeaz totalizarea i gruparea
datelor;
- Valori - reprezint datele asupra crora se realizeaz operaiunile de nsumare, medie, minim,
maxim sau respectiv orice alt operaiune statistic sau matematic permis de sistemul de gestiune a
bazelor de date.
Se mai definete i termenul de ierarhie, care reprezint nivelurile de detaliere pentru o dimensiune de
date.
Exemplul cel mai sugestiv de analiz multidimensional l constituie o baz de date a
vnzrilor. Astfel, n cadrul unei asemenea baze de date organizarea informaiilor pentru realizarea
interogrilor prin intermediul OLAP presupune existena celor dou elemente: dimensiunile reprezentate n funcie de necesitile de analiz pe structura geografic (regiune, jude, ora, client) sau
pe structura produselor vndute (model, caracteristici model, data vnzrii); valorile fiind reprezentate
de vnzrile cantitative sau valorice (cifra de afaceri) asupra crora se vor aplica funciile statisticomatematice de consolidare a datelor (sum, average, min, max, etc.).
96
ADENDA
Fiierul este o organizare a datelor preluat din sistemul manual i adaptat la
cerinele impuse de utilizarea sistemelor de calcul.
Baza de date o colecie partajat de date, care conine datele propriu-zise, relaiile
logice dintre acestea, precum i descrierea datelor (structura datelor).
Sistemul de Gestiune a Bazelor de Date (SGBD sau DBMS Data Base Management
System) este un sistem de programe care permite definirea, crearea i ntreinerea bazei de
date, precum i accesul controlat la baza de date.
Administratorul bazei de date (DBA Data Base Administrator) - este o persoan
sau un grup de persoane care rspunde de ansamblul activitilor privind baza de date.
Independena logic de date imunitatea schemelor externe (vederilor utilizatorilor)
fa de modificri efectuate n schema conceptual. Adugarea sau eliminarea de noi entiti,
atribute sau relaii trebuie s fie posibil fr a afecta schemele externe existente.
Independena fizic de date imunitatea schemei conceptuale fa de modificrile
efectuate n schema intern. Modificri efectuate n schema intern cum ar fi: utilizarea unor
organizri de fiiere diferite, a unor dispozitive diferite de stocare, modificarea de indeci sau
de algoritmi hash trebuie s fie posibil fr a fi necesar schimbarea schemei conceptuale sau
a schemelor externe.
Model de date este un instrument teoretic care permite identificarea semnificaiei sau
coninutului de informaie pentru o colecie de date, vzut n ansamblul ei, prin contrast cu
valorile individuale ale datelor.
Entitate este un coninut de sine stttor, o realitate obiectiv care exist prin ea nsi.
Relaie pe mulimile D1, D2, ., Dn este o mulime de tuple ordonate, o submulime a
produsului cartezian D1xD2x.xDn.
Cheie a unei relaii R este un subset minimal K de atribute ale relaiei care identific
unic n-tuplele relaiei.
Obiect este o entitate unic identificabil, care conine att atributele care descriu starea
unui obiect din lumea real, ct i aciunile asociate acestuia.
Clas de obiecte este o mulime de obiecte descris de aceleai proprieti
(caracteristici, atribute).
ACCESS produs program pentru gestiunea bazelor de date relaionale de complexitate
medie
SQL limbaj universal pentru bazele de date relaionale.
Tabele stocheaz datele bazei de date. Fiecare coloan a tabelei este numit cmp i
fiecare rnd al tabelei este numit nregistrare.
Interogri (Queries) realizeaz extragerea unor date din una sau mai multe tabele
conform unor criterii precizate de utilizator n vederea vizualizrii i actualizrii datelor din
baza de date sau pentru a crea alte tabele n vederea pstrrii unui instantaneu al informaiilor.
Formulare un formular este o fereastr pentru introducerea sau afiarea i editarea
datelor. Un formular poate conine subformulare pentru a afia date asociate unor date din
formular i butoane sau alte obiecte grafice pentru realizarea anumitor aciuni.
Rapoarte sunt utilizate pentru operaii de ieire n vederea obinerii unor situaii
rezultate din prelucrarea unor date din baza de date.
Vedere este o relaie virtual, definit plecnd de la alte relaii din baza de date i care
nu conine date i deci nu ocup spaiu fizic pe disc.
97
Bibliografie:
1. [COBS01]. Thomas Connolly, Carolyn Begg, Anne Strachan Database Systems A
Practical Approach to Design, Implementation and Management Second
Edition (trad. Ed. Teora: Baze de date Proiectare . Implementare . Gestionare,
Buc. 2001)
2. [CVA00] Conf.univ.dr. Virgil Chichernea, Sistemul ACCESS, Ed.SYLVI, vol.I,
Buc.2000
3. [CVF00]. Conf.univ.dr. Virgil Chichernea, lector univ.dr. Cezar Botezatu, Sistemul
FoxPro,Ed.SYLVI, vol.II, Buc.2000
4. [DATE04]. C. J. Date, An Introduction to Database Systems, 8th Edition, published by
Pearson Education, Inc. Adison Wesley Higher Education, 2004.
5. [DORO98]. Robert Dollinger-Baze de date i gestiunea tranzaciilor,ClujNapoca,1998
6. [FLAM02]. Sistemele bazate pe cunotine, Adina Magda Florea
www.agora.ro/open/open5/ia.html
7. [FPV98]. FoxPro 2.6 pentru Windows. Ghidul programatorului, Traducere Ed. Teora, 1998
8. [FUS02]. Doina Fusaru, Arhitectura bazelor de date Mediul SQL, Univ.Spiru Haret,
Ed.Fundatiei Romnia de mine, Buc.2002
9. [HARK00] Utilizare Microsoft Access 2000 / Susan Sales Harkins, Ken Hansen i Tom
Gerhart ; trad. de Marian Daniel Merezeanu i Aurelia Nicoleta Merezeanu. Bucureti : Teora, cop.2000. - 527 p.
10. [JOJO97]. Jones John Data Bases in theory and practice Ed. Thompson Computer
Press, UK 1997
11. [MOLH03] lector univ. Nicolae Morariu, lector univ. Valeriu Lupu, ing.ec. Ovidiu
Hurjui, Baze de date, ISBN 973-8293-83-9, Editura Universitii tefan cel
Mare Suceava,117 p, Suceava, 2003.
12. [MONI05] Nicolae Morariu, Baze de date - ndrumar de laborator, ISBN 973-666159-8, Editura Universitii Suceava, 85 p, Suceava, 2005.
13. [ORA92]. Introduction to ORACLE SQL, SQL* Plus and PL/SQL Course Notes,
Glenn Maslen, Published by Oracle Corporation UK Ltd. 1992
14. [PASC94]. Totul despre SQL Interogarea bazelor de date, Corina Pascu, Adrian
Pascu, Ed. Tehnic Buc. 1994
15. [SAM96]. Mircea Srbu, Analiza multidimensional
http:www.byte.ro/byte96-03/datawar4.html
16. [SEKH94]. Khoshafian Setrag Object Oriented Databasses, pub. John Whiley
1994, UK
17. [TAMB96] Access - pentru programatori / Leon Tmbulea. - Cluj-Napoca : Promedia
Plus, cop.1996. - 297 p.
18. [UDRI98] Aplicaii de gestiune : Access i Visual Basic / Mioara Udric. - Bucureti :
Naional, 1998. - 197 p.
19. [VFP00]. Microsoft Visual FoxPro 6.0 Ghidul programatorului Ed.Teora 2000
98