BD-Curs3

25
Curs 3 ACCESS 2000,2007 (2010) DE CE ACCESS? Access este una dintre componentele principale ale pachetului (suitei) de programe pentru birou MS-Office. Pe lângă bazele de date relaţionale Access, acest pachet 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 1

description

baze de date

Transcript of BD-Curs3

Page 1: BD-Curs3

Curs 3

ACCESS 2000,2007 (2010)

DE CE ACCESS?

Access este una dintre componentele principale ale pachetului (suitei) de programe pentru birou MS-Office. Pe lângă bazele de date relaţionale Access, acest pachet 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.

CREAREA/DESCHIDEREA UNEI BAZE DE DATE

1

Page 2: BD-Curs3

După lansarea în execuţie din meniul Start al sistemului Windows sau dintr-un shortcut special, programul Access 2000 prezintă o casetă de dialog prin intermediul căreia utilizatorul poate opta pentru:1. deschiderea unei baze de date deja existente (cu Open – 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, se poate selecta baza de date (aplicaţia) dorită. Aceasta se va încărca în memorie şi 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). In mod implicit sunt selectate tabelele bazei de date (Tables).

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ă am ales folderol dorit pentru salvare şi am schimbat numele db1 în StudentRecords, apăsăm butonul <Create> şi 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:

2

Page 3: BD-Curs3

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.

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

3

Page 4: BD-Curs3

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:

Datasheet View (pentru tabele şi interogări) Form view (pentru formulare) Print Preview (pentru rapoarte) Page View (pentru pagini internet) Run (pentru interogări şi macrocomenzi).

PREZENTARE GENERALĂ A PRINCIPALELOR OBIECTE ACCESS

Bazele de date Access apar memorate 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 poartă numele de Data Access Objects (DAO).

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

4

Page 5: BD-Curs3

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

5

Page 6: BD-Curs3

recomandă înlocuirea 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. Cei care le consultă trebuie să aibă instalat MS-Office 2000.

CREAREA TABELELOR ŞI A RELAŢIILOR

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 într-un 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. Având această

6

Page 7: BD-Curs3

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.

Crearea unei tabele presupune în general două etape distincte: 1.Definirea structurii tabelei şi2. Î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 permite utilizarea următoarelor tipuri de date pentru câmpurile tabelelor:

7

Page 8: BD-Curs3

8

Page 9: BD-Curs3

Access 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).

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 .

9

Page 10: BD-Curs3

Î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 curs anterior, atunci când s-a discutat relaţia „unu la mulţi”).

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

În machete de mai jos se observă câmpul cod persoana care este un câmp tip cheie primară – 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 străină (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.

10

Page 11: BD-Curs3

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ă (şi anume 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ă.

Aşa cum am arătat la începutul subcapitolului, pe lângă metoda Design View, Access 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

11

Page 12: BD-Curs3

by using wizard. În urma acestei acţiuni vom obţine o succesiune de dialoguri specializate pentrucrearea unor tabele din domeniile Business sau Personal. Dialogurile se bazează pe anumite câmpuri predefinite de către Access pentru aceste domenii.

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.

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:

12

Page 13: BD-Curs3

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: se poate comuta în modul da lucru dorit: Design View (echerul) sau

Datasheet View (tabelul) se pot salva datele (discheta) se pot lista datele la imprimantă sau previzualiza în vederea listării se pot consulta datele sortate după valorile anumitor câmpuri (coloane) conţinutul tabelei poate fi vizualizat filtrat după anumite criterii 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: deplasarea pe prima înregistrare (înregistrarea numărul 1) deplasarea pe o înregistrare anterioară 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>)

deplasarea pe înregistrarea următoare deplasarea pe ultima înregistrare a tabelei 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ă:

13

Page 14: BD-Curs3

4

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

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 fereastra Save As din figura de mai jos. Aici se află înscris iniţial un nume implicit 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>.

Oricum la închiderea fără salvare a ferestrei de proiectare a structurii unei tabele noiu (cu numele implicit Table1), Access întreabă dacă se doreşte salvarea şi dacă da, oferă o casetă de înscriere a noului nume pentru tabela Table1.

PROPRIETĂŢILE CÂMPURILOR

Acestea 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 de mai jos prezintă dialogul Design View pentru tabela Nomenclatorul categoriilor de functii.

14

Page 15: BD-Curs3

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. 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 editării. Atunci când se face clic în linia acestei proprietăţi apare butonul Builder

care dacă va fi apăsat va prezenta următorul dialog (wizard):

15

Page 16: BD-Curs3

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.

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 Hyperlink.

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.

16

Page 17: BD-Curs3

REGULI DE NORMALIZARE

La proiectarea structurii unei baze de date relaţionale trebuie stabilite în primul rand 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.Codd î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.

Într-o primă formă tabela Facturi ar putea arăta ca în figura de mai jos. Ea are o cheie primară formată din câmpul Serie_nr fact. Aceast câmp are o valoare unică pentru fiecare factură emisă.

Tabela Facturi Continuare tabelăSerie_nr factData facturării Denumire produs 1Nume client Unitate de masura

produs 1Adresa client Pret unitar produs 1Localitate client Cantitate produs 1Ţară client Valoare produs 1CUI Valoare TVA produs 1Cont client Cod produs 2Banca client ….Mijloc de transp Valoare TVA produs 20Delegat Total valoare facturaCod produs 1 Total valoare TVA

Observăm că în tabelă există mai multe câmpuri care cuprind informaţii despre ţara, localitatea şi adresa (strada şi numărul unde se află firma) clientului. Ele vor fi utile dacă vom considera că este de interes o evidenţă a sumelor facturate pe ţări sau chiar localităţi, uşurând în acest fel interogările.

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ă.

17

Page 18: BD-Curs3

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 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ă (FN1) avem tabelele:

Tabela Facturi Tabela linii facturiSerie_nr fact Serie_nr factData facturării Cod produs Nume client Denumire produs Adresa client Unitate de masuraLocalitate client Pret unitar Ţară client Cantitate CUI ValoareCont client Valoare TVABanca clientMijloc de transpDelegatTotal valoare facturaTotal 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ă a doua tabelă (Linii facturi) este o cheie complexă, adică formată din două sau mai multe câmpuri, în cazul acesta formată din câmpurile: Serie_nr fact ş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ă cele două câmpuri Denumire produs şi Unitate de măsură din tabela Linii facturi 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ă (FN2) devin:

Tabela Facturi Tabela linii Tabela produse

18

Page 19: BD-Curs3

facturiSerie_nr fact Serie_nr fact Cod produsData facturării Cod produs Denumire produs Nume client Pret unitar Unitate de

masuraAdresa client Cantitate Localitate client ValoareŢară client Valoare TVACUICont clientBanca clientMijloc de transpDelegatTotal valoare facturaTotal valoare TVA

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 camp 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, Localitate client, Tara client, CUI, Cont client şi Bancă client depind de câmpul Nume client. Deci, fiecărui client îi corespund o adresă, o localitate, o ţară, un cod unic de înregistrare (CUI), o bancă şi un număr de cont unice. În schimb, delegatul din partea clientului sau mijlocul de transport pot 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 treia 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 Tabela Clienti Tabela Linii facturi

Tabela Produse

Serie_nr fact Nume client Serie_nr fact Cod produsNume client Adresa client Cod produs Denumire

produs Data facturării Localitate client Pret unitar Unitate de

19

Page 20: BD-Curs3

masuraMijloc de transp Ţară client Cantitate Delegat CUITotal valoare factura

Cont client

Total valoare TVA

Banca client

Legătura dintre tabela Facturi şi tabela Clienţi se face prin intermediul câmpului Nume 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ă (FN3) mai poate suferi o serie de rafinări pentru a obţine o structură performantă de tabele a bazei de date.

Observăm că Nume 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.

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 Tabela Clienti Tabela Linii facturi

Tabela Produse

Serie_nr fact Cod client Serie_nr fact Cod produsCod client Nume client Cod produs Denumire

produs Data facturării Adresa client Pret unitar Unitate de

masuraMijloc de transp Localitate client Cantitate Delegat Ţară client

CUICont clientBanca client

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

20

Page 21: BD-Curs3

deoarece acesta pune la îndemâna utilizatorilor finali cele mai prietenoase instrumente software cu care pot gestiona informaţiile din baza de date.

În Access tabelele create pentru aplicaţia de mai sus şi relaţiile dintre acestea se pot vedea în figura de mai jos:

21