Sunteți pe pagina 1din 343

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

CUPRINS

 

CAPITOLUL 1

SISTEME DE GESTIUNE A BAZELOR DE DATE

1-5

1.1 Arhitectura sistemelor de gestiune a bazelor de date

1-5

1.2 Obiectivele şi funcYiile unui sistem de gestiune a bazelor de date

1-6

1.3 EvoluYia şi clasificarea sistemelor de gestiune a bazelor de date

1-8

1.4 Conceptul de baz< de date relaYional<

1-11

1.5 Terminologie specific< bazelor de date relaYionale

1-14

1.6 Sisteme de gestiune a bazelor de date relaYionale în Oracle

1-16

1.7 Sisteme de gestiune a bazelor de date relaYionale în FoxPro

1-18

CAPITOLUL 2

CONCEPTE ŞI ELEMENTE DE BAZA ÎN

2-22

2.1 Descrierea mediului integrat

2-25

2.2 Tipuri de date în FoxPro, operatori, funcYii

2-26

2.3 FuncYii pentru conversii între tipuri de date

2-34

2.4

Zone de lucru

2-35

2.5 Construirea bazelor de date relaYionale. Componente

2-36

2.6 Comenzi pentru vizualizarea şi modificarea datelor din tabele

2-40

2.7

ExerciYii

2-44

CAPITOLUL 3

INDEXAREA ŞI RELAXIONAREA TABELELOR,

INTEGRITATEA

 

3-46

3.1 Indexarea tabelelor

3-46

3.2 RelaYionarea tabelelor

3-50

3.3 Integritatea referenYial<

3-53

3.4 FuncYii. Variabile de memorie. MacrosubstituYia

3-54

3.5 Crearea şi modificarea programelor

3-57

3.6 Programare structurat<. Proceduri

3-58

3.7 Comenzi de intrare/ieşire

3-60

3.8 Controlul fluxului

 

3-65

3.9 Comenzi SQL

3-67

3.10 Depanarea programelor

3-69

3.11 Instrumente WIZARD

3-71

3.12 ExerciYii

 

3-74

CAPITOLUL 4

OBIECTE ÎN VISUAL FOX

PROGRAMAREA ORIENTATA PE OBIECT-CLASE ŞI

PRO 4-78

4.1 Crearea claselor

4-81

4.2 Crearea formularelor

4-85

4.3 Utilizarea controalelor predefinite

4-87

4.4 Generatorul de rapoarte

4-99

4.5 Constructorul de meniuri

4-105

4.6 Constructorul de proiecte

4-108

4.7 ExerciYii:

4-110

 

1-1

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

CAPITOLUL 5

LIMBAJUL SQL IMPLEMENTAT ÎN ORACLE

5-111

5.1 SoluYia complet< Oracle

5-111

5.2 Comenzi SQL*Plus pentru fişiere

5-114

5.3 InstrucYiuni SQL

5-115

5.4 Sintaxa de baz< a instrucYiunilor SQL

5-116

5.5 Crearea şi gestionarea tabelelor

5-118

5.6 Comanda CREATE TABLE

5-120

5.7 Tabele din baza de date Oracle

5-121

5.8 Interogarea dicYionarului de date

5-122

5.9 Tipuri de date

5-123

5.10 Comanda ALTER TABLE

5-127

5.11 Ştergerea unei tabele

5-131

5.12 Modificarea numelui unui obiect

5-132

5.13 Trunchierea unei tabele

5-132

5.14 Includerea constrângerilor

5-133

5.15 Constrângerea NOT NULL

5-136

5.16 Constrângerea UNIQUE KEY

5-137

5.17 Constrângerea PRIMARY KEY

5-139

5.18 Constrângerea FOREIGN KEY

5-139

5.19 Constrângerea CHECK

5-141

5.20 Ad<ugarea unei constrângeri

5-142

5.21 Ştergerea unei constrângeri

5-143

5.22 Dezactivarea constrângerilor

5-143

5.23 Activarea constrângerilor

5-144

5.24 ExerciYii

5-147

CAPITOLUL 6

EXPRESII ARITMETICE. OPERATORI.

RESTRICXIONAREA ŞI SORTAREA

DATELOR

6-149

6.1 Expresii aritmetice

6-149

6.2 Definirea alias-urilor pentru coloane

6-153

6.3 Operatorul de concatenare

6-154

6.4 Afişarea structurii unei tabele

6-157

6.5 RestricYionarea şi sortarea datelor

6-158

6.6 Clauza WHERE

6-159

6.7 Operatori de comparaYie

6-161

6.8 Operatori logici

6-165

6.9 Clauza ORDER BY

6-169

6.10 ExerciYii

6-172

CAPITOLUL 7

FUNCXII DE UN SINGUR RÂND

7-174

7.1 FuncYii de un singur rând

7-175

7.2 FuncYii pentru caractere

7-177

7.3 FuncYii pentru valori numerice

7-181

7.4 Utilizarea datelor calendaristice

7-183

1-2

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

7.5 FuncYii pentru date calendaristice

7-184

7.6 FuncYii pentru conversia tipului de date

7-187

7.7 FuncYii diverse

7-196

7.8 Imbricarea funcYiilor

7-203

7.9

ExerciYii

7-204

CAPITOLUL 8

AFIŞAREA DATELOR DIN TABELE MULTIPLE

8-205

8.1 Definirea JOIN-urilor

8-206

8.2 Produsul Cartezian

8-206

8.3 Echi-join

 

8-208

8.4 Non-echi-join

8-212

8.5 Outer-join

8-214

8.6 Self – Join

8-216

8.7 Definirea join-urilor folosind sintaxa SQL 1999

8-218

8.8

ExerciYii

8-226

CAPITOLUL 9

FOLOSIREA FUNCXIILOR DE GRUP

9-231

9.1 Ce sunt funcYiile de GRUP ?

9-231

9.2 Folosirea funcYiilor AVG, SUM, MIN, MAX

9-232

9.3 Folosirea funcYiei COUNT

9-233

9.4 FuncYiile de grup şi valorile Null

9-234

9.5 Crearea grupurilor de date

9-235

9.6 Gruparea datelor dup< mai multe coloane

9-238

9.7 Interog<ri ilegale în folosirea funcYiilor de grup

9-240

9.8 Excluderea rezultatelor obYinute folosind clauza Group

9-242

9.9 Imbricarea funcYiilor de grup

9-244

9.10 GROUP BY cu operatorii ROLLUP şi CUBE

9-244

9.11 Operatorul ROLLUP

9-245

9.12 Operatorul CUBE

9-247

9.13 FuncYia GROUPING

9-249

9.14 GROUPING SETS

9-250

9.15 Composite Columns

9-254

9.16 Concatenated Groupings

9-257

9.17

ExerciYii

9-259

CAPITOLUL 10

SUBINTEROGARI

10-265

10.1 Folosirea unei subinterog<ri pentru a rezolva o problema

10-265

10.2 Tipuri de subinterog<ri

10-267

10.3 Subinterogari single-row

10-268

10.4 Utilizarea funcYiilor de grup într-o subinterogare

10-269

10.5 Erori ce pot apare la folosirea subinterog<rilor

10-270

10.6 Subinterogari multiple-row

10-272

10.7 Utilizarea operatorului ANY în subinterogarile multiple-row

10-273

10.8 Utilizarea operatorului ALL în subinterog<rile multiple-row

10-273

10.9 Returnarea valorilor nule în rezultatul subinterog<rii

10-274

1-3

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

10.10 Subinterogari de coloane multiple

10-275

10.11 Compararea coloanelor (pereche şi nepereche)

10-275

10.12 Folosirea unei subinterog<ri în clauza FROM

10-276

10.13 Expresii scalare returnate de subinterog<ri

10-277

10.14 Subinterog<ri corelate

10-279

10.15 Folosirea operatorului EXISTS

10-282

10.16 Folosirea operatorului NOT EXISTS

10-284

10.17 Clauza WITH

10-284

10.18 Interog<ri ierahice

10-286

10.19 Parcurgerea arborelui – punctul de start

10-288

10.20 ExerciYii

10-295

CAPITOLUL 11

INSTRUCXIUNI PENTRU MANIPULAREA DATELOR

11-

302

11.1

Introducerea datelor-comanda INSERT

11-303

 

11.2

Modificarea datelor - comanda UPDATE

11-308

11.3

Ştergerea datelor - comanda DELETE

11-311

11.4

InstrucYiunea MERGE

11-314

11.5

TranzacYii

11-316

11.6 ConsistenYa la citire

11-321

 

11.7 Correlated UPDATE

11-323

11.8 Correlated DELETE

11-324

11.9

ExerciYii

11-333

CAPITOLUL 12

ANEXA 1

12-337

STRUCTURA TABELELOR FOLOSITE ÎN CARTE ŞI DATELE STANDARD

CONXINUTE DE ACESTEA

BIBLIOGRAFIE 12-343

12-337

1-4

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

Capitolul 1 Sisteme de gestiune a bazelor de date

Sistemele de Gestiune a Bazelor de Date (SGBD) reprezint< componenta software a unui sistem de baze de date care asigur< independenYa, relaYiile logice între date şi o redundanY< minim< a acestora. Ele trebuie s< permit< dezvoltarea rapid< şi la un cost avantajos a programelor de aplicaYii pentru exploatarea datelor dintr-o structur< complex<, precum şi accesul rapid la date şi asigurarea securit<Yii lor. Altfel spus, SGBD-ul este un ansamblu de programe care permite utilizatorilor s< interacYioneze cu o baz< de date, conceput< de regul< pentru volume mari de date, a c<ror gestiune impune nu numai o riguroas< structurare dar şi o accesare şi prelucrare raYional<.

1.1 Arhitectura sistemelor de gestiune a bazelor de date

Datorit< dezvolt<rii tot mai accentuate a IT-ului (Information Technology) în majoritatea domeniilor de activitate şi datorit< extensiei sferei problemelor rezolvate cu ajutorul tehnicii de calcul, a ap<rut ca o necesitate specializarea pachetelor de programe în funcYie de domeniile abordate: matematic<, tehnic<, economie, proiectare, comunicaYie etc. Sistemele de Gestiune a Bazelor de Date sunt sisteme informatice software specializate în stocarea şi prelucrarea unui volum mare de date. Sunt implicate dou< concepte: “baza de date” şi “gestiune”. Prin “baza de date” se înYelege: datele de prelucrat şi modul de organizare a acestora pe suportul fizic de memorare şi prin “gestiune” totalitatea operaYiilor ce se vor aplica asupra datelor. Dintre avantajele organiz<rii informaYiilor în baza de date faY< de fişierele clasice (de tip ASCII, binare, etc.) putem aminti redundanYa minim< a informaYiilor, accesul mai uşor la date şi posibilitatea abord<rii domeniului implementat din punct de vedere sistemic (ca un sistem unitar). PiaYa SGBD-urilor este dominat< înc< de SGBD-urile relaYionale şi distribuite, deşi se observ< o dezvoltare a SGBD-urilor orientate obiect. Lucr<rile practice de baze de date din aceast< carte vor cuprinde prezentarea SGBD-ului FoxPro şi Oracle. Teoria şi practica SGBD-urilor ofer< diferite arhitecturi diferenYiate în funcYie de componentele, limbajele utilizate şi posibilit<Yile de prelucrare a datelor, existând totuşi preocup<ri de standardizare a acestora.

În general, în arhitectura unui SGBD intr< cel puYin 5 clase de module:

Programele de gestiune a bazelor de date. Aceast< clas< de module realizeaz< accesul fizic la date ca urmare a unei comenzi primite printr-un program de aplicaYii sau interactiv de la tastatur<;

Limbajul de definire a datelor (LDD). Este componenta care permite

1-5

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

traducerea (compilarea sau interpretarea, dup< caz) şi descrierea naturii datelor şi a leg<turilor logice dintre ele, fie la nivel global (sub forma schemei conceptuale), fie la nivelul specific fiec<rei aplicaYii (sub forma schemei externe sau sub-schemei). Aceste definiYii se memoreaz< într-un fişier special numit Dicţionarul de date.

Limbajul de manipulare a datelor (LMD). Aceast< component< permite gestionarea şi actualizarea datelor dintr-o baz< (scrierea unor noi date, modificarea valorii unor date, ştergerea unor date perimate sau eronate). Comenzile acestui limbaj depind de SGBD-

ul utilizat (cu limbaj gazd< sau SGBD autonome). În SGBD-urile cu

limbaj gazd< enunYurile trebuie incluse într-un program scris cu un limbaj gazd<: PL/1, ASSEMBLER, C etc. În SGBD-urile autonome se dispune de un limbaj la care se ataşeaz< un limbaj de interogare.

Utilitarele de întreţinere a bazei de date. Un SGBD trebuie s< ofere

o gam< variat< de programe utilitare care s< permit< gestionarea

de c<tre operator a bazei de date. Utilitarele variaz< de la un sistem

la altul şi depind de complexitatea SGBD-ului. Acestea pot efectua

urm<toarele operaYii: crearea versiunii iniYiale a bazei de date şi înc<rcarea acesteia folosindu-se fie o copie creat< anterior, fie date neorganizate; crearea şi actualizarea jurnalelor tranzacYiilor realizate asupra bazelor de date: reorganizarea bazei de date pentru recuperarea spaYiului nefolosit; reorganizarea structurii fizice şi logice dup< fiecare tranzacYie; restructurarea bazei de date dup< un incident logic sau fizic, cu refacerea st<rii anterioare; diverse statistici ce permit cunoaşterea activit<Yii şi utiliz<rii bazei de date; actualizarea schemei şi sub-schemei f<r< rescrierea şi compilarea lor; detectarea “sp<rg<torilor” regulilor de integritate definite, f<r< a fi necesar< intrarea în baza de date; realizarea unei copii permanente a bazei de date în scopuri de securitate.

Componentele de control ale programelor de aplicaţii. Acestea constituie mijloace de prevenire şi corectare a anumitor erori ce pot s< apar< în condiYii de exploatare “multi-utilizator”.

1.2 Obiectivele şi funcţiile unui sistem de gestiune a bazelor de date

Succesul unui SGBD este susYinut prin realizarea urm<toarelor obiective:

asigurarea independenţei datelor. IndependenYa datelor poate fi definit< drept “imunitatea” programelor de aplicaYii la schimbarea structurii de memorare şi /sau a strategiei de acces. IndependenYa

1-6

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

datelor trebuie urm<rit< atât la nivel fizic cât şi la nivel logic. Independenţa fizică asigur< modificarea datelor şi a tehnicilor fizice de memorare, f<r< rescrierea programelor de aplicaYii. Independenţa logică ofer< posibilitatea ad<ug<rii de noi articole sau extinderea structurii globale f<r< a necesita rescrierea programelor;

asigurarea integrităţii datelor prin existenYa unor proceduri de validare sau a unor protocoale de control concurent, precum şi a unor proceduri de refacere a bazei de date dup< incidente;

asigurarea unei redundanţe minime şi controlate a datelor prin definirea unui element de structur<, cu o cantitate cât mai mic< de date, evitându-se în acelaşi timp ambiguitatea;

asigurarea unor facilităţi sporite de utilizare a datelor prin:

folosirea datelor de c<tre mai mulYi utilizatori în diverse aplicaYii, accesul simplu şi multicriterial al utilizatorilor la date, f<r< a fi necesar< cunoaşterea structurii întregii baze de date; existenYa unor limbaje performante de interogare etc.;

asigurarea partajării datelor, adic< asigurarea accesului mai multor utilizatori la aceleaşi date pe baza unor criterii de prioritate şi dezvoltarea unor aplicaYii f<r< a se modifica structura bazei de date;

asigurarea

securităţii

datelor

prin

intermediul

unor

canale

corespunz<toare accesarea datelor.

şi definirea unor restricYii de autorizare la

Plecând de la aceste obiective, rezult< c< orice SGBD trebuie s< îndeplineasc< urm<toarele funcYii: de descriere, de manipulare, de utilizare.

FuncYia de descriere permite definirea structurii bazei cu ajutorul limbajului special de descriere a datelor, stabilind criterii de validare a acestora, metode de acces şi de asigurare a confidenYialit<Yii şi integrit<Yii lor. Toate aceste elemente se reg<sesc în ceea ce se numeşte schema bazei de date. DefiniYiile se stocheaz< într-un ansamblu de tabele, memorate în dicYionarul de date.

1-7

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

FuncYia de manipulare asigur< prin intermediul limbajului special derularea urm<toarelor activit<Yi: înc<rcarea bazei de date, ad<ugarea de noi înregistr<ri, ştergerea unor înregistr<ri, editarea total< sau parYial< a unor înregistr<ri, ordonarea înregistr<rilor, c<utarea logic< sau fizic< a înregistr<rilor etc.

FuncYia de utilizare permite comunicarea între utilizatori şi baza de date prin intermediul unor interfeYe avantajoase utilizatorilor. În felul acesta se creeaz< un mediu favorabil utilizatorului care la ora actual< beneficiaz< de prelucrarea în timp real, de arhitecturile client-server, servicii Internet etc. În cadrul realiz<rii acestei funcYii interacYioneaz< diverşi utilizatori, literatura de specialitate oferind mai multe clasific<ri sau grup<ri. Dintre acestea prezent<m în continuare doar câteva astfel de grup<ri.

Raportul ANSI/SPARC 1975 prezint< trei categorii de utilizatori (roluri umane) ce definesc schemele dintr-o arhitectur< de sistem bazat pe SGBD:

- persoana sau grupul de persoane care defineşte schema conceptuală a bazei de date. Aceast< schem< furnizeaz< o viziune pe termen lung şi este baza pentru declaraYiile de securitate-integritate şi standardizare impuse celorlalte tipuri de utilizatori; - administratorul bazei de date care are responsabilitatea definirii schemei interne a bazei de date şi a întreYinerii acesteia. În acelaşi raport sunt prezentate trei categorii de administratori:

administratorul structurii organizaYionale care asigur< gestionarea global< a aplicaYiilor curente şi identificarea celor viitoare; administratorul aplicaYiilor care are rolul de a dezvolta schemele externe (sub-schemele) pentru aplicaYiile utilizator; administratorul de date care opereaz< la nivelul schemei de date precizând necesarul şi disponibilitatea datelor;

- programatorii de aplicaţii şi utilizatorii finali care comunic< cu SGBD-ul prin intermediul limbajului de manipulare sau a limbajului de interogare.

1.3 Evoluţia şi clasificarea sistemelor de gestiune a bazelor de date

PerfecYionarea SGBD-urilor a avut loc în paralel cu evoluYia echipamentelor de culegere, memorare, transmitere şi prelucrare a datelor, pe de o parte, şi cu evoluYia metodelor şi tehnicilor de organizare a datelor, pe de alt< parte.

Literatura şi practica de specialitate ofer< o mare diversitate de sisteme

1-8

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

de gestiune a bazelor de date, care sintetic pot fi prezentate în trei generaYii.

Prima generaYie este situat< în timp la sfârşitul anilor `60 şi începutul anilor ’70 şi include modelul ierarhic şi modelul reYea de organizare a datelor în baze de date.

Modelul ierarhic are o structur< de tip arborescent, legat< puternic de principiile de descriere a datelor specifice limbajelor din generaYia corespunz<toare. Fiecare nivel de date este constituit din una sau mai multe grupe de date care se pot şi ele descompune la rândul lor.

Modelul reţea încearc< s< înl<ture lipsurile modelului precedent, propunând o structur< de date mai bogat< pe baza leg<turilor posibile şi conducând la construirea unei reYele între acestea.

GeneraYia a doua, situat< în timp la sfârşitul anilor ’80 şi începutul anilor ’90 cuprinde în principal modelele relaYionale. Structura datelor este format< dintr-un ansamblu de relaYii sau tabele f<r< leg<turi fizice între ele. Apropierea dintre date este obYinut< prin utilizarea unei “algebre” între tabele, considerate ca operanzi. Din aceast< generaYie fac parte: IBM DB2, Oracle, Microsoft SQL Server, PARADOX, FoxPro etc.

GeneraYia a treia ap<rut< la începutul anilor ’90. Aceste sisteme se bazeaz< pe principii mult mai complexe decât precedentele şi permit gestionarea unor informaYii foarte variate. Se pot încadra în aceast< generaYie 4 subclase de SGBD: orientate obiect, funcYionale, deductive şi multimedia.

Sistemele orientate obiect permit descrierea elementelor unei baze utilizând conceptele abord<rii obiectuale care Yine seama de aspectele statice şi dinamice ale obiectelor. Aceast< abordare se caracterizeaz<, în principal, pe operaYia de încapsulare, adic< pe reunirea în aceeaşi unitate a caracteristicilor statice şi dinamice ale obiectelor de gestionat. În plus, este posibil< reutilizarea obiectelor deja definite. Aceast< caracteristic< reduce considerabil programarea “defensiv<” datorit< descrierii intrinseci f<cut< obiectelor. Obiectele definite în baz< au capacitatea de a transmite descendenYilor, ansamblul caracteristicilor lor prin “moştenire”.

Sistemele funcţionale au la baz< noYiunile de entitate şi funcYie şi au fost introduse în 1979 de Shipman. Pentru fiecare entitate (obiect) de un anumit tip exist< o colecYie de funcYii care sunt aplicate acelui obiect, definind atributele obiectului şi exprimând asocierile dintre entit<Yi. Modelul funcYional devine operaYional prin intermediul SGBD-urilor funcYionale care ofer< mecanisme şi instrumente de descriere şi manipulare a datelor prin intermediul limbajelor funcYionale.

Sistemele deductive utilizeaz< reguli de inferenY< pentru a exprima situaYii bine sau mai puYin bine definite din mediul unei organizaYii. Ele permit

1-9

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

s< se r<spund< cererilor care comport< exprimarea într-o logic< mai mult sau mai puYin vag<. În general astfel de baze de date sunt cuplate cu sistemele expert sau cu un nivel din baza regulilor scrise în PROLOG, LISP, sau într-un alt limbaj de inteligenY< artificial<.

Sistemele multimedia permit stocarea şi administrarea altor informaYii decât cele clasice precum: imagini, fotografii, muzic<, sunete etc. Sistemele din aceast< categorie, care se comercializeaz< deja, permit organizarea de “birouri f<r< hârtie”, propunând gestiunea diferitelor documente (imprimate) pe discul optic cu proceduri de înregistrare prin scanare precum şi prin proceduri de consultare şi manipulare.

Preocup<rile proiectanYilor de SGBD sunt concentrate spre construirea bazelor de date pe modele obiectuale, deductive şi multimedia, fiind propuse mai multe soluYii de combinare şi extindere a modelelor prezentate: înglobarea în SGBD-urile relaYionale a elementelor ce definesc tehnologia actual<, persistenYa obiectelor prin extinderea actualelor sisteme obiectuale, integrarea tehnologiei semantice şi obiectuale etc.

Clasificarea SGBD-urilor

Abordarea sistemic< a problematicii referitoare la SGBD-uri presupune şi clasificarea acestora, mai cu seam< c< literatura de specialitate prezint< un num<r deosebit de mare de astfel de software-uri. Exist< mai multe clase de SGBD privite din diverse puncte de vedere: modelul de organizare folosit (ierarhice, reYea, relaYionale, orientate obiect etc.), distribuirea resurselor (integrate şi distribuite teritorial), destinaYie (public< şi privat<) şi tehnica de prelucrare (pe loturi, interactiv<, mixt<). Ne oprim, în continuare, doar asupra câtorva astfel de criterii de clasificare.

Dup< sistemul de calcul pe care se implementeaz< SGBD-urile pot fi:

pentru mainframe-uri;

pentru minicalculatoare;

pentru microcalculatoare.

La ora actual< tendinYa este de generalizare şi standardizare a SGBD- urilor conferindu-li-se atributul de “cross platforma” pentru a putea fi rulate pe cât mai multe medii de operare (DOS, WINDOWS, MAC, UNIX, Linux, OS/2 etc.).

În funcYie de limbajul utilizat exist< dou< clase de SGBD-uri:

cu limbaj gazdă: asigur< crearea, actualizarea şi interogarea bazei de date utilizând limbaje de nivel înalt propriu sistemului de calcul pe

1-10

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

care se implementeaz< baza de date. Prezint< avantajul exploat<rii facilit<Yilor limbajului de nivel înalt şi dezavantajul complexit<Yii formul<rii cererilor de prelucrare;

cu limbaj autonom (propriu): folosesc limbaje speciale care sunt independente de limbajul gazd< şi chiar faY< de sistemul de calcul ceea ce asigur< un grad ridicat de portabilitate. Avantajul acestor SGBD-uri concretizat în larga lor utilizare, îl reprezint< simplitatea formul<rii cerinYelor. În funcYie de organizarea şi structurarea datelor gestionate SGBD- urile sunt:

ierarhice şi reţea;

relaţionale;

obiectuale;

obiectual-relaţionale.

Din punct de vedere a modului de localizare a bazelor de date SGBD-urile sunt:

centralizate, care presupun ca datele s< fie concentrate într-un singur loc pe un server, ca surs< unic< de informare şi/sau raportare (VisualFoxPro, Access, etc.);

distribuite, care presupun ca datele s< fie repartizate geografic în mai multe puncte în funcYie de locul lor de producere, cu posibilitatea acces<rii datelor din orice punct definit (Oracle, IBM DB2, Informix).

La ora actual< datorit< prolifer<rii prelucr<rilor în reYea de calculatoare tot mai multe SGBD-uri dispun de o component< de gestiune distribuit< a datelor.

1.4 Conceptul de bază de date relaţională

Dr. E.F. Codd a propus modelul relaYional pentru baze de date în 1970

model ce reprezint< baza

pentru sistemele de gestiune a bazelor de date (DBMS).

Principiile modelului relaYional au fost subliniate pentru prima data de Dr. E.F. Codd în lucrarea numit< “Un model relaYional de date pentru b<nci de date mari”. Cele mai populare modele ale vremii erau cele ierarhice şi de reYea sau chiar fişierele simple de date. Apoi DBMS-urile au devenit foarte populare pentru uşurinYa în utilizare şi flexibilitatea lor.

Codd),

Componentele modelului relaYional sunt:

1-11

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

ColecYie de obiecte şi relaYii care stocheaz< date;

Un set de operatori care acYioneaz< asupra relaYiilor pentru a produce alte relaYii;

Reguli de integritate a datelor pentru consistenY< şi acurateYe.

Definirea unei baze de date relaYionale

O baza de date relaYional< foloseşte relaYii sau tabele bi-dimensionale pentru stocarea informaYiilor. De exemplu, pentru stocarea informaYiilor despre angajaYii unei companii, într-o baz< de date relaYional< veYi g<si informaYia stocat< în: tabela angajaYi, tabela departamente şi tabela salarii.

Modelele de date sunt dezvoltate de proiectanYi pentru a explora idei şi pentru a îmbun<t<Yi înYelegerea proiect<rii bazei de date. Modelele ajut< în comunicarea conceptelor în minYile oamenilor. Ele pot: comunica, pune pe categorii, descrie, specifica, investiga, analiza, imita şi implica. Scopul este de a produce un model care s< se potriveasc< şi s< r<spund< tuturor cerinYelor şi care s< fie înYeles de utilizatorul final, care s< conYin< detalii suficiente pentru ca un programator s< construiasc< sistemul de baze de date şi/sau s< dezvolte o aplicaYie care s< lucreze cu baze de date.

o aplica Y ie care s < lucreze cu baze de date. MMooddeelluull EEnnttiittaattee--rreellaattiiee aa
MMooddeelluull EEnnttiittaattee--rreellaattiiee aa cceeeeaa ccee eessttee ddaatt ddee ccaattrree cclliieenntt
MMooddeelluull
EEnnttiittaattee--rreellaattiiee
aa cceeeeaa ccee eessttee ddaatt ddee
ccaattrree cclliieenntt
((mmooddeelluull llooggiicc))
MMooddeelluull ttaabbeellaarr
((mmooddeelluull ffiizziicc))
SSeerrvveerr

MMooddeelluull ssiisstteemmuulluuii aassaa ccuumm eessttee vvaazzuutt ddee ccaattrree cclliieenntt

TTaabbeellee ppee ddiisscc

Modelul Entitate RelaYie – permite crearea unei diagrame entitate relaYie pe baza specificaYiilor informaYionale ale problemei.

1-12

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

ANGAJAT

#*

număr

*

nume

o

meseria

 

DEPARTAMENT

#*

număr

asignat la

*

nume

 

o

localitate

ă r asignat la * nume   o localitate compus din Scenariu: “ … se asigneaz

compus din

Scenariu:

“ … se asigneaz< unul sau mai mulYi angajaYi la un departament …”

“… câteva departamente nu au nici un angajat …”

Într-un sistem real, data este divizat< în categorii discrete sau entit<Yi. Un model entitate relaYie (ER) este o ilustrare a entit<Yilor dintr-o problem< şi a relaYiilor dintre ele. Un model ER este derivat din specificaYiile informaYionale ale problemei şi este construit în faza de analiza a sistemului. Modelul ER separ< informaYiile cerute de problema de activit<Yi. Chiar dac< activit<Yile problemei se schimb<, tipul informaYiilor trebuie s< r<mân< constant. De aceea structurile de date tind s< r<mân< constante.

Avantajele modelului ER:

Documenteaz< necesarul de informaYii pentru organizaYie într-o form< clar< şi precis<;

Prezint< o imagine clar< a scopului cerinYelor informaYionale şi uşor de înYeles pentru proiectarea bazei de date;

Ofer< un mediu efectiv de integrare a aplicaYiilor multiple.

Componente cheie:

Entitatea: Un obiect sau un grup de obiecte de acelaşi tip (cu aceleaşi propriet<Yi), cu o anumit< semnificaYie, despre care este necesar a fi cunoscute informaYii. Exemplu: departamente, angajaYi, comenzi.

Atribut: Un aspect care descrie sau calific< o entitate. Exemplu: pentru entitatea Angajat atributele sunt: marca, meseria, data de angajare, departamentul. Fiecare atribut poate fi obligatoriu sau opYional.

RelaYie: Un nume de asociere dintre entit<Yi care arat< opYionalitatea sau gradul asocierii. Exemplu: angajaYi şi departamente, comenzi şi articole.

Identificator unic (UID – Unique IDentifier) este orice combinaYie de atribute sau/şi relaYii care serveşte la distingerea apariYiilor unei entit<Yi. Fiecare apariYie a entit<Yii trebuie sa fie identificat< unic.

1-13

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

1.5 Terminologie specifică bazelor de date relaţionale

O baza de date relaţională conYine una sau mai multe tabele. O tabel<

reprezint< structura de baz< a unui SGBDR (Sistem de Gestiune a Bazelor de Date RelaYionale). O tabel< conYine toate datele necesare despre un aspect al

lumii reale. Se consider< exemplul tabelei AngajaYi.

NoYiuni:

Un singur rând sau o tuplă reprezint< informaYia necesar< pentru un angajat specificat. Fiecare rând din tabel< trebuie identificat de o cheie primară, care nu permite rânduri duplicate. Ordinea rândurilor nu este semnificativ<.

O coloană sau un atribut conYine marca angajatului care este şi cheie primară. Marca (cheia primar<) identific< în mod unic un angajat în tabela EMP. O cheie primar< trebuie s< conYin< o valoare. Alte tipuri de coloane reprezint< alte informaYii (de ex: funcYia). Ordinea coloanelor nu este important<. Coloana care conYine num<rul de departament este numit< şi cheie externă. Cheia extern< conYine coloane care definesc modul în care sunt în relaYie tabele diferite. O cheie externă refer< o cheie primar< sau o cheie unic< din alt tabel.

O coloan< reprezint< un domeniu de date dintr-o tabel<. În exemplul dat „meseria” este coloana ce conYine toate meseriile pentru toYi angajaYii.

Un câmp poate fi g<sit la intersecYia dintre un rând şi o coloană. Poate conYine o singur< valoare.

Câmpurile pot s< nu conYin< valori. Acestea se numesc valori null.

Referirea mai multor tabele - Fiecare tabel< conYine date care descriu exact o entitate. De exemplu tabela AngajaYi conYine informaYii despre angajaYi. Deoarece datele despre entit<Yi diferite sunt stocate în tabele diferite, este necesar< combinarea a dou< sau mai multe tabele pentru a afla r<spunsul la o interogare. De exemplu dac< vreYi s< aflaYi localitatea în care este situat departamentul în care lucreaz< un anumit angajat sunt necesare tabelele AngajaYi şi Departamente. Un SGBDR permite combinarea tabelelor diferite folosind chei externe. O cheie externă este o coloan< sau o combinaYie de coloane care refer< o cheie primar< din acelaşi tabel sau din unul diferit.

Propriet<Yile bazelor de date relaYionale

O baza de date relaYional< :

Poate

specifice;

fi

accesat<

şi modificat<

prin

execuYia

instrucYiunilor

1-14

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

ConYine o colecYie de tabele f<r< pointeri fizici;

Foloseşte un set de operatori.

Într-o baz< de date relaYional< nu trebuie specificat< calea de acces la tabele şi nu trebuie cunoscut modul de aranjare fizic.

Obiecte - Un obiect este considerat ca o reprezentare a unui lucru din lumea real<. Câteva definiYii:

“Un obiect este un pachet software care conYine o colecYie de

proceduri (metode) înrudite şi date (variabile)” - David Taylor, “Object-Oriented Technology: A Manager’s Guide” Addison-Wesley

1981

“Un obiect este un concept, abstracYie sau lucru cu margini şi înYelesuri fragile pentru problema de rezolvat” - James Rumbaugh, “Object-Oriented Modeling and Design” Prentice-Hall 1991

Modele obiect:

obiectele modeleaz< o problem< spre rezolvare;

modelul este definit în termeni de interacYiune între obiecte;

modelele obiect se aseam<n< cu lumea real<;

când se lucreaz< cu modele ne ax<m mai mult în termenii aplicaYiei şi mai puYin la arhitectura sistemului de operare şi cerinYele mediului de dezvoltare.

Caracteristicile sistemelor obiectuale:

Prezint< informaYia în forma obiect;

Clasific< obiectele în tipuri de obiecte;

Moşteneşte atribute şi cod;

Ascunde date, cod şi atribute;

InteracYioneaz< cu alte obiecte;

Recunoaşte diferite obiecte f<r< analiz<;

Interpreteaz< aceeaşi comand< în moduri diferite;

Alte caracteristici:

Reprezint< informaYia ca lucruri conYinute intrinsec;

Clasific< obiectele în tipuri de obiecte organizate în ierarhii arborescente, unde un tip de obiect poate fi alt fel decât alt tip de obiect (object type metadata);

Obiectele

moşteni tr<s<turile tipului sau de obiecte

pot

(inheritance);

Pot ascunde date şi procese referitoare la obiect în cadrul obiectului (encapsulation). Aceasta permite schimb<ri ale unei componente specifice f<r< afectarea altor componente;

InterfaYa cu alte obiecte (interface sau messaging);

1-15

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

Recunoaşterea diferitelor tipuri de lucruri şi comportamentul lor f<r< analiza lor;

Folosirea aceleaşi cereri pentru a invoca diferite implement<ri ale aceleaşi acYiuni pentru dou< obiecte diferite (polymorphism);

1.6 Sisteme de gestiune a bazelor de date relaţionale în Oracle

Oracle furnizeaz< un SGBDR flexibil - Oracle Database. Tr<s<turile acestui SGBDR permit stocarea şi gestiunea datelor cu toate avantajele structurilor relaYionale plus PL/SQL, un motor care permite stocarea şi executarea unit<Yilor de program. Serverul permite utilizatorilor opYiunea de extragere de date bazat< pe tehnici de optimizare. Sunt incluse tr<s<turi de control a modului de accesare şi folosire a datelor. Alte caracteristici sunt consistenYa şi protecYia prin mecanisme de blocare.

consisten Y a ş i protec Y ia prin mecanisme de blocare. Oracle Corporation este la

Oracle Corporation este la ora actual< cea mai mare companie de software din lume care are produsele axate pe baze de date. Este o supremaYie câştigat< de aproximativ 20 de ani în faYa principalului concurent, IBM – firma care a dezvoltat primul sistem de management al bazelor de date, numit System R, în anii 1970. Lansarea produsului Oracle a reprezentat startul în domeniul bazelor de date relaYionale comerciale construite pe principiile fundamentate matematic de c<tre E.F.Codd. Software-ul care constituie baza de integrare a tuturor celorlalte produse ale companiei este Oracle Server – serverul de baze de date ajuns acum la versiunea 10 (Oracle Database 10g Release 2 (10.2.0.1.0)), disponibil pe mai multe sisteme de operare şi platforme hardware: Microsoft Windows pe 32 de biYi şi 64 de biYi, Linux x86 pe 32 de biYi

1-16

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

şi 64 de biYi, Linux Itanium, HP-UX PA-RISC (64 biYi), Solaris SPARC (64 biYi), AIX 5L pe 64 biYi, etc. Succesul firmei Oracle s-a bazat în primul rând pe serverul de baze de date, pe baza c<ruia s-au dezvoltat de-a lungul timpului suita de dezvoltare Oracle Developer Suite (care cuprinde Oracle Forms, Reports, Designer, JDeveloper) pentru proiectarea de aplicaYii, Warehouse Builder şi Discoverer pentru domeniul numit Business Intelligence, serverul de aplicaYii bazat pe J2EE – Oracle Application Server şi suita back-office Oracle Collaboration Suite. În principiu toate aceste aplicaYii satelit Yin pasul, ca denumire de versiune, cu versiunea bazei de date. Serverul de baze de date Oracle a c<p<tat de-a lungul timpului îmbun<t<Yiri care au menYinut acest produs pe primul loc. Ca istoric, se poate considera versiunea 2 ca fiind prima versiune complet< bazat< pe caracteristicile relaYionale introduse de limbajul SQL. Versiunea 3 se caracterizeaz< prin rescrierea în întregime a versiunii anterioare în limbajul C pentru asigurarea portabilit<Yii pe mai multe platforme. O alt< caracteristic< a versiunii 3 o reprezint< respectarea principiului atomicit<Yii frazelor SQL în cadrul tranzacYiilor. Versiunea 4 aduce ca noutate principiul consistenYei datelor la citire, adic< datele supuse prelucr<rilor sunt intangibile celorlalte tranzacYii. Versiunea 5 aduce îmbun<t<Yiri în partea de client / server, aducând o r<spândire a produsului bazat< pe folosirea bazei de date prin accesarea de pe terminale sau staYii PC mai slabe, investiYia major< fiind necesar< doar pentru server.

Versiunea 6 îmbun<t<Yeşte mecanismele de blocare care, începând cu aceast< versiune, se face la nivel de linie permiYând ca o tranzacYie s< nu blocheze o tabel< întreag<, ci numai liniile din tabel< care sunt supuse prelucr<rii. În versiunea 7 se introduc procedurile stocate şi declanşatoarele (triggeri în englez<). Odat< cu versiunea 7 a ap<rut şi varianta pentru calculatoare personale: ORACLE Personal Edition 7.2, care permite dezvoltarea aplicaYiilor f<r< a fi necesar< conectarea la un server în reYea, ceea ce a crescut mult popularitatea sistemului. Versiunea 8 a introdus partea obiectual< derivat< din principiile program<rii orientate pe obiect ca o necesitate a creşterii complexit<Yii structurii datelor. Practic, începând cu aceast< versiune, Oracle a devenit o baz< de date obiectual-relaYional<, fiind permis< stocarea în baza de date atât a structurilor tabelare cât şi a obiectelor folosind metoda map<rii. Versiunea Oracle 8i este o continuare a versiunii 8, la care se adaug< un mediu RunTime Java direct în motorul bazei de date pentru structurarea logicii procedurilor stocate şi în limbajul Java, nu numai în PL/SQL (limbajul procedural Oracle introdus din versiunea 7). i-ul de la 8i vine de la aplicaYiile bazate pe noile tehnologii ale internetului. Tot în acest context s-a introdus suportul pentru limbajul SQLJ care

1-17

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

permite ca instrucYiunile SQL de acces la date sa fie incluse în proceduri sau metode scrise în Java rezidente pe server sau pe staYiile client. Versiunea 9i a îmbun<t<Yit mecanismele de securitate a bazelor de date prin introducerea conceptului de baz< de date virtual<, s-au ad<ugat facilit<Yi de stocare şi accesare a documentelor XML (eXtensible Markup Language), îmbun<t<Yind astfel limbajul SQL, îmbun<t<Yirea scalabilit<Yii prin introducerea arhitecturii RAC (Real Application Cluster). Aceast< arhitectur< permite rularea unui singur server de baze de date pe mai multe calculatoare independente (noduri) care formeaz< un complex, permiYând recuperarea transparent< a c<derilor oric<rui nod din reYea. Versiunea 10g aduce ca noutate utilizarea tehnologiei grid ( g-ul vine de la grid). Astfel s-a introdus stocarea dup< principiul grid prin tehnologia ASM (Automatic Storage Management) care elimin< necesitatea unui sistem de fişiere. Datele pot fi stocate pe calculatoare diferite, gestionate de sisteme de operare diferite, având în comun faptul c< ele sunt legate între ele în reYea şi au puse la dispoziYie capacitatea de stocare şi procesare în ASM. Dac< un disc este ad<ugat sau scos, ASM redistribuie datele în mod automat. Practic, conceptul de grid este superior conceptului de cluster, grid-ul bazându-se practic pe cluster. Aşa cum s-a procedat cu resursele de stocare la fel se utilizeaz< în comun şi resursele de procesare, aplicându-se principiile echilibr<rii înc<rc<rii (load balancing în englez<).

1.7 Sisteme de gestiune a bazelor de date relaţionale în FoxPro.

Ap<rând ca urmaş a lui DBASE III şi dotat astfel încât sa satisfac< cerinYele unui SGBD modern, cu mediu de dezvoltare integrat, FoxPro are una din cele mai atractive interfeYe utilizator şi un compilator foarte puternic.

Versiunea 1.02 ( anul 1989)

sintaxa se bazeaz< pe Foxbase (şi deci pe dBase III), dar a fost extins< cu multe instrucYiuni şi funcYii utile;

mediu de programare confortabil, cu editoare integrate, operare cu mouse-ul, prelucrarea simultan< a mai multor fişiere;

depanator (debugger) şi program de testare (trace) integrate în mediul de dezvoltare, precum şi generatoare de machete, de programe şi program de documentare automat< a surselor;

compilatorul nu genereaz< cod executabil complet (.EXE) ci se obYine un format intermediar care necesit< existenta mediului FoxPro sau a versiunii RunTime (vitez< sporit<).

1-18

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

Versiunea 2.0 (anul 1991)

compatibilitate sporit< cu DBase IV (modul SQL incorporat, indecşi compuşi);

instrumente specifice de proiectare (generatoare de meniuri, rapoarte, aplicaYii);

utilizarea tehnologiei de optimizare Rushmore;

control superior al programatorului asupra evenimentelor din timpul rul<rii;

help senzitiv la context;

ruleaz< pe reYele de calculatoare, în regim multiutilizator;

este furnizat< în doua variante: standard (pentru maşini cu procesor 8088 şi 80286) şi extins< (pentru maşini cu procesor 80386 şi mai puternice).

Versiunea 2.5 pentru DOS (anul 1993, după preluarea de către Micrososft)

versiune îmbun<t<Yit< şi mult mai rapid<;

optimizare Rushmore îmbun<t<Yit<;

import / export date în formate Excel, Paradox;

este furnizat< de asemenea în dou< variante.

Versiunea 2.5 pentru WINDOWS (anul 1993)

facilit<Yi specifice mediului Windows: Dynamic Data Exchange (DDE), Object Linking and Embedding (OLE);

îmbun<t<Yirea interfeYei cu utilizatorul;

facilit<Yi multitasking;

controlul centralizat al perifericelor;

sistem Help performant.

Versiunea 2.6 pentru DOS (anul 1994)

mecanisme de convertire automat< a elementelor DBase în elemente FoxProW;

module de asistenY< a utilizatorului (Table/Raport/Screen/Query/Label Wizard);

prezenYa unui Catalog Manager;

varianta profesional< permite conectivitate client-server.

Visual FoxPro 3.0 (anul 1995)

utilizarea principiilor program<rii orientate obiect (POO);

mediu orientat pe evenimente (programarea orientat< eveniment);

1-19

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

apropierea de modelul relaYional al bazelor de date (introducerea dicYionarului de date);

extensii orientate obiect ale limbajului de programare;

extinderea instrumentelor de proiectare şi a num<rului de asistenYi;

dezvoltarea rapid< a aplicaYiilor prin gestionarul de aplicaYii Project Manager;

apropierea FoxPro-Acces.

Visual FoxPro 5.0 (anul 1997)

simplificarea accesului la fişierele de date sub alt format (via Open DataBase Connectivity - ODBC);

îmbun<t<Yirea mediului client-server;

facilit<Yi web.

Visual FoxPro 6.0 (anul 2000)

îmbun<t<Yirea Class Browser-ului pentru eficienYa program<rii;

noi facilit<Yi în programarea orientat<-obiect şi web;

ad<ugarea de noi metode şi propriet<Yi.

Visual FoxPro 7.0 (anul 2002)

editorul Visual FoxPro este îmbun<t<Yit cu tehnologia IntelliSense (autocompletare pe m<sur< ce se scrie cod);

servicii web – ca şi obiecte (clase);

suport< XML;

accesul datelor prin providerul OLE DB.

Visual FoxPro 8.0 (anul 2003)

îmbun<t<Yiri ale IDE (Interactive Development Environment): Task Pane Manager, Toolbox, IntelliSense pentru fereastra Watch, etc.;

îmbun<t<Yiri ale limbajului de programare (clase, comenzi şi funcYii noi);

introducerea noii clase XMLAdapter şi clase XML Web Services;

conectivitate la date aflate la distanY< folosind clasa CursorAdapter;

introducerea tipului autoincrement;

inserarea rândurilor prin comanda SQL Select.

Visual FoxPro 9.0 SP2 Sedna CTP (anii 2004 - 2008)

ultima versiune – anunYându-se stoparea dezvolt<rii produsului de c<tre Microsoft, acesta convergând de-a lungul ultimilor 8 ani c<tre Microsoft SQL Server;

soluYie compatibil< .NET cuprinzând şi servicii Web XML;

1-20

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

compatibilitate şi interoperabilitate m<rit< cu SQL Server pentru a facilita schimbul de date între cele dou< produse (introducerea noilor tipuri de date Varchar, Varbinary şi Blob);

introducerea funcYiei CAST( ) pentru conversia între tipuri de date;

introducerea funcYiei inline ICASE( ) similar< cu instrucYiunea DO CASE;

îmbun<t<Yirea raport<rii;

îmbun<t<Yiri la limbajul SQL (eliminarea limit<rii la 9 clauze de join şi subinterog<ri în comanda SQL Select);

eliminarea limit<rilor pentru dimensiunea şirurilor (array) şi lungimea procedurilor;

Tolbox-ul este dock-abil c<tre Desktop sau alte ferestre IDE (în special s-a lucrat la dock-abilitate şi la clase şi funcYii).

Avantaje în utilizarea FoxPro:

tehnici de optimizare performante;

limbaj performant de descriere şi manipulare a datelor;

încorporarea unui modul SQL foarte rapid;

mediu favorabil elabor<rii programelor puternic modularizate şi structurate, orientate obiect;

mecanisme evoluate de conversie a programelor şi a datelor (DBase- FoxPro), suport bine pus la punct pentru XML;

utilizarea în reYele de microcalculatoare, ca şi client COM şi COM server ;

instalarea modular< în funcYie de necesit<Yi şi posibilit<Yi;

include

instrumente

de

proiectare

de

tip

4GL

(4-th

Generation

Language);

 

Dezavantajele sistemului FoxPro:

 

relativa

simplitate

a

mediului

(nu

se

pot

elabora

aplicaYii

foarte

complexe);

nu este un sistem relaYional pur (de exemplu, lipsa dicYionarului de date la versiunile mai mici de 3.0);

nu prezint< intrinsec caracteristici client-server, prezint< dezavantaje în rol de server într-o arhitectur< client-server;

nu este recomandat pentru WAN (Wide Area Network);

nu prezint< modalit<Yi avansate de protecYie şi securitate a datelor;

compatibilitatea versiunilor nu este asigurat< în toate cazurile;

viteza de execuYie este variabil< (influenYat< de mulYi factori).

1-21

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

Capitolul 2 Concepte şi elemente de baza în FoxPro.

Sistemul FoxPro se adreseaz<, în principal, c<tre dou< categorii de utilizatori :

proiectanYii şi programatorii care scriu aplicaYii în FoxPro.

utilizatorii finali care îşi pot administra cu uşurinY< datele, folosind interfaYa utilizator;

FoxPro lucreaz< cu urm<toarele elemente de baz<:

fişier de date: colecYie de informaYii organizate matricial;

fişier index: colecYie de informaYii auxiliare asociate unui fişier de date cu rolul de a permite parcurgerea acestuia într-o anumita ordine, respectiv pentru reg<sirea rapid< a informaYiilor pe baza unor coduri;

machet< (ecran, form): interfaYa de afişare şi/sau de introducere a informaYiilor într-un fişier de date;

raport : forma de afişare a informaYiilor dintr-un fişier de date la ecran, imprimant< sau fişier, având la baza principiul benzilor;

interogare: fişier de date virtual, obYinut din unul sau mai multe fişiere de date fizice, interconectate între ele pe baza unor relaYii;

program: colecYie de instrucYiuni FoxPro ordonate conform unui algoritm ce urm<reşte, în general, prelucrarea informaYiilor din unul sau mai multe fişiere;

aplicaYie: program special ce integreaz< elementele FoxPro care au ca scop realizarea unui grup de operaYii unitare;

proiect: fişier de date special ce integreaz< elementele FoxPro care au ca scop realizarea unui grup de operaYii unitare şi care se foloseşte pentru generarea de aplicaYii şi programe (tip EXE).

În continuare sunt prezentate sumar aceste elemente de baz< ale mediului FoxPro, urmând ca pe parcursul celorlalte laboratoare s< se prezinte instrucYiunile şi modalit<Yile de lucru cu aceste elemente.

iunile ş i modalit <Y ile de lucru cu aceste elemente. Fi ş ier de date

Fişier de date - reprezint< conceptul central al sistemului FoxPro

Fişierele de date FoxPro au o organizare special< ilustrat< în figura urm<toare.

2-22

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

ANTET FIŞIER zona în care se p<streaz< informaYiile despre structura fişierului şi anume: num<rul de
ANTET FIŞIER zona în care se p<streaz< informaYiile despre
structura fişierului şi anume: num<rul de câmpuri (coloane) din
fişier, num<rul de articole, data şi ora ultimei actualiz<ri. Pentru
fiecare câmp se reYin: numele, tipul, lungimea, informaYii de
index.
CÂMP

COLOAN;

ARTICOL

lungimea, informaYii de index. CÂMP COLOAN ; ARTICOL Se disting dou < p < r Y

Se disting dou< p<rYi importante în acest fişier: zona propriu-zis< de informaYii împ<rYit< în rânduri numite articole şi coloane de câmpuri şi antet fişier în care se p<streaz< informaYiile de organizare a zonei propriu-zise.

< informa Y iile de organizare a zonei propriu-zise. ARTICOL : por Y iune elementar <

ARTICOL: porYiune elementar< a fişierului la care utilizatorul are acces la un moment dat; articolul este format din mai multe câmpuri.

CÂMP: unitatea elementar< de memorare în fişier ce se reg<seşte la intersecYia dintre un articol şi o coloan<.

COLOANA:

caracterizeaz< prin acelaşi nume, tip, lungime şi se afl< în articole diferite.

se

toate

câmpurile

dintr-un

fişier

ce

Fişier index

Unui fişier de date FoxPro i se pot asocia unul sau mai multe fişiere index cu scopul de a permite reg<sirea rapid< a articolelor în funcYie de cheile realizate pe baza unor câmpuri sau combinaYii de câmpuri.

Organizarea fişierului index este prezentat< în figura urm<toare:

2-23

Facultatea de Automatică şi Calculatoare Iaşi Baze de date – lucrări practice

ANTET INDEX

Valoare cheie (ordonat<)

Num<r de ordine articol în fişier

1

2

i`

n`

Valoare cheie: valorile câmpurilor sau combinaYiilor de câmpuri din fişierul de date ordonate cresc<tor sau descresc<tor, dup< opYiune; Nr. ordine articol în fişier: numerele de ordine ale articolelor din fişier.

Cu alte cuvinte un fişier index reprezint< perechi formate din valori şi numere de articol pentru care s-au obYinut aceste valori, prin evaluarea unei chei ordonate cresc<tor sau descresc<tor.

Num<rul de perechi n` este mai mic sau egal ca num<rul de articole din fişierul de date asociat.

Avantajul c<ut<rii în fişierul de date printr-un fişier index asociat rezult< tocmai din faptul c< valorile sunt ordonate, deci c<utarea în index este relativ simpl< şi rapid<, dup< care, prin obYinerea num<rului de ordine al articolului c<utat, c<utarea în fişierul de date devine de asemenea simpl< şi uşoar<.

În sistemul FoxPro, începând cu versiunea 2.0 s-a introdus un nou tip de fiş