ACCESS 2000 (2002 sau 2003)
DE CE ACCESS?
Access este una dintre componentele principale ale pachetului (suitei) de programe pentru birou MS-Office. Pe lânga bazele de date relationale Access, acest pachet integreaza si alte componente cum sunt: procesorul de texte Word, programul de calcule tabelare Excel, agenda de birou Outlook, programul pentru prezentari Power Point
Felul în care firma Microsoft a reusit sa realizeze sistemul de operare Windows sub care functioneaza toate aceste programe precum si felul în care Microsoft a reusit sa integreze Microsoft Office Professional 2000 sub Windows 2000, a atras un mare numar de utilizatori si dezvoltatori de aplicatii Windows. Aceasta a determinat ca în prezent pe mai mult de 80 % din calculatoarele PC din lume sa ruleze sistemul de operare Windows împreuna cu pachetul de programe MS-Office
În lucrarea sa fundamentala "Totul despre Access 2000" Roger Jennings face cunoscut faptul ca Access 2000, a sasea versiune a platformei desktop pentru bazele de date Microsoft, prin motorul sau Jet dezvoltat special, domina în prezent piata produselor desktop pentru baze de date.
Înca din 998 editorialistul Jesse Berst de la ZDNet scria: "Paradox-ul (un alt SGBD pentru baze de date relationale n.a.) a murit. Nimeni nu mai scrie in dBASE. Programul Access de la Microsoft a acaparat deja aceasta piata.". Chiar si FoxPro achizitionat de Microsoft si dezvoltat ulterior ca Visual Fox, a devenit un produs marginal. În prezent exista în lume, vândute cu licenta, zeci de milioane de copii ale produsului Access
Usurinta proiectarii în Access, facilitatile de programare vizuala, performantele oferite ca baza de date relationala si distribuita, cele de integrare puternica sub Windows (datorate faptului ca este o componenta MS-Office) si nu în ultimul rând posibilitatile de utilizare în intranet si în internet, au facut ca în ultimii ani acest produs sa fie tot mai utilizat ca un instrument de dezvoltare rapida a aplicatiilor ce presupun lucrul cu baze de date, inclusiv în cadrul firmelor românesti. În acest sens, este foarte posibil ca viitorii absolventi cu studii superioare, indiferent de specialitate, sa lucreze ca utilizatori finali cu baze de date de tip Access sau sa faca parte din echipe mixte de proiectare, configurare si modificare a aplicatiilor care vor compune software-ul sistemului informatic al firmei. Unii dintre ei, în calitate de manageri, trebuie sa fie în masura sa defineasca cerintele unor aplicatii informatice de tipul bazelor de date pe care le vor solicita unor firme specializate si tot ei vor fi aceia care vor evalua aplicatiile realizate.
CREAREA/DESCHIDEREA UNEI BAZE DE DATE
Dupa lansarea în executie din meniul Start al sistemului Windows sau dintr-un shortcut special, programul Access 2000 prezinta o caseta de dialog prin intermediul careia utilizatorul poate opta pentru:
. deschiderea unei baze de date deja existente (cu Open - o baza de date model care se poate instala odata cu programul Access
2. deschiderea unei baze de date noi (Blank Access database
3. crearea imediata a unei baze de date sau a unor obiecte ale acesteia, utilizând vrajitorii Access database wizards, pages, and projects
1. &nbs 11311y243l p; &nbs 11311y243l p; &nbs 11311y243l p; &nbs 11311y243l p; Daca se opteaza pentru Open an existing file, se poate selecta baza de date (aplicatia) dorita. Aceasta se va încarca în memorie si va aparea ecranul principal de prezentare a bazei de date prin intermediul caruia putem avea acces la obiectele acesteia (Tables, Queries, Forms, Reports, Pages, Macros, Modules). In mod implicit sunt selectate tabelele bazei de date (Tables
2. &nbs 11311y243l p; &nbs 11311y243l p; &nbs 11311y243l p; &nbs 11311y243l p; Daca se opteaza pentru deschiderea unei baze de date noi (Blank Access database) se va lansa un dialog prin intermediul caruia suntem invitati sa alegem un nume si un folder unde se va crea baza de date:
În mod implicit ni se propune numele db .mdb pentru baza de date si folder-ul My Documents ca loc în care sa se salveze. Acesta este de fapt un dialog standard Windows 2000 de tipul File Open / Save care apare utilizatorilor de câte ori o aplicatie Windows solicita alegerea acestor doi parametrii (nume fisier si folder). Presupunând ca am ales folderol dorit pentru salvare si am schimbat numele db1 în StudentRecords, apasam butonul <Create> si vom obtine ecranul de proiectare (prezentare) a unei baze de date noi (fara tabele si fara nici un alt obiect prefabricat). În continuare vom putea crea obiectele dorite selectând tipul de obiect si apasând butoanele <Open> sau <Design>.
Ecranul care va aparea este:
3. &nbs 11311y243l p; &nbs 11311y243l p; &nbs 11311y243l p; Daca optam pentru Access database wizards, pages, and projects se va lansa un dialog
prin intermediul caruia putem selecta wizard-ul specializat pentru tipul de aplicatie ales (ne sunt prezentate un numar de aplicatii tipice). Permanent, în functie de modul de lucru si contextul în care ne aflam, programul Access ne pune la dispozitie anumite meniuri contextuale (accesibile prin apasarea butonului din dreapta al mouse-ului) sau bare de meniuri si de instrumente speciale posibil de utilizat în orice moment. O tratare exhaustiva a acestora nu este necesara si nici chiar posibila deoarece Microsoft a lasat libera utilizatorilor posibilitatea de a particulariza aceste bare si deci configuratiile meniurilor si 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 sa învatam sa navigam utilizând la maximum interactivitatea sistemului oferita prin intermediul asistentilor, a help-urilor senzitive si a mesajelor tooltip ce apar pe un fond galben deschis, atunci când întârziem cu prompter-ul mouse asupra unui buton.
Iata un exemplu de bare de meniuri si de unelte care apar atunci când ne aflam în modul
de lucru proiectare (Design) al unei tabele sub Access
Oricare dintre obiectele Access se pot afla în doua moduri de lucru:
ü &nbs 11311y243l p; modul de lucru proiectare Design View
si
ü &nbs 11311y243l p; modul de lucru lansare care în functie de obiectul activ ar putea fi:
· &nbs 11311y243l p; Datasheet View (pentru tabele si interogari)
· &nbs 11311y243l p; Form view (pentru formulare)
· &nbs 11311y243l p; Print Preview (pentru rapoarte)
· &nbs 11311y243l p; Page View (pentru pagini internet)
· &nbs 11311y243l p; Run (pentru interogari si macrocomenzi).
PREZENTARE GENERALĂ A PRINCIPALELOR OBIECTE ACCESS
Bazele de date Access apar memorate sub forma unor fisiere având extensia .mdb. Specific acestora este faptul ca toate obiectele (tabele, interogari, formulare, rapoarte, macrocomenzi, module si pagini internet) sunt memorate împreuna în cadrul aceluiasi fisier .mdb. Astfel, spre deosebire de alte baze de date în care obiectele apar ca fisiere separate, programul Access obtine un plus de performanta prin posibilitatea pe care o are de a gestiona intern obiectele bazei de date. Efectul final se materializeaza prin: cresterea vitezei de acces la date si de rulare a obiectelor, marirea securitatii bazei de date si printr-o mai simpla administrare, compactare, reparare si criptare a datelor.
Cu exceptia datelor putem numi obiecte toate elementele din Access. Astfel, sunt obiecte: tabelele, formularele, interogarile, rapoartele, macrocomenzile, paginile internet, modulele, dar si controalele din componenta formularelor si rapoartelor. Aplicatia ca atare constituie obiectul Application care face parte din structura Access Object Model. Obiectele de acces la date poarta numele de Data Access Objects (DAO).
Tabelele (tables
Contin datele ("materia prima") fara de care nu poate fi de imaginat o baza de date. Tabelele reprezinta în acest sens poate cel mai important obiect al oricarei baze de date. Datele sunt memorate în tabele sub forma rândurilor (numite si înregistrari sau records si a coloanelor (numite câmpuri sau fields). Un element important al bazei de date îl reprezinta modul în care sunt legate tabelele între ele, adica sistemul de relatii (relatioships
Interogarile (queries
Constituie întrebari stocate adresate bazei de date. Ele sunt utile pentru a selecta anumite înregistrari conform unor criterii, pentru a le grupa, sorta, sterge sau actualiza. Sub Access interogarile pot prelucra si afisa datele selectate din maxim 6 tabele. Rezultatele unei interogari (query) se pot afisa pe cel mult 255 de coloane. Interogarile au la baza un cod generat în limbajul de interogare SQL.
Formularele (forms
Sunt obiectele folosite pentru interactiunea cu utilizatorii, cu datele din tabele, din interogari sau rezultate în urma lansarii unor proceduri SQL sau VBA (Visual Basic for Applications). Formularele pot fi utilizate pentru vizualizarea, adaugarea sau modificarea datelor sau pentru lansarea anumitor dialoguri de interactiune cu utilizatorul. Tot ca formulare sunt proiectate si panourilor de comanda switchboards) prin intermediul carora utilizatorii pot naviga în interiorul unei aplicatii pentru a vizualiza alte formulare, rapoarte sau interogari. Formularele pot contine subformulare dar si alte obiecte si controale Access sau Windows care personalizeaza aplicatia. De exemplu ele pot contine: butoane, etichete, câmpuri de editare, elemente grafice, sunete sau clipuri video, etc.
Rapoartele (reports
Reprezinta situatiile de iesire disponibile utilizatorilor finali. Ele afiseaza într-un anumit format standard sau particular rezultatele anumitor interogari sau chiar datele din tabele. De cele mai multe ori rapoartele sunt proiectate pentru a afisa datele conform unor situatii finale standard (de exemplu: balanta sah contabila, jurnalul de vânzari sau cel de cumparari, jurnalul de casa, situatiile conturilor bancare, centralizatorul stocurilor, etc).
La fel ca si formularele, rapoartele pot contine functii VBA si anumite obiecte care sa faca posibila afisarea câmpurilor din tabele sau interogari în formatele dorite. Obiectele cel mai frecvent utilizate sunt etichetele, câmpurile de afisare, elementele grafice. Rapoartele pot contine si subrapoarte. Informatia afisata prin rapoarte sau prin formulare poate fi structurata si grupata pe mai multe sectiuni: title, header, detail, footer. În capitolele urmatoare vor fi detaliate aceste notiuni.
Macrocomenzile (macros)
Sunt proceduri care automatizeaza de regula anumite operatii sau evenimente cum ar fi: lansarea automata a unei comenzi din bara de meniuri, clic-ul pe un anumit buton, lansarea în executie a unor forme, interogari sau rapoarte, etc. Macrocomenzile au fost mentinute în Access 2000 doar pentru compatibilitate cu versiunile anterioare. Microsoft recomanda înlocuirea acestora cu cod scris în VBA deoarece este posibil ca versiunile viitoare de Access sa nu mai contina macrocomenzi.
Modulele (modules
Contin proceduri (secvente de cod) scrise în VBA (Visual Basic for Applications). Modulele pot fi module de clasa si module standard. Modulele de clasa pot aparea în cadrul formelor sau rapoartelor atunci când se trateaza prin intermediul unor instructiuni (cod VBA) anumite evenimente (de exemplu evenimentul clic cu mouse-ul pe un buton). Modulele standard contin acele proceduri sau functii personalizate disponibile întregii aplicatii. Ele sunt scrise de programatorii de aplicatie si se afla grupate în modules
Paginile internet (pages
Sunt pagini Web care mijlocesc prin intermediul unui server, afisarea în internet a datelor unei aplicatii Access 2000. Ele mai sunt numite si pagini DAP (Data Access Pages). Paginile internet pot fi statice sau dinamice si pot fi consultate prin intermediul browser-ului Internet Explorer. Cei care le consulta trebuie sa aiba instalat MS-Office 2000
CREAREA TABELELOR sI A RELAŢIILOR
Orice tabela are linii si coloane si contine datele organizate conform unei anumite structuri. În limbajul bazelor de date coloanele se numesc câmpuri (fields). Fiecare coloana reprezinta un câmp (field) cu o denumire unica, de un anumit tip (sir de caractere, numeric, data calendaristica, etc), având o dimensiune prestabilita, care îl determina sa ocupe în memorie un anumit numar de octeti în functie de tipul câmpului. Rândurile (liniile) tabelelor se numesc înregistrari (records
Evident spatiul de memorie ocupat de o tabela este functie de numarul de înregistrari si de câmpuri ale acesteia. Pot exista si tabele vide, adica fara nici o înregistrare. Aceste tabele au doar structura, configurata în functie de numarul, tipul si dimensiunea câmpurilor. Initial, dupa crearea structurii, toate tabele sunt vide. Ele mai pot deveni vide si în urma unei operatiuni de stergere a tuturor înregistrarilor continute.
Tabelele pot prezenta datele (înregistrarile) ordonate sau filtrate conform unor criterii (ex.: sortate alfabetic dupa numele persoanelor, în ordinea crescatoare (ascending) a codurilor sau în ordinea descrescatoare (descending) a mediilor, filtrate numai pentru persoanele nascute dupa o anumita data si/sau numai pentru persoanele al caror nume începe cu litera "M", etc).
Deci, tabelele pot contine datele ordonate, indexate dupa anumite câmpuri numite chei de acces sau chei de index. Orice tabela poate avea câmpuri tip cheie primara de acces (evidentiate într-un mod special sub Access prin plasarea unei pictograme cu o imagine de cheie în dreptul acestora) si optional câmpuri desemnate pentru cheile de index. Chiar daca pot exista si tabele fara cheie primara de acces si fara chei de index, se recomanda ca fiecare tabela sa contina macar un câmp cheie. Având aceasta organizare viteza de acces la date este mai mare si deci creste performanta de procesare a bazei de date.
Proiectarea structurii tabelelor si a sistemului de relatii dintre câmpurile acestora este o operatiune foarte importanta, de ea depinzând în final performanta globala a bazei de date. În aceasta etapa de analiza trebuie avute în vedere regulile de normalizare a bazei de date. Dintre cerintele procesului de normalizare amintim:
Crearea unei tabele presupune în general doua etape distincte:
1.Definirea structurii tabelei si
2. Încarcarea acesteia cu date
Definirea structurii tabelei consta în stabilirea câmpurilor (coloanelor) ca denumire, tip de date si dimensiune (în functie de valorile pe care le vor contine). Access permite utilizarea urmatoarelor tipuri de date pentru câmpurile tabelelor:
Access pune la dispozitia proiectantilor de aplicatii trei metode utile pentru crearea tabelelor. Acestea sunt:
Create table in Design view (crearea tabelei în modul de proiectare "Design view
Create table by using wizard (crearea tabelei utilizând "vrajitorul")
Create table by entering data (crearea tabelei chiar în momentul introducerii datelor).
Cea mai des utilizata metoda este prima - Create table in Design view, care odata selectata si punctata prin <Enter> sau dublu clic ne deplaseaza în aceeasi macheta de proiectare ce apare si la apasarea butonului .
În urmatoarea figura se poate vedea macheta de proiectare disponibila în momentul crearii tabelei Date personale angajati (tabela care a mai fost prezentata într-un curs anterior, atunci când s-a discutat relatia "unu la multi").
Numele câmpurilor se înscriu prin tastarea acestora în coloana Field Name iar tipul de data se selecteaza prin intermediul unei liste (control combo box) care apare atunci când se executa un clic în linia cu câmpul dorit, în dreptul coloanei Data Type
În machete de mai jos se observa câmpul cod persoana care este un câmp tip cheie primara - Primary Key. Acest câmp are în dreptul lui o pictograma cheie care a fost selectata anterior printr-un clic dat în bara de instrumente pe butonul continând acelasi simbol. Câmpul cod persoana se mai numeste si cheie interna
Structura tabelei mai contine si câmpurile nume persoana si adresa în care se vor memora date de tipul Text. Câmpul cod functie se mai numeste si cheie straina (externa) si este un câmp de legatura catre o alta tabela numita Nomenclator functii având o structura foarte simpla ce va fi prezentata în continuare.
Se observa ca aceasta tabela contine doar trei câmpuri:
Structura tabelei Nomenclatorul categoriilor de functii se poate vedea în urmatoarea figura
Nomenclatorul categoriilor de functii este o tabela secundara din care vom extrage la nevoie doar denumirea categoriei functiei ocupate de un angajat (ex.: director, sef de departament, sef de birou, analist, operator contabil, operator financiar, secretar etc). La capitolul referitor la interogari (queries) se va exemplifica lucrul cu aceasta tabela
Asa cum am aratat la începutul subcapitolului, pe lânga metoda Design View Access mai pune la dispozitia utilizatorilor înca doua metode utile pentru crearea tabelelor: Create table by using wizard (crearea tabelei utilizând "vrajitorul") si Create table by entering data (crearea tabelei chiar în momentul introducerii datelor). În continuare vor fi prezentate pe scurt si aceste doua metode.
Crearea unei tabele utilizând "vrajitorul" se face dând dublu-clic pe optiunea Create table
by using wizard. În urma acestei actiuni vom obtine o succesiune de dialoguri specializate pentru
crearea unor tabele din domeniile Business sau Personal. Dialogurile se bazeaza pe anumite câmpuri predefinite de catre Access pentru aceste domenii.
Microsoft, atunci când a creat Access 2000, a considerat ca este bine sa ofere utilizatorilor si posibilitatea de a crea o tabela chiar în momentul introducerii datelor. Aceasta este de fapt a treia metoda de creare a tabelelor, care devine disponibila dupa selectarea optiunii Create table by entering data
Dupa solicitarea Create table by entering data va aparea o macheta de încarcare exhaustiva a datelor. Este o macheta preformatata pentru 0 coloane (câmpuri) numite Field , Field2,.,Field si 2 de rânduri (înregistrari) vide. Aceasta modalitate de lucru presupune ca ulterior, dupa introducerea datelor în celule, se va solicita metoda de lucru Design View pentru definirea structurii tabelei (numele câmpurilor, tipurile de date si proprietatile acestora). Intrarea în Design View se poate obtine prin apasarea primului buton din bara de instrumente (toolbar) care contine pictograma unui echer.
Asa cum se vede în Status bar scrie Datasheet View care este de fapt macheta standard pusa la dispozitie de Access pentru încarcarea datelor direct în tabele. Iata de exemplu cum apare Datasheet View atunci când se încarca date în tabela Nomenclatorul categoriilor de functii
Atunci când lucreaza în modul de lucru Datasheet View Access pune la dispozitia utilizatorilor mai multe facilitati:
prin intermediul carora:
ü &nbs 11311y243l p; se poate comuta în modul da lucru dorit: Design View (echerul) sau Datasheet View (tabelul)
ü &nbs 11311y243l p; se pot salva datele (discheta)
ü &nbs 11311y243l p; se pot lista datele la imprimanta sau previzualiza în vederea listarii
ü &nbs 11311y243l p; se pot consulta datele sortate dupa valorile anumitor câmpuri (coloane)
ü &nbs 11311y243l p; continutul tabelei poate fi vizualizat filtrat dupa anumite criterii
ü &nbs 11311y243l p; se pot lansa cautari.
· &nbs 11311y243l p; &nbs 11311y243l p; O bara standard de butoane de navigatie printre înregistrari:
prin intermediul carora (în ordine de la stânga la dreapta) se poate obtine:
ü &nbs 11311y243l p; deplasarea pe prima înregistrare (înregistrarea numarul
ü &nbs 11311y243l p; deplasarea pe o înregistrare anterioara
ü &nbs 11311y243l p; se poate vedea numarul înregistrarii curente (5 în cazul de fata) sau se poate comanda deplasarea pe un alt numar de înregistrare, daca în locul numarului curent (ce apare în câmpul de editare) se va înscrie numarul dorit pentru noua înregistrare (în final, se apasa tasta <Enter>)
ü &nbs 11311y243l p; deplasarea pe înregistrarea urmatoare
ü &nbs 11311y243l p; deplasarea pe ultima înregistrare a tabelei
ü &nbs 11311y243l p; deplasarea pe un spatiu special rezervat (marcat prin ) pentru adaugarea unei înregistrari noi.
· &nbs 11311y243l p; &nbs 11311y243l p; Informarea despre înregistrarea care se editeaza în acel moment:
este evidentiata prin intermediul pictogramei care apare în stânga acesteia sub forma unui creion.
· &nbs 11311y243l p; &nbs 11311y243l p; Informarea despre înregistrarea curenta
este evidentiata prin intermediul pictogramei care apare în stânga acesteia sub forma vârfului
unei sageti orientate spre dreapta.
SALVAREA TABELELOR
Dupa crearea numelor de câmpuri (Field Name), alegerea tipurilor de date pentru acestea (Data Type si setarea proprietatilor câmpurilor (Field Properties), se stabilesc câmpurile care alcatuiesc cheia primara de acces si 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 realizeaza prin alegerea optiunii Save sau Save as din meniul File aflat în bara de meniuri (Menu bar). În urma acestei actiuni apare fereastra Save As din figura de mai jos. Aici se afla înscris initial un nume implicit propus de Access. Peste acest nume se va înscrie de la tastatura numele dorit pentru tabel, (Nomenclator functii) apoi se va confirma prin apasarea butonului <OK> sau a tastei <Enter>.
Oricum la închiderea fara salvare a ferestrei de proiectare a structurii unei tabele noiu (cu numele implicit Table1), Access întreaba daca se doreste salvarea si daca da, ofera o caseta 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 creeaza sau se modifica structura unei tabele.
Sectiunea Field Properies este plasata în partea inferioara a dialogului Design View pentru tabele.
Exemplul de mai jos prezinta dialogul Design View pentru tabela Nomenclatorul categoriilor de functii
Proprietatile câmpurilor sunt:
&nbs 11311y243l p; &nbs 11311y243l p; &nbs 11311y243l p; &nbs 11311y243l p; care daca va fi apasat va prezenta urmatorul dialog (wizard
REGULI DE NORMALIZARE
La proiectarea structurii unei baze de date relationale trebuie stabilite în primul rand tabelele în care vor fi memorate datele si relatiile dintre tabele. Acesta este un proces iterativ, tabelele, cheile primare de identificare a înregistrarilor, relatiile dintre tabele sunt stabilite într-o forma initiala dupa care, prin rafinare succesiva se ajunge la forma definitiva
Identificarea initiala a tabelelor si a câmpurilor acestora se face prin studierea documentelor primare si a rapoartelor care sunt vehiculate în cadrul activitatii ce se doreste a fi informatizata. Acestei structuri initiale îi sunt aplicate un set de reguli care reprezinta pasii de obtinere a unei baze de date normalizate.
Algoritmul de normalizare a bazelor de date relationale precum si pasii acestuia au fost descrisi de catre Dr.E.F.Codd în lucrarea "Further Normalization of the Data Base Relational Model" aparuta în
Voi prezenta aceste reguli utilizând un exemplu concret:
Consideram ca în urma analizei documentului primar Factura dorim sa stabilim o structura de tabele care sa ne permita stocarea informatiilor continute de document (factura si obtinerea unor situatii sintetice privind evidenta sumelor facturate pe produse, pe clienti, pe anumite perioade de timp. În acest scop alegem într-o prima faza informatiile care ne intereseaza si consideram ca vor fi stocate într-o singura tabela numita Facturi.
Într o prima forma tabela Facturi ar putea arata ca în figura de mai jos. Ea are o cheie primara formata din câmpul Serie_nr fact Aceast câmp are o valoare unica pentru fiecare factura emisa
Tabela Facturi |
Continuare tabela |
|
Serie_nr fact | ||
Data facturarii |
Denumire produs 1 |
|
Nume client |
Unitate de masura produs 1 |
|
Adresa client |
Pret unitar produs 1 |
|
Localitate client |
Cantitate produs 1 |
|
|
Valoare produs 1 |
|
CUI |
Valoare TVA produs 1 |
|
Cont client |
Cod produs 2 |
|
Banca client | ||
Mijloc de transp |
Valoare TVA produs 20 |
|
Delegat |
Total valoare factura |
|
Cod produs 1 |
Total valoare TVA |
Observam
ca
în
tabela exista mai
multe câmpuri care
cuprind informatii despre
Mai observam din aceasta tabela ca grupul informatiilor care se refera la un produs se repeta cu valori diferite pe o factura de atâtea ori câte produse diferite sunt trecute pe factura
Câmpurile Total valoare factura si Total valoare TVA se refera la întreaga factura si reprezinta suma valorilor corespunzatoare pentru toate produsele trecute pe factura
. Prima regula de normalizare este aceea de a crea tabele plate, tabele ce nu contin grupuri de câmpuri care sa se repete pentru o valoare unica a cheii de identificare a înregistrarii (cheia primara). În cazul nostru, deoarece pentru o factura putem avea unul sau mai multe produse care sunt înscrise pe aceasta, vom separa într-o alta tabela informatiile legate de produse, fiecare dintre aceste informatii fiind determinata în mod unic de numarul facturii si codul produsului.
În prima forma normala (FN1) avem tabelele:
Tabela Facturi |
Tabela linii facturi |
|
Serie_nr fact |
Serie_nr fact |
|
Data facturarii |
Cod produs |
|
Nume client |
Denumire produs |
|
Adresa client |
Unitate de masura |
|
Localitate client |
Pret unitar |
|
|
Cantitate |
|
CUI |
Valoare |
|
Cont client |
Valoare TVA |
|
Banca client | ||
Mijloc de transp | ||
Delegat | ||
Total valoare factura | ||
Total valoare TVA |
Între tabela Facturi si tabela Linii facturi exista o relatie de "unu la multi" ( ), adica unui numar unic de factura îi pot corespunde unul sau mai multe produse care sunt memorate ca înregistrari în tabela Linii facturi. Cheia de identificare (cheia primara) în aceasta a doua tabela (Linii facturi) este o cheie complexa, adica formata din doua sau mai multe câmpuri, în cazul acesta formata din câmpurile: Serie_nr fact si Cod produs.
2. A doua regula de normalizare cere sa analizam tabelele aflate în prima forma normala si sa vedem daca fiecare câmp al acestora reflecta (caracterizeaza) valoarea cheii primare în totalitatea ei. Se impune ca atunci când avem chei complexe sa nu avem câmpuri care sa caracterizeze doar o parte componenta a cheii primare.
În cazul nostru, observam ca cele doua câmpuri Denumire produs si Unitate de masura din tabela Linii facturi caracterizeaza un anumit produs si nu sunt diferite pentru acelasi produs de la o factura la alta. Spre deosebire de ele, celelalte câmpuri ale tabelei se refera la cantitatea, pretul si valoarea produsului numai pentru factura respectiva. Pe o alta factura este posibil sa se vânda o alta cantitate din acelasi produs la un alt pret
Tabelele în cea de a doua forma normala (FN2) devin:
Tabela Facturi |
Tabela linii facturi |
Tabela produse |
||
Serie_nr fact |
Serie_nr fact |
Cod produs |
||
Data facturarii |
Cod produs |
Denumire produs |
||
Nume client |
Pret unitar |
Unitate de masura |
||
Adresa client |
Cantitate | |||
Localitate client |
Valoare | |||
|
Valoare TVA | |||
CUI | ||||
Cont client | ||||
Banca client | ||||
Mijloc de transp | ||||
Delegat | ||||
Total valoare factura | ||||
Total valoare TVA |
Legatura dintre tabela Linii facturi si tabela Produse se face prin intermediul câmpului Cod produs prezent în ambele. În tabela Produse acesta este cheia primara deoarece valoarea codului identifica în mod unic fiecare produs, iar în tabela Linii facturi acesta este camp component al cheii primare si totodata cheie externa de legatura cu tabela Produse. Între tabela Linii facturi si tabela Produse exista o relatie "multi la unu" (- ), adica fiecare produs înscris pe o factura trebuie sa existe în nomenclatorul de produse al firmei.
3. A treia regula de normalizare cere ca toate câmpurile din tabele sa fie independente între ele. Analizând câmpurile din tabelele aflate în ce-a de-a doua forma normala, trebuie sa nu existe câmpuri care sa fie dependente de alte câmpuri care nu fac parte din cheia primara
În cazul nostru, analizând tabela Facturi,
observam ca multe
din câmpuri, si anume: Adresa
client, Localitate client,
Câmpurile Valoare si Valoare TVA depind de câmpurile cantitate, pret si de un procent fix de TVA. Fiind câmpuri care se pot calcula în orice moment ele vor fi eliminate din tabela deoarece constituie informatie memorata redundant.
Aplicam ce-a de-a treia regula de normalizare prin extragerea acestor informatii, care depind de un câmp aflat în afara cheii primare, într-o alta tabela
Structura de tabele devine:
Tabela Facturi |
Tabela Clienti |
Tabela Linii facturi |
Tabela Produse |
|||
Serie_nr fact |
Nume client |
Serie_nr fact |
Cod produs |
|||
Nume client |
Adresa client |
Cod produs |
Denumire produs |
|||
Data facturarii |
Localitate client |
Pret unitar |
Unitate de masura |
|||
Mijloc de transp |
|
Cantitate | ||||
Delegat |
CUI | |||||
Total valoare factura |
Cont client | |||||
Total valoare TVA |
Banca client |
Legatura dintre tabela Facturi si tabela Clienti se face prin intermediul câmpului Nume client existent în ambele. Acesta este cheie unica de identificare a înregistrarilor din tabela Clienti si cheie externa de legatura în tabela Facturi. Între aceste doua tabele exista o relatie de "multi la unu" ( ), adica toti clientii înscrisi pe facturi sunt înregistrati în mod unic în tabela Clienti ce contine clientii firmei.
Aceasta a treia forma normala (FN3) mai poate suferi o serie de rafinari pentru a obtine o structura performanta de tabele a bazei de date.
Observam ca Nume client este un câmp în care este înscris un text destul de lung format dintr-o succesiune de litere, semne speciale (punct, virgula), spatii si numere. Ordonarea si regasirea informatiilor dupa astfel de câmpuri este mai lenta si mai greoaie decât dupa câmpuri numerice. Vom introduce din acest motiv un câmp de identificare a clientilor numit Cod client care sa fie numeric si care sa fie cheia primara de identificare pentru fiecare client. Legatura între tabelele Clienti si Facturi se va face într-un mod mai performant prin acest câmp pastrându-se acelasi tip de relatie între cele doua tabele.
O alta observatie care poate fi facuta în legatura cu tabelele aflate în cea de-a treia forma normala este aceea ca Total valoare factura si Total valoare TVA sunt câmpuri care ar trebui sa contina informatii sintetice obtinute prin însumarea valorii tuturor produselor aflate pe o factura. Este de preferat ca astfel de câmpuri sa fie calculate în rapoarte sau interogari si nu sa fie memorate în tabelele bazei de date.
În urma aplicarii acestor rafinari obtinem o structura performanta a bazei de date, prezentata în continuare:
Tabela Facturi |
Tabela Clienti |
Tabela Linii facturi |
Tabela Produse |
|||
Serie_nr fact |
Cod client |
Serie_nr fact |
Cod produs |
|||
Cod client |
Nume client |
Cod produs |
Denumire produs |
|||
Data facturarii |
Adresa client |
Pret unitar |
Unitate de masura |
|||
Mijloc de transp |
Localitate client |
Cantitate | ||||
Delegat |
| |||||
CUI | ||||||
Cont client | ||||||
Banca client |
Odata ce am stabilit structura de tabele putem alege sistemul de gestiune a bazelor de date relationale (SGBD-ul) pe care sa-l folosim ca suport de stocare si 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 informatiile din baza de date.
În Access tabelele create pentru aplicatia de mai sus si relatiile dintre acestea se pot vedea în figura de mai jos:
|