Sunteți pe pagina 1din 93

BAZE DE DATE

Curs

Capitolul 1. Elemente de teorie a bazelor de date 1.1 Conceptul de baz de date Un sistem informatic este un grup de programe interconectate pentru a efectua un ansamblu determinat de aciuni n vederea rezolvrii unor probleme concrete. Orice sistem informatic cuprinde datele de prelucrat i seturile de aciuni care definesc prelucrrile necesare. Organizarea datelor n vederea prelucrrii pe calculator este o activitate la fel de important ca realizarea programelor sistemului. Organizarea datelor din punct de vedere informatic are dou componente: a) organizarea datelor n memoria intern a calculatorului, care cuprinde structuri de tip list, coad, stiv; b) organizarea datelor n memoria extern (discuri magnetice), care cuprinde structurile de tip fiier i baze de date. Evoluia organizrii datelor n memoria extern cuprinde urmtoarele momente: - fiere de date; - fiiere de date cu legturi; - baze de date. O baz de date poate fi definit ca un ansamblu de date elementare sau structurate accesibile unei comuniti de utilizatori, sau, ntr-o alt form, un ansamblu de fiiere intercorelate capabile s satisfac cerinele de prelucrare ale aplicaiilor componente ale sistemului informatic. Un fiier de dateeste un ansamblu de nregistrri fizice, omogene din punct de vedere al coninutului i al prelucrrii. O nregistrare fizic este unitatea de transfer ntre memoria intern i cea extern a calculatorului. nregistrarea fizic este format din una sau mai multe nregistrri logice.

O nregistrare logic este unitatea de prelucrare din punct de vedere al programului utilizator. Aceasta este format dintr-un ansamblu de cmpuri, care descriu o anumit realitate. Realizarea unei baze de date presupune analiza sistemului real pentru care se construiete baza de date, proiectarea structurii acesteia, popularea bazei de date cu datele sistemului real, exploatarea i ntreinerea ei. 1.2 Obiectivele fundamentale ale bazei de date n cadrul unei baze de date pot fi considerate patru nivele de abstractizare i de percepie: - nivelul fizic (intern); - nivelul conceptual (schematizarea bazei de cunotine); - nivelul logic (obinut din nivelul conceptual prin aplicarea unui model); - nivelul extern (percepiile utilizatorilor asupra bazei de date). Realizarea bazei de date se face astfel nct s fie ndeplinite urmtoarele obiective: - centralizarea datelor, prin care se urmrete reducerea la maxim a redundanei datelor, asigurarea unicitii datelor; - independena fizic a datelor, prin care se permite modificarea schemei interne fr a afecta schema conceptual; - independena logic, prin care modificarea schemei conceptuale nu oblig la modificarea aplicaiilor; - independena privind accesul la date sau partajabilitatea datelor, prin care mai muli utilizatori pot avea acces simultan la date fr a percepe aplicaiile care faciliteaz accesul; - integritatea datelor, asigur fiabilitatea i coerena bazei de date; - securitatea datelor, prin crearea copiilor de siguran, gestiunea unui jurnal de tranzacii n vederea actualizrii datelor, ce poate fi oricnd executat pornind de la ultima copie de siguran;
6

- confidenialitatea datelor este asigurat prin identificarea utilizatorilor, diferenierea dreptului de acces la date compatibile cu poziia utilizatorului n sistemul real. 1.3 Sistemul de gestiune al bazelor de date (SGBD) Un SGBD constituie o interfa ntre utilizator i baza de date, care asigur crearea, actualizarea i consultarea bazei de date. Principalele funciuni pe care le ndeplinete un SGBD sunt: - memorarea datelor n memoria extern prin intermediul sistemului de gestiune al fiierelor (SGF); - gestiunea datelor i a legturilor dintre ele n vederea unei regsiri rapide prin intermediul sistemului de acces la date (SGBD intern); - introducerea sau extragerea datelor ntr-o form accesibil operatorului sau utilizatorului (SGBD extern). Deci SGBD-ul este un sistem de programe prin care se asigur realizarea obiectivelor unei baze de date. Din punct de vedere al utilizatorilor, SGBD ul poate fi definit dup cum urmeaz. Un SGBD este un sistem de programe dintr-un sistem informatic care permite utilizatorilor s manipuleze eficient datele coninute n baza de date. Aceast colecie de programe utilizatorii acesteia. Evoluia dezvoltrii SGBD - urilor urmeaz ndeaproape etapele parcurse de teoria modelelor de descriere a datelor, respectiv: - modele ierarhice si retea; - modele relaionale; - sisteme avansate: SGBD orientate obiectiv, SGBD deductive, SGBD distribuite. asigur interfaa dintre o baz de date i

Modelele ierarhice i n reea sunt depite. Modelul relaional a aprut n 1970. Acest model are ca concept principal relaia sau tabelul. Bazele de date relaionale nu folosesc obiecte complexe i dinamice, nu realizeaz gestiunea datelor distribuite aceste limite ale sistemului relaional. Considerm c, pentru moment, orice baz de date trebuie abordat n primul rnd prin prisma modelului relaional, model ce va fi prezentat pe scurt n continuare. i nici gestiunea cunotinelor. A treia generaie de SGBD ce cuprinde ncearc s depeasc

1.4 Evoluia proiectrii bazelor de date Datele reprezint realiti incontestabile ale vieii umane, nsoindu-ne existena ntr-o form mai mult sau mai puin perceptibil. Orice msurtoare sau apreciere efectuat de om asupra unui element al realitii sale existeniale produce o dat. Totalitatea acestor date se constituie n baza de cunotine a unui sistem. Sistematizarea bazei de cunotine este o activitate contient care urmrete printre altele: - reducerea la minim a volumului de date fr pierderi de informaii; - sistematizarea datelor pe categorii n scopul facilitrii utilizrii acestora; - codificarea (standardizarea) datelor n vederea transformrii acestora n bunuri vandabile sau dimpotriv pentru secretizarea lor. O dat cu apariia sistemelor de calcul, datele sunt manipulate automat de ctre programe. Apar premizele constituirii noiunii de baz de date n sensul de mulime structurat de date, utilizabil prin intermediul unui sistem de calcul (calculator i programe) n scopul acoperirii, n timp cvasireal, a unor necesiti de informare formulate de factorul uman.

Utilizarea datelor n sisteme de calcul s-a dezvoltat n urmtoarele etape: - date individuale cuprinse n programe sau exterioare acestora, numite parametri; - fiiere individuale de tipul: - fiiere secveniale; - fiiere secvenial indexate; - fiiere directe; - fiiere relaive. - fiiere nlnuite cuprinznd: - fiiere inverse; - fiiere multiindex. - baze de date (dup 1970), dezvoltate prin: - modelul ierarhic; - modelul n reea; - modelul relaional. 1.5 Noiuni primare n teoria bazelor de date Din punct de vedere al coninutului, noiunea de dat, care constituie principala component a unei baze de date, a evoluat de la reprezentarea unor mrimi numerice, la texte, sunete, imagini fotografice, imagini video. n plus, noiunea de dat a primit pe lng caracterul informativ, natural, o nou caracteristic, aceea de adresare, n cadrul bazelor de date cu hipertexte. Noiunea de dat presupune luarea n considerare a unor parametri pentru o bun definire a acesteia. Dintre acetia menionm: - caracteristica sau atributul, care definete un aspect sau o latur a obiectului ce produce data; - tipul datei (numeric, alfanumeric, text etc); - domeniul (categoria sau mulimea la care aparin valorile ce pot fi luate de o caracteristic);
9

- restriciile de integritate (ordin de mrime a valorilor posibile, liste de valori, corelri); - form de prezentare ( ndeosebi pentru sunete i imagini); - dimensiune spaial sau ntindere temporar (pentru imagini); - compatibiliti de grupare n vederea obinerii unor colecii de date (relaii); - rolul n baza de date ( dat final, dat de legtur ctre alte colecii, cheie de acces); - codificarea (un nume asociat caracteristicii) i descrierea complet a acesteia. Toi aceti parametri constituie baza de cunotine a sistemului real i definrea ei constituie prima etap n proiectarea unei baze de date. Aceast etap este urmat n ordine de: - definirea nivelului conceptual prin aplicarea unui model bazei de cunotine (se obine schema conceptual sau schema logic global); - aplicarea unui SGBD i obinerea nivelului intern; - transformarea nivelului conceptual n subscheme externe. Modelul utilizat, n acest moment, pentru proiectarea bazelor de date este modelul relaional. n acest model, empiric, datele se prezint sub forma unor tabele, numite relaii, n care liniile, cu excepia primeia care descrie atributele, constituie mregistrri, numite tuple. Un model relaional este caracterizat prin trei elemente, respectiv structura relaional a datelor, operatorii relaionali (o extensie a operaiilor pe mulimi), i implementarea regulilor de integritate. Un SGBD care accept minim structura relaional a datelor este un SGBD relaional.

10

1.6 Arhitectura ANSI/SPARC Prin arhitectura bazei de date se evideniaz componentele acesteia, respectiv: - baza de date propriuzis; - SGBD ul; - mijloacele hard utilizate; - reglementri i personal implicat (utilizatori). Grupul ANSI/X3/SPARC a considerat pentru descrierea datelor o arhitectur pe trei nivele (conceptual, intern, extern). Nivelul conceptual (schem conceptual) - permite definirea tipurilor de date simple sau compuse ce descriu entiti, definirea legturilor dintre entiti i a regulilor pe care trebuie s le respecte datele. El este un nivel de descriere a datelor independent de calculator i limbaj. Nivelul intern - corespunde structurii interne de stocare a datelor i este reprezentat prin schema intern (permite descrierea datelor unei baze de date sub forma n care sunt stocate n memoria calculatorului). Sunt definite fiierele care conin aceste date, articolele din fiiere, drumurile de acces la aceste articole. Nivelul extern - este reflectat sub forma unor pri numite subscheme externe, fiecare dintre acestea cuprinznd o descriere a acelei pri a bazei de date ce este relevanat unui grup de utilizatori. Schema extern securitii i confidenialitii datelor. permite asigurarea

11

Capitolul 2. Baze de date relaionale 2.1 Domeniu, relaie, reguli de integritate Prezentarea structurii relaionale a datelor impune definirea noiunilor de: domeniu, relaie, atribut i schem a unei relaii. n cadrul bazelor de date relaionale, datele sunt organizate sub forma unor tablouri bidimensionale (tabele) de date, numite relaii. O baz de date relaional reprezint un ansamblu de relaii, prin care se reprezint att datele ct i legturile dintre date. Domeniul - reprezint o mulime de valori care poate fi definit fie enumernd elementele componente, fie definind o proprietate distinctiv a mulimii valorilor. Fie D1, D2, , Dn domenii, nu neaprat dijuncte. Produsul cartezian D1D2 Dn al domeniilor D1, D2, , Dn este definit de mulimea elementelor de forma (x1, x2, , xn ), unde x1 D1, x2 D2 ,xn Dn. Un astfel de element se numete n-tuplu sau mai scurt tuplu. Numrul n definete aritatea tuplului. Relaia - reprezint o submulime al produsului cartezian al mai multor domenii, submulime caracterizat printr-un nume i care conine tupluri cu o anumit semnificaie. Numrul tuplurilor dintr-o relaie reprezint cardinalul relaiei, n timp ce numrul valorilor dintr-un tuplu definete gradul relaiei. ntr-o relaie, tuplurile sunt distincte ntre ele. O reprezentare simplist a relaiei este tabelul bidimensional (tabel de date), n care liniile reprezint tuplurile, iar coloanele corespund domeniilor. Cnd inserm tupluri intr-o relaie, este posibil ca un atribut s fie necunoscut. Pentru reprezentarea unor astfel de atribute este utilizat o valoare special numit valoarea null. Rezultatul operatorilor <, >, =, +, -, *, / este null cnd unul din argumente este nul.

12

Mulimea numelor atributelor mpreun cu domeniile corespunztoare se numete schem relaional i o notm prin R (A1:D1, A2:D2, , An:Dm) unde A1, A2, , An reprezint atribute iar D1, D2,,Dn domeniile. Schema unei relaii mai este cunoscut i sub numele de intensia unei relaii. Spre deosebire de intensie, extensia unei relaii reprezint mulimea tuplurilor care compun la un moment dat relaia, mulime care este variabil n timp. Regulile de integritate - sunt propoziii pe care datele coninute n baza de date trebuie s le satisfac. Restriciile de integritate minimale sunt definite n raport cu noiunea de cheie a unei relaii. Exist trei tipuri de restricii structurale (de cheie, de referin, de entitate) ce constituie mulimea minimal de reguli de integritate pe care trebuie s le respecte un SGBD relaional. Un grup minimal de atribute ale cror valori identific n mod unic un tuplu dintr-o relaie se numete cheie pentru relaia respectiv. Prin urmare, o cheie a unei relaii R este o mulime K de atribute, astfel inct: a) b) pentru orice dou tupluri distinte t1, t2 ale lui R avem t1(K) t2(K); nu exist nici o submulime a lui K avnd proprietatea precedent.

Fiecare relaie are cel puin o cheie. Cnd cheia este constituit dintr-un singur atribut poart numele de cheie simpl, iar atunci cnd este format din mai multe atribute este denumit cheie compus. Dac exist mai multe chei posibile, acestea se numesc chei candidat. Una din cheile candidat va fi aleas pentru a identifica efectiv tupluri i ea va primi numele de cheie primar. Restul cheilor candidat vor purta numele de chei alternative. Un atribut dintr-o relaie care se regseste ca parte a unei chei primare dintr-o alt relaie se numete cheie extern. Cheia primar poate conine cheia extern.

13

Modelul relaional respect trei reguli de integritate stuctural. Regula 1 - unicitatea cheii: Cheia primar trebuie s fie unic i minimal. Regula 2 - integritatea entitii: Atributele cheii primale trebuie s fie diferite de valoarea null. Regula 3 - integritatea referirii: O cheie extern trebuie ori s fie null n ntregime, ori s corespund la o valoare a cheii primare asociate. 2.2 Elemente de algebr relaional Limbajul de descriere a datelor precizeaz care sunt relaiile utilizate, atributele asociate acestor relaii, structura atributelor, eventual domeniul de definiie al atributelor. Limbajul de manipulare a datelor dintr-o baz de date relaional cuprinde aspecte ce se refer la: introducerea datelor prin adugarea de tupluri la o relaie. Tuplurile pot fi introduse de utilizator sau obinute din alte relaii existente n baza de date. tergerea datelor - permite tergerea tuplurilor ce satisfac anumite condiii. modificarea datelor - permite nlocuirea valorilor unor atribute n tuplurile ce satisfac condiii date cu noi valori ale atributelor sau cu rezultate ale unor operaii aritmetice efectuate asupra unor valori existente. cutarea datelor - permite gsirea tuplurilor sau a unor pri ale tuplurilor ce satisfac condiii date. Exist dou moduri diferite care sunt utilizate pentru a exprima operaiile ntr-un model relaional: - algebric, n care filtrele (noile relaii) se obin aplicnd operatorii specializai asupra uneia sau mai multor relaii din cadrul bazei relaionale (algebr relaional). - logic, n care filtrele se obin cu ajutorul unor formule logice pe care tuplurile rezultatului trebuie s le satisfac (calcul relaional). Calculul relaional poate fi pe tupluri sau pe domenii.
14

Algebra relaional a fost introdus de Codd ca o mulime de operaii formale acionnd asupra unor relaii i producnd ca rezultat alte relaii. Unii operatori (unari) actioneaz asupra unei singure relaii, iar ali operatori (binari) acioneaz asupra a dou relaii. Operatorii realizeaz urmtoarele funcii: Select (selecie) - extrage tupluri ce satisfac o condiie specificat; Project (proiecie) - extrage atributele specificate; Difference (diferen) - elimin tuplurile care apar ntr-o relaie, dar nu apar n cealalt; Product (produs cartezian) - genereaz toate perechile posibile de tupluri considernd primul element al perechii din prima relaie, iar cel de-al doilea element din cealalt relaie; Union (reuniune) - reunete dou relaii; Intersect (intersecie) - extrage tupluri care apar n ambele relaii; Division (diviziune) - extrage valorile atributelor dintr-o relaie, care apar n toate valorile atributelor din cealalt relaie; Natural Join (compunere natural) - combin tupluri din dou relaii, cu condiia ca atributele comune s aib valori identice; Prezentm n continuare definiiile acestor operatori. Operatorul SELECT Operaia de selecie reprezint o operaie definit asupra unei relaii R, care are ca rezultat construirea unei relaii noi S, a crei schem este indentic cu cea a relaiei R i a crei extensie este construit din acele tupluri din R care satisfac o condiie menionat in cadrul operaiei. Selecia este o operaie unar care extrage o submulime pe orizontal a unei relaii date R. Condiia este un predicat ce poate conine nume de atribute, constante, operatori logici, operatori aritmetici sau de comparare. Pentru acest operator sunt utilizate diferite notatii:
15

SELECT (R,condiie), R[condiie], condiie(R).Operatorul DIVIZION

Diviziunea este o operaie binar care

definete o relaie ce conine

valorile atributelor dintr-o relaie care apar n toate valorile atributelor din cealalt relaie. Sunt utilizate diferite notaii: DIVIDE (R,S), DIVISION (R,S), RS. Formal R(n) S(m) = {t(n-m) / sS, (t,s)R} unde n>m si S. RS conine acele tupluri de dimensiuni n-m la care, adaugnd orice tuplu din S se obine un tuplu din R. Reprezentarea grafica a acestei operatii este reprezentata in fig.4.14. Operatorul Produs Cartezian Produsul cartezian reprezint o operaie a algebrei relaionale definit pe dou relaii R1 si R2, operaie care const din construirea unei noi relaii P, a crei schem se obine prin concatenarea schemelor relaiilor R1 i R2 i a crei extensie cuprinde toate combinaiile tuplurilor din R1 i R2. Sunt utilizate ca notaii: RS, PRODUCT (R,S), TIMES (R,S). Operatorul NATURAL JOIN Operatorul NATURAL JOIN - combin tupluri din dou relaii R i S, cu condiia ca atributele comune s aib valori identice. Compunerea natural se noteaz prin JOIN (R,S) sau R1 >< R2 . Operatorul -JOIN Operaia -compunere reprezint o variant generalizat a operaiei de compunere natural. Operatorul -JOIN combin tupluri din dou relaii, cu condiia ca valorile atributelor specificate s satisfac o anumit condiie. Condiia este specificat explicit n cadrul operaiei. Operatorul se reprezint cu ajutorul simbolului >< sub care se scrie condiia, sau prin JOIN (R,S, condiie).

16

Operatorul DIFFERENCE Operatorul diferen reprezint o operaie avnd ca argumente dou relaii R1 i R2 ambele cu o aceeai schem, operaia constnd din construirea unei noi relaii D, cu schema indentic cu a operanzilor i avnd extensia format din acele tupluri ale relaiei R1 care nu se regsesc n relaia R2. Notaiile utilizate pentru operaia de diferen a dou relaii sunt: R1-R2 , REMOVE (R1,R2), MINUS (R1,R2) Operatorul UNION Operaia de reuniune reprezint o operaie definit pe dou relaii R1 i R2 avnd aceeai schem, operaie care const din construirea unei noi relaii U, cu schema identic cu R1 i R2 i avnd drept extensie tuplurile din R1 i R2 luate o singur dat. Operatorul INTERSECT Operatorul intersecie are ca argumente dou relaii R1, R2 ambele cu aceeai schem, i avnd ca rezultat construirea unei noi relaii I, cu schema indendic cu a operanzilor i cu extensia format din tuplurile comune lui R1 i lui R2. 2.3 Regulile lui Codd n 1985, Codd a publicat un set de 13 reguli n raport cu care un sistem de gestiune a bazelor de date poate fi apreciat ca fiind relaional. Regula 1 - regula gestionrii datelor. Un SGBD trebuie s fie capabil s gestioneze o baz de date prin posibilitile sale relaionale. Regula 2 - reprezentrii informaiei. Intr-o baz de date relaional, informaia este reprezentat la nivel logic sub forma unor tabele ce poart numele de relaii.

17

Regula 3 - regula accesului garantat la date. Fiecare valoare dintr-o baz de date relaional trebuie s poat fi adresat n mod logic printr-o combinaie format din numele relaiei, valoarea cheii primare i numele atributului. Regula 4- regula reprezentrii informaiei necunoscute. Un sistem relaional trebuie s permit utilizatorului definirea unui tip de dat numit null pentru reprezentarea unei informaii necunoscute la un moment dat. Regula 5 - regula dicionarelor de date. Asupra descrierii bazelor de date trebuie s se poat aplica aceleai operaii ca i asupra datelor din baza de date. Regula 6 - regula limbajului de interogare. Trebuie s existe cel puin un limbaj pentru manipularea bazei de date. Regula 7 - regula de actualizare a vizualizrii. Un SGBD trebuie s poat determina dac o vizualizare poate fi actualizat i s memoreze rezultatul interogrii ntr-un dicionar de tipul unui catalog de sistem. Regula 8 - regula limbajului de nivel nalt. Regulile de manipulare asupra unei relaii sunt valabile att pentru operaia de regsire a datelor, ct i asupra operaiilor de inserare, actualizare i stergere a datelor. Regula 9 - regula independentei logice adatelor. Programele de aplicaie si activitile utilizatorilor nu depind de modul de depunere a datelor sau de modul de acces la date. Regula 10 - regula independeei logice a datelor. Programele de aplicaii trebuie sa fie transparente la modificarile de orice tip efectuate asupra datelor.

18

Regula 11 - regula independenei datelor din punct de vedere al integritii. Regulile de integritate trebuie s fie definite ntr-un limbaj relaional, nu n programe de selectie. Regula 12 - regula independenei datelor din punct de vedere al distribuirii. Distribuirea datelor pe mai multe calculatoare dintr-o reea, nu trebuie s afecteze programele de aplicaie. Regula 13 - regula versiunii procedulare a SGBD. Orice component procedural a unui SGBD trebuie s respecte aceleai restricii de integritate ca i componenta relaional. 2.4 Normalizarea relaiilor Obinerea schemei conceptuale a bazei de date face parte din procesul de analiz i proiectare a bazei de date sau, mai general, din procesul de proiectare a sistemului informatic al organizaiei. n procesul de proiectare a bazei de date se parcurg urmtoarele etape: - analiza sistemului real n vederea obinerii informaiilor necesare aplicrii modelului relaional, respectiv baza de cunotine; - modelarea bazei de cunotine prin aplicarea modelului relaional; - aplicarea unui SGBD schemei conceptuale n vederea obinerii nivelului intern i a nivelului extern (proiecii orientate utilizator ale nivelului intern). O relaie universal este o relaie ce refer toate atributele ce sunt definte n baza de cunotine. Teoretic, modelarea bazei de cunotine n vederea obinerii schemei conceptuale presupune definirea unei scheme conceptuale primare sub forma unei relaii universale i descompunerea acesteia n subrelaii urmnd teoria
19

normalizrii relaiilor. n realitate este mult mai comod, ndeosebi n cazul unor sisteme reale de ntindere, s pornim procesul de normalizare a relaiilor de la o schem conceptual primar format dintr-un set de relaii obinute prin asociarea unor atribute elementare n funcie de anumite proprieti semantice i dependene ntre acestea. Noiunea utilizat pentru normalizarea unei relaii este noiunea de dependen funcional ntre atribute sau grupe de atribute ale aceleiai relaii. Fie o relaie R(a1,a2,a3, ..., an). Notm prin X respectiv Y mulimi de atribute distincte din relaia R, adic X={ai ,ai ,ai , ..., ai }, Y={aj ,aj ,aj , ..., aj }.
1 2 3 k 1 2 3 l

Spunem c grupul de atribute X determin funcional grupul de atribute Y sau c grupul de atribute Y depinde funcional de grupul de atribute X, dac pentru orice dou realizri r, r din relaia R (rR, rR) cu r=(a1,a2,a3, ..., an), r= (a1,a2,a3, ..., an) i ai =ai , ai =ai , ..., ai =ai
1 1 2 2 k k

avem obligatoriu aj =aj , aj =aj , ..., aj =aj .


1 1 2 2 l l

Altfel spus, n relaia R nu pot exista dou realizri distincte n care grupul de atribute X s aib aceleai valori iar grupul de atribute din Y s aib valori distincte. Spunem c un atribut al unei relaii este atomic dac nici o parte a unei valori posibile a atributului nu poate avea semnificaie pentru sistemul real. n caz contrar spunem c atributul este neatomic sau compus. Spunem c o relaie R prezint redundane logice dac exist grupuri de atribute X i Y n R aa nct X determin funcional pe Y i pentru cel puin dpu realizri diferite din R atributele din X i Y au aceleai valori. Spunem c o relaie R prezint anomalii la actualizare dac exist grupuri de atribute X i Y n R aa nct X determin funcional pe Y i nici unul din atributele lui X nu aparine unei chei candidate.

20

Spunem c o relaie R prezint anomalii la reconexiune dac exist un grup de atribute X formnd o cheie candidat i un alt grup de atribute Y diferit de X cu proprietatea c prin considerarea relaiilor R1=(X,Y) i R2=(Y,Z) unde Z este grupul celorlalte atribute din R, i a relaiei R obinut prin compunerea natural a relaiilor R1 i R2 avem c R nu respect integritatea cheii, altfel spus exist n R cel puin dou nregistrri diferite cu aceleai valori ale atributelor lui X. Normalizarea unei relaii are drept scop nlturarea atributelor compuse, a redundanelor logice, a anomaliilor la reactualizare i a anomaliilor la reconexiune prin descompunerea succesiv a relaiei n dou sau mai multe relaii formate din atributele relaiei iniiale. O relaie este n forma normal unu (FN1) dac orice atribut component este atomic. Transformarea unei relaii astfel nct aceasta s fie n forma normal unu presupune definirea atributelor din baza de cunotine astfel nct nici o secven a valorilor posibile ale acestora s nu aib semnificaie pentru sistemul real. Este posibil ca pe parcursul proiectrii bazei de date s constatm necesitatea rafinrii nivelului de reprezentare a unor informaii n sistemul real, caz n care un anumit atribut nu mai este atomic i va fi nlocuit printr-un grup de atribute ce vor fi considerate atomice. De exemplu atributul adres (strad, numr, ora) este atomic dac valoarea oraului nu are semnificaie pentru sistemul real sau neatomic n caz contrar i necesit nlocuirea cu atributele adres (strad, numr) i ora. O relaie este n forma normal doi (FN2) dac este n FN1 i dac orice atribut Y care nu aparine grupului de atribute X ce definesc cheia primar nu este dependent funcional de o parte proprie a lui X. Evident orice relaie care este n forma normal unu i n care cheia primar este format dintr-un singur atribut este i n forma normal doi. Transformarea unei relaii pentru obinerea de relaii n forma normal doi se face prin considerarea
21

unei noi relaii formate din acea parte din cheia primar ce determin funcional atributul Y i, prin eliminarea atributuli Y din relaia iniial. Procesul este recursiv pentru relaiile noi obinute. O relaie este n forma normal trei (FN3) dac este n FN2 i dac pentru orice atribut Y care nu aparine grupului de atribute X ce definesc cheia primar nu exist un atribut sau grup de atribute Z astfel nct atributul Y s fie dependent funcional de grupul de atribute Z sau de grupul de atribute Z i o parte proprie a cheii primare X. Obinerea relaiilor n forma normal trei presupune eliminarea dependenelor funcionale tranzitive prin considerarea unei noi relaii formate din grupul de atribute Z, eventual i a unor atribute componente a cheii X i atributul Y, i prin eliminarea atributului Y din relaia iniial. i n acest caz procesul este recursiv pentru noile relaii obinute. Paralel sau ulterior aducerii unei relaii n forma normal trei poate fi considerat obinerea relaiilor n forma normal Boyce-Codd. Prin aceast form normal se urmrete eliminarea dintr-o relaie a dependenelor funcionale non cheie. Spunem c o relaie este n forma normal Boyce-Codd dac orice atribut Y ce depinde de intreg grupul de atribute X implic faptul c grupul de atribute X este cheie. Este recomandat ca aceast transformare s se aplice relaiilor aflate n forma normal trei. Din cele prezentate anterior rezult c prin transformarea tuturor relaiilor componente ale unei scheme conceptuale primare utiliznd procesul de normalizare crete numrul de relaii din schema conceptual final n care toate relaiile sunt n forma normal Boyce-Codd. Ca titlu informativ, menionm c n cazul unor sisteme reale complexe cu situaii de excepie rareori ntlnite n practic, procesul de normalizare continu prin transformarea succesiv a relaiilor aflate n forma normal Boyce-Codd n
22

relaii aflate n forma normal patru i, ca ultim nivel, relaii n forma normal cinci. 2.5 Asocieri ntre relaii Asocierile dintre relaii pot fi de mai multe tipuri: 1. Dup cardinalitatea asocierii. n acest caz, putem considera gradul asocierii i obligativitatea participarii relaiilor la asociere. Dup gradul asocierii avem: - asocieri de tipul unu la unu; - asocieri de tipul unu la muli; - asocieri de tipul muli la muli. Dup obligativitatea participrii entitilor la asociere exist: - asocieri pariale; - asocieri totale. Considernd simultan ambele criterii avem: - 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.

2. Dup numrul de relaii distincte care particip la asociere pot fi puse n eviden: - asocieri recursive (asocieri ale relaiilor cu ele nsele); - asocieri binare (ntre dou relaii distincte);

23

- asocieri complexe (ntre mai mult de dou relaii distincte). Asocierile de tip unu la unu sunt asocieri n care maximele cardinalitii au valoarea unu. Ele sunt reprezentate grafic sub forma
(, 1) E1 A (, 1) E2

Asocieri de tipul unu la muli- sunt asocieri n care una dintre maximele cardinalitii are valoarea unu iar cealalt are valoarea minim doi. Grafic avem una din situaiile:

(,1) E1 A

(,m) E2

(,m) E1 A

(,1) E2

Asocieri de tip muli la muli- sunt asocierile n care maximele cardinalitii au valori cel puin egale cu doi.

24

Capitolul 3. Prezentarea i lansarea n execuie a Microsoft ACCESS 3.1 Prezentarea produsului Microsoft Access face parte din produsul Microsoft Office, reprezentnd SGBD-ul din cadrul acestui produs. O baz de date Access poate fi definit ca o colecie de obiecte. Obiectele componente sunt tabelele, interogrile, formularele, rapoartele, macrourile i modulele, toate asociate unei singure baze de date. Principalele caracteristici ale sistemului de gestiune a bazelor de date Access sunt: - este relaional i lucreaz sub sistemul de operare Windows; - permite realizarea unor aplicaii complexe prin combinarea cu limbajul de programare Visual Basic; - permite comunicarea cu SQL Server, un alt SGBD produs de Microsoft; - permite accesul la baze de date din Internet, fiind un instrument util pentru crearea de pagini Web; - este autodocumentat prin help, apelabil contextual sau la cerere; - conine instrumente Wizard de asisten a utilizatorului pentru crearea de obiecte noi; - ofer posibilitatea crerii unor copii ale unei baze de date i realizeaz sincronizarea ntre aceste copii; - permite importul sau exportul de date aparinnd unor baze de date create cu alte SGBD-uri; - combin ntr-un singur fiier cu extensia mdb toate obiectele ce definesc o baz de date.

25

3.2 Lansarea produsului Access i deschiderea crearea unei baze de date Lansarea programului Access se poate efectua n unul din urmtoarele moduri: - activarea butonului corespunztor de pe bara de instrumente Office; - activarea pictogramei Access de pe suprafaa de lucru; - parcurgerea secvenei Start Programs Office Microsoft Access; - deschiderea prin dublu clic a unui fiier cu extensia mdb. Dup lansarea n execuie a programului Access, apare ecranul principal care conine: - bara de titlu cu meniul de control, titlul aplicaiei, butoanele minimize, restore/maximize, close; - bara cu meniuri, repectiv File, Edit, View, Insert, Format, Records, Tools, Window, Help; - bara cu instrumente, cu o structur variabil n funcie de obiectul selectat sau de opiunile alese: Ecranul principal conine deasemenea o caset de dialog cu opiunile: - Blank Database o baz de date nou ce va fi proiectat conform opiunilor utilizatorului; - Database wizard o baz de date nou proiectat pe un model oferit de aplicaie; - Open Existing Database deschiderea unei baze de date existente.

26

Pentru crearea unei baze de date noi putem alege una din metodele: a) Dup ce s-a lansat n execuie programul Access, se acioneaz butonul New Database, sau cu secvena File New Database caseta de dialog New cu opiunile: General - permite selectarea opiunii Blank Database (crearea unei baze de date vide). Databases - permite selectarea unuia din abloanele existente, care se potrivete scopului crerii noii baze de date. b) Prin secvena Blank Database Ok caseta de dialog File New Database. n fereastra File New Database, Access furnizeaz numele prestabilit db1.mdb pentru noua baz de date( dac exist un fiier cu numelr db1.mdb,Access propune db2.mdb). n caseta de text File Name (numele fiierului) se introduce numele fiierului noii baze de date, apoi se face clic pe butonul Create fereastra Database. Dac se dorete consultarea sau modificarea unei baze de date creat anterior, se selecteaz din fereastra principal opiunea Open an Existing
27

Database sau din meniul File Open fereastra Open n care se selecteaz baza de date dorit fereastra Database. Indiferent de opiunea aleas (Blank Database, Open Database sau Database Wizard ) apare fereastra Database. 3.3 Descrierea ferestrei Database Fereastra Database este punctul de pornire al tuturor operaiilor executate asupra bazelor de date(create de utilizator sau existente). Fiecare operaie executat n Access ncepe cu o selecie n fereastra Database. n aceast fereastr sunt gestionate urmtoarele 6 obiecte: Tables (tabele), Queries (interogri), Forms (formulare), Raports (rapoarte), Macros (macrocomenzi), Modules

(module). Tables (Tabele) memoreaz datele n formatul rnd - coloan. Fiecare coloan a tabelului este denumit cmp, iar fiecare rnd este o nregistrare(articol). Queries (interogri) - afieaz datele coninute n cel mult 16 tabele. Sunt folosite pentru a afia nregis-trrile care corespund unor criterii sau pentru a combina datele din diferite tabele ntr-o singur ferastr. Forms (formularele) sunt fereste pentru introducerea, afiarea i editarea datelor datelor. Formularele reprezint interfaa utilizatorului cu baza de date.

28

Raports (rapoarte) - sunt folosite pentru operaii de ieire, ele permind tiprirea datelor din tabele i interogri n formatul dorit. Macros (macrocomenzi) - automatizeaz operaiile Access. O comand Macro este o secven de aciuni care trebuie repetat la comanda utilizatorului. Aceast secve este programat prin alegerea dintr-o list derulant de aciuni posibile i introducerea detaliilor pentru operaia respectiv. Comenzile Macro sunt asociate de multe ori unui buton din cadrul unui formular astfel nct, dac se execut clic pe butonul respectiv, aciunile respective sunt ndeplinite. Moduls ( module) - conin codul VBA scris pentru a executa diferite operaii. Fiecare modul cret conine proceduri i funcii care vor fi executate la apariia unor evenimente particulare. Bazele de date Access conin cele 6 obiecte ntr-un singur fiier baz de date cu extensia mdb. Pentru a lucra cu un obiect din fereastr se selecteaz eticheta corespunztoare obiectului cu care se va lucra, din cele 6 obiecte afiate n partea de sus a ferestrei. Dac se face clic pe butonul Open, obiectul respectiv va fi deschis pentru vizualizare i modificare. Dac se face clic pe butonul Design, obiectul respectiv va fi afiat n modul proiectare n vederea modificrilor structurii, iar dac se selecteaz New va fi creat un obiect nou de tipul respectiv. Exist cteva comenzi rapide pentru lucrul n fereastra Database: - dublu clic pe orice obiect pentru a-l deschide; - clic dreapta pe orice obiect pentru meniu cu comenzi rapide; - clic pe numele obiectului pentru a-l redenumi; - se poate copia un obiect n Clipoard i apoi lipi n alt parte (se poate copia numai structura sau se poate copia structura cu datele).

29

Capitolul 4. Tabele (tables) 4.1 Crearea unei tabele - din fereastra Database => Tables => New => caseta de dialog New Table cu opiunile: a) Datasheet View - creeaz o tabel cu 20 de coloane i 30 de rnduri. Numele implicit al cmpurilor este Field1, Field2 etc. Pentru a schimba numele acestor cmpuri se face dublu clicpe numele implicit al cmpului, apoi se tasteaz noul nume. Dac sunt necesare mai mult de 20 de cmpuri, se poate insera un cmp nou astfel: se face clic pe coloana din dreapta celei care se va insera => meniul Insert => Column => se renumete cmpul care s-a adugat. Dup stabilirea cmpurilor, se introduc datele n foaia de date. Access va atribui tipurile de date pentru fiecare cmp n funcie de datele introduse n cmp.Tipurile de date pot fi schimbate ulterior dac se intr n modul Design View. b) Design View creeaz o tabel n modul proiectare care presupune stabilirea cmpurilor sale i a proprietilor acestor cmpuri. c) Table Wizard - Wizard creeaz o tabel pornind de la nite structuri existente, prin completarea unor casete de dialog. d) Import Table creeaz o tabel prin importarea ei dintr-un fiier extern. e) Link Table creeaz tabela curent legat la o tabel dintr-un fiier extern. Crearea unei tabele n modul Design View. Dac se selecteaz opiunea Design View din caseta New Table => fereastra Table care conine numele implicit Table1, Table2 etc. O tabel creat se poate salva i i se poate da un nume din File => Save (sau butonul Save). Dac se nchide fereastra Table i nu a fost salvat tabela, Access ntreab dac se

30

salveaz i n caz afirmativ, se cere numele tabelei care va nlocui numele implicit Table1.

n cadrul ferestrei Table se definesc: Field Name (nume cmp) - se introduce numele cmpuluin prima coloan a ferestrei. Fiecare cmp al tabelei va fi introdus pe cte o linie a ferestrei. Numele cmpurilor nu pot fi mai lungi de 64 de caractere. Ele sunt obligatorii i nu se pot atribui aceleai nume mai multir cmpuri. Data Type ( tipul datelor) - se selecteaz tipul datelor dintr-o list derulant din a doua coloan a ferestrei . Tipurile de date sunt: Text - pentru datele de tip caracter. Aceste cmpuri sunt cele mai des folosite, Access considernd acest tip prestabilit de 50 de caractere. Un cmp de tip text conine cel mult 255 de caractere. Cmpurile de acest fel pot fi utilizate pentru nume, adrese etc, ct i pentru numerele care nu intr n calcule.

31

Memo sunt cmpuri care pot conine mai mult de 255 de caractere i sunt folosite pentru a oferi comentarii descriptive. Informaiile din aceste cmpuri sunt incluse n tabel i pot fi afiate n modul Datasheet View. Un cmp memo nu poate fi cheie i nu se poate indexa dup el. Number - sunt cmpuri care pot conine numere ntregi sau zecimale. Sunt disponibile mai multe subtipuri de date pentru tipul Number care se pot selecta din lista proprietii Field Size. Date/Time - datele calendaristice i ora sunt stocate ntr-un format special fix care ocup 8 octei. Currency este un format fix, cu 4 zecimale proiectat s previn erorile de rotunjire care ar afecta operaiile contabile. AutoNumber un cmp de tipul AutoNumber conine o valoare numeric (Long Integer) pe care Access o completeaz n mod automat pentru fiecare nregistrare adugat ntr-o tabel (se incrementeaz cu 1 sau cu un numr generat aleator). Yes/No valori logice de tip True/False, Yes/No, On/Off.Cmpurile logice nu pot fi cheie, dar pot fi indexate. OLE Object pentru datele provenite de la alte programe. Aceste cmpuri permit s se stocheze n baza de date documente create de programe de prelucrare a textelor, desene, sunete, imagini scanate. Hyperlink - este un text sau o combinaie de text cu numere stocat ca un text i folosit ca adres a unei pagini Web. Lookup Wizard creeaz cmpuri care permit utilizatorului s aleag valori din cadrul unor tabele sau dintr-o list de valori. Description - n caseta de text din a treia coloan a ferestrei Table se poate introduce o descriere opional a cmpului. Field Properties (proprietile cmpului) n funcie de tipul de date ales pentru un cmp se pot stabili proprieti suplimentare n caseta Field Properties

32

din eticheta General care se gsete n partea de jos a ferestrei. Proprietile cmpurilor din General sunt: Field Size (dimensiune cmp) se introduce dimensiunea cmpului pentru date de tip text, pentru cmpurile de tip Number, dimensiunea se alege selectnd un subtip dintr-o list derulant, iar pentru cmpurile de tip Date/Time,Yes/NO, Currency, Memo, OLE Object nu se aplic. Subtipurile datelor de tip Number sunt: Byte (valori de la 0 la 255), Integer (valori de la -32768 la 32767), Long Integer (valori de la 2147483648 la 2147483647), single (numere fracionare cu pn la 7 zecimale), double (numere fracionare cu pn la 15 zecimale), Replication ID (identificator global unic care ocup 16 octei ). Format formatul de afiare a datelor. Coninutul irului de formatare poate fi un format standard (pentru cmpurile de tip Number, Date/Time, Yes/No) sau poate fi un ir de formatare personalizat cu caractere de formatare speciale, corespunztoare tipului de cmp. Decimal Places (numr de zecimale) - se poate selecta din lista derulant un numr de zecimale . Aceast proprietate se aplic numai cmpurilor de tip Currency i Number (Single, Double) i afectez numai modul de afiare. Input Mask ( masc de intrare) un ir de caractere care controleaz introducerea datelor n cmp. Masca de intrare determin pentru fiecare caracter al cmpului dac este caracter obligatoriu sau opional, tipul caracterului (alfabetic, alfanumeric, orice caracter, liter mic sau mare etc). Caption (titlu) pentru a afia titlul unui cmp (altul dect numele cmpului) n modul Datasheet . Dac aceast proprietate nu este completat, numele cmpului va fi afiat ca titlu.
33

Default Value (valoare implicit) - valoarea introdus pentru aceast proprietate va fi o valoare iniial, pe care Access o introduce automat n cmp, cnd se adaug o nregistrare n tabel. Validation Rule (regula de validare) testeaz, conform criteriului furnizat sub forma unei expresii Access, valoarea introdus ntr-un cmp. Expresiile Access vor fi descrise la capitolul Interogri . Validation Text (textul validrii) textul care va aprea pe bara de stare, cnd valoarea introdus nu respect criteriul din regula de validare. Acest text trebuie s explice n ce const regula, astfel nct un utilizator s neleag cum trebuie introdus valoarea. Required (cerut) - dac valoarea cmpului este Yes, cmpul respectiv trebuie completat, iar dac este No (cmpul respectiv admite valori nule n el). Allow zero length (permite lungime zero) se aplic cmpurilor de tip text i memo. Aceast proprietate exist mai mult pentru compatibilitate cu alte baze de date. Indexed (indexat) - dintr-o list derulant se poate alege opiunea No, care elimin un index existent (exceptnd cazul cnd acel index este cheie primar), Yes (No duplicates), care creeaz un index care admite ca valoarea cmpului s nu fie unic sau Yes (Duplicate OK), care creeaz un index care cere ca fiecare valoare a cmpului s fie unic. Indexarea asigur mecanismul de regsire rapid a datelor. Indexarea dup un cmp este folosit n criteriile de selecie i sortare. New values (valori noi) se aplic numai cmpurilor de tip AutoNumber. Dintr-o list derulant se poate selecta fie Increment (se adaug 1 la valoarea existent), fie Random (se vor genera aleator numere ntregi ca valori noi ale cmpului ). Dup completarea cmpurilor i a proprietilor lor, se salveaz tabela cu un nume. Se poate opta n continuare pentru afiarea sau modificarea structurii
34

tabelei (dac se face clic pe butonul Design) sau pentru introducerea datelor n tabel (clic pe butonul Open). Dup ce s-au introdus date n tabel, ele pot fi afiate sau modificate tot cu butonul Open. 4.2 Modificarea unei tabele Modificarea structurii unei tabele Se selecteaz tabela Design apare fereastra Table n care este afiat structura tabelei. se face clic pe un cmp i i se poate modifica numele cmpurilor, tipul datelor, proprietile cmpului. Dac tabelul nu conine nregistrri, modificrile pot fi fcute fr probleme. Dar, dac tabelul conine date pot aprea probleme. Schimbara tipurilor de date poate cauza pierderea unora dintre ele, de aceea este bine s se fac o copie de siguran a tabelei. Eliminarea unui cmp: se selecteaz rndul cu cmpul respectiv => tasta <delete>. Adugarea unui cmp: se selecteaz rndul de dedesubtul celui care se va insera => Insert => Rows Schimbarea ordinii cmpurilor: se selecteaz rndul respectiv, apoi se trage cu mousul. Se pot copia/muta cmpuri dintr-un loc n altul cu Edit => Copy/Cut => Edit => Paste (sau cu butoane). Se poate copia o tabel ntreag sau nregistrri din ea dintr-o baz de date n alt baz de date astfel: se selecteaz tabela care se va copia din baza de date surs => Edit => Copy => se deschide baza de date destinaie => se selecteaz tabela destinaie (dac este cazul) => Edit => Paste => caseta de dialog Paste => se tasteaz numele noii tabele i se selecteaz una din opiunile: Structure only (se copiaz numai structura tabelei), Structure and Data (structura i datele) sau Append Data to existing Table (se adaug date la cele existente).

35

tergerea unei tabele: se selecteaz tabela ntrebarea dac se terge tabela. Modificarea nregistrrilor din tabele

=> tasta

<delete> => Ok la

Se pot introduce nregistrri n tabele astfel: selectare tabel => Open => tabela va fi afiat n modul Datasheet View =>se introduc date n cmpuri .Tasta <tab> sau <shift> i <tab> permite trecerea la cmpul urmtor, respectiv cmpul precedent al tabelei. Datele introduse n cmpuri pot fi salvate dac se trece la nregistrarea urmtoare sau din meniul Records =>Save Record. Cnd se adaug date ntr-un cmp al nregistrrii selectate, simbolul de selecie se transform n simbolulu de editare. Anularea adugrii unei nregistrri se face cu tasta <esc>. Se poate face clic ntr-un cmp pentru a edita coninutul cmpului (aduga, terge caractere). Se poate selecta o singur nregistrare sau un grup astfel: clic pe butonul de selecie pentru o singur nregistrare sau cu tasta <shift> apsat se face clic cu mousul pe nregistrrile dorite. nregistrrile selectate se pot copia cu Edit => Copy => Edit => Paste Append sau se pot terge cu tasta <delete>. tergerea unei nregistrri nu poate fi anulat cu Undo. 4.3 Indexarea unei tabele Principalul scop al unei indexri este de a permite accesul la o anumit nregistrare sau la un grup de nregistrri dintr-o tabel.Utilizarea unui index elimin necisitate relurii operaiei de sortare de fiecare dat cnd se creeaz o list. O tabel a unei baze de date trebuie s aib o cheie primar (principal), care identific n mod unic o nregistrare. Ea poate fi format dintr-un singur cmp sau din mai multe cmpuri. Un cmp poate fi stabilit cheie primar ntr-o tabel dac acea tabel va fi folosit ca tabel principal ntr-o relaie. Utilizarea unui cmp cheie primar
36

previne duplicarea nregistrrilor dintr-o tabel. Cnd se stabilete o cheie primar Access creeaz un index bazat pe aceasta. Pentru a crea o cheie primar i un index dup aceast cheie se procedeaz astfel: - se deschide tabela n modul Design View - se selecteaz cmpul care va fi cheie primar. Dac cheia primar conine mai multe cmpuri, se ine tasta <ctrl> apsat i se selecteaz celelalte cmpuri. - clic pe butonul Primary Key de pe principal. - clic pe butonul Indexes de pe bara cu instrumente fereastra Indexes n care se va specifica succesiunea cmpurilor n cheia primar. n acest momet, tabela selectat are o cheie primar i un index corespunztor care oprete adugarea nregistrrilor cu o cheie deja existent. Se pot aduga indeci suplimentari care accelereaz cutrile anumitor nregistrri. Pentru fiecare tabel se pot crea cel mult 32 de indeci, iar 5 dintre ei pot fi multicmp. Crearea unui index suplimentar se face astfel: - se selecteaz tabela; - se selecteaz cmpul care formeaz indexul ; - din caseta Field Properties => Indexed => Yes (Duplicates OK). Dac se face clic pe butonul Indexes => fereastra n care este afiat indexul. Renunarea la un index se face prin selectarea opiunii No la proprietatea Indexed. 4.4 Relaii ntre tabele O proiectare eficient a unei baze de date implic separarea datelor n mai multe tabele, n scopul minimizrii spaiului de memorare pe disc, mbuntirii performanelor i creterii preciziei. Datele izolate trebuie legate mpreun prin intermediul relaiilor. Din punct de vedere al momentului crerii acestora, exist 2 tipuri de relaii ntre tabelele unei baze de date Access:
37

bara cu instrumente => n fiecare din

cmpurile selectate va area simbolul unei chei indicnd includerea lor n cheia

- relaii permanente care se stabiliesc dup definirea tabelelor, ele fcnd parte din structura bazei de date i sunt cerute de modelul relaional; - relaii temporare care se stabilesc ntre tabele cu ocazia definirii unor cereri de interogare, nefiind nregistrate n structura bazei de date. n cadrul unei baze de date nu este obligatoriu ca ntre tabele s existe relaii. Este posibil ca n cadrul unei aplicaii s se utilizeze i tabele independente. Relaiile se formeaz prin precizarea unei legturi ntre un cmp (sau o combinaie de cmpuri) dintr-un tabel i cmpurile corespunztoare din alt tabel. Bazelor de date relaionale le sunt specifice le sunt specifice cteva tipuri de tabele i chei care permit staabilirea relaiilor ntre tabele. Tabela de baz (principal) este tabela care conine cheia primar (principal) care identific n mod unic un obiect. O tabel de baz trebuie s aib o cheie primar, iar valorile unei chei primare se pstreaz ntr-un index. nregistrrile tabelei se pot identifica unic valorile cheii primare. Tabela de relaii este o tabel utilizat pentru a stabili legturi ntre alte tabele. Legtura se face ntre un cmp cheie primar din tabela de baz i cmpul corespunztor din tabela de relaii. Cmpul din tabela de relaii trebuie s fie cheie extern asociat unei chei primare n tabela de baz. Cheia primar este alctuit dintr-un set de valori care specific n mod unic un rnd din tabela de baz. Cheia primar poate fi un cmp sau o combinaie de cmpuri cu condiia ca ea s identifice unic o nregistrare. Cheia extern este un cmp ale crei valori corespund celor coninute de cheia primar sau de poriunea cea mai din stnga a unei chei compuse dintr-o alt tabel asociat. Tipuri de relaii 1) One-to-one (1:1) cere ca valoarea cmpului cheie dintr-o singur nregistrare a unei tabele s se potriveasc cu o valoare corespondent din cmpul asociat din alt tabel. Cmpul cheie din fiecare tabel trebuie s fie unic (nu se admit duplicate). Astfel de relaii nu sunt uzuale. O relaie 1:1 este util
38

pentru structurile mari de date care au nevoie de mai mult de 255 de cmpuri sau pentru asigurarea securitii datelor n cazul n care anumite persoane pot avea access la anumite pri ale tabelei. Exemplu ntr-o tabel cu angajaii unei instituii, fiecare poate vedea datele generale ale angajailor, dar numai efii pot vedea salariile. n acest caz se creeaz 2 tabele: Salariai (CodPersonnal, Nume, Prenume, DataNaterii, LoculNaterii, Adresa, Ora, Jude, Telefon) Salarii (CodPersonal, Salariul, Prime, Sanciuni, Calificativ). Legtura se face pe cmpul CodPersonal care este unic n fiecare tabel. 2) One-to-many (1:n) cere unicitatea cheii n tabela de baz, dar valorile din cmpul cheie pot s se potriveasc cu mai multe valori ale cmpului asociat din tabela referit (secundar). Relaiile 1:n leag un singur rnd dintr-o tabel cu 2 sau mai multe rnduri din alt tabel. Legtura este realizat printr-o relaie ntre cheia primar a tabelului de baz i cheile externe corespunztoare din tabelele corelate. Tabela din partea one (1) a relaiei trebuie s aib o cheie primar, iar tabela din partea many (n) s conin un cmp similar (cheia extern), indicnd nregistrarea la care este legat. Cheia extern trebuie s fie de acelai tip i s aib aceei dimensiune ca i cheia primar. Relaiile 1:n constituie tipul cel mai rspndit de relaii. Prezentm n continuare un exemplu.

39

3) many-to-many (m:n) sunt asocieri n care nu exist nici o relaie unic ntre cmpurile cheie ale tabelelor, iar cmpurile cheie din ambele tabele conin valori duplicat.Relaiile manytomany trebuie schimbate n relaii 1:n prin introducerea unei tabele auxiliare. Exemplul din relaiile urmtoare, ntre tabela BuletinSchimb i Curs este o relaie many-to-many, care afost transformat n 2 relaii 1:n i n:1, cu ajutorul tabelei Valute.

40

Crearea unei relaii ntre tabele. - se nchid tabelele (nu se pot crea sau modifica relaii ntre tabele deschise); - clic pe butonul Realionships ( sau meniul Tools => Relaionships) => fereastra Relaionships - din fereastra Show Table se selecteaz pe rnd tabele care particip la relaii, executnd clic pe ele apoi Add. Cnd s-au adugat toate tabelele se nchide fereastra Show Table executnd clic pe butonul Close. Dac fereastra Show Table nu este vizibil se face clic dreapta n fereastra Relaionships => Show Table (sau din meniul Relaionships => Show Table). - dup ce toate tabelele necesare sunt n fereastra Relaionships se creaz o relaie ntre tabele prin selectarea unui cmp cheie primar din tabela principal i tragerea acestuia peste cmpul corespunztor care este cheie extern n tabela asociat. - n fereastra Relaionships exist opiunea Enforce Referential Integrity (asigurarea integritii refereniale), care atunci cnd este selectat mpiedic crearea nregistrrilor orfane (care nu au nici un corespondent n tabela principal). Integritatea referenial mpiedic tergerea sau modificarea valorilor dintr-o nregistrare a tabelei principale de care depind valori asociate n tabela asociat. - se selecteaz butonul Join Type (tipul asocierii) => caseta de dialog Join Properties (proprietile asocierii) care are 3 opiuni: 1. equi join - se include nregistrrile n care cmpurile asociate din ambele tabele sunt egale. 2. left outer join -se includ toate nregistrrile din tabela principal i numai acele nregistrri din tabela asociat n care cmpurile asociate au aceeeai valoare.

41

3. right outer join - se include toate nregistrrile din tabela asociat i numai acele nregistrri din tabela principal n care cmpurile asociate au aceeai valoare. - se selecteaz una din opiuni, apoi clic pe butonul Create => relaia este afiat n fereastra Relaionships (dac este o relaie 1:n va fi afiat expresia 1:) - se nchide fereastra Relaionships pentru a reveni n ferastra Database. ergerea unei relaii: se selecteaz linia de legtur ntre tabele => se apas tasta <delete>. 4.5 Ordonarea, cutarea i filtrarea datelor Cnd se afiaz o tabel, nregistrrile sunt afiate n ordinea introducerii lor, dac nu exist o cheie primar sau dac nu s-a creat un alt index dup alt cmp. Dac tabela are o cheie primar, Access afieaz nregistrrile dup cheia primar. Pentru a ordona datele dup unul sau mai multe cmpuri, se selecteaz cmpurile (innd tasta <shift > apsat n timp ce se trage cu mousul), apoi se face clic pe buronul Sort Ascendening/Descending (sau Meniul Records Ascendending/Descending). Pentru cutare nregistrrile care conin n cmpuri valori egale cu unele valori particulare, din Edit Find caseta de dialog Find se tasteaz textul care se caut. Se poate cuta intr-un cmp sau n toate cmpurile, se poate face o cutare care s in cont de literele mari sau mici. nlocuirea automat a valorilor potrivite din cmpuri se face astfel: Edit Replace caseta Replace, unde se tasteaz ceea ce se nlocuiete, precum i textul cu care va fi nlocuit . Filtrarea permite afiarea nregistrrilor care corespund criteriului aplicat unui cmp al unei tabele. Se selecteaz textul din cmpul dorit clic pe butonul Filter by Selection se vor afia toate nregistrrile care corespund filtrului.

42

Capitolul 5. Interogri (Queries) 5.1 Prezentare general Interogrile permit selectarea acelor nregistrri care ndeplinesc criteriile dorite i combinarea nregistrrilor din mai multe tabele ntr-o singur foaie de date. Interogarea bazei de date se poate face n mai multe moduri: prin vizualizarea n totalitate a coninutului tabelelor ( foaia de date asociat tabelei); prin vizualizarea parial sau total a coninutului tabelelor cu ajutorul unor formulare sau rapoarte; prin cereri explicite. Primele 2 moduri pot fi catalogate ca interogri simple, fr restricii i pot fi formulate pentru o singur tabel. Interogarea prin cereri explicite este complex, comportnd n general mai multe tabele, ale cror date sunt filtrate prin intermediul unor criterii.Interogarea explicit este realizat n Access prin : selecie, analiz ncruciat, aciune i parametri. Interogarea prin cereri explicite permite : - selecia cmpurilor din tabele i a nregistrrilor acestora pe baza unor criterii; - ordonarea rezultatelor dup anumite criterii; - introducerea unor cmpuri calculate pe baza unor formule, care folosesc drept operanzi alte cmpuri existente n tabele, precum i posibilitatea determinrii de totaluri pe anumite cmpuri. - utilizarea ntr-o cerere a mai multor tabele; - crearea unor formulare i rapoarte care au la baz cereri de interogare create anterior;

43

- generarea de reprezentri grafice pe baza unor cereri de analiz ncruciat. Se pot crea urmtoarele categorii de interogri : selecie (select), centralizatoare (summary), parametrice (parameter), ncruciate (crosstab) i interogri de aciune (folosite la adugarea, modificarea i tergerea datelor din tabele). Crearea unei interogri se poate face n mai multe feluri: - utiliznd instrumentul Wizard; - proiectarea pas cu pas n modul Design View. 5.2 Crearea unei interogri de selecie n modul Design cu o s ingur tabel - se deschide baza de date din care se va crea interogarea. - se face clic pe eticheta Queries din fereastra Database New caseta de dialog New Query cu opiunile: New Query creeaz o interogare proprie, fr a utliza Wizard . Simple Query Wizard creeaz o interogare simpl folosind Wizard (vrjitorul) Crosstab Query Wizard Wizard creeaz o interogare cu informaii de sintez sub forma unui tabel . Find Duplicates Query Wizard Wizard creeaz o interogare care gsete valorile duplicate ale unor cmpuri Find Unmatched Query Wizard Wizard caut nregistrrile dintr-un tabel care nu au corespondent n alt tabel. - se selecteaz New Query OK fereastra Query Design caseta de dialog Show Table este suprapus peste fereastra Query Design. Etichetele din aceast caset permit selecia din toate tabelele, interogrile sau combinaiile ntre acestea. - se selecteaz tabela asupra creia se face interogarea Add tabela este adugat n interogare dup ce s-a selectat tabela (sau mai multe tabele) se face Close pentru a nchide fereastra Show Table n partea stng a
44

ferestrei Query Design va aprea lista Field a tabelei alese i n partea de jos ferestrei apare o gril goal n care se va construi cererea (numit gril QBE Query By Exemples). Access atribuie primei interogri create (dar nesalvat nc) un nume prestabilit Query1. n cazul n care se creaz interogri suplimentare fr a o salva pe prima, Access le atribuie numele prestabilite Query2, Query3 etc. n mod implicit se creaz interogri de tip SELECT. - din lista Field se aleg cu mousul cmpurile pentru interogare care vor fi adugate n partea de jos a ferestrei Query pe coloanele acestei grile vor aprea denumirile cmpurilor selectate, iar pe rndul Show al acestei grile sunt marcate casetele de validare ale coloanelor care conin numele unui cmp. - se execut clic pe butonul Query View sau se face clic pe butonul Run pentru a executa interogarea tabelei alese pe ecran apare tabela selectat care conine informaii n cmpurile alese.Deoarece nu s-a introdus nici un criteriu de selecie n rndul Criteria al grilei Query Design, nregistrrile apar n ordinea indexului dup cheia principal. Pe gril exist rndul Sort cu opiunile Not sorted, Ascending i Descending (sortarea interogrii n ordine cresctoare sau descresctoare). Implicit este Not sorted . Rndul Show precizeaz fie includerea cmpului ca o coloan n cadrul informaiilor de ieire ale interogrii, fie utilizarea acestuia numai pentru criterii de selecie. Rndul Criteria permite definirea unor criterii de selecie. n cazul unor criterii simple, ca de exemplu toate nregistrrile referitoare la un anumit ora, se introduce numele oraului respectiv n rndul Criteria. Dac se introduc mai multe valori n acelai rnd de criterii sub cmpuri diferite, Access va extrage numai nregistrrile care ndeplinesc toate (operaia logic AND (i)) criteriile menionate. Dac criteriile sunt introduse pe rnduri diferite, o nregistrare va fi inclus dac ndeplinete oricare dintre criterii (operaia logic OR(sau)). n
45

lista cmpurilor din fereastra Query apare * , care dac este selectat adaug toate cmpurile n interogare. Un cmp poate fi nlturat dac se selecteaz i se apas tasta <delete> sau poate fi mutat n alt poziie prin tragerea lui. Criteriile de selecie se introduc n celula aflat la intersecia coloanei cmpului cu linia Criteria din grila de interogare. Aceste criterii pot fi simple sau complexe. Criteriile complexe se pot construi utiliznd expresii.

5.3 Expresii O expresie este o declaraie care conine cel puin un operator i un cuvnt, identificator sau funcie. Operatori: a) aritmetici: + [total] + [taxe] valoarea din cmpul Total se adun cu cea din Date ()-30 data curent din sistem 30 cmpul Taxe * [cantitate] * [pretUnitar] valoarea din cmpul Cantitate se nmuleste cu cea din PretUnitar / [cantitate] / 12 valoarea din cmpul Cantitate se mparte la 12 # 25 #2 12 ( ctul ntreg)

46

Mod 25 mod 2 1 (rest ntreg) ^ [tva] ^ 2 valoarea din cmpul Tva se ridic la puterea a doua. b) de atribuire i comparare = atribuie unui obiect Access, unei variabile sau unei constante valoarea unui singur operand (Exemplu [cantitate] = 0 , stabileste valoarea 0 pentru cmpul Cantitate). Dar = poate fi utilizat i ca operator de comparare, care stabilete dac 2 operanzi sunt egali, rezultnd o valoare True sau False (3 = 4 , rezult o valoare False). Operatorii de comparaie compar valorile a 2 operanzi ntorc valorile logice True sau False n funcie de relaia dintre cei 2 operanzi. O excepie este cazul n care unul din operanzi are valoarea NULL, cnd se ntoarce valoarea NULL. Operatorii de comparare sunt: < (mai mic), > (mai mare), <= (mai micsau egal), >= (mai mare sau egal), = (egal), <> (diferit). c) Operatori logici - combin rezultatele a 2 sau mai multe expresii de comparare. Ei pot combina numai expresiile care ntorc valorile logice TRUE, FALSE sau NULL. AND (i Logic) - True AND True = True, True AND False = False, False AND False = False OR ( Sau Logic) - False Or False = False, True OR False = True, True Or True = True NOT (Negare Logic) - NOT True = False, NOT False = True XOR (SAU Exclusiv) - True XOR True = False, False XOR False = False, True XOR False = True d) Operatori de concatenare -& sau + care combin 2 valori text ntrun singur ir de caractere . Exemplu ABC & CBD = ABCCBD e) Operatori de identificare

47

! identific cmpuri din tabel (Personal!Nume identific cmpul Nume din tabela Personal) - deosebete numele obiectelorde ale proprietilor (TextBox1.FontSize)= 8. f) Ali Operatori (care sunt de fapt operatori de comparare). Acesti operatori ntorc True sau False dac valoarea dintr-un cmp respect sau nu specificaia operatorului ale. O valoare True are ca efect includerea unei nregistrri ntr-o interogare, iar o valoare False nu. Dac aceti operatori sunt utilizai n regulile de validare, datele introduse sunt acceptate sau nu, n funcie de valoarea logic ntoars de expresie. Aceti operatori sunt: Is - este folosit mpreun cu Null pentru a stabili dac o valoare este Null sau Not Null (Is Null , Is Not Null) Like stabilete dac o valoare ir ncepe cu unul sau mai multe caractere. Se pot folosi * i ? cu acest operator. Exemple: Like Ion - ntoarce True pentru Ion i False altfel Like Ion* ntoarce True pentru Ion, Ionescu, Ionacu Like *on* ntoarce True pentru Ion, Ionacu, Arion, Baronescu Like ?on? - ntoarce True pentru Bond, Rond, Mona i False pentru Ion, Arion, Ionacu. Between stabilete dac o valoare numeric se ncadreaz ntr-un interval dat (Ex. Between 1 and 5). In stabilete dac o valoare ir este o component a unei liste de valori.Exemplu IN ( Ca, Bc, Wa) Constante Constantele sunt combinate cu operatori pentru a crea expresii. Ele sunt de mai multe tipuri: a ) Numerice - sunt introduse ca o serie de cifre inclusiv semnul i punctul zecimal. Toate numerele fr semn sunt considerate pozitive, iar cele negative se introduc cu semnul -.
48

b) Text ( ir de caractere) - includ orice caracter tipribil i caracterele netipribile intoarse de funcia CHR$ (). Aceast funcie ntoarce caracterele indicate de o valoare numeric.CHR$ (9) ntoarce TAB, CHR$ (10) ntoarce LF (Line Feed). Caracterele tipribile includ literele de la a la Y, numerele de la 1 la 9, semnele de punctuaie i alte simboluri de pe tastatur. Expresiile Access cer includerea constantelor ir ntre gilimele duble (). Combinaiile de caractere tipribile i netipribile sunt concatenate cu &. Exemplu: Exemplu de & CHR$ (13) & CHR$ (10) & constante sir de caractere. Cnd se introduc constante ir de caractere n celulele tabelului i n grila Query Design, Access adaug el ghilimelele. c) Constante dat calendaristic sau timp - sunt ncadrate ntre caracterele #.Ex: # 1-Jan-99# sau #10:20:30# Identificatori. Un identificator este numele unui obiect. Bazele de date, tabelele, cmpurile, interogrile, formularele i rapoartele sunt obiecte n Access. Fiecare obiect are un nume care-l identific n mod unic. Uneori, pentru a identifica un subobiect , un identificator const dintr-un nume de familie (clas de obiecte), separat de numele obiectului printr-un semn de exclamare sau punct. Exemplu Cititori!Nume Cititori este numele familiei obiectului, iar Nume este numele subobiectului. Se poate folosi i punctul, dar punctul separ obiectele i proprietile lor. Funcii Funciile ntorc valori prin numele lor. Ele pot lua locul identificatorului din expresii. Exist funcii de timp i dat, pentru iruri de caractere, matematice i trigonometrice, economice, funcii de conversie a tipurilor de date (numerice, logice, de tip dat i timp, text) . Exemplu, funcia Date () returneaz data curent din sistem. Expresiile sunt folosite la crearea interogrilor, a formularelor, a rapoartelor i la validarea datelor introduse .
49

Exemple de expresii: Sibiu or Brasov se selecteaz inregistrrile care au Sibiu sau Braov in cmpul respectiv Not ( Sibiu Or Brasov) alte orae dect Sibiu sau Brasov Like [M- S] * nume care ncep cu litere cuprinse ntre M i S Like A * OR B * nume care ncep cu literele A sau B Like */*/95 - ncepnd din 01 Ianuarie 1995 pn n 31 Decembrie 1995 Like 1/*/95 - n orice zi a lunii Ianuarie 1995 Like 1/?/95 - n zilele 1 9 ale lunii Ianuarie 1995 Like */*/8? - ntre anii 1980 1989 Between # 01/01/95 # AND # 03/31/95 # - n primul trimestru din 1995 [Suma]* [Pret] * 0.05 - Expresie care utilizeaz cmpuri din tabel Pentru a simplifica procesul de adugare a criteriilor de selecie a nregistrrilor n interogare se poate folosi programul Expression Builder ( generatorul de expresii) din Access astfel : - clic pe Design pentru a fi n modul de proiectare al interogrii; - se plaseaz cursorul n rndul Criteria al cmpului pentru care se va stabili un criteriu de selecie; - se face clic pe butonul Builder de pe bara cu instrumente sau se face clic cu butonul din dreapta al mousului i se selecteaz Build din meniul afiat . - n oricare din cele 2 moduri se afiaz fereastra Expression Builder care conine o serie de butoane cu operatorii mai frcevent utilizai, o list cu funciile existente (n ordine alfabetic sau pe categorii), o list cu constante i cu diferite categorii de operatori. n partea de sus a ferstrei este o caset de text unde se intoduc expresii i unde apar funciile, constantele sau operatorii selectai.

50

5.4 Crearea interogrilor din mai multe tabele Prezentm n continuare ecranul unei interogri din mai multe tabele asociate.

Microsoft Access accept urmtoarele tipuri de asocieri: Equi-joins sau inner-joins (asocieri echivalente sau asocieri interne) sunt cele mai obinuite asocieri prin care se creaz interogrile. Ele permit afiarea tuturor nregistrrilor dintr-o tabel care au corespondente n cealalt tabel. Corespondena dintre nregistrri este stabilit de valorile identice din cmpurile care asociaz tabelele. Asocierile se bazeaz pe un cmp cheie primar unic ntr-o tabel i pe un cmp cheie extern din cealalt tabel, ntr-o relaie de tipul one-to-many. Dac nici una dintre nregistrrile tabelei care acioneaz ca parte many a relaiei nu are o valoare a cmpului care s corespund unei nregistrri din tabela din parte one a relaiei, nregistrrile din partea one nu apar n rezultatul interogrii. Asocierile de acest tip sunt bazate pe o singur colon sau pe mai multe coloane. Regulile care s permit folosirea unei asocieri cu o singur coloan pentru toate nterogrile sunt: - fiecare tabel din partea one a relaiei trebuie s aib o cheie principal (primar) cu un index care s nu permit duplicate (No Duplicates) pentru a pstra integritatea referinei. Access creaz n mod automat un index No Duplicates dup cmpul sau cmpurile cheie primar.

51

- tabela din partea many a relaiei trebuie s aib un cmp cheie extern (de acelai tip i aceeai dimensiune) cu aceleai valori ca n cmpul cheie primar din tabela principal. Cheia extern admite duplicate (Duplicate OK). Outer-joins (asocieri externe) sunt asocieri care permit afiarea cmpurilor unei tabele care sunt incluse ntr-o interogare, indiferent dac exist nregistrri corespondente n tabela asociat. Aceste asocieri sunt de 2 tipuri: left outer joins (asocieri externe stnga) i right outer joins (asocieri externe dreapta). O interogare extern stnga, afieaz toate nregistrrile din tabela care conine cheia principal unic, indiferent dac exist nregistrri care se potrivesc n tabela care conine cheia extern. O interogare extern dreapta, afieaz toate nregistrrile din tabela care conine cheia extern (partea many a relaiei), indiferent dac exist nregistrri care se potrivesc n tabela care conine cheia principal ( astfel de nregistrri se numesc nregistrri orfane). Crearea unei interogri din mai multe tabele presupune c exist relaiile necesare ntre tabelele care sunt folosite de interogare. Aceste relaii se pot stabili fie n momentul definirii structurii tabelelor sau n timpul formulrii unei cereri de interogare prin aducerea tabelelor necesare n zona de lucru i stabilirea legturilor necesare. Prima modalitate genereaz relaii permanente ntre tabele, care permit totodat definirea restriciilor de integritate referenial, cea de-a doua genereaz relaii temporare, valabile numai pentru cererea de interogare n cauz i care nu permit verificarea restriciilor de integritate referenial. In continuare, se urmeaz toi paii de la crearea unei interogri dintr-o singur tabel.

52

5.5 Crearea interogrilor cu cmpuri calculate Cu ajutorul interogrilor se pot obine informaii centralizatoare din seturile de nregistrri indicate. Pentru a obine informaii totalizatoare trebuie create interogri care s efectueze calcule cu valorile din cmpurile tuturor nregistrrilor sau ale setului selectat i trebuie utilizate funcii globale Access. Aceste funcii globale Access care se aplic tuturor grupurilor de date sunt: AVG ( ) calculeaz media valorilor dintr-un cmp. COUNT ( ) calculeaz numrul de valori nenule dintr-un cmp. MAX ( ) calculeaz cea mai mare valoare dintr-un cmp. MIN ( ) calculeaz cea mai mic valoare dintr-un cmp. SUM ( ) calculeaz totalul valorilor dintr-un cmp. FIRST ( )gsete valoarea unui cmpdin prima nregistrare. FIRST ( )gsete valoarea unui cmp din prima nregistrare. LAST ( )gsete valoarea unui cmp din ultima nregistrare. STDEV ( )calculeaz abaterea statistic standard a valorilor dintr-un cmp. Crearea unor cmpuri calculate ntr-o interogare se face astfel: - se selecteaz coloana unde va aprea cmpul calculat i se face clic pe butonul Totals () sau din meniul View Totals , care va introduce n grila de proiectare linia Totals. Se face clic pe acest rnd n coloana cmpului calculat i se selecteaz din lista derulant Expresion. - n prima linie Field se introduce formula de calcul sub forma: nume cmp calculat: expresie

53

Exemplu: Nrzile i SumaI sunt cmpuri calculate n interogarea de mai sus. Nrzile = data curent valoarea din cmpul DataImprumut i trebuie s fie >21. SumaI = valoarea din cmpul calculat Nrzile* valoarea din cmpul Penalitati/zi Dac n rndul Totals se selecteaz una din funciile globale enumerate, se va putea calcula media, min, max, count pentru domeniul specificat. 5.6 Interogri parametrice Dac o interogare trebuie executat de mai multe ori modificnd doar criteriul, se poate utiliza o interogare parametric. De exemplu dac se creeaz o interogare n care datele se selecteaz dup numele unui ora, se va selecta n Field, cmpul Ora i n rndul Criteria se va tasta [Dai numele oraului:]. Cnd se execut interogarea, se va cere de la tastatur numele oraului.

Pentru a crea o interogare parametric se procedeaz astfel: - se selecteaz tabele n zona de lucru i se aduc cmpurile dorite n grila de proiectare; - se introduce la intersecia liniei Crteria cu cmpurile care vor deveni parametri, numele parametrilor urmai de caracterul: ntre paranteze drepte. Numele parametrilor vor fi diferii de cei ai cmpurilor;

54

- se alege din meniul Query Parameters fereastra Parameters, n care se vor introduce numele parametrilor definii n grila de proiectare i tipul acestora. - butonul OK, apoi Open sau butonul Run pentru a executa interogarea care va

cere utilizatorului valorile curente ale parametrilor nainte de afiarea rezultatelor. 5.6 Interogri ncruciate Acest tip de cereri, permit generarea unor tabele complexe sub form matricial, n care numele liniilor i coloanelor reprezint criterii mixte de grupare, iar valorile din celulele tabelului se obin prin aplicarea unei funcii globale Access (Sum, Min, Max, Count) asupra unui cmp dintr-o tabel . Crearea unei cereri de interogare de acest tip, se face la fel ca o cerere care comport calcule, cu deosebirea c trebuie specificate cmpurile care furnizeaz liniile, coloanele i valorile din tabel. Se procedeaz astfel: - se selecteaz Queries New Design view fereastra Query Design; - se aduc din tabele n grila de proiectare cmpurile dorite i se stabilesc criteriile de selecie;

55

- meniul Query Crosstab query n grila de interogare apar liniile Total i Crosstab, iar n celulele din linia Total se va afia Group by; - clic n celula Crosstab a cmpului care va da numele liniilor tabelului i se va selciona Row Heading din lista derulant; -clic n celula Crosstab a cmpului care va da numele coloanelor tabelului i se va seleciona Column Heading din lista derulant; - clic n celula Crosstab a cmpului care va furniza valorile din tabel i se va seleciona Value din lista derulant; - clic n celula Total a cmpului care va furniza valorile din tabel i se va seleciona operaia dorit (Sum, Count, Avg, Max, Min etc); - meniul View Datasheet View pentru vizualizarea rezultatului. Se pot specifica mai multe cmpuri pentru a furniza numele de linii ale tabelului i numai unul pentru a da numele coloanelor. Este obligatoriu ca, cmpurile care furnizeaz numele liniilor i coloanelor s aib n linia Total criteriile Group by. La o cerere de interogare de tip analiz ncruciat pot participa una sau mai multe tabele. Tabelele care rezult n urma execuiei acestor, vor avea numele coloanelor plasate de la stnga la dreapta n ordine alfabetic. Se poate schimba aceast ordine astfel: - se creeaz o cerere de interogare de tip analiz ncruciat; - meniulView Properties fereastra Query Properties; - se selecteaz caseta Column Headings i se introduce numele coloanelor n ordinea dorit, sub forma unei liste n care separatorul este unul din caracterele , sau ;. - clic pe OK , apoi meniul View Datasheet View pentru a vedea - interogarea

56

57

Capitolul 6. Formulare (Forms) 6.1 Crearea i utilizarea formularelor Formularele Access creaz interfaa interfaa utilizatorului cu tabelele. Dei ferestrele Table View i Query View execut aceleai funcii, formularele ofer avantajul c prezint datele ntr-o form organizat. Se pot aranja cmpurile pe formular astfel nct introducerea datelor sau operaiile de editare a inregistrrilor s se fac de la stnga la dreapta i de sus n jos. Formularele sunt compuse din elemente specifice de proiectare numite elemente (obiecte) de control. Acestea sunt componentele care se vd n ferestrele i casetele din aplicaiile Windows. Casetele de text folosesc la introducerea i editarea datelor, etichetele la stocarea numelui cmpurilor, iar cadrele de obiect la afiarea graficelor. Formularele Access sunt multifuncionale, permind validarea intrrilor i generarea de formulare care include alte formulare (numite subformulare). Coninutul i aspectul unui formular depind de utilizarea lui n aplicaia de baze de date. Aplicaiile de baze de date se mpart n 3 categorii: a ) Procesarea tranzaciilor - adaug noi nregistrri ntr-o tabel sau le editeaz pe cele existente. Pentru aceste aplicaii este necesar s fie permis scrierea n tabelele legate de formular. Formularele pentru aplicaii de procesare a tranzaciilor opereaz direct pe tabele cnd au la baz o singur tabel. Dac se utilizeaz un singur formular pentru adugarea sau editarea informaiilor din mai multe tabele, se poate genera o interogare care s includ toate cmpurile necesare, apoi se creeaz formularul pe baza rezultatului interogrii (formularul se bazeaz pe o interogare, nu pe o tabel). De asemenea, exist posibilitatea ca formularul principal s utilizeze o singur tabel ca surs de date, dar s conin un subformular care folosete datele dintr-o tabel asociat.
58

b) Facilitatea lurii deciziilor - furnizeaz diverse informaii, cum ar fi grafice, tabele sau elemente specifice, dar nu permit utilizatorului s adauge sau s modifice datele (datele legate de formular se pot doar citi). Formularele pentru facilitatea lurii deciziilor se bazeaz pe operaii de interogare ncruciat care nsumeaz datele n funcie de o perioad de timp , cum ar fi de exemplu, suma vnzrilor ctre un client pe o lun, trimestru sau an. c) ntreinerea bazelor de date - execut funcii de administrare, cum ar fi crearea bazelor de date sau tabelelor dintr-o baz de date, controlulul accesului utilizatorilor la date, asigurarea securitii informaiilor prin criptare, compactarea periodic a bazelor de date i salvarea lor. Aceste aplicaii necesit accesul fr restricii la toate obiectele unei aplicaii de baze de date. Crearea unui formular nou - din ferastra DataBaseForms New caseta de dialog New Form

Opiunile casetei New Form sunt: Design View - creaz un formular nou n modul proiectare (Design) fr a utiliza Wizard Form Wizard -creaz un formular nou utiliznd Wizard, bazat pe cmpurile selectate AutoForm:Columnar - Wizard creeaz un formular pe coloane

59

AutoForm:Tabular - Wizard creeaz un formular pe coloane AutoForm:Datasheet - Wizard creeaz un formular tip foaie de calcul Chart Wizard - Wizard creeaz un formular cu diagram Pivot Table Wizard - Wizard creeaz un formular bazat pe tabele pivot Excel. Choose the table or query - list derulant care afieaz toate tabelele i interogrile existente care ar putea constitui sursa datelor pentru formular. - se selecteaz unul din tipurile de formular - din lista derulant Choose the table or query se selecteaz tabela care va fi sursa de date. 6.2 Crearea unui formular n modul Design View - din fereastra Database => eticheta Forms => New => caseta New Form - se selecteaz sursa de date din lista derulant (tabel sau interogare) => Design View => fereastra Form Design => Access creaz un formular nou, necompletat al crui nume prestabilit este Form1. - clic pe butonul Toolbox de pe bara cu instrumente, dac caseta cu instrumente (Toolbox) nu este prezent. Fereastra Form Design conine: - bara cu instrumente Form Design care conine butoane de comand rapid pentru selectarea opiunilor din meniul disponibil; - bara cu instrumente de formatare compus din butoane de comand rapid pentru opiunile de culoare, text, chenare etc; - o rigl vertical i una orizontal; - o linie vertical pentru marginea dreapt a formularului i o linie orizontal care stabilete marginea de jos a formularului; - o bar de derulare vertical i una orizontal care permit vizualizarea formularului n afara limitelor ferestrei;

60

- zona de antet a formularului (Form Header) care definete nlimea zonei rezervate antetului de formular. Ea apare dac s-a optat pentru introducerea unui antet i conine texte statice, imagini grafice i obiecte de control afiate n partea de sus a formularului. Dac formularul are mai multe pagini antetul este afiat doar pe prima pagin. - zona de antet a paginii (Page Header) care definete nlimea zonei rezervate antetului de pagin. Ea apare dac s-a optat pentru introducerea unui antet i conine texte statice, imagini grafice i obiecte de control afiate n partea de sus a paginii. Dac formularul are mai multe pagini antetul de pagineste afiat pe fiecare pagin. - zona de detaliu (Form Detail) care desparte zona Form Header de restul formularului. Pe aceast zon se gsesc (sau se plaseaz) obiectele de control care afieaz datele din tabele sau rezultate din interogri. - zona de subsol a paginii (Page Footer) care definete nlimea zonei de subsol a paginii. Dac se tipresc mai multe pagini, zona de subsol va apare n partea de jos a fiecrei pagini. - zona de subsol a formularului (Form Footer) care definete nlimea zonei de subsol a formularului. Dac se tipresc mai multe pagini, zona de subsol a formularului va apare doar n partea de jos a ultimei pagini. Se pot aduga sau terge zone de antet sau subsol selectnd View Form Header/Footer, respectiv View Page Header/Footer Caseta Toolbox permite inserarea de obiecte de control ntr-un formular, prin alegerea lor din caseta n care sunt reprezentate prin cte un simbol. Caseta este vizibil doar n modul Design i apare dac se face clic pe butonul Toolbox de pe bara cu instrumente sau dac se selecteaz din meniul View => Toolbox. Cnd caseta Toolbox este vizibil pe ecran, opiunea Toolbox din meniul View este marcat. Caseta Toobox conine 18 obiecte de control.

61

Exemplu de formular n care sunt vizibile seciunile lui (Form Header, Page

Header, Detail, Page Footer, Form Footer) i caseta Toolbox. Exist 3 categorii de obiecte de control n Toolbox: a) Obiectele de control asociate sunt obiecte ataate unui cmp din sursa de date a formularului sau subformularului. Sursa de date poate fi o tabel sau interogare. Obiectele de control asociate afieaz i actualizeaz valorile celulei de date a cmpului asociat din nregistrarea curent. Casetele de text sunt cele mai utilizate obiecte de control asociate. Poate fi afiat coninutul obiectelor grafice sau s se redea un fiier de sunet folosind un obiect OLE asociat. Se pot ataa butoane comutatoare, casete de validare i butoane de opiune cmpurilor de tip Yes/No. Toate obiectele de control asociate sunt nsoite de etichete care afieaz proprietate Caption (Titlu) cmpului la care sunt ataate. Se pot edita sau terge aceste etichete fr ca obiectul de control asociat s fie afectat. b) Obiectele de control neasociate afieaz date furnizate de utilizator, care sunt independente de sursa de date a formularului sau subformularului. Se pot folosi linii sau dreptunghiuri pentru a mprti formularul n zone care grupeaz logic obiectele. Casetele de text neasociate sunt utilizate pentru introducerea

62

valorilor care nu sunt destinate actualizrii unui cmp din baza de date surs, ci stabilirii unei valori utilizate de o expresie. Unele obiecte de control neasociate, cum ar fi casetele de text, include i etichete. c) Obiectele de control calculate folosesc expresiile ca surs de date. De obicei, expresia conine valoarea unui cmp, dar se pot utiliza n expresiile calculate i valori create de casetele de text neasociate. Obiectele de control ale caetei Toolbox sunt: - Pointer (Indicator) - activat implicit cnd se afieaz Toolbox. El deselecteaz instrumentul selectat anterior i restabilete funcia normal pentru indicatorul mousului; - Control Wizard activeaz sau dezactiveaz programele Control Wizards; - Label (etichet) creaz o caset care conine texte care nu se modific; - Text Box (caset de text) creaz o caset care afieaz i permite editarea datelor de tip text; - Option Group (grup de opiune) creaz o caset dreptughiular de dimensiune variabil, n care se pot plasa butoane comutatoare, butoane de opiune sau casete de validare. Numai un singur obiect de control din interiorul acestei casete poate fi selectat la un moment dat (cnd se selecteaz un obiect din grup, obiectul selectat anterior va fi deselectat). - Toggle Button (buton comutator) creaz un buton, care atunci cnd este selectat, comut din starea On n starea Off; - Option Button (buton de opiune) creeaz un buton rotund care se comport identic ca un buton comutator. Astfel de butoane sunt utilizate n grupurile de opiune pentru selectarea unei valori dintr-un set - Check Box (caset de validare) creeaz o caset de validare care comut ntre starea On i Off. Casetele de validare multiple trebuie plasate n afara grupurilor de opiune, asfel nct s se poat selecta mai multe opiuni;
63

- List Box (caset de list) Creaz o caset care conine o list derulant de opiuni, din care se poate selecta o valoare; - Combo Box (caset combinat) creaz o caset combinat format dintr-o caset de text editabil, n care se poate introduce o valoare i o list din care se alege o valoare dintr-un set; - Command Button (buton de comand) creeaz un buton de comand care apeleaz o comand Macro sau o procedur VBA care trateaz un eveniment; - Image (imagine) - afieaz un grafic static pe un formular sau ntr-un raport. Aceasta nu este o imagine OLE, deci nu se poate edita dup ce s-a inclus n formular. - Unbound Object (obiect neasociat) include n formular sau n raport un obiect OLE creat, cum ar fi Microsoft Graph sau Microsoft Draw; - Bound Object (obiect asociat) afieaz coninutul unui cmp OLE al unei nregistrri, dac acesta conine un obiect grafic; - Page Break (delimitator de pagin) determin imprimanta s treac la pagin nou; - Tab Control (controlul tab ) - folosit pentru a crea mai multe pagini de informaie ntr-o singur caset; - Subform (subformular) ataeaz unui formular sau raport, un subformular sau subraport. Ele trebuie s fi fost deja create nainte de selectarea acestei opiuni. - Line (linie)- creeaz o linie dreapt care poate fi redimensionat; - Rectangle (dreptunghi) creeaz un dreptunghi care poate fi redimensionat. Exemplu de formular cu butoanele de pe Toolbox

64

Exemplu de formular proiectat n modul Design i vizualizat n modul Open :

Selectarea, editarea i deplasarea elementelor i obiectelor de control Proprietile care se aplic formularului n ansamblu, seciunilor sale i fiecarui obiect de control n parte, sunt determinate de valorile existente n fereastra Properties. Pentru a vizaliza fereastra Properties asociaat unui element de control, se selecteaz obiectul respectiv execund clic ntr-un punct de pe suprafaa sa, apoi clic pe butonul Properties de pe bara cu instrumente sau clic drepata pe obiect => meniu rapid => Properties. Pentru selecia formularului se face clic la dreapta liniei care indic marginea din dreapta, iar pentru Header/Footer se face clic pe bara respectiv. Se poate modifica nlimea unei seciuni a formularului trgnd pe vertical barele seciunilor respective.

65

Se poate modifica dimensiunea unui obiect de control, executnd clic pe el => se ncadreaz de un dreptunghi cu 8 marcaje de care se poate trage. Se poate deplasa un obiect de control dac se plaseaz cursorul mousului n interiorul unui obiect selectat pn el se transform ntr-o mn, apoi se trage obiectul n poziia dorit. Fereastra Form Design include o gril (grid) care permite alinierea pe orizontal i pe vertical a obiectelor de control. Un obiect selectat poate fi copiat/mutat (Edit => Copy => Edit => Paste) i poate fi formatat. Adugarea unei etichete n zona de antet a formularului Etichetele sunt obiecte neasociate unui cmp care afieaz doar textul introdus. Ele sunt statice deorece i pstreaz valoarea introdus iniial pe toat durata afirii formularului. Pentru a aduga o tichet n antet se procedeaz astfel: - clic pe butonul Label din caseta Toolbox => se deplaseaz cursorul mousului n zona activ a formularului, el devine simbolul butonului Label combinat n partea din stnga sus cu o cruce pentru poziionare; - se poziioneaz crucea cursorului n partea din stnga sus a zonei Form Header, se trage cursorul n cruce pn n poziia colului din dreapta jos a etichetei; - n interiorul conturului etichetei, cursorul mousului devine simbolulu de editare care permite introducerea textului. Dac nu se tasteaz cel puin un caracter cel puin un caracter pentru numele etichetei dup ce s-a creat, caseta dispare la urmtorul clic al mousului. - se poate formata textul introdus, selectnd eticheta respectiv => clic pe butonul Properties => se poate selecta Font Name, Font Size, Bold, Italic etc . Adugarea casetelor de text asociate, multilinie i a casetelor calculate. Accesss utilizeaz urmtoarele 4 tipuri de casete de text:

66

a) Casetele de text cu o singur linie sunt asociate de obicei obiectelor de control formular sau cmpurilor unei tabele sau interogri. Pentru a aduga pe un formular o caset de text asociat unui cmp al sursei de date, folosind fereastra ce conine lista cmpurilor, se procedeaz astfel: - clic pe butonul Field List de pe bara cu instrumente => se afieaz fereastra cu toate cmpurile tabelei selectate ca surs de date. se selecteaz un cmp din list care se trage n zona Detail. Se repet operia de tragere cu toate cmpurile tabelei. Casetele de text vor fi folosite pentru a afia nregistrri din tabel, ale modifica sau pentru a aduga nregistrri n tabel. Se salveaz apoi forma cu File => Save sau prin nchiderea ei i i se va da un nume n locul numelui implicit Form1, Form2 etc. b) Casetele de text multilinie sunt asociate cmpurilor Memo i includ o bar de derulare vertical , care permite accesul la textul care nu ncape n caset. Pentru a aduga un cmp multilinie n zona Detail: - se selecteaz cmpul de tip Memo din lista cmpurilor afiate cu butonul Field List i se trage n formular; - clic pe butonul Properties de pe bara cu instrumente => Format => Scroll Bars => Vertical => se adaug o bar de derulare vertical casetei de text => se poate atribui valoarea Yes pentru proprietile CanGrow i CanShrink (dac se tiprete formularul). Bara de derulare vertical a unei casete de text multilinie este vizibil n modul de lucru Run i doar cnd caseta este selectat. c) Casetele de text calculate obin valori din expresiile care ncep cu semnul = i au de obicei o singur linie. Dac se include n expresie
67

valoarea unui cmp, caseta de text este asociat cmpului, dac nu ea este un obiect neasociat. Nu se poate edita valoarea afiat ntr-o caset de text calculat. ntr-o caset de text calculat se poate afia rezultatul oricrei expresii Access valide. O expresie trebuie s nceap cu semnul = i poate conine funcii Access care returneaz valori. Pentru a aduga o caset de text calculat care afieaz data curent de exemplu se procedeaz astfel: - se adaug o etichet cu ajutorul obiectului respectiv de pe Toolbox i se tasteaz n ea textul Data, apoi se adaug a caset de text neasociat nici unui cmp n care se tasteaz = Date (); - se alege un format de dat din caseta Properties i se redimensioneaz caseta de text ca s ncap Data n formatul ales. d) Casetele de text neasociate, care nu sunt calculate pot fi utilizate pentru a furniza valori comenzilor Macro i proceduriloe VBA. Exemplu de formular cu cmpurile din tabela Cititori :

6.3 Subformulare Un subformular, este un formular inclus n alt formular, pentru a permite afiarea datelor din mai multe tabele sau cereri de interogare, aflate n general n
68

relaii de tipul 1:n. Astfel, formularul principal va afia datele din partea 1 a relaiei, iar subformularul pe cele din partea n a relaiei. n mod implicit, legtura ntre un formular i un subformular reflect legtura dintre tabelele pe care se bazeaz. Pentru a crea un formular cu un subformular se procedeaz astfel: - se creeaz formularul principal trgng cmpurile din tabel n el; - se creeaz subformularul ca i cnd ar fi un formular independent; - se deschide formularul principal n modul Design; - se trece n fereastra Database, pentru a avea afiate toate formularele; - se deplaseaz pictograma corespunztoare subformularului din fereastra Database n spaiul formularului principal, ceea ce va avea ca efect adugarea unui obiect de control de tip subformular; - dac este cazul se deplaseaz obiectul de control de tip subformular la locul dorit i se redimensioneaz; - se face clic dreapta pe subformular => Properties => se verific cmpurile Link child fields i Link master fields, care sunt automat definite de Access pe baza legturilor dintre tabele. n caz contrar se stabilesc cele 2 cmpuri de legtur. Exemplu de formular principal cu un subformular care are proprietatea Default View: Datasheet:

69

Capitolul 7. Rapoarte (Reports) 7.1 Prezentare general Produsul final al aplicaiilor de baze de date este un raport. Raportul este un tip de formular destinat n mod special tipririi. Access combin datele din tabele, interogri i chiar formulare i genereaz un raport care va fi tiprit. Diferene ntre formulare i rapoarte - rapoartele sunt destinate numai tipririi i, spre deosebire de formulare, nu sunt concepute pentru a fi afiate ntr-o fereastr; - nu se poate modifica valoarea datelor din raport prin intermediul unui obiect de control din caseta Toolbox, aa cum se ntmpl la formulare; - rapoartele nu furnizeaz o vedere tabelar (Data sheet View). Sunt disponibile numai opiunile Print Preview i Report Design. - se poate crea un raport neasociat, care nu este ataat unei surse de date. Caracteristici comune pentru formulare i rapoarte - programele Report Wizard pot crea 3 tipuri de rapoarte: cu o singur coloan, de grupare/totalizare i cu etichete (funcie similar cu Form Wizard). Aceste rapoarte pot fi modificate corespunztor necesitilor. - seciunile utilizate n raport includ seciunile de antet i de subsol ale raportului, seciunile de antet i subsol de pagin i seciunile grupurilor, asemntoare cu cele ale formularelor. - obiectele de control se preiau din caseta Toolbox ca la formulare. - subrapoartele pot fi incorporate n rapoarte n acelai mod n care se insereaz un subformular n formularul principal. Elementele de legtur ntre sursa de date i rapoarte sunt controalele, zonele de text (pentru datele numerice i alfanumerice), cadrele (pentru imagini i grafice) i etichetele (pentru titluri, linii separatoare).
70

Tipuri de rapoarte n Access a) Rapoarte cu o singur coloan care afiez toate cmpurile unei nregistrri dintr-o tabel ntr-o coloan de casete de text. O etichet indic numele cmpului i o caset de text aflat la dreapta etichetei furnizeaz valorile. Opiunea AutoReport creaz un raport cu o singur coloan. b) Rapoarte dispuse pe rnduri care furnizeaz cte o coloan pentru fiecare cmp al unei tabele sau interogri i tipresc valoarea fiecrui cmp al unei tabele sau interogri i tipresc valoarea fiecrui cmp al nregistrrii pe rnduri plasate sub captul de coloan. c) Rapoarte multicoloan care se obin din rapoartele cu o singur coloan. Informaiile care nu ncap pe prima coloan se continu pe doaua coloan i aa mai departe. d) Rapoarte cu grupare/totalizare care nsumeaz datele pe grupuri de nregistrri i adaug apoi totaluri generale la sfritul raportului. e) Etichetele pentru coresponden constituie un tip de raport multicoloan, proiectat s tipreasc n mod grupat nume i adrese sau alte informaii provenite din mai multe cmpuri. f) Rapoarte neasociate care au la baz surse de date nelegate, cum ar fi tabele sau interogri. 7.2 Crearea unui raport Pentru a crea un raport se procedeaz astfel: - din fereastra Database => Reports => New => Caseta de dialog New Raport cu opiunile: Design View - creeaz raport propriu fr Wizard Report Wizard - Wizard creeaz automat un raport bazat pe cmpurile selectate AutoReport Columnar - Wizard creeaz automat un raport cu o singur coloan
71

AutoReport Tabular - Wizard creeaz automat un raport dispus pe rnduri Chart Wizard - Wizard creeaz automat un raport cu diagrame (grafice) Label Wizard - Wizard creeaz automat un raport formatat pentru tiprirea pe etichete - rapoartele (ca i formularele) necesit o surs de date, care poate fi o tabel sau interogare. Se selecteaz din caseta din partea de jos, numele tabelei sau interogrii de unde vor fi luate datele => Ok. Dac se selecteaz opiunea Design View => un ablon vid cu numele implicit Report1 care trebuie completat. Structura unui raport este ierarhizat pe mai multe seciuni: antetul/subsolul raportului care apare la inceputul/ sfritul raportului, antetul /subsolul de pagin care apare la nceputul/sfritul fiecrei pagini, antetul /subsolul de grup care apare la inceputul/sfritul fiecrui grup i seciunea de detaliu (care este zona de lucru a raportului). Controalele care apar n corpul raportului pot fi: independente, dependente (care vin din tabele i cereri de interogare) i calculate. Adugarea/tergera seciunilor din raport - Pentru a aduga simultan seciunile Report Header/Footer (antet/subsol de raport) dac nu exist pe ablon, din meniul View => Report Header/Footer. - Pentru a aduga simultan seciunile Page Header/Footer (antet/subsol de pagin) dac nu exist pe ablon, din meniul View => Page Header/Footer. - Pentru a aduga Group Header/Footer (antet/subsol de grup), se selecteaz butonul Sorting and Grouping => caseta Sorting and grouping => proprietatea GroupHeader/Footer => Yes. Dac se grupeaz datele pe mai multe niveluri (grup, subgrup, sub-subgrup) se pot aduga seciuni de antet

72

i subsol pentru fiecare nivel de grupare. Aceasta adaug n raport cte o pereche de seciuni pentru fiecare subgrup. Proprietile Force New Page (salt de pagin nainte de tiprirea seciunii) i Keep Together (far salt de pagin) ale seciunilor unui grup controleaz delimitatoarele de pagin introduse manual. Pentru a configura aceste proprieti, se execut dublu clic pe chenarul seciunii grupului => caseta de dialog Properties => se atribuie valoarea Yes sau No acestor proprieti. - Apariia seciunilor Page Header/Footer pe prima i ultima pagin din raport se face astfel: Meniul Edit=> Select Raport => butonul Properties de pe bara cu instrumente => caset de dialog => Format => Page Header/ Footer => All Pages - Pentru a terge seciunea Detail sau numai una din seciunile Report Header /Footer, Page Header /Footer, se terg toate obiectele de control din seciune i se trage n sus bara despritoare de dedesubt, astfel nct seciunea s nu mai aib nlime. Pentru a terge zona de subsol, se trage marginea inferioar a raportului pn la bara Report Footer. Aceste operaii nu terg de fapt seciunile, dar dac ele nu au dimensiune, nu vor fi tiprite. - Pentru a terge o pereche de seciuni Report Header/Footer sau Page Header/Footer => meniul View => Report Header/Footer Page=> Page Header/Footer. Dac seciunile conin obiecte de control, apare un mesaj de avertizare care spune c se vor pierde informaiile la tergerea seciunii. - Pentru a terge o seciune de antet /subsol pentru un grup => se selecteaz butonul Sorting and Grouping al barei cu instrumente => caset => proprietatea Group Header/Footer => valoarea No. Toate operaiile de aducere a cmpurilor din lista de cmpuri a tabelei sau cererii de interogare n zona de lucru n vederea generrii de controale dependente, redimensionarea, deplasarea i modificarea acestora se fac la fel ca la formulare. Aducerea cmpurilor din lista de cmpuri n zona de lucru
73

(seciunea Detail) va crea pentru fiecare o etichet i un control dependent n care vor fi afiate valorile cmpului. Dac se dorete o situaie gen tabel, atunci etichetele trebuie mutate i poziionate corespunztor n seciunea antet de pagin (Page Header) sau antet general (Report Header). Odat cu definirea rapoartelor, toate controalele dependente vor moteni proprietile cmpurilor din tabele sau din cererea de interogare pe care se bazeaz. n anumite situaii, pentru anumite controale este necesar modificarea unora dintre proprietile acestora, care se face astfel: - se selecteaz controlul i din meniul View => (sau butonul Properties) => lista de proprieti => se selecteaz proprietate dorit i se modific. n afara proprietilor particulare ale fiecrui control, exist o serie de proprieti generale pentru fiecare tip de control, care sunt motenite de toate controalele de tipul respectiv, dar care pot fi modificate. Printre aceste proprieti se numr:tipul i dimensiunea caracterelor, alinierea, prezena sau absena etichetei. Inainte de a ncheia crearea raportului aceste proprieti se pot modifica. Se afieaz lista de proprieti, se activeaz butonul corespunztor tipului de control dorit din bara de instrumente, care va afia lista de proprieti aferent acestuia, se fac modificrile cerute i apoi se nchide lista de proprieti. 7.3 Sortarea i gruparea datelor Operaiile de sortare i grupare a datelor apar n aplicaiile economice care utilizeaz un volum mare de date. Pentru a grupa i sorta datele se procedeaz astfel: - n modul de lucru Design => meniul View => Sorting and Grouping => ferastr de dialog - n prima linie din coloana Field/ Expression se selecteaz un nume de cmp sau se introduce o expresie, se continu cu a doua linie etc - n coloana Sort order se stabilete ordinea de sortare crestoare (Ascending) sau descresctoare (Descending). Implicit este Ascending.
74

- prima linie din fereastr corespunde primului nivel de sortare, a doua celui de-al doilea etc. Se nchide fereastra dac se dorete numai sortarea datelor. n unele situaii sortarea datelor este nsoit de regruparea acestora pe baza criteriilor de sortare. Access ofer maxim 10 niveluri de sortare imbricate i implicit tot attea niveluri de regrupare, deoarece criteriile de regrupare sunt chiar cmpurile de sortare care definesc nivelurile. - dup specificarea operaiei de sortare, regruparea datelor se face prin definirea anteturilor i subsolurilor n partea de jos a ferestrei de dialog care conine Group Properties, astfel: se selecteaz cmpurile sau expresia care definete caracteristica de grupare se stabilesc proprietile de grupare n lista Group Properties: Group Header adugarea sau suprimarea unui antet grup. Group Footer - adugarea sau suprimarea unui subsol grup Group on - specific criteriile de grupare care vor opera asupra cmpurilor de grupare. Opiunile disponibile sunt dependente de tipul cmpului, iar n cazul expresiilor sunt afiate toate. Pentru un cmp de tip Dat/Or opiunile sunt:Each Value (aceeai valoare), Year, Qtr, Month, Week, Day, Hour, Minute. Pentru un cmp de tip Autonumber, Curency sau Number opiunile sunt: Each Value i Interval. 7.4 Crearea unui raport n modul Design View Se deschide baza de date existent (n exemplulu nostru Biblio.mdb) => fereastra Database => eticheta Report => New => fereastra New Report => Design View i se selecteaz tabela care este sursa datelor (tabela Edituri) => OK => un ablon vid cu

75

seciunea Detail i numele implicit Report1 => meniul View => Report Header/Footer i Page Header/Footer. n seciunea Report Header se pune obiectul de control Label de pe Toolbox n care se scrie textul: Editurile in ordine alfabetica, iar n seciunea Page Header pun obiectele de control Label de pe Toolbox n care se scriu textele: Nume editura, Oras, Telefon, Director care se incadreaz cu 2 linii desenate cu obiectul de control Line de pe Toolbox.Se face clic pe butonul Field List de pe bara cu instrumente pentru a avea afiate cmpurile tabelei Edituri. Se aduc prin tragere cu mousul n zona Detail, pe rnd cmpurile: Nume Editura, Oras, Telefon, Director. Se terg etichetele care apar atunci cnd sunt aduse aceste cmpuri n Detail. Se trage de dedesubtul seciunlor Page Footer i Report Footer n sus pn aceste seciuni nu mai au dimensiune => ele nu vor aprea n raport. Se nchide raportul => Access ntreab dac se salveaz schimbrile =>Yes => se cere numele raportului care va nlocui numele implicit Raport1 => se tasteaz noul nume => din fereastra Database => Preview => apare rezultatul raportului proiectat. n modul Design raportul arat astfel:

76

n modul Preview acest raport arat astfel:

Exemplu de raport care are ca surs de date tabela Cititori.

Se creeaz seciunile Judet i Oras astfel: clic pe butonul Sorting and Grouping => caseta Sorting and Grouping => se completeaz urmtorele informaii:numele grupurilor (Judet i Oras) care vor permite gruparea datelor,

77

includerea antetelor de grup (Group Header-Yes), opiunile Group On i Group Interval. Raportul n modul Design va arta astfel:

Afiarea raportului n modul Preview va fi:

78

Exemplu de raport care are ca surs de date o interogare i folosete cmpuri calculate Datele sunt grupate dupa Oras i sunt incluse att antetul ct i subsolul de grup (Oras Header i Oras Footer).

Rezultatul afirii n modul Preview al raportului va fi:

79

7.5 Crearea subrapoartelor Un raport principal cu un subraport se creeaz n acelai mod ca formularul principal cu subformularul. Se creeaz raportul principal i subraportul ca 2 rapoarte independente, apoi se trage subraportul n raportul principal. Raportul principal conine cmpul NumeEditura, iar subraporul cmpurile: Autor, Titlul, anAparitie. n modul Design raportul principal i subraportul vor arta astfel:

Rezultatul afirii raportului principal cu subraport in modul Preview:

80

81

Capitolul 8. Exerciii 8.1 S se creeze o baz de date cu numele Spit.mdb care conine tabelele: Spital cu cmpurile: CodSpital (Number, Long Integer, cheie primar), NumeS (Text, 15), AdresaS (Text,15), OrasS (Text ,10), JudetS (Text,2), TelefonS (Text,9). Medici cu cmpurile: CodMedic (Number, Long Integer, cheie primar), CodSpital (Number, Long Integer, cheie extern), NumeM (Text, 15), PrenumeM (Text, 15), AdresaM (Text, 15), OrasM ( Text ,10), JudetM (Text,2), TelefonM (Text,9), SpecialitateM (Text,12) Pacienti cu cmpurile: CodPacient (Number, Long Integer, cheie primar), NumeP (Text, 15), PrenumeP (Text, 15) , AdresaP (Text, 15), OrasP ( Text,10), JudetP (Text,2), DataNasterii (Date/Time), Boala(Text,20), CodMedic (Number,Long Integer,cheie extern), NrSalon (Text,3). a) S se stabileasc relaiile ntre cele 3 tabele: relaia 1:n ntre Spital i Medici pe cmpul CodSpital i relaia 1:n ntre Medici i Pacieni pe cmpul CodMedic. b) S se introduc date n cele 3 tabele. c) S se proiecteze 3 formulare care au ca surse de date cele 3 tabele, s se afieze datele din tabele n aceste formulare i s se introduc cu ajutorul acestor formulare date n cele 3 tabele. c) S se afieze datele din cele 3 tabele pentru a verifica introducerea noilor date cu ajutorul formularelor. d) S se creeze o interogare care s conin cmpurile: NumeS, AdresaS, OrasS, TelefonS i s se afieze spitalele dintr-un jude (SB) ordonate cresctor dup OrasS.

82

e) S se creeze o interogare care s conin cmpurile: NumeM, PrenumeM, AdresaM, OrasM, TelefonM, SpecialitateM i s se afieze medicii dintr-un jude (SB) ordonati alfabetic dup OrasM i dup NumeM. f) S se creeze o interogare care s conin cmpurile: NumeP, PrenumeP, AdresaP, OrasP, BoalaP i s afieze pacienii dintr-un anumit salon. g) S se creeze o interogare care s conin cmpurile: NumeP, PrenumeP, AdresaP, OrasP, TelefonP, BoalaP, NrSalon i s se afieze pacienii tratai de un anumit medic. h) S se creeze o interogare care s conin cmpurile: NumeP, PrenumeP, AdresaP, OrasP, TelefonP, NrSalon i s se afieze pacienii care sufer de o anumit boal. i) S se creeze o interogare care s conin cmpurile: NumeM, PrenumeM, AdresaM, OrasM, SpecialitateM, NumeS i s se afieze medicii dintr-un jude (SB) ordonati alfabetic dup OrasM i dup NumeM. j) S se creeze o interogare care s conin cmpurile: NumeM, PrenumeM, AdresaM, OrasM, NumeS i s se afieze medicii de o anumit specialitate ordonai alfabetic dup NumeM . k) S se creeze o interogare care s conin cmpurile: NumeM, PrenumeM, AdresaM, OrasM, SpecialitateM, NumeS i s se afieze medicii dintr-un jude (SB) ordonati alfabetic dup OrasM i dup NumeM. 8.2 S se creeze o baz de date numit Schimb.mdb care conine urmtoarele tabele: Valute care are cmpurile: Codvalut (Number, Long Integer, >0, cheie primar), NumeValuta (Text, 3). Curs care are cmpurile: CodValut (Number, Long Integer, >0,cheie extern) , DataCurs (Date/Time), PretVinz (Number, Long Integer, >0), PretCump (Number, Long Integer, >0).

83

Clienti care are cmpurile: CodClient (Number, Long Integer, >0, cheie primar), Nume (Text,15), Prenume (Text,15), Adresa (Text, 20), Oras (Text,15), Judet (Text,2) BuletinSchimb care are cmpurile: Nrdocument (Number,Long Integer,>0,cheie primar), Data (Date/Time), TipOperatie (Text,1), Codvalut (Number,Long Integer,>0,cheie extern), CodClient (Number,Long Integer, >0, cheie extern), Suma (Number,Long Integer), PretUnitar(Number,LongInteger).

a) S se stabileasc urmtoarele relaii ntre tabele:

84

b) S se introduc urmtoarele date n tabele:

85

c) S se creeze urmtoarea interogare:

d) S se creeze interogarea urmtoare care afieaz clienii care au schimbat DM sau USD i domiciliaz n Sibiu sau Brasov

86

e) S se creeze interogarea urmtoare care afieaz clientii dintr-un anumit oras, dat ca parametru:

f) S se creeze o interogare vare s afieze toi clienii care au vndut valut:

87

g) S se creeze o interogare vare s afieze toi clienii care au vndut sau cumprat valut ntre 2 date calendaristice, care sunt parametri :

h) S se creeze o interogare care s foloseasc funciile Access: Count, Avg, Min, Max i s aib cmpul calculat Total care insumez valoarea n lei a valutei vndute de clieni:

i) S se creeze o interogare ncruciat care s afieze totalul n lei pentru valutele schimbate, pe fiecare lun:

88

j) S se creeze un formular care s introduc date n tabelul Clienti (n seciunea Detail sunt cmpuri din tabela Clienti, n Page Header este o etichet, iar n Form Header este un obiect Text Box):

k) S se creeze un formular principal cu un subformular (pentru subformular se va selecta butonul Properties Default view Datasheet :

89

l) S se creeze un raport care s aib clienii care au schimbat valut grupai dup cmpul Judet i Oras:

m) S se creeze un raport care s afieze clienii care au vndut valut cu subtotaluri pe fiecare Oras i Total pe toate oraele:

90

n) S se creeze un raport cu un subraport:

8.3 S se creeze o baz de date Agentie.mdb care conine urmtoarele tabele: Vanzatori care are cmpurile: CodPersonal (Number, Long Integer, > 0, cheie primar), NumeProprietar (Text,15), PrenumeProprietar (Text, 15), AdresaProprietar (Text, 20), OrasProprietar (Text, 15), JudetProprietar (Text,2), TelefonProprietar (Text,9). Agenti care are cmpurile: CodAgent (Number, Long Integer, > 0, cheie primar), NumeAgent (Text,15) , PrenumeAgent (Text,15), AdresaAgent (Text, 20), OrasAgent (Text,15), JudetAgent (Text,2), TelefonAgent (Text,9). Locuinte care are cmpurile: CodLocuinta (Number, Long Integer, >0, cheie primar), CodPersonal (Number, LongInteger, > 0, cheie extern), CodAgent
91

(Number, Long Integer, >0, cheie extern), AdresaLocuinta (Text, 20), OrasLocuinta (Text, 15), Tip (Text,10), NrCamere ( Text,3), PretCerut (Number, LongInteger, > 0), PretVinzare (Number, LongInteger, > 0), DataVinzare (Date/Time). Obs. Tip poate fi: vil, cas, garsonier, apartament, iar PretVinzare i DataVinzare nu se completeaz dac locuina nu s-a vndut. a) S se stabileasc relaiile: 1:n ntre tabelele Vanzatori i Locuinte, 1:n ntre Agenti i Locuinte . b) S se introduc date n cele 3 tabele. c) S creeze un formular care introduce date n tabelele Vanzatori i Locuinte. d) S se creeze un interogare care s afieze toate apartamentele de 2 camere din Bucuresti care au preul < 150.000.000 lei i care nu s-au vndut nc. Interogarea va conine cmpurile: AdresaLocuint , PretCerut, NumeAgent, TelefonAgent. e) S se creeze un interogare care s afieze toate apartamentele nevndute din Bucuresti care au preul <250.000.000 lei i 150.000.000. Interogarea va conine cmpurile: AdresaLocuint , PretCerut, NrCamere, NumeAgent, TelefonAgent. f) S se creeze un interogare care s afieze toate garsonierele nevndute din toate oraele. Interogarea va conine cmpurile: AdresaLocuint, OrasLocuint, PretCerut, NumeAgent, TelefonAgent i va fi ordonat cresctor dup numele oraului. g) S se creeze un raport care s afieze toate locuinele de 2 camere care n-au fost vndute. Raportul va conine antetul de raport : Locuine cu 2 camere i antetul de pagin: OrasLocuint, JudetLocuint, PretCerut, Tip , NumeProprietar, PrenumeProprietar, TelefonProprietar, NumeAgent, TelefonAgent. Raportul va afia informaiile n ordinea alfabetic a oraelor. h) S se creeze un raport care s afieze toate locuinele de 2 camere nevndute, cu preul < 200000000 din Bucurei. Raportul va conine antetul de raport :
92

Locuine cu 2 camere din Bucuresti i antetul de pagin: AdresaLocuinta,Tip, PretCerut, NumeProprietar, PrenumeProprietar, TelefonProprietar, NumeAgent, TelefonAgent. i) S se creeze un raport care s afieze toate locuinele de 2 camere cu preul < 200000000, iar OrasLocuinta va fi cerut ca parametru. Raportul va conine antetul de raport : Locuine cu 2 camere i antetul de pagin: OrasLocuinta, AdresaLocuinta,Tip, PretCerut, NumeProprietar, PrenumeProprietar, TelefonProprietar, NumeAgent, TelefonAgent. j) S se creeze un raport care s afieze toate aprtamentele de 3 camere care au fost vndute. Raportul va conine cmpurile: OrasLocuinta, AdresaLocuinta, PretVanzare, NumeProprietar, PrenumeProprietar. Raportul va conine antet de raport, antet de pagin antet de grup dup OrasLocuinta. k) S se creeze un raport care s afieze toate locuinele de tip cas care au fost vndute. Raportul va conine cmpurile: OrasLocuinta, AdresaLocuinta, NrCamere, PretVanzare, NumeProprietar, PrenumeProprietar. Raportul va conine antet de raport, antet de pagin antet de grup dup OrasLocuinta. l) S se creeze un raport care s afieze toate locuinele de tip vil care au fost vndute. Raportul va conine cmpurile: OrasLocuinta, AdresaLocuinta, NrCamere, PretVanzare, NumeProprietar, PrenumeProprietar. Raportul va conine antet de raport, antet de pagin i antet de grup dup OrasLocuinta. m) S se creeze un raport care s afieze toate locuinele care au fost vndute. Raportul va conine cmpurile: OrasLocuinta, AdresaLocuinta Tip, NrCamere, PretVanzare, NumeProprietar, PrenumeProprietar. Raportul va conine antet de raport, antet de pagin i antetele de grup: OrasLocuinta,Tip. n) S se creeze un raport care s afieze toate locuinele care au fost vndute. Raportul va conine cmpurile: NumeAgent, TelefonAgent, OrasLocuinta, AdresaLocuinta,Tip, NrCamere, PretCerut, NumeProprietar, PrenumeProprietar. Raportul va conine antet de raport, antet de pagin i antetul de grup NumeAgent.
93

o) S se creeze un raport care s afieze toate locuinele nevndute.Raportul va conine cmpurile: NumeAgent, TelefonAgent, OrasLocuinta, AdresaLocuinta,Tip, NrCamere, PretCerut, NumeProprietar, PrenumeProprietar, TelefonProprietar. Raportul va conine antet de raport, antet de pagin i antetul de grup NumeAgent . p) S se creeze un raport care s afieze toate locuinele nevndute. Raportul va conine cmpurile: NumeAgent, TelefonAgent, OrasLocuinta, AdresaLocuinta,Tip, NrCamere, PretCerut i cmpul calculat PretNou care va afia un pret cu 10% mai puin dect PretCerut. Raportul va conine antet de raport, antet de pagin i antetul de grup NumeAgent. r) S se creeze un raport care s afieze toi agenii imobiliari care au vndut mai mult de 10 locuine. Raportul va conine cmpurile: NumeAgent, TelefonAgent, OrasLocuinta, AdresaLocuinta,Tip, NrCamere, PretVnzare, NumeProprietar, PrenumeProprietar, TelefonProprietar. Raportul va conine antet de raport, antet de pagin i antetul de grup NumeAgent. s) S se creeze un raport care s afieze toi agenii imobiliari care n-au vndut nici o locuin. Raportul va conine cmpurile: NumeAgent, TelefonAgent, OrasLocuinta, AdresaLocuinta,Tip, NrCamere, PretVnzare, NumeProprietar, PrenumeProprietar, TelefonProprietar. Raportul va conine antet de raport, antet de pagin i antetul de grup NumeAgent. t) Raport cu toate locuinele vndute de un anumit agent al crui nume se cere ca parametru. Raportul va conine antet de raport, antet de pagin i cmpurile: OrasLocuinta, AdresaLocuinta, Tip, NrCamere, PretCerut, PretVnzare, DataVnzare. u) S se creeze un raport care s afieze toate locuinele care au fost vndute. Raportul va conine cmpurile: NumeAgent, TelefonAgent, OrasLocuinta, AdresaLocuinta, Tip, NrCamere, PretVanzare. Raportul va conine antet de raport, antet de pagin, antetul i subsolul de grup NumeAgent. Subsolul de grup NumeAgent va conine subtotaluri pe fiecare Agent.
94

v) S se creeze un raport care s afieze toate locuinele de tip vil nevndute care au mai mult de 5 camere i cu preul < 500000000. Raportul va conine cmpurile: OrasLocuinta, AdresaLocuinta, NrCamere, PretCerut, NumeAgent, TelefonAgent. w) S se creeze un raport care s afieze toate locuinele vndute sau nu, care se gsesc n Bucureti pe strzi al cror nume ncepe cu A. Raportul va conine cmpurile: AdresaLocuinta, Tip, NrCamere, PretCerut,PretVanzare, NumeProprietar, PrenumeProprietar. x) S se creeze un raport care s afieze toate locuinele vndute ntre 2 date care se cer ca parametru. Raportul va conine cmpurile: OrasLocuinta, AdresaLocuinta,Tip, NrCamere, PretCerut, PretVanzare, DataVanzare.

95

Bibliografie

Roger Jennings, Utilizare Access95, Editura Teora, Bucureti, 1999 Pavel Nstase, Florin Mihai, Luana Coscescu, Bogdan Brbulescu, Andrei Stanciu, Robert Aurelian ova, Liana Covrig, Baze de Date Microsoft Access 2000, Editura Teora, Bucureti, 2000 Ileana Popescu, Baze de date relaionale, Editura Universitii Bucureti, 1994 **** Documentaia Microsoft Access 2000

82