Download - baze de date suport de curs

Transcript
Page 1: baze de date suport de curs

FACULTATEA DE ŞTIINŢE ECONOMICE, JURIDICE ŞI ADMINISTRATIVE

UNIVERSITATEA DIN PITEŞTI

Lector univ. dr. LOGICA BĂNICĂ

Piteşti, 2007

Page 2: baze de date suport de curs

Cap. 1 Noţiuni introductive.....................................................................................2

1.1 Ce sunt bazele de date?.....................................................................................2

1.2 Securitatea datelor............................................................................................4

1.3 Modelul relaţional al bazelor de date................................................................4Cap. 2 Sistemul de gestiune a bazelor de date Microsoft Access.........................7

2.1 Componentele principale..................................................................................7

2.2 Tabele (Tables).................................................................................................8

2.3 Relaţii între tabele (Relationships).................................................................13

2.4 Interogări (Queries)........................................................................................16

2.5 Formulare (Forms)..........................................................................................23

2.6 Rapoarte (Reports)..........................................................................................28

2.7 Macrocomenzi................................................................................................30

2.8 Exemplu de proiectare a unei baze de date.....................................................32

2.9 Verificarea cunoştinţelor................................................................................36Bibliografie..............................................................................................................37

1

Page 3: baze de date suport de curs

Cap. 1 Noţiuni introductive

1.1 Ce sunt bazele de date?Datele sunt şiruri alfanumerice prin care se reprezintă fapte, obiecte, situaţii rezultate din măsurare sau numărare. Ele sunt stocate pe un suport magnetic, de unde vor fi utilizate direct sau prelucrate într-un anumit scop. Pentru a putea folosi aceste date, ele trebuie organizate într-un anumit mod. Volumul mare de date vehiculate, necesitatea stocării lor şi regăsirea rapidă a anumitor informaţii sunt numai câteva dintre cauzele care au condus la apariţia colecţiilor de date organizate, numite şi baze de date (databases). Definiţie [Ipate] : Bazele de date sunt colecţii de date organizate care servesc unui anumit scop. Organizarea datelor se referă la stocarea, reprezentarea şi accesarea lor într-un mod bine definit. Scopul pentru care sunt create bazele de date îl reprezintă domeniul de interes al acestora, problemele pentru care trebuie să găsească o rezolvare. Astfel, sunt baze de date care se axează pe domeniul economic, bancar, dar există şi baze de date cu scopuri ştiinţifice, militare etc. Datele pe care le conţin BD sunt în mod obişnuit de tip alfanumeric, dar pot fi şi imagini, sunete, elemente multimedia. În arhitectura bazelor de date se disting patru niveluri:

Nivelul conceptual – este fundamental deoarece descrie sistemul ce urmează a fi modelat. Cel mai clar mod de a descrie sistemul este utilizarea unui limbaj natural, a unor diagrame şi a exemplelor. În procesul de modelare se examinează informaţia în amănunt, la fiecare moment de timp. La acest nivel se realizează schema conceptuală, care reprezintă design-ul general al sistemului.

Nivelul extern – se specifică structura bazei de date percepută de utilizatori şi se face legătura între acest design şi schema conceptuală. Dacă sunt mai multe grupuri de utilizatori şi metodele de operare sau navigare diferă de la un grup la altul, se pot proiecta diferite interfeţe cu utilizatorul.

Nivelul logic – are rolul de a realiza transformarea schemei conceptuale într-o schemă logică. În acest scop se alege un model logic de organizare a datelor (ex: modelul relaţional, ierarhic, reţea) care are anumite structuri de date şi operaţii. De exemplu pentru modelul relaţional datele se stochează în tabele, constrângerile se exprimă cu ajutorul cheilor primare şi străine.

Nivelul fizic (intern) – este nivelul la care schema logică se realizează fizic, cu ajutorul unui sistem de gestiune a bazelor de date (SGBD). Se poate spune că se obţine schema internă din schema logică prin intermediul unui SGBD. Structurile de date şi metodele de acces pentru aceeaşi schemă logică pot fi diferite în cadrul aceluiaşi SGBD, ceea ce înseamnă că poate fi implementată prin mai multe scheme interne.

2

Page 4: baze de date suport de curs

Bazele de date oferă utilizatorilor o serie de avantaje, cum ar fi: reducerea redundanţei datelor prin proiectarea unitară a bazei şi evitarea

suprapunerii unor informaţii; păstrarea consistenţei datelor prin propagarea actualizărilor dintr-un fişier la

nivelul întregii baze de date; partajarea datelor între utilizatorii aceleiaşi aplicaţii, dar şi între aplicaţii

diferite; securitatea datelor prin verificarea accesului utilizatorilor pe bază de parolă şi

prin autorizarea operaţiilor de întreţinere de către administratorul bazei de date.

Din definiţie rezultă că bazele de date implică constituirea de colecţii de date structurate, dar şi existenţa unui software de întreţinere şi de exploatare a acestor structuri. În ceea ce priveşte organizarea, bazele de date au evoluat de la simple structuri de date numerice şi de tip text la stocarea de imagini, sunete şi alte elemente multimedia. Programele de întreţinere şi de exploatare a bazelor de date au fost cuprinse într-un ansamblu numit Sistem de Gestiune a Bazelor de Date – SGBD (Database Management System). Definiţie: Sistemul de Gestiune a Bazelor de Date este un software care gestionează o bază de date şi permite utilizatorului să interacţioneze cu aceasta.

Funcţiile unui SGBD sunt următoarele: definirea structurii bazei de date şi stocarea datelor; accesarea datelor în regim mono sau multi-user: interogare, modificare,

ştergere, adăugare; întreţinerea bazei de date: păstrarea consistenţei şi a integrităţii datelor,

compactarea şi reorganizarea bazei de date; securitatea bazei de date: salvarea şi recuperarea datelor în caz de incident,

protecţia la acces neautorizat.Modul conceptual de organizare a datelor folosit de SGBD-uri este descris de modelul de date, care poate fi: ierarhic, reţea, relaţional şi orientat obiect.Modelul ierarhic stochează datele în structuri de tip arbore, care stabilesc legături de tip părinte-copil. Nivelul de început al arborelui, numit rădăcină, poate avea orice număr de descendenţi. La rândul lor, aceştia pot avea descendenţi şi aşa mai departe. Modelul ierarhic a fost utilizat de către primele SGBD-uri, dar în prezent este considerat un model depăşit. Modelul reţea este extensie a modelului ierarhic, în care un descendent poate avea mai mulţi părinţi. El poate reprezenta structuri complexe de date, dar nu are flexibilitate şi este dificil de proiectat. Modelul relaţional se bazează pe organizarea datelor sub formă de tabele, constituite din înregistrări, formate la rândul lor din câmpuri. Tabelele sunt legate între ele prin câmpuri speciale, numite chei. Bazele de date relaţionale sunt cel mai frecvent folosite, datorită modului simplu de realizare şi a flexibilităţii lor.Exemple de SGBDR: Oracle, Sybase, SQL Server, Access.

3

Page 5: baze de date suport de curs

Modelul orientat pe obiecte este cel mai nou tip de SGBD, care integrează principiile programării orientate pe obiecte şi ale bazelor de date. Introducerea conceptului de obiect în cadrul SGBD-urilor a permis utilizarea tipurilor de date neconvenţionale. Acest model constituie suportul logic pentru gestiunea obiectelor complexe (texte, grafice, imagini, sunete) şi a obiectelor dinamice (programe, simulări).

1.2 Securitatea datelorLa proiectarea unei baze de date, asigurarea securităţii este o cerinţă importantă şi este dependentă de nivelurile de securitate ale SGBD-ului în care se lucrează:

1. protecţia prin identificator şi parolă pentru autentificarea utilizatorilor;2. restricţionarea drepturilor anumitor grupuri de utilizatori şi acordarea de

privilegii altora;3. în Oracle orice obiect al bazei de date este proprietatea unui utilizator şi

poate fi accesat numai de acei useri care au privilegiile corespunzătoare. O sursă posibilă de erori în funcţionarea bazelor de date o constituie managementul defectuos în gestionarea multiuser. Concurenţa se defineşte în acest caz prin accesul simultan al mai multor utilizatori la acelaşi set de date, în aceeaşi perioadă de timp. SGBD-ul are sarcina de a face vizibile modificările operate de unul dintre utilizatori celorlalţi (consistenţa) şi de a împiedica modificările incorecte ale datelor (integritatea bazei de date).Pentru rezolvarea accesului concurent, SGBD-ul blochează unitatea de date (locking). Se poate face blocajul la nivel de tabelă sau la nivel de rând (înregistrare), eficienţa fiind mai bună cu cât unitatea de blocare este mai mică.

1.3 Modelul relaţional al bazelor de dateSe caracterizează prin reprezentarea datelor sub formă de structuri

bidimensionale, asemănătoare tabelelor. Avantajele pe care le prezintă acest model sunt: asigură metode şi tehnici eficiente de verificare a coerenţei şi redundanţei

datelor; dispune de un suport teoretic puternic din punct de vedere matematic; asigură un grad înalt de independenţă în raport cu sistemele de calcul; oferă posibilitatea utilizării de limbaje procedurale bazate pe algebra

relaţională; defineşte modul de manipulare a datelor la nivel de relaţie (limbajul SQL).

Componentele de bază ale modelului relaţional sunt:1. Structura relaţională a datelor : datele sunt organizate sub formă de tablouri

bidimensionale (tabele), denumite entităţi sau relaţii. Liniile tabelelor se

4

Page 6: baze de date suport de curs

numesc înregistrări, iar coloanele constituie atributele. Asocierile dintre tabele se fac prin atributele de legătură, denumite chei primare şi externe.Numărul de atribute ale unei entităţi se numeşte aritatea entităţii. O entitate trebuie să satisfacă mai multe condiţii:

fiecare atribut trebuie să aibă un nume, unic în cadrul entităţii; este posibil ca două atribute din două entităţi diferite să poarte acelaşi nume;

fiecare atribut poate avea doar valori atomice, care nu se pot descompune din punct de vedere logic;

fiecare înregistrare a entităţii este unică, unicitatea fiind obţinută cu ajutorul cheilor primare. Când este necesar mai mult decât un atribut pentru identificarea unică a unei înregistrări, avem o cheie compusă.

Nici unul dintre atributele care alcătuiesc cheia primară nu poate avea valoarea Null. Null este o valoare convenţională care indică o valoare necunoscută sau neaplicabilă.

2. Operatorii sistemului relaţional : se referă la setul de operaţii care se pot efectua asupra entităţilor. În algebra relaţională introdusă de Codd există 8 operatori care acţionează asupra entităţilor şi crează tot o entitate. Aceşti operatori sunt implementaţi în cadrul limbajului SQL (Structured Query Language), cel mai frecvent folosit pentru interogarea bazelor de date relaţionale. Sunt operatori ai algebrei relaţionale clasice (de exemplu: Union – reuniunea, Intersect – intersecţia) şi operatori relaţionali speciali (de exemplu: Select – selecţia, Join – compunerea).

3. restricţiile de integritate : reprezintă cerinţele impuse tabelelor, astfel încât baza de date să fie corectă şi coerentă.

Restricţiile (constrângerile) de integritate sunt de două tipuri: Constrângeri structurale: exprimă proprietăţi fundamentale, care ţin de definirea BD. Ele sunt realizate cu ajutorul cheii primare. Cheia primară (Primary key-PK) este un atribut sau un grup de atribute care asigură diferenţa între oricare două înregistrări dintr-un tabel. Nici unul dintre atributele care alcătuiesc cheia primară nu poate avea valoarea Null pentru nici una dintre înregistrările tabelei. Constrângeri de referenţialitate: se stabilesc între două tabele cu ajutorul cheilor primare şi străine. Se defineşte cheie străină (Foreign Key-FK) un atribut sau o mulţime de atribute ale unei entităţi E2, care există şi într-o altă entitate E1 şi care formează cheia primară a entităţii E1.

5

Page 7: baze de date suport de curs

E1 E2Câmp1 E1 - PK Câmp1 E2 – PKCâmp2 E1 Câmp2 E2 - FK

......... ..........

Câmpul2 din entitatea E2 este cheie străină (FK), dacă există şi într-o altă entitate E1, unde formează cheia primară. Câmpul2 din E2 face referinţă la cheia primară din E1. Valorile pe care le ia cheia străină, dacă nu sunt Null, trebuie să se regăsească printre valorile cheii primare la care face referinţă.

Exemple de sisteme de gestiune a bazelor de date relaţionale (SGBDR) consacrate sunt: Oracle, SQL Server, Sybase, Microsoft Access, FoxPro, Paradox.

Proiectarea unei baze de date înseamnă transformarea cerinţelor utilizatorului într-o structură care conţine tabele, interogări, rapoarte, module de program. Pentru o proiectare eficientă, datele sunt separate în tabele în scopul minimizării spaţiului de stocare şi al îmbunătăţirii performanţelor. Conectarea informaţiilor disparate se face ulterior prin intermediul relaţiilor dintre tabele.Etapele de proiectare a bazelor de date sunt:

1. Crearea schemei conceptuale – se descriu datele şi relaţiile independent de orice model de date. Schema are un caracter general şi este o traducere a cerinţelor beneficiarului într-un sistem de ansamblu.

2. Crearea schemei logice a bazei de date – se transformă schema conceptuală în structuri specifice unui SGBD. Se definesc elementele de date specifice şi se face gruparea lor în înregistrări. În cazul modelului relaţional, schema logică va conţine dicţionarul de date, structurile tabelelor, definirea legăturilor şi precizarea modurilor de manipulare a datelor necesare sistemului.

3. Crearea design-ului fizic al bazei de date – schema logică se transformă într-o bază de date coerentă şi se construiesc modulele de program pentru exploatarea ei.

Deşi s-au înregistrat salturi spectaculoase în acest domeniu şi au apărut nenumărate metode şi tehnici, rămânem la concluzia că proiectarea unei baze de date nu înseamnă încadrarea într-un tipar (şablon) şi că performanţele ei depind într-o mare măsură de inteligenţa şi imaginaţia proiectantului.

6

Page 8: baze de date suport de curs

Cap. 2 Sistemul de gestiune a bazelor de date Microsoft Access

2.1 Componentele principaleAccess este o componentă a pachetului de programe Microsoft Office, care

permite crearea şi gestionarea de baze de date de dimensiuni reduse, la care se pot conecta maximum 31 de utilizatori simultan. Pentru baze de date mari (de ordinul Gigabytes-ilor) se recomandă folosirea SGBD-urilor Oracle, SQL Server, Sybase.

Spre deosebire de alte sisteme, Access stochează toate componentele unei baze de date într-un singur fişier, cu extensia *.mdb. Componentele principale ale sistemului Access, numite şi obiecte (Objects) sunt următoarele (fig. 1):

Tabele (Tables) – structuri bidimensionale destinate păstrării datelor; Interogări (Queries) – instrumente de selectare şi de afişare a a datelor din

una sau mai multe tabele, pe bază de criterii; cu ajutorul acestora se pot realiza şi funcţii de creare tabele, adăugare, modificare şi ştergere înregistrări în tabele;

Formulare (Forms) – ferestre destinate introducerii datelor, afişării şi modificării lor; permit crearea interfeţei grafice cu utilizatorul şi afişarea pe ecran a graficelor;

Rapoarte (Reports) – situaţii obţinute pe bază de interogări sau tabele şi care pot fi afişate pe ecran sau la imprimantă;

Macro-comenzi (Macros) – secvenţe de acţiuni care se execută la iniţierea unei singure comenzi a utilizatorului;

Module (Modules) – subprograme scrise în Visual Basic Access (VBA), care pot implementa răspunsuri la evenimente-utilizator, funcţii de prelucrare şi validare a datelor, iniţializări ale bazei de date. O caracteristică importantă a sistemului Access o constituie proiectarea

asistată de „vrăjitori” (Wizards), care oferă asistenţă programatorului la crearea tabelelor, a interogărilor, a formularelor şi a rapoartelor. Aceste instrumente au rolul de a pune la dispoziţia proiectanţilor opţiuni din care pot selecta varianta optimă, de asemenea asigură asistenţă on-line (help) pentru documentarea în timpul proiectării.

Prin stabilirea de relaţii între tabele se asigură coerenţa şi consistenţa bazei de date, astfel încât ştergerile, adăugările, modificările la nivelul unei tabele să nu conducă la disfuncţionalităţi ale sistemului. Totuşi ştergerile de date, crearea şi distrugerea de tabele sunt operaţii care provoacă fragmentarea spaţiului de disc rezervat fişierului .mdb. Acces-ul are integrată comanda Tools->Database Utilities->Compact and Repair Database pentru compactarea periodică a bazei de date şi păstrarea performanţelor ei.

7

Page 9: baze de date suport de curs

Crearea unei baze de date se poate face la deschiderea mediului, dacă se alege opţiunea Blank Access Database, fie ulterior, când mediul este deschis şi se activează opţiunea File->New Database. După deschiderea unei bazei de date sunt accesibile componentele ei, grupate pe tipuri de obiecte (Tables, Queries, Forms etc), aşa cum se observă în fig.1; aşezarea obiectelor pe desktop este caracteristică versiunii Access 2000.

Vor fi prezentate în continuare modalităţi de creare şi exemple de utilizare a obiectelor Access menţionate anterior.

2.2 Tabele (Tables)Sunt structuri de stocare a datelor constituite din linii, numite înregistrări şi

din coloane numite atribute sau câmpuri, cărora li se atribuie un nume, un tip de dată şi o dimensiune. Crearea şi modificarea structurii tabelelor, ca şi încărcarea datelor în tabele se face numai în cadrul opţiunii Objects->Tables.Access oferă mai multe modalităţi de creare a unui tabel: Datasheet View, Design View, Table Wizard, Import Table, Link Table (fig. 2)

Fig. 1 Componente principale ale sistemului Access

Tabele

Interogări

Rapoarte

Macro comenzi

Module

Formulare

8

Page 10: baze de date suport de curs

În modul Datasheet View se crează un tabel cu 20 de câmpuri, având denumirea Field1,..Field 20 şi 30 de înregistrări libere, pregătite pentru completare. În modul Table Wizard, Acces propune două categorii de tabele: Business şi Personal şi în cadrul lor mai multe tipuri de tabele, cu câmpuri predefinite, din care proiectantul să poată alege.Prin Import Table se pot prelua tabele din alte baze de date Access, FoxPro, Paradox sau se pot construi tabele şi prelua date din fişiere text, HTML sau Excel.În modul Link Table nu mai este necesară copierea tabelei în propria bază de date, ci se stabileşte o legătură cu aceasta, astfel încât se pot citi şi modifica datele (dacă există un acces autorizat).Modalitatea cea mai frecvent folosită pentru crearea tabelelor este Design View (fig. 3) şi ea va fi descrisă în continuare pas cu pas:

1. Tables->New->Design View;2. Apar două fereastre pe Desktop: fereastra de proiectare a tabelei (Table

Design), unde se stabilesc câmpurile prin numele (Field Name) şi tipul lor (Data Type) şi fereastra de proprietăţi ale câmpurilor (Field Properties);

3. Se tastează numele câmpului şi se alege unul dintre tipurile de date propuse de Access: Text – şir de caractere; Number – câmp de tip numeric; Date/Time – câmp de tip dată sau timp; Autoincrement – număr cu incrementare automată;

Fig. 2 Modalităţi de creare a tabelelor

9

Page 11: baze de date suport de curs

Yes/No – câmp boolean cu două valori; Lookup Wizard – câmp care preia datele din alt tabel sau dintr-o listă de valori.

4. În funcţie de tipul de dată selectat, fereastra Field Properties va conţine alte informaţii în rubrica Field Size, pe care utilizatorul le poate modifica:

Text: setat pe valoarea implicită 50, dar se pot reprezenta şiruri de maximum 255 de caractere; Number: se pot defini câmpuri de tip Byte (28 – val maximă 255), Integer (216 – valoare maximă + 32768), Long Integer este tipul implicit şi are valoari pe 32 biţi (de la –2.147.483.648 la 2.147.483.647 fără fracţii), Single – numere fracţionare pe 32 biţi cu precizie de 7 cifre ( de la –3.402823E38 la –1.401298E–45) pentru valori negative şi de la 1.401298E–45 la 3.402823E38 pentru valori pozitive.

Valorile numerice Double – numere fracţionare pe 8 bytes cu 15 cifre precizie.

Tipuri de date

Fereastra Field

Properties

Butonul SaveButonul care activează

cheia primară

Fig. 3 Crearea tabelelor în modul Design View

Câmpuri de date – PK

10

Page 12: baze de date suport de curs

5. Se pot completa şi alte rubrici ale ferestrei Field Properties, cum ar fi: Format: personalizează formatul de apariţie (modul de afişare) a valorilor în câmpul respectiv şi depinde de tipul de dată precizat în Data Type:- Date/Time - permite alegerea unui format al datei sau orei dintre cele

propuse: General Date, Long Date, Short Date Long Time, Short Time - Text poate conţine unul dintre caracterele speciale:

@ - un caracter sau un spaţiu trebuie tastat în câmpul respectiv;& - nu este necesară tastarea unui caracter în câmpul respectiv;< - forţează toate caracterele tastate la litere mici; >- forţează toate caracterele tastate la litere mari

- Number specifică formate predefinite (Currency, Euro, Fixed, Standard, Percent, Scientific) sau proprii utilizatorului (informaţii despre modul de afişare a valorilor pozitive, negative, zero şi a numerelor fără valoare - Null);

Input Mask: proprietate care ajută utilizatorul la introducerea datelor în câmpul respectiv:

- 0 impune introducerea pe poziţia respectivă a unei cifre, fără semn;- 9 impune acceptarea unei cifre sau unui spaţiu, fără semn;- # indică acceptarea unei cifre sau unui spaţiu, cu semn;- L solicită introducerea unei litere, obligatoriu;- ? indică introducerea unei litere, opţional;- A impune introducerea unei litere sau unei cifre, obligatoriu;- a impune introducerea unei litere sau cifre, opţional.

Caption: stabileşte titlul câmpului în modul de introducere date; Default Value: reprezintă valoarea iniţială (constantă, expresie sau funcţie) care apare în câmp la adăugarea unei noi înregistrări şi care poate fi modificată ulterior; Validation Rule: se stabileşte o regulă de validare, la nivel de înregistrare, a valorii introduse în acest câmp, prin funcţii sau expresii Access; Validation Text: se tastează un mesaj, care apare ca eroare în timpul introducerii datelor, dacă regula de validare nu este respectată; Indexed: se precizează dacă un câmp, altul decât cheia primară, este index în tabelă şi dacă se acceptă duplicarea valorilor lui; opţiunile posibile: No, Yes (Duplicate OK) şi Yes (No Duplicate);

6. Se stabileşte cheia primară formată din unul sau mai multe câmpuri;7. Se salvează structura tabelei cu opţiunea File->Save sau cu ajutorul

butonului Save şi se precizează numele tabelei.

11

Page 13: baze de date suport de curs

Exemplu de folosire a proprietăţilor unui câmp: Câmpul Categ din tabela de mai jos este de tip Text, are lungimea maximă de 9 caractere şi are setate următoarele proprietăţi: Format: “>” însemnând că toate caracterele care ce se tastează sunt transformate în litere mari; Input Mask: LLL – pe primele trei poziţii se plasează obligatoriu litere

??? - pe următoarele trei poziţii se plasează opţional litereaaa - pe următoarele trei poziţii se plasează opţional litere sau spaţii

Validation Rule: primele litere să nu fie “ABC” Validation Text: dacă s-a tastat combinaţia de litere “ABC” apare mesajul de eroare “Ati tastat propria firma!” Indexed: No, deci câmpul nu constituie index suplimentar.

Fig. 4 Exemplu de utilizare a proprietăţilor unui câmp

12

Page 14: baze de date suport de curs

2.3 Relaţii între tabele (Relationships)Relaţiile se formează prin stabilirea unei legături între un câmp (o

combinaţie de câmpuri) dintr-un tabel şi câmpurile corespunzătoare din alt tabel.Legăturile între tabele sunt de trei tipuri:

1. relaţia unu la mai mulţi ( one-to-many ) – este cea mai frecvent utilizată şi se realizează între cheia primară a tabelei T1 şi un câmp similar, ca tip şi ca dimensiune din T2, numit şi cheie străină. Semnificaţia legăturii este că oricărei valori a câmpului cheie străina-C21 trebuie să-i corespundă o valoare a câmpului cheie cheie-C1. În timp ce în tabela T1 valoarea este unică, în tabela T2 ea se poate repeta de un număr infinit de ori.

Tabela T1 Tabela T2C1 – Primary Key C2 – Primary Key

................ C21 – Foreign Key

................ ..........

2. relaţia mai mulţi la mai mulţi (many-to-many ) – se aplică la cazurile în care valorii unui câmp din prima tabelă îi corespund mai multe valori în a doua tabelă şi invers, unei valori a unui câmp din a doua tabelă îi corespund mai multe valori din prima tabelă. Exemplul clasic al relaţiei este între tabela Studenţi şi Cursuri: un student este înscris la mai multe cursuri, un curs este ţinut pentru mai mulţi studenţi. Rezolvarea problemei se face prin spargerea relaţiei many-to-many în două

relaţii one-to-many, cu ajutorul unei tabele de joncţiune (legătură) – T3. Cheile primare din T1 şi T2 vor constitui (vor face parte) cheia primară compusă a tabelei T3.

Tabela T1 Tabela T2C1 – Primary Key C2 – Primary Key

................

Tabela T3C31 Primary KeyC32 Primary Key

3. Relaţia unu-la-unu ( one-to-one) - are loc între două tabele care au aceeaşi cheie primară. Se defineşte prin intermediul ei o tabelă compusă din cele două tabele iniţiale. Relaţia este utilă în cazul structurilor mari, care au nevoie de mai mult de 255 de câmpuri (limita Access-ului pentru un singur

1

11

13

Page 15: baze de date suport de curs

tabel) sau pentru creşterea vitezei de căutare a datelor, dacă nu toate înregistrările din primul tabel au corespondent în al doilea tabel.

Crearea unei relaţii se face astfel (fig.5):a) Din meniul Tools->opţiunea Relationships sau activând butonul

Relationships se deschide fereastra Relationships;b) Se adaugă tabelele relaţionate din fereastra Show Tables;c) Se selectează câmpul PK din tabela principală şi se „trage” cu ajutorul

mouse-ului până la câmpul corespunzător din tabela asociată;d) Se deschide fereastra de stabilire a detaliilor relaţiei (Edit Relationships):

câmpurile corespunzătoare din tabele, butonul Join Type - tipul de legătură stabilit şi trei casete de validare:

Enforce Referential Integrity – impune integritatea referenţială Cascade Update Related Fields – actualizarea în cascadă a câmpurilor implicate în relaţie; Cascade Delete Related Records – ştergerea în cascadă a câmpurilor implicate în relaţie;

e) Se închide fereastra Relationships şi se salvează legăturile create.

Fig. 5 Stabilirea relaţiilor între tabele

14

Page 16: baze de date suport de curs

Verificarea integrităţii referenţiale este realizată de sistemul Access la solicitarea proiectantului BD şi constă în:

Verificarea câmpurilor incluse în relaţie: să fie de acelaşi tip şi să aibă aceeaşi dimensiune;

Introducerea unei valori în câmpul cheie străină din tabela secundară se face numai dacă această valoare se regăseşte în câmpul cheie primară din tabela principală;

Nu se admit ştergeri sau actualizări ale unei valori a cheii primare atâta timp căt există înregistrări corespunzătoare în tabela secundară;

Pentru realizarea ştergerilor şi actualizărilor în cascadă s-au prevăzut cele două casete de validare Cascade Update şi Cascade Delete. Ştergerea în cascadă înseamnă că o solicitare de ştergere a unei înregistrări din tabela primară va determina ştergerea înregistrărilor corespunzătoare din tabelul asociat. Similar se produce şi actualizarea în cascadă: modificarea valorii câmpului cheie primară din tabela principală determină modificarea tuturor înregistrărilor corespunzătoare din tabela asociată.

Relaţiile dintre tabele conferă consistenţa şi coerenţa bazei de date, de aceea în cadrul proiectării bazei de date stabilirea corectă a legăturilor dintre tabele este foarte importantă.Asocieri – în cursul definirii unei relaţii Access pune la dispoziţie un buton pentru definirea tipului de asociere prestabilit. Asocierea defineşte modul în care înregistrările din tabelele corelate vor fi combinate într-o interogare: Asocieri interne (inner join) – tipul de asociere implicit; o interogare cu asociere

internă va afişa numai acele înregistrări care corespund ambelor tabele. Asocieri externe (outer join) – precizează că o interogare va selecta toate

înregistrările dintr-o tabelă şi numai pe cele care corespund din celălalt tabel. Sunt de 2 tipuri, în funcţie de tabela din care se preiau toate înregistrările:

o Asociere stânga (left join) o Asociere dreapta (right join).

Asocierile externe nu se folosesc prea des deoarece sunt mai puţin flexibile, mai

ales când sunt implicate mai multe tabele. Asociere intrinsecă (self join) – este o relaţie care asociază unui câmp dintr-un

tabel un câmp din acelaşi tabel. Se crează prin duplicarea tabelei şi stabilirea legăturii între câmpuri. Este o asociere foarte performantă deoarece permite căutări recursive. De exemplu: o tabelă care conţine date despre părinţi şi copii.

15

Page 17: baze de date suport de curs

2.4 Interogări (Queries)Interogările sunt componente Access de extragere şi de afişare a a datelor din

una sau mai multe tabele/interogări, pe bază de criterii. Un alt scop pentru care se folosesc interogările îl constituie modificarea structurii şi conţinutului bazei de date (funcţii de creare tabele, adăugare, modificare şi ştergere înregistrări în tabele). Prima categorie formează interogările de selecţie, cea de-a doua formează interogările de acţiune.

O interogare se transformă într-o instrucţiune a limbajului SQL (Structured Query Language), recunoscut de toate bazele de date relaţionale. În acest paragraf ne vom referi numai la interogările de selecţie, care la rândul lor pot fi: interogări simple, interogări total şi interogări tabel încrucişat. Funcţiile unei interogări de selecţie: Preluarea câmpurilor din mai multe tabele relaţionate; Selectarea înregistrărilor care îndeplinesc anumite criterii; Sortarea înregistrărilor după unul sau mai multe câmpuri, ascendent sau

descendent; Introducerea de câmpuri noi, de tip valoare, rezultate ca urmare a unor calcule.Sunt mai multe modalităţi de a construi o interogare (fig. 6), dintre acestea vom alege modul Design View.

Fig. 6 Modalităţi de construire a interogărilor

16

Page 18: baze de date suport de curs

Etapele de realizare a unei interogări sunt următoarele (fig. 7):1. Objects Queries->New->Design View;2. Se deschide fereastra Query Design şi fereastra Show Tables/Queries;3. Se adaugă câmpurile din tabele în grila de ieşire (prin tragere cu mouse-ul,

dublu click pe câmp, selectare în rubrica Field);4. Se definesc câmpurile şi ordinea de sortare (rândul Sort - Ascending sau

Descending);5. Se indică afişarea sau nu a fiecărui câmp (rândul Show- caseta de validare);6. Se stabilesc criteriile de selecţie (rândul Criteria);7. Se adaugă câmpurile noi, calculate;8. Se execută interogarea activând butonul Run sau opţiunea Query->Run.9. Se salvează interogarea, activând butonul Save sau opţiunea File->Save, dacă se

consideră că răspunde cerinţelor de proiectare.

Pentru definirea criteriilor de selecţie multiple există două variante: introducerea lor în câmpurile respective pe aceeaşi linie (Criteria), ceea ce

implică selectarea înregistrărilor care îndeplinesc toate criteriile menţionate; introducerea lor în câmpurile respective pe linii diferite (linia Criteria şi

liniile or), ceea ce implică selectarea înregistrărilor care îndeplinesc unul dintre criteriile menţionate.

Buton de execuţie

Tipuri de interogări

Stabilirea criteriilor

Ordinea de sortare

Fereastra Query Design

Câmp calculat

Fig. 7 Construirea interogării de selecţie

17

Page 19: baze de date suport de curs

Condiţiile de selecţie sunt specificate cu ajutorul unor operatori de comparare, cum ar fi: <, >, =, <>, Like (comparare cu un nume generic scris cu caractere de inlocuire), Between (valoare incadrata intr-un interval dat). Câteva exemple de criterii de selecţie:1. < Date()-30 ‘în câmpul respectiv data să fie cu 30 zile în urmă2. Like „Pop*” ‘se acceptă numele care încep cu Pop: Popa, Popescu3. Between 1 and 100 ‘numere cuprinse între 1 şi 100

În criteriile de selecţie se folosesc constante sau parametri, a căror valoare se precizează de către utilizator în timpul execuţiei. De exemplu, se poate înlocui criteriul din imagine prin secvenţa:

Between [param1] and [param2]

În cadrul interogărilor există posibilitatea adăugării de câmpuri calculate, aşa cum este câmpul total de plata din fig.7. Pentru aceasta, într-o coloană liberă se tastează numele câmpului (diferit de cele existente în tabele), urmat de semnul „:” şi formula de calcul prin care se obţine. În imaginea de mai sus, câmpul calculat este rezultatul adunării câmpurilor [rata] şi [dob]. Pentru obţinerea de câmpuri calculate de tip numeric se pot folosi operatori aritmetici, iar pentru câmpurile de tip text se pot folosi operatori de lucru cu şiruri de caractere. De exemplu, cu ajutorul operatorului de concatenare (&) se compun câmpurile Nume şi Prenume pentru a rezulta un nou câmp, Student:

Student: [Nume]&” „&[Prenume]

Interogări de tip total (Totals) – realizează gruparea înregistrărilor, după anumite câmpuri şi aplică funcţii de însumare, contorizare, medie aritmetică etc asupra valorilor unui câmp din gruparea respectivă.Pentru a crea o interogare de acest tip se procedează astfel (fig. 8):1. Se realizează o interogare de selecţie simplă în care sunt specificate câmpurile

pe care se face gruparea şi câmpurile asupra cărora se aplică funcţiile;2. Se activează butonul Totals ceea ce determină apariţia în grila Query a rândului

Total;3. În coloana câmpului totalizat se alege funcţia agregat care se va aplica:

Count – numărarea înregistrărilor din grupare Sum - calcularea totalului valorilor din grupare Avg - calcularea mediei aritmetice a valorilor din grupare StDev - calcularea deviaţiei standard a valorilor din grupare Min sau Max – identificarea valorii minime sau maxime First sai Last – selectarea primei sau ultimei valori din grupare, conform

ordinii de sortare Expression – crearea unei expresii calculate în câmpul respectiv;

18

Page 20: baze de date suport de curs

Where – indică utilizarea câmpului numai pentru criterii de selecţie (nu este afişat la execuţia interogării)

Observaţie: În cazul opţiunii Count şi Avg înregistrările care conţin valoarea Null nu sunt luate în consideraţie.

În exemplul din fig. 8 se face totalul valorilor ratei (câmpul rata) şi dobânzii (câmpul dob) pentru fiecare număr de contract (câmpul nrc). Se observă că nu a mai fost selectat câmpul luna, deoarece el ar fi schimbat conţinutul interogării, în sensul că s-ar fi făcut un total pe contract şi pe lună al ratelor şi dobânzilor.La execuţia interogării, câmpul rata ar avea titlul SumOfrata, iar câmpul dob ar avea titlul SumOfdob. Pentru a schimba aceste titlurile implicite, am adăugat în linia Field, în faţa denumirii câmpurilor, noua lor denumire, Total rate şi Total dobanzi, urmată de semnul “:”.

Facem precizarea că este logic ca un câmp să apară de două ori în interogarea de tip Total dacă el constituie, în acelaşi timp şi criteriu de grupare şi câmp căruia i se aplică o funcţie agregat.

Butonul Totals

Rândul Total

Funcţiile agregat

Modificarea titlului câmpului,

la execuţie

Fig. 8 Construirea interogării de tip Total

19

Page 21: baze de date suport de curs

Interogări de tip tabel încrucişat (Crosstab) – reprezintă o variantă a interogărilor de tip Totals în care valorile unuia dintre câmpurile Group By se transformă în titluri ale coloanelor, în timpul execuţiei interogărilor. Ele grupează datele în două moduri şi afişează o valoare în punctul de intersecţie. Sunt definite trei tipuri de câmpuri:

Unul sau mai multe câmpuri care să furnizeze titlurile de rând (Row Heading) la afişarea datelor;

Un singur câmp, obligatoriu, care să furnizeze titlurile de coloană (Column Heading) la execuţia interogării; câmpul respectiv trebuie să conţină un număr limitat de valori, pentru ca interogarea să aibă sens;

Un singur câmp, obligatoriu, care să furnizeze valorile de afişat (Value) la intersecţia dintre linia şi coloana respectivă; valorile sunt obţinute prin aplicarea unei funcţii agregat (Sum, Count, Avg) câmpului respectiv.

Access oferă posibilitatea creerii interogărilor de tip tabel încrucişat printr-un program Wizard, Crosstab Query Wizard sau în modul Design View, opţiunea Query - Crosstab. Vom aborda în lucrare cea de a doua modalitate de lucru.

Pentru a crea o interogare de tip Crosstab în modul Design View se procedează astfel (fig. 9):1. Se realizează o interogare de selecţie simplă în care sunt specificate câmpurile

pe care se face gruparea şi câmpurile asupra cărora se aplică funcţiile;2. Opţional, se activează butonul Totals pentru a selecta câmpul şi funcţia agregat

corespunzătoare;3. Se activează interogarea de tip tabel încrucişat fie din butonul Query Type, fie

din meniul Query, opţiunea Crosstab Query; apare linia Crosstab în grila interogării;

4. Se stabilesc câmpurile Row Heading (pot fi mai multe), Column Heading (obligatoriu unul) şi Value (obligatoriu unul şi anume cel căruia i s-a ataşat funcţia agregat);

5. Se execută interogarea (butonul Run) şi se salvează (butonul Save).

La sfârşitul capitolului va fi prezentat un exemplu de bază de date, care va conţine şi interogări de selecţie simple, de tip Total şi Crosstab.

20

Page 22: baze de date suport de curs

Interogări de acţiune - au ca efect modificarea structurii sau a datelor din baza de date. Sunt 4 tipuri de interogări de acţiune:

1. Make Table – crează o tabelă nouă pornind de la alte tabele existente;2. Append – adaugă înregistrări, obţinute prin preluarea valorilor din alte tabele,

într-o tabelă existentă;3. Update – actualizează (modifică) valoarea din câmpurile specificate;4. Delete – şterge înregistrări selectate dintr-o tabelă.

Execuţia interogărilor de acţiune este precedată de un mesaj de avertisment, dacă opţiunea SetWarnings nu a fost dezactivată:“Are you sure you want to run this action query?”Este indicat să se vizualizeze înregistrările selectate de interogarea de acţiune, prin deschiderea interogării în modul Design, trecerea în modul de afişare Datasheet şi execuţia cu Run.Access nu permite anularea efectului interogărilor de acţiune. Modificările aduse bazei de date sunt permanente şi ireversibile. De aceea este bine să existe o copie de siguranţă a bazei de date care să permită revenirea la starea anterioară.

Fig. 9 Construirea interogării de tip Crosstab

Butonul Query Type

Rândul Crosstab

Selectare opţiuni

Crosstab

21

Page 23: baze de date suport de curs

1. Make Table – extrage datele din mai multe tabele relaţionate şi crează o tabelă nouă în baza de date curentă sau într-o altă bază de date. De câte ori se execută, se şterge tabela anterioară şi se rescrie. Se crează astfel:

se construieşte o interogare de selecţie în care se adaugă câmpurile din tabelele sursă;

din meniul Query sau activând butonul Query Type se alege opţiunea Make Table;

apare o casetă de dialog în care se precizează numele noii tabele create.Se utilizează în special pentru crearea tabelelor temporare, care se şterg frecvent. Crearea şi eliminarea frecventă a tabelelor temporare conduce la mărirea dimensiunii spaţiului alocat bazei de date. De aceea se recomandă compactarea periodică a bazei de date sau crearea tabelelor temporare într-o altă bază de date.

2. Append – adaugă înregistrări din mai multe tabele relaţionate într-o tabelă existentă. Etapele de creare sunt:

se construieşte o interogare de selecţie în care se adaugă câmpurile din tabelele sursă;

din meniul Query sau activând butonul Query Type se alege opţiunea Append;

în caseta de dialog se precizează numele tabelei destinaţie; apare linia Append To unde se completează automat câmpurile destinaţie

care au numele identic cu al câmpurilor sursă sau se completează de către proiectant, dacă numele nu coincid.

Se recomandă precizarea unor chei primare în tabela destinaţie, care să nu permită dublarea înregistrărilor.O utilizare frecventă a interogărilor de tip Append este la arhivarea datelor.

3. Update – selectează anumite înregistrări dintr-o tabelă pe bază de criterii şi actualizează valoarea unui câmp. Se crează ca orice interogare de selecţie, devenind efectiv o interogare de tip Update la activarea opţiunii Update din meniul Query:

se construieşte o interogare de selecţie în care se adaugă câmpul de actualizat şi câmpul care furnizează criteriul de selecţie;

din meniul Query sau activând butonul Query Type se alege opţiunea Update;

apare linia Update To unde se completează noile valori.Dacă se face actualizarea unui câmp care este cheie primară într-o tabelă şi relaţia între tabele prevede actualizări în cascadă (Cascading Updates) se preiau aceste modificări şi în tabelele unde câmpul respectiv este cheie străină.Pentru a avea siguranţa că sunt selectate corect înregistrările se execută interogarea iniţial în modul Datasheet View.

3. Delete – permite ştergerea dintr-o tabelă a înregistrărilor care îndeplinesc o anumită condiţie. Crearea unei interogări Delete:

22

Page 24: baze de date suport de curs

se pleacă de la o interogare de selecţie în care se adaugă tabela şi se selectează câmpurile care furnizează criteriile de selecţie ale înregistrărilor;

din meniul Query sau activând butonul Query Type se alege opţiunea Delete;

apare linia Where unde se completează criteriile.Pentru selectaţia corectă a înregistrărilor care se vor şterge se execută interogarea iniţial în modul Datasheet View.Dacă tabela în care se şterg înregistrări este implicată în relaţii de tip one-to-many cu alte tabele şi a fost prevăzută opţiunea de ştergere în cascadă (Cascading Deletes) atunci se vor şterge şi înregistrările din tabelele relaţionate.

2.5 Formulare (Forms)Formularele sunt ferestre destinate introducerii datelor, afişării şi modificării

lor. De asemenea, ele permit crearea interfeţei grafice cu utilizatorul şi a graficelor realizate pe bază de interogări sau tabele.Formularele permit introducerea datelor în mai multe tabele asociate, pot conţine butoane de comandă şi câmpuri calculate, ceea ce nu este posibil la încărcarea directă a datelor în tabele. Crearea şi modificarea formularelor se face în cadrul opţiunii Objects->Forms. Access oferă mai multe modalităţi de a crea un formular: Design View, Form Wizard, Autoform, Chart Wizard (fig.10În modul Design View – se proiectează formularul element cu element, folosind instrumentele Access din ToolBox.În modul Form Wizard se lucrează sub asistenţa „vrăjitorului”, care propune variante din care proiectantul să poată alege. Modalităţile Autoform (Columnar Tabular, Datasheet) sunt tot de tip Wizard şi ele realizează într-o manieră foarte simplă o aşezare specială a câmpurilor în fereastră, pentru fiecare dintre cele trei tipuri.Prin Chart Wizard se pot construi grafice pe baza informaţiile din interogări sau tabele de date şi sub asistenţa „vrăjitorului”. Graficele obţinute pe formular nu se pot lista la imprimantă.În modul Pivot Table Wizard se crează formulare pentru afişarea datelor din Excel.

23

Page 25: baze de date suport de curs

Modalitatea cea mai frecvent folosită pentru crearea formularelor este Form Wizard (fig. 11) şi ea va fi descrisă în continuare pas cu pas:

1. Forms->New->Form Wizard;2. Selectarea tabelei (sau a interogării) pe baza căreia care se construieşte

formularul;3. Selectarea câmpurilor cuprinse în formular;4. Alegerea tipului de aşezare (layout) a câmpurilor de date pe formular:

Columnar, Tabular, Datasheet sau Justified;5. Alegerea unui fundal pentru fereastra formularului: Blends, Standard,

International, Stone etc 6. Stabilirea titlului şi salvarea formularului.

Pentru modificarea formularului astfel obţinut în sensul adăugarii/ştergerii de câmpuri sau al adăugării de controale (butoane de comandă, cutii de tip text, butoane de tip opţiune, casete de validare etc) se deschide formularul în modul Design View (fig. 12) şi se folosesc instrumentele din ToolBox.

Fig. 10 Modalităţi de creare a formularelor

24

Page 26: baze de date suport de curs

Atât formularul, cât şi controalele plasate pe suprafaţa lui au ataşate o serie de proprietăţi, care se pot modifica. De asemenea, lor li se pot ataşa proceduri scrise în Visual Basic, care să răspundă la anumite evenimente declanşate de utilizatori în

Alegerea tabelei sau interogării

Fig. 11 Crearea formularelor cu Form Wizard

Câmpurile selectate să apară

pe formular

Fig. 12 Deschiderea formularelor în modul Design View

Cutia de instrumente (ToolBox)

Formular obţinut cu

Form Wizard

25

Page 27: baze de date suport de curs

timpul execuţiei (activarea unui buton, apăsarea unei taste, redimensionarea ferestrei, focalizarea). Dintre proprietăţi importante sunt şi cele care permit sau inhibă introducerea de noi înregistrări, editarea sau ştergerea celor existente.

Proprietăţile formularului – se ajunge la fereastra Properties a oricărui obiect în mai multe moduri: din meniul View-opţiunea Properties sau activând butonul de pe bara de instrumente sau dublu-click pe obiect. Pentru formular cele mai importante proprietăţi sunt conţinute în grupul Data: RecordSource: precizează numele tabelei sau al interogării pe care este construit

formularul; AllowEdits – Yes, valoare implicită care permite editarea înregistrărilor; AllowDeletions – Yes, valoare implicită care permite ştergerea înregistrărilor; AllowAdditions – Yes, adăugarea de noi înregistrări; DataEntry – dacă este setat pe Yes formularul poate fi folosit numai pentru

introducerea de noi înregistrări (nu are efect dacă AllowAdditions este No);Proprietăţile din grupul Format controlează aspectul formularului: Caption – titlul formularului; ScrollBars – bare de derulare pe verticală şi/sau orizontală; Picture, Picture Type, Picture Size Mode – plasarea unei imagini pe fundal,

includerea ei în aplicaţie, adaptarea imaginii la dimensiunile formularului.

Adăugarea unui buton de comandă – se face cu ajutorul casetei de instrumente ToolBox. Se procedează astfel:

1. se deschide un formular existent sau un formular nou în Design View;2. se selectează controlul CommandButton din ToolBox;3. se desenează controlul pe formular şi la sfârşitul acestei operaţii un

Wizard stabileşte legătura cu un eveniment;4. Categoriile de acţiuni predefinite ale CommandButton Wizard sunt

următoarele: Record Navigation – deplasare şi căutare înregistrări în cadrul

tabelei curente (Go To First, Go To Next, Find Record); Record Operations – adăugări, ştergeri, duplicare, listare

articole; Form Operations – operaţii de lucru cu formulare (Open Form,

Close Form, Print Form etc); Report Operations - operaţii de lucru cu rapoartele (Preview

Report, Print Report, Send Report To File etc); Application – lansarea în execuţie a altor aplicaţii (Run

Application, Run MS Word, Run MS Excel etc); Miscellaneous – execuţia de interogări sau macroinstrucţiuni

(Run Query, Run Macro).5. Se stabileşte imaginea sau textul care se va plasa pe buton;6. Se precizează numele controlului şi se închide aplicaţia Wizard.

26

Page 28: baze de date suport de curs

Formularele se pot afişa în 3 moduri: Design – mod de proiectare, în care utilizatorul are acces la controale şi la

proprietăţile lor, putând să le modifice; Datasheet – mod de afişare a datelor asemănător cu afişarea directă a tabelului

sau interogării; Form – mod de afişare specific pentru formulare, în care se ţine cont de

proprietăţile setate în modul de proiectare.

Subformularele – sunt formulare ataşate altor formulare. Două tabele relaţionate pot fi afişate şi modificate simultan folosind reprezentarea în cadrul unui formular Access a unui alt formular, numit şi subformular. Dacă între două tabele există o relaţie de tip “one-to-many”, în formularul principal se afişează o înregistrare din tabelul primar, iar în subformular se pot observa înregistrările corespunzătoare din tabelul asociat, având valoarea cheii străine egală cu valoarea cheii primare. Este o metodă care simplifică încărcarea datelor în tabelele relaţionate pentru că utilizatorul nu mai trebuie să reţină valorile cheii primare la introducerea datelor în tabela secundară. Observaţie 1: dacă o tabelă este implicată în mai multe relaţii, se poate construi un formular cu mai multe subformulareObservaţie 2: un subformular poate conţine un alt subformular, dacă relaţia între tabele este de tip “one-to-many-to-many”. Access nu permite mai mult de trei niveluri de imbricare.

Sunt mai multe metode de obţinere a unui formular cu subformular:1. Se lansează Form Wizard pe o interogare care implică ambele tabele, ceea ce

ofera proiectantului facilitatea de a alege opţiunea de creare formular cu subformular;

2. Se crează formularul principal (cel mai simplu cu Form Wizard), se deschide în Design View şi se foloseşte controlul Subform/Subreport din caseta de instrumente (ToolBox) pentru proiectarea subformularului; programul wizard declanşat de acest control are posibilitatea de a crea subformularul pe baza tabelei secundare sau de a folosi un formular existent pe această tabelă.

3. Se crează un formular pe tabela principală şi un formular pe tabela secundară; se deschide formularul principal în Design şi se “trage” numele subformularului din fereastra Database.

2.6 Rapoarte (Reports)Rapoartele sunt situaţii obţinute pe bază de interogări şi tabele, care pot fi

afişate pe ecran sau la imprimantă.

27

Page 29: baze de date suport de curs

Spre deosebire de formulare, rapoartele extrag datele din tabele, nu pot modifica conţinutul lor. Ele parcurg secvenţial înregistrările, afişează câmpurile selectate şi eventual generează subtotaluri sau rezumate, dacă s-au introdus opţiuni de grupare pe câmpuri la crearea raportului. Datele pot fi grupate pe un număr de maxim zece niveluri diferite, fiecare dintre ele furnizând anumite informaţii sintetice.Lucrul cu rapoarte este permis în cadrul opţiunii Objects->Reports.Sunt mai multe tehnici de a construi un raport: Design View, Report Wizard, AutoReport, Chart Wizard, Label Wizard şi există multe similitudini între acestea şi metodele de creare a formularelor, de aceea le vom prezenta pe scurt: Design View – proiectarea raportului folosind instrumentele Access din

ToolBox; Report Wizard – proiectare asistată de „vrăjitor”, care propune variante din care

proiectantul să poată alege; AutoReport (Columnar, Tabular) - sunt metode de tip Wizard care realizează

aşezarea pe coloane sau sub formă de tabel a datelor în situaţie; Chart Wizard – crearea de grafice pe baza de interogări sau tabele, cu asistenţa

„vrăjitorului” şi care se pot lista la imprimantă; Label Wizard – obţinerea de etichete standard sau utilizator din informaţiile

preluate din tabele sau interogări. Tehnica cea mai simplă şi mai utilizată pentru crearea rapoartelor este Report Wizard şi necesită parcurgerea etapelor următoare:

1. Reports->New->Report Wizard;2. Selectarea interogării pe baza căreia care se construieşte raportul;3. Selectarea câmpurilor care se afişează în raport;4. Stabilirea nivelurilor de grupare (fig. 13)5. Prin bifarea casetelor de validare corespunzătoare câmpurilor numerice, se

stabileşte care este tipul de operaţie aplicat grupării (fig. 14), dintre cele valabile (Sum, Avg, Min, Max);

6. Alegerea tipului de aşezare (layout) a câmpurilor de date pe raport: Stepped, Block, Outline etc şi orientarea paginii: Portrait sau Landscape;

7. Alegerea unui stil al raportului: Bold, Casual, Compact, Soft Gray;8. Specificarea titlului şi salvarea raportuluilui.

28

Page 30: baze de date suport de curs

Pentru modificarea raportului astfel obţinut în sensul adăugarii/ştergerii de câmpuri, de grupări şi subtotaluri se deschide raportul în modul Design View şi se foloseşte caseta de instrumente ToolBox (fig. 15) Se observă în modul Design că rapoartele conţin anumite zone, care pot fi unice la nivelul raportului (antetul şi subsolul raportului - Report Header/Report Footer) sau se pot repeta la nivel de pagină (antetul şi subsolul paginii - Page Header/Page

Fig. 13 Stabilirea nivelurilor de grupare

Grupare pe denumire

produs

Fig. 14 Tipul de operaţie aplicat câmpurilor numerice ale grupării

Grupare pe cod furnizor

29

Page 31: baze de date suport de curs

Footer) şi la nivel de înregistrare (secţiunea Detail). Există, de asemenea căte un antet şi un subsol pentru fiecare grupare a raportului. În modul Design View conţinutul lor poate fi modificat de proiectant, ele conţinând etichete (Labels), casete de tip text (TextBox) şi alte controale de tip Access.

Un exemplu de folosire a casetei de tip text în cadrul raportului este pentru numerotarea înregistrărilor afişate în secţiunea Detail. Se alege din proprietăţile controlului TextBox, din meniul Data, proprietatea ControlSource şi i se atribuie valoarea 1. Proprietatea RunningSum setată pe valoarea Over_Group numerotează înregistrările pe grup, iar valoarea Over_All numerotează toate înregistrările.

2.7 MacrocomenziPermit gruparea mai multor acţiuni şi executarea lor repetată la declanşarea unui eveniment, cum ar fi: activarea unui buton sau unui element de meniu, apăsarea unei taste, focalizarea unui control grafic.Se îmbunătăţeşte semnificativ interfaţa aplicaţiei cu utilizatorul prin folosirea comenzilor grupate în macro.În unele situaţii, comenzile macro reprezintă singura posibilitate de realizare a anumitor cerinţe ale proiectantului: Meniuri utilizator; Executarea unei succesiuni de comenzi la deschiderea bazei de date –

macrocomanda specială Autoexec;

Fig. 15 Deschiderea raportului în modul Design View

30

Page 32: baze de date suport de curs

Definirea unor taste care să execute comenzi rapide în cadrul unei aplicaţii – macrocomanda specială Autokeys.

Dezavantajul utilizării macro este că nu oferă nicio modalitate de revenire asupra operaţiilor executate. Comenzile macro reprezintă cea mai simplă metodă de programare în Access, care permite obţinerea unei aplicaţii.Pentru a crea o macrocomandă se parcurg următoarele etape:

1. Butonul MACROS – opţiunea New;

2. Apare fereastra de dialog din fig.16 în care se stabilesc comenzile componente (coloana Action) şi argumentele sau specificaţiile lor (fereastra Action Arguments).

3. După definirea listei de comenzi se salvează macro şi se execută cu Run.

Există posibilitatea includerii de subcomenzi macro în cadrul unui singur grup de macrocomenzi, prin adăugarea coloanei Macro Names din meniul View. Această facilitate se foloseşte la crearea de meniuri utilizator şi la definirea macrocomenzii speciale Autokeys.

Macrocomanda AUTOEXEC se crează similar cu orice alta, are caracteristic faptul că se execută la fiecare deschidere a bazei de date.

Fig. 16 Crearea unei macrocomenzi

31

Page 33: baze de date suport de curs

Se poate anula executarea ei automată dacă la deschiderea bazei de date utilizatorul activează tasta Shift. Ea are rolul de a deschide formularul care constituie interfaţa grafică cu utilizatorul.Macrocomanda AUTOKEYS permite definirea unor comenzi rapide de la tastatură în interiorul aplicaţiei Access. Atribuirile de combinaţii de taste unor operaţii trebuie astfel făcută încât să nu anuleze definiţiile de taste din sistemul de operare Windows. De exemplu: nu se recomandă folosirea combinaţiei de taste Ctrl+X, Ctrl+C şi Ctrl+V, care sunt folosite în Windows pentru decuparea, copierea şi refacerea unei zone Clipboard.O macro Autokeys se crează ca orice grup de comenzi, având în coloana Macro Names definite combinaţiile de taste, iar în coloana Action operaţia care se execută la activarea lor. De exemplu: Macro Names Action Arguments

{F4} MsgBox specificatiile de mesaj^ F OpenForm specificatiile unui formular

Se pot activa oricând în timpul lucrului cu baza de date folosind tasta specială F4, respectiv combinaţia de taste CTRL+F.

2.8 Exemplu de proiectare a unei baze de dateProblema de rezolvat: Să se proiecteze o bază de date a unei agenţii de

turism, care să ofere clienţilor săi servicii optime şi la tarife acceptabile.Schema de proiectare a bazei de date cuprinde: serviciile oferite de agenţie, contractele realizate cu clienţii şi serviciile cerute de aceştia în cadrul unui contract:

Tabela SERVICII Tabela CLIENŢI Tabela CONTRACTE

PK Cod_serv Byte PK CNP Text 13 PK Nrcontract Byte

Denumirea serv Text 30 PK Nrcontract Byte Data_contract Date/

Time

Tarif_serv Long

Integer

PK Cod_serv Byte

Nume_client Text30

Nr_serv Byte

Pentru satisfacerea cerinţelor beneficiarului, proiectantul trebuie să realizeze baza de date parcurgând următoarele etape:

1. Să construiască tabelele şi relaţiile dintre ele conform schemei de proiectare;2. Să realizeze un formular pentru introducerea datelor în tabela clienţi;3. Să proiecteze o interogare care să vizualizeze numele clientului, serviciile

solicitate şi valoarea lor pentru un anumit contract;

32

Page 34: baze de date suport de curs

4. Să construiască un raport care să prezinte datele din interogarea anterioară, cu subtotaluri valorice pentru fiecare client şi pentru fiecare contract.

1) După ce a fost realizată structura celor 3 tabele, se stabilesc relaţiile dintre ele:

2) Formularul de încărcare date in tabela SERVICII, cu subformularul CLIENŢI se proiectează cu Form Wizard şi arată astfel:

3) Se proiectează în modul Design View interogarea care să vizualizeze numele clientului, serviciile solicitate şi valoarea lor pentru un anumit contract. Câmpul valoare este un câmp calculat şi se obţine din [nr_serv]*[tarif_serv].

33

Page 35: baze de date suport de curs

În urma execuţiei interogării obţinem situaţia:

4) Se construieşte un raport pe baza interogării de la punctul anterior, cu Report Wizard, având grijă să precizăm ca niveluri de grupare:

Nivelul 1: Nrcontract Nivelul 2: Nume_client

Se va face un subtotal pe câmpul valoare pentru fiecare client şi pentru fiecare contract. Se fac modificări în Design View care ţin de forma raportului şi nu de conţinutul acestuia. În urma execuţiei se obţine următoarea situaţie:

34

Page 36: baze de date suport de curs

Se salvează baza de date sub numele Agenţie.mdb şi se testează funcţionarea ei prin adăugarea altor seturi de date. Pentru un număr de 10 înregistrări în tabela Clienţi, 5 înregistrări în tabela Servicii şi 4 înregistrări în tabela Contracte, baza de date ocupă un spaţiu pe hard disk de 344 Kb.

2.9 Verificarea cunoştinţelor

1. Care este definiţia bazelor de date?

2. Care sunt avantajele utilizării bazelor de date?

3. Ce modele de baze de date cunoaşteţi?

4. Definiţia sistemelor de gestiune a bazelor de date. Exemple.

5. Care sunt funcţiile unui sistem de gestiune a bazelor de date?

6. Componentele de bază ale modelului relaţional.

7. Ce se înţelege prin restricţii de referenţialitate în SGBDR-uri?

8. Care sunt elementele principale ale SGBDR-ului Access?

9. Precizaţi care sunt tipurile de relaţii între tabele în sistemul Access.

10.Ce este cheia primară şi care este rolul ei într-o tabelă?

35

Page 37: baze de date suport de curs

11.Cum se poate păstra coerenţa şi consistenţa bazelor de date Access?

Se va face referire la actualizările şi ştergerile de înregistrări în cascadă.

12.Ce tipuri de date pot conţine tabelele ? Daţi câteva exemple.

13.Care este rolul interogărilor? Precizaţi tipurile de interogări.

14. Ce se înţelege prin „vrăjitori” şi unde sunt ei folosiţi?

15.Ce sunt formularele şi cum se pot obţine ?

16.Ce sunt rapoartele şi care este modalitatea cea mai simplă de obţinere a lor?

17.Cum se regăsesc bazele de date Access pe un harddisk ?

Bibliografie

1. Ipate, F.E., “ Dezvoltarea aplicaţiilor de baze de date în Oracle 8 şi Forms 6

“, Editura BIC ALL, 2000

2. Patriciu, V., “Criptografia şi securitatea reţelelor de calculatoare “, Editura

Tehnică, 1994

3. Năstase, P., Mihai, F., “Baze de date - Access 2000“, Editura Teora, 2001

4. Jennings, R., “Totul despre Access 2000“, Editura Teora, 2002

5. Allen Browne, Alison Balter, “Bazele Access 95”, Editura Teora 1999

6. Coculescu, L., Cristea, V.,Pilat, F., Patriciu, V.,”Proiectarea sistemelor

informatice”, Ed.Militară, Bucuresti 1998

7. Alison Balter, “Invata singur MS Office ACCESS 2003 in 24 de ore, Editura

Niculescu, 2006

36

Page 38: baze de date suport de curs

8. Băduţ, M., “Informatica pentru manageri”, Editura Teora, 1999

9. Roşca, I.Gh.,Bucur, C.M., Timofte-Stanciu, C. Paiu, O., Vişan, M.,

“Comerţul electronic: concepte, tehnologii şi aplicaţii“, Editura Economică,

2004

10.Milosescu, M. „Informatica-Tehnologii asistate de calculator-IT2”, Editura

Teora, Bucuresti, 2001

11.Rusu, L, „Managementul sistemelor informatice”, Presa Universitara

Clujeana, Cluj-Napoca, 2001

37