Lector univ. drd.

Mihai Gavotă

BAZE DE DATE

Bucureşti - 2001

CUPRINS

CUPRINS ...................................................................................................................................................... 2 1. INTRODUCERE ........................................................................................................................................ 4 2. TERMINOLOGIE ŞI MODELE DE DATE ................................................................................................. 6 2.1. MODELE DE DATE ........................................................................................................................... 7 2.1.1. Modelul relaţional........................................................................................................................ 7 3. BAZE DE DATE RELAŢIONALE.............................................................................................................. 9 3.1. SCURT ISTORIC ............................................................................................................................... 9 3.2. TIPURILE DE RELAŢII ...................................................................................................................... 9 3.2.1. Relaţiile „unu la unu”................................................................................................................. 10 3.2.2. Relaţiile „unu la mulţi” ............................................................................................................... 10 3.2.3. Relaţiile „mulţi la unu” ............................................................................................................... 11 3.2.4. Relaţiile „mulţi la mulţi”.............................................................................................................. 12 3.3. REGULI DE NORMALIZARE........................................................................................................... 13 4. ACCESS 2000 ........................................................................................................................................ 17 4.1. DE CE ACCESS? ............................................................................................................................ 17 4.2. CE VOR CONŢINE CAPITOLELE URMĂTOARE? ......................................................................... 18 4.3. INSTRUMENTUL SOFTWARE ACCESS 2000 ............................................................................... 19 4.4. O PREZENTARE GENERALĂ A PRINCIPALELOR OBIECTE ACCESS 2000............................... 23 5. TABELELE ŞI SISTEMUL DE RELAŢII ................................................................................................. 26 5.1. TIPURILE DE DATE ACCESS 2000................................................................................................ 27 5.2. CREAREA TABELELOR.................................................................................................................. 28 5.3. SALVAREA TABELELOR ................................................................................................................ 34 5.4. PROPRIETĂŢILE CÂMPURILOR.................................................................................................... 34 5.5. IMPORTUL ŞI EXPORTUL DATELOR ............................................................................................ 36 5.6. RELAŢIILE DINTRE TABELE .......................................................................................................... 38 6. CREAREA ŞI UTILIZAREA INTEROGĂRILOR ..................................................................................... 43 6.1. INTEROGĂRILE DE TIP SELECT ................................................................................................... 49 Lucrul cu funcţia like....................................................................................................................... 50 Concatenarea şirurilor de caractere ............................................................................................... 52 Dialogurile parametrizate ............................................................................................................... 52 Lucrul cu funcţia between............................................................................................................... 53 6.2. INTEROGĂRILE DE TIP TOTALS................................................................................................... 54 6.3. INTEROGĂRILE DE TIP UPDATE .................................................................................................. 57 6.4. INTEROGĂRILE DE TIP MAKE-TABLE .......................................................................................... 59 6.5. INTEROGĂRILE DE TIP DELETE ................................................................................................... 60 6.6. INTEROGĂRILE DE TIP APPEND ................................................................................................. 61 6.7. INTEROGĂRILE DE TIP CROSSTAB ............................................................................................. 62

TERMINOLOGIE ŞI MODELE DE DATE

3

7. FORMULARE ŞI RAPOARTE ................................................................................................................ 68 7.1. FORMULARE (FORMS) .................................................................................................................. 68 7.1.1. Crearea formularelor cu ajutorul „vrăjitorilor” (wizards) ............................................................. 71 7.1.2. Crearea formularelor în mod proiectare directă ........................................................................ 75 7.2. RAPOARTE (REPORTS)................................................................................................................. 84 8. LUCRUL CU HIPERLEGĂTURI.............................................................................................................. 93 ŞI GENERAREA PAGINILOR WEB ........................................................................................................... 93 8.1. SCURTĂ INTRODUCERE ............................................................................................................... 93 8.2. WORLD WIDE WEB ........................................................................................................................ 94 8.3. TEHNOLOGII ŞI PRODUSE PROGRAM TIP CLIENT INTERNET.................................................. 95 8.4. TIPUL DE DATE HYPERLINK ......................................................................................................... 96 8.5. GENERAREA PAGINILOR WEB ................................................................................................... 100 9. ADMINISTRAREA ŞI ASIGURAREA SECURITĂŢII BAZELOR DE DATE ACCESS.................................. 105 9.1. COMPACTAREA ŞI REPARAREA DATELOR .............................................................................. 105 9.2. CREAREA COPIILOR DE SIGURANŢĂ ........................................................................................ 106 9.3. SECURITATEA BAZELOR DE DATE ............................................................................................ 107 9.3.1. Principiile securităţii bazelor de date în reţele locale............................................................... 107 9.3.2. Protejarea prin parolă la nivelul bazei de date ........................................................................ 108 9.3.3. Criptarea bazei de date........................................................................................................... 109 9.3.4. Securitatea la nivelul grupurilor şi utilizatorilor ........................................................................ 110 ANEXA 1 – STRUCTURA TABELELOR UTILIZATE ÎN EXEMPLE. RELAŢIILE DINTRE TABELE ...... 114 ANEXA 2 – PROBLEME PROPUSE ........................................................................................................ 116 Reguli de normalizare................................................................................................................... 116 Tabele .......................................................................................................................................... 116 Interogări ...................................................................................................................................... 117 Formulare ..................................................................................................................................... 118 Rapoarte....................................................................................................................................... 119 Pagini internet............................................................................................................................... 120 Securitatea şi administrarea bazelor de date................................................................................ 120 ANEXA 3 – DICŢIONAR DE TERMENI .................................................................................................... 121 BIBLIOGRAFIE......................................................................................................................................... 130

1. INTRODUCERE

Complexitatea informaţiilor cu care oamenii au interacţionat şi interacţionează permanent, a făcut necesară gestionarea eficientă a acestora. Bibliotecile care au existat încă din antichitate, agendele personale, registrele de evidenţă, cataloagele de produse, mersul trenurilor nu sunt altceva decât mijloace de gestionare eficientă a informaţiilor. Prin acestea se încearcă de fapt, într-o manieră neautomatizată, să se rezolve problemele legate de organizarea, stocarea şi regăsirea performantă a informaţiilor. Rezolvarea eficientă a acestor probleme în condiţiile unui volum foarte mare de informaţii, nu poate fi concepută decât prin utilizarea calculatoarelor electronice şi anume a bazelor de date. Scopul principal urmărit, atunci când se alege ca soluţie de rezolvare a problemei gestiunii informaţiilor utilizarea bazelor de date, este acela de a regăsi într-un timp cât mai scurt informaţia căutată după anumite criterii, de a asigura securitatea acestora, de a minimiza spaţiul necesar de memorare, de a asigura unicitatea şi flexibilitatea datelor gestionate. La modul cel mai general o bază de date poate fi definită ca fiind o colecţie de date înrudite care se referă la un anumit obiect sau obiectiv, împreună cu instrumentele folosite pentru manipularea acestor date. Orice bază de date trebuie să conţină descrierea datelor şi înregistrările de date. Sistemul complex de programe care permite descrierea, organizarea, memorarea, regăsirea, administrarea şi securizarea informaţiilor dintr-o bază de date se numeşte sistemul de gestiune a bazelor de date (SGBD). Memorarea datelor conţinute de bazele de date se face pe suporturile de memorie internă sau externă folosite de calculatoare (unităţi de hard-disc, benzi şi casete magnetice, compact discuri etc). SGBD este un software special asociat bazelor de date care asigură interfaţa între o bază de date şi utilizatorii ei, rezolvând toate cererile de acces la datele memorate. Bazele de date înglobează patru componente: datele, hardware-ul, software-ul şi utilizatorii. Datele reprezintă „materia primă” a oricărei baze de date. Ele descriu caracteristicile anumitor obiecte, sunt organizate în structuri şi se pot afla în anumite relaţii şi interdependenţe. Hardware-ul se constituie din tehnica de calcul utilizată pentru crearea, întreţinerea şi exploatarea bazelor de date. Software-ul cuprinde SGBD-ul şi programele de aplicaţie aferente. Din punctul de vedere al utilizatorilor se deosebesc trei categorii: • • utilizatorii finali care interacţionează cu baza de date prin intermediul unui limbaj de interogare sau prin intermediul unor programe numite programe de aplicaţie, scrise de programatorii de aplicaţii; programatorii de aplicaţii care realizează programele de aplicaţie ale bazei de date, utilizând anumite limbaje de programare (Visual Basic for Applications, C,C++, Java, PHP, PERL etc) Aceste aplicaţii numite şi software front-end asigură utilizatorilor, într-o manieră cât mai prietenoasă, accesul la date pentru introducerea, actualizarea, regăsirea, consultarea şi listarea acestora; administratorul bazei de date care este o persoană (sau un grup de persoane) responsabilă cu asigurarea funcţionării software-ului şi hardware-ului, securitatea, integritatea şi siguranţa bazei de date.

TERMINOLOGIE ŞI MODELE DE DATE

5

Bazele de date computerizate oferă anumite avantaje incontestabile faţă de modalităţile manuale de gestionare a informaţiilor, dintre care pot fi enumerate: o reducerea redundanţei – prin înregistrarea unei informaţii o singură dată şi accesarea acesteia oriunde este necesar. Din practica lucrului cu bazele de date a rezultat însă că nu este posibilă şi nici chiar recomandată o redundanţă nulă a datelor; o evitarea inconsistenţei datelor – în cazul în care datele sunt accesate de mai mulţi utilizatori (regim de lucru multiuser), o modificare făcută de unul dintre aceştia este accesibilă şi celorlalţi în cel mai scurt timp; o partajarea informaţiilor şi a programelor de aplicaţie – mai mulţi utilizatori pot lucra simultan cu aceleaşi date şi pot lansa în execuţie aceeaşi aplicaţie; o asigurarea restricţiilor de securitate a datelor – se realizează prin conceperea unui sistem de autorizare a accesului la date prin parole şi a unor niveluri de acces (numai anumiţi utilizatori au acces la toate datele, ceilalţi au un acces limitat numai la acele informaţii care pot fi cunoscute de ei); o asigurarea integrităţii datelor – printr-un sistem de protecţie la ştergerile neintenţionate şi de refacere a datelor în caz de incidente; o rezolvarea operativă a conflictelor ce pot apărea în crearea, editarea, consultarea şi interogarea datelor – prin validări aplicate la momentul introducerii acestora în baza de date şi prin mecanisme ce interzic modificarea simultană de către mai mulţi utilizatori a aceleiaşi informaţii; o asigurarea independenţei datelor faţă de aplicaţii şi faţă de suportul fizic de memorare este un deziderat al oricărui SGBD şi presupune ca datele să poată fi modificate sau mutate pe un alt suport fără ca să fie necesară rescrierea programelor de aplicaţii. Acest lucru poate fi realizat printr-o corectă proiectare a bazelor de date şi prin scrierea unor aplicaţii performante. De asemenea este de dorit ca administratorul bazei de date să aibă libertatea de a schimba strategia de acces la date, priorităţile aplicaţiilor, unităţile de memorare, fără să modifice aplicaţiile existente. Termenii specifici bazelor de date, definiţiile acestora precum şi tipurile de baze de date existente, în funcţie de modelul de date pe care se bazează, vor face obiectul capitolului următor. Vor fi tratate noţiunile generale referitoare la bazele de date relaţionale şi în special la bazele de date MS-Access. Voi motiva într-un subcapitol aparte de ce am ales din cadrul bazelor de date relaţionale tocmai bazele de date Access ca suport practic al acestui curs.

2. TERMINOLOGIE ŞI MODELE DE DATE

Bazele de date au fost concepute pentru stocarea volumelor mari de informaţii relativ omogene şi între care se pot stabili anumite relaţii. Modelul de date al bazei de date se stabileşte în urma unei etape de analiză a informaţiilor care are ca scop identificarea datelor ce vor fi memorate, stabilirea caracteristicilor acestora, a structurii şi a legăturilor dintre date. Datele pot fi definite pe trei niveluri: • • • nivelul extern care descrie modul în care utilizatorii individuali văd baza de date, nivelul conceptual care descrie structura canonică a datelor şi modul în care sunt grupate în tabele, nivelul intern care descrie structura de memorare a datelor din baza de date şi strategia de acces la date. Orice sistem de gestiune a bazelor de date (SGBD) trebuie să asigure următoarele funcţii: • • • definirea structurii bazei de date încărcarea datelor în baza de date accesul la date pentru: o interogare o ştergere o modificare întreţinerea bazei de date: o refacerea bazei de date prin existenţa unor copii de siguranţă o repararea în caz de incident o colectarea şi refolosirea spaţiilor goale posibilitatea de reorganizare a bazei de date prin: o restructurarea datelor o modificarea accesului la date securitatea datelor.

• •

În orice bază de date principala sursă de informaţii o reprezintă un obiect din lumea reală care se constituie ca o entitate. Entitatea este o reprezentare unică a unui obiect. Cea mai folosită denumire pentru entitate este înregistrarea (record) sau rândul dintr-un tabel (row). Atributul unui obiect este o caracteristică ce permite descrierea entităţii. Atributul se materializează sub forma unei celule de date care reprezintă valoarea unui câmp (field) dintr-o înregistrare sau a unei coloane dintr-un tabel (column). Tipurile de date ale atributelor pot fi: numerice, şiruri de caractere alfanumerice, date calendaristice, şiruri de bytes (care pot reprezenta imagini sau sunete), pointeri către alte date etc. Domeniul atributului este un interval de valori permise pentru un atribut. De exemplu el poate reprezenta un interval de timp sau un interval de preţuri (între cel minim şi maxim admis).

TERMINOLOGIE ŞI MODELE DE DATE

7

Identificatorii entităţilor (înregistrărilor), se mai numesc şi câmpurile cheie primară, folosite pentru crearea indexului principal al tabelului. Tabelul (table) conţine setul tuturor entităţilor dintr-un singur tip de obiect. Tabelul mai este numit şi clasă de entităţi sau tip de entităţi. El este constituit din rânduri (înregistrări) şi coloane (câmpuri). Baza de date (database) reprezintă o colecţie de tabele în care sunt stocate entităţi care descriu un anumit domeniu de activitate, împreună cu instrumentele folosite pentru manipularea datelor. Orice bază de date de mărime medie sau mare, proiectată pentru a fi exploatată simultan de către mai mulţi utilizatori, nu poate fi exploatată performant fără un administrator al bazei de date care are responsabilitatea definirii schemei interne a acesteia şi întreţinerii ei. Administratorul este cel care cunoaşte în amănunt conţinutul informaţiilor din baza de date şi monitorizează performanţele acesteia (dimensiunea, viteza de acces, etc) în vederea maximizării acestora. El stabileşte legăturile cu utilizatorii, defineşte verificările de autorizare a accesului, procedurile de validare a datelor, precum şi strategia de refacere a bazei de date în caz de incident. Programatorii de aplicaţii şi utilizatorii finali comunică cu SGBD-ul prin intermediul limbajelor de manipulare şi a limbajelor de interogare. În timpul execuţiei toate cererile de acces sunt transmise SGBD-ului

2.1. MODELE DE DATE
De-a lungul timpului, utilizarea bazelor de date a devenit o necesitate pentru o mare varietate de domenii de activitate. Specificul diferit al acestor domenii a făcut necesară dezvoltarea de către specialişti a unor modele de organizare a datelor care să răspundă cerinţelor acestora. În acest sens, s-au dezvoltat baze de date având la bază modele de date de diferite tipuri, cum sunt: modelul ierarhic, modelul reţea, modelul relaţional, modelul obiectual, modele semantice, modele funcţionale, modele deductive sau modele distribuite. Primele trei tipuri de modele (ierarhic, reţea şi relaţional) reprezintă modelele cele mai cunoscute şi cele mai frecvent utilizate în reprezentarea datelor. Alegerea unui anumit SGBD (bazat pe unul din modelele de date anterior prezentate) pentru informatizarea unei activităţi presupune o etapă de analiză în cadrul căreia se identifică componentele de date, legăturile dintre acestea, evenimentele care determină modificări ale datelor şi necesarul de informaţii primare şi sintetizate care trebuie furnizate. Voi descrie în continuare modelul relaţional de organizare a datelor, cel mai răspândit în prezent, care răspunde cerinţelor unei arii largi de domenii de activitate şi pe baza căruia s-au dezvoltat un număr mare de sisteme de gestiune a bazelor de date (SGBD). Bazele de date de tip Access, care vor fi tratate în acest curs, sunt de asemenea baze de date relaţionale.

2.1.1. Modelul relaţional
Modelul relaţional a fost dezvoltat avându-se în vedere în primul rând utilizatorii finali. Acest model are la bază teoria matematică a relaţiilor, ceea ce a făcut posibilă tratarea algoritmică a proiectării bazelor de date şi rezolvând astfel problema normalizării datelor. Algebra relaţională se bazează pe un set de reguli şi simboluri utilizate pentru definirea bazelor de date relaţionale şi oferă un set de operaţii (intersecţie, produs cartezian, diferenţă, proiecţie) care au ca operanzi şi ca rezultat tabele.

8

Lector univ. drd. Mihai Gavotă - Baze de date

Normalizarea este o procedură standard prin care atributele datelor sunt grupate în tabele iar tabelele sunt grupate în baze de date. Normalizarea datelor asigură baza de date împotriva inconsistenţei care ar putea apărea în urma unor actualizări greşite. Prin normalizare pot fi create tabele care să respecte modelul relaţional de bază de date. Normalizarea este procesul de eliminare a dublurilor de informaţii din tabele. Prin normalizare se urmăreşte de fapt eliminarea sau minimizarea redundanţei (dublurilor) din tabelele bazei de date. Modelul relaţional este un model simplu, bazat pe algebra relaţională, care a făcut posibilă dezvoltarea limbajelor relaţionale sub forma unui software specializat ce asistă procesul de proiectare a bazelor de date. Astfel de limbaje sunt SQL (Structured Query Language) şi QBE (Query By Example). Celelalte modele nu au beneficiat de un astfel de software. Modelul relaţional al bazei de date se fundamentează pe două elemente principale: tabelele bazei de date şi regulile de integritate ale acesteia. În prezent există mai multe sisteme performante de gestiune a bazelor de date relaţionale printre care pot fi enumerate: MS-SQL Server, Oracle, Informix, DB2, Access, Visual Fox, MySQL. Toate aceste SGBD-uri au la bază limbajul SQL. Unele dintre ele beneficiază de anumite extensii care oferă facilităţi suplimentare: sisteme client-server, sisteme multimedia, analiza multidimensională şi orientarea obiect. Menţinerea integrităţii bazei de date este unul din obiectivele prioritare ale oricărui SGBD relaţional. Majoritatea bazelor de date client-server au prevăzute declanşatoare pentru menţinerea integrităţii bazei de date, astfel încât aceasta să conţină numai informaţii valide, confirmate şi verificate.

3. BAZE DE DATE RELAŢIONALE

3.1. SCURT ISTORIC
Evoluţia bazelor de date relaţionale a fost surprinzător de rapidă. Teoria privind bazele de date relaţionale a fost publicată de dr. Codd în anul 1970 iar în anul 1972, dr.Cobb a prezentat teoria legată de normalizarea acestora. În 1984 firma Ashton-Tate cumpărată ulterior de Borland a creat limbajul dBASE care a făcut posibilă utilizarea bazelor de date relaţionale pe calculatoarele personale. Versiunile dBASE III, III++, IV s-au bucurat de un mare succes şi au determinat multe firme şi mulţi programatori să opteze pentru bazele de date relaţionale. De asemenea, după 1990 bazele de date relaţionale FoxPro au ţinut multă vreme capul de afiş al bazelor de date utilizate pe calculatoarele personale (PC). La sfârşitul anilor 1980 bazele de date relaţionale au devenit suficient de puternice şi au început din ce în ce mai mult să înlocuiască bazele de date ierarhice şi pe cele de tip reţea care până atunci dominaseră lumea bazelor de date. În prezent, primul loc ca răspândire este deţinut de bazele de date relaţionale. Pe calculatoarele de tip PC bazele de date dBASE şi FoxPro au fost înlocuite într-o mare măsură de bazele de date Access ale firmei Microsoft. Acestea au cucerit foarte mulţi utilizatori finali şi dezvoltatori de aplicaţii, în primul rând prin performanţă şi apoi prin felul în care Microsoft a reuşit integrarea lor în bine-cunoscutul pachet de programe MS-Office. În lumea bazelor de date relaţionale profesionale de dimensiuni mari şi foarte mari, implementate pe calculatoare foarte puternice, s-au impus SGBD-uri cum sunt MS-SQL Server, Oracle, DB2 şi Informix. Acestea funcţionează pe filosofia client-server. Ele pot fi legate fără probleme cu alte baze de date şi pot utiliza cu uşurinţă obiecte realizate sub Access sau Visual Fox. Printre caracteristicile acestor SGBD-uri moderne se numără: puternica conectivitate pe care o asigură, posibilitatea de a funcţiona distribuit în reţele de tip intranet sau extranet (neomogene din punctul de vedere al hardware-ului), pe sisteme de tip multiutilizator, faptul că s-au dezvoltat extensii care le permit modul de lucru cu obiecte printre care şi obiectele multimedia.

3.2. TIPURILE DE RELAŢII
Aşa cum am arătat mai sus, bazele de date relaţionale presupun stocarea datelor în tabele între care se stabilesc anumite relaţii. Exemple de tabele pot fi: tabela Date personale angajaţi, tabela Clienţi, tabela Funcţii, tabela Produse, etc. Fiecare din acestea poate fi imaginată ca un tabel desenat pe hârtie care cuprinde un cap de tabel cu caracteristicile (coloanele) pe care dorim să le memorăm şi atâtea rânduri câte entităţi distincte scriem în tabel. Între aceste tabele există anumite relaţii ca de exemplu: „fiecare persoană angajată ocupă o funcţie”, „fiecare client poate cumpăra unul sau mai multe produse”, „o carte dintr-o bibliotecă poate fi citită succesiv de mai mulţi cititori şi un cititor împrumută mai multe cărţi”. Această mare varietate de relaţii a fost

10

Lector univ. drd. Mihai Gavotă - Baze de date

analizată şi s-a stabilit că între tabelele bazelor de date pot exista patru tipuri de relaţii: „unu la unu”, „unu la mulţi”, „mulţi la unu ” şi „mulţi la mulţi”. Aceste tipuri de relaţii acoperă întreaga gamă de situaţii care se pot ivi în proiectarea bazelor de date relaţionale şi există instrumente software care să le implementeze.

3.2.1. Relaţiile „unu la unu”
Reprezintă cel mai simplu tip de relaţie dintre înregistrările (rândurile) unor tabele corespondente. Astfel, unei înregistrări dintr-o tabelă îi va corespunde doar o singură înregistrare din tabela corespondentă. Pentru exemplificare să presupunem că există în cadrul unei baze de date relaţionale următoarele tabele: Tabela Date personale angajaţi Cod persoană Nume persoană Adresa Cod funcţie ocupată Data angajării … Tabela Salarii curente Cod persoană Salariu Primă Rate …

legătura „unu la unu” 1 1

Un conţinut fictiv al acestor tabele ar putea fi: Cod persoană 0025 0026 0027 0028 0029 … Nume persoană Popescu Ion Vasile Petre Ion Emil Adresa … … … Cod persoană 0025 0026 0027 0028 0029 … Salariu 12000000 10000000 20000000 8000000 8500000 Prima 3000000 10000000 5000000 0 0 … …

Se observă că pentru materializarea relaţiei „unu la unu” s-a ales câmpul Cod persoană ca fiind câmp unic de identificare şi de legătură între informaţiile conţinute în cele două tabele. Aceasta determină ca unei singure înregistrări din tabela Date personale angajaţi să-i corespundă doar înregistrarea din tabela Salarii curente în care câmpul Cod persoană identifică acelaşi angajat. Deci, pentru fiecare persoană (angajat) există doar o singură înregistrare atât în tabela Date personale angajaţi cât şi în tabela Salarii curente. Altfel spus, în acest exemplu tabelele Date personale angajaţi şi Salarii curente au fiecare atâtea înregistrări câţi angajaţi există.

3.2.2. Relaţiile „unu la mulţi”
Acest tip de relaţii leagă o înregistrare dintr-un tabel de bază cu mai multe înregistrări dintr-un alt tabel corespondent prin intermediul unui câmp cheie. Câmpul cheie din tabelul de bază se mai numeşte şi cheia primară iar câmpul cheie corespondent din cealaltă tabelă reprezintă cheia străină (externă). Relaţiile „unu la mulţi” sunt cel mai întâlnit tip de relaţii.

BAZE DE DATE RELAŢIONALE

11

Un alt exemplu din lumea reală a bazelor de date va fi elocvent pentru înţelegerea acestui tip de relaţii. Pornind de la aceeaşi tabelă de bază numită Date personale angajaţi şi presupunând că ne interesează o interogare din care să aflăm informaţii despre deplasările acestora, vom avea ca tabelă corespondentă tabela numită Deplasări angajaţi. Este evident că fiecărui angajat unic determinat prin câmpul Cod persoană îi pot corespunde una, mai multe sau nici o deplasare. Pentru a rezolva această interogare vom stabili o relaţie de tipul „unu la mulţi” între cele două tabele. Tabela Date personale angajaţi Cod persoană Nume persoană Adresa Cod funcţie ocupată Data angajării … Tabela Deplasări angajaţi Cod persoană Data deplasării Locul deplasării Costul transportului Diurna …

legătura „unu la mulţi” 1 ∞

Dacă în tabela Date personale angajaţi există doar o singură înregistrare (rând) pentru un angajat, în tabela Deplasări angajaţi pot exista atâtea înregistrări (rânduri) pentru fiecare angajat câte deplasări a făcut. Un conţinut fictiv al acestor tabele precum şi legăturile dintre ele ar putea fi: Cod persoană 0025 0033 0123 … … … Nume persoană Popescu Ion Stan Petre Vasile Emil Adresa … … … Cod persoană 0025 0025 0010 0033 0033 … Data deplasării 10.02.2001 15.03.2001 20.05.2001 28.07.2001 01.09.2001 Locul deplasării Iaşi Sibiu Constanţa Braşov Constanţa … …

3.2.3. Relaţiile „mulţi la unu”
Reprezintă inversul relaţiilor „unu la mulţi”. Dacă în exemplul anterior considerăm tabela de bază Deplasări angajaţi având ca tabelă corespondentă Date personale angajaţi, atunci avem de-a face cu un tip de relaţie „mulţi la unul”. Mai multor deplasări executate şi înregistrate în tabela Deplasări angajaţi le poate corespunde doar un singur angajat (Cod persoană). Câmpul (cheia) de legătură rămâne acelaşi Cod persoană. Cod persoană 0025 0025 0010 0033 0033 … Data deplasării 10.02.2001 15.03.2001 20.05.2001 28.07.2001 01.09.2001 Locul deplasării Iaşi Sibiu Constanţa Braşov Constanţa … … Cod persoană 0025 0033 0123 … … … Nume persoană Popescu Ion Stan Petre Vasile Emil Adresa … … …

12

Lector univ. drd. Mihai Gavotă - Baze de date

3.2.4. Relaţiile „mulţi la mulţi”
Acesta este un tip de relaţii complexe care nu sunt implementate în mod direct în sistemele de gestiune a bazelor de date relaţionale. În etapa de analiză a unei activităţi putem desprinde şi cazuri în care unei înregistrări (rând) dintr-o tabelă îi pot corespunde mai multe înregistrări (rânduri) dintr-o altă tabelă, în acelaşi timp însă, unei înregistrări (rând) din cea de-a doua tabelă îi pot corespunde mai multe înregistrări (rânduri) din prima tabelă. De exemplu, dacă identificăm două tabele: Tabela Date personale angajaţi şi Tabela Documentaţie tehnică şi analizăm relaţiile dintre ele vom observa că un angajat poate deţine mai multe documentaţii tehnice iar o documentaţie tehnică este posibil să fi fost consultată de mai mulţi angajaţi ai firmei. Spunem în acest caz că între cele două tabele există o relaţie „mulţi la mulţi”. Tabela Date personale angajaţi Cod persoană Nume persoană Adresa Cod funcţie ocupată Data angajării … legătura „mulţi la mulţi” ∞ ∞ Tabela Documentaţie tehnică Cod documentaţie Denumire Data apariţiei Autorul Domeniul de activitate …

Un conţinut fictiv al acestor tabele precum şi legăturile dintre ele ar putea fi: Cod persoană 0025 0033 0123 … … … Nume persoană Popescu Ion Stan Petre Vasile Emil Adresa … … … Cod docum entaţie 782 783 784 785 … Denumire Data apariţiei 15.01.1997 01.02.1985 12.12.2000 11.11.1992 … …

Documentaţie 1 Documentaţie 2 Documentaţie 3 Documentaţie 4 …

Acest tip de relaţie între tabele nu este implementat în mod direct ci se rezolvă prin introducerea unei tabele suplimentare. Această nouă tabelă se află în relaţie de „mulţi la unu” cu fiecare din tabelele iniţiale. Pentru exemplul nostru tabela intermediară (de intersecţie) poate fi Tabela Documentaţie consultată având următorul conţinut şi relaţii cu tabelele iniţiale: Tabela Date personale angajaţi Cod persoană Nume persoană Adresa Cod funcţie ocupată Data angajării … 1 ∞ Tabela Documentaţie consultată Cod documentaţie Cod persoană Data împrumutului Data înapoierii ∞ 1 Tabela Documentaţie tehnică Cod documentaţie Denumire Data apariţiei Autorul Domeniul de activitate…

BAZE DE DATE RELAŢIONALE

13

Se spune că relaţia „mulţi la mulţi” se „sparge” în două relaţii „unu la mulţi” pentru aceasta folosindu-se o tabelă intermediară (de intersecţie). Această tabelă este astfel aleasă încât să conţină o cheie primară formată din cheile primare ale tabelelor iniţiale şi alte informaţii specifice intersecţiei lor.

3.3. REGULI DE NORMALIZARE
La proiectarea structurii unei baze de date relaţionale trebuie stabilite în primul rând tabelele în care vor fi memorate datele şi relaţiile dintre tabele. Acesta este un proces iterativ, tabelele, cheile primare de identificare a înregistrărilor, relaţiile dintre tabele sunt stabilite într-o formă iniţială după care, prin rafinare succesivă se ajunge la forma definitivă. Identificarea iniţială a tabelelor şi a câmpurilor acestora se face prin studierea documentelor primare şi a rapoartelor care sunt vehiculate în cadrul activităţii ce se doreşte a fi informatizată. Acestei structuri iniţiale îi sunt aplicate un set de reguli care reprezintă paşii de obţinere a unei baze de date normalizate. Algoritmul de normalizare a bazelor de date relaţionale precum şi paşii acestuia au fost descrişi de către Dr.E.F.Cobb în lucrarea „Further Normalization of the Data Base Relational Model” apărută în 1972. Voi prezenta aceste reguli utilizând un exemplu concret. Considerăm că în urma analizei documentului primar Factură dorim să stabilim o structură de tabele care să ne permită stocarea informaţiilor conţinute de document (factură) şi obţinerea unor situaţii sintetice privind evidenţa sumelor facturate pe produse, pe clienţi, pe anumite perioade de timp. În acest scop alegem într-o primă fază informaţiile care ne interesează şi considerăm că vor fi stocate într-o singură tabelă numită Facturi. Tabela Facturi Număr factură Data facturării Denumire client Adresa client Bancă client Număr cont client Delegat Cod produs Denumire produs Unitatea de măsură Cantitate Preţ unitar Valoare Valoare TVA Total valoare factură Total valoare TVA Într-o primă formă tabela Facturi ar putea arăta ca în figura alăturată. Ea are cheia primară formată din câmpul Număr factură. Acest câmp are o valoare unică pentru fiecare factură emisă. Observăm că în tabelă există câmpul Adresă client care cuprinde informaţii despre ţara, localitatea, strada şi numărul unde se află firma clientului. Dacă vom considera că este de interes o evidenţă a sumelor facturate pe ţări sau chiar localităţi, vor pune în locul câmpului Adresă client trei câmpuri distincte : Ţară client, Localitate client şi Adresă client uşurând în acest fel interogările referitoare la sumele facturate pe ţări şi localităţi. Mai observăm din această tabelă că grupul informaţiilor care se referă la un produs se repetă cu valori diferite pe o factură de atâtea ori câte produse diferite sunt trecute pe factură. Câmpurile Total valoare factură şi Total valoare TVA se referă la întreaga factură şi reprezintă suma valorilor corespunzătoare pentru toate produsele trecute pe factură.

1. Prima regulă de normalizare este aceea de a crea tabele plate, tabele ce nu conţin grupuri de câmpuri care să se repete pentru o valoare unică a cheii de identificare a înregistrării (cheia primară). În cazul nostru, deoarece pentru o factură putem avea unul sau mai multe

14

Lector univ. drd. Mihai Gavotă - Baze de date

produse care sunt înscrise pe aceasta, vom separa într-o altă tabelă informaţiile legate de produse, fiecare dintre aceste informaţii fiind determinată în mod unic de numărul facturii şi codul produsului. În prima formă normală avem tabelele: Tabela Facturi Număr factură Data facturării Denumire client Adresa client Bancă client Număr cont client Delegat Total valoare factură Total valoare TVA Tabela Linii facturi Număr factură Cod produs Denumire produs Unitatea de măsură Cantitate Preţ unitar Valoare Valoare TVA

Între tabela Facturi şi tabela Linii facturi există o relaţie de „unu la mulţi” (1-∞), adică unui număr unic de factură îi pot corespunde unul sau mai multe produse care sunt memorate ca înregistrări în tabela Linii facturi. Cheia de identificare (cheia primară) în această tabelă este o cheie complexă, adică formată din două câmpuri: Număr factură şi Cod produs. 2. A doua regulă de normalizare cere să analizăm tabelele aflate în prima formă normală şi să vedem dacă fiecare câmp al acestora reflectă (caracterizează) valoarea cheii primare în totalitatea ei. Se impune ca atunci când avem chei complexe să nu avem câmpuri care să caracterizeze doar o parte componentă a cheii primare. În cazul nostru, observăm câmpurile Denumire produs şi Unitatea de măsură din tabela Linii facturi, ce caracterizează un anumit produs şi nu sunt diferite pentru acelaşi produs de la o factură la alta. Spre deosebire de ele, celelalte câmpuri ale tabelei se referă la cantitatea, preţul şi valoarea produsului numai pentru factura respectivă. Pe o altă factură este posibil să se vândă o altă cantitate din acelaşi produs la un alt preţ. Tabelele în cea de a doua formă normală devin: Tabela Facturi Număr factură Data facturării Denumire client Adresa client Bancă client Număr cont client Delegat Total valoare factură Total valoare TVA Tabela Linii facturi Număr factură Cod produs Cantitate Preţ unitar Valoare Valoare TVA Tabela Produse Cod produs Denumire produs Unitatea de măsură

BAZE DE DATE RELAŢIONALE

15

Legătura dintre tabela Linii facturi şi tabela Produse se face prin intermediul câmpului Cod produs prezent în ambele. În tabela Produse acesta este cheia primară deoarece valoarea codului identifică în mod unic fiecare produs, iar în tabela Linii facturi acesta este câmp component al cheii primare şi totodată cheie externă de legătură cu tabela Produse. Între tabela Linii facturi şi tabela Produse există o relaţie „mulţi la unu” (∞-1), adică fiecare produs înscris pe o factură trebuie să existe în nomenclatorul de produse al firmei. 3. A treia regulă de normalizare cere ca toate câmpurile din tabele să fie independente între ele. Analizând câmpurile din tabelele aflate în ce-a de-a doua formă normală, trebuie să nu existe câmpuri care să fie dependente de alte câmpuri care nu fac parte din cheia primară. În cazul nostru, analizând tabela Facturi, observăm că multe din câmpuri, şi anume: Adresa client, Bancă client şi Număr cont client depind de câmpul Denumire client. Deci, fiecărui client îi corespund o adresă, o bancă şi număr de cont unice. În schimb, delegatul din partea clientului poate fi diferit pentru fiecare factură. Câmpurile Valoare şi Valoare TVA depind de câmpurile cantitate, preţ şi de un procent fix de TVA. Fiind câmpuri care se pot calcula în orice moment ele vor fi eliminate din tabelă deoarece constituie informaţie memorată redundant. Aplicăm ce-a de-a doua regulă de normalizare prin extragerea acestor informaţii, care depind de un câmp aflat în afara cheii primare, într-o altă tabelă. Structura de tabele devine: Tabela Facturi Număr factură Data facturării Denumire client Delegat Total valoare factură Total valoare TVA Tabela Clienţi Denumire client Adresa client Bancă client Număr cont client Tabela Linii facturi Număr factură Cod produs Cantitate Preţ unitar Tabela Produse Cod produs Denumire produs Unitatea de măsură

Legătura dintre tabela Facturi şi tabela Clienţi se face prin intermediul câmpului Denumire client existent în ambele. Acesta este cheie unică de identificare a înregistrărilor din tabela Clienţi şi cheie externă de legătură în tabela Facturi. Între aceste două tabele există o relaţie de „mulţi la unu” (∞-1), adică toţi clienţii înscrişi pe facturi sunt înregistraţi în mod unic în tabela Clienţi ce conţine clienţii firmei. Această a treia formă normală mai poate suferi o serie de rafinări pentru a obţine o structură performantă de tabele a bazei de date. Observăm că Denumire client este un câmp în care este înscris un text destul de lung format dintr-o succesiune de litere, semne speciale (punct, virgulă), spaţii şi numere. Ordonarea şi regăsirea informaţiilor după astfel de câmpuri este mai lentă şi mai greoaie decât după câmpuri numerice. Vom introduce din acest motiv un câmp de identificare a clienţilor numit Cod client care să fie numeric şi care să fie cheia primară de identificare pentru fiecare client. Legătura între tabelele Clienţi şi Facturi se va face într-un mod mai performant prin acest câmp păstrându-se acelaşi tip de relaţie între cele două tabele.

16

Lector univ. drd. Mihai Gavotă - Baze de date

O altă observaţie care poate fi făcută în legătură cu tabelele aflate în cea de-a treia formă normală este aceea că Total valoare factură şi Total valoare TVA sunt câmpuri care ar trebui să conţină informaţii sintetice obţinute prin însumarea valorii tuturor produselor aflate pe o factură. Este de preferat ca astfel de câmpuri să fie calculate în rapoarte sau interogări şi nu să fie memorate în tabelele bazei de date. În urma aplicării acestor rafinări obţinem o structură performantă a bazei de date, prezentată în continuare: Tabela Facturi Număr factură Data facturării Cod client Delegat Tabela Clienţi Cod client Denumire client Adresa client Bancă client Număr cont client Tabela Linii facturi Număr factură Cod produs Cantitate Preţ unitar Tabela Produse Cod produs Denumire produs Unitatea de măsură

Odată ce am stabilit structura de tabele putem alege sistemul de gestiune a bazelor de date relaţionale (SGBD-ul) pe care să-l folosim ca suport de stocare şi manipulare a datelor. În cazul nostru alegem MS-Access deoarece acesta pune la îndemâna utilizatorilor finali cele mai prietenoase instrumente software cu care pot gestiona informaţiile din baza de date.

4. ACCESS 2000

4.1. DE CE ACCESS?
Aşa cum arătat într-un capitol anterior instrumentul de dezvoltare Access este una dintre componentele principale ale pachetului (suitei) de programe pentru birou MS-Office. Pe lângă bazele de date relaţionale Access, acesta integrează şi alte componente cum sunt: procesorul de texte Word, programul de calcule tabelare Excel, agenda de birou Outlook, programul pentru prezentări Power Point. Felul în care firma Microsoft a reuşit să realizeze sistemul de operare Windows sub care funcţionează toate aceste programe precum şi felul în care Microsoft a reuşit să integreze Microsoft Office Professional 2000 sub Windows 2000, a atras un mare număr de utilizatori şi dezvoltatori de aplicaţii Windows. Aceasta a determinat ca în prezent pe mai mult de 80 % din calculatoarele PC din lume să ruleze sistemul de operare Windows împreună cu pachetul de programe MS-Office. În lucrarea sa fundamentală „Totul despre Access 2000” Roger Jennings face cunoscut faptul că Access 2000, a şasea versiune a platformei desktop pentru bazele de date Microsoft, prin motorul său Jet dezvoltat special, domină în prezent piaţa produselor desktop pentru baze de date. Încă din 1998 editorialistul Jesse Berst de la ZDNet scria: „Paradox-ul (un alt SGBD pentru baze de date relaţionale n.a.) a murit. Nimeni nu mai scrie in dBASE. Programul Access de la Microsoft a acaparat deja această piaţă.”. Chiar şi FoxPro achiziţionat de Microsoft şi dezvoltat ulterior ca Visual Fox, a devenit un produs marginal. În prezent există în lume, vândute cu licenţă, zeci de milioane de copii ale produsului Access. Uşurinţa proiectării în Access, facilităţile de programare vizuală, performanţele oferite ca bază de date relaţională şi distribuită, cele de integrare puternică sub Windows (datorate faptului că este o componentă MS-Office) şi nu în ultimul rând posibilităţile de utilizare în intranet şi în internet, au făcut ca în ultimii ani acest produs să fie tot mai utilizat ca un instrument de dezvoltare rapidă a aplicaţiilor ce presupun lucrul cu baze de date, inclusiv în cadrul firmelor româneşti. În acest sens, este foarte posibil ca viitorii absolvenţi cu studii superioare, indiferent de specialitate, să lucreze ca utilizatori finali cu baze de date de tip Access sau să facă parte din echipe mixte de proiectare, configurare şi modificare a aplicaţiilor care vor compune software-ul sistemului informatic al firmei. Unii dintre ei, în calitate de manageri, trebuie să fie în măsură să definească cerinţele unor aplicaţii informatice de tipul bazelor de date pe care le vor solicita unor firme specializate şi tot ei vor fi aceia care vor evalua aplicaţiile realizate. Având în vedere specificul facultăţii, cele mai potrivite aplicaţii practice care vor face obiectul acestui curs, vor fi cele din domeniul managementului resurselor umane.

18

Lector univ. drd. Mihai Gavotă - Baze de date

4.2. CE VOR CONŢINE CAPITOLELE URMĂTOARE?
Aceasta este o întrebare firească ce îşi va găsi răspunsul în continuare, prin prezentarea succintă a temelor care vor face obiectul cursului. • Prezentare generală a instrumentului software de dezvoltare Access 2000: o dialogurile principale o modurile de lucru o barele de instrumente o barele de meniu o lucrul cu vrăjitori (wizards). Prezentare generală a principalelor obiecte Access 2000: o tabelele o interogările o formularele o rapoartele o macrocomenzile o modulele o paginile internet. Proiectarea structurii tabelelor şi a sistemului de relaţii dintre acestea: o câmpurile de date şi proprietăţile acestora o tipurile de date o cheile Access şi cheile de indexare o relaţiile dintre tabele o introducerea datelor direct în tabele o consultarea, editarea, sortarea şi filtrarea datelor o legarea tabelelor, importul şi exportul acestora. Crearea şi utilizarea interogărilor: o crearea interogărilor (queries) simple utilizând vrăjitorii Access o proiectarea interogărilor prin Query Design o utilizarea expresiilor şi operatorilor în interogări o interogările cu parametrii o crearea interogărilor de tip Crosstab cu un wizard special Access o interogările speciale utilizate pentru ştergerea (delete), adăugarea (append) şi actualizarea (update) datelor. Lucrul cu formulare (forms) şi rapoarte (reports): o crearea formularelor cu Form Wizard o proiectarea formularelor în modul de lucru Form Design o lucrul cu subformulare (subforms) o crearea rapoartelor cu Report Wizard o proiectarea rapoartelor în modul de lucru Report Design. Lucrul cu hiperlegături şi generarea paginilor Web din tabele şi interogări: o tipul de date Hyperlink Access o generarea paginilor Web statice şi dinamice.

ACCESS 2000

19

Administrarea şi asigurarea securităţii bazelor de date Access: o partajarea bazelor de date şi a obiectelor acestora între utilizatori o grupuri de lucru şi tipuri de utilizatori o securitatea bazelor de date Access, autentificarea utilizatorilor şi acordarea permisiunilor o compactarea, repararea şi crearea copiilor de siguranţă pentru bazele de date Access 2000.

Access 2000 este în primul rând un instrument software de dezvoltare vizuală a aplicaţiilor ce presupun lucrul cu bazele de date. El pune la dispoziţia dezvoltatorilor „vrăjitori” puternici care, în mare parte, reuşesc să genereze codurile VBA (Visual Basic for Applications) şi SQL (Structured Query Language) necesare acestor aplicaţii. Sub Access 2000, Microsoft nu mai recomandă utilizarea macrocomenzilor, acestea au fost menţinute doar pentru compatibilitate cu versiunile mai vechi de Access. Microsoft propune înlocuirea acestora cu coduri generate de „vrăjitori” în VBA şi previne dezvoltatorii că în versiunile viitoare este posibil ca Access-ul să nu mai conţină macrocomenzi. Modulele se bazează pe scrierea de cod VBA şi presupun cunoaşterea acestui limbaj. De regulă, generarea macrocomenzilor şi scrierea codurilor VBA şi SQL sunt specifice programatorilor cu experienţă care cunosc aceste limbaje. Din aceste considerente şi având în vedere că Access-ul este un instrument de dezvoltare rapidă a aplicaţiilor bazat pe programarea vizuală şi pe lucrul cu „vrăjitori” specializaţi pentru generarea interactivă a codurilor, acest curs nu şi-a propus studiul limbajelor VBA şi SQL. Prin urmare macrocomenzile şi modulele nu vor fi tratate.

4.3. INSTRUMENTUL SOFTWARE ACCESS 2000
După lansarea în execuţie din meniul Start al sistemului Windows sau dintr-un shortcut special, programul Access 2000 prezintă următorul dialog:

20

Lector univ. drd. Mihai Gavotă - Baze de date

Se observă ca element central o casetă de dialog prin intermediul căreia utilizatorul poate opta pentru: 1. deschiderea unei baze de date deja existente (exemplu Northwind – o bază de date model care se poate instala odată cu programul Access) 2. deschiderea unei baze de date noi (Blank Access database) 3. crearea imediată a unei baze de date sau a unor obiecte ale acesteia, utilizând vrăjitorii (Access database wizards, pages, and projects). 1. Dacă se optează pentru Open an existing file (opţiunea bifată implicit), se poate selecta baza de date (aplicaţia) dorită. Aceasta se va încărca în memorie şi eventual se va lansa în execuţie (dacă este setată în acest sens). De exemplu, dacă se alege Northwind şi se confirmă prin <OK> va fi afişat următorul ecran de start al aplicaţiei:

Confirmând în continuare prin <OK> va apărea ecranul principal de prezentare a bazei de date prin intermediul căruia putem avea acces la obiectele acesteia (Tables, Queries, Forms, Reports, Pages, Macros, Modules). Se observă că în mod implicit sunt selectate tabelele bazei de date (Tables).

ACCESS 2000

21

2. Dacă se optează pentru deschiderea unei baze de date noi (Blank Access database) se va lansa un dialog prin intermediul căruia suntem invitaţi să alegem un nume şi un folder unde se va crea baza de date:

În mod implicit ni se propune numele db1.mdb pentru baza de date şi folder-ul My Documents ca loc în care să se salveze. Acesta este de fapt un dialog standard Windows 2000 de tipul File Open / Save care apare utilizatorilor de câte ori o aplicaţie Windows solicită alegerea acestor doi parametrii (nume fişier şi folder). Presupunând că acceptăm parametrii impliciţi şi confirmăm prin apăsarea butonului <Create> vom obţine ecranul de proiectare (prezentare) a unei baze de date noi (fără tabele şi fără nici un alt obiect prefabricat). În continuare vom putea crea obiectele dorite selectând tipul de obiect şi apăsând butoanele <Open> sau <Design>. Ecranul care va apărea este:

22

Lector univ. drd. Mihai Gavotă - Baze de date

3. Dacă optăm pentru Access database wizards, pages, and projects se va lansa un dialog prin intermediul căruia putem selecta wizard-ul specializat pentru tipul de aplicaţie ales (ne sunt prezentate un număr de aplicaţii tipice):

Permanent, în funcţie de modul de lucru şi contextul în care ne aflăm, programul Access ne pune la dispoziţie anumite meniuri contextuale (accesibile prin apăsarea butonului din dreapta al mouse-ului) sau bare de meniuri şi de instrumente speciale posibil de utilizat în orice moment. O tratare exhaustivă a acestora nu este necesară şi nici chiar posibilă deoarece Microsoft a lăsat liberă utilizatorilor posibilitatea de a particulariza aceste bare şi deci configuraţiile meniurilor şi butoanelor pot diferi de la un calculator la altul. Sub Access, la fel ca sub oricare alt program Office (Word, Excel, Power Point), este important să învăţăm să navigăm utilizând la maximum interactivitatea sistemului oferită prin intermediul asistenţilor, a help-urilor senzitive şi a mesajelor tooltip ce apar pe un fond galben deschis, atunci când întârziem cu prompter-ul mouse asupra unui buton.

ACCESS 2000

23

Iată un exemplu de bare de meniuri şi de unelte care apar atunci când ne aflăm în modul de lucru proiectare (Design) al unei tabele sub Access:

• •

Oricare dintre obiectele Access se pot afla în două moduri de lucru: modul de lucru proiectare - Design View şi modul de lucru lansare care în funcţie de obiectul activ ar putea fi: o Datasheet View (pentru tabele şi interogări) o Form view (pentru formulare) o Print Preview (pentru rapoarte) o Page View (pentru pagini internet) o Run (pentru interogări şi macrocomenzi).

4.4. O PREZENTARE GENERALĂ A PRINCIPALELOR OBIECTE ACCESS 2000
În capitolul anterior am văzut că bazele de date Access apar sub forma unor fişiere având extensia .mdb. Specific acestora este faptul că toate obiectele (tabele, interogări, formulare, rapoarte, macrocomenzi, module şi pagini internet) sunt memorate împreună în cadrul aceluiaşi fişier .mdb. Astfel, spre deosebire de alte baze de date în care obiectele apar ca fişiere separate, programul Access obţine un plus de performanţă prin posibilitatea pe care o are de a gestiona intern obiectele bazei de date. Efectul final se materializează prin: creşterea vitezei de acces la date şi de rulare a obiectelor, mărirea securităţii bazei de date şi printr-o mai simplă administrare, compactare, reparare şi criptare a datelor. Cu excepţia datelor putem numi obiecte toate elementele din Access. Astfel, sunt obiecte: tabelele, formularele, interogările, rapoartele, macrocomenzile, paginile internet, modulele, dar şi controalele din componenţa formularelor şi rapoartelor. Aplicaţia ca atare constituie obiectul Application care face parte din structura Access Object Model. Obiectele de acces la date poară numele de Data Access Objects (DAO).

24

Lector univ. drd. Mihai Gavotă - Baze de date

Tabelele (tables)
Conţin datele („materia primă”) fără de care nu poate fi de imaginat o bază de date. Tabelele reprezintă în acest sens poate cel mai important obiect al oricărei baze de date. Datele sunt memorate în tabele sub forma rândurilor (numite şi înregistrări sau records) şi a coloanelor (numite câmpuri sau fields). Un element important al bazei de date îl reprezintă modul în care sunt legate tabelele între ele, adică sistemul de relaţii (relatioships).

Interogările (queries)
Constituie întrebări stocate adresate bazei de date. Ele sunt utile pentru a selecta anumite înregistrări conform unor criterii, pentru a le grupa, sorta, şterge sau actualiza. Sub Access interogările pot prelucra şi afişa datele selectate din maxim 16 tabele. Rezultatele unei interogări (query) se pot afişa pe cel mult 255 de coloane. Interogările au la bază un cod generat în limbajul de interogare SQL.

Formularele (forms)
Sunt obiectele folosite pentru interacţiunea cu utilizatorii, cu datele din tabele, din interogări sau rezultate în urma lansării unor proceduri SQL sau VBA (Visual Basic for Applications). Formularele pot fi utilizate pentru vizualizarea, adăugarea sau modificarea datelor sau pentru lansarea anumitor dialoguri de interacţiune cu utilizatorul. Tot ca formulare sunt proiectate şi panourilor de comandă (switchboards) prin intermediul cărora utilizatorii pot naviga în interiorul unei aplicaţii pentru a vizualiza alte formulare, rapoarte sau interogări. Formularele pot conţine subformulare dar şi alte obiecte şi controale Access sau Windows care personalizează aplicaţia. De exemplu ele pot conţine: butoane, etichete, câmpuri de editare, elemente grafice, sunete sau clipuri video, etc.

Rapoartele (reports)
Reprezintă situaţiile de ieşire disponibile utilizatorilor finali. Ele afişează într-un anumit format standard sau particular rezultatele anumitor interogări sau chiar datele din tabele. De cele mai multe ori rapoartele sunt proiectate pentru a afişa datele conform unor situaţii finale standard (de exemplu: balanţa şah contabilă, jurnalul de vânzări sau cel de cumpărări, jurnalul de casă, situaţiile conturilor bancare, centralizatorul stocurilor, etc). La fel ca şi formularele, rapoartele pot conţine funcţii VBA şi anumite obiecte care să facă posibilă afişarea câmpurilor din tabele sau interogări în formatele dorite. Obiectele cel mai frecvent utilizate sunt etichetele, câmpurile de afişare, elementele grafice. Rapoartele pot conţine şi subrapoarte. Informaţia afişată prin rapoarte sau prin formulare poate fi structurată şi grupată pe mai multe secţiuni: title, header, detail, footer. În capitolele următoare vor fi detaliate aceste noţiuni.

Macrocomenzile (macros)
Sunt proceduri care automatizează de regulă anumite operaţii sau evenimente cum ar fi: lansarea automată a unei comenzi din bara de meniuri, clic-ul pe un anumit buton, lansarea în execuţie a unor forme, interogări sau rapoarte, etc. Macrocomenzile au fost menţinute în Access 2000 doar pentru compatibilitate cu versiunile anterioare. Microsoft recomandă înlocuirea

ACCESS 2000

25

acestora cu cod scris în VBA deoarece este posibil ca versiunile viitoare de Access să nu mai conţină macrocomenzi.

Modulele (modules)
Conţin proceduri (secvenţe de cod) scrise în VBA (Visual Basic for Applications). Modulele pot fi module de clasă şi module standard. Modulele de clasă pot apărea în cadrul formelor sau rapoartelor atunci când se tratează prin intermediul unor instrucţiuni (cod VBA) anumite evenimente (de exemplu evenimentul clic cu mouse-ul pe un buton). Modulele standard conţin acele proceduri sau funcţii personalizate disponibile întregii aplicaţii. Ele sunt scrise de programatorii de aplicaţie şi se află grupate în modules.

Paginile internet (pages)
Sunt pagini Web care mijlocesc prin intermediul unui server, afişarea în internet a datelor unei aplicaţii Access 2000. Ele mai sunt numite şi pagini DAP (Data Access Pages). Paginile internet pot fi statice sau dinamice şi pot fi consultate prin intermediul browser-ului Internet Explorer 5.x. Cei care le consultă trebuie să aibă instalat MS-Office 2000.

5. TABELELE ŞI SISTEMUL DE RELAŢII

Aşa cum am arătat în capitolul anterior tabelele reprezintă „materia primă” a oricărei baze de date. Tabelele bazelor de date, la fel ca oricare alte tabele, au o structură dată de tipurile şi dimensiunile coloanelor care le compun. Într-o altă exprimare, în limbajul uzual se spune că oricărui tabel îi este specific un cap de tabel. Deci, orice tabelă are linii şi coloane şi conţine datele organizate conform unei anumite structuri. În limbajul bazelor de date coloanele se numesc câmpuri (fields). Fiecare coloană reprezintă un câmp (field) cu o denumire unică, de un anumit tip (şir de caractere, numeric, dată calendaristică, etc), având o dimensiune prestabilită, care îl determină să ocupe în memorie un anumit număr de octeţi în funcţie de tipul câmpului. Rândurile (liniile) tabelelor se numesc înregistrări (records). Evident spaţiul de memorie ocupat de o tabelă este funcţie de numărul de înregistrări şi de câmpuri ale acesteia. Pot exista şi tabele vide, adică fără nici o înregistrare. Aceste tabele au doar structură, configurată în funcţie de numărul, tipul şi dimensiunea câmpurilor. Iniţial, după crearea structurii, toate tabele sunt vide. Ele mai pot deveni vide şi în urma unei operaţiuni de ştergere a tuturor înregistrărilor conţinute. Tabelele pot prezenta datele (înregistrările) ordonate sau filtrate conform unor criterii (ex.: sortate alfabetic după numele persoanelor, în ordinea crescătoare (ascending) a codurilor sau în ordinea descrescătoare (descending) a mediilor, filtrate numai pentru persoanele născute după o anumită dată şi/sau numai pentru persoanele al căror nume începe cu litera „M”, etc). Deci, tabelele pot conţine datele ordonate, indexate după anumite câmpuri numite chei de acces sau chei de index. Orice tabelă poate avea câmpuri tip cheie primară de acces (evidenţiate întrun mod special sub Access prin plasarea unei pictograme cu o imagine de cheie în dreptul acestora) şi opţional câmpuri desemnate pentru cheile de index. Chiar dacă pot exista şi tabele fără cheie primară de acces şi fără chei de index, se recomandă ca fiecare tabelă să conţină măcar un câmp cheie primară. Având această organizare viteza de acces la date este mai mare şi deci creşte performanţa de procesare a bazei de date. Proiectarea structurii tabelelor şi a sistemului de relaţii dintre câmpurile acestora este o operaţiune foarte importantă, de ea depinzând în final performanţa globală a bazei de date. În această etapă de analiză trebuie avute în vedere regulile de normalizare a bazei de date. Dintre cerinţele procesului de normalizare amintim: • • • • câmpurile tabelelor să fie atomice, adică datele conţinute de către acestea să fie diferenţiate în câmpuri distincte astfel încât să răspundă necesităţilor de interogare; dacă există grupuri de câmpuri care se repetă pentru aceeaşi valoare a cheii primare acestea vor alcătui o tabelă separată; toate câmpurile dintr-o tabelă trebuie să se refere la cheia primară în totalitatea ei; toate câmpurile tabelelor să fie independente unele faţă de altele, deci între câmpurile aceleiaşi tabele nu trebuie să existe relaţii ascunse.

Prin puterea sa ca instrument software, Access-ul 2000 oferă oricărui utilizator (chiar fără cunoştinţe avansate de programare) posibilitatea de a crea şi utiliza cu uşurinţă tabele şi interogări dar nu poate substitui lipsa de experienţă şi de profunzime a analizelor acestora, nu poate lega singur tabelele, nu poate normaliza automat baza de date şi nu poate corecta greşelile din etapa de analiză. Iată câteva argumente care pledează pentru faptul că cel mai indicat este ca

TABELELE ŞI SISTEMUL DE RELAŢII

27

etapa de analiză să fie lăsată în seama specialiştilor mai ales atunci când este vorba de probleme complexe.

5.1. TIPURILE DE DATE ACCESS 2000
Crearea unei tabele presupune în general două etape distincte: definirea structurii tabelei şi încărcarea acesteia cu date. Definirea structurii tabelei constă în stabilirea câmpurilor (coloanelor) ca denumire, tip de date şi dimensiune (în funcţie de valorile pe care le vor conţine). Access 2000 permite utilizarea următoarelor tipuri de date pentru câmpurile tabelelor: Tip de date Text Memo Number Caracteristici Este alfanumeric, poate conţine maxim 255 de caractere Este analog tipului de date text cu deosebirea că poate conţine maxim 65.535 caractere. Câmpurile de tip memo nu pot fi câmpuri cheie. Reprezintă tipul de date numerică. În funcţie de tipurile de date numerice (mărimea maximă a numerelor) memorate în aceste câmpuri dimensiunea lor (field size) poate fi: Tip Domeniu de valori numerice ce pot fi Octeţi memorate ocupaţi Byte 0-255 (nu permite zecimale) 1 Integer -32.768 – 32.767 (nu permite zecimale) 2 Long -2.147.483.648 - 2.147.483.647 4 Integer (nu permite zecimale) Single -3,4 * 1038 - 3,4 * 1038 4 (permite maxim 15 zecimale) Double -1,797 * 10308 - 1,797 * 10308 8 (permite maxim 15 zecimale) Currency -922.337.203.685.477,5808 8 922.337.203.685.477,5808 Decimal -1028 – 1028 12 (permite maxim 28 zecimale) Formatul pentru acest tip de date poate fi: Denumire format Exemplificarea afişării General Number 1215,9 Currency $9876,2515 Fixed 876,25 Standard 1.2345.345,95 Percent 99.15 % Scientific 1,123E+05 Este un câmp numeric de tipul Long Integer, util pentru incrementarea automată cu +1 pentru fiecare înregistrare nouă a valorii codurilor numerice unice alocate câmpurilor de tip cheie de acces care se recomandă să însoţească orice tabelă. Este un câmp de tip logic (da / nu sau adevărat / fals). Nu poate fi un câmp cheie de acces.

AutoNumber

Yes / No

28

Lector univ. drd. Mihai Gavotă - Baze de date

Tip de date

Currency

Data / Time

OLE Object

Hyperlink

Lookup Wizard

Caracteristici Formatul pentru acest tip de date poate fi: Denumire format Exemplificarea afişării Yes / No Yes sau No True / False True sau False On / Off On sau Off None -1 sau 0 Reprezintă un câmp special recomandat pentru a fi utilizat în operaţiunile financiare care presupun lucrul cu anumite monede şi pentru care se cere un format special cu 4 zecimale util în eliminarea erorilor de rotunjire. Este tipul de câmp utilizat pentru memorarea datelor de tip dată sau timp. Afişarea acestuia este diferită în funcţie de ţara / limba utilizate de sistemul Windows. Exemplificările curente sunt pentru limba engleză USA. Formatul acestui tip de date poate fi: Denumire format Exemplificarea afişării General Date 12/28/2001 5:15:20 PM Long Date Saturday, August 18, 2001 Medium Date 18-Aug.2001 Short Date 8/18/2001 Long Time 9:15:00 AM Medium Time 1,123E+05 Short Time 15:00 Object Linked Embedded poate fi un document Word, o foaie de calcul Excel, un obiect grafic, un sunet sau un videoclip. Acest obiect poate avea orice mărime şi nu este limitat decât de mărimea spaţiului liber disponibil pe hard-disc. Este un câmp special care poate conţine adrese ale unor documente din cadrul paginilor Web sau adrese de e-mail. Adresele memorate în aceste câmpuri sunt afişate într-un mod similar cu cel în care apar în browser-ul internet. Un clic cu mouse-ul pe conţinutul unui astfel de câmp determină lansarea browser-ului şi deplasarea automată la acea adresă Web sau lansarea clientului e-mail implicit presetat automat pentru a trimite un mesaj la adresa de e-mail din câmp. Permite alegerea unei valori dintr-o altă tabelă prin intermediul unor obiecte de tip listă derulantă (list box şi combo box).

5.2. CREAREA TABELELOR
Access 2000 pune la dispoziţia proiectanţilor de aplicaţii trei metode utile pentru crearea tabelelor. Acestea sunt: 1. Create table in Design view (crearea tabelei în modul de proiectare „Design view” ) 2. Create table by using wizard (crearea tabelei utilizând „vrăjitorul”) 3. Create table by entering data (crearea tabelei chiar în momentul introducerii datelor).

TABELELE ŞI SISTEMUL DE RELAŢII

29

Cele trei metode sunt evidenţiate în următorul ecran care apare după selectarea obiectelor Tables prin apăsarea butonului de comandă specific.

Cea mai des utilizată metodă este prima - Create table in Design view, care odată selectată şi punctată prin <Enter> sau dublu clic ne deplasează în aceeaşi machetă de proiectare ce apare şi la apăsarea butonului . În următoarea figură se poate vedea macheta de proiectare disponibilă în momentul creării tabelei Date personale angajaţi (tabelă care a mai fost prezentată într-un capitol anterior, atunci când s-a discutat relaţia „unu la mulţi”).

30

Lector univ. drd. Mihai Gavotă - Baze de date

Numele câmpurilor se înscriu prin tastarea acestora în coloana Field Name iar tipul de dată se selectează prin intermediul unei liste (control combo box) care apare atunci când se execută un clic în linia cu câmpul dorit, în dreptul coloanei Data Type. Iată controlul combo box disponibil când se alege tipul de dată pentru câmpul data angajarii. Evident s-a ales tipul de dată Date / Time. În machetă se mai observă câmpul cod persoana care este un câmp tip cheie de acces – Primary Key. Acest câmp are în dreptul lui o pictogramă cheie care a fost selectată anterior printr-un clic dat în bara de instrumente pe butonul conţinând acelaşi simbol. Câmpul cod persoana se mai numeşte şi cheie internă. Structura tabelei mai conţine şi câmpurile nume persoana şi adresa în care se vor memora date de tipul Text. Câmpul cod functie se mai numeşte şi cheie externă şi este un câmp de legătură către o altă tabelă numită Nomenclator functii având o structură foarte simplă ce va fi prezentată în continuare. Se observă că această tabelă conţine doar trei câmpuri: cod functie care aici este cheie de acces primară, denumire functie – un câmp de tip Text ce va conţine denumirea în clar a funcţiilor ocupate de angajaţi şi cod categorie functie – o cheie externă care va fi utilă pentru crearea unei legături către o altă tabelă: Nomenclatorul categoriilor de functii. Dimensiunea aleasă (Field Size) pentru câmpul cod categorie functie este de tipul byte. S-a ales tipul numeric byte deoarece s-a considerat că nu este posibil să existe mai mult de 255 de categorii de funcţii. În acest fel s-a obţinut o economie de memorie datorată faptului că tipul de dată byte ocupă doar un octet (byte) de memorie. Structura tabelei Nomenclatorul categoriilor de functii se poate vedea în următoarea figură: Nomenclatorul categoriilor de functii este o tabelă secundară din care vom extrage la nevoie doar denumirea categoriei funcţiei ocupate de un angajat (ex.: director, şef de departament, şef de birou, analist, operator contabil, operator financiar, secretar etc). La capitolul referitor la interogări (queries) se va exemplifica lucrul cu această tabelă.

TABELELE ŞI SISTEMUL DE RELAŢII

31

Aşa cum am arătat la începutul subcapitolului, pe lângă metoda Design View, Access 2000 mai pune la dispoziţia utilizatorilor încă două metode utile pentru crearea tabelelor: Create table by using wizard (crearea tabelei utilizând „vrăjitorul”) şi Create table by entering data (crearea tabelei chiar în momentul introducerii datelor). În continuare vor fi prezentate pe scurt şi aceste două metode. Crearea unei tabele utilizând „vrăjitorul” se face dând dublu-clic pe opţiunea Create table by using wizard. În urma acestei acţiuni vom obţine o succesiune de dialoguri specializate pentru crearea unor tabele din domeniile Business sau Personal. Dialogurile se bazează pe anumite câmpuri predefinite de către Access pentru aceste domenii. Iată succesiunea de dialoguri care vor apărea dacă se selectează domeniul Business:

Microsoft, atunci când a creat Access 2000, a considerat că este bine să ofere utilizatorilor şi posibilitatea de a crea o tabelă chiar în momentul introducerii datelor. Aceasta este de fapt a treia metodă de creare a tabelelor, care devine disponibilă după selectarea opţiunii Create table by entering data. După solicitarea Create table by entering data va apărea o macheta de încărcare exhaustivă a datelor. Este o machetă preformatată pentru 10 coloane (câmpuri) numite Field1, Field2,…,Field10 şi 21 de rânduri (înregistrări) vide. Această modalitate de lucru presupune că ulterior, după introducerea datelor în celule, se va solicita metoda de lucru Design View pentru definirea structurii tabelei (numele câmpurilor, tipurile de date şi proprietăţile acestora). Intrarea în Design View se poate obţine prin apăsarea primului buton din bara de instrumente (toolbar) care conţine pictograma unui echer.

32

Lector univ. drd. Mihai Gavotă - Baze de date

Aşa cum se vede în Status bar scrie Datasheet View care este de fapt macheta standard pusă la dispoziţie de Access pentru încărcarea datelor direct în tabele. Iată de exemplu cum apare Datasheet View atunci când se încarcă date în tabela Nomenclatorul categoriilor de functii:

TABELELE ŞI SISTEMUL DE RELAŢII

33

Atunci când lucrează în modul de lucru Datasheet View Access pune la dispoziţia utilizatorilor mai multe facilităţi: • O bară de instrumente:

prin intermediul cărora: o se poate comuta în modul da lucru dorit: Design View (echerul) sau Datasheet View (tabelul) o se pot salva datele (discheta) o se pot lista datele la imprimantă sau previzualiza în vederea listării o se pot consulta datele sortate după valorile anumitor câmpuri (coloane) o conţinutul tabelei poate fi vizualizat filtrat după anumite criterii o se pot lansa căutări. • O bară standard de butoane de navigaţie printre înregistrări:

prin intermediul cărora (în ordine de la stânga la dreapta) se poate obţine: o deplasarea pe prima înregistrare (înregistrarea numărul 1) o deplasarea pe o înregistrare anterioară o se poate vedea numărul înregistrării curente (5 în cazul de faţă) sau se poate comanda deplasarea pe un alt număr de înregistrare, dacă în locul numărului curent (ce apare în câmpul de editare) se va înscrie numărul dorit pentru noua înregistrare (în final, se apasă tasta <Enter>) o deplasarea pe înregistrarea următoare o deplasarea pe ultima înregistrare a tabelei o deplasarea pe un spaţiu special rezervat (marcat prin *) pentru adăugarea unei înregistrări noi. • Informarea despre înregistrarea care se editează în acel moment:

este evidenţiată prin intermediul pictogramei care apare în stânga acesteia sub forma unui creion. • Informarea despre înregistrarea curentă:

este evidenţiată prin intermediul pictogramei care apare în stânga acesteia sub forma vârfului unei săgeţi orientate spre dreapta.

34

Lector univ. drd. Mihai Gavotă - Baze de date

5.3. SALVAREA TABELELOR
După crearea numelor de câmpuri (Field Name), alegerea tipurilor de date pentru acestea (Data Type) şi setarea proprietăţilor câmpurilor (Field Properties), se stabilesc câmpurile care alcătuiesc cheia primară de acces şi eventual alte chei de tip index, ce se pot selecta prin utilizarea butonului Indexes din toolbar în mod similar cu butonul Primary Key. Salvarea tabelelor se realizează prin alegerea opţiunii Save sau Save as din meniul File aflat în bara de meniuri (Menu bar). În urma acestei acţiuni apare următorul dialog: Aici se află înscris iniţial un nume implicit Table1 propus de Access. Peste acest nume se va înscrie de la tastatură numele dorit pentru tabel, (Nomenclator functii) apoi se va confirma prin apăsarea butonului <OK> sau a tastei <Enter>.

5.4. PROPRIETĂŢILE CÂMPURILOR
Apar în modul de lucru Design View disponibil atunci când se creează sau se modifică structura unei tabele. Secţiunea Field Properies este plasată în partea inferioară a dialogului Design View pentru tabele. Exemplul din partea stângă prezintă dialogul Design View pentru tabela Nomenclatorul categoriilor de functii.

Proprietăţile câmpurilor sunt: • • • Field Name - numele câmpului. Poate avea maxim 64 de caractere. Nu sunt admise caracterele: !.şţ Data Type - tipurile de date care pot fi selectate prin alegerea dintr-o listă derulantă (un control combo box). Acestea pot fi: Text, Memo, Number, Date/Time, Currency, AutoNumber, Yes/No, OLE Object, Hyperlink, Lookup Wizard. Description - poate conţine descrierea câmpurilor.

TABELELE ŞI SISTEMUL DE RELAŢII

35

• • •

Primary Key - simbolul cheie care poate apărea în stânga câmpurilor desemnate a fi chei primare de acces. Field Size - dimensiunea câmpului, stabileşte în funcţie de tipul acestuia cantitatea maximă de memorie posibil de alocat pentru valoarea unui câmp. Format - stabileşte formatul utilizat pentru afişarea câmpului. De exemplu, pentru câmpurile de tip numeric (number) acesta poate fi:

• • • •

Precision - precizia este prezentă numai pentru tipul de date Decimal şi defineşte numărul de cifre care trebuie afişate pentru o valoare numerică. Valoarea implicită este 18 iar cea maximă 28. Scale - apare numai pentru tipul de date Decimal şi stabileşte numărul zecimalelor afişate. Decimal Places - specifică numărul zecimalelor afişate pentru tipurile de date Number şi Currency. Input Mask - masca de intrare, specifică modul de afişare a datelor din acest câmp în timpul care editării. Atunci când se face clic în linia acestei proprietăţi apare butonul Builder dacă va fi apăsat va prezenta următorul dialog (wizard):

• • • •

Caption - este denumirea coloanei (câmpului) care se doreşte să apară înscrisă în capul de tabel atunci când se lucrează în modul Datasheet. Default Value - este valoarea implicită (prestabilită) care va apărea în câmp atunci când este introdusă o înregistrare nouă şi nu se introduce o valoare explicită. Validation Rule - reprezintă o expresie care limitează valorile ce pot fi introduse în respectivul câmp. Ex.: >10 indică faptul că în acel câmp nu vor putea fi introduse date numerice < 11. Validation Text - poate conţine textul care va fi afişat când operatorul introduce date care nu respectă regula din Validation Rule.

36

Lector univ. drd. Mihai Gavotă - Baze de date

• • •

Required - este o proprietate care nu permite decât două valori: Yes şi No. Yes arată că nu este permisă continuarea editării dacă respectivul câmp nu este completat cu date. Valoarea implicită pentru Required este No, adică sunt permise şi valori vide (Null) pentru acel câmp. Allow Zero Length - înseamnă Permite Lungime Zero şi este o proprietate care se aplică numai câmpurilor de tipul Text, Memo şi Hyperlink. Poate avea doar două valori: Yes şi No. Indexed - specifică dacă se va crea un index după acel câmp şi dacă este permis lucrul cu valori duplicate pentru respectivul câmp în cadrul indexului. Poate avea trei valori: Yes (Duplicates OK), Yes (No duplicates) şi No. Valoarea implicită este No, adică nu se crează un index după câmpul respectiv. Această proprietate nu se aplică câmpurilor Memo, OLE Object şi Hyperlimk. New Value - se aplică doar câmpurilor de tip AutoNumber şi arată cum vor fi generate noile valori pentru acest tip de câmp. Poate avea doar două valori: Increment şi Random. Increment specifică că o valoare nouă a unui câmp va fi obţinută prin adunarea celei mai mari valori a câmpului cu +1. Random impune acordarea unor valori noi în mod aleator.

5.5. IMPORTUL ŞI EXPORTUL DATELOR
Meniul File din bara principală de meniuri a bazelor de date Access 2000 oferă două opţiuni pentru importul sau exportul datelor din/în tabele externe, ale altor baze de date (Access, dBase, Paradox etc). Aceste opţiuni sunt: • Get External Data - preluarea de date externe. La selectare Get External Data deschide un submeniu cu două opţiuni: 1. Import - oferă posibilitatea aducerii datelor existente, din alte tabele externe (ale altor baze de date) în cadrul unor tabele interne ce vor fi create automat în baza de date curentă (Access). Presupunând că există o tabelă externă Piese.dbf creată anterior sub dBASE IV, după importul prin Get External Data, în baza de date curentă va apărea o nouă tabelă PIESE având numele şi tipurile câmpurilor asemănătoare cu cele din tabela originară Piese.dbf. 2. Link Tables – asigură legătura cu tabele externe. Access-ul poate lucra atât cu tabele interne bazelor de date proprii cât şi cu tabele externe, ale altor SGBD-uri, deci cu tabele care există fizic în afara bazei de date curente (Access). Mergând pe exemplul anterior, presupunând că există tabela externă Piese.dbf (creată sub dBASE IV) şi că se doreşte lucrul cu datele din interiorul acesteia dar fără a le importa (în baza de date Access), atunci există posibilitatea legării tabelei Piese.dbf la baza de date curentă prin opţiunea Link Tables. Iată materializate efectele celor două exemple anterioare: • • importul tabelei externe Piese.dbf, care a determinat apariţia între tabelele bazei de date, a unei tabele noi numită PIESE. legătura cu tabela externă Piese.dbf materializată prin apariţia legăturii tabelei sub forma: . Nefiind permisă existenţa a două tabele cu acelaşi nume (PIESE) în cadrul unei baze de date, Access-ul a redenumit automat tabela legată, cu numele PIESE1.

TABELELE ŞI SISTEMUL DE RELAŢII

37

Export. Această opţiune a meniului File asigură posibilitatea convertirii şi salvării tabelelor unei baze de date Access sub forma unor tabele specifice altor SGBD-uri. Astfel, dacă de exemplu se doreşte salvarea datelor unei tabele interne (Access) într-un format specific dBASE IV, deci într-o tabelă externă .dbf, se va apela la opţiunea Export disponibilă din meniul File. Să presupunem că dorim „exportul” tabelei interne Date angajati într-o tabelă externă tip dBASE IV, numită Date angajati.dbf. Procedura de „export” va cuprinde următorii paşi: o Selectarea tabelei interne Date angajati şi apelarea opţiunii Export din meniul File. Va apărea următorul dialog:

38

Lector univ. drd. Mihai Gavotă - Baze de date

o Selectarea dBASE IV (*.dbf) prin intermediul controlului combo box din dreptul câmpului Save as type. o Apăsarea butonului Save care va determina apariţia în folder-ul ales pentru salvare (My Documents în acest exemplu) a următoarelor fişiere: Date angajati.DBF, Date angajati.INF şi Date angajati.MDX, necesare sistemului dBASE IV. În Access 2000 mai există o modalitate foarte utilă prin intermediul căreia pot fi schimbate datele între obiectele interne Access dar şi între obiectele Access (tables, queries, câmpuri de editare) şi alte aplicaţii externe. Această posibilitate este oferită de mecanismul Clipboard. Lucrul cu Clipboard-ul este posibil de sub meniul Edit, specific oricărei aplicaţii Windows standard. În meniul Edit există opţiunile Copy, Cut, Paste şi Delete care pot fi utilizate la fel ca şi sub Word. De exemplu, prin folosirea mecanismul Clipboard sunt posibile: aducerea datelor selectate dintr-un tabel Word, într-o tabelă Access, copierea unor înregistrări selectate dintr-o tabelă Access într-o altă tabelă Access internă bazei de date sau într-un tabel Word sau Excel, copierea unor celule Excel într-una sau mai multe tabele Access, etc.

5.6. RELAŢIILE DINTRE TABELE
În subcapitolul 3.2. în care au fost tratate tipurile de relaţii s-a arătat că între tabelele bazelor de date pot exista patru tipuri de relaţii: „unu la unu”, „unu la mulţi”, „mulţi la unu” şi „mulţi la mulţi”. S-a arătat că relaţia „mulţi la mulţi” este un tip de relaţie complexă care nu este implementată în mod direct în sistemele de gestiune a bazelor de date relaţionale. Acest tip de relaţie între tabele se rezolvă prin introducerea unei tabele suplimentare care se află într-o relaţie de „mulţi la unu” cu fiecare dintre tabelele pe care le leagă. Deci, cele trei tipuri fundamentale de relaţii dintre tabele sunt: „unu la unu”, „unu la mulţi”, „mulţi la unu”. În continuare va fi prezentat felul în care Access a implementat aceste tipuri de relaţii. În acest sens, pentru o mai bună înţelegere a relaţiilor dintre tabele, în tabela principală Date angajaţi care a fost utilizată pentru exemplificări în subcapitolul 3.2, a mai fost inserat un câmp de legătură (cheie externă) – cod studii şi corespunzător în baza de date a fost creată (adăugată) o nouă tabelă Nomenclator studii având următoarea structură: Această tabelă va conţine doar trei înregistrări utile pentru identificarea tipului de studii absolvite de către angajaţi: cod studii 0 1 2 denumire studii fără medii superioare

Câmpul de legătură (cod studii) există şi în tabela Nomenclator studii dar aici el este cheie primară.

TABELELE ŞI SISTEMUL DE RELAŢII

39

Pentru a crea / actualiza relaţiile dintre tabelele unei baze de date Access se poate utiliza opţiunea Relationships din bara principală de meniuri sau butonul corespunzător din bara de instrumente:

Iată sistemul de relaţii al bazei de date:

40

Lector univ. drd. Mihai Gavotă - Baze de date

Se pune întrebarea: cum au fost realizate legăturile între tabelele bazei de date ? Va fi exemplificat în continuare algoritmul de creare a legăturii tabelei Date angajaţi cu tabela Nomenclator studii. 1. Selectarea opţiunii Relationships care va determina apariţia următoarei ferestre:

disponibil în bara de instrumente, va 2. Apăsarea butonului Show table deschide următorul dialog pentru adăugarea unei noi tabele în sistemul de relaţii: Se selectează şi se adaugă prin intermediul butonului <Add>, noua tabelă Nomenclator studii.

TABELELE ŞI SISTEMUL DE RELAŢII

41

3. După apăsarea butonului <Close> de închidere a dialogului anterior, în fereastra Relationships va apărea tabela Nomenclator studii fără nici o relaţie cu celelalte tabele:

4. Pentru crearea unei relaţii între tabela principală Date angajaţi şi tabela Nomenclator studii prin intermediul câmpului cod studii, se trage cu mouse-ul prin drag & drop (cu butonul stâng al mouse-ului apăsat), câmpul cod studii din Date angajaţi peste câmpul cod studii din tabela Nomenclator studii. După eliberarea butonului mouse-ului va apărea următorul dialog: Pentru alegerea tipului de relaţie dorit, va fi apăsat butonul Join Type care va afişa un alt dialog de selectare, ce oferă cele trei posibilităţi fundamentale de relaţii: „unu la unu”, „unu la mulţi” şi „mulţi la unu”.

42

Lector univ. drd. Mihai Gavotă - Baze de date

5. Dialogul de selectare a tipului de relaţie este: Atunci când se trage legătura (în pasul 4, prin drag & drop) este foarte important sensul de tragere (dinspre tabela Date angajaţi către tabela Nomenclator studii sau invers). Acest sens defineşte generic tabela care a fost considerată principală în respectiva relaţie. Deoarece s-a considerat tabela Date angajaţi ca fiind tabelă principală, atunci se va selecta tipul de relaţie 3. 6. După apăsarea butonului <OK> din dialogul anterior, se revine automat în fereastra de dialog Edit Relationships (vezi pasul 4), şi se confirmă prin clic pe butonul <Create>, ceea ce va determina crearea relaţiei între cele două tabele. Noua relaţie va fi materializată în fereastra Relationships astfel:

Este evident că celelalte relaţii dintre tabele au fost create în mod similar. Pentru că în relaţia dintre tabela Deplasare angajaţi şi Date angajaţi s-a considerat ca tabelă principală tabela Deplasări angajaţi, legătura este inversă. Aici este vorba de o relaţie „mulţi la unul” (mai multe deplasări identificate prin câmpul cod persoana corespund unui singur angajat).

6. CREAREA ŞI UTILIZAREA INTEROGĂRILOR

Interogările (queries) reprezintă poate cel mai interesant şi complex tip de obiecte ale oricărei baze de date, deoarece prin intermediul lor se pot procesa, sintetiza şi utiliza într-un mod superior datele existente în tabele. La fel ca şi la tabele, Access-ul pune la dispoziţie instrumente evoluate de proiectare – „vrăjitori”, ferestre de dialog specializate şi alte modalităţi de acces la date care fac posibilă programarea vizuală şi exclud aproape în totalitate necesitatea de a scrie cod. Interogările Access fructifică pe deplin aceste facilităţi şi îi ajută chiar şi pe utilizatorii fără cunoştinţe deosebite în domeniul informatic, să poată răspunde cu uşurinţă unor întrebări complexe legate de datele existente în baza de date. Chiar dacă afişarea directă a rezultatelor interogărilor nu se ridică la rafinamentul şi frumuseţea celor prezentate prin intermediul formularelor şi rapoartelor, ele sunt utile atât specialiştilor în etapa de programare cât şi utilizatorilor finali. Aceştia, nu de puţine ori, au nevoie să interogheze baza de date pentru a obţine informaţii ce nu au fost materializate de programatori prin formulare şi rapoarte şi nu au nevoie ca rezultatele să fie prezentate într-o formă prea elaborată. Access 2000 este un instrument software evoluat, care face într-adevăr posibile programarea vizuală şi dezvoltarea rapidă a aplicaţiilor. Interogările sunt utilizate pentru reunirea câmpurilor din mai multe tabele în vederea unei prezentări agregate a informaţiilor, pentru selectarea, ştergerea sau adăugarea înregistrărilor în/din tabele după anumite criterii, pentru crearea sau actualizarea datelor. Interogările pot fi de tip: • Select Query (de selectare) • Total Query (de totalizare) • Crosstab Query (de tip cap de tabel cu mai multe intrări) • Make-Table Query (de creare tabele) • Update Query (de actualizare) • Append Query (de adăugare) • Delete Query (de ştergere). Ca şi la tabele există posibilitatea creării interogărilor cu ajutorul „vrăjitorilor” specializaţi sau prin intermediul machetei de proiectare Design View. După comutarea în panoul obiectelor Queries apare următoarea fereastră: Aici primele două opţiuni sunt: 1. Create query in Design View 2. Create query by using wizard Semnificaţia acestor opţiuni este similară cu cea de la obiectele Tables. De fapt prezenţa lor constituie un standard Access, deoarece ele se vor regăsi şi în secţiunile Forms şi Reports.

44

Lector univ. drd. Mihai Gavotă - Baze de date

Prima opţiune, cea mai utilizată, este echivalentă cu apăsarea butonului Design din ecranul anterior şi atunci când este lansată în execuţie prezintă următorul dialog (Show Table):

După selectarea tabelelor sau interogărilor dorite pentru a constitui baza de prelucrare („materia primă”) pentru query-ul curent, se apasă butonul <Add>. Selecţia poate fi individuală, contiguă sau necontiguă, fiind similară cu modalitatea de selecţie din programul Windows Explorer. În exemplul nostru, s-a dorit o interogare prin care să obţinem o listă cu numele angajaţilor şi studiile acestora. În acest scop, înainte de apăsarea butonului <Add> s-au selectat (necontiguu folosind tasta Ctrl) cele două tabele necesare interogării – Date angajaţi şi Nomenclator studii. Terminarea şi închiderea lucrului cu acest dialog de adăugare se marchează prin apăsarea butonului <Close>. Următoarea fereastră afişată reprezintă macheta de proiectare vizuală a obiectelor de tip query. Se observă că cele două tabele au fost aduse automat legate prin relaţia care a fost definită şi care există în Relatioships:

CREAREA ŞI UTILIZAREA INTEROGĂRILOR

45

În partea de jos a acestei machete se găseşte un tabel vid (cu liniile: Field, Table, Sort, Show, Criteria, or), în ale cărui coloane vor trebui trase cu mouse-ul prin drag & drop câmpurile din tabelele (din partea de sus), ale căror valori vor fi afişate sau vor servi drept criterii de interogare. În cazul nostru vor fi trase câmpurile nume persoana din tabela Date angajaţi şi denumire studii din tabela Nomenclator studii. În urma acestor acţiuni macheta de proiectare va arăta astfel:

După apăsarea butonului View (primul buton din bara de instrumente – vezi imaginea anterioară), pe ecran va fi afişată următoarea listă cu rezultatele interogării: Se observă că sunt afişate doar cele două câmpuri (coloane) selectate. Relaţia dintre tabele realizată prin intermediul câmpului cod studii, asigură posibilitatea afişării studiilor corespunzătoare pentru fiecare persoană chiar dacă valorile acestui câmp nu apar explicit. Oricând se poate reveni în macheta de proiectare prin apăsarea primului buton din bara de instrumente, care acum conţine simbolul unui echer. Rezultatul interogării se poate previzualiza înaintea listării sau se poate lista efectiv la imprimantă prin intermediul butoanelor corespunzătoare din toolbar (sunt butoanele standard care conţin simbolurile imprimantă şi lentilă).

46

Lector univ. drd. Mihai Gavotă - Baze de date

Continuând exemplul, să presupunem că managerul de resurse umane solicită o altă ordonare a listei. El cere ca lista să fie sortată după studii şi anume întâi cele superioare, apoi studiile medii şi fără, iar în cadrul aceluiaşi tip de studii numele persoanelor să apară sortate alfabetic. Deci „în traducere” aceasta înseamnă o dublă sortare. Prima va fi o sortare descrescătoare (descending) după câmpul cod studii (deoarece 2=studii superioare, 1=studii medii, 0=fără studii), iar a doua, o sortare crescătoare alfabetic (ascending) după câmpul nume persoana. Cele două câmpuri (cod studii şi nume persoană) vor fi chei de sortare în cadrul acestei interogări. Ordinea de plasare a cheilor în interogare este importantă. Prioritatea cheilor descreşte de la stânga la dreapta (prima cheie, cea mai importantă, cod studii va fi plasată cel mai la stânga în tabelul machetei de proiectare). Tabelul din macheta de proiectare oferă pentru sortare linia (opţiunea) Sort iar pentru marcajul câmpurilor (coloanelor) vizibile la consultarea interogării, linia Show cu controale de marcare (check box). Câmpurile în dreptul cărora există bifă pe linia Show, vor fi vizibile. Iniţial toate câmpurile au prezentă bifa în dreptul lor pe linia Show (deci în mod implicit vor fi vizibile toate coloanele interogării) . În cazul nostru pentru că nu dorim să fie vizibile valorile câmpului cod studii (0, 1 sau 2) vom debifa respectivul control de marcare. Macheta de proiectare va fi:

CREAREA ŞI UTILIZAREA INTEROGĂRILOR

47

După apăsarea butonului View (primul din stânga pe toolbar) rezultatul interogării va fi următoarea listă dublu sortată:

Să presupunem că se solicită o situaţie mai complexă care pe lângă nume şi studii să afişeze funcţia deţinută şi data angajării. Lista trebuie să fie sortată în ordinea crescătoare a funcţiilor, apoi în cadrul fiecărei funcţii în ordine alfabetică după numele persoanelor. În acest caz, deoarece se solicită informaţii despre funcţiile deţinute, este necesară adăugarea în interogare a tabelei Nomenclator funcţii. Dialogul de adăugare Show Table se apelează prin apăsarea butonului cu acelaşi nume din bara de instrumente. Acest dialog este:

48

Lector univ. drd. Mihai Gavotă - Baze de date

După adăugarea tabelei Nomenclator funcţii se trag în tabel prin „drag & drop” câmpurile necesare interogării şi se stabilesc cheile de sortare. Macheta de proiectare va arăta astfel:

La apăsarea butonului View va fi afişată următoarea listă:

CREAREA ŞI UTILIZAREA INTEROGĂRILOR

49

Un query poate fi salvat prin procedurile standard Save sau Save as care au fost prezentate în capitolul anterior referitor la tabele. Orice query salvat poate deveni o sursă de date (similar unei tabele) pentru un alt query, un form sau un report. Orice interogare realizată în manieră vizuală sau cu ajutorul vrăjitorilor specializaţi se traduce de către Access într-o comandă SQL. Iată codul SQL creat automat de către Access pentru ultima interogare: SELECT şDate angajatiţ.şnume persoanaţ, şNomenclator functiiţ.şdenumire functieţ, şNomenclator studiiţ.şdenumire studiiţ, şDate angajatiţ.şdata angajariiţ FROM şNomenclator functiiţ RIGHT JOIN (şNomenclator studiiţ RIGHT JOIN şDate angajatiţ ON şNomenclator studiiţ.şcod studiiţ = şDate angajatiţ.şcod studiiţ) ON şNomenclator functiiţ.şcod functieţ = şDate angajatiţ.şcod functieţ ORDER BY şNomenclator functiiţ.şcod functieţ, şDate angajatiţ.şnume persoanaţ; Trebuie remarcată cu această ocazie puterea Access-ului ca instrument rapid de dezvoltare vizuală a aplicaţiilor, faptul că dă posibilitatea unui număr mare de persoane care nu sunt programatori de meserie să realizeze prelucrări complexe ale datelor. Interogările create până acum şi utilizate pentru exemplificări fac parte din interogările de tip Select. Vom prezenta în continuare toate tipurile de interogări puse la dispoziţie de Access.

6.1. INTEROGĂRILE DE TIP SELECT
Interogările de tip Select la fel ca orice alt tip de interogări, presupun existenţa în cadrul machetei de proiectare a: • • • tabelelor sau interogărilor care constituie sursa de date, relaţiilor dintre acestea moştenite din Relationships tabelului cu: o câmpurile, o cheile de sortare, o marcatorii de vizibilitate (Show), o criteriile (coniţiie) de selecţie.

Ele se pot utiliza pentru extragerea de date din una sau mai multe tabele (query-uri) şi efectuarea unor calcule. Orice cod SQL al query-urilor de tip Select începe evident cu comanda Select (vezi codul SQL din subcapitolul anterior). Selecţiile pot fi făcute şi pe baza anumitor criterii utile pentru filtrarea datelor. Linia Criteria din tabelul existent în macheta de proiectare este destinată special acestui scop. Scrierea condiţiilor complexe este asistată de un vrăjitor specializat care poate fi apelat apăsând opţiunea Build din meniul contextual al câmpului în care se scrie condiţia. Rezultatele interogării de selecţie pot fi prezentate sortate crescător sau descrescător după unul sau mai multe câmpuri. Alegerea câmpurilor respective se face în linia Sort. Dacă de exemplu se doreşte ca ultima listă (creată în subcapitolul anterior) să afişeze doar persoanele cu studii medii, atunci va fi necesară aplicarea unui asemenea filtru de selecţie.

50

Lector univ. drd. Mihai Gavotă - Baze de date

Macheta de proiectare va fi:

Se observă existenţa cifrei 1 pe linia Criteria în dreptul câmpului cod studii. Această acţiune simplă determină filtrarea şi deci afişarea doar a înregistrărilor care corespund condiţiei (adică au cod studii=1 ceea ce corespunde studiilor medii). Efectul aplicării filtrului poate fi observat în următoarea figură:

Lucrul cu funcţia like
Pot exista şi filtre multiple. De exemplu, este posibil ca în vederea sărbătoririi Sfântului Ion, să se solicite o listă care să afişeze doar persoanele cu studii superioare (cod studii=2) care au inclus în nume subşirul Ion. În acest sens se va utiliza o interogare de selecţie având drept criteriu de selecţie pentru nume, funcţia like (ca şi) cu următorii parametrii: like “*Ion*”. Caracterul * (se citeşte orice), are aceeaşi semnificaţie ca şi la filtrele pentru fişiere exemplu *.exe, *.*, etc . Deci, criteriul de selecţie pentru nume like “*Ion*” se poate citi: „toate numele persoanelor care au orice şir de caractere înainte de şirul Ion şi orice şir de caractere după şirul Ion”.

CREAREA ŞI UTILIZAREA INTEROGĂRILOR

51

Macheta de proiectare pentru această interogare va fi:

Rezultatul interogării este:

Dacă se doreşte o listă care să conţină toate numele care încep cu „Ion”, comanda like din linia Criteria este: like “Ion*”. Invers, dacă se doreşte o selecţie pentru toate numele care se termină cu caracterele „ion” atunci comanda like este: like “*ion”. Iată în continuare efectul ultimei comenzi (like “*ion”).

52

Lector univ. drd. Mihai Gavotă - Baze de date

Concatenarea şirurilor de caractere
Sub Access şirurile de caractere se pot concatena. Operatorul de concatenare este “&”. Dacă avem două şiruri: “123” şi “qwe” atunci rezultatul concatenării lor prin intermediul operatorului de concatenare (“123” & “qwe”) este: “123qwe”. Selecţiile anterioare bazate pe funcţia like puteau fi scrise şi astfel: like “*” & “ion” & “*” like “ion” & “*” like “*” & “ion”

Dialogurile parametrizate
Există situaţii în care selecţia nu se face de fiecare dată după aceleaşi caractere ce sunt conţinute în nume. În acest caz, se lasă operatorului sarcina de a introduce de la tastatură succesiunea de caractere ce sunt căutate. Acest lucru se poate realiza scriind parametrizat criteriul de selecţie în linia Criteria pentru câmpul nume persoana. La fiecare lansare în execuţie a interogării se afişează o fereastră de dialog prin intermediul căreia utilizatorul specifică şirul de caractere ce constituie baza de selecţie. Textul afişat care va apărea în acest dialog ar putea fi: Introduceţi caracterele incluse in nume: În linia Criteria textul trebuie cuprins între paranteze drepte: şIntroduceţi caracterele incluse in nume:ţ Comanda like exhaustivă care prin intermediul parametrizării va cuprinde toate cazurile de selecţie pentru câmpul nume persoana este: Like "*" & şIntroduceţi caracterele incluse în nume:ţ & "*" Secvenţa corespunzătoare din macheta de proiectare este:

CREAREA ŞI UTILIZAREA INTEROGĂRILOR

53

Dialogul care îi va apărea utilizatorului la lansarea interogării este:

Lucrul cu funcţia between
Dacă se doreşte o listă care să prezinte o selecţie a angajaţilor doar pentru categoriile funcţiilor de şefi atunci va mai trebui introdusă în interogare şi tabela Nomenclatorul categoriilor de funcţii. Conţinutul acestei tabele este: Se observă că în această tabelă câmpul cod categorie pentru funcţiile de şefi are valori cuprinse între 2 şi 4. Deci, pentru selecţia categoriilor de funcţii de şefi va fi necesară utilizarea funcţiei Between (între).

Macheta de proiectare pentru interogare este:

54

Lector univ. drd. Mihai Gavotă - Baze de date

Rezultatul interogării va fi:

6.2. INTEROGĂRILE DE TIP TOTALS
Alte modalităţi de punere a problemelor de interogare sunt cele referitoare la gruparea datelor din tabele după diferite criterii şi prezentarea unor date statistice despre acestea. Pentru fiecare din grupele ce se formează se pot calcula indicatori cum sunt: • • • • • • • Sum( ) – suma valorilor unui câmp, Count( ) – numărul înregistrărilor din fiecare grupă, Avg( ) – media valorilor unui câmp pentru fiecare grupă , StDev( ) – abaterea standard a valorilor unui câmp pentru fiecare grupă, Var( ) – dispersia valorilor unui câmp pentru fiecare grupă, Min( ), Max( ) – valoarea minimă / maximă, Last( ) - ultimul, First( ) – prima / ultima valoare din grupă pentru câmpul respectiv. Să presupunem că avem următorul query de tip Select:

CREAREA ŞI UTILIZAREA INTEROGĂRILOR

55

Oricând un query de tip Select poate fi transformat într-un query de tip Totals prin apăsarea butonului ∑ din bara de instrumente: .

După apăsarea butonului ∑, macheta de proiectare va deveni:

Se observă în tabelul din partea de jos a machetei apariţia liniei Total care are înscrisă funcţia Group By în dreptul fiecărui câmp. Dacă dorim o situaţie care să ne prezinte câte persoane din fiecare categorie de funcţii există în instituţie, atunci înseamnă că dorim o grupare a lor (Group By) după categoria de funcţie şi apoi o numărare (contorizare - Count) a acestora. Pentru rezolvare, în dreptului câmpului cod persoana (deoarece dorim să numărăm persoane), pe linia Total vom face clic cu mouse-ul pe controlul combo box disponibil, ceea ce va determina deschiderea următoarei liste derulante din care vom alege funcţia Count:

56

Lector univ. drd. Mihai Gavotă - Baze de date

În dreptul câmpului cod persoana pe linia Total va apărea în loc de Group By, funcţia Count. Rezultatul acestui query va fi:

Codul SQL generat automat de Access pentru această interogare este: SELECT şNomenclatorul categoriilor de functiiţ.şdenumire categorie functieţ, Count(şDate angajatiţ.şcod persoanaţ) AS şCountOfcod persoanaţ FROM şNomenclatorul categoriilor de functiiţ RIGHT JOIN (şNomenclator functiiţ RIGHT JOIN (şNomenclator studiiţ RIGHT JOIN şDate angajatiţ ON şNomenclator studiiţ.şcod studiiţ = şDate angajatiţ.şcod studiiţ) ON şNomenclator functiiţ.şcod functieţ = şDate angajatiţ.şcod functieţ) ON şNomenclatorul categoriilor de functiiţ.şcod categorie functieţ = şNomenclator functiiţ.şcod categorie functieţ GROUP BY şNomenclatorul categoriilor de functiiţ.şcod categorie functieţ, şNomenclatorul categoriilor de functiiţ.şdenumire categorie functieţ; O altă întrebare la care răspunsul ar fi uşor de dat cu ajutorul interogărilor de tip Totals ar fi: „Câţi angajaţi cu studii medii şi câţi cu studii superioare sunt în instituţie?”. Macheta de proiectare este: Se observă că pe linia Criteria în dreptul câmpului cod studii s-a înscris condiţia >0. În acest fel se selectează doar persoanele cu studii superioare şi cele cu studii medii (persoanele fără studii au câmpul: cod studii=0).

CREAREA ŞI UTILIZAREA INTEROGĂRILOR

57

Răspunsul la întrebare (rezultatul interogării) va fi:

6.3. INTEROGĂRILE DE TIP UPDATE
Sunt utile pentru actualizarea automată a unuia sau mai multor câmpuri existente în sursele de date actualizabile care cel mai frecvent sunt tabelele. În traducere update înseamnă actualizare. De exemplu, dacă se doreşte actualizarea tuturor valorilor câmpurilor data angajare din tabela Date angajati la valoarea 11-August-1999 (#8/11/1999# în formatul implicit) atunci cel mai indicat este să se folosească un query de tip Update. O altă alternativă, mult mai ineficientă, ar fi să se actualizeze manual valorile câmpului data angajare pentru fiecare înregistrare. În cazul în care această tabelă ar avea câteva mii de înregistrări şi dacă în plus s-ar mai pune şi condiţia ca actualizarea să se producă doar pentru persoanele cu studii superioare, atunci cu siguranţă va trebui abandonată metoda manuală şi apelat la query-ul de tip Update. În acest sens se solicită crearea unui query nou. (New sau Create query in Design view). Se adaugă tabela Date angajati şi se solicită transformarea interogării din tipul implicit (de tip Select) în interogare de tip Update. Următoarea imagine prezintă această acţiune:

58

Lector univ. drd. Mihai Gavotă - Baze de date

După setarea opţiunii Update Query se adăugă restricţia în linia Criteria (cod studii=2) şi se înscriere valoarea de actualizare (#8/11/1999#) în linia Update To (specifică acestui tip de query). Macheta de proiectare va arăta astfel:

Pentru că interogările de tip Update modifică datele din tabele, atunci acestea se lansează prin comanda Run disponibilă prin intermediul butonului ! din toolbar. După apăsarea acestui buton în mod implicit apare următorul dialog:

care ne solicită să mai confirmăm încă o dată că într-adevăr dorim actualizarea (modificarea) datelor. Modificarea odată făcută este ireversibilă. Se observă că Access-ul a identificat deja că în tabela Date angajati există doar 11 înregistrări (rows) care satisfac condiţia. Confirmând cu <Yes> atunci rezultatul lansării query-ului va fi:

CREAREA ŞI UTILIZAREA INTEROGĂRILOR

59

6.4. INTEROGĂRILE DE TIP MAKE-TABLE
Oferă posibilitatea creării unei tabele noi pe baza structurii şi datelor existente în alte tabele. Să presupunem că dorim crearea unei tabele noi numită Tabela nouă cu datele angajaţilor care să aibă acelaşi conţinut cu tabela Date angajaţi. Procedura este similară cu cea de la interogările de tip Update, cu deosebirea că de această dată se va seta opţiunea Make-Table Query:

După setarea opţiunii va apărea următorul dialog în care vom înscrie numele noii tabele: În continuare vor fi trase prin „drag & drop” câmpurile dorite pentru a fi conţinute în noua tabelă. Apoi, tot ce avem de făcut este apăsarea butonului Run din toolbar:

60

Lector univ. drd. Mihai Gavotă - Baze de date

Această acţiune va avea ca rezultat apariţia noii tabele în fereastra obiectelor de tip Table:

6.5. INTEROGĂRILE DE TIP DELETE
Dacă se doreşte ştergerea anumitor înregistrări dintr-o tabelă pe baza unor criterii, atunci se foloseşte query-ul de tip Delete (şterge). Modalitatea de transformare a unui query implicit de tip Select într-un query de tip Delete constă în alegerea opţiunii Delete Query din lista derulantă a tipurilor de interogări. Să presupunem că dorim să ştergem înregistrările din tabela Date angajaţi care corespund persoanelor cu studii medii, adică acolo unde (where) cod studii=1.

CREAREA ŞI UTILIZAREA INTEROGĂRILOR

61

După transformarea în query de tip Delete şi după completarea criteriului where cod studii=1, macheta de proiectare va fi:

Acţiunea de ştergere se va declanşa după lansarea comenzii Run.

6.6. INTEROGĂRILE DE TIP APPEND
De multe ori este necesară preluarea înregistrărilor dintr-o tabelă şi adăugarea lor (append) într-o altă tabelă. Aceasta se realizează prin query-ul de tip Append. Structura celor două tabele trebuie să fie aceeaşi pentru câmpurile care se vor adăuga în noile înregistrări. Să presupunem că avem tabela numită Tabela nouă cu datele angajaţilor şi că dorim adăugarea înregistrărilor acestei tabele la înregistrările tabelei Date angajaţi. Paşii algoritmului care va trebui urmat sunt următorii: 1)

62

Lector univ. drd. Mihai Gavotă - Baze de date

2)

3)

6.7. INTEROGĂRILE DE TIP CROSSTAB
La începutul capitolului Crearea şi utilizarea interogărilor am prezentat intenţionat prima opţiune oferită de Access: Create query in Design view şi nu pe cea care asigura lucrul cu „vrăjitori”, deoarece era necesară dobândirea cunoştinţelor de bază, fundamentale, legate de generarea şi proiectarea interogărilor. Acum, în această etapă, lucrul cu „vrăjitori” (wizards) devine eficient, iar query-ul de tip Crosstab este un exemplu foarte bun pentru a începe această prezentare. În traducere crosstab înseamnă tabel (încrucişat) cu două sau mai multe intrări. Un exemplu de interogare de tip Crosstab este acela în care se obţine situaţia numerică a angajaţilor pe categorii de funcţii şi pe tipuri de studii. Această situaţie va fi un tabel cu dublă intrare: pe

CREAREA ŞI UTILIZAREA INTEROGĂRILOR

63

rânduri (rows) categoriile de funcţii din instituţie conform Nomenclatorului categoriilor de funcţii, iar pe coloane (columns) tipurile de studii. În celulele din tabel (la intersecţia liniilor cu coloanele) vom avea numărul de persoane (count) din instituţie care îndeplinesc o funcţie dintro categorie şi au anumite studii. Înainte de a începe lucrul cu „vrăjitorul” este necesar să ne construim un query ajutător de tip Select care va furniza informaţiile necesare (cod persoana, denumire categorie funcţie şi denumire studii). Macheta de proiectare a acestui query este:

Pentru a putea alege tipul de query dorit, posibil de realizat cu ajutorul „vrăjitorilor” vom da clic pe butonul New din fereastra de prezentare a bazei de date:

64

Lector univ. drd. Mihai Gavotă - Baze de date

După apăsarea butonului New va apărea un dialog prin intermediul căruia vom putea alege tipul de query dorit:

Paşii care vor fi urmaţi în continuare sunt prezentaţi în următoarea succesiune de dialoguri: • alegem sursa de date (query-ul construit anterior şi salvat cu numele Query1):

CREAREA ŞI UTILIZAREA INTEROGĂRILOR

65

Pe rânduri vor fi categoriile de funcţii:

Iar pe coloane tipurile de studii:

66

Lector univ. drd. Mihai Gavotă - Baze de date

Se alege funcţia care realizează numărarea persoanelor:

În acest moment query-ul Crosstab este gata:

CREAREA ŞI UTILIZAREA INTEROGĂRILOR

67

După apăsarea butonului <Finish> poate fi vizualizat tabelul realizat de „vrăjitor”:

Macheta de proiectare a acestui query (realizată de wizard) este:

Codul SQL generat automat de Access pentru această interogare care poate fi consultat prin intermediul opţiunii SQL View, este: TRANSFORM Count(Query1.şcod persoanaţ) AS şCountOfcod persoanaţ SELECT Query1.şdenumire categorie functieţ, Count(Query1.şcod persoanaţ) AS şTotal Of cod persoanaţ FROM Query1 GROUP BY Query1.şdenumire categorie functieţ PIVOT Query1.şdenumire studiiţ;

7. FORMULARE ŞI RAPOARTE

7.1. FORMULARE (FORMS)
Odată creată structura de tabele componente ale bazei de date, se pune problema populării acestora cu datele pe care dorim să le avem în evidenţă. Aşa cum am arătat în capitolul referitor la tabele, acest lucru poate fi făcut direct, în modul de lucru Datasheet View accesibil din bara de instrumente. Atunci când se doreşte introducerea datelor într-o formă mai apropiată de aspectul documentului primar de pe care se culeg informaţiile, când se doreşte afişarea unor elemente grafice sau efectuarea unor operaţii ajutătoare, se vor folosi pentru introducerea datelor formulare (machete). Formularele sunt instrumente standardizate puse special la dispoziţie de Access pentru a constitui interfaţa cu utilizatorul la introducerea, modificarea şi ştergerea datelor din tabele şi totodată pentru culegerea de la acesta a unor opţiuni sau valori de date în funcţie de care se vor face calcule, afişa rezultate ale unor interogări sau tipări anumite rapoarte. Utilizarea formularelor pentru manipularea datelor din tabele prezintă prin comparaţie cu modul de lucru Datasheet View o serie de avantaje dintre care enumerăm: • • • posibilitatea alegerii modului de prezentare a tabelului la introducerea datelor: să se vadă pe ecran o singură înregistrare odată sau să se vadă mai multe înregistrări; aranjarea în formular a textului explicativ, câmpurilor de date sau grafice şi a butoanelor astfel încât, chiar dacă tabelul are un număr mare de câmpuri sau câmpuri foarte lungi, acestea să fie vizibile pe cât posibil în întregime pe ecran; formularele permit realizarea unei interfeţe mai prietenoase cu utilizatorul prin intermediul unor elemente de evidenţiere (texte explicative, culori, dimensiune şi caracteristici font, chenare cu care se pot grupa datele care au legătură din punct de vedere logic, etc); în formulare putem crea anumite butoane care prin apăsare să declanşeze efectuarea anumitor calcule, validări mai complexe decât cele existente la nivelul unui câmp sau chiar accesul la un alt formular pentru executarea unor operaţiuni logic necesare în momentul introducerii datelor.

Aplicaţiile informatice scrise în Access de profesionişti se prezintă ca o structură arborescentă de formulare şi rapoarte. Primul formular constituie un fel de panou de comandă (switchboard) şi cuprinde de obicei denumirea aplicaţiei, un scurt text de prezentare şi un număr de butoane sau opţiuni de meniu care permit accesul la principalele componente ale acesteia. Fiecare componentă conţine la rândul ei, în funcţie de gradul de complexitate, alte formulare (care pot fi de introducere date sau de opţiuni) şi rapoarte. Toate aceste formulare trebuie să ofere posibilitatea de a fi închise pentru a se putea trece la executarea unei alte componente a aplicaţiei.

FORMULARE ŞI RAPOARTE

69

Un astfel de formular panou de comandă al unei aplicaţii se prezintă ca în figura de mai jos.

În acest capitol ne vom ocupa de crearea formularelor şi vom arăta cum se folosesc instrumentele specializate puse la dispoziţie de Access în acest scop. Pentru lucrul cu formulare este prevăzut în fereastra de prezentare a bazei de date un buton care ne aduce pe ecran toate obiectele de acest tip existente în baza de date. În afara acestora, mai există două intrări corespunzătoare celor două modalităţi de creare a formelor: cu ajutorul „vrăjitorului” (wizard-ului) specializat şi în mod proiectare directă (design).

70

Lector univ. drd. Mihai Gavotă - Baze de date

Atunci când sunt active obiectele de tip formular (forms) observăm că în partea de sus a ferestrei de prezentare a bazei de date sunt active un număr de butoane cu funcţii specifice. Acestea prin apăsare realizează: • • • • • Open - deschide pentru vizualizare şi execuţie un formular existent; Design - intră în modul proiectare pentru a modifica un formular; New - permite crearea unui formular nou alegând modalitatea de creare şi un anumit tip de formular; Delete - permite ştergerea din baza de date a formularului selectat; Celelalte butoane permit aranjarea în diferite moduri a formularelor din baza de date: cu iconiţe mari sau mici, sub formă de listă simplă sau detaliată.

În Access se păstrează caracteristica de redundanţă specifică produselor Microsoft şi anume aceea că o operaţie poate fi făcută în mai multe moduri. Astfel, principalele operaţiuni necesare a fi executate asupra formularelor pot fi executate şi prin activarea meniului contextual cu butonul din dreapta al mouse-ului. În figura următoare sunt prezentate operaţiunile ce pot fi executate asupra unui formular din baza de date prin intermediul meniului contextual:

FORMULARE ŞI RAPOARTE

71

7.1.1. Crearea formularelor cu ajutorul „vrăjitorilor” (wizards)
Cea mai simplă metodă de creare a unui formular şi prima care trebuie încercată este aceea în care suntem asistaţi de un „vrăjitor”. În acest scop apăsăm butonul New care deschide o fereastră de dialog ca cea din figura următoare:

Din această fereastră de dialog se poate alege modalitatea de creare a formularului prin Design View sau Form Wizard, sau se poate opta pentru un anumit tip de formular prestabilit. Primele două opţiuni permit alegerea modalităţii de proiectare, şi anume: • • Design View – crearea formularului se face în mod proiectare directă, fără a fi asistată de programul Access; Form Wizard – crearea formularului se va face în mod asistat de către un „vrăjitor” specializat.

Aceste două opţiuni nu necesită alegerea unui tabel sau a unei interogări (Choose the table or query where …), din lista prezentă în partea de jos a ferestrei, acest lucru fiind opţional. Următoarele opţiuni permit selectarea unui anumit tip de formular, cu format prestabilit, care va fi creat automat de Access. Pentru fiecare din aceste opţiuni este obligatorie alegerea din listă a unui tabel sau a unei interogări pentru a cărei editare este conceput formularul: • AutoForm: Columnar – se creează automat un formular de editare a datelor care va cuprinde câmpurile tabelului (interogării) precedate de denumirile acestora. Acestea vor fi aranjate succesiv de sus în jos pe coloană. Formularul va afişa câte o singură înregistrare odată.

72

Lector univ. drd. Mihai Gavotă - Baze de date

• •

AutoForm: Tabular - se creează automat un formular de editare a datelor care va cuprinde mai multe înregistrări afişate simultan pe ecran. Câmpurile tabelului (interogării) şi denumirile acestora vor fi aranjate optim, astfel încât să fie vizibile simultan cât mai multe informaţii. AutoForm: Datasheet - se creează automat un formular de editare a datelor care va cuprinde mai multe înregistrări afişate simultan pe ecran. Câmpurile tabelului (interogării) şi denumirile acestora vor fi aranjate într-un format similar foilor de calcul Excel. Chart Wizard - se creează în mod asistat un formular care prezintă datele din câmpurile tabelului (interogării) sub formă de diagramă. Pivot Table Wizard - se creează în mod asistat un formular care permite actualizarea datelor dintr-o tabelă pivot creată cu ajutorul produsului Excel. care

Cea mai frecventă alegere dintre cele enumerate mai sus este Form Wizard presupune fixarea unor opţiuni şi parcurgerea unor paşi astfel:

1. În acest prim ecran de dialog se alege tabela sau interogarea care va sta la baza formularului ce va fi creat. Odată ales, în lista de dedesubt vor fi accesibile toate câmpurile tabelei sau interogării, dintre care unele (sau toate) vor fi selectate pentru a fi afişate în formular. Cele selectate (cu ajutorul butoanelor > sau >> ) vor apărea în lista din partea dreaptă. Dacă ne răzgândim şi dorim să renunţăm la unul sau la toate câmpurile selectate vom folosi butoanele < sau << . După ce am ales câmpurile vom apăsa butonul <Next> pentru a trece la ecranul următor de dialog.

FORMULARE ŞI RAPOARTE

73

2. În cadrul acestui ecran de dialog vom alege tipul de formular. Vom regăsi aici acele tipuri de formulare care ar fi putut fi alese încă din fereastra New Form.

După alegerea tipului de formular şi apăsarea butonului <Next> se va trece la următorul ecran de dialog. 3. Alegerea unui stil anume de formular dintre cele care sunt afişate ca posibile. Aspectul fiecărui tip de formular este prezentat atunci când este selectat cu mouse-ul.

74

Lector univ. drd. Mihai Gavotă - Baze de date

4. În ultimul ecran de dialog vom alege numele formularului creat, fie acceptând numele propus de Access, fie scriind numele dorit. Mai putem stabili acum câteva opţiuni care ne permit accesul la formular fie în mod editare, pentru a avea acces la date, fie în mod proiectare pentru a-i aduce unele modificări.

Apăsarea butonului <Finish> încheie procesul de creare a formularului în mod asistat de către un „vrăjitor” specializat. Aşa cum am putut observa din ecranele de dialog prezentate mai sus, în oricare din fazele procesului putem abandona (prin apăsarea butonului <Cancel>), ne putem întoarce la faza precedentă (prin apăsarea butonului <Back>), putem continua (prin apăsarea butonului <Next>) sau termina procesul de creare a formularului (prin apăsarea butonului <Finish>). Formularul creat, cu ajutorul „vrăjitorului”, pentru tabela Date Angajaţi arată ca în figura următoare:

Bară de selectare

Bară de stare

FORMULARE ŞI RAPOARTE

75

Observăm că a fost generată automat o linie de stare care cuprinde numărul înregistrării prezentă pe ecran, numărul total de înregistrări din tabelă şi butoane care fac posibilă navigarea printre înregistrările tabelei. Navigarea presupune: poziţionarea pe prima înregistrare din tabelă, trecerea la înregistrarea precedentă, trecerea la înregistrarea următoare, poziţionarea pe ultima înregistrare din tabelă şi adăugarea unei noi înregistrări. Pe formular mai observăm o bară verticală de selecţie înregistrare. Odată selectată înregistrarea, cu toate câmpurile ei, va putea fi ştearsă, copiată sau înlocuită. În acest sens, bara de selecţie înregistrare (bara verticală) oferă un meniu contextual propriu.

7.1.2. Crearea formularelor în mod proiectare directă
Aşa cum am văzut, un formular nou poate fi creat atât în mod asistat cu ajutorul „vrăjitorilor” specializaţi cât şi în mod proiectare directă. Această ultimă modalitate mai este folosită atunci când dorim să modificăm un formular deja creat, indiferent prin care dintre metode. Alegerea succesivă a opţiunilor: New → Design View → OK determină apariţia următorului ecran de proiectare: 2 1 4 5 6 3

Obiectele evidenţiate sunt: 1. bara de titlu - conţine numele formularului şi elementele specifice unei ferestre Windows: meniul şi butoanele de închidere, minimizare / maximizare; 2. selectorul formei - care prin dublu-clic permite afişarea proprietăţilor formei; 3. riglele de deplasare pe verticală şi pe orizontală - care permit, în cazul unor formulare care nu se văd în întregime, aducerea în zona vizibilă a părţilor aflate mai jos, mai sus, în dreapta sau în stânga;

76

Lector univ. drd. Mihai Gavotă - Baze de date

4. secţiunea Details - pe care sunt amplasate obiectele formularului: text, câmpuri de editare, butoane, liste, imagini, etc; 5. secţiunea externă (din afara) formularului; 6. fereastra cu instrumente de proiectare (Toolbox) - această fereastră este absolut necesară procesului de proiectare directă deoarece este locul de unde vor fi luate obiectele care se amplasează pe formular. În cazul în care această fereastră nu este vizibilă la un moment dat ea poate fi făcută vizibilă (şi apoi invizibilă din nou) prin apăsarea butonului sau din meniu apăsând succesiv View → Toolbox. Un formular, în afara zonei Details în care se vor afişa informaţiile referitoare la fiecare din înregistrările tabelei, mai poate avea alte zone: de antet şi subsol de formular şi de antet şi subsol de pagină. Vizualizarea acestor zone în modul proiectare directă se face apăsând succesiv din meniu View → Form Header/Footer respectiv View → Page Header/Footer . Antetul şi subsolul formei sunt folosite pentru scrierea titlurilor, a butoanelor, a totalurilor sau a altor elemente care nu se modifică de la o înregistrare la alta. Acestea nu vor fi derulate în cazul unor formulare ce conţin mai multe înregistrări. Antetul şi subsolul de pagină conţin informaţii asemănătoare pe care dorim să le afişăm o singură dată pe fiecare pagină.

Forma mouse-ului la marginea inferioară a secţiunii Page Footer Aceste secţiuni suplimentare sunt opţionale spre deosebire de secţiunea Details care este totdeauna prezentă. Fiecare dintre ele poate fi redimensionată sau chiar eliminată prin executarea unui clic cu mouse-ul pe marginea inferioară şi deplasarea mouse-ului până când se obţine dimensiunea dorită a secţiunii (drag & drop). În figura de mai sus este ilustrat acest proces şi forma pe care o ia mouse-ul când atinge marginea secţiunii.

FORMULARE ŞI RAPOARTE

77

Formularul, ca şi toate celelalte obiecte pe care le conţine, are o serie de proprietăţi la care putem accepta valorile implicite sau pe care le vom modifica astfel încât să obţinem un aspect şi o comportare dorită pentru formular. Activarea ferestrei de proprietăţi a formei se poate face în mai multe feluri: • • • • apăsând butonul din dreapta al mouse-ului atunci când acesta este poziţionat pe selectorul formei şi alegând din meniul contextual opţiunea Properties; apăsând butonul din bara de instrumente după ce în prealabil am dat un clic cu mouse-ul în secţiunea exterioară formularului din zona de proiectare; apăsând butonul din dreapta al mouse-ului atunci când acesta este poziţionat în secţiunea exterioară formularului activând meniul contextual şi alegând opţiunea Properties; apăsând succesiv View → Properties după ce în prealabil am dat un clic cu mouse-ul în secţiunea exterioară formularului din zona de proiectare.

Proprietăţile formei sunt grupate pe categorii şi anume: • • • • • Format – cuprinde proprietăţile de formatare, adică acele proprietăţi legate de tipul formularului, aspectul şi modul de prezentare al acestuia; Data – cuprinde proprietăţile legate de modul de lucru cu datele din tabele sau interogări, care vor fi editate cu ajutorul formularului; Event – prezintă evenimentele care pot avea loc în timpul lucrului cu formularul pentru manipularea datelor; Other – prezintă o serie de proprietăţi suplimentare de rafinare a lucrului cu formularul; All – prezintă toate proprietăţile de mai sus reunite. Proprietăţile formularului (Form) se completează fie cu un text, un număr, o valoare dintr-o listă derulantă (care se deschide atunci când apăsăm triunghiul din dreapta) fie cu o valoare pe care o alegem fiind asistaţi de „vrăjitorul” activat atunci când apăsăm butonul marcat (…) . Nu toate proprietăţile pun la dispoziţie liste derulante sau asistenţi dar atunci când ne poziţionăm cu mouse-ul pe oricare dintre ele, în partea de jos a ecranului, pe linia de stare, apare un text explicativ în limba engleză care ne dă mai multe amănunte despre semnificaţia proprietăţii respective. Cele mai multe dintre acestea vor rămâne la valorile lor implicite şi numai câteva dintre ele sunt obligatoriu de completat.

78

Lector univ. drd. Mihai Gavotă - Baze de date

Vom prezenta în continuare semnificaţia câtorva dintre principalele proprietăţi ale formei: • • Caption – se completează cu titlul formularului. Dacă se completează, acesta va fi afişat în bara de titlu. În caz contrar în bara de titlu va apărea numele sub care s-a salvat formularul; Default View – este o proprietate care ne oferă spre alegere o listă cu trei variante reprezentând tipul de formular: o formular în care se afişează câte o singură înregistrare o formular în care se afişează atâtea înregistrări câte încap pe ecran o formular care are forma unei foi de calcul Excel; Navigation Buttons – proprietatea poate avea două valori: Yes şi No, adică determină afişarea sau nu a butoanelor standard de navigare în formular; Auto Center – implicit are valoarea No, dar se poziţionează pe Yes dacă se doreşte ca formularul să fie aranjat centrat pe ecran la lansarea în execuţie; Picture – numele unui fişier grafic. Imaginea conţinută de acesta va fi afişată ca fundal pentru formular; Picture Type – indică modalitatea în care fişierul grafic afişat ca fundal va fi gestionat: inclus în baza de date sau ca o legătură către un fişier exterior bazei de date; Width – specifică lăţimea formularului. Se mai poate modifica selectând cu mouse-ul marginea dreaptă a formularului şi aducând-o la dimensiunea dorită; Record Source – specifică sursa de date a formularului care poate fi un tabel sau o interogare; On Open – specifică acţiunile care se execută la afişarea pe ecran a formularului; On Close – specifică acţiunile care se execută atunci când închidem formularul; On Current – specifică acţiunile care se execută în momentul trecerii de la o înregistrare la alta; On Delete – specifică acţiunile care se execută în momentul ştergerii unei înregistrări; Modal – specifică faptul că fereastra formular păstrează controlul până când este închisă.

• • • • • • • • • • •

Un formular conţine o serie de obiecte care fac posibilă manipularea datelor din tabele sau interogări, afişarea unor explicaţii referitoare la date şi evidenţierea acestora astfel încât să se realizeze o interfaţă prietenoasă cu utilizatorul. Amplasarea controalelor, modificarea sau ştergerea acestora se poate face numai în modul proiectare directă a formularului (design). Oricând se poate trece din modul proiectare (design) în modul de vizualizare a formularului (form view) şi invers. Aceasta ne permite să avem imediat controlul asupra modificărilor făcute. Trecerea între cele două modalităţi de vizualizare se face prin apăsarea primului buton din partea stângă a barei specifice formelor aşa cum se vede în imaginea următoare:

FORMULARE ŞI RAPOARTE

79

Obiectele disponibile pentru a fi amplasate în formular sunt prezentate în fereastra de instrumente (toolbox). Aceasta poate fi făcută vizibilă prin apăsarea butonului sau din meniu alegând succesiv opţiunile View → Toolbox. Modalitatea de a amplasa într-un formular unul din obiectele de control prezentate în fereastra cu instrumente (Toolbox), este următoarea: - se selectează obiectul ales prin executarea unui clic cu mouse-ul deasupra acestuia; - se deplasează mouse-ul deasupra formularului observând că prompter-ul său are o formă de cruce şi are agăţată de el pictograma obiectului selectat; - se execută un clic cu mouse-ul pe formular (acolo unde se doreşte a fi plasat colţul din stânga sus al obiectului) şi se deplasează mouse-ul (cu butonul din stânga apăsat, prin drag & drop) până când dreptunghiul format ajunge la dimensiunea dorită pentru obiect. În acel moment se eliberează butonul din stânga al mouse-ului. În continuare vom descrie principalele obiecte din fereastra de instrumente, detaliindu-le pe cele mai des utilizate: Pointer – Obiect de control care se activează în mod automat atunci când este afişată fereastra cu instrumente de proiectare. Are rol de a deselecta obiectul selectat în acel moment şi de a aduce mouse-ul la forma standard, adică cea de săgeată. Vrăjitor (wizard) – Obiect de control care permite activarea / dezactivarea instrumentelor „vrăjitor”. Ele ajută la crearea automată a obiectelor de control complexe, cum sunt: butoanele de comandă, listele, listele derulante, grupările de opţiuni, subformularele. Etichetă (label) – Obiect de control care creează o casetă cu text. Acest text nu poate fi modificat la momentul execuţiei. Casetă de text (text box) – Obiect de control care creează o casetă în care se afişează şi pot fi actualizate valorile din câmpurile tabelelor, interogărilor sau alte valori introduse de utilizator. Acest obiect este însoţit de o etichetă în care este prezentată la execuţie denumirea câmpului sau a variabilei a cărei valoare este afişată. Grup de opţiuni (option group) – Obiect de control ce creează o casetă în care pot fi amplasate mai multe obiecte, în general de acelaşi fel: butoane de opţiune, comutatoare, casete de validare. Din cadrul grupului poate fi selectat un singur obiect la un moment dat. Buton comutator (Toggle button) – Obiect de control care creează un buton cu două stări, corespunzătoare valorilor Da(Yes) / Nu(No), şi permite utilizatorului să selecteze una dintre ele. Buton de opţiune (option button) – Obiect de control similar butonului comutator. Se utilizează cel mai frecvent în cadrul grupurilor de opţiuni pentru a selecta una dintre ele. Este însoţit de o etichetă în care este explicată semnificaţia opţiunii respective.

80

Lector univ. drd. Mihai Gavotă - Baze de date

Casetă de validare (check box) – Obiect de control similar butonului comutator. Listă derulantă (combo box) – Obiect de control realizat din combinaţia dintre o casetă de text în care se pot introduce valori şi o listă din care se poate alege o valoare. Este indicat să fie creat cu ajutorul „vrăjitorului” specializat. Listă (list box) – Obiect de control care conţine o listă de valori din care poate fi aleasă una. Buton de comandă (command button) – Obiect de control care atunci când este apăsat execută o comandă sau o succesiune de comenzi.. Este indicat să fie creat cu ajutorul „vrăjitorului” specializat deoarece acesta oferă spre alegere cele mai frecvent întâlnite acţiuni pe care le putem asocia butonului. „Vrăjitorul” va scrie în locul nostru procedura în limbaj VBA asociată evenimentului On Click. Putem vedea conţinutul procedurii fie din fereastra de proprietăţi a controlului, apăsând butonul (…) după ce în prealabil am selectat evenimentul On Click, fie selectând Build event din meniul contextual al controlului. Imagine (image) – Obiect de control care permite afişarea unui fişier grafic cu extensia .bmp, .ico, .gif, etc. Acest fişier se află în afara bazei de date şi nu poate fi modificat din Access. Obiect cadru nelegat (unbound object frame) – Obiect de control care permite afişarea în formular a unui obiect (document, grafic, multimedia) importat dintr-o altă aplicaţie Windows (Word, Excel, Paint, Sound Recorder). Obiect cadru legat (bound object frame) – Obiect de control care permite afişarea în formular a unui obiect memorat într-un câmp de tip OLE Object al unei tabele. Delimitator de pagină (page break) – Obiect de control care împarte formularul în mai multe pagini. Nu este afişat pe formular la execuţie dar determină imprimanta să facă salt la pagină nouă în cazul tipăririi formularului. Control de tip tab (tab control) – Obiect de control care permite gruparea celorlalte controale amplasate în formular pe pagini asemănătoare cu cele ale unei agende. Trecerea de la o pagină la alta şi vizualizarea controalelor acesteia se face apăsând indexul din partea de sus care conţine un text explicativ despre conţinutului paginii. Subformular (subform) – Obiect de control ce permite ataşarea la un formular a unui alt formular care trebuie să fi fost creat anterior. De obicei datele din subformular sunt legate logic de cele din formularul principal. Linie (line) – Obiect de control care permite amplasarea unei linii în formular. Poate avea culori şi grosimi diferite, fiind folosită la evidenţierea anumitor zone de pe formular. Dreptunghi (rectangle) – Obiect de control care permite încadrarea altor controale sau grupuri de controale în dreptunghiuri de diferite dimensiuni şi culori. Alte controale (more controls) – Buton de control care permite afişarea altor controale (mai rar utilizate) înregistrate în Access.

FORMULARE ŞI RAPOARTE

81

Dacă în timpul proiectării dorim să selectăm un obiect vom executa un clic cu mouse-ul deasupra acestuia. Dacă dorim să selectăm mai multe obiecte simultan, acest lucru se face ţinând apăsată tasta Shift în timp ce cu mouse-ul dăm clic deasupra obiectelor dorite. Deselectarea se face ţinând tasta Shift apăsată şi dând clic cu mouse-ul deasupra obiectului care este deja selectat. Având mai multe obiecte selectate simultan, le vom putea muta, redimensiona sau seta acele proprietăţi care le sunt comune tuturor. Fiecare dintre controalele enumerate mai sus, la fel ca şi obiectul Formular (form) despre care am vorbit mai înainte, au proprietăţi şi evenimente la care pot reacţiona. Proprietăţile specifice controalelor sunt vizibile în fereastra de proprietăţi atunci când obiectul respectiv a fost selectat. Principalele proprietăţi ale controalelor ce pot fi amplasate într-un formular sunt: Proprietăţi ce se referă la aspectul obiectelor de control: • Caption – conţine un text afişat de către control. Este o proprietate specifică controalelor care nu-şi modifică valoarea în timpul execuţiei; • Visible – determină afişarea sau nu a controlului în timpul execuţiei formularului; • Left – stabileşte coordonata orizontală a colţului stânga sus al obiectului de control; • Top – stabileşte coordonata verticală a colţului stânga sus al obiectului de control; • Width – stabileşte lăţimea controlului; • Height – stabileşte înălţimea controlului; • Back Style – determină dacă afişarea controlului se face normal sau transparent; • Back Color – stabileşte culoarea de fundal a controlului; • Border Style – specifică tipul de linie care va constitui marginea (bordura) controlului; • Border Color – specifică ce culoare are bordura (marginea); • Border Width – specifică grosimea bordurii; • Fore Color – specifică ce culoare va avea textul afişat de control; • Font Name – permite alegerea dintre fonturile instalate pe calculator a aceluia cu care se va scrie textul afişat de control; • Font Size – stabileşte dimensiunea fontului; • Picture – specifică numele şi calea fişierului grafic ce va fi afişat în interiorul controlului (pentru imagini şi butoane de comandă); • Text Align – specifică modul de aliniere a textului afişat în interiorul controlului (stânga, dreapta, centrat sau fără aliniere). Proprietăţi ce se referă la sursa din care obiectele de control se alimentează cu date: • • • • • • • Control Source – poate fi un câmp dintr-o tabelă sau dintr-o interogare sau poate fi o expresie de calcul construită cu ajutorul „vrăjitorului” specializat (expresion builder). O expresie este întotdeauna precedată de semnul =; Input Mask – indică formatul folosit la introducerea datelor (numai pentru câmpul casetă de text); Default Value – specifică o valoare implicită pe care o va avea iniţial controlul; Validation Rule – specifică o condiţie pe care trebuie să o îndeplinească datele care sunt introduse în control; Enabled – specifică dacă respectivul control este activ sau inactiv. Row Source – specifică pentru controalele de tip listă, denumirea sursei de date pentru elementele listei; Row Source Type – specifică pentru controalele de tip listă, tipul sursei de date (tabel, interogare, listă de valori, etc).

82

Lector univ. drd. Mihai Gavotă - Baze de date

Proprietăţi care se referă la evenimente ce pot avea loc în legătură cu obiectele de control: • • • • • • On Click – evenimentul apare la executarea unui clic cu mouse-ul deasupra controlului; On Got Focus – evenimentul apare atunci când controlul este focalizat, adică pointerul se poziţionează în acest control; On Lost Focus – evenimentul apare atunci când controlul este părăsit, adică pointerul se poziţionează în alt control sau este activată o altă fereastră; Before Update – evenimentul se declanşează înaintea actualizării datelor din control; After Update – evenimentul se declanşează după actualizarea datelor din control; On Change – evenimentul se declanşează atunci când datele din control sunt modificate.

Pentru fiecare eveniment se pot specifica acţiunile care vor fi executate atunci când el se produce. Acţiunile sunt descrise folosind instrucţiuni în limbajul Visual Basic for Applications. Alte proprietăţi ale controalelor: • • • Name – specifică denumirea controlului. Fiecare control are un nume unic. Acest nume este atribuit automat la crearea obiectului dar poate fi modificat astfel încât să fie cât mai sugestiv. Status Bar Text – specifică un text care va fi afişat la execuţie în bara de status atunci când controlul este accesat; Control Tip Text – conţine mesajul afişat la execuţie atunci când se întârzie cu mouse-ul deasupra controlului, fără a apăsa butoanele mouse-ului.

Un control foarte util pentru actualizarea datelor din tabelele bazei de date este controlul subformular (subform). Acest tip de control este folosit în special pentru actualizarea acelor tabele care sunt legate între ele printr-o relaţie „unu la mulţi”. Formularul principal afişează o înregistrare din prima tabelă iar subformularul afişează toate înregistrările relaţionate cu aceasta din cea de-a doua tabelă.. În cazul actualizării simultane a mai multor tabele relaţionate, trebuie ţinut seama că un formular principal poate conţine oricâte subformulare dar un subformular poate conţine la rândul său un singur subformular (pot exista maxim trei niveluri de formulare). Un obiect subformular se poate crea cu ajutorul „vrăjitorului” specializat. Este necesar ca înainte de a crea un subformular să fie create tabelele şi să se stabilească relaţia între câmpurile acestora (cheia primară a unei tabele şi cheia externă din cealaltă tabelă). Să urmărim în continuare modul de creare a unui subformular în care se actualizează deplasările pe care le fac persoanele angajate la o firmă. Tabelele relaţionate pe care dorim să le actualizăm sunt Date angajaţi şi Deplasări angajaţi. Considerând tabela de bază ca fiind Date angajaţi, între tabele poate exista o relaţie “unu la mulţi”, adică unui angajat îi corespund niciuna, una sau mai multe deplasări. Legătura dintre cele două tabele se face prin câmpul cod persoana care în prima tabelă este cheie primară iar în a doua tabelă este cheie externă. Nu este obligatoriu să avem acelaşi nume pentru câmpurile corespondente din cele două tabele dar acest lucru uşurează procesul. Formularul principal de actualizare a tabelei Date angajaţi a fost prezentat anterior. Deschidem acest formular în modul proiectare (design) şi amplasăm în el un control de tip subformular.

FORMULARE ŞI RAPOARTE

83

Dacă este activat butonul „vrăjitor” din fereastra de instrumente, va intra în execuţie asistentul specializat care va afişa următoarea fereastră de dialog:

Vom alege ca subformular, Deplasări angajaţi, care a fost creat anterior. În următoarea fereastră de dialog se stabilesc câmpurile din cele două tabele după care s-a stabilit relaţia. Având în ambele tabele câmpul cod persoana, „vrăjitorul” a identificat singur legătura. Există şi cazuri în care trebuie să specificăm noi câmpurile de legătură.

84

Lector univ. drd. Mihai Gavotă - Baze de date

Procesul de creare a subformularului se încheie aici şi denumirile câmpurilor după care se stabileşte legătura sunt înscrise automat în proprietăţile Link Master Field şi Link Child Field, proprietăţi specifice controlului subformular. Lansând în execuţie formularul principal (prin Form View), el va arăta ca în figura de mai jos şi va permite actualizarea simultană a celor două tabele relaţionate. În acest fel, prin păstrarea corespondenţei între cheia primară şi cheia externă (străină) a tabelelor este asigurată şi integritatea referenţială a bazei de date.

O altă modalitate de a crea un subformular în interiorul unui formular principal este următoarea: 1. Se deschide în mod proiectare (design) formularul care constituie formularul principal; 2. Se activează fereastra de proiectare a bazei de date; 3. Folosind tehnica drag&drop se alege obiectul subformular şi se plasează în interiorul formularului principal; 4. Se setează proprietăţile obiectelor şi eventual se tratează evenimentele acestora; 5. Se salvează formularul principal. Orice modificare făcută ulterior asupra subformularului, ca obiect de tip formular, se va reflecta şi în formularul principal.

7.2. RAPOARTE (REPORTS)
Situaţiile finale pun cel mai bine în valoare informaţiile conţinute într-o bază de date. Ele sunt necesare în primul rând managerilor dar sunt utile şi celorlalţi operatori care contribuie la luarea deciziilor. Rapoartele se constituie ca obiecte ale bazelor de date Access sau ale software-ului front-end special destinate pentru realizarea situaţiilor finale. Prin intermediul rapoartelor datele din tabele şi cele rezultate în urma interogărilor pot fi consultate şi listate într-un mod superior. Access 2000 oferă instrumente evoluate de proiectare a rapoartelor, uşurând astfel foarte mult munca utilizatorilor care doresc să pună în valoare rezultatele interogărilor lor. Şi aici este posibil lucrul cu „vrăjitori” iar setul de obiecte oferit proiectanţilor în modul Design View este

FORMULARE ŞI RAPOARTE

85

similar celor de la formulare. Pentru proiectarea rapoartelor sunt disponibile o multitudine de controale: câmpurile text box ce pot fi formatate pentru afişarea datelor, etichetele (labels), subrapoartele, obiectele image, obiectele tip figuri geometrice, etc Având la dispoziţie aceste tipuri de controale, prin îmbinarea lor, proiectarea rapoartelor devine accesibilă şi celor fără o pregătire informatică superioară în acest domeniu. Atunci când vom comuta în fereastra de prezentare a bazei de date în secţiunea obiectelor de tip raport, pe ecran vor apărea, aşa cum am văzut şi la celelalte tipuri de obiecte, cele două modalităţi de creare a obiectelor de tip raport: • • Create report in Design View Create report by using wizard

Dacă există rapoarte create anterior, numele acestora vor fi afişate în continuare.

Opţiunile sunt similare celor de la formularele şi oferă aceleaşi posibilităţi de proiectare în modul Design View sau în lucrul cu wizard-ul. Deoarece au fost prezentate în detaliu la capitolul formulare, în continuare se va insista pe particularităţile rapoartelor şi pe câteva exemple practice de proiectare a acestora. Iată macheta de proiectare vizuală şi caseta Toolbox a unui raport, obţinute în urma selectării opţiunii Create report in Design View:

86

Lector univ. drd. Mihai Gavotă - Baze de date

În continuare va urma amplasarea controalelor în macheta de proiectare astfel încât să se obţină raportul dorit. Titlul raportului şi data listării se scriu de obicei în secţiunea Report Header, capul de tabel al raportului (ce va trebui să fie prezent pe fiecare pagină) în Page Header, liniile tabelului în Detail, numărul de pagină în Page Footer, locurile pentru semnături şi probabil totalurile generale în Report Footer. Toate acestea vor deveni mai clare după ce vom studia o machetă simplă de proiectare a unui raport realizată de către un „vrăjitor”. Să presupunem că se doreşte un raport care să prezinte: • în ordine alfabetică numele persoanelor, şi pentru fiecare persoană să afişeze: o adresa, o data angajării, o numărul de telefon.

În acest sens vom selecta opţiunea Create report by using wizard, care va determina parcurgerea următoarei succesiuni de dialoguri: 1.

FORMULARE ŞI RAPOARTE

87

2.

3.

4.

88

Lector univ. drd. Mihai Gavotă - Baze de date

5.

6.

Iată raportul furnizat de wizard în mai puţin de 30 de secunde:

FORMULARE ŞI RAPOARTE

89

Macheta de proiectare a raportului (generată automat de wizard) în modul Design este:

Se observă: • titlul raportului Date angajati scris într-un control Text box în secţiunea Report Header, • capul de tabel în secţiunea Page Header, • conţinutul tabelului in secţiunea Detail, • data ( =Now( ) ) şi numărul de pagină Page … în Page Footer. O altă facilitate puternică a rapoartelor Access este Sorting and Grouping care oferă posibilitatea grupării informaţiilor afişate în raport. Să presupunem că ni se solicită afişarea raportului anterior cu numele persoanelor şi informaţiile aferente acestora (adresa şi telefonul) grupate după data angajării. Forma de raport solicitată este:

90

Lector univ. drd. Mihai Gavotă - Baze de date

Acest raport va fi obţinut în urma unor modificări minime făcute în modul de lucru Design View asupra machetei de proiectare a raportului anterior. Va fi necesară o nouă secţiune: data angajarii Header şi o grupare crescătoare (ascending) după acest câmp (data angajării). Apelând meniul contextual prin clic pe butonul drept al mouse-ului vom obţine:

Alegând opţiunea Sorting and Grouping din meniul contextual, va apărea următorul dialog în care vom alege câmpul data angajării ca primă cheie de grupare, Ascending ca ordine de sortare crescătoare şi vom schimba în Yes valoarea câmpului Group Header: Nu am setat la valoarea Yes şi opţiunea din câmpul Group Footer pentru că nu dorim să scriem nimic atunci când se termină un grup de persoane angajate la aceeaşi dată. De obicei în secţiunile de sfârşit ale grupurilor se afişează totaluri ale valorilor câmpurilor pentru fiecare grupă.

În urma acestor operaţiuni macheta de proiectare va deveni:

FORMULARE ŞI RAPOARTE

91

Se observă apariţia unei secţiuni noi: data angajarii Header. În continuare prin drag & drop vom trage eticheta data angajării din capul de tabel în această secţiune, şi apoi tot prin drag & drop, alături, vom plasa câmpul (controlul Text box) data angajării din Detail. Macheta de proiectare va deveni:

Pentru a afişa data angajării îngroşat (bold) şi în formatul Medium Date este necesar să fie schimbate proprietăţile acestui control. Apelând meniul contextual al controlului şi solicitând opţiunea Properties vom avea acces la proprietăţi:

92

Lector univ. drd. Mihai Gavotă - Baze de date

din Dacă se doreşte vizualizarea pe ecran a raportului se apasă butonul Toolbar. Va fi afişat pe ecran raportul în forma solicitată, adică cea care a fost prezentată când s-a formulat problema.

8. LUCRUL CU HIPERLEGĂTURI ŞI GENERAREA PAGINILOR WEB

8.1. SCURTĂ INTRODUCERE
În timp, descoperirile ştiinţifice au schimbat fundamental modul de comunicare şi relaţionare al oamenilor. Noile forme de comunicare au influenţat, fiecare în felul ei societatea. Tiparul, a făcut posibilă în secolul XV multiplicarea textului şi a determinat o creştere a circulaţiei informaţiei, care în cele din urmă, a reprezentat baza pe care s-au clădit multe schimbări radicale ale acelor vremuri. În secolul XX radioul şi televiziunea au adus sunetul şi imaginea. Prima generaţie mass-media electronică a extins accesul individului la informaţie, exercitând asupra unei largi părţi a populaţiei o influenţă de omogenizare. Această dezvoltare a avut un rol important în formarea societăţii informaţionale, o realitate fundamentală a epocii prezente. În ultimii ani o nouă tehnologie comunicaţională începe să se impună: reţelele interactive de calculatoare ce fac posibile stocarea şi livrarea unei mari cantităţi de informaţie către unul sau mai mulţi receptori. Informaţia procesată digital în aceste reţele poate fi multiplicată, manipulată şi distribuită cu mare uşurinţă. Mai mult, spre deosebire de comunicarea unidirecţională specifică mass-mediei tradiţionale, reţelele interactive se bazează pe un flux comunicaţional omnidirecţional care permite utilizatorului asumarea unui rol activ. Mulţi cercetători susţin că reţelele interactive deţin potenţialul de revoluţionare a modului nostru de a comunica, a munci, a cumpăra şi a ne distra. Revoluţie sau nu, un lucru este însă cert: ele au şi vor avea un impact semnificativ asupra vieţii noastre. În prezent cea mai accesibilă şi întinsă reţea interactivă este internetul, „reţeaua reţelelor”. Un sinonim tot mai mult utilizat pentru internet este „autostrada informaţională”. Până acum 10-15 ani, utilizarea internetului era limitată doar la câteva medii universitare, ea exista doar în lumea oamenilor de ştiinţă, a cercetătorilor şi a studenţilor. În prezent, internetul are peste 100 de milioane de utilizatori, rata de creştere exponenţială nefiind egalată de nici un alt mediu tradiţional. Creşterea utilizării internetului a fost şi este determinată de îmbunătăţirea interfeţelor de acces reprezentate în principal de browser-ele de navigare, care au devenit din ce în ce mai prietenoase, de scăderea costurilor serviciilor de telecomunicaţii, a calculatoarelor şi aparatelor adiţionale (modem, etc) şi, poate cel mai important, de posibilitatea de a uşura comunicarea dintre oameni şi de a prezenta informaţie ştiinţifică, comercială, publicitate şi divertisment. Presiunea creată de creşterea explozivă a internetului din ultimii zece ani a determinat marile firme de software să-şi regândească politicile de dezvoltare a produselor informatice astfel încât acestea să respecte standardele de interfaţă Windows în lucrul cu utilizatorul şi să ofere pe lângă facilităţile specifice programelor de aplicaţie şi facilităţi de comunicare şi acces prin internet. Astfel, firme cum sunt Microsoft, Borland-Inprise, IBM au început să creeze medii vizuale de dezvoltare rapidă a aplicaţiilor software în care clasele de obiecte internet deţin o pondere din ce în ce mai mare. Posibilităţile oferite de aceste produse au determinat dezvoltatorii de aplicaţii software să utilizeze noile tehnologii şi să includă în aplicaţiile lor facilităţi de

94

Lector univ. drd. Mihai Gavotă - Baze de date

comunicare cu utilizatorii, de accesare la distanţă a datelor şi informaţiilor de comerţ electronic, de documentare, toate acestea prin intermediul serviciilor internet. De asemenea, noile sistemele de operare au început să ofere funcţii şi programe performante de apel la serviciile internet care să facă posibilă funcţionarea optimă a aplicaţiilor ce solicită accesul la internet. În prezent adresele Web şi adresele de e-mail au intrat în limbajul curent şi apar tot mai des pe cărţile de vizită. Prin intermediul lor, între utilizatori, poate fi vehiculat cu costuri foarte reduse un volum impresionant de informaţie.

8.2. WORLD WIDE WEB
World Wide Web sau WWW este cel mai utilizat şi cel mai nou serviciu de informaţii care a apărut pe internet. De departe cele mai dese motive de folosire a internetului sunt serviciile WWW şi poşta electronică. Standardul WWW a fost definitivat în 1992 de către CERN (Laboratorul European pentru Particule Fizice), dar dezvoltarea accelerată a Web-ului a început în 1993 când NCSA (National Centre for Supercomputing Application) a creat primul browser grafic de Web – Mosaic. World Wide Web-ul se bazează pe o tehnologie denumită hypertext. De fapt WWW este o încercare de organizare a tuturor informaţiilor din Internet, plus orice alte informaţie locală, ca un set de documente hypertext. Trecerea de la un document la altul se face prin legături. Înainte de browser-ele grafice, utilizarea web-ului şi în general a internetului necesita cunoaşterea unor comenzi complicate, iar pe ecranul calculatorului nu era afişat decât text simplu. Browser-ele moderne şi WWW au transformat internetul într-o colecţie de documente grafice prin care utilizatorul poate să navigheze folosind o interfaţă de tip “point-and-clic” bazată pe hiperlegături. Când utilizatorul de Web dă clic pe o legătură (cuvânt subliniat / colorat, buton sau imagine în spatele căruia se ascunde o adresă internet) el se deplasează (la o altă adresă) într-o altă pagină a aceluiaşi document sau într-un alt document din Web. Paginile sunt organizate în site-uri de Web care reprezintă colecţii de documente cu aceeaşi temă. Site-urile de Web au la bază fişiere codificate cu ajutorul unui limbaj de programare simplu numit HTML (HyperText Markup Language). Comenzile HTML pot fi scrise cu un editor de text (de exemplu Notepad) dar există şi programe foarte puternice de dezvoltare a paginilor Web (Frontpage, Dreamweaver şa). Fişierele în format HTML au devenit un standard al zilelor noastre. Multe aplicaţii informatice între care Word, Access, PowerPoint şi Outlook au abilitatea de converti şi salva documentele proprii în format HTML. De asemenea ele pot importa şi lucra cu fişiere HTML. Simplitatea limbajului de programare HTML şi structura descentralizată a internetului au determinat în mare parte creşterea explozivă a Web-ului din ultimii ani. Alte două cauze importante ale creşterii spectaculoase a Web-ului sunt accesibilitatea sa şi independenţa de platformă.

LUCRUL CU HIPERLEGĂTURI ŞI GENERAREA PAGINILOR WEB

95

8.3. TEHNOLOGII ŞI PRODUSE PROGRAM TIP CLIENT INTERNET
În paralel cu limbajul HTML au început să fie dezvoltate şi alte tehnologii şi standarde care facilitează şi îmbunătăţesc accesul la paginile Web şi uşurează lucrul cu obiectele bazelor de date. Iată câteva dintre acestea: • XML (Extensible Markup Language) o extensie limbajului HTML care face posibilă păstrarea atributelor de formatare ale documentului iniţial. Access 2000 foloseşte XML pentru a stoca paginile DAP (Data Access Pages) şi obiectele ADO (ActiveX Data Objects). DHTML (Dynamic HTML) este o tehnologie client care facilitează un acces evoluat la paginile Web printr-o afişare specială a unor seturi de date şi lansare în execuţie a unor script-uri cu ajutorul browser-ului din calculatorul client. DAP (Data Access Pages) permite distribuirea în internet a datelor din formulare, interogări şi tabele Access, în formatul DHTML. ASP (Active Server Pages) este o aplicaţie oferită de browser-le Internet Explorer începând cu versiunea 4.0 care permite includerea script-urilor VBScript (VBS) în server pentru programarea elementelor interactive din paginile Web şi pentru exploatarea bazelor de date în internet. VBS (VBScript – Visual Basic Scripting Edition) este un limbaj de script care utilizează un set simplificat de funcţii ale limbajului Visual Basic for Applications (VBA) care este limbajul de programare al Access-ului şi al majorităţii programelor din MS Office 2000. Codurile VBS pot fi incluse în paginile Web pentru a seta proprietăţile controalelor ActiveX. Câteva dintre cele mai importante produse program tip client internet sunt: • • • • • Internet Explorer este în prezent browser-ul cel mai utilizat pentru navigare în internet. Începând cu versiunea 5.0 oferă facilităţi pentru lucrul cu paginile DAP în Access 2000. Este compatibil cu standardele HTML, DHTML, XML, ActiveX. NetMeeting este un program util pentru colaborarea în reţea. Permite comunicarea vocală şi organizarea de conferinţe şi videoconferinţe în internet. Windows Media este un player pentru fişierele de sunet şi cele video. Poate furniza conţinut multimedia live şi la cerere prin internet şi intranet. Frontpage este un program util pentru crearea de pagini Web şi întreţinerea site-urilor. Asigură Database Connectivity şi posibilitatea lucrului cu ASP. Personal Web Server (PWS) este un server pentru Windows 9x şi Windows NT 4.0.

• • •

Începând cu anul 1997, firma Microsoft şi-a reconsiderat poziţia în privinţa software-ului pe care îl producea. În acel an a apărut pachetul de programe de birou MS-Office 97 care conţinea multe îmbunătăţiri faţă de versiunile anterioare. A apărut clientul de e-mail Outlook, programul Word putea încărca şi salva documente în formatul HTML, iar Access-ul 97 avea inclus, un nou motor pentru lucrul cu bazele de date mult mai performant, permitea tipul de date hyperlink şi putea salva conţinutul unor obiecte în format ASP şi HTML. De asemenea era disponibil un toolbar special pentru navigaţia în internet. Aceste facilităţi reflectau o evidentă deschidere a firmei către internet. Microsoft a continuat această linie prin noile pachete de programe MS-Office 2000 şi apoi prin MS-Office XP care prin componentele lor aduc foarte multe elemente, facilităţi şi

96

Lector univ. drd. Mihai Gavotă - Baze de date

instrumente noi pentru crearea obiectelor apte să lucreze în intranet şi în internet. Access 2000 a beneficiat din plin de aceste îmbunătăţiri: posibilitatea lucrului cu hiperlegături, generarea paginilor Web din tabele şi interogări, folosirea şabloanelor HTML, importul / exportul datelor în/din tabelele HTML, crearea paginilor Web dinamice, posibilitatea lucrului cu tehnologiile ActiveX, ASP, DAP şi DHTML sunt numai câteva dintre acestea.

8.4. TIPUL DE DATE HYPERLINK
Tipul de dată hyperlink este echivalent cu tipul de câmpuri link din paginile Web care atunci când sunt accesate produc saltul (deplasarea) către o adresă (marcată printr-o ancoră) în cadrul aceleiaşi pagini sau către o altă pagină aflată pe acelaşi site sau într-un alt site. De asemenea, saltul poate fi şi către un fişier aflat în calculatorul local. Arătam într-un subcapitol anterior că în prezent adresele Web şi adresele de e-mail au intrat în limbajul curent şi apar tot mai des pe cărţile de vizită. Mai nou a devenit o modă ca multe CV-uri să fie depuse în pagini Web pentru a putea fi accesate de cât mai multe persoane din orice loc de pe glob. Este posibil ca persoane individuale să deţină site-uri personale în care să prezinte produsele activităţii lor. Să presupunem în acest sens că dorim să extindem datele despre angajaţi cu încă două informaţii utile: adresele e-mail ale acestora şi adresele paginilor Web personale sau trimiteri către CV-urilor lor aflate ca fişiere Word (.doc) pe calculatorul local. Pentru aceasta va trebui să extindem structura tabelei Date angajaţi cu încă două câmpuri: adresa e-mail şi adresa web / CV. Evident cele două câmpuri vor trebui să fie de tipul hyperlink. Vom insera aceste câmpuri în structura tabelei Date angajaţi, sub câmpul adresa:

După salvarea modificărilor, la consultarea tabelei Date angajaţi va fi disponibilă următoarea fereastră prin intermediul căreia pot fi încărcate / actualizate datele în modul Datasheet View:

LUCRUL CU HIPERLEGĂTURI ŞI GENERAREA PAGINILOR WEB

97

Se observă cele două câmpuri noi (adresa e-mail şi adresa web / CV) în care sunt încărcate câteva date adecvate tipului hyperlink. Printr-un clic dat pe butonul din dreapta al mouse-ului când suntem plasaţi pe un câmp hyperlink, Access-ul deschide un meniu contextual care prin opţiunea Hyperlink prezintă un submeniu ce oferă următoarele posibilităţi (Edit Hyperlink …, Open, Open in New Window, Copy Hyperlink, Add to Favorites, Display Text, Remove Hyperlink):

98

Lector univ. drd. Mihai Gavotă - Baze de date

Alegând Edit Hyperlink se va lansa un dialog care face posibilă încărcarea datelor de hiperlegătură: • • • textul care va apărea în câmp adresa de Web sau de e-mail subiectul care se doreşte să apară în linia Subject a mesajului e-mail

La apăsarea butonului Screen Tip… va apărea următorul dialog: care permite încărcarea mesajului de ajutor (sfat) ce se doreşte să apară pe ecran dacă utilizatorul întârzie mai mult de 2 secunde cu prompter-ul mouse-ului deasupra câmpului fără să apese nici-un buton.

În mod similar s-au încărcat şi datele din câmpul adresa web / CV unde în locul adresei e-mail au fost introduse adresele Web ale angajaţilor (exemplu: www.moresoft.ro).

LUCRUL CU HIPERLEGĂTURI ŞI GENERAREA PAGINILOR WEB

99

Dacă a fost introdusă o adresă Web dialogul de încărcare a datelor de hiperlegătură va fi:

Se observă existenţa butoanelor File…, Web Page şi Bookmark… Astfel, dacă se doreşte, există posibilitatea ca în câmpul de adresă să fie ales prin intermediul butonului File un nume de fişier existent pe calculatorul local sau în intranet. De exemplu la înregistrarea 4 din tabela Date angajaţi s-a ales fişierul CV Dan Vasilescu.doc. În plus, dacă respectivul fişier este un fişier .doc sau .html opţional, este posibilă deschiderea lui direct la o anumită secţiune, care ar putea fi o ancoră dintr-un fişier html, un bookmark dintr-un fişier Word sau chiar un simplu cuvânt sau o expresie din acel fişier. Să presupunem că pentru Dan Vasilescu care nu are pagină Web personală unde să existe CV-ul său, s-a ales prezentarea pentru consultare a conţinutului fişierului CV Dan Vasilescu.doc din calculatorul local. Pentru că se doreşte ca fişierul să se deschidă direct la capitolul Studii, la adresă se va trece: CV Dan Vasilescu.doc#Studii Este de remarcat caracterul # care desparte numele fişierului de numele secţiunii sau cuvântul dorit. În acest caz secvenţa din dialogul de hyperlink este:

100

Lector univ. drd. Mihai Gavotă - Baze de date

8.5. GENERAREA PAGINILOR WEB
O altă clasă de obiecte pusă la dispoziţie de Access 2000 este cea a paginilor internet – Pages.

Secţiunea Pages oferă trei opţiuni: • • • Create data access pages in Design view – crearea paginilor internet de acces la date în modul de lucru Design view. Create data access pages by using wizard – crearea paginilor internet de acces la date utilizând „vrăjitorul” specializat. Edit Web page that already exists – modificarea unor pagini Web ce au fost realizate anterior. Acestea pot fi fişiere HTML create cu Access sau cu alte produse. Opţiunea pune la dispoziţia proiectanţilor un instrument vizual de lucru care rivalizează cu multe alte produse performante din aceeaşi categorie.

Dacă vom alege Create data access pages by using wizard vom intra într-o succesiune de dialoguri care, completate din aproape în aproape, vor construi din sursele de date selectate (tabele şi interogări) pagina internet ce va conţine câmpurile necesare pentru consultare sau actualizare. Totodată utilizatorului din internet sau din intranet îi va fi pus la dispoziţie un set de instrumente pentru navigarea în cadrul colecţiei de date disponibile:

Să presupunem că se doreşte o pagină internet care să facă disponibilă actualizarea la distanţă a următoarelor câmpuri din tabela Date angajaţi: nume persoana, adresa, adresa e-mail, adresa web / CV, data angajării, telefon şi observaţii.

LUCRUL CU HIPERLEGĂTURI ŞI GENERAREA PAGINILOR WEB

101

Pentru acesta, după ce dăm dublu-clic pe opţiunea Create data access pages by using wizard va apărea următorul dialog prin intermediul căruia vor fi selectate din tabela Date angajaţi câmpurile dorite:

După apăsarea butonului <Next> va apărea un alt dialog care permite opţional gruparea:

102

Lector univ. drd. Mihai Gavotă - Baze de date

Următorul dialog ne oferă posibilitatea alegerii unor chei de sortare pentru prezentarea datelor. În acest exemplu s-a ales o singură cheie de sortare - nume persoana - care va determina afişarea înregistrărilor în ordine alfabetică:

După apăsarea butonului <Next>, ultimul dialog solicită numele paginii:

LUCRUL CU HIPERLEGĂTURI ŞI GENERAREA PAGINILOR WEB

103

Nu mai rămâne decât de apăsat butonul <Finish> şi pagina este gata. Ea va fi prezentată în modul de lucru Design View pentru a putea fi operate eventuale modificări (dacă se consideră necesar). Va apărea o machetă de proiectare foarte asemănătoare celor folosite pentru crearea formularelor:

Fără nici o modificare în formular, mergând numai pe ce a propus wizard-ul, la lansarea în execuţie (prin clic pe butonul View) se va obţine:

Această pagină se poate salva cu numele Date_angajaţi.htm. Va rezulta un fişier HTML posibil de consultat prin intermediul browser-ului Internet Explorer.

104

Lector univ. drd. Mihai Gavotă - Baze de date

Dacă pe calculator este instalat un server Microsoft atunci la lansarea fişierului Date_angajaţi.htm sub Internet Explorer va apărea următoarea fereastră aproape identică cu cea de sub Access:

Diferenţa este că aşa cum pagina este văzută sub programul Internet Explorer lansat de pe calculatorul local, tot aşa ea va fi văzută sub un alt Internet Explorer lansat de pe un calculator aflat la distanţă (eventual într-o altă ţară de pe un alt continent). Dacă pe calculatorul ce conţine baza de date este instalat un server Microsoft de exemplu PWS (Personal Web Server) şi numele server-ului este moresoft, şi dacă fişierul Date_angajati.htm este plasat în folder-ul C:ăInetPubăwwwroot, atunci comanda din linia de adrese a browser-ului (care obligatoriu trebuie să fie Internet Explorer) va fi: http://moresoft/Date_angajati.htm

9. ADMINISTRAREA ŞI ASIGURAREA SECURITĂŢII BAZELOR DE DATE ACCESS

Bazele de date moderne au fost proiectate astfel încât să asigure facilităţi de lucru în reţea. Majoritatea dintre ele pot funcţiona în regim multiutilizator şi oferă deschidere către internet. De aceea, securitatea bazelor de date este un domeniu ce nu mai poate fi ignorat. Pe lângă performanţele de conectivitate, de acces la date, de asigurare a integrităţii acestora, posibilităţile de import / export, instrumentele de dezvoltare oferite, elementele de securitate constituie de asemenea criterii importante atunci când se alege un tip sau altul de bază de date. Access 2000 este un sistem de gestiune a bazelor de date modern la proiectarea căruia pe lângă toate celelalte elemente de performanţă s-au avut în vedere ca priorităţi şi posibilităţile de compactare, recuperare şi reparare a datelor în cazul apariţiei unor defecte dar şi asigurarea unui puternic sistem de securitate. Defectele ce necesită o reparare a datelor pot fi datorate unor cauze interne sau externe cum sunt: • întreruperea accidentală a curentului electric în timpul lucrului • defectarea unor zone de pe hard-disc • procesări greşite ale datelor de către programele de aplicaţie • alocări defectuase ale spaţiului de memorare datorate sistemului de operare • defecte ale memoriei RAM • defecte datorate procesorului, etc. Asigurarea unui sistem solid de securitate a fost de asemenea una dintre priorităţi. În ceea ce priveşte asigurarea securităţii datelor, Access pune la dispoziţie: • • • • posibilităţi de criptare / decriptare a bazei de date lucrul cu parole la nivelul global al bazei de date lucrul cu parole la nivelul utilizator posibilitatea acordării diferenţiate a drepturilor asupra obiectelor bazei de date pe proprietari, grupuri şi nume de utilizatori.

Compactarea, recuperarea, repararea datelor şi prezentarea elementelor de configurare a securităţii Access vor constitui următoarele teme abordate.

9.1. COMPACTAREA ŞI REPARAREA DATELOR
În timpul lucrului, pentru a creşte randamentul, Access-ul gestionează într-un mod propriu, intern, spaţiul fişierelor .mdb în care sunt memorate tabelele şi celelalte obiecte ale bazelor de date. Pentru Access 2000 sunt prioritare în primul rând viteza de acces la date şi de procesare a acestora. Spaţiul ocupat pe hard-disc de către bazele de date (fişierele .mdb) nu mai reprezintă o

106

Lector univ. drd. Mihai Gavotă - Baze de date

problemă pentru calculatoarele moderne (echipate cu hard-discuri ce oferă capacităţi de peste 10 GB). Pentru a creşte performanţa de lucru cu bazele de date, de cele mai multe ori Access 2000 sacrifică spaţiul ocupat de acestea pe hard-disc, ceea ce face ca în timp fişierele .mdb să-şi mărească dimensiunile într-un mod aparent nejustificat. De asemenea, datorită unei exploatări necorespunzătoare sau unor cauze externe, bazele de date se pot „corupe” ceea ce poate determina pierderea de date, inconsistenţa bazelor de date, „ruperea” legăturilor dintre tabele, lucrul defectuos al obiectelor bazei de date, lipsa vizibilităţii acestora, pierderea accesibilităţii la date, etc La deschiderea bazelor de date Access-ul lansează un diagnostic de control, în urma căruia decide dacă acestea sunt „corupte” sau nu. Dacă da, atunci declanşează automat procedura de reparare. Verificarea integrităţii bazelor de date şi repararea acestora, se mai pot produce şi atunci când se solicită compactarea. Atât compactarea cât şi repararea bazelor de date se pot lansa prin intermediul opţiunii – Compact and Repair Database disponibilă sub Access din meniul Tools, submeniul Database Utilities:

9.2. CREAREA COPIILOR DE SIGURANŢĂ
De regulă, atât compactarea şi repararea cât şi crearea copiilor de siguranţă sunt sarcini ale administratorului bazei de date. Realizarea periodică a copiilor de siguranţă este o activitate de administrare foarte importantă care, dacă este făcută corect, salvează utilizatorii de multe neplăceri ce ar putea fi

ADMINISTRAREA ŞI ASIGURAREA SECURITĂŢII BAZELOR DE DATE ACCESS

107

cauzate de imposibilitatea reparării şi refacerii corecte a bazei de date „corupte” în urma unor incidente nedorite. Literatura de specialitate recomandă câteva reguli legate de crearea copiilor de siguranţă: • • • • • crearea zilnică a copiilor existenţa a cel puţin trei copii rotaţia copiilor pe diferiţi suporţi de informaţie: benzi magnetice, seturi de dischete ZIP, CD-uri, hard-discuri verificarea periodică a copiilor păstrarea copiilor în locuri diferite.

9.3. SECURITATEA BAZELOR DE DATE
Sistemul de securitate al bazelor de date este un domeniu sensibil şi foarte interesant, care poate influenţa decizia de alegere a unui anume tip de bază de date în funcţie de aplicaţia dorită şi de felul reţelei gazdă. Faptul că majoritatea bazelor de date moderne pot funcţiona în regim multiutilizator în intranet sau în internet a schimbat profund concepţia despre sistemul de securitate al acestora care trebuie să asigure protecţia împotriva încercărilor de acces neautorizat la obiectele bazei de date. De regulă, pentru securitatea accesului se utilizează o schemă de autentificare pe baza numelui de utilizator, apartenenţei la un anumit grup de utilizatori, şi a parolei personale. Această autentificare asigură funcţii de control al accesului, de păstrare a confidenţialităţii şi de verificare a sursei. Fiecare utilizator va dispune de o parolă personală (parolă utilizator). Accesul la obiectele bazei de date (tabele, formulare, rapoarte etc), este reglementat prin apartenenţa la un grup de lucru care are anumite drepturi de acces. Toţi utilizatorii au acces diferenţiat la informaţii şi la aplicaţii, în funcţie de grupul căruia îi aparţin şi de numele de utilizator alocat. Alte forme de protecţie sunt accesul pe bază de parolă la nivelul bazei de date şi criptarea acesteia cu posibilitatea de decriptare prin intermediul unei parole.

9.3.1. Principiile securităţii bazelor de date în reţele locale
Literatura de specialitate recomandă următoarele principii de securitate ce trebuie respectate la nivelul reţelei locale (LAN) şi al bazelor de date: • • • • • • Fiecare utilizator al reţelei trebuie identificat înainte de a i se permite accesul în reţea. Accesul la resursele din reţea trebuie diferenţiat în funcţie de drepturile utilizatorului la acestea. Acţiunile utilizatorilor trebuie monitorizate pentru a se identifica dacă aceştia au încercat intrări sau acţiuni frauduloase sau rău intenţionate. Conţinutul tabelelor bazelor de date trebuie criptat pentru a nu fi posibilă citirea datelor conţinute în acestea prin intermediul programelor utilitare. Utilizatorii unei baze de date trebuie identificaţi înainte de a li se permite deschiderea acesteia. Sistemul de securitate trebuie să permită acordarea sau retragerea drepturilor utilizatorilor asupra obiectelor bazei de date.

108

Lector univ. drd. Mihai Gavotă - Baze de date

9.3.2. Protejarea prin parolă la nivelul bazei de date
O metodă simplă de asigurare a securităţii bazelor de date Access este protejarea acestora printr-o parolă primară de acces. Această parolă va trebui să fie cunoscută de fiecare utilizator al bazei de date. La fiecare încercare de acces a bazei de date, înainte ca aceasta să fie deschisă, pe ecran va apărea un dialog care va solicita parola de acces. Pentru a seta parola primară la nivelul bazei de date este necesar în primul rând ca administratorul acesteia (care are toate drepturile) să deschidă baza de date în modul Exclusiv şi nu în modul Shared Access, aşa cum se deschide de obicei, implicit. Dacă o bază de date este deschisă Exclusiv, atunci ea nu mai poate funcţiona în regimul de lucru multiutilizator, deci asupra ei nu poate opera decât o singură persoană. Programul Access oferă posibilitatea de a deschide o bază de date în patru moduri posibile: • • • • Open – este modul implicit de lucru în regim multiutilizator (Shared Acces); Open Read Only – mod de lucru în regim multiutilizator dar permite numai citirea; Open Exclusive – mod de lucru monoutilizator; Open Exclusive Read Only – mod de lucru monoutilizator care permite numai citirea.

Pentru a deschide o bază de date în modul Exclusiv trebuie încărcat mai întâi programul Access şi apoi deschidem baza de date aleasă activând de sub meniul File opţiunea Open (deschide). Va apărea un dialog Open specific programului Access care va oferi posibilitatea alegerii modului de lucru dorit:

ADMINISTRAREA ŞI ASIGURAREA SECURITĂŢII BAZELOR DE DATE ACCESS

109

Setarea parolei bazei de date (Set Database Password) devine disponibilă după încărcarea acesteia în modul Exclusiv (Open Exclusive) şi alegerea opţiunii Security a meniului Tools:

Opţiunea Set Database Password lansează un dialog prin intermediul căruia va putea fi setată parola:

Odată setată parola, la fiecare încercare de deschidere a bazei de date va fi lansat un dialog de introducere a parolei, aceasta trebuind să fie cunoscută de fiecare utilizator..

9.3.3. Criptarea bazei de date
Chiar dacă o bază de date este protejată prin parole şi prin drepturi de acces acordate diferenţiat utilizatorilor, totuşi poate fi posibilă citirea la nivel fizic a datelor din tabele prin intermediul unor programe utilitare care permit accesul fizic pe hard-disc la nivel de octet. Pentru o protecţie completă este necesar ca baza de date să fie păstrată criptată.

110

Lector univ. drd. Mihai Gavotă - Baze de date

Criptarea / decriptarea unei baze de date Access se pot realiza foarte simplu prin intermediul meniului Tools şi submeniul Security alegând opţiunea Encrypt/Decrypt Database:

9.3.4. Securitatea la nivelul grupurilor şi utilizatorilor
De regulă orice bază de date permite implicit următoarele grupuri de utilizatori: • • • Administratorii (Admins) care au toate drepturile asupra bazei de date. Utilizatorii obişnuiţi (Users) care au permisiunea de a deschide baza de date dar care au drepturi diferite şi restrictive asupra obiectelor acesteia. Ei pot lucra doar cu anumite formulare şi pot consulta numai rapoartele pentru care au aceste drepturi. Musafirii (Guests) care de regulă nu primesc cont utilizator şi au drepturi limitate, doar pentru accesarea anumitor obiecte ale bazei de date.

Între cele mai importante sarcini ale administratorului bazei de date se numără crearea şi întreţinerea sistemului de securitate al bazei de date. Pe parcurs el poate adăuga grupuri noi de utilizatori sau poate şterge grupuri existente. Administratorul poate adăuga nume noi de utilizatori şi poate modifica drepturile acestora asupra obiectelor bazei de date. Aceste operaţiuni sunt disponibile prin intermediul aceluiaşi submeniu Security prezentat în subcapitolele anterioare. De această dată se va lucra cu opţiunile: • • • User and Group Permissions User and Group Accounts User - Level Security Wizard

ADMINISTRAREA ŞI ASIGURAREA SECURITĂŢII BAZELOR DE DATE ACCESS

111

În mod implicit o parte a informaţiilor de securitate sunt menţinute în fişierul System.mdw aflat în folder-ul …ăOffice al pachetului de programe MS-Office. Utilizatorul iniţial implicit este Admin şi el are toate drepturile. După generarea bazei de date este indicat ca fişierul System.mdw să fie copiat în folder-ul bazei de date (acolo unde există fişierul cu extensia .mdb). Apoi, prin intermediul programului WRKGADM.EXE va trebui creată o legătură către noua locaţie a fişierului .mdw. În acelaşi folder …ăOffice se află un shortcut Workgroup Administrator (sau Administrator grup de lucru MS Access pentru versiunile MS-Office în limba română). Shortcut-ul este o cale de acces către programul WRKGADM.EXE. Atunci când va fi lansat acest program, pentru a crea noua legătură, el va afişa următoarea succesiune de dialoguri:

După apăsarea butonului Browse va apărea un dialog clasic de navigare printre foldere şi de selectare a fişierului dorit. Vom selecta fişierul SYSTEM.MDW aflat în folderul unde se află aplicaţia noastră.

112

Lector univ. drd. Mihai Gavotă - Baze de date

Dacă legătura cu noul fişier de securitate s-a realizat corect atunci Access-ul ne va informa cu următorul mesaj:

Pentru a acorda o parolă utilizatorului iniţial implicit Admin, din submeniul Security va fi aleasă opţiunea User and Group Accounts care va afişa următorul dialog: Se observă că iniţial există doar două grupuri: Admins şi Users. Prin intermediul acestui dialog pot fi create (adăugate) grupuri noi sau pot fi şterse grupuri. De asemenea poate fi schimbată parola utilizatorului curent (în cazul nostru Admin).

Pentru a crea sau şterge grupuri este disponibil dialogul Groups: Butoanele <New> (nou) şi <Delete> (şterge) vor putea fi folosite în aceste scopuri.

ADMINISTRAREA ŞI ASIGURAREA SECURITĂŢII BAZELOR DE DATE ACCESS

113

Pentru a alege o nouă parolă va trebui ales panoul Change Logon Password care va afişa: Aici sunt specifice câmpurile Old Password (parola veche), New Password (parola nouă) şi Verify un câmp util pentru a verifica, prin reînscriere, corectitudinea parolei noi. Câmpul Old Password este lăsat vid deoarece iniţial utilizatorul implicit Admin nu are parolă.

Drepturile utilizatorilor asupra obiectelor bazei de date pot fi: • • • • • • • • Open / Run – deschide şi lansează în execuţie Read Design – citeşte proiectul Modify Design – modifică proiectul Administer - administrează Read Data – citeşte datele Update Data – actualizează datele Insert Data – inserează datele Delete Data – şterge datele.

Pentru atribuirea drepturilor (permisiunilor) utilizatorilor şi grupurilor, precum şi pentru schimbarea proprietarilor obiectelor bazei de date, din meniul Tools, submeniul Security, va fi aleasă opţiunea User and Group Accounts care va afişa: După selectarea utilizatorului sau grupului de utilizatori se pot acorda (prin bifare / debifare) permisiunile dorite asupra obiectelor bazei de date.

ANEXA 1 – STRUCTURA TABELELOR UTILIZATE ÎN EXEMPLE. RELAŢIILE DINTRE TABELE

Date angajati: Nume câmp cod persoana nume persoana adresa adresa e-mail adresa web / CV cod functie cod studii data angajarii telefon observatii Deplasari angajati: Nume câmp cod persoana data deplasarii locul deplasarii cost transport cost diurna Nomenclator functii: Nume câmp cod functie denumire functie cod categorie functie

Tip date Number Text Text Hyperlink Hyperlink Number Number Date/Time Text Memo

Memorie rezervată Long integer 50 50 ≤ 2048 ≤ 2048 Integer Byte 10 20 ≤65535 Memorie rezervată Long integer 10 50 Single Single Memorie rezervată Integer 50 Byte Memorie rezervată Integer 50

Tip date Number Date/Time Text Number Number Tip date Number Text Number

Nomenclatorul categoriilor de functii: Nume câmp Tip date Number cod categorie functie denumire categorie Text functie Nomenclator studii: Nume câmp cod studii denumire studii Tip date Number Text

Memorie rezervată Byte 50

ANEXA 1 – STRUCTURA TABELELOR UTILIZATE ÎN EXEMPLE. RELAŢIILE DINTRE TABELE

115

Relaţiile dintre tabele:

ANEXA 2 – PROBLEME PROPUSE

Reguli de normalizare
Problema 1 Presupunând că se doreşte crearea unei baze de date în care se va ţine evidenţa literaturii şi sunt de interes următoarele informaţii: Titlul cărţii ISBN Preţul cărţii Autorii cărţii (autor1, autor2, autor3) Numele editurii Anul apariţiei Categoria cărţii (beletristică, ştiinţifică, SF, etc) Adresa editurii (oraş, str., nr., sector, cod) Stabiliţi structura de tabele a bazei de date şi aplicaţi regulile de normalizare.

Tabele
Problema 1 Creaţi tabela Date angajaţi având o structură conform anexei 1. Adăugaţi un câmp foto de tip OLE object în care se vor memora fişierele digitizate ce conţin fotografiile persoanelor obţinute în urma scanării sau de la un aparat foto digital. Încercaţi inserarea unei imagini şi apoi consultarea acesteia. Utilizaţi în acest sens meniul contextual al celulei respective. Problema 2 Consultaţi tabela Date angajaţi în modul Datasheet View. În timpul acestei consultări: • • • • • Redimensionaţi mărimea celulelor pe verticală şi pe orizontală astfel încât să fie vizibilă toată informaţia conţinută de acestea. Schimbaţi fontul de afişare şi mărimea acestuia. Sortaţi tabelul în ordinea crescătoare a numelor persoanelor şi apoi în ordinea descrescătoare. Căutaţi un anumit nume folosind comanda Find. Încercaţi o filtrare (filter) a datelor.

ANEXA 2 – PROBLEME PROPUSE

117

• • • • Problema 3

Comutaţi în modul Design şi apoi înapoi în Datasheet View. Utilizaţi facilităţile Hyperlink ale câmpurilor adresa e-mail şi adresa web / CV. Redimensionaţi câmpul adresa de la 50 la 70 caractere. La câmpul data angajării introduceţi o mască de tipul Medium Date.

Adăugaţi în tabela Date angajaţi un câmp numit cod stare care va memora starea în care se află angajatul (prezent, în concediu de odihnă, în concediu medical, învoit, în deplasare, absent nemotivat). Creaţi o tabelă nouă numită Nomenclator stări prezenţă care să conţină aceste stări. Creaţi în Relationships relaţia corectă dintre tabele. Problema 4 Legaţi la baza de date curentă o tabelă externă, dintr-o altă bază de date. Importaţi o tabelă externă în baza de date curentă. Exportaţi datele din tabela Date angajaţi într-un fişier Excel (.xls) apoi într-un fişier HTML. Problema 5 Utilizând mecanismul Clipboard (copiere şi lipire) copiaţi conţinutul unor celule dintr-o tabelă în alta, apoi dintr-o tabelă Access într-un tabel Word. Problema 6 Utilizând wizard-ul, creaţi o tabelă având structura modelului students propus de Access 2000.

Interogări
Problema 1 Afişaţi o listă care să prezinte pentru fiecare angajat: denumirea categoriei de funcţie, denumirea funcţiei şi tipul studiilor. Lista să fie sortată alfabetic după numele angajaţilor. Problema 2 Creaţi o interogare care să afişeze numele şi numerele de telefon ale angajaţilor care au primele cifre ale numărului de telefon 093. Problema 3 Furnizaţi o listă cu numele şi adresele angajaţilor care au numele Vasile.

118

Lector univ. drd. Mihai Gavotă - Baze de date

Problema 4 Creaţi interogări care să răspundă la întrebările: • • • • • Câţi angajaţi cu studii superioare lucrează în instituţie ? Câţi directori există în instituţie ? Câţi şefi de departament ? Câţi şefi de secţie ? Câţi şefi de birou ?

Problema 5 Afişaţi o listă care să prezinte locul deplasării şi data deplasării fiecărui angajat. Lista va fi sortată crescător după numele persoanelor şi după data deplasării. Problema 6 Creaţi un query care să şteargă înregistrările tuturor persoanele cu studii medii din tabela Date angajaţi. Problema 7 Creaţi un query care să prezinte într-un tabel cu dublă intrare, pe orizontală categoriile de funcţii iar pe verticală denumirile de funcţii. Celulele tabelului vor conţine numărul de angajaţi pentru fiecare funcţie dintr-o categorie de funcţii. Problema 8 Transferaţi rezultatul (lista) unui query într-un tabel Word, apoi într-o foaie de calcul Excel. Problema 9 Afişaţi numele persoanelor angajate după 01.01.1999.

Formulare
Problema 1 Utilizând wizard-ul creaţi un formular simplu care să permită actualizarea numelor angajaţilor, adresei şi telefonului acestora. Problema 2 Utilizând Chart Wizard creaţi o histogramă care să reprezinte grafic numărul de angajaţi pentru fiecare tip de studii.

ANEXA 2 – PROBLEME PROPUSE

119

Problema 3 Modificaţi în modul de proiectare Design un formular realizat anterior cu un wizard. Problema 4 Creaţi un formular nou pentru actualizarea unui nomenclator lucrând numai în modul de proiectare Design. Problema 5 Creaţi un formular care pe lângă datele angajaţilor să permită şi actualizarea / consultarea câmpului foto.

Rapoarte
Problema 1 Utilizând wizard-ul creaţi un raport numit Date angajaţi care să listeze pentru fiecare angajat: numele, adresa şi telefonul. Problema 2 Creaţi un raport care să listeze grupat pentru fiecare categorie de funcţii numele angajaţilor şi adresele acestora. Problema 3 Creaţi un raport care să listeze grupat pentru fiecare funcţie numele angajaţilor şi adresele acestora. Problema 4 Utilizând Label Wizard creaţi un raport care să afişeze etichete cu numele şi adresele angajaţilor. Problema 5 Utilizând Chart Wizard creaţi o histogramă care să prezinte distribuţia angajaţilor pe categoriile de funcţii din instituţie.

120

Lector univ. drd. Mihai Gavotă - Baze de date

Pagini internet
Problema 1 Salvaţi într-un format HTML o listă obţinută dintr-un query care să afişeze în ordine alfabetică numele angajaţilor, denumirea categoriei de funcţii, denumirea funcţiei şi tipul studiilor. Problema 2 Creaţi o pagină internet activă, care să permită crearea / actualizarea / consultarea datelor angajaţilor, de la distanţă, prin internet, utilizând ca browser Internet Explorer.

Securitatea şi administrarea bazelor de date
Problema 1 Setaţi o parolă pentru o bază de date, apoi criptaţi baza de date. Problema 2 Creaţi un nou grup de utilizatori numiţi manageri, apoi adăugaţi utilizatorii acestui grup. Atribuiţi acestor utilizatori permisiuni diferite asupra obiectelor bazei de date. Problema 3 Compactaţi şi reparaţi baza de date.

ANEXA 3 – DICŢIONAR DE TERMENI

Actualizare – Adăugare, modificare sau ştergere a datelor memorate în tabelele bazei de date. Valorile actualizate sunt memorate şi salvate în baza de date. Administrator de sistem – Persoană desemnată să asigure buna funcţionare a sistemelor de calcul independente sau legate în reţele de calculatoare. Acesta răspunde de buna funcţionare a hardware-ului şi software-ului instalat pe sistemele de calcul. Administratorul împreună cu personalul tehnic instalează şi configurează sistemul de operare, acordă parole şi drepturi utilizatorilor şi programatorilor, asigură instalarea pe sistemele de calcul a tuturor produselor soft necesare. Administrator al bazei de date – Persoană desemnată să gestioneze bazele de date de dimensiuni medii şi mari de tip client-server. Are responsabilitatea de a asigura securitatea datelor printr-un sistem de parole şi drepturi de acces, integritatea datelor prin operaţiuni de salvare / restaurare pe diferite suporturi de memorare şi refacerea acestora în caz de defecţiuni hardware sau software. Administratorul bazei de date cunoaşte foarte bine structura bazei de date şi are toate drepturile pentru a executa orice comandă admisă de sistemul de gestiune a bazei de date respective (SGBD). Aplicaţie – Se foloseşte cu sensul de aplicaţie informatică şi reprezintă un produs software realizat pentru a executa anumite operaţiuni pe sistemele de calcul. În multe cazuri se foloseşte specificând sistemul de operare pentru care a fost destinată: aplicaţie DOS, aplicaţie Windows, aplicaţie UNIX, etc. În funcţie de produsul cu ajutorul căruia a fost realizată, numele aplicaţiei este însoţit de o extensie specifică. Aplicaţiile direct executabile au extensia .exe. Bară cu instrumente (Toolbar) – Zonă de ecran orizontală sau verticală în care sunt grupate butoane de comandă prezentate sub forma unor pictograme sugestive. Butoanele componente sunt grupate în mod logic şi sunt active sau inactive în funcţie de operaţiunea care este în execuţie în momentul respectiv. Bară de derulare (scroll bar) – Se referă la bara orizontală sau cea verticală prezentă în partea de jos respectiv în partea dreaptă a unei ferestre sau casete de text care permit aducerea în partea vizibilă a ferestrei a obiectelor sau textului care nu se văd în momentul respectiv. Bară de titlu – Zona aflată în partea de sus a unei ferestre, de obicei de culoare albastră în care este scris titlul ferestrei şi în care sunt plasate pictogramele de activare a meniului ferestrei, de minimizare / maximizare şi de închidere a ferestrei. Bază de date (database) – Set de tabele cu date dintr-un anumit domeniu împreună cu alte obiecte necesare gestionării acestora: interogări, formulare, rapoarte, proceduri. În Access toate acestea se memorează într-un singur fişier cu extensia .mdb a cărui organizare fizică este asigurată şi optimizată de Microsoft Jet Engine. Există şi baze de date care gestionează separat aceste obiecte în fişiere independente.

122

Lector univ. drd. Mihai Gavotă - Baze de date

Bază de date distribuită – Bază de date memorată pe mai multe servere de baze de date aflate la distanţă şi care este accesată de mai mulţi utilizatori simultan folosind tehnologia client-server. Acest tip de bază de date posedă mecanisme de asigurare a sincronizării datelor în mod automat. Bază de date relaţională – Tip de bază de date în care tabelele sunt relaţionate între ele prin valorile anumitor câmpuri. Operaţiunile care se execută asupra tabelelor au la bază algebra relaţională. Buton de opţiune (option button) – Obiect de control care apare de obicei în formulare pentru a se putea marca o anumită opţiune. Dacă sunt posibile mai multe opţiuni acestea sunt prezentate printr-un grup de butoane de opţiuni dintre care numai unul singur poate fi selectat la un moment dat. Are formă rotundă, iar atunci când este selectat acesta are mijlocul de culoare neagră. Buton de comandă (command button) – Obiect de control care are de obicei o formă dreptunghiulară şi care atunci când este apăsat (când se face clic cu mouse-ul în el) declanşează executarea anumitor comenzi. Câmp (field) – Desemnează o coloană dintr-o tabelă de date care conţine valorile unui atribut. O înregistrare conţine unul sau mai multe câmpuri. Cheie externă sau străină (foreign key) – Desemnează una sau mai multe coloane (câmpuri) dintr-o tabelă de date ale căror valori, luate împreună ca o combinaţie, trebuie să fie egale cu cheia primară a unei alte tabele cu care se află în relaţie. Cheia externă nu trebuie să fie neapărat unică, adică într-o tabelă pot exista mai multe înregistrări care să aibă aceleaşi valori în câmpurile care alcătuiesc cheia străină. Cheie primară sau principală (primary key) – Desemnează una sau mai multe coloane (câmpuri) dintr-o tabelă de date ale căror valori, luate împreună ca o combinaţie, trebuie să fie unice pentru fiecare înregistrare. Se spune că într-o tabelă cheia primară (de acces) trebuie să fie unică şi nenulă, adică fiecare din câmpurile care compun cheia primară trebuie să conţină o valoare. Se mai numeşte cheie internă. Client-server – O aplicaţie scrisă în tehnologia client-server are două componente care de obicei stau pe două sisteme de calcul diferite legate în reţea. Partea de server a aplicaţiei gestionează anumite informaţii şi recepţionează cereri de la aplicaţiile client pentru a le „servi” (pe acestea) cu date. Aplicaţiile client sunt cele care transmit cereri de date către server într-un anumit format, recepţionează datele cerute şi apoi le prelucrează şi eventual le afişează. Criteriu – O condiţie simplă sau compusă pe care trebuie să o îndeplinească datele pentru a participa la o anumită operaţiune. Definirea datelor – Procesul prin care se stabilesc tabelele componente ale unei baze de date, câmpurile acestora, cheile primare şi externe, relaţiile dintre tabele, regulile de validare pentru câmpuri, etc. Diferenţă - Diferenţa a două tabele include acele înregistrări care există în prima tabelă dar nu există în cea de-a doua (valorile din câmpurile după care se face diferenţa care există în prima tabelă dar nu există în cea de-a doua).

ANEXA 3 – DICŢIONAR DE TERMENI

123

Entitate de date – Desemnează un obiect sau o activitate despre care se memorează date într-o tabelă. Caracteristicile sau atributele obiectelor sau activităţilor se memorează în câmpurile înregistrării din tabelă. Etichetă (label)– Tip de obiect care permite afişarea unor texte fără ca acestea să poată fi actualizate în timpul execuţiei. Eveniment (event) – În urma unei acţiuni pe care o execută un utilizator asupra unui obiect Access se declanşează un eveniment. Acţiunile se referă în general la mişcarea mouse-ului, tastarea unor valori, modificarea datelor, activarea formularelor, etc. Evenimentele specifice fiecărui tip de obiect sunt enumerate în fereastra de proprietăţi a obiectului respectiv. Pentru cazul în care au loc anumite evenimente se pot specifica succesiuni de comenzi pe care aplicaţia le execută în mod automat. Expresie – O formulă de calcul alcătuită din operanzi (numere, câmpuri de date, variabile sau funcţii) şi operatori (simboluri reprezentând operaţii matematice) . Fereastra de prezentare a bazei de date (database window) – Fereastră care apare automat pe ecran atunci când deschidem o bază de date Access. Aceasta reprezintă un fel de tablou de bord şi prezintă toate obiectele conţinute de baza de date grupate pe tipuri şi sortate în ordine alfabetică. Fereastră de proprietăţi (properties window) – Fereastră care poate fi activată atunci când este selectat un anumit obiect în modul de lucru proiectare (design). În funcţie de tipul obiectului, fereastra cuprinde toate proprietăţile şi evenimentele acestuia cu valorile lor curente. Fereastră de dialog (dialog window) – Fereastră destinată culegerii unor informaţii curente de la utilizator. Aceasta cuprinde o explicaţie asupra datelor care trebuie completate, câmpuri în care se introduc aceste date şi butoane de comandă. În general sunt ferestre modale, adică nu permit efectuarea altor operaţiuni înainte de închiderea ferestrei. Foaie de calcul (datasheet) – Format de prezentare a informaţiilor din tabele şi tip de formular care este similar cu foaia de calcul din Excel. Foaia de calcul are aspectul unui tabel în care liniile reprezintă înregistrări, coloanele reprezintă câmpuri şi valorile se introduc în celulele de intersecţie. În partea superioară a fiecărei coloane este scrisă denumirea câmpului respectiv. Formular (form) – Obiect Access care prezintă într-o formă convenabilă utilizatorului informaţiile din tabele pentru a fi actualizate sau numai vizualizate. Pot exista şi formulare destinate introducerii datelor care nu se memorează în tabele, ci sunt folosite pentru prelucrarea datelor din tabele. Fişier bitmap – Fişier cu extensia .bmp care conţine o imagine grafică. Se poate folosi ca fundal pentru un formular sau un buton. Font – Stil de caractere folosit pentru afişarea textului. Pot fi combinate pe un formular sau raport diferite fonturi, de diferite culori sau dimensiuni pentru a obţine efectul estetic şi de evidenţiere dorit.

124

Lector univ. drd. Mihai Gavotă - Baze de date

Fundal sau fond (background) – Suprafaţa goală a unui formular sau raport. Pe acest fundal se amplasează obiectele. Unele din obiecte au ele însele fundal. Forme normale – Stadii în cadrul procesului de normalizare a tabelelor unei baze de date relaţionale. În urma aplicării celor cinci reguli de normalizare spunem că tabelele bazei de date se află în prima, a doua, … formă normală. Front-end – aplicaţii software care asigură utilizatorilor într-o formă prietenoasă, accesul la date pentru introducerea, actualizarea, regăsirea, consultarea datelor şi listarea situaţiilor finale. Aplicaţiile sunt realizate de către programatorii de aplicaţii în anumite limbaje de programare cum sunt: Visual Basic for Applications, C,C++, Java, PHP, PERL etc. Funcţie (function) – Subprogram apelat dintr-o expresie. Calculează o valoare care este utilizată pentru calculul expresiei. Exisă funcţii interne Access (built-in functions) puse la dispoziţie de asistentul („vrăjitorul”) specializat în construirea expresiilor, dar şi funcţii scrise de programatori într-un limbaj de programare (Visual Basic for Applications pentru Access). Grilă (grid) – Reţea de linii orizontale şi verticale egal distanţate. Apare pe formulare şi rapoarte în modul proiectare şi ajută la alinierea obiectelor de control. HTML – Un limbaj de descriere a paginilor afişate în internet şi consultate cu ajutorul browser-elor. Identificator – Nume. Implicit (default) – Opţiune referitoare la valoarea unei proprietăţi a unui obiect. Marea majoritate a proprietăţilor obiectelor au iniţial valori implicite care pot fi modificate dacă se doreşte un efect diferit de cel prefixat. Multe din proprietăţile obiectelor rămân cu valoarea implicită. Index – Se asociază tabelelor bazei de date pentru a creşte viteza de căutare. Indexarea se poate face după unul sau mai multe câmpuri în funcţie de necesităţile de prelucrare. Access utilizează implicit o indexare internă după câmpurile care alcătuiesc cheile primare şi cheile străine ale tabelelor. Integritatea datelor – Asigurarea integrităţii datelor este o cerinţă fundamentală a bazelor de date relaţionale. Aceasta implică protecţia la modificarea intenţionată sau accidentală a datelor din tabelele unei baze de date, atât în privinţa domeniului de valori admise pentru câmpurile de date, cât şi corelaţiile dintre acestea. Asigurarea integrităţii referenţiale reprezintă o parte componentă a asigurării integrităţii datelor. Integritate referenţială – Set de reguli pe care trebuie să le respecte datele introduse în tabele pentru a păstra relaţiile definite la proiectarea bazei de date. Integritatea referenţială impune ca valorile introduse în câmpurile care alcătuiesc cheia externă a unei tabele să se regăsească în câmpurile corespondente care alcătuiesc cheie primară a altei tabele, cu care prima este relaţionată. Interogare (query) – Interogarea unei baze de date presupune regăsirea dintre toate datele memorate în tabele a acelora care îndeplinesc anumite condiţii (criterii). Acestea sunt apoi

ANEXA 3 – DICŢIONAR DE TERMENI

125

vizualizate, listate sau prelucrate. În Access interogăm o bază de date fie prin comanda Find fie prin interogările de tip query. Interogare de selectare (Select Query) – Tip de interogare ce selectează datele care îndeplinesc anumite condiţii, efectuează calcule şi afişează rezultatele eventual ordonate. Este cel mai utilizat tip de interogare. Interogare de totalizare (Total Query) – Tip de interogare cu care se efectuează calcule statistice pe grupuri de înregistrări. Interogare de actualizare (Update Query) – Tip de interogare utilizată pentru a actualiza câmpurile din una sau mai multe tabele. Interogare de adăugare (Append Query) – Tip de interogare care adaugă înregistrări la sfârşitul unei tabele existente. Interogare de ştergere (Delete Query) – Tip de interogare folosit pentru ştergerea înregistrărilor din una sau mai multe tabele. Alegerea înregistrărilor care se şterg se face prin specificarea unui criteriu (o condiţie). Interogare de creare tabele (Make-Table Query) – Tip de interogare cu ajutorul căruia se creează o tabelă nouă folosind câmpurile din una sau mai multe tabele existente. Interogare de creare a tablelor cu mai multe intrări (Crosstab Query) – Tip de interogare complexă care sintetizează datele pe linii şi coloane. La intersecţia liniilor şi coloanelor se afişează numărul de elemente, suma valorilor, media sau alte funcţii statistice. Intersecţie – Intersecţia a două tabele include acele înregistrări care există în ambele tabele (câmpurile după care se face intersecţia au valori identice în ambele tabele). Internet – Reţea formată dintr-un număr foarte mare de reţele de calculatoare, sau de calculatoare izolate distribuite practic pe întreg globul. Internetul este o reţea eterogenă din punct de vedere al tipurilor de calculatoare şi al software-ului de reţea. Internetul reprezintă suportul de comunicaţie pentru Web. Intranet – Reţeaua de calculatoare a unei instituţii, care admite un mod de lucru similar internetului fără a fi obligatorie conectarea la acesta. Înregistrare (record) – O linie dintr-o tabelă a bazei de date formată din câmpuri. O înregistrare are memorate în câmpurile ei informaţii despre o entitate de date. Înregistrare curentă – Înregistrarea dintr-o tabelă ale cărei câmpuri sunt vizualizate şi pot fi modificate în cazul în care deschidem un formular, o tabelă sau o interogare. Dacă pe ecran sunt vizibile mai multe înregistrări simultan, înregistrarea curentă este cea în al cărui câmp se află cursorul şi este semnalată printr-un marcaj. Listă (list box) – Obiect de control care pune la dispoziţie o listă de elemente dintre care prin intermediul mouse-ului sau tastaturii, poate fi ales unul.

126

Lector univ. drd. Mihai Gavotă - Baze de date

Listă derulantă (combo box) – Obiect de control Access care permite utilizatorului să aleagă o valoare dintr-o listă care se deschide apăsând marcajul (un triunghi cu vârful în jos) aflat în dreapta zonei în care este amplasat controlul. Pentru selectare se foloseşte mouse-ul sau tastatura. Obiectul listă derulantă, afişând la un moment dat o singură valoare, dar oferind posibilitatea de a vizualiza toate elementele din listă, ocupă mai puţin spaţiu pe ecran decât listele simple. Marcaj de redimensionare – Mici dreptunghiuri negre care sunt evidenţiate pe toate laturile unui obiect atunci când ne aflăm în modul de lucru proiectare directă şi selectăm obiectul respectiv. Prin drag & drop ne permite să mărim sau să micşorăm dimensiunea obiectului respectiv. Meniu (menu) – Set de opţiuni din care este posibilă alegerea uneia. Fiecare dintre opţiuni corespunde unei operaţiuni care se va executa. Există şi meniuri complexe care au opţiunile ierarhizate în submeniuri pe mai multe niveluri. Meniurile pot fi cele standard, ale Access-ului, sau meniuri create de programatori, specifice anumitor aplicaţii. Modală – Proprietate a unei ferestre care interzice accesul la alte ferestre atâta timp cât aceasta nu este închisă. Matrice de culori – Un dreptunghi care conţine mostre de culori aşezate în formă de matrice. Acesta este afişat atunci când se apelează la asistenţii de stabilire a culorii unor componente ale obiectelor (fondul, scrisul, bordura, etc). Multiutilizator (multiuser) – Mod de lucru al unei aplicaţii. Presupune ca mai mulţi utilizatori să lucreze în acelaşi timp cu aceeaşi bază de date sau cu o aplicaţie. Normalizare – Proces care se desfăşoară în faza de proiectare a structurii de tabele a bazei de date. Normalizarea presupune aplicarea unor reguli asupra tabelelor astfel încât în final să rezulte o structură optimă a bazei de date. Nulă (Null) – Valoare pe care o poate avea la un moment dat un câmp de date. Valoarea Null înseamnă de fapt lipsa unei valori şi nu este acelaşi lucru cu valoarea 0 (zero) pentru câmpurile numerice sau cu şirul vid pentru câmpurile de tip text. Obiect – Noţiune specifică programării în mod obiect. Access implementează programarea obiectuală şi pune la dispoziţia proiectanţilor clase de obiecte prestabilite cum sunt: tabelele, interogările, formularele, rapoartele dar şi casetele de text, butoanele de comandă, butoanele de opţiuni, imaginile, linia, etc. Obiectele au o serie de proprietăţi şi funcţii (metode de folosire) prestabilite, pe care utilizatorii lor le pot configura şi înlănţui astfel încât să se obţină prelucrările dorite. OLE (Object Linking and Embedded) – Tehnologie specifică Microsoft care pune la dispoziţie software-ul necesar pentru accesul la obiectele create cu alte produse. Aceste obiecte pot fi înglobate ca atare în aplicaţia curentă sau pot rămâne ca obiecte independente şi se creează numai o legătură către ele. Operand – Valori ale unor câmpuri, constante, variabile sau funcţii cu care se execută calcule în cadrul unor expresii.

ANEXA 3 – DICŢIONAR DE TERMENI

127

Operator – Simboluri matematice care arată ce operaţii se efectuează cu operanzii într-o expresie. În afara operatorilor matematici există şi operatori relaţionali şi logici care se folosesc în scrierea criteriilor (condiţiilor) de căutare şi selecţie. Operatori logici – Operatorii And, Or şi Not care sunt folosiţi în expresii logice a căror evaluare are ca rezultat valoarea Adevărat (True) sau Fals (False). Operatori relaţionali – Operatori de comparare a doi operanzi, de exemplu: <, >, =, <>. Rezultatul comparării poate fi valoarea Adevărat (True) sau Fals (False). Paleta de culori – Un instrument pus la dispoziţie de Access pentru a putea alege într-o formă interactivă proprietăţile de culoare pentru obiectele create (formulare, rapoarte, butoane, etichete, câmpuri de editare etc). Panou de comandă (switchboard) – Tip de formular care apare pe ecran la lansarea în execuţie a unei aplicaţii. Conţine de obicei numele aplicaţiei, o scurtă prezentare a acesteia şi o serie de butoane şi meniuri care permit efectuarea operaţiilor specifice aplicaţiei. Pictogramă (icon) – Imagine grafică de dimensiuni reduse, sugestivă pentru obiectele pe care le reprezintă. Procedură – Succesiune de instrucţiuni (comenzi) scrise în limbajul de programare Visual Basic for Applications pentru efectuarea unei operaţiuni complexe asupra datelor. O procedură este delimitată de cuvinte specifice, cum sunt Sub şi End Sub. Procedură eveniment (event procedure) – Procedură asociată unui eveniment care se produce asupra unui obiect. Pentru fiecare obiect sunt prefixate evenimentele care pot avea loc în legătură cu acesta. Produs cartezian – Produsul cartezian a două tabele include toate combinaţiile posibile între înregistrările primei tabele şi cele ale celei de-a doua (pentru fiecare înregistrare din prima tabelă se creează toate combinaţiile cu toate înregistrările din cea de-a doua, la fel pentru a doua, a treia, … înregistrare din prima tabelă). Proiecţie – Determină selectarea unui număr de coloane dintr-un tabel fără însă a impune condiţii care să limiteze înregistrările selectate. Proprietarul bazei de date (database owner) – Persoana care a creat iniţial baza de date. Acesta deţine controlul asupra tuturor obiectelor bazei de date şi poate acorda altor persoane drepturi asupra unora dintre ele. Proprietate – O caracteristică, un atribut al unui obiect care defineşte modul lui de manifestare. Setul de proprietăţi diferă în funcţie de tipul de obiect. Există proprietăţi care se referă la identificarea obiectului (nume, titlu), aspect (dimensiune, formă, culoare), sursa de date a acestuia (tabela, câmpul de date), evenimentele specifice (încărcarea, selectarea, modificarea) şi altele.

128

Lector univ. drd. Mihai Gavotă - Baze de date

Raport (report) – Obiect Access utilizat pentru tipărirea la imprimantă sau vizualizarea pe ecran a datelor din tabelele bazei de date grupate, centralizate, totalizate conform necesităţilor de informare a utilizatorilor. Rând (row) – O linie dintr-o tabelă a bazei de date formată din câmpuri. Sinonim pentru înregistrare. Relaţie – Legătură care se stabileşte între două tabele ale bazei de date prin intermediul cheii primare dintr-o tabelă şi a cheii externe din a doua tabelă. În Access există mai multe tipuri de relaţii: unu la unu, unu la mulţi, mulţi la unu. Reţea locală (LAN) – Reţea de calculatoare formată din sisteme de calcul şi dispozitive periferice conectate între ele. Acestea rulează software specializat pentru a asigura comunicaţia în reţea. În cazul unei reţele locale calculatoarele componente sunt dispuse la o distanţă relativ mică între ele (în interiorul unei instituţii). Selecţie – Se foloseşte în legătură cu obiectele Access care pot fi selectate printr-un clic dat cu mouse-ul deasupra acestora. Odată selectate unul sau mai multe obiecte, aceste pot fi manipulate (mutate, redimensionate, configurate, inserate) ca şi cum ar fi un singur obiect. Termenul se mai foloseşte pentru a denumi un set de înregistrări alese după unul sau mai multe criterii pe care le îndeplinesc toate. Server – Calculator aflat într-o reţea care pune la dispoziţia calculatoarelor clienţi servicii sau resurse. Pot exista servere dedicate, acestea gestionează lucrul staţiilor de lucru fără a îndeplini sarcini proprii şi servere nededicate. În cazul bazelor de date client-server de dimensiuni mari există de obicei servere de baze de date care pun la dispoziţia clienţilor resursele acestora. SQL (Structured Query Language) – Limbaj de interogare destinat prelucrării datelor conţinute în bazele de date relaţionale. SQL a cunoscut mai multe forme de implementare dar în prezent este standardizat şi stă la baza celor mai multe sisteme de gestiune a bazelor de date. Staţie de lucru – Calculator client într-o reţea de calculatoare care rulează diferite aplicaţii, unele dintre ele solicitând date de la un server. Subformular sau subraport – Obiecte de tip formular / raport conţinute de alte obiecte formular / raport. Se folosesc în cazul unor formulare / rapoarte complexe în care datele din subformulare / subrapoarte sunt corelate cu cele din formularele / rapoartele principale. Submeniu – Set de opţiuni care apare pe ecran atunci când este selectată o opţiune dintr-un meniu. Opţiunile din submeniuri, când sunt selectate, pot determina deschiderea altor submeniuri de pe nivelul următor. Sursa de date a înregistrărilor (record source) – Tabelul sau interogarea care stă la baza unui formular sau raport. Se numără printre proprietăţile unui formular sau raport. Sursa de date a unui control (control source) – Câmpul dintr-o tabelă sau o interogare de unde controlul ia datele pe care le afişează şi/sau modifică. Se numără printre proprietăţile obiectelor care manipulează date.

ANEXA 3 – DICŢIONAR DE TERMENI

129

Tabelă (table)– Obiect component al bazei de date în care sunt memorate datele referitoare la un obiect sau la o activitate. O tabelă este alcătuită din înregistrări (rânduri) şi câmpuri (coloane). Tabelă ataşată (link table) – O tabelă care nu este conţinută în baza de date curentă ci se află în exteriorul acesteia. Tabela ataşată este legată de baza de date şi este vizibilă din cadrul ei. Asupra tabelei ataşate pot fi efectuate majoritatea operaţiilor care se fac în mod obişnuit asupra tabelelor proprii. Tip de date (data type) – Descrie modul de reprezentate internă a informaţiilor care se memorează în baza de date. Principalele tipuri de date sunt: numeric, text, dată/oră, etc. Validare – Operaţiune de verificare a datelor care sunt introduse în câmpurile tabelelor bazei de date. Valorile datelor introduse trebuie să respecte condiţiile impuse de tipul de date al câmpului (ex: în câmpurile numerice pot fi introduse numere şi nu text) şi condiţiile impuse câmpului prin regulile de validare. VBA (Visual Basic for Applications) – Limbaj de programare comun mai multor produse ale firmei Microsoft. Pentru realizarea unor aplicaţii Access complexe de multe ori nu este suficientă numai manipularea obiectelor prestabilite prin intermediul meniurilor şi butoanelor ci este necesară şi scrierea de cod în limbajul VBA. Vizualizare (View)– Metodă prin care datele sunt prezentate pe ecran pentru a fi consultate de utilizator. O tabelă, formular sau raport se poate prezenta în mod proiectare (design) sau în mod vizualizare date (datasheet, form, print preview). Vrăjitor (wizard) – Instrument pus la dispoziţie de Access pentru a crea mai rapid, în mod asistat (printr-o succesiune de ecrane şi dialoguri) anumite obiecte sau expresii. Fiecare „vrăjitor” este specializat pentru o sarcină anume.

BIBLIOGRAFIE

Codd, E.F. (1970). A Relational Model of Data for Large Shared Data Banks. Comunications ACM. Délobel, C., Adiba, M. (1991). Bases de donée et systèmes relationnels aux systèmes à Objects. Paris: InterEditions. Don, Benange. Azam, Mirza. (2001). Visual Studio 6. Bucureşti: Editura Teora. Jamsa, K. (1999). Programarea Web. Bucureşti: Editura All. Jennings, Roger. (1996). Utilizare Access 95. Bucureşti: Editura Teora. Jennings, Roger. (2000). Totul despre Microsoft Access 2000. Bucureşti: Editura Teora. Sales, Susan. (2000). Utilizare Microsoft Access 2000. Bucureşti: Editura Teora. Winemiller, Eric. (2000).Visual Basic 6 - baze de date. Bucureşti: Editura Teora. ***. Documentaţia Microsoft Windows. ***. Documentaţia Microsoft Office 2000. ***. Documentaţia Microsoft ACCESS. ***. (1999). Microsoft Access 2000. Microsoft Press.

Sign up to vote on this title
UsefulNot useful