Sunteți pe pagina 1din 64

CUPRINS

Introducere.................................................................................................1 I. Elemente de teoria bazelor de date...........................................................3


I.1. Modele de reprezentare a datelor.........................................................................3 I.2. Baze de date..........................................................................................................10 I.3. Arhitectura unei baze de date.............................................................................14 I.4. Protecia bazelor de date....................................................................................15 II. Sisteme de gestiune a bazelor de date..................................................................19 II.1. Arhitectura general a unui S.G.B.D................................................................19 II.2. Funciile unui SGBD..........................................................................................20 III. Proiectarea bazelor de date relaionale..............................................................23 III.1. Structura relaional a datelor........................................................................23 III.2. Normalizarea relaiilor.....................................................................................33 III.3. Metode de proiectare........................................................................................37

II. Prezentarea aplicaiei............................................................................42


III.4. Prezentare general..........................................................................................42 III.5. Interogarea bazei de date.................................................................................50 III.6. Interfaa aplicaiei.............................................................................................53

Concluzii...................................................................................................61 Bibliografie...............................................................................................63

Introducere
Proiectarea bazei de date este o munc de colectiv care armonizeaz cerinele i posibilitile beneficiarului, pe de o parte, i proiectantului de sistem, pe de alt parte. Baza de date este prima treapt spre o viziune sistemic, de ansamblu, unificatoare i generatoare de rezultate specifice, corecte n acelai timp. Vechiul sistem de proiectare a fost bazat pe fiiere. Limitele acestei concepii constau n separarea datelor, duplicarea datelor, dependena programului de concepia fiierului i incompatibilitatea formatelor de fiiere folosite n diverse limbaje. Aceste limitri implic pierdere de timp i spaiu i posibilitatea de inconsisten a datelor. Sistemul de baz de date - n opoziie cu vechiul sistem - d posibilitatea de a definii datele n afara programului i asigur controlul asupra manipulrii datelor. Baz de date este o colecie partajat de date legate logic, proiectat pentru a satisface necesitile unui sistem informatic. Deci datele sunt strnse ntr-o colecie unic i sunt folosite simultan de mai muli utilizatori. Redundana datelor este controlat prin normalizare, ceea ce implic o redundan minim. O astfel de baz de date are nevoie de un sistem de gestiune a bazei de date. Acesta este un sistem de programe care fac posibil definirea, ntreinerea i accesul controlat la baza de date. Un astfel de sistem trebuie s conin limbajul de definire i limbajul de manipulare a datelor. Putem aminti urmtoarele limbaje: SQL sau QBE (limbaje generale), respectiv DBASE, FOX PRO, PROGRESS, PARADOX, MICROSOFT ACCESS .a.m.d. (limbaje specifice). Cum se stabilete structura bazei de date? Tocmai prin proiectarea de care ne ocupm. n opoziie cu proiectarea bazei de date bazate pe fiiere, care pornea de la una sau mai multe aplicaii ale beneficiarului, proiectarea bazei de date se rezolv naintea elaborrii aplicaiei. De aceea aceast aciune devine esenial pentru tot sistemul. Proiectantul bazei de date trebuie s identifice datele relaionale, relaiile dintre ele i restriciile asupra lor. Proiectarea const din dou faze: unul logic i unul fizic. n timpul proiectrii logice este important implicarea viitorilor utilizatori n procesul de proiectare. n proiectarea fizic se decide cum va fi realizat practic modelul logic. Avantajele i dezavantajele sistemului de baze de date: Avantajele ar fi urmtoarele: controlul redundanei consistena datelor economia de spaiu pentru aceleai date controlul integritii datelor

utilizarea standardelor d posibilitatea rspunsului la cereri variate i cu exprimri parial necunoscute la momentul proiectrii. productivitate crescut concuren crescut posibiliti crescute de recuperare n caz de eroare. Dezavantaje: complexitate crescut costul SGBD cost crescut rezultat din cerine de hard costul trecerii de la un sistem la altul o eventual defeciune are un impact crescut, global.

I. Elemente de teoria bazelor de date


I.1. Modele de reprezentare a datelor

Prelucrarea datelor cu ajutorul calculatorului presupune folosirea unor modele de date, care modeleaz diferite obiecte i/sau procese reale sau abstracte. Pentru a putea defini un model de date trebuiesc precizate urmtoarele elemente: structura modelului; operatorii care acioneaz asupra structurilor de date folosite;

restriciile care se impun pentru meninerea corectitudinii datelor, restricii numite i reguli de integritate. Precizarea structurii modelului presupune descrierea tuturor obiectelor (entitilor) i a caracteristicilor asociate acestora. Acest lucru se realizeaz folosind urmtoarele elemente generice: cmpul; este cel mai mic element al structurii care poate fi accesat pentru prelucrare; grupul simplu sau compus; este un set format din mai multe cmpuri i/sau grupuri;

nregistrarea, care este un ansamblu de grupuri i cmpuri, constituind totodat i elementul generic al structurii. Stabilirea relaiilor ntre obiecte se face prin stabilirea relaiilor care exist ntre nregistrrile structurilor folosite la definirea modelului de date respectiv. Structura unui model de date fr valori reprezint un obiect generic. O colecie de date cu valori bine precizate i care respect un model definit reprezint o realizare sau o instan a tipului de obiect precizat. Legturile dintre obiecte (entiti) poart denumirea de asociere. Legturile dintre dou entiti pot fi de trei tipuri: legturi unu la unu . Aceasta nseamn c fiecare obiect are o legtur cu un alt obiect i numai cu unul. De exemplu, relaia dintre locurile existente ntr-un cmin studenesc i studeni. Un loc poate fi ocupat de un singur student, iar un student are dreptul la un singur loc n cmin. legturi unu la muli. n acest caz un obiect poate avea legturi (relaii) cu mai multe obiecte. De exemplu, un student poate face parte dintr-o singur grup dar o grup poate avea mai muli studeni. legturi de tipul muli la muli. Acest tip de legtur presupune c fiecare obiect poate avea multiple legturi (relaii) cu alte obiecte. Spre exemplu, un produs este cumprat de mai muli clieni i un client poate achiziiona 3

mai multe produse. Operatorii care acioneaz asupra structurilor de date constituie cel de-al doilea element al unui model de date. Aceti operatori pot fi de citire, memorare, modificare, jonciune etc. Regulile de integritate sunt restricii menite s asigure meninerea corectitudinii datelor. Ca exemple de astfel de restricii putem meniona: s nu se permit tergerea valorilor atributelor unui client dac acesta nu a achitat integral factura pentru cumprarea unui produs anume; s nu se permit memorarea valorilor asociate unui produs dac nu se cunoate valoarea unui anumit atribut caracteristic, numit atribut cheie. Modelele de date se mpart, n funcie de modul n care se definesc elementele amintite mai sus, n: modele ierarhice sau arborescente, modele reea, modele relaionale, modele orientate obiect etc. Modelul ierarhic Se bazeaz pe structuri de reprezentare arborescente i tipuri de relaii unu la unu i unu la mai maulti. Cu ajutorul acestui model, structura bazei de date poate fi reprezentat sub forma unui arbore cu un nod rdcina (trunchiul) i celelalte noduri (ramuri) conin coleciile de date. Legaturile ntre noduri reflecta relaiile de asociere ntre nregistrarile (set de date cu aceleai proprieti) coleciilor de date superioare i inferioare. Modelul ierarhic are urmtoarele caracteristici: accesul direct este posibil numai la nregistrrile din colecia de date rdcina: accesul la nregistrrile coleciilor de date inferioare se face prin specificarea tuturor coleciilor, care se gsesc pe drumul de la colecia rdcina pn la colecia cercetat: toate nregistrrile din coleciile bazei de date, cu excepia coleciei de date rdcina au cte o nregistrare superioar. Se definete astfel o relaie, care asigur consultarea nregistrrilor din coleciile de date de sus n jos i de la stnga spre dreapta (modul top-down).

Figura 1. Ierarhie de date

Modelul ierarhic are unele limite, n special la operaiile de actualizare (modificarea valorilor) a bazei de date, deoarece adugarea de nregistrri se poate face numai cu precizarea colectiei de date superioare (cu excepia coleciei de date rdcina), iar tergerea unei nregistrri, genereaz tergerea tuturor nregistrrilor subordonate. Folosete tipuri de nregistrri care grupeaz toate atributele unei entiti. Pentru a realiza asocierile dintre tipuri de nregistrri acest model folosete o structur de date arborescent (o ierarhie). Modelul reea Se bazeaz pe structura de reprezentare reea i tipuri de relaii unu la unu la unu, 1 la mai muli i mai muli la mai muli. O reea este formata din mai multe noduri legate ntre ele. n modelul reea al unei baze de date, fiecare nod reprezint o colecie de date, iar legturile reflect relaiile de asociere. Caracteristica principal este aceea c, accept ca oricare colecie de date s se situeze pe nivelul unu, prin indicarea explicit a relaiilor dintre acestea. n plus, accept existena temporar a nregistrrilor fr legturi cu alte nregistrri i permite reprezentarea unic a nregistrrilor n baza de date. Modelul reea este un model complex, dificil de folosit, ocup spaiu de memorie ineficient i dependenele din reea sunt puin clare, din cauza existenei mai multor relaii de subordonare.

Figura 2. Modelul reea

n acest model, datele sunt reprezentate asemntor cu modelul ierarhic, cu deosebirea c fiecare inferior poate avea mai muli superiori. Toate structurile de date, inclusiv legturile de tipul mai muli la mai muli sunt definite natural, fr a recurge la artificii. n cadrul acestui model ntlnim dou tipuri de structuri: -tipul de nregistrare ( care asigur atributele unei entiti); -tipul de set (care asigur legturile ntre tipurile de nregistrri). Modelul relaional Modelul relaional are la baz teoria matematic a relaiilor. El folosete o singur structur de date: relaia (tabelul) care este o submulime a produsului cartezian al unor domenii (un domeniu este reprezentat de o mulime de valori ale entitilor). Modelul relaional poate fi privit ca o mulime de tabele obinute prin metoda normalizrii. Normalizarea pleac de la o mulime de atribute (cmpuri de date) i o 5

mulime de dependene funcionale dintre atribute i conduce la o schem conceptual a modelului relaional ntr-o form normalizat n care se vor elimina anomaliile de actualizri.

Figura 3. Modelul relaional

La cele trei modele de date prezentate mai sus se adaug modelul orientat obiect, modelul distribuit i modelul funcional. Ordinea n care au fost prezentate modelele de date este cea istoric, n ultimii ani utilizndu-se practic numai modelul relaional sau cel distribuit, datorit avantajelor fa de celelalte modele. Modelul obiect Un model de date orientat pe obiecte are la baz noiunea de entitate conceptual i definete un obiect ca o colecie de proprieti care descriu entitatea. Principalele concepte care stau la baza unui model orientat pe obiecte sunt: obiectul, ncapsularea, persistena, clasa, tipul, motenirea, polimorfismul, identitatea i domeniul. Conceptual, un obiect reprezint o unitate identificabil i cu coninut propriu, care se deosebete de ceea ce o nconjoar. Obiectele sunt abstractizri ale entitilor lumii reale i se caracterizeaz prin stare i comportament. Starea unui obiect este exprimat prin valorile atributelor sale. Colecia de atribute aleas pentru un obiect trebuie s fie suficient pentru a descrie entitatea, adic trebuie s includ acele atribute pe care le cunosc utilizatorii. Comportamentul unui obiect reprezint un set de metode sau operaii care acioneaz asupra atributelor sale. Considernd, de exemplu obiectul AVION acesta poate avea ca atribute: viteza, anvergura, greutatea, culoarea, nlimea de zbor etc. Un obiect nglobeaz urmtoarele elemente: structura de date; specificarea operaiilor; implementarea operaiilor. Structura unui obiect i operaiile (metodele) permise pentru acel obiect sunt definite mpreun. 6

O metod reprezint o procedur ce manipuleaz obiectul sau indic starea sa i este totdeauna asociat unei clase. Metodele i atributele nu sunt vizibile din exteriorul obiectului. Un obiect comunic cu exteriorul prin intermediul mesajelor . Mesajele reprezint cereri adresate obiectului pentru a returna o valoare sau pentru a-i schimba starea. Obiectele pot fi simple sau compuse din alte obiecte. Un obiect compus poate avea ca atribute alte obiecte, formnd astfel o structur ierarhic. ncapsularea Structura obiectului i modul de aciune al metodelor sale nu pot fi accesate i actualizate direct de ctre un agent extern, dar pot fi modificate indirect prin intermediul mesajelor. Aceast caracteristic ascuns a strii obiectului este cunoscut sub numele de ncapsulare. Un obiect este astfel divizat n dou pri: o parte de interfa reprezentat de mesaje i o parte ascuns, de implementare, reprezentat de starea intern i de metodele obiectului. ncapsularea ascunde utilizatorului complexitatea unui obiect, oferindu-i n schimb o imagine funcional simplificat a acestuia, imagine care i permite s modeleze i s rezolve cu mai mult uurin problemele complexe. Persistena Aceasta este o proprietate a datelor sau a obiectelor care implic existena mai ndelungat a acestora fa de procesul care le-a creat. Este proprietatea prin care starea bazei de date asigur pstrarea unui proces pentru a fi refolosit ulterior n alt proces. Codul aferent metodelor, fiind parte integrant din obiect, este stocat, ca i starea obiectului, n baza de date. Aceasta nseamn c, odat ce a fost descris, o metod devine permanent, decongestionnd astfel aplicaia i asigurndu-i independena fa de date. O modificare adus unei metode devine imediat operant i persist pn la o nou modificare. Tipuri i clase Obiectele care au acelai fel de atribute i acelai comportament pot fi categorisite ca fcnd parte din acelai tip sau din aceeai clas. ntr-un sistem orientat pe obiecte, tipul sintetizeaz elementele comune ale unui set de obiecte cu aceleai caracteristici. Corespunde noiunii de tip abstract de date i are dou componente: interfaa; implementarea. Noiunea de clas, dei are aceeai specificaie cu cea de tip, este diferit de acesta, fiind mai mult asociat cu faza de execuie i presupune dou aspecte: generarea de obiecte; stocarea setului de obiecte care reprezint instanele clasei. O clas are o descriere ce const dintr-un set de structuri de date comune, 7

cunoscute ca variabile de instan, un protocol comun ce const dintr-un set de mesaje, la care instanele clasei vor rspunde i un set de metode pentru implementarea de operaii comune. Clasele sunt referite uneori ca tip de date abstracte. Descrierea clasei servete ca ablon dup care vor fi create noile obiecte. O clas este deci un tip abstract de date care definete att structura obiectelor din clasa respectiv, ct i mulimea metodelor existente pentru aceste obiecte. Ca urmare, obiectele din aceeai clas au aceleai atribute i aceleai metode i rspund la aceleai mesaje. Clasele sunt organizate ierarhic fiecare clas nou creat trebuind s fie obinut din alt clas deja existent. Dac nu exist nici o clas potrivit pentru definirea unei noi clase, aceasta va fi identificat ca o subclas a clasei generale sistem (metaclas). Orice subclas motenete structurile i metodele superclasei din care face parte. O clas poate crea noi instane ale obiectelor. Motenire ntr-o baz de date orientate pe obiecte, clasele sunt aranjate ntr-o ierarhie n care fiecare clas motenete toate atributele i metodele superclasei din care face parte. Motenirea este un concept puternic, care conduce la posibilitatea de reutilizare a codului. Prin motenire, o clas preia toate atributele i metodele clasei din care deriv adugnd la ele atributele i metodele proprii. Este de asemenea posibil ca o clas s aib mai mult dect o superclas. Acest lucru este cunoscut ca motenire multipl. Polimorfism Polimorfismul se refer la faptul c, la primirea unui mesaj, stabilirea metodei care se aplic se face n mod dinamic, n funcie de clasa obiectului n cauz. Astfel, instane ale unor clase diferite pot fi adresate uniform (primesc aceleai mesaje), dar manifest comportamente diferite. Acest fapt asigur manipularea simpl i coerent a seturilor eterogene de obiecte. Un alt tip de comportament polimorfic este asociat cu motenirea. Rspunsul unui obiect la un mesaj poate fi determinat de metodele motenite de la superclas. Motenirea multipl permite definirea unor forme complexe de comportament polimorfic care pot antrena uneori combinarea metodelor de la dou sau mai multe superclase. Identitatea Identitatea este un mijloc de a distinge un obiect de altul. Prin identitate se asigur i persistena datelor. Oricare din obiectele unei baze de date orientate pe obiecte are identitate care este independent de valorile atributelor sale. Spre deosebire de modelul relaional, care utilizeaz unicitatea cheii primare pentru a identifica obiectul, tehnologia orientat pe obiecte permite modificarea valorilor oricrui atribut fr a-i afecta identitatea. Mai mult chiar, obiectele au contiina de sine, adic se pot referi pe ele nsele prin intermediul pointerului SELF. Fiecare instan sau realizare a obiectului are un identificator de obiect intern, 8

repartizat lui i cunoscut ca ID obiect sau pointer. Acesta este independent de valorile atributelor sale. Fiind generat de sistem, identificatorul este unic i nu este accesibil utilizatorului. Modelul obiect-relaional mbinnd facilitile modelului orientat obiect (structuri de date complexe, motenire) cu cele ale modelului relaional (tabele bidimensionale, acces optimizat i concurent, standardizare etc.), modelul relaional-obiect (figura 2.7) pare a fi (deocamdat) soluia la dilema existent n domeniul bazelor de date: relaional sau orientat obiect. Modelul obiect-relaional constituie o extensie a modelului relaional. Principala mbuntire adus modelului relaional o constituie tipurile abstracte de date (TAD) care permit: - partajarea datelor; - utilizarea structurilor de date complexe; - ncapsularea; - motenirea. Tipurile abstracte de date (TAD) reprezint tipuri de date definite de utilizator, diferite de tipurile implicite (numeric, sir de caractere etc.), ce pot fi utilizate la definirea tabelelor. Deosebirea fundamental dintre un TAD i o clas const n faptul ca n timp ce clasa admite instanieri directe, un TAD servete numai ca model (template) la definirea structurii unuia sau mai multor tabele (partajarea TAD-lui) Modelul fizic al datelor Modelul fizic descrie structura sub care nregistrrile logice se regsesc efectiv pe suportul tehnic de date sau n memoria intern a calculatorului. Fiecare nregistrare logic este scris la o anumit adres fizic reprezentat prin cilindru, pist i sector (figura 4).

002.005.12

12 Ion 2000RON

002.005.12

13 Vasile 25000RON

Adrese fizice Cilindru, pist, sector

nregistrri logice

Figura 4. Modelul fizic al datelor

Metode de accesare a datelor Coleciile de date nregistrate pe memorii externe sunt accesate din diverse motive: pentru citirea unor nregistrri, pentru regsirea unor date, pentru ordonarea nregistrrilor dup anumite criterii etc. Accesarea datelor organizate n colecii de date se poate realiza prin dou metode: - Metoda secvenial Metoda indexat

Regsirea unei nregistrri prin metoda secvenial presupune parcurgerea n secven a coleciei de date, ncepnd cu prima nregistrare, pn la nregistrarea cutat (dac exist) sau pn la ultima nregistrare (dac nregistrarea cutat nu exist). Avantaje: - complexitate redus colecia de date nu se ncarc cu date suplimentare

Dezavantajul major l constituie viteza redus cu care este efectuat operaia pe colecii mari de date. Metoda indexat permite regsirea unei realizri (i implicit a nregistrrii corespunztoare) ntr-un timp mult mai redus decat metoda precedent. Aceasta varianta presupune utilixarea unui tabel de indeci pentru fiecare cmp ce va permite o astfel de cautare. Tabelele de indeci conin dou atribute: 1. realizrile ordonate (crescator/descrescator) ale cmpului de indexare 2. adresele fizice relative ale fiecrei realizri.

I.2.

Baze de date

Conceptul de baz de date a aprut n 1969 cu ocazia prezentrii primului raport CODASYL n cadrul unei conferine pe probleme de limbaje de gestiune a datelor. Evoluia metodelor i tehnicilor de organizare a datelor a fost determinat de necesitatea de a avea un acces ct mai rapid i uor la un volum din ce n ce mai mare de informaii precum i de perfecionarea echipamentelor de culegere, memorare, transmitere i prelucrare a datelor. Ideea principal a organizrii datelor n baze de date se sprijin pe existena unui fiier de descriere global a datelor prin care se realizeaz independena programelor fa de date i a datelor fa de programe.

10

Accesul oricrui utilizator la baza de date se realiza prin intermediul fiierului de descriere global a datelor. Fiierul de date coninea coleciile de date i legturile dintre ele. n esen, conceptul de baz de date poate fi definit ca fiind una sau mai multe colecii de date (Ki), aflate n interdependen, mpreun cu descrierea datelor i a relaiilor dintre ele, (B={K1, K2, ...}) Activitatea de organizare i prelucrare a datelor a avut o evoluie constant n timp n cadrul creia se disting mai multe etape, dup cum urmeaz: 1. n prima etap au fost adaptate tehnicile de organizare a datelor existente n sistemele cu prelucrare manual la cerinele tehnice impuse de utilizarea calculatoarelor electronice. n aceast etap datele sunt organizate, n principal, sub form de fiiere secveniale, organizare impus de utilizarea larg a benzilor magnetice n perioada respectiv. Acest mod de organizare are dezavantajul c implic o redundan crescut a datelor deoarece fiecare aplicaie are acces la anumite colecii de date, astfel c aceleai date pot fi stocate n fiiere separate, pentru fiecare aplicaie care necesit datele respective. 2. Etapa a doua este caracterizat de realizarea separrii ntre structura fizic i structura logic a datelor. Prin separarea structurii logice de structura fizic se asigura independena aplicaiilor att fa de modificrile privind modul de organizare a fiierelor(secveniale, secveniale-indexate, cu acces direct), ct i fa de modificarea suportului de memorie utilizat (band magnetic, disc magnetic, etc). 3. A treia etap este caracterizat de apariia fiierelor integrate. Reprezint eliminarea dezavantajelor de la primele doua etape, i anume: redundana datelor, absena legturilor logice ntre datele din grupuri diferite de fiiere, flexibilitatea redus a sistemului. Fiierele integrate reprezint sisteme complexe de organizare logic a datelor pe baza legturilor existente ntre date i mai puin pe baza prelucrrilor la care sunt supuse datele. 4. Etapa a patra corespunde apariiei bazelor de date propriu-zise. n aceast etap s-a realizat independena aplicaiilor fa de structura logic a datelor. O baz de date astfel definit trebuie s ndeplineasc urmtoarele condiii: s asigure o independen sporit a datelor fa de programe i invers; structura bazei de date trebuie astfel conceput nct s asigure informaiile necesare i suficiente pentru a satisface cerinele informaionale i de decizie ale utilizatorului; s asigure o redundan minim i controlat a datelor;

s permit accesul rapid la informaiile stocate n baz. Organizarea datelor pe memoria extern a parcurs in timp mai multe etape: fiiere, fiiere cu legturi i a culminat cu bazele de date actuale. O nregistrare fizic este o unitate de transfer ntre memoria intern i cea extern a calculatorului; ea poate conine una sau mai multe nregistrri logice. O nregistrare logic este unitatea de prelucrare din punct de vedere al programului utilizator. Structura sa este 11

dat de cmpuri (caracteristici) ce descriu o anumit realitate. Fiierul nu are descriere proprie: el este cunoscut de sistemul informatic numai prin descrierea care se face prin program. Organizarea i accesul la datele unui fiier sunt asigurate de un set de programe specializate, numit Sistem de Gestiune a Fiierelor (SGF), care face parte din sistemul de operare (SO). Dac un fiier este utilizat de ctre mai multe programe, fiecare program va include n componena sa elementele de descriere a datelor din fiier. Bazele de date sunt gestionate unitar prin programe dedicate, numite sisteme de gestiune a bazelor de date(SGBD). Baza de date se descrie independent de programele care folosesc datele. Descrierea vizeaz deopotriv structurile de date, legturile ntre acestea i regulile care s asigure coerena datelor. Descrierea datelor formeaz Dicionarul Datelor (DD), care se memoreaz mpreun cu BD. Etapele realizrii unei baze de date n proiectarea unei baze de date sunt prevzute mai multe etape: analiza sistemului sau a domeniului economic i a cerinelor informaionale asociate, pentru care se realizeaz baza de date; proiectarea structurii bazei de date, adic elaborarea schemei conceptuale externe i a schemei conceptuale interne; ncarcarea datelor n baza de date; exploatarea i ntreinerea bazei de date. Analiza sistemului economic presupune patru etape: a. analiza componentelor sistemului i a legturilor dintre acestea, sau analiza structural n urma creia rezult modelul structural sau static al sistemului; b. analiza strilor sistemului i a tranzaciilor posibile ntre aceste stri, n raport cu anumite evenimente. n urma acestei analize rezult modelul dinamic sau temporal; c. analiza cerinelor informaionale, n urma creia se obine modelul funcional sau transformaional al modelului economic; d. integrarea modelelor sistemului economic (structural, dinamic i funcional), n scopul corelrii i completrii lor. Tehnica diagramelor entitate-asociere Analiza sistemului economic are ca obiectiv evidenierea componentelor din cadrul sistemului pentru care urmeaz s se corecteze i s se memoreze n baza de date, precum i evidenierea legturilor dintre aceste componente. Tehnica diagramelor entitate-asociere permite construirea modelului structural sub forma unei diagrame entitate-asociere, prin parcurgerea urmtorilor pai: a. Identificarea componentelor (entitilor) din cadrul sistemului economic. Fiecare entitate prezint mai multe realizri. n urma acestei etape se elaboreaz o prim form a diagramei entitate-asociere. 12

b. Identificarea asocierilor dintre entiti i codificarea acestora. Legturile dintre entiti sunt reprezentate prin arce neorientate, care fac legtura ntre nodurile ce reprezint entitile participante la asociere. Tipul sau forma legturii se exprim cu ajutorul cardinalitii. Cardinalitatea asocierilor exprim numrul minim i numrul maxim de realizri (instane) de entitate, care pot fi asociate cu o realizare a partenerului de asociere. Cardinalitatea se exprim prin perechi de numere, cte o pereche pentru fiecare entitate din cadrul legturii. emit e

Banc

Credite

Figura 5. Diagrama entitate-asociere

c. Identificarea atributelor aferente entitilor i asocierile dintre entiti. d. Stabilirea atributelor de identificare a entitilor. Tipuri de legturi ntre entiti 1. Dup cardinalitatea asocierii. n acest caz, se are n vedere gradul asocierii i obligativitatea participrii entittilor la asociere: 2. Dup gradul asocierii (maximele cardinalitii), identificm: asociere de tip unu la unu asocieri de tip unu la muli asocieri de tip muli la muli 3. Dup obligativitatea participrii entitilor la asociere (minimele cardinalitii), exist: asocieri pariale asocieri totale 4. Concomitent, dup gradul asocierii i dup obligativitatea participant la asociere, sunt: asocieri pariale de tip unu la unu asocieri totale de tip unu la unu asocieri pariale de tip unu la muli asocieri totale de tip unu la muli asocieri pariale de tip muli la muli asocieri totale de tip muli la muli 5. Dup numrul de entiti distincte care particip la asociere: asocieri binare (ntre dou entiti distincte) asocieri recursive (asocieri ale entitilor cu ele nsele) asocieri complexe (ntre mai mult de dou entiti distincte) Asocierile pariale sunt acele asocieri care nu oblig participarea la asociere a tuturor entitilor vizate, ci numai a unora dintre e!e sau a nici uneia. Aceast obligativitate este reflectat de mimimele cardinalitii. Valoarea zero a uneia dintre minime arat lipsa de obligativitatea participrii partenerului la aceast asociere, n 13

timp ce o valoare mai mare dect zero exprim obligativitatea participrii la asociere. Tipuri de atribute Atributele exprim caracteristici ale componentelor domeniului economic analizat sau ale asocierilor dintre aceste componente. De obicei, atributele sunt asociate entitilor, dar ele pot descrie i asocierile dintre acestea. Atributele pot fi clasificate astfel: Atribut compus sau bloc, constituit din cel puin alte dou atribute. Valoarea sa este reprezentat de valorile atributelor componente; Atribut calculat sau dedus. Valoarea sa nu este cunoscut direct, ci calculat pe baza valorilor altor atribute; Atributul simplu este acel atribut care are valori atomice; Atributul repetitiv sau multivaloare. Este un atribut care la un moment dat are mai multe valori ce apar sub forma unor liste de valori. Un atribut de identificare se numete cheie dac se caracterizeaz prin unicitatea valorii sale pentru fiecare instan a entitii.

I.3.

Arhitectura unei baze de date

Arhitectura general a bazelor de date a fost standardizat internaional i cuprinde urmtoarele elemente componente: baza de date propriu-zis n care se memoreaz colecia de date; sistemul de gestiune al bazei de date, care este un ansamblu de programe ce realizeaz gestiunea i prelucrarea complex a datelor; un set de proceduri manuale i automate, precum i reglementrile administrative, destinate bunei funcionri a ntregului sistem;
un dicionar al bazei de date (metabaza de date)), ce conine informaii despre

date, structura acestora, elemente de descriere a semanticii, statistici, documentaie etc. echipamentele de calcul (hardware) utilizate (comune sau specializate); personalul implicat (categorii de utilizatori: finali sau de specialitate, analitiprogramatori, gestionari, operatori). Bazele de date sunt extrem de variate n funcie de criteriile de apreciere considerate. n continuare sunt prezentate cteva criterii de clasificare:

dup orientare: generalizate, specializate; dup modelul de date folosit: ierarhice, n reea, relaionale, orientate obiect; dup amploarea geografic: locale, distribuite;

dup limbajele utilizate: autonome (cu limbaje proprii), cu limbaj gazd, mixte. Componentele bazei de date pot fi structurate pe trei nivele, n funcie de clasa utilizatorilor implicai: 14

nivelul logic. Este dat de viziunea programatorului de aplicaii, care realizeaz programele de aplicaii pentru manipularea datelor i structura logic (subschema) corespunztoare descrierii datelor aplicaiei; nivelul conceptual (global). Este dat de viziunea administratorului bazei de date, care realizeaz structura conceptual (schema) corespunztoare descrierii bazei de date i administreaz componentele bazei de date pentru manipularea datelor; nivelul fizic. Este date de viziunea inginerului de sistem care realizeaz structura fizic corespunztoare descrierii datelor pe suportul fizic.

I.4.

Protecia bazelor de date

Protecia bazelor de date const dintr-un set de msuri umane i faciliti oferite de SGBD prin care se urmrete asigurarea integritii datelor, definit ca fiind corectitudinea datelor introduse i manipulate, i a securitii datelor, ce vizeaz interzicerea accesului la date pentru persoanele ce nu au competene n folosirea lor. Aceasta capt o importan deosebit n contextul extinderii folosirii configuraiilor cu numr mare de utilizatori i cu un volum mare de date de prelucrat. n ceea ce privete sfera de aciune a metodelor utilizate pentru protecia datelor, pot fi puse n eviden dou tendine: protecia mpotriva unor defecte sau erori accidentale i protecia complet care realizeaz n plus fa de prima i protecia contra unor aciuni voite. Teoretic, toate sistemele ar trebui s asigure protecia complet a datelor. n practic ns, costul proteciei, care crete pe msur ce sunt reduse posibilitile de apariie a unor erori i de violare a confidenialitii datelor, este cel care dicteaz complexitatea metodelor de protecie care vor fi utilizate. Aspectele proteciei bazelor de date ce vor fi prezentate mai jos se bazeaz pe presupunerea c protecia informaiei la nivelul sistemului de operare este asigurat.

Integritatea datelor

Corespunztor situaiilor care pot genera apariia unor date incorecte n baza de date, se disting trei aspecte ale asigurrii integritii datelor:
1. Asigurarea integritii semantice a datelor - presupune prevenirea introducerii unor date incorecte i a efecturii unor prelucrri greite. Dac acest lucru nu va fi mpiedicat sau semnalat imediat, datele vor fi utilizate n alte prelucrri, declanndu-se astfel un proces necontrolat de alterare a bazei de date. Cu ct sesizarea unei erori are loc dup o perioad mai mare, cu att efectele ei vor fi mai greu de controlat.

Controlul accesului concurent la date - presupune prevenirea obinerii unor rezultate incorecte din execuia concurent (simultan) a unor prelucrri n regim multiutilizator. O alt problem care poate apare la prelucrarea concurent este dat de interblocare. Aceasta nseamn c dou tranzacii blocheaz anumite resurse, apoi solicit fiecare resursele blocate de cealalt.
2.

15

Salvarea i restaurarea bazei de date. Au ca scop readucerea datelor la o form consistent n urma unor evenimente care au alterat corectitudinea lor precum:
3.

funcionarea anormal sau o cdere a SGBD sau a sistemului de operare; defeciune fizic a suportului fizic pe care este memorat baza de date. n primul caz, prin ntreruperea tranzaciilor active n momentul respectiv, baza de date va rmne ntr-o stare de inconsisten. n cel de-al doilea caz, suportul pe care rezid baza de date va fi inutilizabil, deci toate datele se vor pierde. Pentru restaurarea bazei de date este necesar existena unor informaii despre derularea tranzaciilor pn n momentul ntreruperii lucrului i aplicarea, dup caz a uneia din urmtoarele tehnici de restaurare de baz:
derularea napoi a tranzaciilor (ROLLBACK) - care presupune anularea

modificrilor efectuate de acestea asupra bazei de date;

date (ROLLFORWARD) - care presupune efectuarea acelor transformri prin care baza de date restaurat s conin rezultatele acestora. Se observ deci c tranzacia poate fi considerat unitatea de restaurare, n sensul c baza de date restaurat trebuie, fie s reflecte rezultatele finale ale tranzaciilor, fie s nu fie afectat de acestea. Procesul de restaurare utilizeaz o serie de infromaii obinute prin aplicarea unei anumite strategii de salvare. Datele salvate pot fi diferite combinaii ntre:

derularea nainte a tranzaciilor completate dar nereflectate n baza de

copii ale bazei de date i copii ale jurnalelor acesteia; jurnale ale tranzaciilor;

jurnale ale imaginii nregistrrilor din baza de date. Copiile bazei de date pot fi realizate automat de ctre sistem la anumite intervale de timp, sau la comanda administratorului bazei de date, ori de cte ori este nevoie, de preferat pe suporturi magnetice diferite de cele pe care este stocat baza de date. n cazul unei deteriorri a suportului magnetic care pstreaz baza de date, acesta este singura posibilitate de recuperare a bazei de date. Jurnalul tranzaciilor este un fiier special, ntreinut de SGBD, n care sunt memorate informaii despre tranzaciile efectuate asupra bazei de date, cum sunt: identificatorul sau codul tranzaciei; momentul nceperii execuiei tranzaciei;

numrul terminalului sau identificatorul utilizatorului care a iniiat tranzacia; datele introduse; nregistrrile modificate i tipul modificrii. Pe baza lui va putea fi stabilit ulterior succesiunea corect i natura prelucrrilor efectuate n intervalul de timp pentru care trebuie s se sigure restaurarea bazei de date. 16

Jurnalul imaginilor se deosebete de jurnalul tranzaciilor prin aceea c el nu

conine descrierea operaiilor efectuate asupra bazei de date ci efectul acestora. Poate mbrca una din urmroarele forme: jurnalul cu imaginea nregistrrilor dup modificare (after image) - va conine copia fiecrei nregistrri ce este modificat, n forma rezultat dup modificare; jurnalul cu imaginea nregistrrilor naintea unei modificri (before image) - va conine copia fiecrei nregistrri ce este modificat, n forma iniial, anterioar efecturii modificrii; jurnalul care conine att imaginea nregistrrilor inainte ct i dup modificare. Restaurarea bazei de date se poate face automat sau manual. Securitatea bazei de date Asigurarea securitii bazei de date presupune interzicerea accesului neautorizat la date. Aceasta se realizeaz cu ajutorul unui set de msuri de protecie umane, software i hardware. O prim astfel de msur o poate constitui izolarea sistemului de calcul n ncperi n care accesul persoanelor s fie permis pe baz de legitimaii sau a altor forme de identificare. Un alt nivel de protecie l poate constitui stabilirea de parole pe baza crora s fie permis accesul la resursele sistemului de calcul. n timpul lucrului efectiv cu baza de date se va verifica dac utilizatorul are dreptul de a executa un tip de operaie asupra anumitor date. SGBD poate ine i un jurnal pentru urmrirea accesului la baza de date, pe baza cruia pot fi depistate ncercrile de acces neautorizat la baza de date. Pentru cererile de intrare/ieire transmise sistemului de operare de ctre SGBD sunt posibile verificri suplimentare referitoare la utilizarea corect a fiierelor sau a funciilor sistemului de operare. Hardware-ul poate s ofere o protecie suplimentar, ca de exemplu transferarea datelor numai n zona de memorie controlat de SGBD. De asemenea, datele pot fi memorate pe suportul extern ntr-o form criptat. n continuare vor fi prezentate urmtoarele mecanisme de asigurare a securitii datelor din baza de date: 1. Autorizarea i controlul accesului la date presupune identificarea utilizatorilor, restricionarea accesului acestora la date precum i restricionarea operaiilor ce pot fi executate asupra datelor accesate. Cea mai mare parte a SGBD-urilor actuale folosesc pentru identificarea utilizatorilor parole. Fiecare parol va fi asociat cu anumite drepturi de acces la date, ea nefind dect un prim obstacol pentru cei care ncearc s violeze securitatea bazei de date. Astfel, pentru fiecare utilizator identificat prin parol, SGBD menine o list a privilegiilor acestuia. De asemenea, utilizatorii pot fi asociai unor grupuri de utilizatori, la drepturile fiecruie dugndu-se drepturile stabilite pentru grupul 17

respectiv. Privilegiile unui utilizator depind astfel de clasa de utilizatori creia i aparine. Din acest punct de vedere, utilizatorii se mpart n: administratorul bazei de date care are toate drepturile asupra acesteia, utilizatori proprietari de obiecte (tabele, viziuni, proceduri), un obiect fiind ntotdeauna n proprietatea celui care-l creeaz, i utilizatorii obinuii, care nu au n proprietate obecte i nu au alte privilegii dect cele motenite ca membrii ai unui grup sau menionate explicit de administratorul bazei de date. 2. Definirea i utilizarea viziunilor. Viziunile (schemele externe) sunt partiii logice ale bazei de date. Ele sunt definite pentru diferii utilizatori n raport cu necesitile acestora de a avea acces la date, putnd fi utilizate pentru a restriciona accesul la date. Privilegiile pentru o viziune sunt specificate independent de cele pentru obiectele pe baza creia este definit. Securitatea datelor este asigurat prin definirea tuturor drepturilor necesare unui utilizator pentru o viziune i revocarea drepturilor pentru obiectele iniiale. Aceast modalitate este suficient n cazul n care asupra datelor viziunii este permis doar operaia de citire. Pentru operaia de modificare trebuiesc avute n vedere efectele laterale pe care aceasta le poate produce asupra obiectelor iniiale. Utilizatorului nu trebuie s i se permit s efectueze asupra viziunii acele operaii care pot afecta obiectele iniiale. n caz contrar, pot s apar erori sau inconsistene n baza de date. 3. Realizarea de proceduri speciale. Unele SGBD ofer facilitatea definirii unor proceduri ce vor fi pstrate la nivelul sistemului ntr-o form precompilat. n cadrul acestor proceduri vor fi specificate explicit operaiile ce trebuie efectuate asupra datelor. Utilizatorului i se va acorda dreptul de execuie a acestor proceduri i i se va interzice accesul direct la obiectele bazei de date gestionate de procedur. 4. Criptarea datelor este operaia de codifcare a datelor n timpul stocrii sau al transportului, astfel nct descifrarea lor s poat fi fcut numai de posesorii de cod. La nivelul SGBD aceast facilitate poate mbrca dou forme: existena unor rutine speciale care realizeaz criptarea datelor la cerere sau automat; existena unor instrumente de criptare care permit utilizatorului s-i realizeze propriile rutine de criptare. Procesul efectiv de criptare presupune folosirea unui sistem de cifrare, ale crui componente sunt: 1. Algoritmul de criptare - realizeaz transformarea datelor din forma iniial n forma criptat (cifrat). 2. Cheia de criptare - valoare ce constituie o intrare a algoritmului de criptare, aleas dintr-o mulime de chei posibile. 3. Algoritmul de decriptare - realizeaz transformarea datelor din forma criptat n forma iniial. 4. Cheia de decriptare - valoare ce constituie o intrare n algoritmul de decriptare, dependent de cheia de criptare.

18

II. Sisteme de gestiune a bazelor de date

II.1. Arhitectura general a unui S.G.B.D.


Sistemul de gestiune a bazelor de date (SGBD) este un ansamblu complex de programe care asigur interfaa ntre o baz de date i utilizatorii acesteia, adic este mecanismul prin intermediul cruia acetia au acces la date. SGBD-ul reprezint ansamblul de programe care permite crearea bazei de date i manevrarea informaiilor n interiorul acesteia [3]. Unui SGBD i revin o serie de obiective de ndeplinit pentru ca s poat asigura minimizarea costului de prelucrarea a datelor, reducerea timpului de rspuns, realizarea unei mai mari flexibiliti i deschideri pentru aplicaii i, n acelai timp, protejarea ridicat a datelor. Aceste obiective sunt descrise mai jos [3, 6, 14]. 1. Asigurarea independenei datelor. Aceasta presupune c modificarea strategiei de memorare a datelor sau a strategiei de acces la date nu trebuie s afecteze aplicaia care prelucreaz aceste date. Independena datelor trebuie privit din dou puncte de vedere: independena fizic i independena logic a datelor. Independena fizic a datelor implic modificarea tehnicilor fizice de memorare a datelor fr a necesita rescrierea programelor de aplicaie. Independena logic a datelor se refer la posibilitatea adugrii de noi articole de date sau extinderea structurii conceptuale (globale), fr ca aceasta s impun rescrierea programelor existente. 2. Asigurarea unei redundane minime i controlate a datelor din baza de date. Redundana se refer la numrul de apariii n baza de date a unei date. n general, stocarea datelor n baze de date ar trebui s se fac astfel nct fiecare dat s apar o singur dat. Totui, exist cazuri n care, pentru a reduce timpul de cutare al unei date i implicit timpul de rspuns la solicitrile utilizatorilor, se accept o anumit redundan a datelor. Aceast redundan trebuie controlat automat, prin program, pentru a se asigura coerena datelor din baz. 3. Asigurarea unor faciliti sporite de utilizare a datelor. Aceasta presupune: folosirea datelor de ctre mai muli utilizatori n diferite aplicaii; accesul ct mai simplu al utilizatorilor la date, fr ca acetia s fie nevoii s cunoasc structura ntregii baze de date, acest lucru rmnnd n sarcina administratorului bazei de date; existena unor limbaje performante de regsire a datelor, care permit exprimarea sub forma unei conversaii, a unor criterii de selecie a 19

datelor i indicarea unor reguli ct mai generale pentru editarea informaiilor solicitate; utilizarea unui limbaj ct mai apropiat de limbajul natural, cu posibilitatea exploatrii bazei de date n regim conversaional, lucru care ar oferi posibilitatea exploatrii bazei de date i de ctre utilizatori neinformaticieni. 4. Sporirea gradului de securitate a datelor mpotriva accesului neautorizat la ele. n condiiile bazelor de date, administratorul bazei de date poate prevedea ca accesul la baza de date s se fac numai prin canalele corespunztoare, i poate, totodat, defini verificri de autorizare, realizate oricnd se ncearc accesul neautorizat la anumite date. 5. Asigurarea integritii datelor mpotriva unor tergeri intenionate sau neintenionate, prin intermediul unor proceduri de validare, a unor protocoale de control concurent i a unor proceduri de refacere a bazei de date dup incidente. 6. Asigurarea partajabilitii datelor. Partajabilitatea datelor trebuie neleas nu numai sub aspectul asigurrii accesului mai multor utilizatori la aceleai date, ci i din acela al posibilitii dezvoltrii unor aplicaii fr a se modifica structura bazei de date. 7. Legturile ntre date. Legturile ntre date corespund asocierilor care se pot realiza ntre obiectele unei aplicaii informatice. Orice SGBD trebuie s permit definirea i descrierea structurii de date, precum i a legturilor dintre acestea, conform unui model de date. Fiecare tip de model de date permite anumite legturi ntre date. Un SGBD, care implementeaz un anumit model de date, va trebui s asigure i realizarea legturilor dintre datele corespunztoare n conformitate cu schema conceptual. 8. Performanele globale. Performanele globale ale aplicaiei sunt influenate de SGBD. Acesta trebuie s gestioneze un volum mare de date de o complexitate ridicat, ntr-un anumit timp de acces rezonabil pentru diferii utilizatori. Pentru toate aceste lucruri SGBD-ul folosete diferite metode de acces, tehnici de optimizare, tipuri de date. Implementarea lor se face n componente specializate ale SGBD-ului. Sistemele de gestiune a bazelor de date au o multitudine de sarcini de ndeplinit. Grupnd aceste sarcini se obin activitile i apoi funciile sistemului de gestiune al bazei de date. innd seama de complexitatea sistemului de gestiune, de facilitile oferite, de limbajele utilizate i tipul bazei de date ce urmeaz a fi gestionat gruparea activitilor pe funcii poate avea un caracter relativ.

II.2. Funciile unui SGBD


n continuare sunt prezentate cteva funcii mai importante ale sistemelor de gestiune a bazelor de date, funcii cu caracter de generalitate, valabile pentru toate tipurile de sisteme de gestiune a bazelor de date [3, 6, 14]. 20

1. Funcia de descriere a datelor permite definirea structurii bazei de date cu ajutorul unui limbaj de definire a datelor (LDD). Definirea datelor poate fi realizat la nivel logic, conceptual i fizic. La nivelul acestei funcii se descriu multitudinea atributelor (cmpurilor) din cadrul structurii bazei de date, legturile dintre entitile bazei de date sau dintre atributele aceleiai entiti, se definesc eventualele criterii de validare a datelor, metodele de acces la date, aspectele referitoare la asigurarea integritii i confidenialitii datelor etc. Aceast funcie a fost mult automatizat n timp, LDD avnd acum puine comenzi. LDD este specific fiecrui SGBD, dar el ntotdeauna realizeaz descrierea datelor conform elementelor modelului de date pe care l implementeaz SGBD-ul respectiv. Astfel se realizeaz definirea i descrierea entitilor i a caracteristicilor lor, definirea legturilor dintre obiecte (asocierile) i a regulilor de integritate specifice modelului de date. 2. Funcia de manipulare a datelor este cea mai complex funcie i realizeaz urmtoarele activiti: ncrcarea bazei de date, actualizarea, prelucrarea i regsirea datelor. ncrcarea datelor n baza de date se realizeaz prin operaii automatizate sau programate ce asigur i criteriile de validare necesare. Actualizarea bazei de date const n operaii de adugare, modificare i tergere de nregistrri. La operaiile de adugare i modificare se pstreaz aceleai criterii de validare care s-au folosit i la activitatea de ncrcare a datelor. Prelucrarea datelor se realizeaz prin operaii de selecie, ordonare, interclasare (compunere) i ventilare (descompunere) efectuate asupra entitilor bazei de date. Acestea sunt, de obicei, operaii pregtitoare activitii de regsire a datelor. Regsirea datelor const n operaii de vizualizare, rsfoire, editarea unor situaii de ieire. 3. Funcia de utilizare asigur mulimea interfeelor necesare pentru comunicarea tuturor utilizatorilor cu baza de date. n cadrul realizrii acestei funcii apar mai multe categorii de utilizatori: utilizatori liberi sau conversaionali. Acetia reprezint categoria beneficiarilor de informaii (utilizatori finali) care utilizeaz limbajele de interogare a bazei de date ntr-o form simplist. Ei apar ca utilizatori neinformaticieni. utilizatori specialiti n informatic creeaz structura bazei de date i realizeaz proceduri complexe de exploatare a bazei de date. SGBD-ul ofer acestor utilizatori limbajul de descriere i limbajul de manipulare a datelor precum i interfee cu limbaje universale. Acestea sunt de complexitate i putere diferit, de la un SGBD la altul, oferind att elemente neprocedurale ct i procedurale specialistului n informatic.
administratorul bazei de date, care este un utilizator special avnd un rol hotrtor n ceea ce privete funcionarea optim a ntregului ansamblu.

21

4. Funcia de administrare a bazei de date. Aceasta apare ca o funcie complex i are ca obiectiv asigurarea instrumentelor necesare administratorului bazei de date pentru a putea realiza o administrare eficient a bazei de date. Dintre aceste instrumente se pot meniona mecanismele de restricionare a accesului la date pentru fiecare utilizator, aplicaiile care asigur realizarea automat a copiilor de siguran ale bazei de date, instrumentele de compactare a bazei de date, jurnalele tranzaciilor pentru eliminarea efectelor cderilor soft sau hard aprute n sistem.

22

III. Proiectarea bazelor de date relaionale


III.1. Structura relaional a datelor
Ideea bazelor de date relaionale a fost lansat pentru prima dat de ctre D. F. Childs care a subliniat faptul c orice structur de date poate fi reprezentat printruna sau mai multe tabele de date, n cadrul crora este necesar s existe i informaii de legtur, pentru a se asigura legturile ntre tabele. Bazele modelului de date relaional au fost puse de ctre Codd E.F., n 1970 care are meritul de a fi articulat i dezvoltat ideile cu privire la utilizarea teoriei apartenenei la ansambluri sub forma unui model coerent de structurare a datelor - modelul relaional. Structura relaional a datelor nseamn c, n bazele de date relaionale, datele sunt organizate sub forma unor tablouri bidimensionale (tabele) de date, numite relaii. Asocierile dintre relaii se reprezint explicit prin atribute de legtur. Aceste atribute figureaz ntr-una din relaiile implicate n asociere (de regul, n cazul legturilor de tip unu la muli) sau sunt plasate ntr-o relaie distinct, construit special pentru exprimarea legturilor ntre relaii (n cazul legturilor de tip muli la muli). O baz de date relaional (BDR) reprezint un ansamblu de relaii, prin care se reprezint att datele ct i legturile dintre date. Pentru a defini structura relaional a datelor trebuie s definim noiunile de: domeniu, relaie, atribut i schem a unei relaii. Domeniul reprezint un ansamblu de valori, caracterizat printr-un nume. Un domeniu se poate defini explicit, prin enumerarea tuturor valorilor aparinnd acestuia sau implicit, prin precizarea proprietilor pe care le au valorile domeniului respectiv. Spre exemplu s consider urmtoarele domenii D1, D2, D3, definite astfel: D1 : {F,M} D2 : { x | x N , x [ 0,100] } D3 : {s | s = ir de caractere } Domeniul D1 este definit explicit n timp ce domeniile D2 i D3 sunt definite implicit. Pentru un ansamblu de domenii D1, D2, ..., Dn produsul cartezian al acestora reprezint ansamblul tuplurilor <v1, v2, ..., vn>, unde vi este o valoare aparinnd domeniului Di. De exemplu, tuplurile <Maria, F, 45>, <Vasile, M, 24> aparin produsului cartezian: D3xD1xD2. Relaia reprezint un subansamblu al produsului cartezian al mai multor domenii, subansamblu caracterizat printr-un nume i care conine doar tupluri cu semnificaie. Considernd, de exemplu c pentru produsul cartezian definit mai sus se cunosc doar dou persoane, definim relaia R prin tuplurile care descriu aceste persoane: 23

R : {<Ion, M, 30>, <Maria, F, 20>} ntr-o relaie, tuplurile trebuie s fie distincte ( nu se admit duplicri ale tuplurilor ). O reprezentare comod a relaiei este tabelul bidimensional (tabela de date), n care liniile reprezint tuplurile, iar coloanele corespund domeniilor . R: D3 Ion Maria D1 M F D2 30 20

Figura 6. Reprezentare a tabelului bidimensional

n prezentarea conceptului de relaie se poate recurge la analogii cu alte concepte, extrem de bine cunoscute n domeniul prelucrrii automate a datelor, precum este conceptul de fiier. Relaia poate avea semnificaia unui fiier, tuplul poate fi considerat drept o nregistrare, iar valorile din cadrul tuplului pot fi interpretate drept valori ale cmpurilor nregistrrii. n cadrul modelului relaional nu intereseaz dect relaiile finite, chiar dac la construirea relaiilor se admit domenii infinite. Numrul tuplurilor dintr-o relaie reprezint cardinalul relaiei, n timp ce numrul valorilor dintr-un tuplu definete gradul relaiei. Atributul reprezint coloana unei tabele de date, caracterizat printr-un nume. Numele coloanei (atributului) exprim de obicei semnificaia valorilor din cadrul coloanei respective. Atributele se folosesc pentru a conferi flexibilitate datelor. Pentru a nelege aceast problem vom considera urmtorul exemplu. S presupunem c pentru o persoan dispunem de urmtoarele date: nume, sex, vrst i numele soului/soiei. O posibilitate de organizare a acestor date este reprezentat de relaia din figura urmtoare: PERS: D3 Ion Maria M F 30 20 Vasile Maria D1 D2 D3

Figura 7. Model de organizare a datelor

24

Relaia PERS reprezint un subansamblu al produsului cartezian: D3 x D1 x D2 x D3. Semnificaia valorilor din cadrul unui tuplu se stabilete n acest caz nu numai pe baza domeniului de care aparin valorile, ci i n funcie de poziia ocupat n cadrul tuplului. Dependena fa de ordine a datelor nseamn o reducere a flexibilitii organizrii datelor. ntr-o organizare eficient, flexibil, ordinea liniilor i a coloanelor din cadrul tabelei de date nu trebuie s prezinte nici o importan. Pentru a diferenia coloanele care conin valori ale aceluiai domeniu i a elimina astfel dependena de poziie n cadrul tabelei se asociaz fiecrei coloane un nume distinct, lucru care a dus la apariia noiunii de atribut. Prin folosirea atributelor, relaia PERS poate fi prezentat ntr-unul din modurile menionate mai jos.
PERS: Nume (D3) PERS: Sex

Vrsta (D2) 30 20

Sot(D3)

Nume(D3)

Sot(D3)

Sex (D1)

Vrsta (D2) 20 30

(D1) M F

Ion Maria

Ion Maria

Ion Maria

Maria Ion

F M

Figura 8. Diferenierea coloanelor prin folosirea de atribute

Prin schema unei relaii se nelege numele relaiei, urmat de lista atributelor, pentru fiecare atribut precizndu-se domeniul asociat. Astfel, pentru o relaie R, cu atributele A1, A2, ..., An i domeniile D1, D2, ..., Dm, schema relaiei R poate fi reprezentat ntr-una din formele prezentate n figura de mai jos. R (A1:D1, A2:D2, ..., An:Dm) sau R: A1:D1 A2:D2 .. . An:Dm

Schema unei relaii se mai numete i intensia relaiei, ca expresie a proprietilor comune i invariante ale tuplurilor care compun relaia. 25

Spre deosebire de intensie, extensia unei relaii reprezint ansamblul tuplurilor care compun la un moment dat relaia, ansamblu care este variabil n timp. De obicei, extensia unei relaii este stocat fizic n spaiul asociat bazei de date, caz n care relaia poart numele de relaie de baz. Exist ns i situaii n care extensia nu este memorat n baza de date. Este cazul aa-numitelor relaii virtuale, cunoscute i sub numele de relaii derivate sau viziuni. Relaia virtual nu este definit explicit ca relaie de baz, prin ansamblul tuplurilor componente, ci implicit, pe baza altor relaii, prin intermediul unei expresii relaionale. Stabilirea efectiv a tuplurilor care compun relaia virtual se realizeaz prin evaluarea expresiei, ori de cte ori utilizatorul invoc aceast relaie. Operatorii modelului relaional. Acetia definesc operaiile care se pot executa asupra relaiilor, n scopul realizrii funciilor de prelucrare asupra bazei de date, respectiv consultarea, inserarea, modificarea i tergerea datelor. Modelul de date relaional ofer dou colecii de operatori pentru operaii cu relaii i anume: algebra relaional; calculul relaional. Algebra relaional (AR) se poate defini ca o colecie de operaii pe relaii, fiecare operaie avnd drept operanzi una sau mai multe relaii i producnd ca rezultat o alt relaie. Operaiile algebrei relaionale se pot mpri n: operaii de baz, precum: reuniunea, diferena, produsul cartezian etc. operaii derivate, ca: intersecia, diviziunea etc. Algebra relaional standard, definit de Codd, este constituit din 6 operaii de baz: reuniunea, diferena, produsul cartezian, proiecia, selecia i jonciunea precum i din dou operaii derivate: intersecia i diviziunea. Ulterior, la operaiile AR standard au fost adugate i alte operaii, aa numitele operaii adiionale sau extensii ale AR standard, precum: complementarea unei relaii, splitarea (spargerea) unei relaii, nchiderea tranzitiv etc. n general, operaiile AR pot fi grupate n: operaii tradiionale pe mulimi (reuniunea, intersecia, diferena, produsul cartezian);

operaii relaionale speciale (selecia, proiecia, jonciunea etc.). n continuare sunt prezentate principalele operaii ale algebrei relaionale, precum i modul lor de utilizare. 1. Reuniunea. Reprezint o operaie a algebrei relaionale definit pe dou relaii: R1 i R2, ambele cu aceeai schem, operaie care const din construirea unei noi relaii R3, cu o schem identic cu R1 i R2 i avnd drept extensie tuplurile din R1 i R2, luate mpreun o singur dat. 26

Reuniunea se noteaz uzual cu: OR (R1,R2) APPEND (R1,R2) UNION (R1,R2)


n figura urmtoare este prezentat un exemplu de reuniune a dou relaii ORAE i MUNICIPII, formnd astfel o a treia relaie, LOCALITI.

Figura 9. Exemplu de reuniune a dou relaii [2]

2. Diferena. Reprezint o operaie a algebrei relauionale construit pe dou relaii: R1 i R2, ambele cu o aceeai schem, operaie care const din construirea unei noi relaii R3, cu schema identic cu a operanzilor i cu extensia format din acele tupluri ale relaiei R1 care nu se regsesc i n relaia R2. Notaiile uzuale pentru operaia de diferen a dou relaii sunt: R1-R2 REMOVE (R1,R2) MINUS (R1,R2) Un exemplu de diferen a dou relaii este dat n figura 10.

Figura 10. Exemplu de diferen a dou relaii [2]

3. Produs cartezian. Reprezint o operaie a algebrei relaionale definit pe dou relaii: R1 i R2, operaie care const din construirea unei noi relaii R3, a crei schem se obine prin concatenarea schemelor relaiilor R1 i R2 i a crei extensie cuprinde toate combinaiile tuplurilor din R1 cu cele din R3.

27

Notaiile uzuale pentru desemnarea operaiei sunt: R1 x R2 PRODUCT (R1,R2) TIMES (R1,R2) n figura 11 este prezentat un exemplu de produs cartezian a dou relaii.

Figura 11. Exemplu de produs cartezian [2] 4. Proiecia. Reprezint o operaie din algebra relaional definit asupra unei relaii R, operaie care const din construirea unei noi relaii P, n care se regsesc numai acele atribute din R specificate explicit n cadrul operaiei. Suprimarea unor atribute din R nseamn efectuarea unor tieturi verticale asupra lui R, care pot avea ca efect apariia unor tupluri duplicate ce se cer a fi eliminate. Prin proiecie se trece de la o relaie de grad n la o relaie de grad p, mai mic dect cel iniial, adic de la un spaiu cu n dimensiuni la un spaiu cu mai puine dimensiuni, ceea ce explic i numele de proiecie atribuit operaiei. Notaiile uzuale pentru operaia de proiecie: Ai , A j ,..., Am ( R )

R [ Ai, Aj, ..., Am ] PROJECT(R, Aj, Aj, ..., Am)

28

Figura 12. Proiecia relaiei Orae pe atributul Jude [2]

n figura de mai sus este prezentat proiecia relaiei ORAE pe atributul JUDE. 5. Selecia reprezint o operaie din algebra relaional definit asupra unei relaii R, operaie care const din construirea unei relaii S, a crei schem este identic cu cea a relaiei R i a crei extensie este constituit din acele tupluri din R care satisfac o condiie menionat explicit n cadrul operaiei. ntruct cel mai adesea, nu toate tuplurile din R satisfac aceast condiie, selecia nseamn efectuarea unor tieturi orizontale asupra relaiei R, adic eliminarea de tupluri. Condiia precizat n cadrul operaiei de selecie este n general de forma: atribut operator de comparaie valoare

unde: <operator de comparaie> poate fi: <, <=, >=, > sau #. Notaiile folosite pentru desemnarea operaiei de selecie sunt urmtoarele:
conditie (R ) R [condiie] RESTRICT(R, condiie).

6. Jonciunea (Joinul) reprezint o operaie din algebra relaional definit pe dou relaii: R1 i R2, operaie care const din construirea unei noi relaii R3, prin concatenarea unor tupluri din R1 cu tupluri din R2. Se concateneaz acele tupluri din R1 i R2 care satisfac o anumit condiie, specificat explicit n cadrul operaiei. Extensia relaiei R3 va conine deci combinaiile acelor tupluri care satisfac condiia de concatenare. Notaiile uzuale pentru desemnarea operaiei de jonciune sunt: R1 R2 29

condiie JOIN (R1, R2, condiie) 7. Intersecia reprezint o operaie din AR definit pe dou relaii: R1 i R2, ambele cu aceeai schem, operaie care const din construirea unei noi relaii R 3, cu schema identic cu a relaiilor R1 i R2 i cu extensia format din tuplurile comune lui R1 i R2. Notaiile uzuale pentru operaia de intersecie sunt:
R1 R 2

INTERSECT (R1, R2) AND (R1, R2). 8. Diviziunea reprezint o operaie din AR definit asupra unei relaii R din care se obine, cu ajutorul altei relaii P, relaia Q a crei extensie este format din atributele din R care rmn dup eliminarea atributelor relaiei P. Notaiile folosite pentru operaia de diviziune sunt: DIVISION(R,r). Restriciile de integritate ale modelului relaional.
Permit definirea strilor coerente ale bazei de date. Rr

n comparaie cu modelele ierarhice i n reea, modelul relaional prezint o serie de avantaje, precum [10]: Asigurarea unui grad sporit de independen a programelor de aplicaie fa de modul de reprezentare intern a datelor i metodele de acces la date. n precizarea prelucrrilor asupra datelor, programele de aplicaie nu fac apel la pointeri, fiiere inverse sau alte elemente ale schemei interne a bazei de date. n ceea ce privete independena logic, aceasta nu este complet rezolvat nici cu ajutorul modelului relaional. O deficien a modelului relaional este aceea c nu permite modelarea comportamentului dinamic al datelor, ceea ce face ca o mare parte din semantica aplicaiilor s fie codificat n programe i nu n schema conceptual a bazei de date. Furnizarea unor metode i tehnici eficiente de control a coerenei redundanei datelor, cu o bun fundamentare teoretic. Modificrile pe care le sufer n timp datele ridic probleme serioase la ntreinerea bazei de date, n ceea ce privete controlul actualizrilor, reflectarea modificrilor din structura mediului economic real n structura datelor etc. Modelul relaional, prin tehnica normalizrii relaiilor permite definirea unei structuri conceptuale optime a datelor, prin care se minimizeaz riscurile de eroare la actualizare, reducndu-se redundana datelor.

30

Oferirea unor faciliti multiple de definire i manipulare a datelor. n primul rnd, modelul relaional ofer posibilitatea utilizrii unor limbaje procedurale, bazate pe algebra relaional, precum i a unor limbaje neprocedurale avnd la baz calculul relaional. Limbajele neprocedurale (declarative) contribuie la mbuntirea semnificativ a comunicrii dintre sistem i utilizatorii neinformaticieni. n al doilea rnd, manipularea datelor se realizeaz la nivel de ansamblu (relaie), fiind posibil utilizarea paralelismului n prelucrarea datelor. Ameliorarea integritii i confidenialitii datelor. Modelul relaional realizeaz acest lucru prin mecanisme flexibile i eficace de specificare i utilizare a restriciilor de integritate i a relaiilor virtuale. Restriciile de integritate ale modelului relaional sunt urmtoarele: 1. Restricii de integritate minimale, obligatoriu de definit i de respectat atunci cnd se lucreaz cu modelul relaional. Din aceast categorie fac parte: restricia de unicitate a cheii;

restricia referenial; restricia entitii.

2. Alte restricii de integritate, din care fac parte: dependenele ntre date; restriciile de comportament. Restriciile de integritate minimale sunt definite n raport cu noiunea de cheie a unei relaii. Cheia unei relaii, R, reprezint ansamblul minimal de atribute prin care se poate identifica n mod unic orice tuplu din R. Orice relaie posed cel puin o cheie. La limit, cheia este constituit fie dintr-un singur atribut, fie din totalitatea atributelor din schema relaiei respective. Cnd cheia este constituit dintrun singur atribut poart numele de cheie simpl, iar atunci cnd este format din mai multe atribute este denumit cheie compus. ntr-o relaie pot exista mai multe combinaii de atribute cu proprietatea de identificare unic a tuplurilor. Se spune n acest caz c relaia posed mai muli candidai cheie (sau mai multe chei candidate). n aceast situaie, administratorul bazei de date va alege dintre cheile candidate una care s serveasc n mod efectiv la identificarea tuplurilor i care va primi numele de cheie primar. Restul cheilor candidate vor purta numele de chei alternate. Cheia unei relaii trebuie s fie minimal, adic nici o parte a sa nu trebuie s fie la rndul ei cheie. Un grup de atribute din cadrul unei relaii care conine o cheie a relaiei poart numele de supercheie. Modelarea asocierilor dintre entiti impune recurgerea la conceptul de cheie extern. O cheie extern reprezint un atribut/grup de atribute dintr-o relaie R1 ale crui/cror valori sunt definite pe acelai/aceleai domeniu/domenii ca i cheia primar a unei relaii, R2 i care are rolul de a modela asocierea ntre entitile reprezentate prin relaiile R1 i R2. n acest context, R1 este denumit relaie care refer, n timp ce R2 poart numele de relaie referit. Restricia de unicitate a cheii reprezint restricia de integritate care impune ca ntr-o relaie, R care are cheia K, oricare ar fi tuplurile t1 i t2 s fie 31

satisfcut inegalitatea: t1 (K) # t2 (K). Aceast inegalitate semnific faptul c ntr-o relaie nu pot exista dou tupluri cu aceeai valoare pentru atributele cheie. Restricia referenial (integritatea referirii) reprezint restricia de integritate care impune ca ntr-o relaie R1 care refer o relaie R2, valorile cheii externe s figureze printre valorile cheii primare din relaia R2 sau s fie valori nedefinite (null). R1 i R2 nu trebuie s fie neaprat distincte. Semnificaia restriciei de integritate a referirii este urmtoarea : o asociere nu poate exista dect ntre entiti deja definite. Atunci cnd, ntr-o anumit situaie, asocierea nu este aplicabil, unul din parteneri va fi desemnat prin valoarea null, cu semnificaia de partener inexistent. Restricia entitii (integritatea entitii) reprezint restricia de integritate care impune ca ntr-o relaie atributele cheii primare s fie nenule. Unicitatea cheii impune ca la ncrcarea unui tuplu, valoarea cheii s fie cunoscut, pentru a se putea verifica faptul c aceast valoare nu exist deja ncrcat (tuplul nu figureaz deja n baza de date). Cu valori <null>, cheia i pierde rolul de identificator de tuplu. Restricia de integritate a entitii nu se aplic cheilor externe dintr-o relaie, dac acestea nu aparin cheii primare. Restriciile referitoare la dependena datelor semnific modul n care datele depind unele de altele. Aceast dependen ntre date poate fi de mai multe tipuri i anume:
- dependen funcional; reprezint dependena ntre date prin care se

poate identifica un atribut/grup de atribute prin intermediul altui atribut/grup de atribute. Fiind dat o relaie R, un atribut Y din R este dependent funcional de un alt atribut X din R, dac i numai dac fiecare valoare a lui X are asociat o valoare precis a lui Y.
- dependen multivaloare; reprezint acel tip de dependen ntre date n care un atribut/grup de atribute poate prezenta mai multe valori pentru o singur valoare a unui alt atribut/grup de atribute. Fie o relaie R, n care apar atributele/grupurile de atribute:X, Y i Z. n cadrul relaiei R exist o dependen multivaloare dac i numai dac mulimea valorilor lui Y corespunztoare unei perechi: (valoare X, valoare Z) depinde numai de valoarea lui X, nu i de valoarea lui Z; - dependen jociune; aceast restricie exprim o dependen ntre date

mai general dect dependena funcional sau dependena multivaloare. Considernd o relaie R, cu schema R(X:Dx,Y:Dy,Z:Dz) pentru care nu se manifest dependene funcionale sau dependene multivaloare, adic relaia R se poate asimila unei chei compuse. Asupra acestei relaii se formuleaz urmtoarea restricie: dac n relaia R figureaz tuplurile, i atunci n R trebuie s figureze i tuplul . Restriciile de comportament se pot defini de ctre utilizator n funcie de realitatea descris n baza de date i pot fii: restricii de domeniu; care impun ca valorile unui atribut dintr-o relaie s se ncadreze n anumite limite; restricii temporale etc.

32

III.2. Normalizarea relaiilor


Necesitatea normalizrii Cnd proiectm o baz de date, dorina noastr este de a reprezenta ct mai corect informaiile i s diminum ct mai mult posibilitatea de a ajunge la informaii eronate (dac nu putem elimina de tot acest neajuns). Pentru a ajunge la aceast performan, trebuie s folosim normalizarea. Normalizarea este o tehnic de generare a unor relaii cu proprietile dorite, n scopul memorrii corecte a datelor unei ntreprinderi. Procesul de normalizare prima dat a fost introdus de E. F. Codd (1972). Iniial s-au propus trei forme normale, numerotate de la unu la trei. Mai trziu s-a inclus nc o form normal, numit Boyce-Codd, dup numele celor care l-au introdus: R. Boyce i E. F. Codd. Formele normale cele mai folosite sunt: forma normal 3 i forma normal Boyce-Codd. Exist i forme normale mai tari - forma normal 4 (4NF) i forma normal 5 (5NF) - dar aceste se folosesc foarte rar. Procesul de normalizare este o metod formal de identificare a relaiilor bazate pe chei primare (sau chei candidat n cazul BCNF) i dependenele funcionale cu atributele asociate. Normalizarea d posibilitatea proiectantului bazei de date, pentru a efectua o seria de teste pe baza de date, toate aceste teste ducnd la prevenirea posibilitii de a aprea anomalii la actualizarea bazei de date. Normalizarea este o tehnic utilizat n activitatea de proiectarea a structurii unei BDR i const n eliminarea unor anomalii de actualizare din structur [8]. Anomaliile care apar n lucrul cu baze de date relaionale se produc datorit dependenelor nedorite care se manifest ntre datele din cadrul relaiilor bazei de date. Aceste dependene determin creterea redundanei datelor i reducerea flexibilitii structurii bazei de date, efect manifestat prin: limitarea posibilitilor de inserare a datelor; apare cnd anumite date despre o entitate nu pot fi introduse n baza de date datorit lipsei altor date, relative la aceeai entitate, i fr de care, datele noi nu pot fi introduse datorit dependenelor dintre aceste date; pierderi de date la tergere; apar atunci cnd, n urma unei tergeri din baza de date sunt terse i altele, care nu mai pot fi obinute (reconstituite) din baza de date; apariia unor inconsistene la modificarea datelor; adic meninerea, pentru unele atribute, a unor valori neactualizate alturi de valorile actualizate. Formele normale ale relaiilor dintr-o baz de date relaional sunt definite n raport de anomaliile care pot apare n lucrul cu aceste relaii, deci n funcie de dependenele nedorite care se manifest n cadrul acestor relaii. La proiectarea bazelor de date relaionale se pot defini cinci forme normale, formnd cinci nivele de normalizare a relaiilor.
relaie R este n forma normal unu, FN1, dac domeniile pe care sunt

definite atributele relaiei sunt constituite numai din valori atomice (elementare). n plus, un tuplu nu trebuie s conin atribute sau grupuri de atribute repetitive. 33

relaie R este n forma normal doi, FN2, dac este n FN1 i oricare dintre

atributele noncheie este dependent funcional complet de cheia primar a relaiei.


relaie R este n forma normal trei, FN3, dac este n FN2 i atributele

noncheie nu sunt dependente tranzitiv de cheia primar a relaiei. Relaia R este n forma normal patru, FN4, dac este n FN3 i n cadrul ei nu se manifest mai mult de o dependen multivaloare. Spunem c relaia R este n forma normal cinci, FN5, dac fiecare dependen jonciune este implicat printr-un candidat cheie al lui R. F. Codd a artat ca ntr-o anumit form relaiile posed proprieti nedorite, pe care le-a numit anomalii de actualizare: Anomalia de tergere const n faptul ca anumite date care urmeaz s fie terse fac parte din tupluri n care se gsesc i alte date care mai sunt necesare n continuare, ori tergerea fcndu-se la nivelul tuplului, acestea se pierd. ; Anomalia de adaugare const n faptul c anumite date care urmeaz s fie adugate fac parte din tupluri incomplete (pentru care nu se cunosc toate datele), ceea ce face ca acestea s nu poat fi adugate. Anomalia de modificare rezult din faptul c este dificil de modificat o valoare a unui atribut atunci cnd ea apare n mai multe tupluri ale relaiei. Redundana n informaii i anomalii la actualizare Partea cea mai important a proiectrii bazei de date este de a grupa atributele n relaii cu scopul de a minimiza redundana n informaii i spaiul ocupat de fiiere pe suportul magnetic. Fie relaia Furnizori_Cheltuieli exemplificat mai jos. La exemple vom simplifica atributele asociate entitilor. Dependenele funcionale pentru relaia Furnizori_Cheltuieli de mai sus sunt urmtoarele: Furnizori Cheltuieli Tip_cheltuiala Furnizori_Cheltuieli (Cod.Furn., Denumire, Cod fiscal) (Nr.Crt., Cod chelt., Cod.furn., Valoare) (Cod.Chelt., Denumire chelt.) (Nr.Crt., Cod chelt., Cod furn., Denumire chelt., Denumire, Cod fiscal, Valoare)
Nr. Crt. 1 2 3 4 Cod Chelt. C15 C16 C10 C11 Denumire Cheltuial Chelt pt. nclzire Chelt pt. buctrii Chelt cu iluminatul Chelt pt. func. liftului Valoare 1500000 500000 3000000 200000

Tabel 1. Relaia Furnizori_Cheltuieli


Cod Furn. F100 F100 F110 F110 Denumire Romgaz Romgaz Renel Renel Cod fiscal R1234567 R1234567 R7654321 R7654321

n acest exemplu, informaia despre furnizor devine redundant. Detaliile despre furnizor se repet la fiecare introducere a unei cheltuieli noi. n dependenele funcionale specificate pentru entitatea Cheltuieli, apare doar codul furnizorului. Analog, denumirea cheltuielii, apare i ea n plus fa de entitatea Cheltuieli. 34

O alt problem serioas datorat redundanei bazei de date, sunt problemele de actualizare a informaiei stocate. Aceste probleme se pot clasifica n anomalii de inserare, modificare, sau tergere. Anomalii de inserare Anomaliile de inserare se pot clasifica n dou tipuri mari: Pentru a adauga detaliile despre o cheltuial ctre un furnizor, n relaia Furnizori_Cheltuieli trebuie obligatoriu adugate i detaliile despre furnizorul n cauz, chiar dac el exist deja n baza de date. Aceast anomalie poate duce la apariia aceluiai furnizor, avnd introduse detalii diferite n nregistrri diferite. Pentru a aduga detaliile unui furnizor nou n relaia Furnizori_Cheltuieli, trebuie neaprat adugat i o cheltuial pentru asociaia de locatari ctre acel furnizor. n cazul n care nc nu a sosit factura de la furnizor, nu pot nregistra nici o cheltuial i deci trebuie introduse date vide n locul cheltuieli. Cum Nr.Crt. este cheia primar n relaia Furnizori_Cheltuieli, introducerea de date vide n acest cmp va strica integritatea entitii. Anomalii de tergere n cazul tergerii ultimei cheltuieli a asociaiei de locatari ctre un furnizor, se va terge i furnizorul. Deci toate detaliile introduse despre acel furnizor vor fi pierdute, ceea ce duce la obligativitatea reintroducerii datelor la o nou folosire al acelui furnizor. n cazul entitii separate pentru cheltuieli i furnizori, dac se terge i ultima cheltuial ctre un furnizor, datele despre furnizor rmn totui n entitatea Furnizori. Anomalii de modificare Dac n relaia Furnizori_Cheltuieli dorim s schimbm valoarea unui atribut al unui furnizor, va trebui s schimbm datele la fiecare apariie a acelui furnizor. De exemplu dac dorim s schimbm codul fiscal al furnizorului cu codul F100, va trebui s schimbm acest atribut n dou locuri. Dac n timpul modificrilor, care poate dura destul de mult, intervine i un incident n urma cruia vor rmne nregistrri nemodificate, atunci baza de date devine inconsistent. Aceast anomalie se poate evita prin folosirea a dou entiti distincte precum Cheltuieli i Furnizori. n acest caz dac trebuie s modific un atribut al unui furnizor, va trebui s-o modific doar ntr-un singur loc: n entitatea Furnizori. Dependene funcionale Unul din cele mai importante concepte asociate normalizrii este dependena funcional. Dependena funcional descrie relaia dintre atribute. De exemplu: dac atributul A este n relaia R cu atributul B, atunci atributul B este dependent funcional de atributul A (notat: A B), dac orice valoarea al lui A este asociat prin relaia R cu exact o valoare a atributul B. Dependena funcional este o proprietate a semanticii atributelor n relaii. Semantica indic atributele care sunt n relaie i specific dependenele funcionale dintre atribute.

35

Considerm o relaie ntre dou atribute A i B, unde atributul B este dependent funcional de atributul A (atributele A i B pot fi compuse din mai multe atribute). Cu alte cuvinte, dac tim valorile cmpului A, atunci analiznd valorile lui B n relaia cu A, vom considera c pentru valori diferite al lui A - care fiind cheie, trebuie s aib valori diferite - avem valori diferite i pentru cmpul B. Dependena funcional dintre dou cmpuri se reprezint grafic n urmtorul mod:

B
Figura 13. Diagrama dependenei funcionale

Determinantul unei relaii funcionale este atributul, sau mulimea atributelor din partea stng a sgeii. Vom ignora dependenele funcionale triviale, adic acele relaii de tipul AB, n care B este dependent de un subset de atribute al lui A. Pentru a exemplifica dependenele funcionale, considerm urmtorul exemplu: Exemplu: Considerm atributele Cod furnizor i Denumire. Pentru un anumit cod de furnizor, putem determina denumire acelui furnizor. Adic denumirea este dependent funcional de cod furnizor. Dependena invers nu este adevrat pentru c pot exista aceleai denumiri cu coduri diferite. Relaia dintre cod furnizor i denumire este de 1:1, iar relaia invers este de 1:M. S identificm dependenele funcionale din relaia Furnizori_Cheltuieli descris mai sus: Nr. Crt., Cod Furn., Cod Chelt. Denumire Nr. Crt., Cod Furn., Cod Chelt. Cod fiscal Nr. Crt., Cod Furn., Cod Chelt. Denumire cheltuial Nr. Crt., Cod Furn., Cod Chelt. Valoare Cod Furnizor Denumire Cod Furnizor Cod fiscal Cod fiscal Denumire Cod fiscal Cod Furnizor Cod Chelt. Denumire cheltuial n aceast relaie avem 9 dependene funcionale, care au determinantele (Nr. Crt., Cod Furn., Cod Chelt.), Cod fiscal, Cod Furn. i Cod Chelt. Putem evidenia aceste dependene i ntr-un alt format: Nr.Crt., Cod Furn., Cod Chelt. Denumire,Cod fiscal, Denumire cheltuial, Valoare Cod Furn. Denumire, Cod fiscal Cod fiscal Denumire, Cod Furn. Cod Chelt. Denumire cheltuial

36

Pentru a identifica cheile candidate, trebuie s identificm atributul, sau grupul de atribute care determin unic fiecare nregistrare al acestei relaii. Dac avem mai mult de o cheie candidat, atunci va trebui s identificm i o cheie primar. Toate atributele care nu aparin cheii primare, depind funcional de cheia primar. n aceast ipostaz este grupul de atribute (Nr. Crt., Cod Furn., Cod Chelt.). Atributele Cod Furn., Cod fiscal i Cod Chelt. Sunt determinani, dar nu sunt chei candidat. Conceptul de dependen funcional este conceptul central al normalizrii, ceea ce vom descrie n capitolele urmtoare.

III.3. Metode de proiectare


Proiectarea unei BD este un proces n care se utilizeaz diferite modele, tehnici i instrumente pentru a transpune un domeniu din lumea real nconjurtoare n termenii organizrii datelor aferente pe calculator. Pornind de la lumea real se identific i specific cerinele aplicaiei (domeniul de interes) prin: documentare, interviu, terminologie, comunicare etc. Rezultatul acestei activiti este obinerea elementelor necesare pentru organizarea informaiei din domeniul respectiv. Acest lucru se realizeaz cu ajutorul unor concepte i instrumente adecvate [8]: schemele BD schema conceptual specific structurii organizatorice i coninutului informaional al sistemului i reprezint un mod de comunicare ntre proiectani i utilizatorii BD;
- schema logic (extern) definete informaia ntr-o manier care poate fi folosit pentru crearea BD i organizeaz informaia ntr-o ordine care permite accesul utilizatorilor la BD (construcia viziunilor);

schema fizic specific reprezentarea informaiei n calculator n termeni fizici (cum este stocat informaia n memoria extern, pe suportul tehnic de informaie).
-

Proiectarea modelului relaional prin schema conceptual


La proiectarea bazelor de date relaionale se folosete frecvent termenul de schem conceptual optim, prin care se nelege acea schem

conceptual care nltur posibilitile apariiei de anomali n lucrul cu baza de date, asigurnd totodat faciliti i performane sporite la ncrcarea, exploatarea i ntreinerea bazei de date. Anomaliile care apar la lucrul cu baze de date se manifest ndeosebi la ntreinerea bazei de date, fiind cunoscute i sub numele de anomalii de actualizare a datelor. Ele se manifest nu numai n cazul bazelor de date relaionale, ci i la celelalte tipuri de baze de date. n cadrul teoriei relaionale a bazelor de date, anomaliile de actualizare sunt puse n legtur cu dependenele care se manifest ntre date. Abordarea anomaliilor de actualizare a permis, pe de o parte caracterizarea

37

riguroas a relaiilor dup gradul de perfeciune pe care l prezint (aa numitele forme normale ale relaiilor) i pe de alt parte a fcut posibil definirea unor tehnici formale pentru nlturarea anomaliilor de actualizare. Etapele procesului de proiectare a schemei conceptuale Proiectare schemei conceptuale a unei baze de date relaionale presupune parcurgerea urmtoarelor etape: 1. Determinarea formei normale n care trebuie s se afle relaiile din baza de date (a nivelului de perfeciune impus schemei conceptuale). Relaiile aflate n forme normale superioare determin apariia unui numr redus de anomali n lucrul cu baza de date, comparativ cu relaiile nenormalizate sau aflate n primele forme normale, dar conduc todat la creterea timpului de acces la date. Aceasta deoarece relaiile aflate n forme normale superioare conin, de regul, un numr mai mic de atribute, lucru care impune creterea numrului de relaii din baza de date, deci interogarea simultan a mai multor relaii pentru a gsi anumite informaii. n determinarea formei normale la care trebuiesc aduse relaiile din bazele de date relaionale se vor avea n vedere urmtoarele: ponderea operaiilor de interogare i a celor de actualizare n lucrul cu bazele de date relaionale; exigenele de performa i flexibilitate impuse de utilizatorii finali la interogarea i, respectiv la actualizarea bazelor de date relaionale. 2. Stabilirea relaiilor care s fac parte din baza de date, n forma normal stabilit anterior. Aceasta presupune definirea relaiilor i a restriciilor de integritate asociate, lucru realizat pe baza modelelor conceptuale ale sistemului, modele obinute n etapa de analiz a sistemului i a cerinelor informaionale asociate. n cadrul acestei etape se pot aplica mai multe tehnici de proiectare (tehnica normalizrii, tehnica diagramelor de dependen riguroas etc.). 3. Testarea schemei conceptuale obinute i revizuirea acesteia, dac este cazul;
4. Descrierea schemei conceptuale n limbajul de descriere a datelor utilizat de SGBD-ul relaional folosit i ncrcarea acestei descrieri n baza de date relaional.

Proiectarea modelului relaional prin normalizare Proiectarea prin normalizare, este un proces laborios i riguros ce permite obinerea unui model relaional pe baza unor atribute (cmpuri) i a dependenelor dintre acestea. Metoda se bazeaz pe primele trei forme normale (FN1, FN2, FN3) i presupune parcurgerea urmtoarelor etape: 1. Inventarierea atributelor. Proiectantul va selecta atributele din diverse documente utilizate n circuitul informaional: nomenclatoare (nomenclatorul departamentelor, lista angajailor etc.), documente primare i centralizatoare. Marca angajat Data

38

angajrii Telefon angajat

Nume angajat

angajat Adresa

2. Specificarea regulilor de gestiune: diversele restricii/condiii impuse datelor sunt atent studiate deoarece vor constitui logica dependenelor dintre atribute i a regulilor de validare. Exemplu: - angajaii pot s lucreze ntr-o anumit perioad de timp n cadrul unui singur departament; - marca angajatului este unic; - un angajat poate avea mai multe studii sau stagii de pregtire ; - n cadrul unui departament pot s lucreze mai muli angajai etc. Algoritmii de calcul sunt asimilai regulilor de gestiune. Exemplu: SumaRetineri=ProcentRetinere*Salariu SalariuNet=1-ProcentRetinere*Salariu 3. ntocmirea dicionarului de date: atributele obinute n prima faz sunt nscrise ntr-un dicionar al datelor cu respectarea urmtoarelor reguli: a. b. Un atribut poate fi nscris o singur dat n dicionar. Sunt eliminate atributele sinonime Exemplu : MarcaAngajat=SimbolAngajat AdresaAngajat=DomiciliuAngajat etc. c.Dicionarul datelor nu admite atribute derivate/calculate Exemplu: PensieSuplimentara (ProcentRetinere*Salariu), SumaRetineri, SalariuNet 4. Stabilirea dependenelor dintre atribute: dependenele sunt descrise fie printr-o matrice (conine ca linii si coloane toate atributele din dicionar n aceeai ordine) fie printr-un graf al dependenelor. Sunt vizate ndeosebi dependenele funcionale. Dependenele funcionale tranzitive sunt evideniate n mod distinct. n acest caz, dependenele funcionale dintre atribute sunt reprezentate prin valoarea 1 pe linie iar cele tranzitive au fost marcate cu 1T. Dependenele dintre aceleai atribute pot fi reprezentate i prin intermediul unui graf:

39

Cod Furnizor

Denumire Furnizor Adresa Furnizor

Numr Factur

Data Factura

Figura 14. Graful dependenelor funcionale

n aceast variant, dependenele funcionale sunt reprezentate prin sgei iar cele tranzitive prin sgei punctate. 5. Pentru atributele rmase izolate se vor cauta grupuri de cmpuri ce pot constitui determinani ai acestora. 6. Toate atributele (grupuri de atribute) determinante devin chei candidate. Cheile candidate ce vor aparine aceluiai tabel sunt caracterizate prin dependene funcionale reciproce. CodFurnizor<->DenumireFurnizor, CodFurnizor<->Adresa 7 .Se stabilesc cheile primare dintre atributele candidate. Exemplu : CodFumizor, NumrFactur 8. Cu fiecare cheie primar i atributele determinate direct (netranzitiv) de aceasta se va forma un tabel Exemplu: Furnizor(CodFurnizor, DenumireFurnizor, AdresaFurnizor) Factura (NumrFactur, Data, CodFurnizor) 9. Se stabilesc cheile externe (cmpuri ce sunt chei primare n alte tabele) Exemplu : Furnizor(CodFurnizor, DenumireFurnizor, AdresaFurnizor) Factura (NumrFactur, Data, CodFurnizor) Conceperea modelului relaional prin normalizare confer siguran n obinerea unor tabele direct normalizate. Metoda presupune totui, un proces minuios i dificil de aplicat pentru un numr mare de atribute. Este motivul pentru care aceast metod este mai puin utilizat n practic.

40

Imagini/viziuni ale utilizatorilor

Relaii nenormalizate Extragerea grupurilor care se repet Relaii normalizate n prima form (1NF) Extragerea dependenelor pariale A doua form normalizat a relaiilor (2NF) Extragerea dependenelor tranzitive A treia form normalizat a relaiilor (3NF)

Figura 15. Paii normalizrii [5]

41

II. Prezentarea aplicaiei


III.4. Prezentare general

Este incontestabil faptul c aplicaiile informatice au devenit instrumente nelipsite din activitatea de zi cu zi a economitilor (i nu numai). Evaluarea si alegerea celei mai potrivite aplicaii rmne ns o provocare cu o serie ntreag de consecine ulterioare. Tocmai din acest motiv, am considerat util realizarea unei aplicaii pentru evidena salariailor unei societi comerciale. Aplicaia realizat numit Evidena personalului asigur suportul i organizarea informaiilor referitoare la resursele umane - angajaii din ntreprindere. Evidena personalului constituie instrumentul complet de administrare a personalului, asigurnd prelucrarea n timp real a unor date complexe referitoare la angajai. Aplicaia este foarte uor de folosit, intuitiv, realizat i pentru persoane care au cunotine minime de operare pe calculator, respectiv de validare i introducere a datelor. La crearea aplicaiei s-a folosit S.G.B.D.-ul relaional Access 2003 i limbajul de programare VBA. Sistemul de Gestiune a Bazelor de Date Microsoft ACCESS 2003 face parte din pachetul de programe Microsoft Office i este cea de-a cincea versiune a produsului de la lansarea sa iniial n anul 1992. Principalele caracteristici ale SGBD-ului ACCESS sunt: este relaional i lucreaz sub sistemul de operare Windows; este deschis comunicrii cu alte Sisteme de Gestiune a Bazelor de Date cum ar fi FoxPro sau Paradox; este compatibil cu tehnologia ActiveX, care permite realizarea aplicaiilor client/server; permite realizarea unor aplicaii complexe prin utilizarea limbajului Visual Basic; permite comunicarea cu SQL Server, un alt produs Microsoft care gestioneaz baze de date; permite accesul la baze de date din reeaua Internet, fiind un instrument util pentru publicarea informaiilor n paginile Web; este autodocumentat prin help, apelabil contextual sau la cerere; conine instrumente wizard care permit utilizatorului crearea ntr-o manier foarte simpl a obiectelor bazei de date; permite crearea de comenzi rapide (shortcuts) n vederea accesrii obiectelor ACCESS; permite crearea de grupuri de obiecte definite de utilizator n cadrul bazei de date; permite personalizarea bazei de date; permite utilizarea obiectelor ACCESS din cadrul altor aplicaii rulate sub sistemul de operare Windows. 42

Proiectarea bazei de date Realizarea modelului relaional al bazei de date presupune parcurgerea mai multor etape. Plecnd de la informaiile de baz respectiv atributele, pe baza relaiilor stabilite ntre acestea (dependene funcionale) se realizeaz succesiv formele normalizate ale bazei de date (FN1, FN2, FN3). Trebuie stabilite n primul rnd atributele elementare i repetitive ce vor constitui baza procesului de normalizare. Cerine funcionale Angajaii vor fi nregistrai o singur dat n cadrul bazei de date. Pentru identificare fiecare angajat va primi un cod unic denumit marca angajat. Salariul de ncadrare poate varia lunar, reinndu-se data modificrii i noul cuantum al salariului. Venitul lunar net este obinut prin diminuarea salariului de ncadrare cu eventuale reineri aferente acelei luni. O categorie de reineri poate s se aplice mai multor salariai. Reinerile sunt un procent din salariul de ncadrare i sunt specifice fiecrui salariat. Fiecare categorie de reinere memorat n baza de date se va codifica. Angajaii sunt organizai n departamente. Departamentele vor avea un cod unic folosit pentru identificare. Angajaii pot s lucreze de-a lungul timpului n cadrul unui singur departament sau a mai multora. Trebuie reinut n baza de date data nceperii activitii pentru fiecare departament n care i-a desfurat sau i desfoar activitatea. Alocarea sarcinilor se va face innd cont de vechimea angajatului n cadrul departamentului i de pregtirea profesional a fiecruia. Pentru fiecare angajat se vor reine n baza de date detalii legate de pregtirea profesional, adic denumirile studiilor i stagiilor la care a participat, datele de finalizare i tipul acestora. Fiecare etap a pregtirii profesionale a unui angajat va fi identificat cu ajutorul unui cod.

Reguli de gestiune: Salariul de ncadrare al unui salariat se poate modifica n timp. Fiecare salariat poate sa nu aib reineri sau poate sa aib mai multe reineri, o reinere putndu-se aplica mai multor salariai (unei categorii de salariai). Procentele de reinere sunt specifice fiecrui salariat i se aplic salariului de ncadrare. Angajaii pot s lucreze n decursul timpului n cadrul unui singur departament sau a mai multora, n cadrul unui departament pot s lucreze mai muli angajai. Un angajat poate avea mai multe studii sau stagii de pregtire.

Pe baza analizei cerinelor funcionale se identific urmtorul dicionar preliminar al datelor: 43

Marca, Nume, Telefon, DataNastere, Varsta, Fotografie, SalariuIncadrare, DataModificareSalariuIncadrare, CodRetinere, DenumireRetinere, ProcentRetinere, DataInceputRetinere, DataSfarsitRetinere, SalariuNet, CodDepartament, DenumireDepartament, DataIncepereActivitate, VechimeAngajare, CodPregatireProfesionala, DenumirePregatireProfesionala, DataFinalizare, TipPregatire. Prin respectarea cerinelor impuse de ctre FN1, din dicionarul atributelor se vor elimina atributele calculate Vrsta se calculeaz pentru fiecare persoan n funcie de data curent i de data naterii. SalariuNet se obine prin diminuarea salariului de ncadrare cu procentele aferente reinerilor. VechimeAngajare se calculeaz pentru fiecare angajat n funcie de data curent i de data de ncepere a activitii. Respectnd cerinele impuse cheilor primare (unicitate, ireductibilitate) se identific n cadrul dicionarului atributelor urmtoarele atribute candidat din care se vor alege cheile primare: Tabel 2 Atributele candidat Atribut Candidat Descriere Marca Acest atribut are valori unice, identificnd n mod unic un angajat. CodRetinere Fiecare reinere este codificat n mod unic. CodDepartament La nivelul bazei de date fiecare departament are un cod unic. CodPregatireProfesionala Reprezint atributul pe baza cruia este identificat un stagiu de pregtire profesional. Dependene funcionale Se vor identifica dependenele funcionale n care determinatul este cheie primar. La nregistrarea unui angajat i se atribuie un cod unic existnd dependene funcionale ntre atributul Marca i atributele Nume, Telefon, DataNastere, Fotografie. Salariul de ncadrare al unui salariat se poate modifica la anumite adte existnd dependene funcionale totale ntre grupul de atribute Marca, DataModificareSalariuIncadrare i atributul SalariuIncadrare. Pentru reinerea istoricului etapelor de pregtire profesional fiecare dintre acestea este codificat genernd astfel dependene funcionale ntre atributul CodPregatireProfesionala i atributul atributele Denumire PregtireProfesionala, DataFinalizare, TipPregatire. O etap de pregtire profesional corespunde unui singur angajat genernd dependena funcional ntre atributul CodPregatireProfesionala i atributele Marca, Nume, Telefon, DataNastere, Fotografie. Dependena dintre atributul

44

CodPregatireProfesionala i atributele Marca, Nume, Telefon, DataNastere, Fotografieeste tranzitiv. Istoricul reinerilor fiecrui angajat se va memora cu ajutorul unui tabel pentru care se va alege o cheie surogat IdRetinereSalariat. Exist o dependen funcional ntre atributul IdRetinereSalariat i atributele Marca, CodRetinere, ProcentRetinere, DataInceputRetinere, DataSfarsitRetinere. Angajaii pot s lucreze n decursul timpului n cadrul unui singur departament sau a mai multora, un angajat putnd reveni la unul din departamentele anterioare. Istoricul angajrii salariailor n cadrul departamentelor se va memora n cadrul unui tabel ce va avea drept cheie primar o cheie surogat IdAngajare, existnd o dependen funcional ntre atributul IdAngajare i Marca, CodDepartament i DataIncepereActivitate.
DenumireRetiner e ProcentRetinere CodRetinere DataInceputRetiner e

DataSfarsitRetinere

IdRetinereSalariat DataNastere

IdAngajare

Telefon CodDepartament DataIncepereActtivitat e Marca Nume Fotografi e TipPregatire DataFinalizar e

DenumireDepartamen t

CodPregProf

Marca,DataModifSa l

DenPregProf

SalariuIncadrare

Figura 16. Graful dependenelor funcionale simple ( nu s-au reprezentat dependenele tranzitive)

Pentru simplificare se prezint n cadrul matricei dependenelor funcionale doar dependenele funcionale totale i dependenele funcionale tranzitive n acre determinantul este cheia primar, nereprezentndu-se dependenele funcionale multivaloare sau cele pariale.

45

1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7

Atribute Marca Nume Telefon DataNastere Fotografie SalariuIncadrare DataModifSal CodRetinere DenumireRetinere ProcentRetinere DataInceputRetinere DataSfarsitRetinere CodDepartament DenumireDepartament DataIncepereActivitate CodPregProf DenPregProf

2 3 4 5 6 1 1 1 1 1

7 8

1 0

1 1

1 2

1 3

1 4

1 5

1 6

1 7

1 8

1 9

2 0

2 1 22

1T

1T

1T

1T

46

1 8 1 9 2 0 2 1 2 2

DataFinalizare TipPregatire Marca, DataModifSal IdRetinereSalariat IdAngajare 1 1


1T 1T 1T 1T 1T 1T 1T 1T 1T 1T 1T 1T

1T

1 1
1T

Figura 17. Matricea dependenelor funcionale

47

Analiznd dependenele funcionale se observ existena dependenelor funcionale tranzitive. Prin eliminarea acestora se obin tabele ce respect forma normal trei (FN3). Angajat (Marca, Nume, Telefon, DataNastere, Fotografie) IstoricSalariu (DataModSal, Marca, salariuIncadrare) Retinere (CodRetinere, DenumireRetinere) RetineriSalariat (IdRetinereSalariat, Marca, CodRetinere, DataInceputRetinere, DataSfarsitRetinere) ProcentRetinere,

Departament (CodDepartament, DenumireDepartament) AngajareSalariat (IdAngajare, CodDepartament, Marca, DataIncepereActivitate) Pregatire (CodPregatireProfesionala, DenumirePregatireProfesionala, DataFinalizare, TipPregatire, Marca)

Figura 18. Implementarea n Access 2003 a tabelelor i a relaiilor dintre acestea

Pentru tabelul Reineri Salariat se stabilesc urmtoarele proprieti: Data sfrit reinere trebuie s fie mai mare dect data de nceput reinere cu cel puin 30 de zile. Restriciile ce implic mai multe cmpuri din cadrul aceluiai tabel se vor implementa n cadrul proprietilor tabelului la Validation Rule (vezi figura 4).

48

Figura 19. Proprietile tabelei ReineriSalariat

Procentul reinerii trebuie s fie cuprins ntre 0 i 15 %. Realizarea acestei restricii referitoare la domeniul de valori acceptate de atributul ProcentReinere presupune atribuirea valorii between 0 and 0,15 proprietii Validation Rule). Proprietatea Validation Text va conine mesajul personalizat de eroare afiat n cazul nerespectrii condiiei impus prin Validation Rule (vezi figura 5).

Figura 20. Proprietile atributului ProcentReinere

Pentru tabelul se stabilesc urmtoarele proprieti: Salariul de ncadrare trebuie s aib valori ntre 300 i 3000.

49

Figura 21. Proprietile atributului SalariuIncadrare

III.5.

Interogarea bazei de date

Extragerea de date din baza de date creat, fr a modifica datele stocate, se realizeaz cu ajutorul interogrilor de selecie. O interogare de selectare nu stocheaz datele, ci regsete datele stocate n tabele. Interogarea bazei de date n Microsoft Access se realizeaz cu ajutorul obiectului Queries. Pentru a afia procentul total al reinerilor pentru un salariat a crui marc se introduce ca parametru i pentru o anumit dat introdus tot ca parametru se realizeaz interogarea ProcentTotalRetineriAngajat prezentat n figura 7.

Figura 22. Interogarea de selecie ProcentTotalRetineriAngajat

50

O reinere poate s fie pe o perioad fix i n acest caz se cunosc datele de nceput sau finalizare sau poate s fie o perioad nedeterminat, cunoscndu-se doar data de nceput, data de sfrit avnd valoarea NULL. Afiarea numrului angajailor pe tipuri de pregtire i ani de finalizare se realizeaz cu ajutorul unei interogri de tip analiz ncruciat (Crosstab Query). Pe linie (Row Heading) se vor afia categoriile de pregtire profesional. Iar pe coloan (Column Heading) se vor afia anii de absolvire obinui cu ajutorul funciei YEAR(). Numrul de angajai se va calcula cu ajutorul funciei COUNT (vezi figura 8).

Figura 23 Interogare de tip analiz ncruciat

Pentru a afia prima liter cu care ncepe numele fiecrui angajat se va folosi funcia MID ce va permite extragerea caracterului de pe prima poziie a irului de caractere coninut de atributul Nume n interogarea Litera (vezi figura 9).

Figura 24. Interogare de selecie Litera

Pentru a afia tipurile de pregtirea angajailor se utilizeaz o interogare SQL. Fiecare tip de pregtire se va afia o singur dat. SELECT DISTINCT TipPregatire FROM Pregatire;

51

Pentru a afia salariaii care nu aureineri ntr-un anumit an, an introdus de la tastatura se creeaz urmtoarea interogare SQL: SELECT Angajat.Marca, Angajat.Nume FROM Angajat WHERE (((Angajat.Marca) Not In (SELECT Marca FROM RetineriSalariat WHERE YEAR ([DataInceputRetinere])=[Introd anul Inceput Retinere] AND (YEAR([DataSfarsitRetinere])=[Introd anul Sfarsit Retinere] OR YEAR([DataSfarsitRetinere]) IS NULL)))); Pentru a realiza istoricul departamentelor n acre au lucrat angajaii, precum i modificrile de salariu pentru fiecare angajat n ordine cronologic se creeaz urmtoarea interogare SQL: SELECT IstoricSalariu.Marca, Nume,DataModSal AS Data, SalariuIncadrare, "Modificare Salariu" AS Tip FROM Angajat INNER JOIN IstoricSalariu ON Angajat.Marca=IstoricSalariu.Marca UNION SELECT Angajat.Marca, Nume, DataIncepereActiv AS Data, "-" AS Sal, "Angajare departament" &DenumireDepartament FROM Departament, Angajat, AngajareSalariat WHERE Angajat.Marca=AngajareSalariat.Marca AND Departament.CodDepartament=AngajareSalariat.CodDepartament ORDER BY Marca, Data; Pentru a afia numele angajailor i salariile de ncadrare pentru o anumit dat introdus ca parametru se creeaz urmtoarea interogare SQL: SELECT A.marca, nume AS Numele, IstoricS.salariuincadrare AS Salariu, DataModSal AS DataModificareSalariu FROM Angajat AS A, IstoricSalariu AS IstoricS WHERE A.Marca=IstoricS.Marca AND [DataModSal]<=[Forms]![FrmSelectieData]![txtData] And ([DataModSal])>=All (SELECT DataModSal FROM IstoricSalariu WHERE IstoricSalariu.Marca=A.Marca); Valoarea parametrului se va prelua din controlul TXTData al formularului denumit FRMSElectieData. Salariul ce trebuie afiat este cel care corespunde celei mai mari date de modificare ce nu depete valoarea parametrului corespunde celei mai mari date de modificare ce nu depete valoarea parametrului.

52

III.6.

Interfaa aplicaiei

Accesul la aplicaia Evidena personalului se face de ctre utilizator prin introducerea unei parole n fereastra Logon, pentru a nu avea acces orice persoan care folosete calculatorul pe care este instalat acest program.

Figura 25. Fereastra Logon

Pentru a putea fi utilizat cu usurin baza de date, a fost creat o interfa ntre utilizator i baza de date propriu-zis. La deschiderea aplicaiei apare fereastra de ntmpinare (vezi figura 11).

Figura 26. Fereastra de ntmpinare Evidena personalului

Acest lucru s-a realizat cu ajutorul opiunii Sturtup din meniul Tools.

53

Meniul aplicaiei se deschide prin accesarea butonului MENIU. Formularul MENIU prezint trei taburi: Actualizri

Cutri; Rapoarte;

Figura 27. Fereastra MENIU

Actualizarea tabelei angajat i vizualizarea reinerilor salariatului, precum i calculul total al reinerilor se realizeaz prin intermediul formularului cu subformular Angajat care se deschide prin acionarea butonului ANGAJAT RETINERI. Evenimentul butonului ANGAJAT RETINERI: Private Sub Command4_Click() On Error GoTo Err_Command4_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "angajat" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_Command4_Click: Exit Sub Err_Command4_Click: MsgBox Err.Description Resume Exit_Command4_Click End Sub

54

Figura 28. Formularul ce permite actualizarea angajailor i a reinerilor acestora

Pentru cmpul CodRetinere de pe subformularul RetineriSalariat s-a realizat o list derulant din care se va putea selecta reinrerea, afindu-se n formular numele acesteia. Legtura dintre formular i subformular s-a realizat prin intermediul cmpului Marca. Controlul ce va permite introducerea datei este o caset text (TextBox) pentru care proprietatea Name este txtData, proprietatea DefaultValue este DATE(), iar proprietatea Format are valoarea ShortDate.

Apelare funcie TotalRetineri

txtData

Subformular

Figura 29. Formularul Angajat n modul Design View

Pentru calculul procentului total al reinerilor se va realiza funcia TotalRetineri n cadrul unui obiect modul. Aceast funcie va avea ca argumente marca angajatului i data pentru care se dorete calculul procentului total al reinerilor. n cadrul funciei se vor declara dou variabile, una de tip Recordset i cealalt de tip QueryDef ce va permite deschiderea interogrii ProcentTotalRetineriAngajat (vezi figura 7). Function TotalRetineri(Marca As String, data As Date) As Double 'se declara o variabila de tip QueryDef si una de tip Recordset Dim qRetineri As QueryDef Dim rs As Recordset 'se initializeaza variabila qRetineri cu obiectul de tip interogare ProcentTotalRetineriAngajat Set qRetineri = CurrentDb.QueryDefs("ProcentTotalRetineriAngajat") 55

'se atribuie valorile pentru parametrii interogarii qRetineri.Parameters("data") = data qRetineri.Parameters("MarcaAngajat") = Marca 'Se initializeaza obiectul de tip recordset asociat interogarii Set rs = qRetineri.OpenRecordset If Not rs.EOF Then 'daca exista inregistrari ce corespund cerintelor, functia va returna valoarea atrinutului PTotal TotalRetineri = rs("PTotal") Else 'daca nu exista inregistrari ce corespund cerintelor, functiava returna valoarea 0 TotalRetineri = 0 End If End Function Pe formular se va apela funcia n cadrul proprietii ControlSource a unui control caset text, avnd drept argumente Marca i txtData. Actualizarea tabelei Retineri se face cu ajutorul formularului Retineri care se deschide prin acionarea butonului RETINERE. Pentru realizarea acestui formular s-a utilizat opiunea Form Wizard din cadrul grupului de butoane Forms din meniul Create. Sursa acestui formular o constituie tabelul Retinere, iar aezarea nregistrrilor n formular este tabelar.

Figura 30. Formular ce permite actualizarea reinerilor

Pentru a introduce un nou tip de reinere n baza de date se acioneaz butonul . Noul tip de reinere se salveaz prin acionarea butonului Salvare care are urmtorul eveniment: Private Sub Command8_Click() On Error GoTo Err_Command8_Click DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 56

Exit_Command8_Click: Exit Sub Err_Command8_Click: MsgBox Err.Description Resume Exit_Command8_Click End Sub Formularul Retineri se inchide prin acionarea butonului Inchidere care are asociat urmtorul eveniment: Private Sub Command7_Click() On Error GoTo Err_Command7_Click DoCmd.Close Exit_Command7_Click: Exit Sub Err_Command7_Click: MsgBox Err.Description Resume Exit_Command7_Click End Sub Pentru afiarea rapoartelor utilizm meniul RAPOARTE.

Figura 31. Fereastra Rapoarte

Raportul care afieaz situaia reinerilor pentru o lun selectat n cadrul unei liste derulante (vezi figura 17). Pentru realizarea formularului FrmSelecieData s-a creat un obiect de tip formular cu ajutorul opiunii Create Design Form din grupul Forms al meniului Create. Pe acest formular se va aduga un control de tip caset text pentru care proprietatea Format va avea valoarea mm/yyyy, proprietatea Name va fi txtData. Pentru a afia n mod implicit data curent proprietatea Default Value a casetei text va fi egal cu DATE(). Raportul are ca surs interogarea SQL Situaia_retinerilor_luna: SELECT A.marca, nume AS Numele, IstoricS.salariuincadrare AS Salariu, 57

DataModSal AS DataModificareSalariu FROM Angajat AS A, IstoricSalariu AS IstoricS WHERE A.Marca=IstoricS.Marca AND [DataModSal]<=[Forms]![FrmSelectieData]![txtData] And ([DataModSal])>=All (SELECT DataModSal FROM IstoricSalariu WHERE IstoricSalariu.Marca=A.Marca);

Figura 32. Raportul ce afieaz situaia reinerilor salariailor pentru luna selectat n list

Preluarea datei din formular se face folosind numele formularului i al controlului coninut de acesta ce conine valoarea datei n urmtorul format [Forms]! [NumeFormular]![NumeControl]. n cazul nostru referirea se face n felul urmtor: [Forms]![FrmSelectieData]![txtData] . Pentru afiarea datei n format luna/an s-a folosit funcia FORMAT avnd ca parametru mm/yyyy. Pentru calculul reinerilor fiecrui salariat se va adaga n seciunea Detail a raportului un control de tip caseta text (TextBox) pentru care proprietatea Control Source se va apela funcia TotalRetineri avnd ca argumente marca angajatului i valoarea datei preluat din formular astfel: =TotalRetineri([Marca];[Forms]![FrmSelectieData]![txtData]). Pentru proprietatea Name a acestui control se va stabili vaoarea ProcentRetinere. Afiarea sumei reinerii pentru fiecare salariat se va realiza cu ajutorul unui control de tip caset text avnd proprietatea Control Source egal cu =[ProcentRetinere]*[Salariu]. Salariul net se va afia n cadrul unei casete text avnd proprietatea egal cu =(1-[ProcentRetinere])*[Salariu].

58

Figura 33. Raportul ce afieaz situaia reinerilor deschisn modul Desgn View

Pentru a realiza legtura dintre formular i raport s-a creat un obiect de tip Macro denumit MacroParametruz. Structura acestuia este prezentat n figura 18. Afiarea coloanei Macro Name n modul Design View al obiectului Macro denumit MacroParametru se afieaz prin apsarea butonului MacroNames din categoria Show/Hide a meniului Design. Macro Name Action DeschideFormular OpenForm InchideFormular AfiseazaFormular Anuleaza Close SetValue Close Arguments FrmSelectieData;Form;;; Edit;Dialog Form;FrmSelectieData;N o [Visible];No Form; FrmSelectieData;No Comment Deschide formular selectie data Inchide formular Seteaz valoarea proprietii visibile a fomularului cu No nchide formularul

Prima categorie MacroName din structura obiectului Macro va realiza deschiderea formularului i va fi ataat evenimentului OnOpen al raportului. A doua categorie MacroName va realiza nchiderea formularului ce permite preluarea parametrului fiind ataat evenimentului OnClose a raportului. Ataarea acestor obiecte de tip macro evenimentelor On Open i On Close ale raportului au ca efect deschiderea formularului la deschiderea raportului i respectiv nchiderea formularului o dat cu nchiderea raportului.

Figura 34. Fereastra de proprieti a raportului

Urmtoarele dou categorii Macro Name se vor ataa evenimentelor On Click butoanelor Afieaz respectiv Anuleaz din formularul FrmSelectieData. Apsarea butonului Afieaz din cadrul formularului FrmSelectieData are ca efect ascunderea acestuia ca urmare a setrii valorii proprietii Visible a formularului la valoarea No prin intermediul obiectului macro MacroParametru. Prin acionarea butonului AGENDA TELEFONICA din meniul Rapoarte se afieaz un raport cu numele i telefonul tuturor angajailor grupai alfabetic.

59

Situaia afieaz marca, numele i numrul de telefon al tuturor anjajailor grupain funcie de prima liter a anumelui.

Figura 35 Raportul Agenda telefonica

Raportul are ca surs interogarea de selecie Litera (vezi figura 9). Se realizeaz gruparea n funcie de atributul Litera. Aplicaia se nchide folodind butonul IESIRE care are urmtorul eveniment: Private Sub Command5_Click() On Error GoTo Err_Command5_Click DoCmd.Quit Exit_Command5_Click: Exit Sub Err_Command5_Click: MsgBox Err.Description Resume Exit_Command5_Click End Sub

60

Concluzii
Asistm astzi, n lume, la afirmarea unei noi revoluii industriale bazat pe evoluia extrem de rapid i spectaculoas a componentelor electronice, calculatoarelor i comunicaiilor.

Impactul acesteia asupra ntregului ansamblu de activiti economico-sociale s-a resimit pregnant n ultimul deceniu i se ateapt a fi principalul motor de cretere economic n urmtoarele decenii, punndu-se astfel bazele societii informatizate a secolului XXI. Unele elemente definitorii ale acestei societi pot fi distinse nc din perioada actual, constnd n introducerea calculatoarelor att n activitatea economic actual ct i n celelalte sfere ale vieii sociale. O societate modern nu poate fi conceput fr existena unor posibiliti extinse de comunicare n vederea unui schimb de informaii primare sau a unor informaii complexe obinute ca urmare a prelucrrii unor date pe calculatoarele electronice. Complexitatea mereu crescnd a vieii moderne determin ca n cvasitotalitatea ramurilor de activitate economic i social s fie tot mai pregnant necesitatea introducerii unor mijloace economice rapide, moderne, eficiente i fiabile care s clasifice, s stocheze, s prelucreze date i s informeze prompt pe utilizatori. n final, dup elaborarea acestei lucrri, se pot desprinde cteva concluzii:
- ofer oricrei organizaii avantajul utilizrii unei unelte sigure i precise pentru introducerea i procesarea datelor pentru evidena personalului.

- innd cont de cele artate mai sus i de faptul c pe msura trecerii timpului volumul de date va crete, este evident c existena unei aplicaii informatice care s i faciliteze munca specialistului n resurse umane este obligatorie; - tehnica de calcul i tehnica de teleprelucrare pot nlocui cu succes, acolo unde este cazul, munca manual mai puin productiv. Aplicaia privind gestiunea de locatari numit Evidena personalului.mdb cuprinde urmtoarele obiective: tabele, n care se stocheaz datele; interogri, prin intermediul crora se extrag datele; formulare, cu ajutorul crora se introduc datele; rapoarte, care sunt folosite pentru a afia situaiile asociaiilor. n urma realizrii acestei aplicaii informatice se pune problema eficienei economice a soluiei propuse, eficiena reprezentnd obiectivul principal al oricrui sistem informatic. Eficiena reprezint raportul dintre efecte economice i resurse economice.

61

Aplicaia informatic este specializat pe asistarea specialitilor n resurse umane. Mai concret, aplicaia informatic efectueaz ntr-un timp foarte scurt o serie de operaii care sunt efectuate manual de ctre specialitii resurselor umane.
Avantajele sistemului informatic: eliminarea erorilor de calcul; efectuarea de calcule complexe ntr-un timp scurt prin studiul rapoartelor obinute; regsirea rapid a informaiilor prin folosirea filtrelor pentru selectarea nregistrrilor care respect anumite criterii; import de date; export de date; - calcul automat al reinerilor; mobilitate - poate rula pe orice calculator care are ca sistem de operare Windows i suita Office.

Din cele artate mai sus se poate trage concluzia c implementarea i ntreinerea aplicaiei informatice se realizeaz cu nite costuri mai mici sau cel puin egale dect n cazul metodei utilizate n prezent avnd avantajele artate mai sus. Aplicaia informatic realizat ar putea fi inclus n cadrul sistemului informaional i ar reui n timp real s asigure culegerea, verificarea, stocarea, transmiterea i prelucrarea automat a datelor. Acesta ar imprima valene sporite sistemului informaional, att sub aspect cantitativ ct i calitativ printr-o cretere a capacitii de calcul sub aspectul volumului datelor prelucrate i a operaiilor efectuate, creterea exactitii informaiilor, sporirea complexitii situaiilor de informare-raportare, cuantificarea rezultatelor.

62

Bibliografie
[1] Aleca, O., Geambau, C., Mangiuc, D., Rdulescu, C., Oancea, M., Mihai, F., Baze de date Access 2007, Editura Informega, Bucureti 2009 [2] Dumnescu, D., Baze de date, Editura Universitrii din Ploieti, 2005 [3] Florescu, V., Nstase, P., Berbec, F., "Baze de date-fundamente teoretice si practice", Editura Infomega, Bucureti 2002 [4] Lungu, I., Bodea, C., Bdescu, G., Ioni, C., Baze de date organizare, proiectare, implementare, Ed. All, Bucureti, 1995 [5] Oprea, D., Analiza i proiectarea sistemelor informaionale economice, Editura Polirom, Iai, 1999 [6] Oprea, C., Informatic system on providing credits to economic agents, Petroleum-Gas University of Ploieti, Buletin, Economic Sciences Series, Vol. LX, No. 5B/2008, Ploieti, Romnia, 2008, p. 197. [7] Popa, Gh., Iliescu, M., Udric, M., Vasilciuc, B., Baze de date Access culegere de probleme, Editura Cison, Bucureti 2006 [8] Surcel, T., Maranu, R., Pocaliu, P., Reveiu, A., Alecu, F., Bologa, R., Tehnologii Web i baze de date, http://www.ase.ro/biblioteca/ [9] Velicanu, M., Lungu, I., Muntean, M., Ionescu, S., Sisteme de baze de date, Editura Petrion, Bucureti, 2003. [10] Nastase,P. Baze de date, Microsoft Access 2000, Ed Teora, 2000 [11] Patrascu, A., Tanasescu, A., Dusmanesc, D., Baze de date. MS-ACCESS. Teorie i aplicaii, ED Universitatii din Ploiesti, 2006 [12] Velicanu, M., Lungu, I., Muntean, M., Ionescu, S., Sisteme de baze de date, Editura Petrion, Bucureti, 2003.

63