78
BAZE DE DATE note de curs Prof. dr. Adrian COJOCARIU

Curs Baze de Date

Embed Size (px)

Citation preview

Page 1: Curs Baze de Date

BAZE DE DATE

note de curs Prof. dr. Adrian COJOCARIU

Page 2: Curs Baze de Date

CUPRINS I. INFORMAŢIA – OBIECT AL PRELUCRĂRII ...................................................................................................... 2

I. INFORMAŢIA – OBIECT AL PRELUCRĂRII ....................................................................................................... 3 1.1. RELAŢIA DATE – INFORMAŢII – CUNOŞTINŢE ÎN CONTEXTUL SOCIETĂŢII INFORMAŢIONALE ................................... 3 1.2. DATE....................................................................................................................................................................... 3 1.3. INFORMAŢII............................................................................................................................................................. 4 1.4. CUNOŞTINŢE ........................................................................................................................................................... 5

II. ORGANIZAREA DATELOR .................................................................................................................................... 7 2.1. METODE ŞI TEHNICI DE ORGANIZARE A DATELOR.................................................................................................... 7

2.1.1. Fişiere............................................................................................................................................................ 7 2.1.1.1. Modul de organizare a fişierelor ................................................................................................................ 8 2.1.1.2. Modul de acces la fişiere ............................................................................................................................ 9 2.1.1.3. Integrarea fişierelor ................................................................................................................................. 10 2.1.2. Baze şi bănci de date ................................................................................................................................... 10

2.2. SUPORTURI DE ÎNREGISTRARE A DATELOR ............................................................................................................ 11 III. NOŢIUNI ELEMENTARE LEGATE DE BAZE DE DATE .............................................................................. 13

3.1. DEFINIREA BAZEI DE DATE .................................................................................................................................... 13 3.2. STOCAREA BAZELOR DE DATE............................................................................................................................... 14 3.3. ARHITECTURA UNEI BAZE DE DATE ....................................................................................................................... 14

IV. ELEMENTE DE MODELARE ŞI PROIECTARE A BAZELOR DE DATE ................................................... 16 4.1. MODELAREA DATELOR ......................................................................................................................................... 16 4.2. MODELE DE BAZE DE DATE ................................................................................................................................... 17 4.3. ELEMENTE DE PROIECTAREA FIZICĂ A BAZELOR DE DATE RELAŢIONALE .............................................................. 19 4.4. MODUL DE LUCRU CU O BAZĂ DE DATE RELAŢIONALĂ.......................................................................................... 20

V. ELEMENTE DE ADMINISTRAREA ŞI PROTECŢIA BAZELOR DE DATE................................................. 22 5.1. SISTEMUL DIRECTOR/DICŢIONAR DE DATE ............................................................................................................ 22 5.2. FUNCŢII PRINCIPALE ALE SISTEMULUI DIRECTOR/DICŢIONAR DE DATE ................................................................. 22 5.3. PROTECŢIA DATELOR ............................................................................................................................................ 23

VI. BAZE DE DATE ACCESS..................................................................................................................................... 24 6.1. PREZENTAREA APLICAŢIEI MICROSOFT ACCESS................................................................................................. 24 6.2. FEREASTRA DATABASE......................................................................................................................................... 24 6.3. CREAREA UNEI BAZE DE DATE............................................................................................................................... 25 6.4. UTILIZAREA FORMULARELOR................................................................................................................................ 26 6.5. ADMINISTRAREA DATELOR PRIN INTERMEDIUL INTEROGĂRILOR .......................................................................... 27 6.6. REALIZAREA RAPOARTELOR ................................................................................................................................. 28 6.7. GENERATOARELE DE MACROINSTRUCŢIUNI ŞI MODULE ........................................................................................ 29

VII. PREZENTAREA APLICAŢIEI MICROSOFT ACCESS, TABELE ................................................................. 31 7.1. LANSAREA ÎN EXECUŢIE A APLICAŢIEI MICROSOFT ACCESS ................................................................................. 31 7.2. CREAREA UNEI BAZE DE DATE............................................................................................................................... 32 7.3. MENIUL APLICAŢIEI MICROSOFT ACCESS .............................................................................................................. 34

7.3.1. Meniul File .................................................................................................................................................. 34 7.3.2. Meniul Edit .................................................................................................................................................. 35 7.3.3. Meniul View................................................................................................................................................. 36 7.3.4. Meniul Insert ............................................................................................................................................... 36 7.3.5. Meniul Tools................................................................................................................................................ 36 7.3.6. Meniul Window............................................................................................................................................ 37 7.3.7. Meniul Help ................................................................................................................................................. 37

7.4. CREAREA UNUI TABEL........................................................................................................................................... 37 7.5. FEREASTRA DATASHEET ......................................................................................................................................... 41 7.6. CÂMPURI CU SURSĂ DE VALORI............................................................................................................................. 43

VIII. RELAŢII ÎNTRE TABELE, INTEROGĂRI ..................................................................................................... 46

1

Page 3: Curs Baze de Date

8.1. CREAREA RELAŢIILOR........................................................................................................................................... 46 8.2. CREAREA INTEROGĂRILOR DE DETALIU PE BAZA UNUI TABEL............................................................................... 47 8.3. CREAREA INTEROGĂRILOR DE DETALIU PE BAZA MAI MULTOR TABELE ................................................................ 49 8.4. CREAREA INTEROGĂRILOR DE SUMARIZARE ......................................................................................................... 50

IX. FORMULARE.......................................................................................................................................................... 53 9.1. CREAREA UNUI FORMULAR PE BAZA TABELELOR .................................................................................................. 53 9.2. CREAREA UNUI FORMULAR PE BAZA UNEI INTEROGĂRI......................................................................................... 56 9.3. SORTAREA ŞI FILTRAREA....................................................................................................................................... 57

X. RAPOARTE............................................................................................................................................................... 60 10.1. CREAREA UNUI RAPORT SIMPLU PE BAZA UNUI TABEL ........................................................................................ 60 10.2 CREAREA UNUI RAPORT CU SORTARE................................................................................................................... 63 10.3 CREAREA UNUI RAPORT CU GRUPARE................................................................................................................... 64

XI. MACROINSTRUCŢIUNI....................................................................................................................................... 70 11.1. INSTRUCŢIUNI ..................................................................................................................................................... 70 11.2. CREAREA ŞI UTILIZAREA MACROINSTRUCŢIUNILOR ............................................................................................ 73

2

Page 4: Curs Baze de Date

I. INFORMAŢIA – OBIECT AL PRELUCRĂRII

1.1. RELAŢIA DATE – INFORMAŢII – CUNOŞTINŢE ÎN CONTEXTUL SOCIETĂŢII

INFORMAŢIONALE Orice activitate umană este caracterizată, întotdeauna, prin entităţi faptice exprimate fie

numeric, fie printr-o percepţie sau o observaţie nenumerică. Aceste entităţi se numesc date. Datele supuse unui proces de prelucrare oarecare devin informaţii. Informaţiile derivate din

alte informaţii, pe bază de raţionamente, devin cunoştinţe (Figura 1.1.).

Figura 1.1. Relaţia dată – informaţie - cunoştinţă În acest context se poate afirma că aceeaşi dată poate avea utilităţi diferite pentru observatori

diferiţi, aceasta depinzând de gradul cunoaşterii anterioare şi de poziţia observatorului faţă de obiect, adică informaţia prezintă interes doar dacă poate fi utilizată [Niţchi, Racoviţan, 1996].

O serie de autori împart ultimul secol în: - societatea industrială: în care baza o reprezintă producţia industrială, sau resursa cea mai importantă este capitalul; - societatea post industrială sau informaţională: în care producţia de bază este cea intelectuală, iar resursa cea mai importantă este informaţia. Astfel, între cele două există o diferenţă clară, ca de exemplu între o întreprindere producătoare de bunuri materiale, de la începutul secolului, în care resursa strategică era una materială, resursa informaţională neavând o pondere prea mare şi o societate bursieră sau o bancă de azi, care are resursa de bază informaţia. În general, noţiunile de dată şi informaţie sunt considerate sinonime, ele în realitate deosebindu-se esenţial. Aceasta poate fi cauza unui management ineficient, când nu se face distincţia între cele două noţiuni şi deci managementul manevrează prea mult date şi prea puţine informaţii. Deci, problema informaţiei devine una strict necesară pentru orice manager. Actul managerial se materializează prin decizii, adică procesul prin care managerul identifică problemele organizaţionale şi doreşte să le rezolve [Barthol, 1991]. Baza materială a deciziilor o constituie informaţia care, la rândul ei, are la bază date. Pe baza informaţiilor se creează noi cunoştinţe, constituindu-se astfel suportul sistemului decizional.

1.2. DATE

În informatică, prin dată se desemnează un model de reprezentare a informaţiei, accesibil unui anumit proces (U.C., program, om etc.). După modul de prelucrare, cu calculatorul, al datelor acestea se clasifică în: a) date elementare; b) structuri de date. Datele elementare se definesc din punct de vedere logic, adică la nivelul unui procesor uman, ca un triplet de forma:

D = (I, A, V) sau exprimat în notaţia BNF (Backus-Naur-Form):

Aplicaţii

Date Infor-maţii

Cunoş-tinţe

Prelucrare

Raţionamente

Calculatoare până la generaţia a-IV-a, inclusiv Calculatoare de generaţia a-V-a, inclusiv

3

Page 5: Curs Baze de Date

<dată>:=<identificator><atribute><valoare>

Identificatorul reprezintă simbolul sau numele asociat datei, prin care se distinge de alte date. Atributul este proprietatea datei care determină modul în care data va fi tratată în procesul de prelucrare. Cel mai important atribut este tipul datei, care defineşte apartenenţa ei la o anumită clasă de date (real, logic, numeric, alfa-numeric etc.). Valoarea datei se poate preciza prin enumerare sau printr-o proprietate. Dacă pe tot parcursul prelucrării data păstrează aceeaşi valoare, ea se numeşte constantă. În caz contrar, data este o variabilă. Din punct de vedere fizic, adică la nivelul calculatorului, modelul corespunzător informaţiei este o zonă de memorie situată la o adresă absolută în care este memorată valoarea datei. O structură de date este un mod de memorare a datelor într-o formă organizată [Thro, 1990]. Cu alte cuvinte, o structură de date reprezintă o mulţime de date elementare pentru care s-a definit un mecanism de selecţie în identificarea elementelor componente şi asupra căreia se pot efectua o serie de operaţii. Principalele structuri sunt: şirul, lista, arborele, tabloul, articolul etc. Structurile de date pot fi stocate în memoria internă (structuri interne), sau în memoria externă (fişiere). Asupra structurilor de date se pot efectua o serie de operaţii cum ar fi:

• Crearea – operaţia prin care se stochează structurile de date pe suportul de memorie internă sau externă;

• Actualizarea – reprezintă modificarea stării unei structuri de date şi constă în: - adăugarea de noi elemente; - modificarea valorii unor elemente deja existente; - ştergerea unor elemente.

• Consultarea – este operaţia prin care se realizează accesul la elemente în scopul vizualizării sau prelucrării lor;

• Sortarea – adică ordonarea elementelor unei structuri după anumite criterii. Din punct de vedere managerial, cel mai important criteriu de clasificare a datelor este cel al originii acestora. Datele pentru o organizaţie provin din surse externe şi surse interne. Datele externe se referă la: - clienţi – cerinţe, preferinţe, posibilităţi de plată etc.; - canale de distribuţie – existenţa lor, posibilitatea lor de a se informa etc.; - furnizori – starea livrărilor, relaţiile financiare etc.; - colaboratori şi competitori – dacă există, colaborarea cu ele etc.; - cunoştinţe şi îndemânări tehnico-economice şi tehnologice – în engleză „know-how”. Datele interne se bazează pe anumite cuantificări de fapte, observaţii, măsurări etc. Există o varietate de activităţi de rutină ca: inventare, contabilitate, controlul stocurilor, al producţiei, personalului etc., care asigură corectitudinea reprezentării tranzacţiilor unei organizaţii în datele legate de aceasta. Alături de aceste date interne mai apar o serie de date legate de: - cultura internă a organizaţiei, adică stilul de lucru, organizarea şi eficienţe fluxului informaţional intern etc.; - deprinderi manageriale legate de interpretarea informaţiei şi de responsabilitate; - management internaţional şi macroeconomic, adică cunoaşterea altor culturi manageriale, rezultatele acestora etc.

1.3. INFORMAŢII

Unul din cele mai prestigioase dicţionare de specialitate Oxford, în 1991, defineşte informaţia ca fiind: “formal, o colecţie de simboluri. Acesta este sensul de prelucrare a informaţiilor

4

Page 6: Curs Baze de Date

, tehnologia informaţională sau teoria informaţiilor. Simbolurile pot fi definite ca forme prin care se păstrează sensul şi care astfel servesc ca o definiţie alternativă a informaţiei. Informaţia poate fi privită din trei puncte de vedere:

• din punct de vedere al percepţiei umane care presupune legarea informaţiei de efectele ce pot apărea în urma acestei receptări;

• din punct de vedere analitic, lingvistic, informaţia poate fi descrisă în termeni ce se referă la sensul sau structura sa;

• din punct de vedere fizic, informaţia poate fi descrisă în termenii manifestărilor sale fizice – mediul de păstrare, rezoluţia sau acurateţea cu care se emite, recepţionează etc.”

Informaţia prezintă trei aspecte esenţiale:

1. aspectul sintactic; 2. aspectul semantic; 3. aspectul pragmatic.

1. Aspectul sintactic se referă la sistemul de semne şi regulile de reunire a acestora în construcţii sintactice utilizate pentru reprezentarea informaţiei în procesul culegerii, transmiterii şi prelucrării acesteia. Acestui nivel îi corespunde conceptul de dată, adică materia primă din care se obţin informaţiile o constituie datele. 2. Sub aspect semantic, informaţia poate fi caracterizată ca semnificaţia internă a datelor, adică, corespondenţa dintre o dată şi obiectul real sau situaţia pe care o reprezintă această dată. 3. Aspectul pragmatic este cel care raportează informaţia la scopurile observatorului. Pragmatica include, într-o anumită măsură, problemele de conducere. Procesul de conducere este cel prin care informaţia se transpune în acţiune prin intermediul deciziilor. În acest fel, procesul conducerii este determinat de sistemul informaţional, care constituie baza pentru luarea deciziilor. Pentru ca o informaţie să fie utilă scopurilor propuse, ea trebuie să fie:

consistentă - adică să fie suficient de cuprinzătoare; relevantă – adică să poată furniza cunoştinţe care lipsesc pentru realizarea deciziei; exactă – adică să reflecte situaţia reală (acurateţea informaţiei); oportună – adică să existe un decalaj corespunzător între momentul obţinerii informaţiei şi

momentul luării deciziei (apropierea cât mai mult de timpul real); accesibilă – adică modul de prezentare a informaţiei are o importanţă deosebită; completă – adică trebuie să acopere aria dorită de decident; concisă – trebuie să aibă nivelul de agregare necesar procesului de luare a deciziilor.

Există un număr mare de criterii după care sunt clasificate informaţiile. Dintre acestea amintim:

- după surse – interne, externe, primare etc.; - după natură – cantitative, calitative, formale etc.; - după nivel – strategic, tactic, operaţional; - după frecvenţă – anuale, lunare, zilnice etc.; - după formă – scrisă, orală, vizuală etc.; - după tip – sumare, detaliate, agregate etc.

1.4. CUNOŞTINŢE

După 1990 [Beyond] nivelul dată-informaţie este considerat un prim nivel în informatica economică. La aceasta se adaugă un al doilea, acela al informaţiilor rezultate din alte informaţii pe bază de raţionamente. Acest nivel este considerat a fi nivelul cunoştinţelor.

5

Page 7: Curs Baze de Date

Watters definea (1992) cunoştinţele astfel: “Cunoştinţa include capacitatea de a evalua informaţia într-un anumit sens sau scop. A avea cunoştinţe sau abilitatea de a efectua sarcini complexe, presupune mai mult decât a avea o listă de instrucţiuni sau informaţii necesare; se cere abilitatea manipulării informaţiilor sau a sarcinilor.”

Definirea cunoştinţelor

Trebuie subliniat faptul că nu orice dată sau informaţie creează cunoştinţe. Astfel, unele informaţii sunt deja între cunoştinţele receptorului şi deci nu generează informaţii noi. Pe de altă parte, unele informaţii s-ar putea să nu aibă semnificaţie pentru receptor, în sensul că nu se integrează în cunoştinţele lui. De exemplu, acelaşi specialist care nu este interesat de informatică şi consideră că poate lucra fără calculator, informaţiile din prezentul curs nu au relevanţă şi nu se constituie în cunoştinţe. În acest context, cunoştinţele reprezintă totalitatea informaţiilor dobândite anterior, cu privire la obiectul considerat. Mulţimea cunoştinţelor formează un tezaur la care trebuie raportat rezultatul oricărui proces de informare. Este posibil ca rezultatul unui proces de informare să fie nul, dacă informaţia respectivă face deja parte din tezaurul observatorului, adică a devenit o cunoştinţă.

6

Page 8: Curs Baze de Date

II. ORGANIZAREA DATELOR

2.1. METODE ŞI TEHNICI DE ORGANIZARE A DATELOR

Obiectivul general al oricărui sistem bazat pe prelucrarea automată a datelor este acela de a eficientiza o activitate deservind-o prin informaţii de calitate. Una din problemele de principiu de care trebuie să ţină cont orice metodă şi/sau tehnică de organizare a datelor este că acestea au fost introduse pentru realizarea de informaţii, prin pregătirea şi prelucrarea datelor în vederea valorificării maxime. Informaţia este o resursă care tinde tot mai mult să devină dominantă. Volumul şi structura informaţiei ce intră şi/sau se generează într-un sistem şi frecvenţa acestor intrări şi/sau generări determină principalele caracteristici tehnice şi de exploatare ale sistemului de prelucrare automată a datelor şi caracteristicile sistemelor informatice, în general. Evoluţia metodelor şi tehnicilor de organizare a datelor a fost influenţată de o serie de factori cum ar fi:

- creşterea continuă a complexităţii diverselor activităţi; - modul de utilizare a resursei timp, factor esenţial; - dezvoltarea deosebită a tehnicii de calcul.

Pe fondul unei varietăţi relativ mari de metode şi tehnici de organizare a datelor, se desprind două ca fiind principale: fişierul şi baza de date.

2.1.1. Fişiere

Fişierul a fost conceput şi utilizat în sistemele de prelucrare manuală a datelor. Sistemele de prelucrare automată au preluat această formă de organizare, fără a-i aduce perfecţionări de fond. Fişierul reprezintă o colecţie de date omogene din punct de vedere al semnificaţiei acestora şi al cerinţelor de prelucrare, stocată pe un suport fizic de date. Toate elementele constitutive ale unui fişier au aceeaşi structură şi sunt organizate sub o anumită formă. Din punct de vedere logic, fişierul este tratat ca o colecţie de articole. Articolul reprezintă o entitate în cadrul fişierului, fiind alcătuit dintr-o mulţime de date asociate, numite câmpuri. Câmpurile conţin un număr de caractere, cuvinte, coduri tratate împreună. Articolele pot fi de lungime fixă, variabilă sau nedefinită. Din punct de vedere fizic, fişierul trebuie privit ca o mulţime de articole fizice sau înregistrări, stocate pe un suport de memorie externă. Articolul fizic sau înregistrarea sau blocul, reprezintă unitatea de transfer dintre suportul de memorie externă şi memorie internă. Un articol fizic poate conţine unul sau mai multe articole logice. În acest sens, din punct de vedere semantic [French, 1990], fişierele sunt fizice şi logice. Fişierul fizic este legat strict de suportul de memorie externă şi este alcătuit dintr-o mulţime de înregistrări, fiecare înregistrare putând fi tratată ca un tot unitar, deci nu are entităţi corespunzătoare câmpurilor. Fiecărui fişier fizic îi corespunde un fişier logic, alcătuit dintr-o mulţime de articole, fiecare articol putând fi tratat ca o entitate, la nivel de câmp. Cu alte cuvinte, un fişier trebuie privit din punctul de vedere al calculatorului şi din punctul de vedere al utilizatorului uman. Articolul fiind o structură de date, toate operaţiile menţionate deja pot fi efectuate şi asupra fişierelor, dar execuţia acestor operaţii este condiţionată de existenţa unor elemente speciale:

• cheie de protecţie sau atribut, care indică ce operaţii se pot efectua asupra fişierului (read-only, read-write, hidden etc.);

• cheie de acces utilizator (parolă) - pentru a se putea executa o anumită operaţie cheie de acces a utilizatorului trebuie să fie în anumită relaţie cu cheia de protecţie;

7

Page 9: Curs Baze de Date

• utilizare exclusivă sau partajată – fişierul poate fi utilizat de către un singur utilizator, respectiv de mai mulţi utilizatori;

• tabele de descriere a fişierului (TDF) – ce asigură posibilitatea efectuării operaţiilor asupra fişierelor.

Orice operaţie poate fi efectuată asupra unui fişier doar după ce fişierul respectiv a fost deschis, moment în care TDF – ul se încarcă în memoria internă. Operaţia prin care TDF – ul se stochează pe suportul de memorie externă şi se şterge din memoria internă este închiderea fişierului. După această operaţie nu se mai pot efectua nici un alt fel de operaţii cu elementele fişierului. Există mai multe criterii de clasificare a fişierelor, care de fapt precizează modul de organizare a lor şi modul de acces la articolele conţinute.

2.1.1.1. Modul de organizare a fişierelor Prin organizarea unui fişier se înţelege forma în care se face stocarea fişierului pe suportul de memorie externă. De aceasta depinde modul în care se va face tratarea înregistrării la nivel fizic. Se utilizează trei moduri de organizare:

- organizarea secvenţială; - organizarea relativă (selectiv); - organizarea secvenţial-indexată.

Modul de organizare secvenţial se caracterizează prin faptul că articolele nu au o identitate, deci pentru a ajunge la articolul i trebuie parcurse cele i – 1 articole precedente. Orice fişier secvenţial are un ultim articol special EOF (End Of File). Pentru ştergerea unui articol trebuie rescris tot fişierul. De asemenea, adăugarea de articole se face, de obicei, la sfârşitul fişierului sau în unele cazuri prin inserare cu rescrierea fişierului de la acel articol, dar cu un consum mare de timp. Fişierele secvenţiale pot fi create pe orice tip de suport de memorie externă. Fişierele secvenţiale pot avea articole de lungime fixă, variabilă sau nedefinită, dar toate trebuie să fie de acelaşi fel într-un fişier (Figura 2.1.). Modul de organizare relativ presupune gruparea articolelor în casete, aceasta fiind unitatea adresabilă în fişierele relative. Ele pot fi stocate doar pe suporturi de memorie externă adresabile (discuri magnetice). Articolele sunt de obicei de lungime fixă. Fiecărei casete i se asociază un număr, iar corespondenţa dintre articole şi numărul de casetă se face printr-un algoritm de randomizare.

câmpuri

câmp de ştergere câmp cu lungimea articolului

Figura 2.1. Structura unui fişier secvenţial

Căutarea unui articol se face după numărul de casetă, iar în interiorul casetei secvenţial. În acest sens fiecărui articol i se asociază două elemente: - adresa casetei (numărul);

- cheia articolului care îl deosebeşte de celelalte articole din casetă (Figura 2.2.).

Antet fişier A1 Ai – 1 Ai A1 + 1 An EOF

Articol precedent Articol curent

ol următor Artic

Zona utilă

8

Page 10: Curs Baze de Date

zona principală

coliziune zona de depăşire

Caseta 0 Caseta nCaseta i

Sinonim Sinonim

Figura 2.2. Structura unui fişier selectiv

Sinonimele apar când algoritmul de randomizare nu este suficient fundamentat şi rezultatul său este acelaşi pentru unul sau mai multe articole. Articolele sinonime sunt trecute în zona de depăşire, motiv pentru care este necesară reorganizarea fişierului. În cazul în care o casetă corespunde cu un articol, articolul sinonim este înscris (stocat) peste articolul din caseta respectivă.

Modul de organizare secvenţial-indexat preia avantajele celor două metode prezentate (fişierele secvenţiale utilizează bine suportul de memorie externă, dar au un timp de răspuns necorespunzător, iar fişierele relative nu utilizează corespunzător discul, dar au un timp de răspuns bun). Fişierului secvenţial-indexat i se ataşează un index. Indexul [Oxford, 1991] este un ansamblu de legături care se poate utiliza pentru a localiza articolele într-un fişier de date. De exemplu, cartea de telefon conţine la începutul fiecărei pagini un grup de litere cu care încep numele din pagina respectivă. În acest mod, nu trebuie căutate toate numerele secvenţial, ci se va căuta pagina cu primul grup de litere şi doar în cadrul ei se va căuta secvenţial numele dorit. Cu o astfel de organizare căutarea este mai rapidă şi se economiseşte şi suport, fişierul rămânând secvenţial. Prin index [Niţchi, Racoviţan, 1996] se înţelege, deci, o informaţie auxiliară pe baza căreia se poate determina mai repede informaţia dintr-un fişier.

Indexarea se realizează prin ataşarea la fişier a unui tabel sau fişier de indecşi. Indexul conţine cheia articolului şi adresa articolului. Cheie poate fi un câmp din fişier după care se doreşte indexarea (Figura 2.3.).

Fişierele cu organizare indexată pot fi stocate doar pe suport de memorie externă magnetic. zona fişier tabela de indecşi

A1 A2 An

C1 C2

adr. adr.

Figura 2.3. Structura unui fişier secvenţial indexat

2.1.1.2. Modul de acces la fişiere

Prin acces la fişiere se înţelege modul în care se poate localiza un anumit articol. Există trei

tipuri de acces principale: - acces secvenţial; - acces direct; - acces prin cheie sau index. Accesul secvenţial permite parcurgerea articolelor de la 1 la n în ordinea în care sunt dispuse. Accesul secvenţial poate fi utilizat la orice tip de fişier, la orice mod de organizare a acestora. La organizarea secvenţială accesul se face articol cu articol; la organizarea selectivă accesul se face în ordinea casetelor, iar la organizarea secvenţial-indexată accesul se face în ordinea indexului.

9

Page 11: Curs Baze de Date

Accesul direct permite localizarea articolelor din fişierele organizate secvenţial, respectiv organizate relativ. Fişierele secvenţiale pot fi accesate direct dacă articolele sunt de lungime fixă, pe baza numărului de ordine al articolului. Fişierele relative au ca şi mod specific accesul direct. Se caută caseta ce conţine articolul şi în cadrul casetei se face căutarea secvenţial. Fişierele indexate nu pot fi accesate direct. Accesul prin cheie sau indexat se face cu ajutorul unei expresii logice asupra valorilor cheilor de căutare. Se caută după index articolul care satisface relaţia indicată. De fapt, prima căutare se face în tabela de indecşi. Dacă s-a găsit, se face prelucrarea indicată şi apoi se caută următorul care satisface condiţia.

2.1.1.3. Integrarea fişierelor

În cadrul procesului decizional, unicitatea colecţiei de informaţii se impune net ca o soluţie, din următoarele motive:

- permite prelucrarea pe calculator, realizându-se suportul informaţional eficient; - permite ca pentru fiecare informaţie să existe o singură sursă.

În cadrul aplicaţiilor informatice ce utilizează fişiere, diferitele articole, respectiv înregistrări, se structurează în funcţie de necesităţile de prelucrare. Astfel, inevitabil, va exista neunicitatea datelor atât din exteriorul sistemului, cât şi din interiorul acestuia. Această metodă prezintă mai multe dezavantaje. Redundanţa: informaţiile provenite dintr-o sursă unică sunt multiplicate în mai multe fişiere, ceea ce duce la o slabă utilizare a suporturilor de memorie externă, cât şi la probleme legate de actualizarea fişierelor – aceleaşi date trebuie utilizate la mai multe fişiere. Absenţa unor relaţii logice: în cazul unor aplicaţii complexe, numărul de relaţii dintre diferitele grupuri de date poate fi foarte mare, ceea ce duce fie la creşterea excesivă a timpului de prelucrare, fie la creşterea excesivă a numărului de fişiere. Flexibilitatea: este extrem de redusă la aceste sisteme, orice nouă prelucrare dorită duce fie la apariţia unui nou fişier, fie la reorganizarea celor existente. Aceste inconveniente pot fi înlăturate dacă se renunţă la organizarea colecţiei de date în fişiere destinate diferitelor aplicaţii şi se înlocuieşte cu un sistem complex de elemente de date, în fişiere integrate. Avantajul acestei metode este acela că datele, fiind organizate conform relaţiilor lor logice intrinseci (independent de o aplicaţie sau alta), pot, în mod virtual, satisface nevoile oricărei operaţii de prelucrare. Această metodă stă la baza unui tip superior de organizare a datelor şi anume bazele, respectiv băncile de date, care depăşeşte dezavantajul utilizării fişierelor integrate, acela că nu a rezolvat probleme independenţei programelor de aplicaţii faţă de modul de organizare a datelor. Aceasta este o necesitate evidentă, odată cu creşterea complexităţii sistemelor informatice şi deci odată cu creşterea cerinţelor de a organiza noi tipuri de fişiere, de a modifica structura fişierelor existente, fără a modifica programele de aplicaţii existente deja în exploatare.

2.1.2. Baze şi bănci de date

Una din problemele de principiu pe care bazele şi băncile de date o rezolvă este aceea că această formă de organizare a datelor este pentru informaţii, pentru pregătirea şi prelucrarea informaţiei în vederea unei valorificări, respectiv revalorificări maxime. Abordarea organizării datelor în baze şi bănci de date nu răspunde, astfel, numai cerinţelor tehnice impuse de echipamentele de prelucrare a datelor. Banca de date reprezintă un sistem de organizare şi prelucrare a datelor, constituit din următoarele elemente:

1. o colecţie de date aflate în interdependenţă;

10

Page 12: Curs Baze de Date

2. descrierea datelor şi a relaţiilor dintre ele; 3. un sistem de programe pentru gestiunea datelor, care asigură independenţa programelor de aplicaţii faţă de modul de organizare şi structurare a datelor [Pescaru, 1976].

Noţiunea de bază de date se utilizează pentru a defini primele două elemente, deci baza de date are sens numai ca element al băncii de date. Componenta a treia poartă denumirea de sistem de gestiune al băncii de date. O serie de autori, de obicei cei mai moderni, consideră că banca de date este, de fapt, o bază de date cu informaţii referenţiale. Vom accepta ideea după care, bazele de date dau informaţii directe, pe când băncile de date dau informaţii referenţiale, adică indică de exemplu, cartea şi pagina la care este descrisă noţiunea. În continuare, prin bază de date vom înţelege un sistem integrat, coerent şi partajat de fişiere [Miranda, 1984]. O bază de date se caracterizează prin:

- structura datelor este independentă de programele de aplicaţii; - utilizatorii “văd” diferite date din baza de date – administratorul bazei este un “utilizator special”, singurul care cunoaşte întreaga structură, ceilalţi utilizatori au diferite viziuni asupra bazei, în funcţie de specificul problemelor pe care trebuie să le rezolve; - accesul se realizează centralizat, prevenind astfel redundanţa, incoerenţa datelor; - gestiunea datelor se execută corelat etc.

Bazele de date sunt deservite de un Sistem de Gestiune al Bazei de Date (SGBD). Un element esenţial al SGBD – urilor îl constituie faptul că pe lângă realizarea structurilor de date, acesta trebuie să asigure posibilitatea modelării datelor, adică descrierea relaţiilor existente între fişierele componente ale bazei de date. Tendinţa actuală în domeniul metodelor de organizare a datelor este realizarea bazelor de date distribuite. Necesitatea de implementare a sistemelor informatice distribuite, din punct de vedere teritorial, a determinat dezvoltarea bazelor de date distribuite, având ca suport tehnic reţelele de calculatoare, cel mai elocvent exemplu fiind INTERNET – ul.

2.2. SUPORTURI DE ÎNREGISTRARE A DATELOR

Orice colecţie de date trebuie stocată pe o memorie externă, pe de o parte datorită volumului mare de date conţinut, pe care o memorie internă nu o poate memora în întregime şi, pe de altă parte, datorită caracterului volatil al memoriei interne la dispoziţia utilizatorului. Cu alte cuvinte, memoria externă este de capacitate mare şi oferă posibilitatea de stocare permanentă a datelor (până la uzura fizică a purtătorului de informaţie). Întotdeauna, memoria externă este legată de suportul tehnic, care trebuie organizat în vederea stocării datelor şi de echipamentul periferic care va realiza operaţiile de citire/scriere de pe/pe suport. Din punct de vedere al accesului la datele stocate pe suport, acesta devine adresabil dacă permite accesul direct la oricare unitate de suport, respectiv secvenţial în caz contrar. Din punct de vedere al utilizării lor, suporturile sunt nereutilizabile şi reutilizabile. Suporturile nereutilizabile sunt acele suporturi care pot fi utilizate o singură dată pentru înregistrarea datelor, dar care pot fi citite de mai multe ori. De exemplu, hârtia de imprimantă, banda de hârtie, cartelele etc., sunt suporturi nereutilizabile. Suporturile reutilizabile sunt acele suporturi care pot fi utilizate de mai multe ori pentru scrierea datelor. Toate suporturile magnetice sunt reutilizabile. În cazul suporturilor nereutilizabile, trebuie avut în vedere unele elemente ca:

- dimensiunea suportului trebuie adaptată la mărimea fişierului; - fişierele, odată înscrise pe suport, nu mai permit modificarea lor; - aceste suporturi nu sunt adresabile;

11

Page 13: Curs Baze de Date

- când informaţia este vizibilă, nu mai sunt necesare informaţii de control ca: etichete de volum, de fişier etc.

În cazul suporturilor reutilizabile, acestea se consideră pe unităţile fixe numite volume. Ele conţin etichete de volum, de fişier etc. Ele sunt adresabile (discurile magnetice), respectiv secvenţiale (banda magnetică).

12

Page 14: Curs Baze de Date

III. NOŢIUNI ELEMENTARE LEGATE DE BAZE DE DATE

3.1. DEFINIREA BAZEI DE DATE Resursa esenţială pentru orice sistem managerial este informaţia. Pentru ca aceasta să se realizeze, să aibă calitate, trebuie să existe o anumită formă de organizare. Întrebarea care se naşte firesc este, de ce o întreprindere trebuie să-şi aleagă ca metodă de organizare a datelor baza de date? Răspunsul direct este acela că baza de date oferă sistemului managerial, la toate nivelurile, un control eficient asupra tuturor datelor cu care se operează. Avantajele ce rezultă din acest control centralizat sunt: - reducerea sau chiar eliminarea redundanţei datelor; - creşterea consistenţei datelor; - baza de date poate fi eficient partajată (accesul simultan a mai multor utilizatori la datele din baza de date), noile aplicaţii pot folosii datele existente; - se asigură o securitate şi o integritate a datelor deosebite etc.

O bază de date reprezintă un ansamblu unitar, organizat şi structurat de date şi care

corespunde, ca şi cerinţe informaţionale, aplicaţiilor informatice pentru diverse activităţi dintr-un domeniu. Ea este alcătuită din una sau mai multe colecţii de date (ansambluri de date omogene) împreună cu descrierea datelor şi a relaţiilor dintre ele, adică: B= k1 , k2 , …k i ,…kn , i ∈ N unde, ki– reprezintă o colecţie de date.

Baza de date trebuie să îndeplinească o serie de condiţii dintre care amintim: - structura bazei trebuie astfel concepută încât să asigure datele/informaţiile necesare şi

suficiente cerinţelor de interogare; - să asigure o redundanţă minimă a datelor stocate; - să permită accesul rapid la date pe baza unor mecanisme cât mai simple; - să permită securitatea deplină a datelor. O bază de date poate fi privită din două puncte de vedere: fizic şi logic. Din punct de vedere fizic, baza de date este stocată pe suport de memorie externă, deci o

reprezentare pe suport a datelor, atributelor şi a relaţiilor dintre ele. Din punct de vedere logic, baza de date reprezintă date, atribute şi relaţii independente de

modul în care datele şi relaţiile sunt stocate într-o bază de date fizică. Întotdeauna o bază de date are asociat un sistem de gestiune al bazei de date (S.G.B.D.), sau

în limba engleză, Data Base Managament System (D.B.M.S.). S.G.B.D.-ul este definit ca fiind software-ul de creare, întreţinere şi manipulare a bazei de date. Acesta trebuie să îndeplinească următoarele funcţii principale:

• de descriere – care permite definirea structurii datelor, a relaţiilor dintre acestea şi a condiţiilor de acces la date;

• de manipulare – presupune diverse operaţii de prelucrare a datelor, cum sunt: crearea, actualizarea, sortarea etc.

• de utilizare – care permite comunicarea între utilizatori şi baza de date, sub aspectul asigurării unor interfeţe.

Un alt element de definire a unui sistem de bază de date este administratorul bazei de date care face parte din categoria utilizatorilor, însă datorită sarcinilor deosebite pe care le are, vis-à-vis de organizarea structurii bazei, comparativ cu ceilalţi utilizatori apare ca unul special.

Practic, o bază de date nu poate existe în afara suporturilor de memorie externă. Volumele de memorare discuri, dischete, benzi magnetice, împreună cu echipamentele periferice

13

Page 15: Curs Baze de Date

corespunzătoare, unităţile de control, canalele respective şi calculatorul, formează hardware – ul unui sistem bază de date. Aceste trei elemente (software, hardware, utilizatori) sunt implicate în realizarea unei baze de date (Figura 3.1.).

S.G.B.D

Aplicaţii

Soft B.D

Utilizatori Hard

Figura 3.1. Schema unui sistem bază de date

3.2. STOCAREA BAZELOR DE DATE

Stocarea bazelor de date se face, de regulă, pe suporturi de memorie externă de mare capacitate. Prelucrarea datelor conţinute se face în memoria internă, dar numai asupra unei părţi a bazei la un moment dat, existând un permanent schimb memorie internă (M.I.) – memorie externă (M.E.).

Practic, o bază de date este alcătuită din unul sau mai multe fişiere. Aceasta deoarece gestionarea datelor pe un suport de memorie externă de către sistemele de operare actuale se face la nivel de fişier.

Elementele componente ale unui fişier sunt înregistrările. Fiecare înregistrare conţine datele necesare caracterizării unui obiect de tipul celor pentru care s-a proiectat fişierul. Fiecărei date îi corespunde un tip, un domeniu de valori, o lungime şi o poziţie în înregistrare, adică formează un câmp al înregistrării. Sub această formă sunt stocate datele componente ale unei baze de date pe o memorie externă. Unitatea de transfer dintre M.I. şi M.E. este blocul, ce poate conţine una sau mai multe înregistrări. Asupra înregistrărilor se pot face o serie de operaţii de prelucrare, dar care, de cele mai multe ori, se reduc la patru tipuri principale: adăugare, ştergere, modificare şi consultare.

3.3. ARHITECTURA UNEI BAZE DE DATE

Din cele prezentate putem concluziona că o bază de date conţine informaţii relativ la obiectele

ce intervin într-o mulţime de aplicaţii, relaţiile logice între informaţii şi tehnicile de prelucrare corespunzătoare.

O bază de date poate fi privită din mai multe puncte de vedere: - punctul de vedere al utilizatorului, care lucrează cu anumite părţi componente ale bazei de

date numite VEDERI. Vederile sunt descrise prin subscheme în sublimbaje de descriere a datelor, reprezentând, de fapt, viziunea utilizatorului. Un utilizator va fi interesat, în general, numai de o anumită porţiune a bazei de date. Vederea utilizatorului individual se numeşte vedere externă.

- punctul de vedere al administratorului bazei de date, care integrează toate vederile referitoare la baza de date, într-un singur model numit schemă conceptuală. Cu alte cuvinte, vederea conceptuală este o reprezentare a întregii informaţii conţinute de baza de date.

- punctul de vedere al implementatorului bazei de date, care priveşte baza de date ca pe o colecţie de fişiere memorate pe suporturi de memorie externă. Vederea implementatorului numită vedere internă este descrisă cu ajutorul schemei interne, adică totalitatea fişierelor utilizate pentru stocarea bazei de date şi modul de operare cu ele.

De exemplu: o bază de date pentru evidenţa studenţilor:

14

Page 16: Curs Baze de Date

- vederea internă – fişiere – student, cadre didactice, discipline, săli etc.; - vederea conceptuală – fişierul student conţine informaţii despre un tip de entitate – student; fiecare student are un număr matricol, cod facultate, cod specializare, an studiu, grupă, note/ani etc.; - vederea externă – număr matricol, note/ani etc.

Cele trei puncte de vedere asupra unei baze de date coincid cu cele trei nivele ale bazei de date (Figura 3.2.): Utilizator 1 Utilizator 2 Utilizator 3 ... Utilizator n Nivel extern Nivel conceptual Administrator Nivel intern (baza) … Implementator

Figura 3.2. Arhitectura unei baze de date

Primele două nivele sunt descrise prin planuri ce constau în enumerarea tipurilor de entităţi ce apar în baza de date şi relaţiile între acestea Aceste planuri reprezintă scheme externe, pentru primul nivel, respectiv scheme conceptuale pentru al doilea nivel. Prin scheme interne sau fizice se reprezintă descrierile la nivel fizic, de fapt singurul nivel existent efectiv. Aceste scheme vor fi alcătuite din vederile corespunzătoare.

15

Page 17: Curs Baze de Date

IV. ELEMENTE DE MODELARE ŞI PROIECTARE A BAZELOR DE DATE

4.1. MODELAREA DATELOR

Baza de date este un model al lumii reale şi nu poate reprezenta decât un număr limitat de

caracteristici ale ei, necesare unei aplicaţii. Cu alte cuvinte, de o importanţă deosebită este studiul sistemului ce urmează a fi reflectat în

baza de date. Sistemul trebuie privit unitar şi nu ca o alăturare a componentelor sale. Trebuie creat un model informaţional în care să fie cuprinse principalele funcţiuni şi fluxul de informaţii din sistem.

Modelarea conceptuală este una din cele mai puternice metode de a stabilii şi a menţine controlul asupra datelor. Un model conceptual de date este o reprezentare riguroasă a semnificaţiei datelor într-un anumit domeniu de interes. Acesta reprezintă, de fapt, entităţi, atribute şi relaţii. În acest caz, modelul cel mai utilizat este modelul entitate – relaţie, în cadrul căreia: • entitatea-este definită ca un lucru, un concept, o persoană, un eveniment din lumea reală ce poate fi unic determinat; • atributul-defineşte o latură a entităţii, care poate lua valori într-un domeniu asociat; • relaţia-defineşte o asociere între entităţi. De cele mai multe ori se lucrează cu relaţii binare, de forma: - unu-la-unu - caz în care fiecărui element dintr-o entitate îi corespunde un element dintr-o altă entitate şi invers; - unu-la-mai-mulţi - caz în care fiecărui element dintr-o entitate îi pot corespunde mai multe elemente dintr-o altă entitate, dar fiecărui element din a doua entitate îi corespunde un element din prima; - mai-mulţi-la-mai-mulţi - caz în care fiecărui element dintr-o entitate îi pot corespunde mai multe elemente dintr-o altă entitate şi invers. Informaţiile privind structura unei vederi pot fi sintetizate grafic într-o diagramă entitate – relaţie (DER). De exemplu:

Amfiteatru

STUDENT

Entităţile ce intervin se reprezintă prin dreptunghiuri. Atributele asociate vor fi reprezentate prin elipse, iar relaţiile dintre entităţi se vor reprezenta prin săgeţi (cu vârful dublu către entitatea pentru care pot apărea mai multe elemente în relaţie cu un element din cealaltă entitate). Modelarea datelor prin DER prezintă caracteristicile şi structura datelor independent de modul în care acestea sunt memorate. Modelul conceptual al datelor, redat sub forma DER, stă la baza proiectării fizice a bazelor de date. Se consideră că modelarea conceptuală a datelor comportă cel puţin 4 DER [ Oprea, 1999]: 1. DER care să acopere datele necesare aplicaţiei proiectului; 2. DER pentru aplicaţia ce va fi înlocuită (nu la proiecte complet noi); 3. DER pentru întreaga bază de date, din care noua aplicaţie îşi va extrage datele; 4. DER pentru întreaga bază de date, din care aplicaţia curentă îşi extrage datele (nu la proiecte complet noi).

Modelarea logică a datelor este în strânsă legătură cu modelarea conceptuală a datelor, aceasta însemnând reprezentarea modului de organizare a datelor. De fapt, prin modelarea logică a datelor se urmăreşte atingerea a trei obiective [ Oprea, 1999]:

C.D.

SALĂ

MAT. DID. CURS

16

Page 18: Curs Baze de Date

• structurarea performantă a datelor; • obţinerea unui model logic al datelor din care să se poată realiza proiectul bazei de date

fizice; • realizarea unui model al datelor care să răspundă cerinţelor actuale de date, regăsite în

formulare şi rapoarte. Modelarea logică este un proces ascendent (BOTTOM-UP, de jos în sus). Este un proces

complex. În fiecare etapă a ciclului de viaţă al sistemelor, se găseşte câte o activitate specifică datelor. În procesul de modelare logică există patru faze esenţiale:

1. realizarea unui model logic al datelor, din perspectiva utilizatorului, privind aplicaţia; 2. contopirea tuturor perspectivelor utilizatorului, într-un model logic consolidat al datelor; 3. transformarea modelului conceptual al datelor (entitate - relaţie), într-un set de relaţii

normalizate; 4. compararea modelului logic al datelor cu modelul transformat al entităţii – relaţie şi

realizarea unui model logic final al datelor aplicaţiei.

4.2. MODELE DE BAZE DE DATE

În general, este unanim acceptată ideea după care, o bază de date are în vedere mai multe tipuri de structuri de reprezentare a informaţiilor, dintre care amintim:

- modelul relaţional; - modelul reţea; - modelul arborescent sau ierarhic; - modelul orientat pe obiecte.

Modelul relaţional – are la bază noţiunea de relaţie, definită ca o submulţime a produsului cartezian a unei liste finite de mulţimi, numite domenii. Elementele unei relaţii se numesc tupluri, iar numărul de domenii din produsul cartezian se numeşte aritatea relaţiei. De exemplu:

a 1, a 2, …, a k unde a i ∈ Di , i = 1, …, k (unde Di - domeniu) reprezintă un tuplu al unei relaţii de aritate k, în care a i este al i – lea element al tuplului.

De obicei relaţiile sunt reprezentate sub forma unor tabele în care fiecare rând reprezintă un tuplu şi fiecare coloană reprezintă valorile tuplurilor dintr-un domeniu dat al produsului cartezian. Relaţiile sunt, de fapt, o mulţime de funcţii definite pe o mulţime de atribute cu valori în reuniunea unor domenii, cu restricţia ca valoarea corespunzătoare fiecărui atribut să se afle în domeniul asociat acelui atribut.

Modelul relaţional presupune existenţa a două nivele, unul cu organizare tabelară şi celălalt cu organizare arborescentă, adică datele sunt memorate în structuri tabelare, iar acestea organizate într-un arbore alcătuit pe bază de relaţii între tabelele respective. În tabele coloanele sunt câmpuri, liniile sunt înregistrări, iar fiecare tabel este un fişier.

De obicei în cadrul bazelor de date relaţionale există un tabel “conducător” restul tabelelor fiind legate de acesta, direct sau indirect prin intermediul unui alt tabel.

Acesta este mecanismul de funcţionare al bazelor de date relaţionale, redus de fapt, la lanţuri de tabele, legate între ele.

La nivel fizic modelul relaţional este uşor de transpus. Relaţiile sunt implementate prin fişiere cu înregistrări; o înregistrare este un tuplu, iar un atribut este un câmp din înregistrare.

17

Page 19: Curs Baze de Date

Situaţia şcolară Cod student Facultate Specializare abs. lic. 4125 Ştiinţe Economice Finanţe – Contabilitate 1

Cod student A1 A2 A3 A4 A5 A6Mgen. Mlic.

4125

TABELE COMPONENTE

Cod student Nume/Prenume Vârstă Sex Data naşterii Adresă 4125 Pop Gh. 24 M 09.07.1982 Timişoara

An1 An2Cod student N1 D1 ...... Nn Dn N1 D1 ...... Nn Dn

4125 10.00 E 207

Tip disciplină Cod disciplină Denumire disciplină O F Opţ. E 207 Baze de date 1

NIVEL 1

Figura 4.1. Niveluri în modelul relaţional

În procesul de analiză a cerinţelor unui sistem pentru care se construieşte o bază de date, pot fi

identificate punctele de vedere ale unei mulţimi de utilizatori, care deseori sunt de ordinul zecilor sau sutelor, fiecare având în vedere anumite date din bază.

4125

Selectat de utilizator

Selectare automată

Selectare automată

...

...

T1 T2 T3

Figura 4.2. Înlănţuirea tabelelor în modelul relaţional Se pune problema proiectării modelului conceptual al datelor, pentru reprezentarea datelor cât

mai natural şi complet, în cea mai simplă formă şi cu cea mai mică redundanţă posibilă. În acest sens se ridică problema modului în care ar trebui combinate datele elementare pentru a forma relaţii.

O relaţie înseamnă un tabel de date ceea ce duce la concluzia că bazele de date relaţionale sunt clădite pe un grup de tabele legate între ele.

Pentru a deosebi anumite calităţi ale unor relaţii, s-a introdus clasificarea în forme normale. O relaţie este într-o formă normală dacă satisface o mulţime dată de constrângeri. Transformarea unei relaţii într-o mulţime de relaţii de un anumit tip, se numeşte normalizare, adică procesul de analiză al dependenţelor funcţionale dintre atribute.

Scopul normalizării este de a reduce complexitatea vederilor utilizatorilor la seturi de structuri mai mici şi mai stabile. De asemenea, eliminarea unor redundanţe, eliminarea unor anomalii de actualizare, realizarea unui proiect care să reprezinte cât mai fidel modelul real etc., sunt principalele obiective ale normalizării.

O relaţie este nenormalizată dacă există unul sau mai multe grupuri de date care se repetă. Se spune că o relaţie este în prima formă normală (1NF) dacă fiecărui atribut îi corespunde o valoare indivizibilă, deci orice valoare nu poate fi o mulţime sau un tuplu cu valori în anumite domenii şi nu

NIVEL 2

Tabel conducător

18

A d f ă lă

Page 20: Curs Baze de Date

pot să apară grupuri repetitive. De exemplu: pentru o relaţie în 1NF care conţine atributul data naşterii, se consideră valoarea asociată sub forma zz – ll – aa, care nu se poate descompune după ziua, luna sau anul corespunzător valorii respective.

O relaţie este în a doua formă normalizată (2NF), dacă ea se află deja în prima formă şi dependenţele funcţionale parţiale i-au fost extrase.

În a treia formă normalizată (3NF) o relaţie se găseşte dacă ea este în 2NF şi nu conţine dependenţe tranzitive. În Figura 4.3. este redat un exemplu de proces de normalizare.

În acest model, de exemplu, dacă nu s-ar face normalizarea, ar putea interveni următoarea situaţie: se înscriu cinci studenţi la o disciplină opţională; ei sunt exmatriculaţi la un moment dat; din baza de date va dispărea disciplina respectivă. În cazul normalizării, după 3NF, această situaţie este eliminată.

Medii anuale Situaţie şcolară An I An IICod stud.

Nume/ prenume Facultatea Spec.

absolvent licenţiat N D N D ...

Cod stud. Nume/ prenume Vârstă Sex Data naşterii Adresă

An I Cod stud. N1 D1 ...... Dn Dn. . .

1 NF

2 NF

Cod disciplină Denumire disciplină Tip disciplină Titular

3 NF

Figura 4.3. Exemplu de proces de normalizare

În mod normal este suficient ca relaţiile să fie reprezentate în 3NF pentru a putea spune că

sunt concepute cu atenţie şi că anomaliile nu-şi mai fac apariţia. Cu toate acestea, în anumite condiţii anomaliile încă îşi mai fac simţită prezenţa, ceea ce a dus la continuarea paşilor normalizării – este vorba de 4NF şi 5NF.

4.3. ELEMENTE DE PROIECTAREA FIZICĂ A BAZELOR DE DATE RELAŢIONALE

Proiectarea fizică a bazelor de date relaţionale îşi propune să treacă de la descrierea logică a

datelor la cea fizică, de fapt de stocare a acestora, concretizându-se în specificaţii tehnice folosite ulterior de programatori prin crearea bazelor de date.

Proiectarea bazelor de date are două obiective: a) transpunerea relaţiilor dintr-un model de reprezentare logică a datelor într-un proiect. Acest proiect va conţine formatele sub care vor fi reprezentate atributele, modul de grupare a acestora, alegerea modului de organizare a fişierelor etc., b) selectarea tehnologiilor folosite pentru stocarea datelor, ce include funcţii ale sistemului de operare, numite metode de acces şi sistem de gestiune al bazelor de date.

Informaţiile necesare în vederea proiectării fizice a bazelor de date pot fi grupate în: - relaţii normalizate;

19

Page 21: Curs Baze de Date

- definirea atributelor; - specificarea momentului şi a locului utilizării datelor; - timpul de răspuns; - descrierea tehnologiilor de creare a bazelor de date.

Pe baza acestor informaţii vor fi luate o serie de decizii cu implicaţii directe în eficienţa

aplicaţiei pentru care se proiectează bazele de date. Aceste decizii se referă la: • tipul datelor, ce presupune stabilirea limitelor maxime şi minime, ca valoare, şi alţi

parametrii, avându-se în vedere minimizarea spaţiului de stocare şi maximizarea integrităţii datelor; • structura înregistrărilor, ce presupune gruparea optimă a atributelor din modelul logic, în

înregistrări; • organizarea fişierelor şi protecţia informaţiilor; • selectarea suporturilor pentru stocarea datelor, ce va determina modul de organizare al

fişierelor şi modul de acces la datele conţinute. Un punct important în proiectarea fizică îl reprezintă stabilirea structurii înregistrărilor.

Câmpul este cea mai mică unitate de reprezentare a datelor. De regulă, fiecare atribut va fi reprezentat de unul sau mai multe câmpuri.

Câmpurile vor conţine: 1. Numele câmpului, cuvânt utilizator pentru identificarea unică a unui câmp. 2. Tipul datei, modalitate de codificare detaliată pentru reprezentarea datelor în memorie. De

exemplu: DECIMAL (m,n) – reprezentarea numerelor prin m cifre în total şi n cifre la partea zecimală; DATE – reprezentarea datei calendaristice sub diverse forme etc. Mai multe câmpuri stocate în zone adiacente de memorie formează o înregistrare.

Înregistrările nu vor constitui zone continue pe memoria externă. Unitatea de schimb M.I. – M.E. este blocul de înregistrări sau pagina.

Înregistrările pot avea lungime fixă sau variabilă. În cazul lungimii fixe a înregistrărilor, se apelează la tehnici speciale de poziţionare, atât la plasarea pe suport cât şi la regăsirea lor.

În al doilea caz (lungimea variabilă), nu se mai poate discuta despre o regulă atât de riguroasă de plasare a înregistrărilor pe suport. Se recomandă descompunerea relaţiilor obţinute în urma proiectării logice, în două părţi: una care să reunească câmpurile de lungime fixă şi una cu cele de lungime variabilă.

Din punct de vedere fizic, un fişier este o zonă alocată pe un suport de memorie externă pe care se stochează înregistrările fizice între care există legături. În funcţie de tipul datelor stocate, de fapt, de gradul lor de menţinere în timp, fişierele pot fi:

- fişiere permanente; - fişiere variabile; - fişiere de stare, fiecare dintre ele păstrând datele care le dau numele.

În acest context, baza de date este un set fişiere intercorelate. Legăturile respective sunt reprezentate prin intermediul legăturilor dintre relaţii, redate sub forma modelelor conceptuale şi logice a datelor.

4.4. MODUL DE LUCRU CU O BAZĂ DE DATE RELAŢIONALĂ

Prima operaţie ce trebuie efectuată în realizarea unei baze de date este crearea acesteia,

practic crearea fişierelor componente. Crearea unui fişier presupune memorarea structurii tabelului aferent în zona rezervată antetului:

Antet de fişier Date …….

20

Page 22: Curs Baze de Date

Odată fişierul creat, asupra sa se pot efectua diverse operaţii, după care fişierul trebuie închis.

Dacă există mai multe tabele, este necesară deschiderea simultană a tuturor fişierelor, executarea operaţiilor dorite şi, în final, închiderea lor. Deschiderea şi închiderea fişierelor se realizează prin comenzi specifice S.G.B.D. – ului corespunzător.

În momentul deschiderii S.G.B.D. – ul alocă o zonă de M.I. pe care o va folosi pentru controlul operaţiilor executate (zonă de lucru, work area).

Accesul la date se face la nivel de înregistrare, întotdeauna o înregistrare fiind curentă. Aceasta este localizată prin intermediul “indicatorului de înregistrare”, adică o zonă de memorie care conţine numărul înregistrării curente. Acest indicator (variabilă asociată tabelei) există atât timp cât fişierul este deschis. Indicatorul de înregistrări poate fi modificat prin comenzile S.G.B.D. – ului.

Operaţia de creare se execută o singură dată, atunci când se stabileşte de fapt structura tabelului. Realizarea structurii presupune precizarea fiecărui câmp dintr-o înregistrare şi anume:

numele câmpului identificator, prin care se va realiza accesul la valoarea conţinută; tipul câmpului, adică tipul de dată ce va fi stocată în câmpul respectiv; lungimea câmpului, ce semnifică numărul de caractere pe care îl poare ocupa data; numărul de zecimale pentru câmpurile de tip numeric.

După stabilirea structurii se poate face încărcarea cu date. În ambele situaţii operaţia se termină odată cu închiderea fişierului.

Odată creată baza de date, se poate trece la lucrul cu aceasta. Sunt considerate operaţii de bază consultarea şi actualizarea bazei de date.

Consultarea constă în preluarea unor date din bază şi utilizarea acestora (diverse operaţii matematice, afişarea la imprimantă, indexări, sortări etc.).

Actualizarea bazei (aducerea la zi) constă în operaţii de: adăugare - prin care se pot adăuga date în bază (la nivel de înregistrare); modificare – prin care se poate schimba conţinutul diverselor câmpuri; ştergere – prin care pot fi eliminate date din bază, prin ştergerea înregistrărilor

corespunzătoare. Desigur, toate aceste operaţii sunt posibile între momentele deschiderii, respectiv închiderii

bazei de date.

21

Page 23: Curs Baze de Date

V. ELEMENTE DE ADMINISTRAREA ŞI PROTECŢIA BAZELOR DE

DATE

5.1. SISTEMUL DIRECTOR/DICŢIONAR DE DATE

Din totalul cheltuielilor generate de sistemul informaţional al unei întreprinderi, o mare parte revine administrării şi protecţiei bazelor de date incluse. Aceste operaţii încep odată cu instalarea sistemului. Un instrument important pentru administrarea şi protecţia bazelor de date este sistemul director/dicţionar de date (D/D).

Un sistem D/D este utilizat în scopul controlării accesului la date, în vederea stabilirii costurilor pentru dezvoltarea şi menţinerea bazelor de date şi a prevenirii efectelor datorate modificărilor în configuraţia hard şi în soft – ul aferent. Un sistem D/D conţine o bază de date numită director/dicţionar şi conţine metadate, definite ca date despre date. Metadatele descriu utilizatorii care au acces la date (pentru a controla accesul). Metadatele controlează calitatea datelor prin procesele care la manipulează. De asemenea controlează schimbările care au loc la nivel hard şi soft. De un sistem D/D pot beneficia direct cel puţin şase tipuri de utilizatori – utilizatori administratori de date, administratorii bazelor de date, analiştii de sistem şi programatorii, operatorii şi auditorii de date. Structura logică a unui sistem D/D poate fi reprezentată folosind entităţi, atribute şi relaţii. Fiecare entitate poate fi descrisă de numeroase atribute, care caracterizează tipul entităţii. Un D/D tipic conţine, în general, entităţile ce descriu:

o structura bazei de date fizice; o structurile fişierelor; o activităţi: interogări, rapoarte etc.; o utilizatori; o echipament: calculatoare, linii de comunicaţie etc.; o programe.

De asemenea, într-un astfel de model ar mai trebui adăugate cele trei tipuri de scheme: conceptuală, internă şi externă. Sistemele D/D au un mare potenţial ca şi instrumente pentru gestionarea resursei dată. Sistemele actuale nu sunt folosite la întreaga lor posibilitate întrucât ele nu oferă toate funcţiile posibile şi utilizatorii nu folosesc toate facilităţile. Posibilitatea de a gestiona metadate este la fel de importantă ca şi gestionarea datelor, în sensul obţinerii independenţei, integrităţii, accesibilităţii, partajabilităţii, securităţii, performanţei şi administrării resursei dată.

5.2. FUNCŢII PRINCIPALE ALE SISTEMULUI DIRECTOR/DICŢIONAR DE DATE

Un D/D are trei funcţii principale: a) glosar; b) catalog; c) controler. a) Glosarul suportă atât planificarea datelor, cât şi dezvoltarea datelor. Un glosar: - încarcă şi actualizează conţinutul unui D/D; - raportează conţinutul unui D/D. Această raportare poate conţine toate tipurile de înregistrări dintr-o mulţime de baze de date; - analizează conţinutul unui D/D, depistând efectele schimbării într-o parte a sistemului faţă de celelalte părţi; - creează, menţine şi raportează noile structuri D/D, atunci când se foloseşte extensibilitatea.

22

Page 24: Curs Baze de Date

b) Un catalog generează instrucţiuni în limbajul de definire a datelor şi logica standard de manipulare a datelor. Această funcţie este determinantă în controlul efectelor modificărilor şi al costurilor dezvoltării în mediul de date. Cataloagele sunt utile, deci, pentru dezvoltarea şi menţinerea sistemelor. c) Controler – ul direcţionează execuţia programelor. De asemenea, transformă cererile de date din forma schemei externe în forma schemei conceptuale şi apoi în forma schemei interne şi invers. Controlerele sunt valabile, mai ales, într-o reţea de calculatoare cu mai multe baze de date. Administrarea şi protecţia bazelor de date sunt funcţii complexe, care revin administratorului bazei de date. Astfel, el organizează baza de date după anumite metodologii, realizează schema conceptuală şi coordonează proiectarea bazei de date. SGBD – urile, la care se adaugă sistemul D/D, oferă instrumentele şi utilitarele necesare. De asemenea, administrarea are rolul de a autoriza accesul la date, de a reface baza de date în caz de incidente, de a realiza o serie de analize statistice etc.

5.3. PROTECŢIA DATELOR

Protecţia datelor reprezintă, de fapt, un ansamblu de măsuri necesare pentru asigurarea integrităţii şi securităţii datelor. Măsurile necesare sunt asigurate în mare parte de SGBD plus sistemul D/D, dar şi prin alte instrumente construite de proiectantul bazei de date şi administratorul acestuia. Protecţia şi securitatea datelor presupune luarea unor măsuri pentru reconstituirea datelor precedente sau prelucrate eronat, precum şi interzicerea accesului neautorizat prin criptare. Reconstituirea datelor este asociată, de cele mai multe ori, cu existenţa fişierelor de tip back – up (copii de siguranţă), dar există şi posibilitatea reconstituirii fără acest tip de fişiere. Reconstituirea pe baza back-up-urilor este denumită reconstituire înainte (forward recovery). Reconstituirea înainte se realizează, de obicei, automat atunci când se execută unele operaţii de salvare. Reconstituirea fără fişiere back-up este denumită reconstituire înapoi (backward recovery). În acest caz se apelează la fişiere cu rol special care conţin un istoric, în ordine cronologică, al schimbărilor şi accesărilor efectuate asupra bazelor de date. Fişierele back-up şi cele speciale, numite probe de auditare, vor servi la reconstituirea fişierelor distruse şi la verificarea corectitudinii operaţiilor de actualizare. Criptarea datelor se referă la asigurarea transformării datelor într-o formă neintelegibilă pentru toţi receptorii, excluzându-l pe cel autorizat. Criptografia este ştiinţa scrierii secrete. Există două tipuri de scrieri: prin coduri şi prin cifruri. Într-un cod, un simbol sau un şir de simboluri poate avea semnificaţia unui mesaj complet. Într-un cifru există o corespondenţă unu-la-unu între simbolurile mesajului original şi simbolurile formei echivalente din scrierea secretă. Criptarea poate fi realizată prin componente speciale ale SGBD – urilor şi chiar a sistemelor de operare.

23

Page 25: Curs Baze de Date

VI. BAZE DE DATE ACCESS

6.1. PREZENTAREA APLICAŢIEI MICROSOFT ACCESS Programul ACCESS este o componentă a pachetului de programe MICROSOFT OFFICE şi

este destinat creării şi gestionării bazelor de date puternice şi flexibile. În general, se poate considera o foaie de calcul tabelară ca fiind o bază de date, deoarece

coloanele devin câmpuri, liniile devin înregistrări, iar întregul tabel devine un fişier – exemplu – EXCEL. De fapt, aşa începe proiectarea unei baze de date.

Superioritatea evidentă a bazelor de date este dată de implementarea sistemului de relaţii. Într-o bază de date relaţională, elementele cheie ale datelor dintr-un tabel sunt relaţionate cu elemente corespunzătoare din alte tabele.

O astfel de “legare” a tabelelor permite bazelor de date să asigure mai multe calităţi decât orice foaie de calcul obişnuită, cum ar fi asigurarea integrităţii datelor introduse şi actualizarea dinamică a datelor (modificarea datelor într-un tabel determină modificarea corespunzătoare a datelor din tabelele componente ale bazei de date).

Spre deosebire de foaia de calcul tabelar, pentru a păstra relaţiile dintre toate tabelele bazei de date, trebuie transferat câmpul care conţine cheia în toate tabelele componente (de exemplu, COD STUD.). Acest mod de lucru a dat şi numele bazelor de date relaţionale cu care se ocupă programul ACCESS.

Extensii de fişiere utilizate sub incidenţa aplicaţiei ACCESS: mdb – bază de date ACCESS; Idb – fişier index al unei baze de date ACCESS, generat automat; mda – bază de date sistem ACCESS (informaţii de securitate); mde – aplicaţie de baze de date ACCESS, compilată; mdz – şablon ACCESS.

6.2. FEREASTRA DATABASE

După lansarea în execuţie a aplicaţiei ACCESS afişează o fereastră de deschidere în vederea

unui dialog cu utilizatorul, ce apare în zona de lucru a ferestrei ACCESS, specifică WINDOWS: - bara de titlu; - bara de meniuri; - bara cu unelte standard; - zona de lucru; - bara de stare.

În zona de lucru se va afişa fereastra Database – cel mai des utilizat instrument pentru crearea şi administrarea bazelor de date. Această fereastră conţine următoarele butoane pentru, modul de lucru Database;

Tables (Tabele) – cuprinde tabelele bazei de date în care vor fi stocate datele cu înregistrări, care corespund liniilor tabelului.

Queries (Interogări) – reprezintă cererile adresate tabelului pentru extragerea sau organizarea datelor sub o formă anumită şi afişarea acestora. Aceste cereri sunt proiectate de obicei prin intermediul unei interfeţe grafice.

Forms (Formulare) – reprezintă o interfaţă pentru introducerea datelor în bazele de date sau pentru vizualizarea acestora pe ecran. Formularele sunt folosite ca principală interfaţă cu utilizatorul, prin mascarea (maparea) tabelelor cu informaţii brute.

Reports (Rapoarte) – asigură posibilitatea extragerii datelor din tabele şi de formatare, pentru afişarea la imprimantă.

24

Page 26: Curs Baze de Date

Macros (Macroinstrucţiuni) – conţin o serie de comenzi pentru a creea meniuri utilizator şi pentru a executa operaţii de prelucrare simple.

Modules (Module) – conţin una sau mai multe subrutine sau funcţii (elaborate în VBA – Visual Basic for Applications – care este limbajul de programare pentru toate aplicaţiile MS OFFICE).

Acţionarea oricărui buton va determina afişarea pe ecran a listei cu toate obiectele existente, de tipul respectiv. Prin selectarea unuia se poate începe lucrul utilizând butoanele din partea dreaptă (verticale) a ferestrei.

Open – deschiderea obiectului selectat, adică “vizualizare”, pentru formulare, tabele şi rapoarte, “rulare” (execuţie) pentru macroinstrucţiuni sau interogări.

Design – “editarea” obiectului selectat. New – “crearea” unui obiect nou de tipul utilizat.

6.3. CREAREA UNEI BAZE DE DATE

Modul de creare a oricărui tip de obiect nou este unul simplu, prin intermediul ferestrei

Database sau alte instrumente. Crearea unei baze de date - Tables → New → Table Wizard (program expert pentru crearea

tabelelor) →Sample Tables (tabele model) – presupune alegerea unui model de tabel din cele peste 20 oferite de ACCESS, model ce corespunde cerinţelor noii baze de date.

În lista Sample Fields (câmpuri model) se vor selecta câmpurile dorite în tabel. Terminarea aplicaţiei se va face prin intermediul butonului Finish. Afişarea pe ecran a noului tabel marchează terminarea operaţiei de creare; închiderea tabelului va determina apariţia acestuia în lista Tables.

O altă posibilitate pentru crearea unei baze de date este prin intermediul programului expert Database Wizard (File → New →Databases); programul afişează o listă cu bazele de date predefinite, din care se poate selecta oricare (sau prin selectarea din caseta de dialog MS ACCESS se selectează Database Wizard →Ok).

Cea mai simplă modalitate de creare a unui tabel este utilizarea modului de afişare Design (Tables → Design ). Se afişează o fereastră ce conţine grila de câmpuri (Field Grid) unde se vor introduce numele şi tipul câmpurilor din înregistrare. În partea de jos va apare panoul pentru proprietăţile câmpurilor (Field properties) ce permite modificarea proprietăţilor fiecărui câmp din tabel.

Tipurile de date utilizate în ACCESS sunt: • Text – şir de caractere (maxim 50); • Memo – şir de caractere, dar cu lungime nelimitată; • Number (numeric) – un număr întreg sau fracţionar (virgulă flotantă); • Date/Time – dată calendaristică sau ora în diverse formate; • Currency (monetar) – un număr formatat cu două zecimale, care foloseşte virgula ca

separator între ordinele de mărime şi paranteze ce încadrează valorile negative; • Auto Number – un număr întreg ce este incrementat automat pe măsură ce sunt introduse

noi înregistrări în tabel; • Yes/No – dată de tip boolean pentru a marca valoarea logică adevărat/fals; • OLE Object – un alt tip de dată cum ar fi o imagine, sunet, de obicei altceva decât texte şi

numere; • Hiperlink (hiperlegături) – o referinţă la un obiect extern, care atunci când este selectată,

deschide fişierul corespunzător în modul de afişare corespunzător; • Lookup Wizard – iniţiază o interogare în vederea extragerii unei valori dintr-un alt tabel.

25

Page 27: Curs Baze de Date

Pentru fiecare tip de dată (câmp), pot fi modificate proprietăţile utilizând opţiunile prevăzute în caseta Field Properties, butonul General. Se mai pot utiliza şi alte programe expert pentru crearea bazelor de date:

Datasheet View – este un tabel “gol” pentru introducerea de date. Dacă tipul de date nu a fost precizat prin Design, ACCESS le intuieşte singur;

Design View – este o grilă în care pot fi selectate definiţiile datelor dintr-o listă (nu se introduce nici o valoare);

Import Table – oferă posibilitatea importului unui tabel dintr-un fişier ACCESS sau o altă aplicaţie de baze de date;

Link Table – la fel ca opţiunea anterioară, dar datele externe rămân în fişierul extern. Un rol important în cadrul bazelor de date şi de care trebuie ţinut cont încă de la creare, îl au

câmpurile cheie şi index. Cele două sunt diferite. Ele simplifică extragerea datelor din baza de date. Datele dintr-un câmp cheie trebuie să fie unice (distincte) în toate înregistrările. Prin aceasta baza de date nu poate confunda înregistrările între ele. Definirea unui câmp cheie se face prin modul Design asupra tabelului şi cu ajutorul căsuţei din stânga numelui câmpului, după care se acţionează butonul Primary Key. Se pot utiliza cheile compuse, alcătuite din două sau mai multe câmpuri, determinând construcţii unice. Un index dintr-o bază de date are acelaşi rol ca un index dintr-o carte. El este o referinţă încrucişată între datele din anumite câmpuri şi locaţiile lor din tabel, asigurând astfel accelerarea procesului de căutare a înregistrărilor.

Utilizarea unui index se justifică dacă tabelul este foarte mare sau calculatorul gazdă este mai lent. Câmpurile cheie sunt indexate automat şi în majoritatea cazurilor acest lucru este suficient.

Stabilirea câmpurilor index se realizează în modul Design, cu butonul Indexes ce afişează o fereastră de dialog în care se vor specifica câmpurile şi ordinea de sortare (crescătoare sau descrescătoare).

O problemă foarte importantă la crearea bazelor de date este stabilirea sistemului de relaţii între tabele ce se realizează prin opţiunea Relationships din meniul Tools. Vor fi specificate relaţiile dorite prin trasarea săgeţilor corespunzătoare.

Relaţiile ce pot fi stabilite sunt de trei tipuri: 1.One-to-many (unu-la-mai mulţi) – cheia din tabelul principal poate să apară de mai multe

ori în tabelul secundar; 2.One-to-one (unu-la-unu) – cheia din tabelul principal poate să apară o singură dată în

tabelul secundar; 3.Many-to-many (mai mulţi-la-mai mulţi) – două tabele au o relaţie de tip one-to-many cu un

al treilea tabel, stabilind astfel între ele o relaţie many-to-many. Un instrument foarte util, recomandat spre a fi folosit după creare bazei de date, este

programul expert Table Analyzer Wizard. El are rolul de a analiza structura bazei de date şi de a face recomandări pentru corectarea acesteia. Se lansează în execuţie prin selectarea elementului Analyze din meniul Tools.

6.4. UTILIZAREA FORMULARELOR

Formularele sunt utilizate pentru introducerea, vizualizarea etc., a datelor într-o bază de date.

Ele pot fi imaginate ca nişte ecrane plasate în faţa tabelelor. Aceste ecrane permit vizualizarea unor elemente ale tabelelor din fundal, în momentul şi sub forma stabilită de proiectantul formularului.

Formularele ACCESS sunt compuse din secţiuni şi controale care reprezintă obiectele vizuale de pe formular. Formularele pot avea una până la cinci secţiuni:

Detail (Detalii) – este secţiunea în care apar datele pentru fiecare înregistrare a bazei de date;

26

Page 28: Curs Baze de Date

Form Header (Antetul formularului) – apare în partea de sus a formularului şi va conţine informaţii ce nu se modifică de la o înregistrare la alta sau instrucţiuni despre modul de utilizare al formularului;

Form Footer (Subsolul formularului) – apare în partea de jos a formularului şi va conţine informaţii despre data şi ora de creare a formularului, totaluri etc.;

Page Header (Antetul de pagină) – apare sub antetul formularului şi este foarte util la rapoarte pentru informaţii ce trebuie să apară în partea de sus a ecranului, pe fiecare pagină dintr-un formular mai lung;

Page Footer (Subsolul de pagină) – este similar cu Form Footer, dar cu informaţii referitoare la pagină.

Aspectul secţiunilor pe ecran depinde de modul în care conlucrează datele şi formularul. Crearea unui formular se realizează prin acţionarea butonului FORMS, după care NEW. Pe ecran va apare o casetă de dialog pentru specificarea metodei dorite. Aceste metode sunt:

Design Wiew (modul de afişare Design) - pe ecran apare un formular necompletat şi oferă butoane pentru controale şi diverse funcţii speciale.

Form Wizard (program expert pentru formulare) – oferă un set de casete de dialog cu privire le provenienţa datelor, modul de aranjare în formular, imagine grafică pentru fundal etc.

Auto Form (formular automat) – creează un formular simplu corespunzător unui singur tabel sau unei singure interogări.

Chart Wizard (program expert pentru reprezentări grafice) – se utilizează pentru reprezentarea grafică a datelor ce vor fi specificate într-o serie de casete de dialog.

Pivot Table Wizard (program expert pentru tabele pivot) – permite transformarea unui tabel într-o foaie de calcul EXCEL.

Controalele au la bază programe scrise în Visual Basic. Ele sunt acele elemente din formulare prin intermediul cărora acestea devin funcţionale. Există aproximativ 12 controale principale utilizate în proiectarea formularelor, dar pot fi utilizate şi altele. Controalele se pot realiza în modul de afişare Design cu opţiunea: Database → View → Toolbox. Va apărea o casetă cu instrumente corespunzătoare controalelor posibile ce pot fi plasate pe formular (etichetă, grup de opţiuni, casetă combinată, dreptunghi, linie etc.)

Există posibilitatea creări unui formular principal (switchboard) ce uşurează ajungerea la secţiunile bazei de date din care se doreşte vizualizarea şi utilizarea unor informaţii fără să se poată modifica obiecte şi informaţii ce ar afecta integritatea bazei de date. Într-un formular principal pot fi incluse toate opţiunile de navigare şi utilitarele necesare utilizatorilor aplicaţiei. Realizarea unui astfel de formular se poate face prin opţiunea Switchboard manager din meniul Tools.

În concluzie, formularele din ACCESS permit proiectanţilor de baze de date să construiască o altă “faţă” pentru ceea ce se găseşte în fundal, cu alte cuvinte, un mod mai plăcut de a introduce sau a afişa informaţii dintr-o bază de date.

6.5. ADMINISTRAREA DATELOR PRIN INTERMEDIUL INTEROGĂRILOR

Prin intermediul programului ACCESS, utilizatorul are la dispoziţie o serie de metode de actualizare şi extragere a informaţiilor dintr-o bază de date. Aceste metode au la bază conceptul de interogare (query); interogările sunt programe care comandă (realizează) extragerea, actualizarea datelor dintr-un tabel. Interogările pot fi independente sau incluse în formulare şi /sau rapoarte, toate însă, fiind construite, în general, în acelaşi mod.

Interogarea reflectă mecanismul bazei de date, o cerinţă de prelucrare a utilizatorului fiind executată ori de câte ori ea este formulată. Interogarea poate extrage date dintr-un tabel şi creează obiecte similare tabelului (ca aspect şi funcţionare).

Pot fi utilizate mai multe tipuri de interogări:

27

Page 29: Curs Baze de Date

• Interogări Select (de selectare) – au ca rezultat, în majoritatea cazurilor, subtabele din care sunt selectate datele.

• Interogări Delete (de ştergere) şi interogări Update (de actualizare) – aceste interogări permit ştergerea, respectiv modificarea unei anumite înregistrări dintr-un tabel existent.

• Interogări Append (de adăugare de înregistrări) şi Make-Table (de creare tabel) – aceste interogări permit adăugarea de noi înregistrări în tabelul specificat, respectiv creează tabele noi generând înregistrări pentru acestea.

• Interogări Crosstab (încrucişate) – centralizează datele extrase din tabele, combinând datele din mai multe câmpuri sursă în unul sau mai multe câmpuri destinaţie (de ieşire).

ACCESS stochează şi rezolvă problema interogărilor în două moduri: a) prin grila QBE – Query By Example; b) prin intermediul limbajului SQL – Structured Query Language.

Ambele moduri se referă la aceleaşi interogări, dar în forme total diferite. Primul mod, QBE (interogare prin exemplu) reprezintă formatul implicit ACCESS pentru

crearea interogărilor. În fereastra Database se acţionează butonul Queries, după care New, rezultatul fiind afişarea

pe ecran a casetei de dialog New Query ce conţine câteva opţiuni pentru crearea interogărilor. Se selectează opţiunea Design View – Ok pentru a deschide caseta de dialog Show Table (afişează tabel) şi a afişa grila QBE. ACCESS aşteaptă selectarea sursei de date care poate fi: tabele, cât şi interogări existente în baza de date. După selectarea sursei de date caseta de dialog Show Table poate fi închisă.

Grila QBE este formată din două secţiuni: în partea de sus secţiunea destinată sistemului de relaţii, Table Relationships; în partea de jos secţiunea destinată grilei interogării, Query Grid.

În prima secţiune, Table Relationships, apare sistemul de relaţii al sursei de date relatate

anterior. Ea va fi goală dacă nu s-a selectat nimic. În orice moment pot fi adăugate noi surse de date. Grila interogării conţine şase rânduri. Pot fi completate direct toate rândurile, unele operând

ca nişte casete derulante cu diverse valori, iar altele pot fi completate cu ajutorul generatorului de expresii (Expression Builder).

Rândurile din grilă sunt utilizate astfel: Field (câmp) – intrarea în fiecare celulă din acest rând reprezintă numele unui câmp din

sursa de date selectată, care va fi luată în considerare. Table (tabel) – este sursa de date în care se găsesc câmpurile specificate din Field; poate

fi un tabel sau o altă interogare. Sort (sortare) – reprezintă modul în care vor fi sortate înregistrările ce vor rezulta din

interogare (crescător/descrescător). Show (afişare) – rândul este valid automat indicând că datele din câmpul selectat trebuie

afişate ca parte a rezultatului interogării. Criteria (criterii) – un şir de caractere introdus indică faptul că, câmpul corespunzător

trebuie să fie identic cu şirul introdus pentru ca datele să fie incluse în rezultat. Or (sau) – orice şir de caractere introdus face parte din criteriile de selecţie pentru câmpul

corespunzător. Pentru executarea unei interogări create se acţionează butonul Run de pe bara cu unelte

standard. Rezultatul execuţiei apare într-o fereastră, în modul de afişare Datasheet.

6.6. REALIZAREA RAPOARTELOR

28

Page 30: Curs Baze de Date

În situaţia în care utilizatorul doreşte afişarea la imprimantă a diverselor date dintr-o bază de date, rapoartele ACCESS oferă instrumentele necesare pentru aşezarea în pagină a numerelor şi a şirurilor de caractere. Acest lucru se realizează relativ simplu, având la dispoziţie o mulţime de programe expert şi opţiuni de formatare automată.

În general, informaţiile ce vor apare în rapoarte sunt complexe, ridicându-se problema aranjării datelor în aşa fel încât să fie vizibile în totalitate. Un avantaj, în acest sens, al ACCESS – ului, este că majoritatea tehnicilor şi controalelor pentru formulare rămân valabile.

Rapoartele şi formularele sunt asemănătoare, astfel că unele formulare de dimensiune mică pot fi inserate direct în rapoarte şi invers (click buton drept pe numele formularului sau raportului în fereastra Database Save As Form sau Save As Report din meniu).

Pentru a crea un raport nou se poate utiliza instrumentul AutoReport. Acest instrument oferă posibilitatea tipăririi (afişării) unor date din sursa de date, într-un format organizat, având însă un aspect nefinisat, semănând cu nişte schiţe. Se utilizează în cazurile în care timpul avut la dispoziţie pentru realizarea unui raport este foarte mic. În fereastra Database →Reports →New apare caseta de dialog NewReport . Se precizează sursa de date, după care se alege timpul de raport Columnar sau Tabular.

În primul caz (afişare pe coloană) câmpurile din sursa de date vor fi aranjate pe o coloană. În al doilea caz (afişare tabelară) numele câmpurilor vor fi afişate pe orizontală în partea de sus a paginii şi datele pe coloane. Raportul va fi afişat pe ecran în modul PrintPreview.

Un raport cu un aspect mai plăcut se poate realiza cu ajutorul programului expert Report Wizard (în fereastra Database → Reports → New apare caseta de dialog NewReport ReportWizard). Urmează apoi etapele de selectare a sursei de date, de specificare a câmpurilor ce vor apare în raport, de determinare a grupurilor de date (în urma sortării) şi de aplicare a unui format de prezentare stabilit. Există şi posibilitatea de a include totaluri (executate automat), informaţii de centralizare şi de salvare a rezultatelor obţinute.

Rapoartele pot fi create şi manual, în cazul unor rapoarte deosebite (Reports → New → Design View) Pe ecran va apare o fereastră de proiectare Report care conţine o grilă. Este de fapt un raport în faza de început. Punctele formează o grilă care ajută la eliminarea, ajustarea sau alinierea controalelor. Dacă în noul raport nu este afişată grila, trebuie afişată opţiunea View Grid. La dispoziţia utilizatorului este o casetă de instrumente Toolbox. Aici sunt prezentate cele mai uzuale controale ce pot fi utilizate prin intermediul butonului corespunzător.

Ca şi formularele, rapoartele conţin cele trei secţiuni prestabilite: Page Header (antet de pagină), Detail (zona de detalii), Page Footer (subsol de pagină). Zona de detalii va cuprinde controalele de date, iar în antet şi subsol pot fi trecute titluri, numere de pagină etc.

Un raport mai poate conţine două secţiuni opţionale: Report Header (antet de raport) şi Report Footer (subsol de raport) care pot fi obţinute prin View → Report Header/Footer. Aceste secţiuni apar numai la începutul respectiv sfârşitul raportului. Pentru a selecta o sursă de date pentru crearea unui raport, ACCESS oferă posibilitatea selectării acesteia modificând proprietatea Record Source (View → Properties). ACCESS deschide o casetă derulantă ce conţine toate tabelele şi interogările din baza de date curentă.

6.7. GENERATOARELE DE MACROINSTRUCŢIUNI ŞI MODULE

Macroinstrucţiunile reprezintă cea mai simplă metodă de programare în majoritatea

aplicaţiilor MS Office, oferind o modalitate de efectuare a unor operaţii obişnuite într-o aplicaţie de baze de date, cu minimum de efort din partea utilizatorului. De fapt, în ACCESS se specifică un proces (o acţiune) care ulterior se va salva într-o macroinstrucţiune.

Printr-o macroinstrucţiune se poate executa o acţiune simplă ca: deschiderea unui formular, execuţia rapoartelor etc., dar şi o succesiune de astfel de acţiuni (import-export de tabele, alte obiecte, redimensionări de ferestre etc.).

29

Page 31: Curs Baze de Date

Modulele sunt, de fapt, programe scrise în limbajul VBA. Ele sunt dedicate unor operaţii complexe, care presupun parcurgerea mai multor etape sau necesită o secvenţă de cod pentru luarea unor decizii.

Dacă tabelele, formularele, interogările şi rapoartele reprezintă componentele principale ale unei baze de date ACCESS, modulele constituie liantul care le uneşte. Aceste grupuri de funcţii şi submulţimi asigură funcţionalităţile unei baze de date; în majoritatea aplicaţiilor cu baze de date există foarte multe acţiuni care nu se văd pe ecran: calcule, validare de date, efecte grafice, comunicaţia între obiecte etc.

În general, macroinstrucţiunile sunt mai lente decât modulele echivalente, deoarece macroinstrucţiunile sunt interpretate, adică în momentul execuţiei sunt citite linie cu linie şi transformate în cod maşină, pe când modulele sunt compilate, adică ele sunt deja în cod maşină.

Pentru crearea macroinstrucţiunilor se procedează: Macros → New apare fereastra Macro Builder (generatorul de macrouri).

Funcţiile executate de o macroinstrucţiune sunt numite acţiuni; acestea sunt predefinite de ACCESS şi efectuează o serie de operaţii, de la cele mai simple (producerea unui semnal sonor) până la transmiterea unui obiect ACCESS la un destinatar, prin poşta electronică. Dezavantajul generatorului este incapacitatea sa de a oferi mecanisme de control ale fluxului. După executarea unei acţiuni programul trece direct la linia următoare; nu se pot face salturi la subrutine şi nu se pot executa instrucţiuni de ciclare.

Modulele ACCESS sunt de două tipuri, dar butonul Modules oferă acces la unul singur. Modulele standard sunt programe de sine stătătoare, care au nume şi pot exista independent de

orice obiect din baza de date. Toate aceste module apar în pagina Modules. Modulele de clasă sunt asociate cu alte obiecte din baza de date, cum ar fi controale, formulare, rapoarte. Pentru vizualizarea unui modul de clasă: modul de afişare Design → View → Code.

Pentru a crea un modul se utilizează fereastra Code Builder, ce conţine mai multe secţiuni în care se realizează programul. Vizualizarea ferestrei: prin deschiderea modului Utility Functions (funcţii utilitare) în modul de afişare Design.

30

Page 32: Curs Baze de Date

VII. PREZENTAREA APLICAŢIEI MICROSOFT ACCESS, TABELE

7.1. LANSAREA ÎN EXECUŢIE A APLICAŢIEI MICROSOFT ACCESS

Aplicaţia Microsoft Access se foloseşte pentru gestionarea bazelor de date Access şi se remarcă prin uşurinţa învăţării utilizării şi prin instrumentele puternice, uşor de folosit atât de dezvoltatorii profesionişti, cât şi de utilizatorii mai puţin experimentaţi. După instalarea pachetului de aplicaţii Office, aplicaţia Microsoft Access, se poate lansa prin una din următoarele metode:

1. de la butonul Start: selectând succesiv All Programs Microsoft Office Microsoft Office Access;

2. prin dublu-click pe icoana asociată aplicaţiei care se poate găsi pe desktop; 3. deschizând un fişier cu extensia .mdb (o bază de date existentă).

Lansarea în execuţie are ca rezultat afişarea ferestrei aplicaţiei Microsoft Access (vezi Figura 7.1), cu observaţia că, dacă se foloseşte cea de a treia metodă, se va afişa şi fereastra bazei de date conţinută de fişierul cu extensia .mdb. Fereastra din Figura 7.1. conţine elemente ale unei ferestre Windows:

- linia de titlu cu textul Microsoft Access şi butoanele de minimizare, maximizare/restaurare, închidere;

- linia de meniu cu opţiunile meniului principal: File, Edit, View, Insert, Tools, Window, Help şi cu o listă ascunsă prin intermediul căreia se pot face căutări în documentaţia aferentă aplicaţiei Microsoft Access;

- linia instrumentelor compusă din butoane, liste ascunse, texte ajutătoare etc, prin intermediul cărora se pot lansa comenzi sau se pot stabili parametrii de lucru;

- linia de stare prin intermediul căreia se afişează informaţii succinte despre operaţia în curs de desfăşurare sau textul Ready atunci când utilizatorul poate lansa comenzi.

Figura 7.1. Fereastra aplicaţiei Microsoft Access

31

Page 33: Curs Baze de Date

Implicit, în partea dreaptă a zonei de lucru, se afişează panoul comenzilor în care comenzile sunt grupate astfel:

- grupul Microsoft Office Online, dacă este disponibilă o conexiune la Internet, se lansează aplicaţia implicită pentru explorarea Internetului, se accesează subdomeniul http://office.microsoft.com şi se deschide pagina corespunzătoare opţiunii selectate:

• Connect to Microsoft Online – default.aspx – se deschide pagina implicită a documentaţiei Microsoft;

• Get the latest news about using Access - FX010857911033.aspx – se deschide pagina cu ultimele ştiri despre aplicaţia Microsoft Access;

• Automatically update this list from the Web – este o opţiune de lucru, care se poate activa pentru ajutor suplimentar în învăţarea lucrului cu Access, de exemplu prin accesarea paginii training/CR061829401033.aspx.

- grupul Open: • se afişează numele ultimelor fişiere deschise (de ex. Test.mdb, Cduri.mdb) • opţiunea More pentru deschiderea unei ferestre de explorare prin intermediul căreia

se poate selecta un fişier existent, stocat pe un suport de memorie externă; • opţiunea Create a new file – pentru crearea unei baze de date noi.

Conţinutul panoului comenzilor se modifică în funcţie de ultima comandă apelată şi/sau contextul de lucru. Panoul comenzilor „se ascunde” automat după ce se deschide o bază de date.

7.2. CREAREA UNEI BAZE DE DATE Crearea unei baze de date Access se poate face apelând comanda de creare a bazei de date prin una dintre metodele de lucru:

1. selectând opţiunea New a meniului File; 2. prin click pe opţiunea Create a new file care se găseşte în panoul comenzilor;

3. prin click pe butonul .

Figura 7.2. Opţiunile pentru crearea unei baze de date noi

Ca urmare a acestui apel, în panoul de lucru, se afişează lista de opţiuni prezentate în Figura 7.2., care se folosesc astfel:

- Blank database – pentru crearea unei baze de date noi, vide; - Blank data access page – pentru crearea unei pagini de acces, eventual printr-o conexiune la

o bază de date care va fi sursa de date; - Project using existing data – pentru crearea unui proiect folosind baze de date existente; - Project using new data – pentru crearea unui proiect simultan cu crearea unei baze de date;

32

Page 34: Curs Baze de Date

- From existing file – pentru crearea unei baze de date Access folosind o altă bază de date, un alt proiect sau o altă pagină;

- Templates – pentru crearea unei baze de date folosind un model existent care poate fi stocat local (On my computer) sau pe site-ul dedicat pachetului de aplicaţii Office (Templates on Office Online).

Pentru crearea unei baze de date noi, se va selecta opţiunea Blank database, apoi folosind fereastra de explorare, se stabilesc directorul şi numele bazei de date (vezi Figura 7.3. care prezintă un exemplu în care directorul este Biblioteci, iar numele bazei de date este BibliotecaAcasa) şi se apasă butonul Create care lansează comanda de creare a bazei de date.

Figura 7.3. Exemplu pentru crearea unei baze de date noi

Baza de date nou creată va avea o fereastră corespunzătoare (vezi Figura 7.4) care va avea titlul compus din numele bazei de date şi cuvântul rezervat Database urmat de formatul folosit pentru baza de date, în cazul nostru titlul este: BibliotecaAcasa : Database (Access 2000 file format).

Figura 7.4. Fereastra bazei de date BibliotecaAcasa

33

Page 35: Curs Baze de Date

O bază de date Access poate conţine elemente de diverse tipuri grupate în următoarele colecţii:

- Tables – colecţia tabelelor, un tabel este un obiect Access folosit pentru stocarea datelor; - Queries – colecţia interogărilor, o interogare se foloseşte pentru consultarea şi/sau

actualizarea unui tabel; - Forms – colecţia formularelor, un formular se foloseşte ca interfaţă între un utilizator şi unu

sau mai multe tabele; - Reports – colecţia rapoartelor, un raport se foloseşte pentru obţinerea informaţiilor prin

formatarea datelor conform cerinţelor utilizatorului; - Pages – colecţia paginilor, o pagină se poate folosi pentru vizualizarea şi editarea datelor

chiar dacă aparţin şi unui alt tip de sursă de date (cum ar fi Excel); - Macros – colecţia macroinstrucţiunilor, o macroinstrucţiune se foloseşte pentru gruparea

mai multor comenzi care se vor executa prin lansarea în execuţie a macroinstrucţiunii; - Modules – colecţia de module, un modul poate conţine declaraţii şi definiţii de variabile,

proceduri şi funcţii. Obiectele bazei de date se disting prin tip şi nume; un nume trebuie să respecte convenţia de

nume dată de următoarele reguli: - un nume poate avea maxim 64 de caractere; - un nume poate include orice combinaţie de litere, cifre, spaţiu, şi alte caractere speciale cu

excepţia caracterelor: punct, semnul exclamării, apostrof, ghilimele şi a parantezelor pătrate;

- un nume poate începe cu caracterul spaţiu; - un nume poate conţine caractere de control (cum ar fi <Tab>, <Enter>).

7.3. MENIUL APLICAŢIEI MICROSOFT ACCESS

7.3.1. Meniul File

New → comandă folosită pentru crearea unei baze de date noi;

Open → comandă folosită pentru deschiderea unei baze de date care există;

Get External Data → permite importarea datelor dintr-o bază de date sau crearea legăturilor la o bază de date;

Close → se închide baza de date curentă; Save → se salvează modificările aduse obiectului deschis

în fereastra activă; Save As → se creează o copie sub un nume nou a obiectului

selectat; Back Up Database

→ se salvează o copie a bazei de date curente;

Export → se exportă datele corespunzătoare obiectului selectat sub diverse formate (Access, dBase, Lotus, Excel ş.a.);

File Search → determină căutarea fişierelor conform criteriilor specificate referitoare la atributele fişierelor cum ar fi nume, autor, lungime;

Page Setup → se stabilesc parametrii pentru tipărirea la imprimantă;

Print Preview → pentru obiectul selectat, se efectuează afişarea pe

34

Page 36: Curs Baze de Date

ecran conform modelului stabilit pentru tipărirea la imprimantă;

Print → se listează la imprimantă obiectul selectat; Send to → se trimite obiectul selectat la un „container”, de

exemplu, de tip email; Database Properties

→ afişează proprietăţile bazei de date curente grupate în mai multe secţiuni (vezi Figura 7.5), unele proprietăţi se pot modifica de către utilizator (de exemplu, în Figura 7.5, proprietăţile secţiunii Summary);

Exit → închide baza de date curentă şi, dacă nu există altă bază de date deschisă, se închide şi fereastra aplicaţiei Microsoft Access.

Figura 7.5. Proprietăţi ale unei baze de date

7.3.2. Meniul Edit

Undo → anulează ultima modificare executată; Cut → creează în clipboard o copie a

obiectului/obiectelor selectate şi le şterge din zona de lucru curentă;

Copy → creează în clipboard o copie a obiectului/obiectelor selectate în zona de lucru curentă;

Office Clipboard → afişează memoria clipboard specială pentru pachetul de aplicaţii Office care poate stoca informaţii despre ultimele obiecte memorate prin operaţii Cut şi Copy;

Paste → dacă este permis, ultimul obiect copiat în clipboard se adaugă în zona de lucru a ferestrei active;

Create Shortcut → creează o legătură la obiectul selectat; legătura se

35

Page 37: Curs Baze de Date

stochează într-un fişier cu extensia corespunzătoare obiectului pentru care s-a creat (de exemplu, .mat pentru legături la tabele, .maf pentru legături la formulare) şi poate fi folosită pentru deschiderea directă a obiectelor în mod similar utilizării icoanelor;

Delete → se şterge obiectul selectat; Rename → se redenumeşte obiectul selectat; Groups → permite manipularea grupurilor (adăugare,

redenumire, ştergere); un grup poate conţine referinţe la obiectele bazei de date;

Add to Group → permite adăugarea într-un grup a unei referinţe noi pentru obiectul selectat.

7.3.3. Meniul View

Database Objects → se selectează una dintre colecţiile bazei de date; Large Icons → obiectele colecţiei curente se afişează sub formă

de icoane mari; Small Icons → obiectele colecţiei curente se afişează sub formă

de icoane mici; List → se afişează doar numele obiectelor; Details → se afişează numele obiectelor şi informaţiile

Description (descriere), Modified (când a fost modificat obiectul), Created (când a fost creat obiectul), Type (tipul obiectului);

Arrange Icons → se stabileşte un criteriu de afişare sortată a obiectelor: By Name (după nume), By Type (după tip), By Created (după data creării), By Modified (după ultima modificare);

Line Up Icons → dacă este posibil, se aranjează icoanele obiectelor astfel încât să fie aliniate;

Properties → se afişează proprietăţile obiectului selectat; Object Dependencies

→ se afişează obiectele cu care obiectul selectat se găseşte în relaţii de dependenţă;

Code → se afişează fereastra mediului de programare; Task Pane → se afişează panoul de sarcini; Toolbars → permite ascunderea/afişarea barelor de

instrumente; Refresh → se reactualizează fereastra bazei de date.

7.3.4. Meniul Insert

Este folosit pentru inserarea în baza de date a unui obiect nou în oricare dintre colecţii.

7.3.5. Meniul Tools

36

Page 38: Curs Baze de Date

Spelling → se lansează instrumentul de verificare gramaticală;

Speech → se lansează utilitarul de recunoaştere vocală; Online Colaboration → permite conectarea utilizatorilor la un server

special dedicat colaborărilor directe; Relationships → se deschide fereastra pentru gestionarea

relaţiilor dintre tabelele bazei de date; Analyze → se foloseşte pentru analizarea obiectelor bazei

de date şi obţinerea rapoartelor despre acestea; Database Utilities → se foloseşte pentru apelarea utilitarelor bazei

de date cum ar fi compactarea şi repararea bazei de date, conversia bazei de date etc.;

Security → se stabilesc parametrii securităţii bazei de date; Startup → se stabilesc opţiunile pentru lansarea bazei de

date; Macro → se gestionează procedurile de tip Macro; ActiveX Controls → permite manipularea controalelor de tip

ActiveX; Add-Ins → se foloseşte pentru adăugarea unor programe

prin intermediul cărora se pot suplimenta comenzile sau facilităţile unei baze de date;

AutoCorrect Options

→ se stabilesc textele pentru prescurtările care se vor înlocui în text în momentul editării;

Customize → se personalizează barele de instrumente; Options → se stabilesc opţiunile pentru mediul de lucru al

bazei de date cum ar fi culori folosite, dicţionarul activ etc.

7.3.6. Meniul Window

Se foloseşte pentru aranjarea ferestrelor conform unor modele (în cascadă, suprapuse); pentru ascunderea ferestrei active, pentru aranjarea obiectelor din fereastra activă ş.a.m.d.

7.3.7. Meniul Help

Se foloseşte pentru afişarea şi căutarea în documentaţia ajutătoare a aplicaţiei Microsoft Access.

7.4. CREAREA UNUI TABEL Pentru crearea unui tabel vom lucru în modul de lucru Design View. Pentru a crea un tabel se lansează comanda de creare a tabelelor prin una dintre metodele:

1. se selectează din meniul Insert opţiunea Table şi, în lista ferestrei de dialog afişată, se selectează Design View apoi se apasă butonul OK;

2. se selectează colecţia de tabele şi se apăsă butonul din fereastra bazei de date şi, în lista ferestrei de dialog afişată, se selectează Design View apoi se apasă butonul OK;

37

Page 39: Curs Baze de Date

3. prin dublu-click pe opţiunea din fereastra bazei de date. Oricare ar fi metoda folosită, se va deschide fereastra structurii de tabel care, în acest moment nu conţine nici un câmp (vezi Figura 7.6). Titlul ferestrei se compune din numele tabelului (în cazul nostru Table1) urmat de tipul obiectului deschis în fereastră, Table. Coloana Field name va conţine numele câmpurilor din tabel. Numele trebuie să respecte convenţia de nume descrisă în finalul subcapitolului 7.2.

Figura 7.6. Fereastra structurii de tabel

Coloana Data Type conţine tipurile câmpurilor. Coloana Description poate conţine descrierile câmpurilor; descrierile nu sunt obligatorii. În partea inferioară stânga a ferestrei sunt două secţiuni pentru atributele unui, General şi Lookup. Secţiunea General (vezi tabelul 7.1) va conţine atributele referitoare la subtip/dimensiune, indexare, reguli de validare, valoare implicită etc. Secţiunea Lookup (vezi tabelul 7.2) conţine atributele necesare unui câmp care poate avea ca sursă de valori fie un alt câmp fie o listă fixă de valori. Numărul şi numele atributelor diferă în funcţie de tipul de dată şi/sau tipul de sursă de valori.

Tabel 7.1 Atributele secţiunii General

Atribut Semnificaţie Tipuri de

dată

Field Size

pentru tipul Text, numărul maxim de caractere care pot fi introduse într-un câmp; pentru tipurile numerice se specifică subtipul valorilor (Byte, Integer, Long Integer, Single, Double, ReplicationID, Decimal

T, N, A, Y/N

New Values modul de obţinere a valorilor noi A

Format modul de afişare; se pot folosi formate predefinite sau personalizate

T, M, N, D/T, C, A, H

Decimal Places

Numărul de zecimale N, C

Input mask un model pentru introducerea datelor T, N, D/T, C Caption textul afişat atunci când câmpul este utilizat într- T, M, N,

38

Page 40: Curs Baze de Date

un formular generat D/T, C, A, Y/N, O, H

Default Value

valoarea implicită T, M, N, D/T, C, Y/N, H

Validation Rule

regula de validare care este o expresie care poate conţine operatori logici, funcţii şi constante predefinite

T, M, N, D/T, C, Y/N, H

Validation Text

textul afişat atunci când valoarea introdusă nu respectă regula de validare

T, M, N, D/T, C, Y/N, H

Required are valoare Yes dacă valorile câmpului trebuie să fie diferite de Null; are valoarea No dacă valorile nu sunt necesare

T, M, N, D/T, C, Y/N, O, H

Allow Zero Length

specifică modul în care sunt (Yes) sau nu sunt acceptate (No) ca valori şirurile de caractere vide T, M, H

Indexed

specifică modul în care este indexat câmpul; pentru valoarea Yes (No duplicates) nu se acceptă apariţia de mai multe ori a unei aceeaşi valori;

T, M, N, D/T, C, A, Y/N

Unicode Compression

specifică dacă se acceptă comprimarea de tip unicode T, M, H

IME Mode specifică modelul de editare al intrărilor T, M, D/T, H IME Sentence

specifică tipul de propoziţie al modelului de editare al intrărilor T, M, D/T, H

Smart Tags specifică cuvinte rezervate care pot fi folosite în cadrul unor facilităţi oferite de Microsoft Access

T, M, N, D/T, C, A, H

În tabelul 7.1 s-au folosit prescurtările pentru tipurile de date astfel: T – Text, M – Memo, N – Number, D/T – Date/Time; C – Currency, Y/N – Yes/No, A – Autonumber, O – OLE Object, H – Hyperlink. În partea inferioară dreapta a ferestrei se va afişa câte un text scurt ajutător în funcţie de context, de exemplu, în Figura 7.6, cursorul fiind poziţionat pe prima linie din coloana Field Name, textul ajutător se referă la dimensiunea maximă a unui nume de câmp „Un nume de câmp poate fi de lungime până la 64 de caractere, inclusiv spaţiile. Apasă F1 pentru ajutor referitor la numele de câmpuri”. Pentru construirea structurii de tabel din Figura 7.7, s-au modificat atributele astfel:

- pentru câmpul Client, atributul Field Size: 30 - pentru câmpul Numar, atributul Field Size: Integer - pentru câmpul Suma, atributul Format: Euro şi atributul Decimal Places: 2

39

Page 41: Curs Baze de Date

Figura 7.7. Structura unui tabel

Figura 7.8. Stabilirea numelui unui tabel

Salvarea modificărilor unei structuri de tabel se face selectând de la meniul File opţiunea Save. Atunci când salvarea se face pentru prima dată, trebuie specificat numele tabelului (vezi Figura 7.8) iar, dacă nu s-a creat o cheie primară şi nici nu se doreşte crearea cheii primare implicite, ID de tip AutoNumber, se va răspunde prin apăsarea butonului No (vezi Figura 7.9).

Figura 7.9. Mesaj referitor la inexistenţa cheii primare

Cheia primară se poate defini în timpul creării sau ulterior creării unui tabel astfel:

• se selectează câmpul/câmpurile care se vor constitui ca şi cheie primară; • se selectează de la meniul Edit opţiunea Primary Key.

Simbolul va marca toate câmpurile cheii primare. Atunci când se defineşte o cheie primară trebuie avut în vedere următoarele:

• cheia primară defineşte unic o înregistrare; deci, pentru tabelul Terti o cheie primară formată din câmpul Denumire nu poate fi validă pentru că poate exista o firmă cu numele FamilyExpert în Oradea şi una în Radna;

• în cazul în care cheia primară se defineşte după ce s-au adăugat înregistrări, dacă valorile cheii primare nu sunt unice, se va genera un mesaj (vezi Figura 7.10)

Figura 7.10. Mesaj referitor la cheia primară definită pentru câmpuri care conţin valori duplicate

În cazul câmpurilor compuse o valoare a indexului se formează prin concatenarea valorilor câmpurilor care compun indexul, de exemplu, pentru tabelul Terti, dacă indexul este compus din

40

Page 42: Curs Baze de Date

câmpurile Denumire şi Localitate, „EximArad” este o valoare a indexului, unde Exim este denumirea, iar Arad este localitatea. „EximArad” este diferit de „EximRadna” aşa că putem considera o cheie primară formată din câmpurile Denumire şi Localitate. Bineînţeles că, dacă în Radna există Exim de tip SRL şi Exim de tip AF, cheia primară trebuie modificată. Dacă se generează mesajul din Figura 7.10, trebuie verificate câmpul/câmpurile care compun cheia primară ca să nu conţină valori duplicate. După salvare, se va închide fereastra structurii tabelului. În lista tabelelor se va afişa numele noului tabel care se poate deschide pentru adăugarea, modificare şi/sau ştergerea înregistrărilor stocate.

7.5. FEREASTRA DATASHEET Conţinutul unui tabel se poate modifica prin intermediul ferestrei de date. Această metodă nu este recomandată pentru tabelele ale căror structură se compune dintr-un număr mare de câmpuri, afişarea acestora pe o linie la un moment dat putând îngreuna procesul de editare a valorilor. Accesarea conţinutului unui tabel, adică deschiderea unui tabel, se face prin una dintre metodele:

1. se selectează tabelul în lista tabelelor şi se apasă butonul ; 2. prin dublu-click pe numele tabelului.

Oricare ar fi metoda folosită, tabelul selectat se va deschide într-o fereastră de date. Pentru tabelul Chitante creat cu structura din Figura 7.7, această fereastră se prezintă în Figura 7.10, cu observaţia că tabelul nu conţine nicio înregistrare. Linia numelor câmpurilor

Indicatorul înregistrării

Bara de navigare

Linia unei înregistrări noi

Figura 7.11. Fereastra datasheet pentru un tabel care nu conţine înregistrări Indicatorul înregistrării marchează înregistrarea curentă. În cazul situaţiei din Figura 7.11 această înregistrare e una virtuală care nu există fizic în tabel dar care este utilă pentru că specifică valorile implicite, formatele de afişare a valorilor şi alte elemente ajutătoare utilizatorului uman; de exemplu pentru câmpul Suma, cu valoare implicită 0 (zero), formatul de afişare adaugă cuvântul „lei” după valoarea câmpului. Bara de navigare se compune din: texte explicative (de exemplu Record), cinci butoane şi un câmp de editare care se folosesc astfel: – butonul pentru deplasare la prima înregistrare; – butonul pentru deplasare la înregistrarea precedentă celei curente; – butonul pentru deplasare la înregistrarea succesivă celei curente; – butonul pentru deplasare la ultima înregistrare;

41

Page 43: Curs Baze de Date

– butonul pentru deplasare la înregistrarea virtuală pregătită pentru crearea unei înregistrări noi;

- câmpul de editare care afişează numărul de ordine al înregistrării curente şi se poate folosi pentru salt la o înregistrare oarecare (se introduce numărul înregistrării şi se apasă tasta Enter).

- textul explicativ „of” urmat de numărul de înregistrări din tabel; în Figura 7.10 se observă că pentru un tabel care nu conţine înregistrări acest număr este 1, la fel ca şi numărul de ordine al înregistrării curente.

Deplasarea în fereastra datasheet se face prin apăsarea tastei <TAB>, prin click cu mouse-ul direct în celula de interes şi/sau prin folosirea tastelor direcţionale. Modificarea conţinutului unui tabel se face prin adăugarea de înregistrări, modificarea celor existente şi ştergerea de înregistrări. Adăugarea unei înregistrări se face prin modificarea valorilor din celulele liniei înregistrării virtuale care este marcată cu simbolul (în Figura 7.12 această linie este după înregistrarea curentă marcată cu simbolul ). Valorile introduse trebuie să fie în concordanţă cu tipul câmpului, să respecte eventualele constrângeri şi/sau formate de introducere (cum ar fi pentru valorile de tip dată calendaristică ce trebuie să respecte modelul stabilit fie prin opţiunile sistemului de operare fie prin atributul Input Mask). În timpul editării unei înregistrări, înregistrarea va fi marcată cu simbolul . Figura 7.12 prezintă tabelul Chitante deschis într-o fereastră de date (datasheet) care conţine 10 înregistrări.

Adăugarea unei înregistrări

Figura 7.12. Fereastra datasheet pentru un tabel care conţine 10 înregistrări

În timpul editării unei înregistrări, dacă nu se introduc valori corecte se va afişa un mesaj eroare care depinde de contextul în care apare eroare. Un exemplu este cel prezentat în Figura 7.13 care se poate traduce astfel „Valoarea introdusă nu este validă pentru acest câmp. De exemplu, aţi introdus text într-un câmp numeric sau un număr mai mare decât cel permis prin setarea Field Size”.

Figura 7.13. Fereastra datasheet pentru un tabel care conţine 10 înregistrări

Ştergerea unei înregistrări se poate face astfel: se poziţionează indicatorul de înregistrare la înregistrarea care trebuie ştearsă şi se selectează din meniul Edit opţiunea Delete Record.

42

Page 44: Curs Baze de Date

7.6. CÂMPURI CU SURSĂ DE VALORI Secţiunea Lookup poate fi folosită pentru stabilirea sursei de valori a unui câmp şi a modului de afişare a valorilor sursă. Implicit această secţiune conţine un singur atribut Display Control care stabileşte modul de afişare şi de obţinere a valorilor unui câmp; cel mai des acest atribut are valoarea Text Box şi este modul folosit până acum în fereastra datasheet în care valorile text, numerice şi dată s-au preluat printr-un câmp de editare (vezi Figurile 7.11 şi 7.12). Dacă atributul Display Control are valoarea List Box sau Combo Box valorile sursei se vor afişa într-o listă sau respectiv într-o listă ascunsă. Pentru oricare dintre aceste două valori, în secţiunea Lookup se vor afişa unele dintre atribute specifice prezentate în tabelul 7.2. Dacă Row Source Type este Value List atunci prin intermediul atributului Row Source se specifică valorile delimitate prin caracterul ; (punct şi virgulă) ca în următoarele exemple:

• 11;21;34;55 – lista conţine patru valori şi anume 11, 21, 34 şi 55; • Timişoara;Arad;Oradea;Lugoj;Reşiţa – lista conţine cinci valori şi anume Timişoara,

Arad, Oradea, Lugoj, şi Reşiţa;

Tabel 7.2 Atributele secţiunii Lookup

Atribut Semnificaţie Display

Control

Row Source Type

tipul sursei de date; poate fi Table/Query (pentru câmpul dintr-un tabel sau interogare), Value List (dacă se specifică o listă de valori delimitate prin caracterul ;) sau Field List (dacă se doreşte utilizarea numelor câmpurilor dintr-un tabel sau interogare)

LB, CB

Row Source

specifică sursa de valori care poate fi un tabel (specificat prin nume) sau o interogare (specificată prin nume sau printr-o expresie)

LB, CB

Bound Column

specifică numărul de ordine al coloanei care va fi folosită ca sursă de valori LB, CB

Column Count numărul de coloane afişate LB, CB

Column Heads

dacă are valoare True, se afişează denumirile coloanelor LB, CB

Column Widths

conţine dimensiunile coloanelor delimitate prin caracterul ; LB, CB

List Rows numărul de valori afişate în listă CB List Width lăţimea listei CB Limit To List

dacă este Yes, valorile sunt limitate la cele specificate prin atributul Row Source CB

În tabelul 7.2 s-au folosit prescurtările pentru valorile atributului Display Control: LB – List Box, CB – Combo Box. Fie baza de date Facturi care conţine tabelele Localitati (vezi tabelul 7.3), Terti (vezi tabelul 7.4), AntetFactura (vezi tabelul 7.5), LiniiFactura (vezi tabelul 7.6).

43

Page 45: Curs Baze de Date

Tabel 7.3 Structura tabelului Localitati

Nume câmp Tip, dimensiune

Localitate Text, 30 Judet Text, 25

Tabelul Terti va conţine date despre societăţi comerciale, se va impune o constrângere asupra câmpului Localitate: să conţină doar nume de localităţi din tabelul Localitati. Pentru stabilirea surselor de date, în cazul tabelului Terti, se vor modifica în secţiunea Lookup, următoarele atribute astfel:

- pentru câmpul Localitate: • Display Control: Combo Box • Row Source Type: Table/Query • Row Source: Localitati • Limit To List_ Yes

- pentru câmpul Tip: • Display Control: List Box • Row Source Type: Value List • Row Source: SRL;AF;SA

Tabel 7.4 Structura tabelului Terti

Nume câmp Tip, dimensiune

Cod Autonumber Denumire Text, 25 Adresa Memo Localitate Text, 30 Telefon Text, 15 Tip Text, 5

Tabelul AntetFactura se foloseşte pentru stocarea datelor din antetul facturilor; sursa de valori pentru câmpul CodTert este câmpul Cod al tabelului Terti.

Tabel 7.5 Structura tabelului AntetFactura

Nume câmp Tip, dimensiune

NumarFactura Text, 12 DataFactura Date/Time CodTert Number, Integer

Tabelul LiniiFactura se foloseşte pentru stocarea datelor din liniile facturii, pentru fiecare produs/serviciu: denumirea, unitatea de măsură, cantitatea şi preţul fără TVA.

Tabel 7.6 Structura tabelului LiniiFactura

Nume câmp Tip, dimensiune

NumarFactura Text, 12 Denumire Text, 30

44

Page 46: Curs Baze de Date

UM Text, 5 Cantitate Number, Single, cu 2 zecimale PretFaraTVA Currency, cu 2 zecimale

Sursa de valori pentru câmpul NumarFactura al tabelului LiniiFactura este câmpul cu acelaşi nume al tabelului AntetFactura. Atunci când se adaugă sau se modifică înregistrările tabelului Terti, pentru câmpul Localitate se poate afişa lista valorilor conţinute de câmpul Localitate al tabelului Localitati (vezi Figura 7.14).

Figura 7.14. Lista de valori pentru un câmp cu sursă de valori

În Figura 7.14 se remarcă faptul că în lista valorilor pentru câmpul Localitate se afişează opt valori la un moment dat (pentru că atributul List Rows este 8), iar valoarea câmpului înregistrării curente este selectată în listă. Pentru că atributul Limit to List este Yes, dacă se încearcă introducerea unei localităţi care nu există în listă (adică şi în tabelul Localitati), atunci se va afişa mesajul de eroare prezentat în Figura 7.15 care se poate traduce aproximativ „Textul introdus nu există în listă. Selectaţi o valoare din listă sau introduceţi o valoare care se potriveşte exact cu una din listă”.

Figura 7.15. Mesaj de eroare pentru valori care nu aparţin unei liste

45

Page 47: Curs Baze de Date

VIII. RELAŢII ÎNTRE TABELE, INTEROGĂRI

8.1. CREAREA RELAŢIILOR

Administrarea relaţiilor dintre tabele se face prin intermediul unei interfeţe speciale care se accesează selectând de la meniul Tools opţiunea Relationships. Adăugarea tabelelor şi/sau interogărilor care se vor folosi pentru crearea relaţiilor se face folosind fereastra Show Table (vezi Figura 8.1) astfel: se selectează numele de interes şi se apasă butonul Add. Fereastra se închide prin apăsarea butonului Close.

Figura 8.1. Fereastra Show Table

După ce s-au selectat tabelele de interes, se vor crea relaţiile între tabele efectuând următorii paşi:

1. se selectează din primul tabel al relaţiei câmpul de interes; 2. cu butonul stâng al mouse-ului apăsat, se deplasează cursorul deasupra câmpului de interes

din cel de al doilea tabel al relaţiei (vezi Figura 8.3) şi se eliberează butonul mouse-ului; 3. în fereastra de dialog afişată (vezi Figura 8.2), se apasă butonul Create; 4. rezultatul este prezentat grafic sub forma unei linii dintre câmpurile tabelelor (vezi Figura

8.3).

Figura 8.2. Fereastra Edit Relationships Figura 8.3. Relaţia dintre tabelele

AntetFactura şi LiniiFactura

Câmpurile implicate într-o relaţie se mai numesc şi câmpuri de legătură şi trebuie să fie de acelaşi tip cu excepţia câmpurilor de tip Autonumber care se pot fi legate cu câmpuri de tip Number. Relaţiile se şterg astfel: se selectează linia care marchează vizual o relaţie şi se apasă tasta Delete.

46

Page 48: Curs Baze de Date

8.2. CREAREA INTEROGĂRILOR DE DETALIU PE BAZA UNUI TABEL

O interogare se foloseşte pentru obţinerea unei mulţimi de înregistrări asupra cărora se va aplica unitar una dintre comenzile de selecţie, actualizare sau ştergere. În cele ce urmează vom lua în discuţie doar interogările de selecţie pentru care rezultatul este afişat într-o fereastră de date (datasheet) şi vom folosi baza de date Facturi, tabelele acesteia fiind descrise mai sus. Crearea interogărilor se face, cel mai simplu, cu ajutorul generatorului de rapoarte şi se procedează prin parcurgerea următorilor paşi:

- (1) se lansează comanda de creare a unui raport prin una dintre metodele: • prin selectarea din meniul Insert a opţiunii Query şi în lista fereastrei de dialog

afişată se selectează Simple Query Wizard apoi se apasă butonul OK; • prin selectarea colecţiei de interogări şi apăsarea butonului din

fereastra bazei de date şi în lista fereastrei de dialog afişată se selectează Simple Query Wizard apoi se apasă butonul OK;

• prin selectarea colecţiei de interogări şi apoi prin dublu-click pe opţiunea din fereastra bazei de date;

- (2) se aleg opţiunile referitoare la tabel şi câmpuri (vezi Figura 8.3): • se selectează numele tabelului din lista ascunsă (în cazul nostru tabelul Terti;

Lista tabelelor şi interogărilor din baza de date

Figura 8.4. Selectarea tabelului şi a câmpurilor unei interogări

• se selectează din lista câmpurilor disponibile (Available Fields) câmpurile de interes; pentru acesta se folosesc butoanele (pentru selectarea unui câmp) şi (pentru selectarea tuturor câmpurilor); câmpurile selectate se vor „muta” în lista Selected Fields fiind afişate în ordinea selectării; în exemplu câmpurile au fost selectate în ordinea Localitate, Denumire, Cod, Adresa, Telefon, iar câmpul Tip nu a fost selectat; butoanele , se folosesc pentru deselectarea câmpurilor;

47

Page 49: Curs Baze de Date

Figura 8.5. Stabilirea numelui unei interogări

• se apasă butonul pentru a se trece la pasul următor;

- (3) se selectează tipul interogării şi se trece la pasul următor;

- (4) se specifică numele interogării (vezi Figura 8.5 unde titlul este Terti Query) În fereastra din Figura 8.5 se remarcă existenţa următoarelor opţiuni:

• care se activează dacă se doreşte deschiderea interogării într-o fereastră de date (această opţiune va rămâne selectată);

• care se activează dacă se doreşte deschiderea interogării în fereastra Design Mode.

• care se activează dacă se doreşte afişarea documentaţiei pentru lucrul cu fereastra datasheet (vezi Figura 8.6).

Figura 8.6. Fereastra documentaţiei Microsoft Office

Se apasă butonul pentru lansarea creării interogării cu opţiunile specificate la paşii 2, 3 şi 4. După ce interogarea a fost creată, rezultatul ei se va deschide într-o fereastră de date, un rezultat posibil este prezentat în Figura 8.7.

48

Page 50: Curs Baze de Date

Figura 8.7. Fereastra datasheet a unei interogări de selecţie

Fereastra datasheet creată pe baza unui tabel se poate folosi pentru modificarea

înregistrărilor tabelului dar numai a valorilor câmpurilor selectate pentru crearea interogării. Se recomandă utilizarea interogărilor numai pentru consultare fie în fereastra datasheet fie prin intermediul unui raport. O interogare se poate deschide folosind una dintre metodele:

- se selectează colecţia de interogări, se selectează interogarea şi se apasă butonul ; - fie prin dublu-click pe numele interogării.

8.3. CREAREA INTEROGĂRILOR DE DETALIU PE BAZA MAI MULTOR TABELE Interogările se pot crea şi pe baza mai multor tabele între care există relaţii. Paşii urmaţi sunt cei descrişi în capitolul anterior, deosebirea fiind la pasul 2 când se selectează tabelele şi a câmpurile. Pasul 2 se modifică astfel:

a) din lista ascunsă se selectează primul tabel al interogării şi se selectează câmpurile de interes;

b) din lista ascunsă se selectează următorul tabel al interogării şi se selectează câmpurile de interes; dacă se selectează câmpuri cu acelaşi nume, acestea vor fi specificate conform sintaxei

nume_tabel.nume_câmp c) se repetă subpasul b) pentru restul tabelelor interogării.

Figura 8.8. Selectarea tabelelor şi câmpurilor unei interogări

49

Page 51: Curs Baze de Date

În Figura 8.8 se observă că a fost selectat câmpul Denumire al tabelului Terti şi câmpul Denumire al tabelului LiniiFactura care sunt specificate ca Terti.Denumire respectiv LiniiFactura.Denumire. Un rezultat posibil al interogării create conform figurii 8.8, este prezentat în Figura 8.9.

Figura 8.9. Fereastra datasheet pentru o interogare pe baza mai multor tabele

Nu se permite adăugarea şi/sau modificarea înregistrărilor într-o fereastră de date a unei interogări multi-tabel. Astfel, în Figura 8.9 se observă că nu mai există linia marcată cu simbolul

, linie pregătită pentru o înregistrare nouă. Încercarea de a modifica valoarea unui câmp va eşua. Tot în Figura 8.9 se observă că numele coloanelor Denumire sunt compuse din numele tabelului, urmat de caracterul de subliniere „_” şi de numele câmpului: Terti_Denumire şi LiniiFactura_Denumire.

8.4. CREAREA INTEROGĂRILOR DE SUMARIZARE O interogare de sumarizare este o interogare în care se folosesc următoarele funcţii de calcul:

• Sum – pentru însumarea valorilor unui câmp; • Avg – pentru calcularea mediei valorilor unui câmp; • Min – pentru determinarea valorii minime a unui câmp; • Max– pentru determinarea valorii maxime a unui câmp.

Crearea interogărilor se face prin parcurgerea următorilor paşi: - (1) se lansează comanda de creare a unui raport prin una dintre metodele deja prezentate în

subcapitolul 8.1; - (2) se aleg opţiunile referitoare la tabel şi câmpuri (vezi Figura 8.10 unde pentru exemplu s-

au selectat tabelele AntetFactura şi LiniiFactura);

50

Page 52: Curs Baze de Date

Figura 8.10. Selectarea tabelelor şi câmpurilor

- (3) se selectează tipul interogării şi se apasă pe butonul ; • în fereastra Summary Options se selectează, pentru fiecare câmp, funcţiile de interes

(vezi Figura 8.11) dintre Sum, Avg, Min şi/sau Max; • dacă este de interes numărarea înregistrărilor pe baza relaţiilor definite în fereastra

Relationships, se selectează opţiunea ; • se trece la pasul următor;

- (4) pentru câmpurile de tip Date/Time, se selectează una dintre opţiunile de grupare: • Unique date/time – grupare după fiecare dată sau timp; • Day – grupare după zi (opţiune selectată pentru exemplul prezentat); • Month – grupare după lună; • Quarter – grupare după trimestru; • Year – grupare după an.

- (5) se stabileşte numele interogării şi se apasă butonul Finish.

Figura 8.11. Selectarea funcţiilor de sumarizare

Figura 8.12 prezintă un rezultat pentru interogarea construită conform opţiunilor selectate (vezi Figura 8.10) pe baza tabelelor AntetFactura şi LiniiFactura.

51

Page 53: Curs Baze de Date

Figura 8.12. Fereastra datasheet pentru o interogare de sumarizare

În Figura 8.12 se remarcă următoarele nume de coloane: • DataFactura By Day – care este câmpul de grupare după dată; • Sum of Cantitate – care este câmpul pentru calcularea sumei cantităţilor pentru

fiecare denumire la nivel de zi; • Avg Of PretFaraTVA – care este câmpul pentru calcularea mediei cantităţilor

pentru fiecare denumire la nivel de zi. Figura 8.13 prezintă rezultatul unei interogări de sumarizare pentru care s-au selectat următoarele:

• câmpurile Denumire din tabelul Terti, Cantitate din tabelul LiniiFactura; • funcţia Sum pentru câmpul Cantitate (pentru care s-a generat câmpul Sum Of

Cantitate); • opţiunea Count records (pentru care s-a generat câmpul Count Of AntetFactura);

Fig. 8.13 Fereastra datasheet pentru o interogare de sumarizare

Din Figura 8.13 putem trage concluzia că pentru:

- AliEmi există 4 linii de factură care însumează 74 de unităţi; - Avinia există 8 linii de factură care însumează 194 de unităţi; - Eduardo există 6 linii de factură care însumează 124 de unităţi; - ş.a.m.d

52

Page 54: Curs Baze de Date

IX. FORMULARE

9.1. CREAREA UNUI FORMULAR PE BAZA TABELELOR Chiar dacă un tabel se poate modifica cu uşurinţă prin intermediul unei ferestre de date, formularele sunt instrumente puternice care se folosesc ca o interfaţă între utilizator şi tabele. Formularele se caracterizează prin interfaţa prietenoasă care corespunde modului propriu de lucru al utilizatorului. Crearea formularelor se face, cel mai simplu, cu ajutorul generatorului de formulare şi se procedează prin parcurgerea următorilor paşi:

- (1) se lansează comanda de creare a unui formular prin una dintre metodele: • prin selectarea din meniul Insert a opţiunii Form, în lista ferestrei de dialog afişată

se selectează Form Wizard şi se apasă butonul OK; • prin selectarea colecţiei de formulare şi prin apăsarea butonului din

fereastra bazei de date şi, în lista ferestrei de dialog afişată, se selectează Form Wizard şi se apasă butonul OK;

• prin dublu-click pe opţiunea din fereastra bazei de date. - (2) se aleg opţiunile referitoare la tabel şi câmpuri (vezi Figura 9.1):

• se selectează numele tabelului din lista ascunsă (în cazul nostru tabelul Terti; • se selectează din lista câmpurilor disponibile (Available Fields) câmpurile de interes;

pentru acesta se folosesc butoanele (pentru selectarea unui câmp) şi (pentru selectarea tuturor câmpurilor); câmpurile selectate se vor „muta” în lista Selected Fields fiind afişate în ordinea selectării; în exemplu câmpul Cod nu a fost selectat fiind un câmp de tip Autonumber, iar ordinea selectării diferită de ordinea câmpurilor din structura de tabel; butoanele , se folosesc pentru deselectarea câmpurilor;

• se apasă butonul pentru a se trece la pasul următor;

Figura 9.1. Generatorul de formulare: selectarea tabelului şi a câmpurilor

- (3) se selectează planul general (layout) al formularului care poate fi: • columnar (Columnar, vezi Figura 9.2);

53

Page 55: Curs Baze de Date

Figura 9.2. Selectarea modelului Columnar

• tabelar (Tabular, vezi Figura 9.3);

Figura. 9.3. Modelul Tabular Figura 9.4. Formular Tabular

• fereastră de date (Datasheet, vezi Figura 9.5);

Figura 9.5. Modelul Datasheet

Figura 9.6. Formular Datasheet

• Justified (vezi Figura 9.7);

54

Page 56: Curs Baze de Date

Figura 9.7. Modelul Justified

Figura 9.8. Formular Justified

• se apasă butonul pentru a se trece la pasul următor; - (4) se selectează stilul formularului adică acea combinaţie de culori şi fonturi care este cea

mai potrivită conform cerinţelor utilizatorului; dintre stiluri amintim: Blends, Expedition, Industrial, International, Stone; de exemplu pentru Tabular s-a selectat Standard, iar pentru modelul Justified s-a selectat stilul Industrial; după ce s-a selectat stilul dorit, se trece la următorul pas;

- (5) se stabilesc următoarele opţiuni: • titlul formularului care se va folosi şi ca nume al formularului; • modul de deschidere: deschidere pentru consultarea sau introducerea datelor (Open

the form to view or enter information) sau deschidere în mod design (Modify the

form’s design), se va selecta prima opţiune şi se va apăsa butonul ;

Figura 9.9. Formularul Terti în stil Columnar

Figura 9.9 prezintă formularul creat pe baza tabelului Terti, creat cu modelul Columnar. Se observă că, la un moment dat, se afişează câmpurile unui înregistrări. Câmpul Tip are stabilite proprietăţile (din secţiunea Lookup) cu valorile: Display Control: List Box; Row Source Type: Value List şi Row Source: SRL;AF;SA; pentru acest câmp formularul conţine o listă în care este selectată valoarea corespunzătoare valorii câmpului (AF în Figura 9.2). Pentru câmpul Localitate s-a generat o listă ascunsă (pentru că are atributul Display Control are valoarea Combo Box), iar pentru Adresa (câmp de tip Memo) câmpul de editare este mai mare decât celelalte câmpuri de editare folosite pentru câmpurile Denumire şi Telefon. Formularul creat cu modelul Tabular este prezentat în Figura 9.4, cel creat cu modelul Datasheet este prezentat în Figura 9.6 iar cel creat cu modelul Justified în Figura 9.8. În Figurile 9.4

55

Page 57: Curs Baze de Date

şi 9.8 câmpurile cu sursă valori şi cu proprietatea Display Control egală cu List Box, valoarea câmpului este selectată în lista pentru câmpul respectiv Tip. Deschiderea unui formular pentru consultarea şi/sau modificarea înregistrărilor se poate face prin una dintre metodele:

- prin selectare în lista colecţiei de formulare şi apăsarea butonului din fereastra bazei de date;

- prin dublu-click pe numele formularului. Un formular se poate crea şi pe baza mai multor tabele caz în care formularul se poate folosi numai pentru consultare înregistrărilor. Figura 9.10 prezintă formularul creat pe baza tabelelor AntetFactura şi LiniiFactura, între care există relaţii stabilite în fereastra Relationships, modelul folosit fiind Columnar.

Figura 9.10. Formular creat cu modelul Columnar, pe baza a două tabele AntetFactura şi LiniiFactura

Figura 9.11 prezintă creat cu modelul Datasheet, pe baza tabelelor AntetFactura şi LiniiFactura.

Figura 9.11. Formular creat cu modelul Datasheet, pe baza a două tabele AntetFactura şi LiniiFactura

Atât în Figura 9.10 cât şi în Figura 9.11, butonul pentru salt la înregistrarea nouă este dezactivat pentru că nu se permite adăugarea unei înregistrări noi.

9.2. CREAREA UNUI FORMULAR PE BAZA UNEI INTEROGĂRI Crearea formularelor pe baza unei interogări se face urmând aceeaşi paşi descrişi în subcapitolul 9.1. Atunci când se selectează câmpurile (pasul 2) se va constata că, dacă interogarea conţine câmpuri virtuale (cele create pentru funcţiile de sumarizare), se pot selecta şi acestea (vezi Figura 9.12 în care se prezintă pasul 2 al creării unui formular pe baza interogării QValoare care are câmpul virtual ValTVA).

56

Page 58: Curs Baze de Date

Figura 9.12. Crearea unui formular pe baza unei interogări

În Figura 9.12 se observă ca unele câmpuri se specifică împreună cu numele tabelelor de care aparţin conform sintaxei tabel.câmp (Terti.Denumire, LiniiFactura.Denumire), aceste câmpuri fiind cele care, în absenţa numelui tabelului, pot genera confuzie având aceeaşi denumire. Deosebirea funcţională dintre deschiderea unui formular creat pe baza unui tabel şi deschiderea unui formular creat pe baza unei interogări se face simţită atunci când interogarea s-a creat pe baza mai multor tabele. În acest caz formularele nu permit modificarea valorilor câmpurilor. Valoarea câmpurilor virtuale, care afişează valori calculate, nu se pot modifica. Dacă, atunci când se selectează tabelele şi interogările pentru un formular, între ele nu se pot stabili relaţii logice şi/sau funcţionale corecte, se va afişa un mesaj de eroare (vezi Figura 9.13).

Figura 9.13. Mesaj de eroare la crearea unui formular pe baza unor tabele între care nu se pot stabili legături

Mesajul din Figura 9.13 se poate traduce cu aproximaţie astfel: „Aţi selectat câmpuri din surse de înregistrări la care generatorul nu se poate conecta. Trebuie să selectaţi câmpuri dintr-un tabel sau dintr-o interogare bazată pe un tabel. Dacă astfel, încercaţi să selectaţi câmpuri numai dintr-un tabel sau numai dintr-o interogare”.

9.3. SORTAREA ŞI FILTRAREA Atunci când se deschide un formular pentru consultare/modificare, ordinea de afişare a înregistrărilor se poate modifica prin stabilirea unei ordini de afişare astfel:

- se selectează câmpul după care se doreşte ordonarea; - se selectează din meniul Records opţiunea Sort; se observă că această opţiune este un

submeniu care are, la rândul său, două opţiuni: • Sort Ascending – pentru ordonare crescătoare; • Sort Descending – pentru ordonare descrescătoare.

În cazul câmpurilor de tip Text, şirurile de caractere care încep caracterele diferite de litere şi cifre preced şirurile de caractere care încep cu cifre (vezi Figura 9.14) unde valoarea primei linii are ca prim caracter caracterul spaţiu.

57

Page 59: Curs Baze de Date

Figura 9.14. Crearea unui formular pe baza unei interogări

Dacă formularul a fost creat folosind modelul Datasheet, se pot selecta mai multe câmpuri pentru care să se apeleze sortarea. Selecţia mai multor coloane se face astfel:

• se apasă pe numele primei coloane; • se ţine apăsat butonul stâng al mouse-ului şi se deplasează mouse-ul spre stânga sau

dreapta, peste celelalte câmpuri; • când s-au selectat toate câmpurile, se eliberează butonul stâng al mouse-ului.

Figura 9.15. Selecţia multi-coloană

Figura 9.14 prezintă un exemplu în care sunt selectate două coloane/câmpuri şi anume: Tip şi Denumire.

Figura 9.16. Sortarea multi-coloană

Figura 9.16 prezintă un exemplu de sortare în funcţie de două câmpuri, Tip şi Denumire. Se observă că ordinea valorilor câmpului Tip este AF, SA, SRL şi, în pentru fiecare valoare, denumirile sunt sortate alfabetic crescător. Filtrarea se foloseşte pentru a restrânge numărul de înregistrări care se prelucrează la un moment dat, în cazul nostru prelucrarea înseamnă afişarea într-un formular. Cu toate că în exemplele următoare se va lucra cu un formular de tip Datasheet, filtrarea se poate aplica şi formularelor de tip Column cât şi în fereastra datasheet. Una dintre metodele de filtrare este de a

Filtrarea

58

Page 60: Curs Baze de Date

limita afişarea înregistrărilor pentru care valoarea unui câmp se potriveşte exact cu valoarea de filtrare şi se face astfel:

• se deplasează cursorul de editare în câmpul de editare care conţine valoarea de interes; • din meniul Records se selectează opţiunea Filter, apoi opţiunea .

Figura 9.17 prezintă un formular în care filtrarea s-a făcut după valoarea 1 a câmpului CodTert.

Figura 9.17. Sortarea multi-coloană

În Figura 9.17 se remarcă în partea dreaptă a barei de navigare explicaţia Filtered care înseamnă că mulţimea de înregistrări este filtrată. Un filtru se poate şterge selectând din meniul Records, opţiunea Remove Filter/Sort.

59

Page 61: Curs Baze de Date

X. RAPOARTE 10.1. CREAREA UNUI RAPORT SIMPLU PE BAZA UNUI TABEL

Crearea rapoartelor se face, cu ajutorul generatorului de rapoarte (Report Wizard) prin parcurgerea următorilor paşi:

- (1) se lansează comanda de creare a unui raport prin una dintre metodele: • prin selectarea din meniul Insert a opţiunii Report şi în lista ferestrei de dialog

afişată se selectează Report Wizard apoi se apasă butonul OK; • prin selectarea colecţiei de rapoarte şi prin apăsarea butonului din

fereastra bazei de date şi, în lista ferestrei de dialog afişată, se selectează Report Wizard apoi se apasă butonul OK;

• prin dublu-click pe opţiunea din fereastra bazei de date; - (2) se aleg opţiunile referitoare la tabel şi câmpuri (vezi Figura 10.1):

• se selectează numele tabelului din lista ascunsă (în cazul nostru tabelul Terti; • pentru selectarea câmpurilor de interes (în exemplul din figură acestea sunt

Localitate, Denumire, Telefon) se folosesc butoanele şi astfel: butonul se foloseşte pentru trecerea unui singur câmp din lista Available

Fields în lista Selected Fields; butonul se foloseşte pentru trecerea tuturor câmpurilor din lista

Available Fields în lista Selected Fields;

• se apasă butonul pentru a se trece la pasul următor; - (3) gruparea înregistrărilor – momentan nu este necesară gruparea înregistrărilor aşa că se

trece la pasul următor;

Figura 10.1. Selectarea tabelului şi a câmpurilor unui raport

- (4) sortarea înregistrărilor – momentan nu este necesară sortarea înregistrărilor aşa că se

apasă butonul pentru a se trece la pasul următor; - (5) se stabileşte formatul general al raportului; acesta poate fi columnar (Columnar, vezi

Figura 10.2), tabelar (Tabular, vezi Figura 10.4) aliniat bilateral (Justified, vezi Figura 10.6).

60

Page 62: Curs Baze de Date

Figura 10.2. Modelul Columnar

Figura 10.3. Un raport Columnar

La acest pas, se poate stabili dacă toate câmpurile să încapă într-o pagină (prin activarea comutatorului ) şi dacă raportul trebuie generat pentru o tipărire portret sau peisaj .

Figura 10.4. Modelul Tabular

Figura 10.5. Un raport Tabular

Diferenţele dintre modelele de rapoarte se fac remarcate în Figurile 10.5, 10.7 şi 10.9.

61

Page 63: Curs Baze de Date

Figura 10.6. Modelul Justified

Figura 10.7. Un raport Justified

- (6) se selectează stilul raportului din lista care conţine următoarele denumiri: Bold, Casual,

Compact, Corporate, Formal şi Soft Gray; un stil se caracterizează prin fonturile şi culorile folosite pentru elementele principale din raport (vezi exemplele din Figurile 10.8 şi 10.9)

Stilurile rapoartelor fără grupare În Figurile 10.8 şi 10.9 se remarcă următoarele elemente:

• Title – reprezintă titlul raportului (în Figura 10.3. acesta este Terti, în Figura 10.5 este Terti – tabelar şi în Figura 10.7 este Terti – justified;

• Label above Detail – reprezintă etichetele folosite pentru informaţia detaliată a raportului (în Figurile 10.3, 10.5 şi 10.7 acestea coincid cu numele câmpurilor Localitate, Denumire şi Telefon);

• Control from Detail – reprezintă datele raportului care se preiau din fiecare înregistrare şi se afişează conform modelului ales;

Figura 10.8. Stilul Bold

Figura 10.9. Un raport Soft Gray

- (7) se stabileşte titlul raportului (vezi Figura 10.10); acest titlu este folosit şi ca nume al

raportului în colecţia de rapoarte a bazei de date;

Titlul raportului

Figura 10.10. Stabilirea titlului unui raport

62

Page 64: Curs Baze de Date

În Figura 10.10 se remarcă următoarele opţiuni:

• care se activează dacă se doreşte deschiderea raportului pentru consultare (se recomandă să fie selectată);

• care se activează dacă se doreşte deschiderea raportului într-o fereastră de design;

• comutatorul se activează dacă se doreşte afişarea documentaţiei ajutătoare pentru lucrul cu rapoartele.

După stabilirea titlului se apasă butonul şi, pentru că opţiunea este activă, se va deschide raportul într-o fereastră (vezi Figurile 10.3, 10.5, 10.7)

care conţine o bară de navigară similară celei din fereastra datasheet. Butoanele barei de navigare se folosesc astfel:

– butonul pentru deplasare la prima pagină; – butonul pentru deplasare la pagina precedentă celei curente; – butonul pentru deplasare la pagina succesivă celei curente; – butonul pentru deplasare la ultima pagină; - câmpul de editare care afişează numărul de ordine al paginii curente şi se poate

folosi pentru salt la o pagină oarecare. Crearea unui raport pe baza unei interogări se face urmând aceeaşi paşi descrişi până acum. Deschiderea unui raport se poate face fie, în lista colecţiei de rapoarte, se selectează raportul şi se apasă butonul fie prin dublu-click pe numele raportului.

10.2 CREAREA UNUI RAPORT CU SORTARE Un raport cu sortare este un raport pentru care s-a specificat ordinea de sortare pentru cel puţin un câmp atunci când este în lucru pasul 4 (vezi Figura 10.11); precedenţa de sortare este dată de ordinea de selectare a câmpurilor în listele etichetate nu nivelul de precedenţă 1, 2,3, 4.

În raportul exemplu, întâi se vor sorta înregistrările după valorile din câmpul Localitate apoi după Denumire. Cuvântul None se poate folosi atunci când se doreşte renunţarea la unul dintre câmpurile de sortare.

Figura 10.11. Stabilirea câmpurilor pentru sortarea înregistrărilor raportului

63

Page 65: Curs Baze de Date

În Figura 10.11 se remarcă butoanele Ascending şi Descending care sunt de tip comutator şi se folosesc pentru stabilirea ordinii de sortare, implicit acestea au textul Ascending ceea ce înseamnă că sortarea va fi crescătoare; Dacă butonul de sortare se apasă când textul butonului este Ascending, sensul sortării se modifică devenind descrescător şi butonul va avea textul Descending. Figura 10.12 prezintă un exemplu de raport creat pe baza unei interogări şi sortat după câmpurile din Figura 10.11.

Figura 10.12. Raport sortat creat pe baza unei interogări folosind modelul Tabular şi stilul Casual

În Figura 10.12 se observă că valorile pentru Denumire sunt sortate în ordine crescătoare şi, pentru fiecare denumire, valorile ValCuTVA sunt sortate descrescător.

10.3 CREAREA UNUI RAPORT CU GRUPARE Un raport cu grupare este un raport în care se vor crea grupuri de înregistrări după câmpurile specificate la pasul 3. Figura 10.13 prezintă fereastra de dialog pentru stabilirea grupărilor şi un exemplu de grupare. Gruparea se specifică astfel:

1. în lista stângă care conţine numele câmpurilor, se selectează câmpul de grupare şi se apasă

butonul ; 2. se observă în partea dreaptă a ferestrei scoaterea în evidenţă a câmpului de grupare şi

desenarea „subordonată” a restului de câmpuri (vezi Figura 10.14, unde câmpul de grupare este Judet).

Se repetă paşii 1 şi 2 pentru fiecare câmp după care se doreşte să se facă gruparea. Dacă prioritatea câmpurilor de grupare nu este cea dorită, aceasta se poate modifica astfel:

- în partea dreaptă a ferestrei de grupare se selectează cu un click, câmpul pentru care se doreşte modificarea priorităţii de grupare;

64

Page 66: Curs Baze de Date

- se apasă butonul pentru creşterea priorităţii sau butonul pentru o prioritate mai mică.

Modificarea priorităţii are efect şi asupra imaginii afişate în partea dreaptă.

Figura 10.13. Fereastra pentru stabilirea grupărilor fără nici o grupare

În Figura 10.13 lista din partea stângă conţine câmpurile unei interogări create pe baza a patru tabele Terti, Localitati, AntetFactura şi LiniiFactura.

Figura 10.14. Modelul de grupare după câmpul Judet

După ce s-a stabilit gruparea se poate trece la sortare . Se va remarca faptul că pentru sortare nu se pot folosi câmpurile implicate în grupare. Când se ajunge la pasul de stabilire a modelului raportului se va constata că există alte opţiuni decât cele prezentate în subcapitolul 10.1 şi sunt prezentate în Tabelul 10.1.

Tabel 10. 1 Modele pentru un raport cu grupare

Numele modelului Vizualizarea modelului

65

Page 67: Curs Baze de Date

Stepped

Block

Outline 1

Outline 2

Align Left 1

66

Page 68: Curs Baze de Date

Align Left 2

După apăsarea butonului Finish se va crea raportul în conformitate cu toate opţiunile selectate; un rezultat posibil este prezentat în Figura 10.15.

Figura 10.15. Un raport cu grupare după două câmpuri, Localitate şi Denumire

Similar interogărilor, un raport se poate crea şi cu opţiuni de sumarizare astfel: atunci când

este afişată fereastra pentru sortare, se apasă pe butonul şi se deschide fereastra Summary Options (vezi Figura 10.16) în care, pentru fiecare câmp cu valori numerice, se pot selecta funcţiile de sumarizare, Sum, Avg, Min, Max.

67

Page 69: Curs Baze de Date

Figura 10.16. Fereastra cu opţiunile de sumarizare

Fereastra care se deschide seamănă cu cea din Figura 8.11, dar conţine în plus trei opţiuni (vezi Figura 10.16):

• Detail and Summary – dacă se selectează se vor afişa, pentru înregistrările din grup, atât înregistrările cât şi valorile funcţiilor de sumarizare selectate;

• Summary Only – dacă se selectează se vor afişa, pentru înregistrările din grup, numai valorile funcţiilor selectate;

• Calculate percent of total for sums – dacă se activează, se vor calcula procentele valorilor funcţiilor la nivel de grup raportat la întregul raport.

Figura 10.17. Fereastra cu opţiunile de sumarizare

Figura 10.17 prezintă un raport în care se calculează, pentru câmpul Cantitate, toate funcţiile de sumarizare plus procentul astfel:

- suma Sum a valorilor cantitate la nivel de grup (de exemplu pentru grupul AliEmi aceasta este 74);

- media Avg a valorilor cantitate la nivel de grup (de exemplu pentru grupul AliEmi aceasta este 18,5);

68

Page 70: Curs Baze de Date

- minimul Min a valorilor cantitate la nivel de grup (de exemplu pentru grupul AliEmi aceasta este 5);

- maximul Max a valorilor cantitate la nivel de grup (de exemplu pentru grupul AliEmi aceasta este 44);

- procentul Standard al facturilor din totalul facturilor (de exemplu pentru grupul AliEmi aceasta este 15,29);

69

Page 71: Curs Baze de Date

XI. MACROINSTRUCŢIUNI

11.1. INSTRUCŢIUNI Una dintre colecţiile unei baze de date Access este colecţia Macros care conţine obiectele de tip macroinstrucţiune. O macroinstrucţiune se constituie ca un grup de una sau mai multe acţiuni/instrucţiuni, fiecare acţiune executând o instrucţiune particulară cum ar fi deschiderea unui formular sau tipărirea unui raport la imprimantă. Cu toate că, prin gruparea rapidă a instrucţiunilor pentru a fi lansate în execuţie, această metodă de lucru poate fi considerată a fi muncă programare, crearea şi utilizarea macroinstrucţiunilor nu necesită cunoştinţe avansate de programare. Utilizarea macroinstrucţiunilor este utilă pentru automatizarea acţiunilor de complexitate redusă şi/sau pentru definirea comenzilor rapide asociate tastelor. O acţiune este o instrucţiune auto-conţinută şi este blocul de bază al unei macroinstrucţiuni. Acţiunile se pot combina pentru a forma o macroinstrucţiune; macroinstrucţiunile se pot combina pentru a forma un grup de macroinstrucţiuni. Când se execută o macroinstrucţiune, Microsoft Access începe execuţia comenzilor de la prima instrucţiune până când întâlneşte o comandă de oprire a execuţiei sau până la ultima comandă. Când se execută un grup de comenzi, Microsoft Access începe execuţia de la prima acţiune sau macroinstrucţiune, până întâlneşte o comandă de oprire a execuţiei sau până întâlneşte un alt nume de grup de comenzi sau până nu mai întâlneşte nici o comandă sau grup de comenzi. Specificarea unei instrucţiuni se face împreună cu specificarea parametrilor de execuţie a instrucţiunii. Unul dintre parametri este clauza Where Condition care se foloseşte pentru specificarea condiţiilor care trebuie îndeplinite de înregistrările selectate. Clauza poate include restricţii folosind controale unui formular conform sintaxa:

[nume_câmp] = Forms![nume_formular]![nume_control] Expresia parametrului Where Condition se poate construi cu ajutorul generatorului de expresii care se lansează apăsând pe butonul din partea dreaptă a câmpului de editare pentru parametrul Where Condition. Fereastra Expression Builder (vezi Figura 11.12) conţine butoane pentru operatorii

aritmetici , şir de caracter (concatenare), logici şi de grupare . Alegerea unui câmp se face prin: selectarea unui obiect din arborele de obiecte ale bazei de

date, urmat de selectarea câmpurilor de interes în expresie. Arborele de obiecte se poate folosi şi pentru selectarea funcţiilor predefinite, ale constantelor, operatorilor şi expresiilor comune (cum ar fi numărul de pagină). Operatorul Like are semnificaţia de „asemănător cu” şi se poate folosi împreună cu caracterul de mascare „*”, de exemplu:

[LiniiFactura]![Cantitate]*[LiniiFactura]![PretFaraTVA]>200 And [LiniiFactura]![Cantitate]*[LiniiFactura]![Denumire] Like ”c*”

înseamnă „Cantitate* PretFaraTVA este mai mare decât 200 şi denumirea începe cu litera c”. ApplyFilter – selectează înregistrările pentru un tabel, raport sau formular printr-un filtru, printr-o interogare. Parametri:

Filter Name – numele unui filtru sau al unei interogări; Where Condition – clauza.

Beep – se emite un semnal sonor scurt.

70

Page 72: Curs Baze de Date

GoToRecord – într-un tabel, formular sau mulţime de înregistrări rezultat al unei interogări, face înregistrarea specificată ca înregistrare curentă într-un. Parametri:

Object Type – tipul obiectului care conţine o mulţime de înregistrări, dacă se lucrează cu obiectul curent (ultimul deschis) nu se completează; Object Name - specifică numele obiectului în care se va face saltul la înregistrarea specificată; numele trebuie să existe în baza de date şi se poate alege din lista asociată care va fi completată în funcţie de valoarea lui ObjectType; Record şi Offset – selectează înregistrarea care va deveni înregistrare curentă; poate lua una din următoarele valori:

Previous – se face salt spre prima înregistrare din mulţimea de înregistrări, parametrul Offset specifică numărul de înregistrări peste care se sare; Next – se trece la următoarea înregistrare din mulţimea de înregistrări; parametrul Offset se ignoră; First – se face salt la prima înregistrare din mulţimea de înregistrări; parametrul Offset se ignoră; Last – se face salt la ultima înregistrare din mulţimea de înregistrări; parametrul Offset se ignoră; GoTo – se face salt la înregistrarea specificată prin valoarea parametrului Offset; dacă înregistrarea nu există, se generează eroare; New – se face salt la înregistrarea virtuală pregătită pentru o înregistrare nouă; dacă obiectul este deschis în mod Read Only, se generează eroare; parametrul Offset se ignoră;

CancelEvent – întrerupe evenimentul pe baza căruia se execută o macroinstrucţiune Close – închide obiectul specificat sau, dacă nu e specificat, închide fereastra activă. Parametri:

ObjectType – specifică tipul obiectului care trebuie închis, valoarea se poate selecta din lista asociată (şi poate fi una dintre valorile: Table, Query, Form, Report, Macro, Module, Data Access Page, Server View, Stored procedure, Function) sau rămâne şir vid dacă se doreşte închiderea ferestrei active. ObjectName – specifică numele obiectului care se închide; trebuie să existe în baza de date şi se poate alege din lista asociată care va fi completată în funcţie de valoarea lui ObjectType. Save – specifică modul în care se va executa salvarea obiectului închis; se poate folosi una dintre următoarele valori implicite:

- Prompt – se va afişa o fereastră de dialog; - Save – obiectul este salvat când este închis; - No – obiectul nu este salvat când este închis.

OpenForm – deschide un formular. Parametri:

FormName – numele formularului; formularul cu numele dat trebuie să existe în baza de date; numele se poate selecta din lista asociată parametrului; View – modul în care se va deschide formularul; pentru acest parametru se pot folosi valori ce depind de proprietăţile Default View şi View Allowed ale formularului; FilterName - numele unui filtru care se poate aplica înregistrărilor formularului; Where Condition – clauza; Data Mode – specifică modul de acces la înregistrări. Valorile pentru acest parametru sunt aceleaşi ca şi pentru acţiunea OpenTable, având aceeaşi semnificaţie. Această proprietate depinde de proprietăţile Allow Edits, AllowDeletions, AllowAdditions şi DataEntry, valorile acestor proprietăţi determină modul implicit în care utilizatorul are acces la înregistrări şi pot impune restricţii asupra parametrului DataMode.

71

Page 73: Curs Baze de Date

WindowMode – stabileşte modul în care se deschide formularul, se poate folosi una dintre valorile:

- Normal - se ţine cont de proprietăţile formularului; - Hidden - formularul este ascuns; - Icon - formularul se va deschide sub formă minimizată; - Dialog - formularul de deschide ca fereastră de dialog.

Observaţii: acţiunea de deschidere a unui formular folosind OpenForm este similară celei de deschidere prin intermediul butonului Open al ferestrei bazei de date. Un formular se poate deschide:

• modal – când utilizatorul poate acţiona doar asupra formularului, orice altă acţiune asupra altei ferestre a unei aplicaţii Access putând avea loc doar după închiderea formularului deschis modal;

• nemodal – când utilizatorul poate acţiona şi asupra altor ferestre deschide. Open Table – deschide un tabel. Parametri:

Table Name – numele tabelului; tabelul cu numele dat trebuie să existe în baza de date; numele se poate selecta din lista asociată parametrului; View – specifică modul deschidere a tabelului, se poate folosi una dintre următoarele valori implicite:

- Datasheet View - conţinutul tabelului se afişează sub formă tabelară; - Design View - tabelul se deschide pentru modificarea structurii; - Print Preview - tabelul se deschide şi se pregăteşte pentru tipărire;

Data Mode – specifică modul de acces la înregistrări, se poate folosi una dintre următoarele valori implicite:

- Add - se permite adăugarea de înregistrări noi dar nu permite modificarea celor existente;

- Edit - se permite adăugarea de înregistrări noi şi modificarea celor existente; - Read Only - permite doar vizualizarea înregistrărilor.

OpenQuery – deschide sau execută o interogare. Parametri:

Query Name – numele interogării; interogarea cu numele dat trebuie să existe în baza de date; numele se poate selecta din lista asociată parametrului; View – specifică modul de deschidere a interogării, se poate folosi una dintre următoarele valori implicite:

- Datasheet view - rezultatul interogării se afişează sub formă tabelară; - Design View - interogarea se deschide pentru modificare; - Print Preview - rezultatul interogării se deschide şi se pregăteşte pentru tipărire;

Data Mode – specifică modul de acces la înregistrări. Valorile pentru acest parametru sunt aceleaşi ca şi pentru parametrul similar al acţiunii OpenTable, având aceeaşi semnificaţie.

Maximize – maximizează fereastra activă. Minimize – minimizează fereastra activă. MsgBox – afişează o fereastră de dialog care va conţine un mesaj de eroare sau de informare. Parametri:

Message: un şir de caractere care reprezintă mesajul care se va afişa; Beep – dacă are valoarea Yes afişarea ferestrei va fi însoţită de emiterea unui sunet scurt; Type – specifică imaginea afişată în fereastra de dialog în funcţie de valoarea selectată din lista asociată, astfel:

None – nu se afişează imagine;

72

Page 74: Curs Baze de Date

Critical – se afişează imaginea ;

Warning? – se afişează imaginea ;

Warning! – se afişează imaginea ;

Information – se afişează imaginea Dacă o macroinstrucţiune este folosită cu valori invalide (cum ar fi un nume inexistent), se afişează o fereastră de dialog cu informaţii minime despre eroarea generată şi se întrerupe execuţia macroinstrucţiunii; un exemplu este afişat în Figura 11.1. Apăsarea butonului Halt întrerupe execuţia macroinstrucţiunii.

Figura 11.1. Mesaj de eroare generat în timpul execuţiei unei macroinstrucţiuni

11.2. CREAREA ŞI UTILIZAREA MACROINSTRUCŢIUNILOR

Crearea macroinstrucţiunilor se face, prin parcurgerea următorilor paşi:

- (1) se lansează comanda de creare a unei macroinstrucţiuni prin una dintre metodele: • prin selectarea din meniul Insert a opţiunii Macro; • prin selectarea colecţiei de macroinstrucţiuni şi prin apăsarea butonului

; - (2) în fereastra de definire pentru macroinstrucţiuni (vezi Figura 11.2) se adaugă acţiunile de

interes astfel: • se selectează din lista ascunsă de pe coloana Action acţiunea/instrucţiunea dorită; • dacă este nevoie, se adaugă un comentariu; • se completează valorile parametrilor; în multe cazuri aceasta înseamnă selectarea

dintr-o listă a unei valori permise (fie dintr-o listă a valorilor predefinite, fie dintr-o listă de nume a obiectelor existente)

- se repetă pasul 2 pentru fiecare acţiune de interes; - se salvează macroinstrucţiunea şi se închide fereastra de definire.

73

Page 75: Curs Baze de Date

Figura 11.2. Fereastra de definire a unei macroinstrucţiuni

O macroinstrucţiune se poate lansa în execuţie astfel:

• direct – fie prin selectare în lista colecţiei de macroinstrucţiuni şi apăsarea butonului fie prin dublu-click pe numele macroinstrucţiunii;

• prin intermediul unei alte macroinstrucţiuni. O macroinstrucţiune se poate deschide pentru modificarea listei de acţiuni astfel: se selectează în lista colecţiei de macroinstrucţiuni şi se apasă butonul . În Figura 11.3 este prezentată o macroinstrucţiune care se compune dintr-o singură instrucţiune de deschidere a unui formular, Terti¸ creat pe baza unui tabel.

Figura 11.3. Instrucţiunea de deschidere a unui formular

În Figura 11.3 se observă următoarele:

- instrucţiunea folosită este OpenForm; - numele formularului, Terti, a fost selectat din lista pentru parametrul Form Name; - modul de deschidere este Form ceea ce înseamnă că formularul se va deschide în modul

definit atunci când a fost generat; - modul de acces la date, vezi parametrul Data Mode, este Read Only ceea ce înseamnă că

înregistrările nu pot fi modificate; - numele macroinstrucţiunii este DeschidereFormular.

74

Page 76: Curs Baze de Date

Figura 11.4. Rezultatul execuţiei unei macroinstrucţiuni

Figura 11.4 prezintă rezultatul execuţiei macroinstrucţiunii definite conform figurii 11.3, se observă că nu se pot adăuga înregistrări, iar încercarea de a modifica valorile înregistrărilor existente va eşua. Se modifică macroinstrucţiunea adăugându-se instrucţiunea GoToRecord cu parametrii din Figura 11.5.

Figura 11.5. Instrucţiunea GoToRecord cu toţi parametrii specificaţi

Pentru că instrucţiunea GoToRecord se aplică formularului deschis, parametri ObjectType şi ObjectName pot lipsi (vezi Figura 11.6).

Figura 11.6. Instrucţiunea GoToRecord fără parametrii Object Type şi Object Name

Rezultatul macroinstrucţiunii este prezentat în Figura 11.7 (acelaşi rezultat se obţine în cazul ambelor definiţii din Figurile 11.5. şi 11.6).

75

Page 77: Curs Baze de Date

Figura 11.7. Rezultatul unei macroinstrucţiuni cu salt la o înregistrare

Dacă valoarea parametrului Offset nu este corectă (de exemplu este mai mare decât numărul total de înregistrări), se va genera eroarea din Figura 11.8 şi execuţia macroinstrucţiunii se va întrerupe şi se va afişa fereastra de întrerupere (pentru exemplu vezi Figura 11.9) În Figura 11.9 se remarcă faptul că eroarea a fost generată când s-a executat instrucţiunea GoToRecord cu valorile parametrilor: 2 (adică valoarea numerică pentru tipul Form), Terti (adică numele formularului), Go To (adică tipul de salt) şi 11 (adică numărul înregistrării specificate pentru salt).

Figura 11.8. Eroare generată de un salt la o

înregistrare inexistentă

Figura 11.9. Fereastra de întrerupere a execuţiei unei macroinstrucţiuni

În continuare se va construi o macroinstrucţiune care va deschide tabelul LiniiFactura şi va afişa doar înregistrările pentru care cantitatea este mai mare decât 20. Stabilirea parametrilor este prezentată în Figurile 11.10 şi 11.11.

Figura 11.10. Parametrii pentru

instrucţiunea OpenTable Figura 11.11. Parametrii pentru

instrucţiunea Apply Filter În continuare se va construi o macroinstrucţiune care va deschide tabelul LiniiFactura şi va afişa doar înregistrările pentru care produsul dintre preţ şi cantitate să fie mai mare decât 100. parametri pentru Open Table sunt cei din Figura 11.10. Pentru calcularea produsului va trebui să construim o expresie, pentru aceasta vom folosi generatorul de expresii. În Figura 8.6 se observă că

76

Page 78: Curs Baze de Date

expresia de calcul conţine numele câmpurilor împreună cu numele tabelului conform sintaxei: [numeTabel]![numeCâmp].

Figura 11.12. Fereastra Expression Builder

După ce s-a construit expresia şi se apasă butonul OK din fereastra Expression Buider, parametrul Where Condition are valoarea: [LiniiFactura]![Cantitate]*[LiniiFactura]![PretFaraTVA]>100 Un rezultat posibil al execuţiei aceste macroinstrucţiuni este prezentat în Figura 11.13.

Figura 11.13. Rezultatul aplicării unui filtru

Rezultatul filtrării va conţine doar acele înregistrări care se potrivesc cu condiţia parametrului Where Condition. În Figura 11.13 se observă cuvântul Filtered folosit atunci când asupra unei mulţimi de înregistrări s-a aplicat un filtru.

77