75
Baze de date – Microsoft Access 2015 CUPRINS Capitolul 1. Aplicație – Microsoft Access……………………………...2 Capitolul 2. - Noțiuni introductive despre baze de date...........................3 Capitolul 3. Prezentarea aplicației...................................... ....................15 Capitolul 4. Operații principale cu datele tabelelor...............................18 1

Baze de Date

Embed Size (px)

DESCRIPTION

Proiect pentru baze de date: Agentie imobiliara

Citation preview

Page 1: Baze de Date

Baze de date – Microsoft Access 2015

CUPRINS

Capitolul 1. Aplicație – Microsoft Access……………………………...2

Capitolul 2. - Noţiuni introductive despre baze de date...........................3

Capitolul 3. Prezentarea aplicaţiei..........................................................15

Capitolul 4. Operaţii principale cu datele tabelelor...............................18

Capitolul 5. Formulare...........................................................................44

Capitolul 6. Rapoarte.............................................................................52

1

Page 2: Baze de Date

Baze de date – Microsoft Access 2015

Capitolul 1. Aplicație – Microsoft Access

Să se proiecteze și să se implementeze în MS Access o bază de date care să genereze proprietățile închiriate de clienții unei agenții imobliare.

Se impun următoarele:-Un client are închiriată o anumită proprietate o singură data.

Se vor realiza cel puțin:-6 interogări de selectare, cu criteria de interogare și sumarizări;-2 interogări cu parametri;-2 interogări de actualizare;-2 interogări de ștergere;-o interogare de tip table încrucișat;-3 formulare pentru vizualizare înregistrărilor existente și adăugarea de

înregistrări noi;-un formular care să conțină controale;-4 rapoarte (două bazte pe interogări).

2

Page 3: Baze de Date

Baze de date – Microsoft Access 2015

Capitolul 2. - Noţiuni introductive despre baze de date

DEFINIREA TERMENILOR

O bază de date reprezintă o colecţie de date înrudite, care se referă la un anumit subiect sau obiectiv, împreuna cu instrumentele folosite pentru manipularea acestor date.

O baza de date conţine următoarele elemente: Tabelul (table) – colecţie de date înrudite, stocate pe linii şi

coloane; Câmpul (field) – coloana din cadrul tabelului, care reprezintă cea

mai mică unitate de date din cadrul bazei de date. Înregistrarea (record) – linia din cadrul tabelului. Linia este

compusă din câmpuri şi conţine toate datele referitoare la un anumit element (dimensiuni, culori, greutăţi şi alte caracteristici).

Obiect (object) – componentă individuală Access, cum ar fi un tabel, un formular, o interogare sau un raport.

Formular (form) – un obiect Access care afişează informaţiile dintr-un tabel într-un format diferit de cel al tabelului (altfel decât pe linii sau coloane).

Interogare (query) – Un obiect Access care stochează întrebări cu privire la datele stocate în baza de date.

Raport (report) – Un obiect Access care stochează detalii pentru afişarea sau tipărirea datelor în mod organizat.

Dezvoltarea de aplicaţii de baze de date de mari dimensiuni este în acelaşi timp un fapt banal, dar şi un fapt extraordinar. Banalitatea constă în faptul că un procent semnificativ din efortul de dezvoltare de aplicaţii se îndreaptă spre acest domeniu. Extraordinarul se leagă de complexitatea deosebită a acestor aplicaţii, care implică echipe mari de proiectanţi, necesită atât experienţă în domeniu cât şi adaptarea la condiţii mereu noi. Şi nu în ultimul rând, reprezintă o mare responsabilitate. Cu toate că industria de software cunoaşte o adevărată explozie, cu toate că suntem literalmente bombardaţi cu sute şi sute de aplicaţii din ce în ce mai complexe şi mai specializate, încă nu a fost „inventat” un pachet software care să satisfacă necesităţile generale ale unei întreprinderi. Chiar dacă ne restrângem pretenţiile la partea numită de obicei „de gestiune economică”, un astfel de software nu se întrezăreşte la orizont, cu toate că în linii mari, toate întreprinderile funcţionează pe aceleaşi principii. Există pachete „de gata” care satisfac anumite nevoi specifice dar, la noi ca şi în alte părţi, elemente specifice primează şi în consecinţă marea majoritate a întreprinderilor preferă să-şi construiască „la comandă” sistemul informatic.

Această abordare implică însă un efort substanţial şi nu lipsit de riscuri. În ţările cu o economie „normală” procesul se desfăşoară cam în felul următor. În primul rând, compania îşi evaluează la modul general nevoile informatice şi posibilităţile organizatorice şi

3

Page 4: Baze de Date

Baze de date – Microsoft Access 2015

financiare. Apoi se angajează o firmă specializată de consultanţă care, pe baza unei expertize, stabileşte cu mai mare precizie cerinţele şi posibilităţile, după care sugerează un număr de propuneri. Acestea se referă atât la principiile tehnologice de bază cât şi la costurile evaluate şi eşalonarea lor în timp. Acum începe o nouă iteraţie. Compania analizează propunerile şi alege una dintre ele (sau o combinaţie din mai multe) şi se trece la treabă. „Treaba” constă de obicei şi în acest caz în contactarea unei terţe firme (de consultanţă şi integrare) care va prelua contractual sarcini, începând cu proiectarea de ansamblu a sistemului, achiziţionarea echipamentelor şi a soft-ului de bază, şi terminând cu training, asistenţă tehnică, mentenanţă hard şi soft. etc. Sunt foarte rare situaţiile când o companie poate să-şi permită să realizeze toate acestea prin forţe proprii. Explicaţia este extrem de simplă, în perspectivă occidentală: banii. A plăti la modul permanent oameni cu o foarte înaltă calificare şi experienţă în domeniu este un lux pe care foarte puţini şi-l pot permite, mai ales când nu informatica este obiectul afacerii. Ideea este de a păstra doar o echipă restrânsă care să asigure exploatarea şi întreţinerea curentă a sistemului informatic, pentru activităţile speciale apelând la competenţe externe, orientate pe problemă. Revenind la realitatea economică românească, constatăm că lucrurile stau cu totul altfel. Scenariile clasice corespund situaţiilor tipice: întreprinderea (organizaţia) are sau nu are bani. Dacă nu are, se porneşte de la o „evaluare” de genul următor: „Cam de câte calculatoare am avea nevoie ca să...”. Răspunsul e ceva de genul „De vreo...”. Se cumpără de regulă cele mai ieftine calculatoare, se face rost de un om şi se trece la treabă. Se constată că s-a investit aiurea, se încearcă o cârpeală (pardon, patch), etc, şi în cele din urmă se pierd doi ani şi o groază de bani. Dacă organizaţia are bani, singura diferenţă este că se face o licitaţie, se încasează „un mic” avans şi se trece la treabă, ca şi în cazul precedent.

GENERALITĂŢI

Un sistem de gestiune a bazelor de date (SGBD) este un mecanism al cărui principiu fundamental constă, la modul cel mai general, în aşa-zisa abstractizare a datelor stocate pe suport. Există trei nivele de abstractizare, corespunzând celor trei modele ale datelor: fizic, conceptual şi logic.

Modelul fizic (sau intern) priveşte datele aşa cum sunt ele stocate pe suport şi reprezintă nivelul zero al abstractizării;

Modelul conceptual priveşte datele prin semnificaţia lor reală; Modelul logic (sau extern) priveşte datele prin prisma utilizatorului final.

Pentru o bază de date pot exista mai multe modele logice, în funcţie de diversele categorii posibile de utilizatori finali. Mecanismele de „proiecţie” între aceste nivele asigură ceea ce se cheamă de obicei independenţa de date, adică stabilitatea aplicaţiilor la modificări în modul fizic de stocare a datelor. Proiectarea aplicaţiilor de baze de date implică din această perspectivă două etape iniţiale extrem de importante: proiectarea logică şi respectiv implementarea fizică a modelului de date. Modelul de date formează fundaţia întregului sistem de aplicaţii ce va exploata baza de date. Proiectarea logică (logical design) se referă la stabilirea modelului conceptual al bazei de date care este în mare măsură independentă de

4

Page 5: Baze de Date

Baze de date – Microsoft Access 2015

SGBD-ul particular care va fi utilizat. Rezultatul acestei etape a proiectării este un document care va cuprinde definiţia detaliată a structurilor de date ce vor fi implementate împreună cu toate elementele de semantică asociate acestor structuri. Implementarea fizică (physical implementation) constă în transpunerea pe SGBD-ul specific a modelului conceptual realizat în etapa anterioară. Concretizarea acestei etape constă într-un script (o listă de comenzi) realizat în limbajul de descriere a datelor (DDL - Data Description Language) utilizat de SGBD-ul ales. Rolul acestuia este să creeze şi să iniţializeze baza de date cu structurile corespunzătoare celor descrise în etapa anterioară. Acest script se mai numeşte schema bazei de date şi va fi utilizat ca referinţă în proiectarea aplicaţiilor propriu-zise.

Această etapă este extrem de complexă şi de importantă, deoarece ea stabileşte o serie de elemente care vor influenţa funcţionalitatea, extensibilitatea şi, într-o destul de mare măsură, performanţa ansamblului de aplicaţii care va fi dezvoltat.

Metoda cea mai utilizată în această etapă este cea a diagramelor Entitate - Relaţie (ER – Entity-Relationship). Principalii paşi ai proiectării sunt prezentaţi pe scurt în continuare.

CULEGEREA INFORMAŢIILOR

Primul pas în crearea unei baze de date este înţelegerea perfectă a activităţii care urmează să fie modelată. Analiza se face desigur la faţa locului şi implică stabilirea exactă a obiectivelor activităţii modelate, a obiectivelor specifice care se urmăresc prin implementarea sistemului, a regulilor care guvernează afacerea şi care se cer impuse sistemului informatic. Se urmăreşte în acest scop funcţionarea sistemului existent (fie manual, fie deja informatizat în parte) şi se discută cu managerii şi utilizatorii finali ai viitorului sistem.

Iată un set de întrebări uzuale în aceste interviuri: Care sunt obiectivele activităţii, sau ale întreprinderii în general? Cum ar trebui să se concretizeze acestea în obiective pentru sistemul

informatic? Care sunt intrările şi ieşirile sistemului. Ce rapoarte trebuie obţinute şi cât de

des? Cum vor fi introduse datele şi cum vor fi întreţinute? De către cine? Ce alte prelucrări se cer realizate? Care sunt entităţile (lucruri, persoane, concepte, etc.) care vor fi descrise în

baza de date? Ce relaţii există între diferitele entităţi descrise în baza de date? Care sunt regulile comerciale care trebuie respectate în mod obligatoriu de

viitorul sistem ? Ce se aşteaptă de la aplicaţiile ce urmează a fi proiectate şi care sunt

performanţele acceptabile în care ar trebui să se încadreze? Care este volumul estimativ al datelor ce vor fi stocate? Care va fi frecvenţa actualizărilor?

5

Page 6: Baze de Date

Baze de date – Microsoft Access 2015

Cât de repede trebuie să fie capabil sistemul să regăsească sau să actualizeze informaţiile?

Desigur, acest proces este iterativ pe verticală (pornind de la managementul întreprinderii şi terminând cu personalul direct implicat) cât şi în timp (după o primă aproximare se trece la elemente mai concrete).

Rezultatul acestui prim pas trebuie să fie o specificare a cerinţelor, concretizată poate într-un set de notiţe sau poate într-o documentaţie formală. Indiferent de forma concretă este de reţinut că această specificare a cerinţelor este, inevitabil, provizorie. Practica demonstrează că paşii următori ai proiectării vor aduce elemente noi, uneori extrem de importante. Să considerăm pentru exemplificare o agenșie imaginară (să-i spunem „Fictiv Comp”), a cărei activitate se referă la comercializarea de tehnică de calcul. Vom considera un model mult simplificat al acestei activităţi, şi vom presupune că în urma acestei etape de analiză s-au identificat următoarele reguli de funcţionare:

1. Afacerile agenției constau închirierile unor proprietăți diferților clienți. 2. PROPRIETARI lansează PROPRIETĂȚI pentru unul sau mai mulți

CLIENȚI. 3. Chiriile PROPRIETAȚILOR diferă de la un proprietar la altul, indiferent de

tipul proprietății. CLIENŢII plătesc acelși preț al chirii pe tot parcusul contracului de închiriere semnat.

4. Informaţiile despre ÎNCHIRIERI reprezintă principala intrare a sistemului. Ieşirile sistemului sunt reprezentate de contracte, perioada contractuală începând din montul semnării contractului și ocuparea prorietății până în ultima zi a contractului.

5. CLIENŢII pot închiria doar o singură dată o proprietate.

IDENTIFICAREA ENTITĂŢILOR

Entităţile reprezintă abstractizări ale lucrurilor reale, fie ele concrete sau imateriale. Ele pot corespunde unor persoane, obiecte, locuri, documente, concepte, etc. Ceea ce interesează în proiectarea unei baze de date sunt doar tipurile de entităţi implicate în activitatea modelată. Identificarea acestora şi corecta lor evidenţiere este o problemă care ţine în mare măsură de experienţa şi chiar de „flerul” proiectantului. Cu toate acestea, câteva reguli pot fi folositoare. Simplitatea este cea mai importantă. Este preferabil să lucrăm cu mai puţine entităţi decât cu prea multe, deoarece pe parcursul dezvoltării proiectului cele omise îşi vor cere cu siguranţă drepturile, în schimb cele inutile nu vor cere explicit să fie excluse, complicând şi mai mult o activitate care numai de complexitate nu duce lipsă. O altă regulă de bun simţ este denumirea lor cât mai clară şi sugestivă, deoarece aceste nume tind să se perpetueze până în detaliile aplicaţiilor. În exemplul privind lista (parţială) a regulilor activităţii agenției „Fictiv Comp” am notat cu majuscule posibilele entităţi: PROPRIETARI, PROPRIETĂȚI, CLIENȚI, ÎNCHIRIERI. S-ar fi putut considera o entitate PERSOANĂ care să grupeze atât proprietarii cât şi clienţii care sunt persoane fizice, s-ar fi putut considera entităţi separate pentru şefi, sau diverse alte entităţi, dar regula simplităţii ne spune că gruparea selectată este pertinentă. Excesul de detalii este dăunător la acest nivel, deoarece

6

Page 7: Baze de Date

Baze de date – Microsoft Access 2015

explozia complexităţii care urmează în următoarele etape poate face proiectul imposibil de stăpânit.

DETERMINAREA RELAŢIILOR

Este evident că entităţile nu pot cuprinde singure întreaga informaţie ce trebuie administrată şi nici nu pot fi concepute ca „insule” informaţionale. O bună parte din informaţia semnificativă legată de activitatea modelată se află tocmai în relaţiile care există între entităţi. De pildă, faptul că anumiţi proprietari dețin anumite proprietăți, este o informaţie utilă şi de fapt se referă la o astfel de relaţie între entităţile PROPRIETARI şi PROPRIETĂȚI . (Atenţie la terminologie: se foloseşte adesea sinonimul asociere pentru a evita „supraîncărcarea” cu semnificaţii a termenului „relaţie”, care în teoria modelului relaţional este sinonim cu „tabelă”.)

Două observaţii: 1. Pot exista relaţii definite pe o entitate; 2. Relaţiile între entităţi nu sunt de regulă simetrice. În cadrul exemplului

privind „Fictiv Comp” relaţiile sugerate apar scrise legat. Lista lor ar putea fi următoarea:

a. CLIENȚI închiriază PROPRIETĂȚI;b. PROPRIETĂȚII sunt_închiriate CLIENȚI;c. PROPRIETARI deține PROPRIETĂȚI;d. PROPRIETARI oferă PROPRIETĂȚI.

Subliniez încă o dată că relaţiile între entităţi poartă informaţie utilă în egală măsură ca şi entităţile. Denumirile sugestive sunt chiar mai importante decât la entităţi, având în vedere că între aceleaşi două entităţi pot exista mai multe relaţii (vezi cazul PROPRIETARI-PROPRIETĂȚI) şi că relaţiile nefiind simetrice poartă adesea două nume (de pildă CLIENȚI închiriază PROPRIETĂȚI şi respectiv PROPRIETĂȚI sunt_închiriate CLIENȚI).

7

Page 8: Baze de Date

Baze de date – Microsoft Access 2015

CARDINALITATEA RELAŢIILOR

La modul teoretic, se poate vorbi despre relaţii între oricâte entităţi, dar în mod practic nu se lucrează decât cu relaţii binare (numai între două entităţi) şi mă voi referi în continuare doar la acest tip de relaţii. Este important de subliniat faptul că relaţiile între entităţi leagă între ele ocurenţe ale entităţilor, adică realizări, concretizări, cazuri particulare ale acestora. O chestiune extrem de importantă este clasificarea lor în funcţie de cardinalitatea lor. Sau, altfel spus, de numărul ocurenţelor entităţilor ce pot fi legate prin relaţia respectivă. Există trei clase principale de relaţii:

Relaţii one-to-one (1 la 1) – relaţiile de acest tip leagă o ocurenţă a unei entităţi cu cel mult o ocurenţă a celeilalte entităţi. Exemplul cel mai elocvent este cel al relaţiei PROPRIETARI oferă PROPRIETĂȚI. Proprietarul poate oferii o singură proprietate unui client. De notat şi faptul că relaţiile one-to-one nu implică bijectivitatea (nu orice proprietar trebuie să aibă toate proprietățile închiriate).

1. Relaţii one-to-many (1 la mai multe) – este cazul cel mai comun. O ocurenţă a primei entităţi poate fi legată cu zero, una sau mai multe ocurenţe ale celei de-a doua entităţi. Privite invers, aceste relaţii se cheamă many-to-one. Exemple de astfel de relaţii ar fi PROPRIETARI deține PROPRIETĂȚI: proprietarii dețin mai multe proprietăți (dar pot să dețină și o proprietate).

2. altă denumire larg răspândită pentru astfel de relaţii este Master-Detail. Uneori se consideră însă că este vorba despre un caz particular al relaţiilor one-to-many: orice ocurenţă a entităţii many (sau detail) se cere a fi legată cu exact o ocurenţă a entităţii one (sau master).

8

Page 9: Baze de Date

Baze de date – Microsoft Access 2015

3. Relaţii many-to-many (mai multe la mai multe) – în acest caz, orice ocurenţă a unei entităţi poate fi legată cu mai multe ocurenţe ale celeilalte entităţi şi reciproc. Exemplul din cazul agenției „Fictiv Comp” este relaţia PROPRIETĂȚII pentru CLIENȚI: o proprietate poate fi închiriată de mai mulți clienți, iar un client poate inchiria mai multe proprietăți. Astfel de relaţii nu pot fi manipulate direct în cadrul modelului relaţional şi este indicat să fie descompuse în relaţii 1 la mai multe şi/sau 1 la 1. De obicei această descompunere se face prin introducerea unei entităţi noi (în cazul de faţă se poate introduce entitatea ÎNCHIRIERI, care să conţină date referitoare la fiecare închiriere). Este de notat şi un aspect semantic: fiecare latură a relaţiei poate fi obligatorie sau opţională. De pildă: orice proprietate trebuie să aparțină unui client. Însă nu este obligatoriu ca un client să închirieze o propritate.

DETERMINAREA TABELELOR

Modelul relaţional se bazează pe o modalitate unică de stocare atât pentru entităţi cât şi pentru relaţii între acestea: totul se stochează în tabele. Primul pas în determinarea tabelelor este deci foarte clar: fiecărei entităţi îi va corespunde o tabelă. Dacă numele entităţilor a fost judicios stabilit, este de dorit ca tabele să păstreze numele entităţilor. Totuşi, numele prea lungi nu sunt de dorit. Problemele apar la stabilirea tabelelor care să stocheze relaţiile. Teoretic, orice relaţie poate fi stocată într-o tabelă separată (care să conţină cheile prin care se face legarea liniilor), dar la modul practic se recurge adesea la combinarea în aceeaşi tabelă a informaţiilor referitoare la o entitate cu informaţii corespunzătoare unei relaţii. Este din nou un pas în care experienţa şi flerul proiectantului are un cuvânt greu de spus. Câteva repere pot fi stabilite pe baza unei analize a cardinalităţii relaţiilor:

a. relaţii one-to-one – de obicei în aceste situaţii relaţia este stocată ca un atribut al uneia dintre entităţi. De pildă în cazul relaţiei conduce, soluţia optimă este ca tabela PROPRIETARI să stocheze informațiile personale alte proprietarului. Este posibil și ca informația de legătură să fie stocată ăn tabela PROPRIETĂȚI (dar este nerentabil, pentru cei mai mulţi clienți această informaţie lipseşte).

b. relaţii one-to-many – şi în acest caz se recurge de regulă la stocarea informaţiei de legătură într-una dintre tabele (de obicei cea aflată pe poziţia many). Decizia depinde şi de gruparea relaţiilor. În exemplul nostru, entitatea ÎNCHIRIAZĂ se află în poziţia many pentru două relaţii (închiriază și sunt_închiriate), deci este preferabil ca tabela care-i corespunde să preia ambele relaţii.

c. relaţii many-to-many – de data aceasta soluţia este definirea unei tabele separate care să preia informaţiile de legătură. Procesul de normalizare va tinde (aşa cum se va vedea) să mute şi alte atribute ale tabelelor în tabela relaţiei aşa că se va ajunge până la urmă tot la descompunerea relaţiei prin introducerea unei noi entităţi.

9

Page 10: Baze de Date

Baze de date – Microsoft Access 2015

DEFINIREA COLOANELOR

Dacă s-a stabilit modul de stocare a relaţiilor între entităţi, acest pas nu pune probleme speciale. Raportul privind specificarea cerinţelor oferă informaţii suficiente pentru acest pas. Din nou se cere multă atenţie la stabilirea unor denumiri sugestive pentru coloane şi la stabilirea unei modalităţi consistente şi uniforme de notare (nu datorită unor constrângeri formale, ci pentru a asigura proiectului un plus de claritate). De pildă se pot folosi nume unice pentru aceeaşi informaţie, sau se pot utiliza prefixe stabilite pe baza numelor tabelelor.

PROPRIETARI: CodPropritar, NumeProprietar, PrenumeProprietar, CNPProprietar, NrTelefon;

CLIENȚI: CodClient, NumeClient, PrenumeClient, CNPClient, NrTelefonClient;PROPRIEĂȚI: CodProprieati, AdresaProprietati, TipProprietati, ChiriaLunara,

CodPproprietar;ÎNCHIRIERI: CodInchiriere, DataInchiriere, DataSfarsit, CodProprietati,

CodClient;

ALEGEREA CHEILOR PRIMARE

Unul dintre principiile fundamentale ale modelului relaţional este unicitatea liniilor unei tabele. O coloană sau o combinaţie de coloane care identifică în mod unic o linie este numită cheie primară a tabelei. Există situaţii în care există mai multe astfel de coloane sau combinaţii de coloane. În aceste cazuri cheia primară este aleasă în funcţie de relevanţa lor în cazul specific al activităţii modelate. Celelalte chei posibile se cheamă chei candidate. Atributul unei tabele care ia valori din domeniul unei chei primare a altei tabele se numeşte cheie străină (stocarea relaţiilor între entităţi se face prin perechi formate dintr-o chei primară şi o cheie străină). În practică se evită în cele mai multe situaţii cheile primare formate din mai multe coloane în cazul tabelelor corespunzătoare unor entităţi (aşa-numitele „nomenclatoare”), prin introducerea unui cod anume creat care să joace rolul de cheie primară (de pildă „marca” pentru angajaţi, codul pentru produse, etc). Este important în acest caz să se stabilească o metodologie unitară şi coerentă de codificare, deoarece o codificare defectuasă poate crea probleme enorme în exploatarea bazei de date. Există mai multe metode răspândite, de cele mai multe ori bazate pe o combinaţie de informaţii, cum ar fi de pildă o literă corespunzătoare unei anumite clasificări cu un cod numeric care să forţeze unicitatea. O tehnică utilă este stabilirea unei aşa-numite „cifre de control”, generată pe baza unui algoritm, astfel încât riscurile de a introduce un cod greşit (care să „cadă” peste unul existent) să fie cât mai mici.

Cheile primare pentru tabele sunt: PROPRIETARI: CodPropritarCLIENȚI: CodClientPROPRIEĂȚI: CodProprieati

10

Page 11: Baze de Date

Baze de date – Microsoft Access 2015

ÎNCHIRIERI: CodInchiriere1. Tabela PROPRIETARI

2. Tabela PROPRIETĂȚI

3. Tabela CLIENȚI

11

Page 12: Baze de Date

Baze de date – Microsoft Access 2015

4. Tabela ÎNCHIRIERI

12

Page 13: Baze de Date

Baze de date – Microsoft Access 2015

NORMALIZAREA

Chiar dacă toate etapele de până aici au fost parcurse cu maximă atenţie, există un număr de probleme care pot să apară în cazul unor operaţii de actualizare în baza de date, probleme care riscă să compromită integritatea datelor. Este vorba despre aşa-zisele anomalii de actualizare, datorate dependenţelor funcţionale nedorite. Evitarea acestor anomalii se face printr-un proces numit normalizare, având o fundamentare formală riguroasă.

Normalizarea unei baze de date consta în principal în descompunerea modelului bazei de date în mai multe relatii (tabele) astfel încât sa se reduca la maxim redundanta datelor si implicit sa elimine anomaliile de actualizare. Operatia de normalizare se bazeaza pe dependentele functionale care exista între datele unei aplicatii.

O dependenta functionala, notata X→Y, între doua seturi de atribute a unei relatii R, specifica o constrângere asupra N-upletilor posibili. Ea se defineste în felul urmator:

V t1, t2 Є R, t1(X) = t2(X) => t1(Y) = t2(Y)Se spune în acest caz ca X determina functional pe Y sau ca Y este dependent

functional de X..Faptul ca X nu determina functional pe Z se va nota X | → Z.Pentru determinarea dependentelor functionale se pot aplica urmatoarele reguli de

inferenta (prin XY se noteaza concatenarea seturilor de atribute X si Y):1.      Regula reflexiva:                   X Y => X→Y2.      Regula de marire:                 => XZ→Y3.      Regula tranzitiva:                  => X→Z4.      Regula de decompozitie:      => X→Y5.      Regula de reuniune:              => X→YZ6.      Regula pseudotranzitiva:       => WX→ZNormalizarea bazei de date presupune aducerea relatiilor gradual pe diverse forme

normale conform unor teoreme de normalizare. Fiecare forma normala preia constrângerile formei anterioare la care adauga noi conditii.

Forma normala 1 (1NF) cere:.         domeniul atributelor sa cuprinda valori atomice; se interzic câmpurile

compuse sau "relatii în relatie".         fiecare atribut din N-uplet trebuie sa aibe o singura valoare în domeniu.Forma normala 2 (2NF) cere:.         relatia sa fie în 1NF.         orice atribut neprim (care nu face parte din cheia primara) din R sa fie

complet dependent functional de cheia primara a relatiei.O alta varianta: se cere sa nu existe atribute care sa depinda numai de o parte a

cheii primare.Forma normala 3 (3NF) cere:.         relatia sa fie în 2NF

13

Page 14: Baze de Date

Baze de date – Microsoft Access 2015

.         nu exista nici un atribut neprim care sa fie dependent tranzitiv de cheia primara a relatiei

Varianta: nu se permit atribute care nu fac parte din cheile candidat ale relatiei si care determina alte atribute.

Se poate da si o definitie generalizata pentru forma 3NF. Orice atribut al relatiei îndeplineste:

.        este complet dependent functional de orice cheie din R;

.        este dependent netranzitiv de orice cheie din R.O varianta mai restrictiva este BCNF - Boyce Codd Normal Form. O relatie este

în BCNF daca, pentru orice dependenta X→Y din R, X este o cheie candidat a lui R.Aducerea unei baze de date pe o forma normala superioara presupune extragerea

unor atribute din relatiile existente si crearea pe baza lor a unor noi relatii astfel încât rezultatul sa respecte forma normala în cauza. Acest lucru duce la fragmentarea bazei de date dar elimina din anomaliile de actualizare si reduce spatiul pierdut datorita redundantei datelor.

14

Page 15: Baze de Date

Baze de date – Microsoft Access 2015

Capitolul 3. Prezentarea aplicaţieiMicrosoft Office Access 2007 organizează informațiile în tabele: liste de rânduri

și coloane ce amintesc de registrul unui contabil sau de o foaie de lucru din Microsoft Office Excel 2007. Într-o bază de date simplă, se poate să aveți doar un singur tabel. Pentru cele mai multe baze de date va trebui să aveți mai multe. De exemplu, se poate să aveți un tabel care stochează informații despre produse, alt tabel care stochează informații despre comenzi și un altul cu informații referitoare la clienți.

Fiecare rând se mai numește înregistrare și fiecare coloană, de asemenea, se mai numește câmp. O înregistrare este o modalitate semnificativă și consistentă de a combina anumite informații. Un câmp este un element singular de informație - un tip de element care apare în orice înregistrare. De exemplu, în tabelul produse, fiecare rând sau înregistrare ar conține informații despre un produs. Fiecare coloană sau câmp conține un anumit tip de informație despre acest produs, cum ar fi numele sau prețul.

Sistemul Microsoft Access este un sistem complex care permite atât dezvoltarea aplicatiilor mici cât si al sistemelor software industriale complexe. Avantajul sau însa este dat de posibilitatea asimilarii graduale si a unui start facil.

Microsoft Access este un sistem de gestiune a bazelor de date relational.Ca sistem de gestiune, Microsoft Access cuprinde destul de multe facilitati:

un sistem relational care suporta doua limbaje de interogare standard: Structured Query Language (SQL) si Query By Example (QBE);

un limbaj de programare complet reprezentând în esenta un dialect al limbajului Visual Basic;

un macro-limbaj procedural usor de utilizat; un mediu de dezvoltare rapida a aplicatiilor (RAD) cu interfata vizuala si unelte de

creare automata a rapoartelor; extensie orientata pe obiecte intuitiva; mare varietata de asistenti (wizards) care usureaza faza de dezvoltare a aplicatiilor.

Pentru cei neavizati, aceasta multitudine de facilitati poate parea de o complexitate frustranta. Adevarul este ca fiecare dintre aceste fatete se bazeaza pe un set diferit de cerinte si perspective asupra aplicatiilor. Spre exemplu:

caracterul relational implicat considera aplicatia ca un set de date; programare procedurala în VB sau macro comenzi considera aplicatia ca un set de

instructiuni care vor fi executate secvential; elementele de orientare pe obiecte dau o perspectiva structurala asupra aplicatiei, care

poate fi considerata ca o multime de obiecte care încapsuleaza stari si comportamente specifice, interactionând la momentul executiei prin schimb de mesaje.

Aceste fatete ale unei aplicatii însa nu sunt integrate logic, lucru care ar fi greu de realizat. în acest sens este lasata la latitudinea dezvoltatorului alegerea si utilizarea uneia sau alteia. El poate alege metoda ce se potriveste cel mai bine aplicatiei care o dezvolta.

Atâta timp cât exista o asa de mare varietate de metode puse la dispozitie, alegerea uneia sau alteia denota în final cunoasterea sistemului de catre dezvoltator. în plus, studierea

15

Page 16: Baze de Date

Baze de date – Microsoft Access 2015

acestui sistem va duce implicit la studierea diverselor concepte fara a fi necesara familiarizarea cu diferite unelte de dezvoltate, specifice fiecarei metode.

Toate informatiile continute de o baza de date Access sunt reunite într-un singur fisier. Pe lânga tabelele continând date, el mai contine diverse tipuri de obiecte, cum ar fi:

interogarile pentru organizarea si regasirea datelor; formulare pentru interfata cu utilizatorii bazei de date; rapoarte pentru tiparirea rezultatelor; rutine macro si Visual Basic pentru extinderea functionalitatii aplicatiilor.

Fisierul baza de date are extensia standard ".mdb" (ex. "Pescareanu Alexandru Sebastian.mdb"). Când fisierul este deschis în Access, el va fi automat blocat, evitându-se pierderea datelor. Prin blocare se va crea un fisier cu acelasi nume dar cu extesia ".ldb", care însa nu contine date ci doar informatiile de blocare.

Pentru a putea gestiona diversele aspecte ale unei baze de date sistemul Access le organizeaza pe categorii. Categoriile de clasificare a obiectelor sunt:

Tables - tabelele continute în baza de date precum si legaturi spre tabele din alte baze de date;

Queries - interogari pasive si active; Forms - formulare pentru interfata cu utilizatorii; Reports - rapoarte pentru tiparirea infromatiilor; Pages - pagini de Web pentru afisarea datelor din baza de date; Macros - rutine continând comenzi de tip macro pentru implementarea unor

secvente automate de prelucrare a datelor; Modules - module de cod Visual Basic care permit implementarea unor

algoritmi complecsi de prelucrare.Pentru deschiderea unui obiect din fereastra de gestiune a bazei de date, se va

selecta obiectul si se va apasa butonul Open.Pentru stergerea sau redenumirea unui obiect se va selecta din meniul context al

obiectului optiunea Delete respectiv Rename.Aproape toate aplicatiile dezvoltate recent pun la dispozitia utilizatorului nu doar

manuale de utilizare tiparite ci si un sistem de informare interactiva numita generic "Online Help". si sistemul Access se înscrie în aceasta categorie. Pentru a accesa aceste informatii este suficient sa se apese tasta F1 în contextul de interes sau sa se selecteze intrarea Microsoft Access Help din meniul Help.

Sistemul de informare poate fi utilizat si pentru învatarea unor secvente de lucru cu sistemul dar, principala lui menire este aceea de a servi drept referinta rapida în cadrul procesului de dezvoltare.

În general, dezvoltarea unei aplicatii Access poate urma doua cai oarecum divergente:

"in-depth systems analysis, design, and impiementation" - presupune analiza amanuntita a sistemului de modelat si crearea în prealabil a unui proiect complet înaintea începerii fazei de implementare;

16

Page 17: Baze de Date

Baze de date – Microsoft Access 2015

"rapid prototyping" - presupune combinarea iterativa a fazelor de analiza, proiectare si implementare.

Prima metoda este potrivita pentru bazele de date complexe si a sistemelor de mari dimensiuni. Pentru sisteme mici si mijlocii cea de a doua metoda da rezultate mai rapide si are costuri mai scazute. În plus, Microsoft Access pune la dispozitia dezvoltatorilor un mare numar de facilitati destinate acestei metode, cum ar fi: unelte grafice de proiectare, generatoare si instructiuni de nivel foarte înalt (macro-comenzi).

Capitolul 4. Proiectarea structurii bazei de date

17

Page 18: Baze de Date

Baze de date – Microsoft Access 2015

CREAREA TABELELOR

Tabelele constituie principalele unitati destinate pastrarii (depozitarii) datelor Access. Un tabel este format din una sau mai multe coloane sau campuri (columns sau fields ), iar o coloana poate sa apara in mai multe tabele pentru a indica o anumita relatie intre acele abele.

In Access crearea tabelelor se poate face fie cu ajutorul unui program wizard, caz in care acesta ghideaza utilizatorul in crearea tabelului sugerandu-i nume de tabele si coloane, fie utilizand optiunea Design View pentru a defini manual coloanele si tipu l acestora.

Folosirea wizard-ului, chiar daca este o metoda rapida, restrange controlul utilizatorului asupra numelui si tipului de data al coloanelor. In acest curs se vor descrie pasii pentru crearea unui tabel folosind optiunea Design View .

TIPURI DE DATE

Fiecare câmp trebuie să fie de un anumit tip, pentru ca Access să ştie cum să-i trateze conţinutul.

Tipurile sunt următoarele: TEXT – secvenţă simplă de caractere care poate include cifre, litere şi

simboluri. Un câmp text poate conţine până la 255 de caractere. MEMO – text simplu, obişnuit, exceptând faptul că nu stabileşti o lungime

maximă de câmp, aşa că poţi tasta aproape orice cantitate de text (64.000 de caractere).

NUMBER – destinat pentru valori întregi sau fracţionare. DATE/TIME – o dată calendaristică sau o oră. CURRENCY – un număr formatat ca o valoare monetară. AUTONUMBER – Access îl completează automat cu numere consecutive,

pentru fiecare înregistrare. YES/NO – poate primi valori logice de tipul YES/NO, TRUE/FALSE sau

ON/OFF. OLE OBJECT – câmp capabil a primi ca valoare un obiect (ex. imagine);

obiectul poate fi legat sau inserat. HYPERLINK – o legătură la o locaţie Web. LOOKUP WIZARD – îţi permite să creezi o listă selectând o valoare din

alt tabel sau lista de valori într-o casetă combinată, pentru fiecare înregistrare. Este o caracteristică avansată.

TIPURI DE FORMATE

În afară de tipul său, fiecare câmp are opţiuni de formatare pe care le poţi configura. Acestea apar în jumătatea inferioară a casetei de dialog, în zona Field Properties.

Opţiunile de formatare se modifică în funcţie de tipul câmpului.18

Page 19: Baze de Date

Baze de date – Microsoft Access 2015

Cele mai importante tipuri de formate: FIELD SIZE – Numărul maxim de caractere pe care-l poate introduce un

utilizator în acest câmp (se aplică doar câmpurilor de tip Text). FORMAT – O listă derulantă cu formatele disponibile pentru acel tip de

câmp. De asemenea, poţi crea formate personalizate. DECIMAL PLACES – Pentru câmpurile numerice, poţi stabili numărul

implicit de poziţii zecimale pe care le poate afişa un număr. DEFAULT VALUE – Dacă, în mod obişnuit, un câmp conţine o anumită

valoare, poţi introduce acea valoare aici pentru a economisi timp. Va apărea în fiecare nouă înregistrare şi vei putea să o înlocuieşti în rarele ocazii când nu este valabilă.

REQUIRED – Alege YES şi NO pentru a comunica programului ACCESS dacă i se permite unui utilizator să lase acel câmp necompletat.

Capitolul 4. Operaţii principale cu datele tabelelorAccess îţi oferă mai multe metode prin care te ajută să restrângi domeniul

informaţiilor pe care le cauţi, inclusiv prin sortare şi filtrare.

19

Page 20: Baze de Date

Baze de date – Microsoft Access 2015

Cel mai flexibil mod de a sorta şi filtra date este cererea iar cel mai important fapt este că le poţi salva şi utiliza pentru a crea tabele, pentru a şterge înregistrări sau pentru a copia înregistrări într-un alt tabel.

Cererile îţi permit să specifici:o Câmpurile pe care vrei să le vezi;o Ordinea în care trebuie să apară câmpurile;o Criteriile de filtrare pentru fiecare câmp;o Ordinea în care vrei să fie sortat fiecare câmp.o Rezultatul unei cereri este o tabelă virtuală.

CERERI DE SELECŢIE

Interogările de selectare sunt cele mai utilizate interogări şi se folosesc pentru a regăsi date care îndeplinesc anumite condiţii, pentru a grupa înregistrări şi pentru a efectua calcule pe baza datelor existente.

Sursele de înregistrări din care interogările obţin datele pot fi tabele, alte interogări sau combinaţii de tabele şi interogări.

Rezultatul interogării este afişarea unor informaţii în vizualizarea Datasheet, iar acest subset de date poate fi utilizat pentru a furniza date altor obiecte de baze de date, cum ar fi o altă interogare, un formular sau un raport.

Interogarea poate fi creată cu una din cele două opţiuni, Query Wizard sau Query Design, existente în fila Create, grupul Other.

Un criteriu de interogare este o condiţie, bazată pe valorile unui câmp, folosită pentru a restrânge numărul de înregistrări care sunt returnate în rezultatul interogării.

Expresiile pentru criterii de câmp pof fi introduse numai în vizualizarea Design a interogării, în celula Criteria şi/sau celula Or, care constituie o extensie a celulei Criteria. Numai înregistrările care întâlnesc criteriile definite în rândul Criteria sau în rândul Or vor fi incluse în rezultat.

Pentru a specifica mai mult de două seturi de criterii alternative, se pot utiliza liniile de sub linia Or, fiecare linie reprezintând un set independent de criterii.

Selectare 1

20

Page 21: Baze de Date

Baze de date – Microsoft Access 2015

Din tabela CLIENȚI selectăm câmpurile CodClient, NumeClient, PrenumeClient

Selectare 221

Page 22: Baze de Date

Baze de date – Microsoft Access 2015

Din tabela ÎNCHIRIERI selectăm câmpurile CodProprietati, DataInchiriere, DataSfarsit

Într-o interogare simplă de selectare, cele mai utilizate criterii sunt cele care găsesc text parţial sau integral în câmpuri.Expresii uzuale pentru criterii de interogare:

"Text"- Afișează numai înregistrările care conţin în câmpul respectiv şirul specificat (Text în acest exemplu).

22

Page 23: Baze de Date

Baze de date – Microsoft Access 2015

Like "T*"- Utilizează metacaracterul * pentru a afișa numai înregistrările în care textul din câmpul respectiv începe cu litera T.

Like "[C-F]*" - Afișează numai înregistrările în care textul din câmpul respectiv începe cu o literă din intervalul C-F al alfabetului (C, D, E sau F).

>="T" - Afișează numai înregistrările în care textul din câmpul respectiv începe cu o literă de la T la Z.

#01.01.2007#- Se potrivesc exact cu o valoare <#01.01.2007# or >#04.02.2007#- Conţin valori care nu se încadrează într-un interval < 50 - Conţin o valoare mai mică decât acea valoare, cum ar fi 50. Se pot folosi

oricare din operatorii <=, >, >= >45,5 and <100- Conţin o valoare care se încadrează într-un interval de valori Like "*4,5"- Conţin o valoare care se termină cu cifrele specificate

Criteriu de interogare 1

Am folosit criteriul Like "[C-G]*"

23

Page 24: Baze de Date

Baze de date – Microsoft Access 2015

Criteriu de interogare 2

Am folosit criteriul >="M"

24

Page 25: Baze de Date

Baze de date – Microsoft Access 2015

Criteriu de interogare 3

Am folosit criteriul >105 and <250

25

Page 26: Baze de Date

Baze de date – Microsoft Access 2015

CERERE DE SELECŢIE FOLOSIND FUNCŢII DE AGREGARE

O interogare poate furniza după rulare şi calcule obţinute pe baza datelor din sursele de înregistrări.

Pentru a adăuga un calcul la interogare, în vizualizarea Design, în prima celulă liberă din linia Field, se tastează expresia dorită ce poate folosi funcţii Access, eventual precedată de numele noului câmp urmat de caracterul „ : ”.

Deschiderea interogării în vizualizarea Datasheet și adăugarea unui rând Total prin apăsarea butonului Totals din grupul Records al filei Home. Este o caracteristică nouă în Office Access 2007 care permite utilizarea unei funcţii agregate în una sau mai multe coloane dintr-un set de rezultate de interogare, fără a fi necesară modificarea proiectării interogării.

Crearea unei interogări de totaluri, care calculează subtotaluri într-un grup de înregistrări. Într-o astfel de interogare, rândul Total, care calculează totaluri generale (sau alte funcţii agregate) pentru una sau mai multe coloane (câmpuri) de date, se afişează în vizualizarea Design prin apăsarea butonului Totals din grupul Show/Hide al filei Design.

Gruparea înregistrarilor se realizeaza în scopul extragerii unor informatii globale despre înregistrarile din fiecare grup.

Pentru gruparea înregistrarilor se va utiliza clauza GROUP BY urmata de criteriile de grupare, despartite prin virgula.

În cazul gruparii, lista de proiectie va putea cuprinde doar câmpurile din lista criteriilor de grupare sau functii de sumarizare. Rezultatul operatiei de grupare va contine un numar de înregistrari corespunzator cu numarul de grupuri rezultate, respectiv câte o înregistrare pentru fiecare grup.

26

Page 27: Baze de Date

Baze de date – Microsoft Access 2015

În cazul în care lista de proiectie va cuprinde una sau mai multe functii de sumarizare în lipsa clauzei GROUP BY, implicit se considera ca toate înregistrarile apartin aceluiasi grup, sumarizarea producând o singura înregistrare în rezultat. în acest caz, lista de proiectie nu va contine decât functii de sumarizare.

Functiile de sumarizare vor calcula o valoare corespunzatoare valorilor înregitrarilor din fiecare grup rezultat în urma gruparii. Ele sunt prezentate în lista urmatoare:

Avg     - calculeaza media aritmetica a valorilor unui câmp numeric sau data;

Count  - numara valorile distincte din câmpul respectiv pentru grupul considerat;

Min     - întoarce valoarea minima a unui câmp numeric, text sau de tip data calendaristica, pentru grupul de înregistrari respectiv;

Max    - întoarce valoarea maxima a unui câmp numeric, text sau de tip data calendaristica, pentru grupul de înregistrari respectiv;

Sum     - calculeaza suma valorilor unui câmp numeric sau data;First    - returneaza valoarea câmpului pentru prima înregistrare

(considerata în ordine cronologica) din grup;Last     - returneaza valoarea câmpului pentru ultima înregistrare din grup;StDev  - calculeaza deviatia standard a valorilor dintr-un câmp numeric

sau data calendaristica;Var      - calculeaza variatie valorilor dintr-un câmp numeric sau data

calendaristica;

Sumarizare 1

Am folosit funcția sum

27

Page 28: Baze de Date

Baze de date – Microsoft Access 2015

Sumarizare 2

Am folosit funcțiile count, sum

28

Page 29: Baze de Date

Baze de date – Microsoft Access 2015

CERERI UPDATE

Acest tip de cerere face schimbări globale la un grup de înregistrări în una sau mai multe tabele.

Interogările de actualizare (update queries) se utilizează pentru modificarea datelor dintr-un set de înregistrări existente.

Acestea nu pot adăuga înregistrări noi la o bază de date şi nici şterge înregistrări întregi dintr-o bază de date.

Interogările de actualizare acceptă mai multe criterii, permit actualizarea unui număr mare de înregistrări într-o singură operaţiune şi permit modificarea înregistrărilor în mai multe tabele în acelaşi timp.

O interogare de actualizare nu se poate executa pentru unele tipuri de câmpuri, cum ar fi câmpurile care rezultă din calcule (pentru că nu au o locație permanentă de stocare) sau câmpurile AutoNumber.

29

Page 30: Baze de Date

Baze de date – Microsoft Access 2015

Update 1

S-a făcut actualizare la tabele PROPRIETARI câmpul NrTelefon

Update 2

S-a făcut actualizare la tabele CLIENȚI câmpul NumeClient

30

Page 31: Baze de Date

Baze de date – Microsoft Access 2015

Update 3

S-a făcut actualizare la tabele ÎNCHIRIERI câmpul DataSfarsit

CERERI DELETE

Interogările de ştergere (delete queries) elimină înregistrări complete din baza de date, respectiv toate datele din fiecare câmp, împreună cu valoarea cheie care dă unicitate unei înregistrări.

De obicei, interogările de ştergere se folosesc numai atunci când se doreşte eliminarea rapidă a unor cantități mari de date. Pentru ştergerea unui număr mic de înregistrări, uşor de găsit în mod manual, se poate deschide tabelul în vizualizarea Datasheet, apoi se selectează câmpurile sau înregistrările care se doresc a fi șterse şi se apasă tasta Delete.

Pentru a şterge conţinutul unor câmpuri individuale dintr-un tabel (nu înregistrări întregi), se poate folosi o interogare de actualizare care foloseşte NULL sau şirul de lungime zero (“ “) pe post de criterii de actualizare (celulele Update To).

31

Page 32: Baze de Date

Baze de date – Microsoft Access 2015

Ștergere 1

Am șters din tabela PROPRIEĂȚI câmpul AdresaProprietati

Ștergere 2

Am șters din tabela CLIENȚI câmpul CodClient

32

Page 33: Baze de Date

Baze de date – Microsoft Access 2015

Ștergere 3

Am șters din tabela PROPRIETARI câmpul CodPropritar

Rezultatul asupra tabelelor după cererile de actualizare și de ștergere.

Tabela PROPRIETARI

33

Page 34: Baze de Date

Baze de date – Microsoft Access 2015

Tabela ÎNCHIRIERI

Tabela CLIENȚI

34

Page 35: Baze de Date

Baze de date – Microsoft Access 2015

Tabela PROPRIETĂȚI

CERERE DE SELECŢIE PARAMETRICE

Pentru a crea o interogare cu parametri, se parcurg secvenţele următoare.1. Se creează o interogare de selectare în modul Design.2. În rândul Criteria al câmpului pentru care se doreşte aplicarea unui parametru,

se tastează textul care se doreşte a fi afişat în caseta de dialog asociată parametrului, încadrat în paranteze drepte (de exemplu: [NumeProprietar:] ). La executarea interogării, textul de solicitare a parametrului apare în caseta de dialog fără a fi încadrat în paranteze drepte.

3. Dacă este cazul, se repetă pasul 2 pentru a adăuga şi alţi parametri pentru alte câmpuri.

Folosirea unor criterii de potrivire pentru o parte a valorii de câmp. Pentru aceasta, în rândul Criteria al câmpului pentru care se doreşte aplicarea parametrului se tastează cuvântul cheie Like în combinație cu metacaractere, ca în exemplul de mai jos:

Like "*"&[Text de afişat în caseta de dialog ]&"*“Cu această sintaxă, şirul text din parametru (tastat în caseta text la solicitarea de

parametru) va fi găsit în toate apariţiile sale în valorile de câmp.Pentru a găsi potriviri cu începutul unei valori de câmp, nu se mai introduce

secvenţa "*"& înaintea parantezei drepte de deschidere. Pentru a găsi potriviri cu finalul unei valori de câmp, nu se mai introduce secvenţa &"*" după paranteza dreaptă de închidere.

35

Page 36: Baze de Date

Baze de date – Microsoft Access 2015

Parametrizare 1

36

Page 37: Baze de Date

Baze de date – Microsoft Access 2015

Parametrizare 2

37

Page 38: Baze de Date

Baze de date – Microsoft Access 2015

CERERI CROSSTAB

O interogare Crosstab este un tip special de interogare, care afişează rezultatele într-o grilă care seamănă cu o foaie de lucru Excel.

Interogările tabel încrucişat sintetizează valorile pentru un câmp (declarat a fi Value), apoi le grupează în funcţie de doi factori  — un set declarat a fi Row Heading (titlu

38

Page 39: Baze de Date

Baze de date – Microsoft Access 2015

de rând) şi afişat pe verticală în jos, altul declarat a fi Column Heading (titlu de coloană) şi afişat pe orizontală de-a lungul părţii superioare.

Pentru a crea o interogare de tip crosstab:- se creează mai întâi o interogare de selectare în modul Design; interogarea

trebuie să conţină cel puţin trei câmpuri, dintre care unul va conţine datele de sintetizat (îi va fi aplicată o funcţie agregată), altul va fi titlul de linii şi altul titlul de coloane;

- se transformă interogarea de selectare în una de tip Crosstab prin apăsarea butonului Crosstab din grupul Query Type al filei Design;

- în grila de proiectare, apar liniile Total şi Crosstab;- în linia Crosstab, se selectează care vor fi câmpurile Row Heading, Column

Heading şi Value;- pentru câmpul declarat Value, în linia Total, se foloseşte una din funcţiile

agregate (de cele mai multe ori funcţia Sum);- se rulează interogarea.O interogare de tip tabel încrucişat nu populează întotdeauna toate câmpurile în

setul de rezultate, deoarece tabelele utilizate în interogare nu conţin întotdeauna valorile pentru orice punct de date posibil.

Interogarea Crosstab poate fi creată cu una din cele două opţiuni, Query Wizard sau Query Design.

Interogări Crosstab realizate în Query Wizard:

Pasul 1: Query Wizard – Crosstab Query Wizard

39

Page 40: Baze de Date

Baze de date – Microsoft Access 2015

Pasul 2: Selectăm asupra cărui tabel vrem să facem interograrea –Tabel PROPRIETARI

Pasul 3: Selectăm câmpurile în funcție de care să realizeze interogarea

40

Page 41: Baze de Date

Baze de date – Microsoft Access 2015

Pasul 4: Selectăm câmpul asupra căruia vrem să aplicăm funcția de încrucișare

Pasul 5: Selectăm funcția după care să se realizeze încrucișarea

Pasul 6: Dăm un nume interogării și selectăm funcția de afișare pentru a vedea încrucișarea41

Page 42: Baze de Date

Baze de date – Microsoft Access 2015

Încrucișarea 1 - max

Încrucișare 2 - first42

Page 43: Baze de Date

Baze de date – Microsoft Access 2015

Încrucișare 3 - sum

Capitolul 5. Formulare43

Page 44: Baze de Date

Baze de date – Microsoft Access 2015

O metodă foarte bună pentru introducerea datelor în tabele este crearea de formulare. Cu ajutorul unui formular, poţi aloca exact atât spaţiu cât este necesar pentru fiecare câmp şi poţi introduce informaţii în mai multe tabele simultan.

În general, fiecare formular afişează o singură înregistrare la un moment dat.Poţi crea un formular în trei moduri:

Autoforms oferă foarte rapid formulare care conţin toate câmpurile într-un singur tabel.

Form Wizard te ajută să creezi un formular furnizându-se o serie de casete de dialog din care poţi alege câmpurile şi stilul pentru formular.

Creând un formular pornind de la zero, ai la dispoziţie o grilă de machetare în care plasezi câmpuri. Este modul cel mai dificil, dar asigură cel mai bun control.

CREAREA FORMULARELOR CU AUTOFORM

Cel mai simplu mod de a crea un formular se face cu ajutorul caracteristicii AUTOFORM. Acesta pune câmpurile dintr-un singur tabel într-un formular; este modul cel mai puţin flexibil, dar este foarte convenabil.

Formular 1

Formular 2

44

Page 45: Baze de Date

Baze de date – Microsoft Access 2015

Formular 3

Formular 4

45

Page 46: Baze de Date

Baze de date – Microsoft Access 2015

Formular 5 – Adăugarea unui noi înregistrări

Formular 6 – Adăugarea unui noi înregistrări46

Page 47: Baze de Date

Baze de date – Microsoft Access 2015

Formular 7 – Adăugarea unui noi înregistrări

CREAREA FORMULARELOR CU CONTROALE

Cel mai performant, dar şi cel mai dificil mod de a crea un formular constă în utilizarea modului de vizualizare FORM DESIGN.

47

Page 48: Baze de Date

Baze de date – Microsoft Access 2015

Acest mod îţi permite să stabileşti exact unde anume să plasezi fiecare câmp şi cum să-l formatezi.

In general controalele  in Access sunt disponibile prin interventia unor asistenti Wizard care va ajuta sa le configurati si sa le atribuiti anumite combinatii de linii de cod. De multe ori este suficient datorita interventiei acestor asistenti, sa recunoasteti doar pictogramele atasate acestora pentru a putea crea un formular care sa rezolve destul de bine necesitatile unui utilizator destul de pretentios. Asistentii Wizard nu sunt insa suficient de 'inteligenti' pentru a crea controale suficient de sofisticate. In astfel de situatii se impune interventia programatorilor sau a utilizatorilor pentru atasarea de secvente de cod controalelor unui formular. Dar in continuare ne vom concentra doar asupra folosirii asistentilor pentru crearea unor formulare functionale .  Pentru a crea o interfata grafica (in cazul nostru un formular) care sasatisfaca exigentele majoritatii utilizatorilor este suficient sa cunoasteti modul in care functioneaza (si caracteristicile!) catorva dintre controalele specifice sistemului de operare Windows. Aranjarea acestora in cadrul formularului, relatiile dintre acestea precum si comportamentul sau raspunsul la comenzile unui utilizator sunt intru totul la indemana dumneavoastra. Prin urmare, odata creata baza de date, nu va mai ramane decat sa stabiliti, de comun acord cu utilizatorii aplicatiei create, modalitatea in care vor fi prezentate inregistrarile pe ecran in vederea prelucrarii.

Etichetele sunt casete de text transparente cu rol de transmite un anumit mesaj utilizatorului. Transparenta acestora creeaza senzatia 'lipirii' textului de suprafata formularului. De regula ele afiseaza numele unui control fara a afecta datele din tabelul sursa. Continutul mesajului transmis de acestea nu poate fi modificat decat de actiunea instructiunilor in cod VBA.

Campurile de editare (Text Box) sunt folosite pentru afisarea inregistrarilor. Utilizatorului ii este, de regula, permisa intrarea in aceste campuri in vederea modificarii sau introducerii datelor. Optional acestor campuri li se ataseaza o eticheta cu un mesaj explicativ.                                                            

Casetele combinate (Combo Box) sunt folosite pentru afisarea (pe una sau mai multe coloane) unui set de inregistrari selectate si ordonate dupa un anumit criteriu. Sursa inregistrarilor o constituie, de regula, o interogare sau coloanele tabelului sursa. Combo-urile sunt compuse dintr-un camp de editare si un buton de deschidere marcat de un triunghi cu varful oriental in jos. Marele avantaj oferit de acest control (dat fund ca poate afisa seturi de sute sau mii de inregistrari) este economia de spatiu pe suprafata formularului, deoarece, in pozitia inchis, el nu afiseaza decat o singura valoare din intregul set de inregistrari pe care il controleaza. Deschiderea  acestui control poate fi realizata prin apasarea tastei F4 sau prin executarea unui click pe butonul de deschidere. Optional si acestor controale li se poateatasa o eticheta.

Casetele cu lista (List Box) indeplinesc acelasi rol ca si casetele combinate, diferenta constand in faptul ca setul de inregistrari pe care il controleaza este afisat intr-o caseta permanent deschisa. Pentru alegerea unui anumit element din setul de inregistrari afisat este suficienta executarea unui click pe acesta.

48

Page 49: Baze de Date

Baze de date – Microsoft Access 2015

Butoanele radio (Radio Button) apar de regula in grupuri de 2-3 si sunt folosite pentru a 'forta' utilizatorul sa aleaga o singura optiune dintr-un set pus la dispozitie de program. Alegerea uneia din optiunile care se ascund in spatele acestor butoane radio se face prin executarea unui click fie pe butonul radio, fie pe eticheta explicativa a butonului sau prin apasarea combinatiei de taste ALT + tasta subliniata (tasta scurtatura) din cadrul etichetei explicative, in functie de actiunea utilizatorului butoanele radio pot lua doua valori logice (True = Adevarat, cand butonul este bifat si False = Fals cand butonul nu este bifat).

Casetele de validare (Check Box) permit alegerea, spre deosebire de butoanele radio) mai multor optiuni din cadrul unui set pus la dispozitie de program. Casetele de validare admit si o a treia valoare Null atunci cand caseta de validare se coloreaza in gri.

Din punct de vedere matematic valorile acceptate pentru casetele de validare sunt: -1 = pentru valoarea True, 0 = pentru valoarea False. Valoarea logica Null nu are corespondent matematic, de aceea recomandam folosirea variabilelor logice pentru evitarea unor erori de prelucrare care ar putea genera bloca functionarea programului dumneavoastra.

Butoanele de comanda (Command Button) arata si se comporta ca niste butoane care pot fi apasate pe un formular. La executarea unui click pe un astfel de buton, acesta da impresia ca este apasat, dupa care revine la starea initiala. Butoanele de comanda pot sa contina text sau imagini, pot sa aiba orice dimensiune si sunt folosite pentru lansarea in executie a unor secvente de cod VBA cu rezultate diferite in functionarea aplicatiei.

Eticheta de comutare (Tab Control) ofera o metoda intuitiva de comutare intre mai multe formulare. Este utila in situatia in care exista foarte multe informatii despre o singura entitate. Controalele Tab au proprietati specifice si fiecare eticheta dintr-un control Tab are propria pagina de proprietati. Daca in modul de vizualizare Form se executa un click pe una din etichetele acestui control 'pagina' etichetei  corespunzatoare va fi afisata in prim plan, acoperind paginile celorlalte etichete.

Grupul de optiuni (OptionGroup) este cel mai indicat tip de control pentru a prezenta utilizatorului toate optiunile disponibile, permitand selectarea unei singure optiuni din intregul grup. In cazul utilizarii unui grup de optiuni acesta este 'legal' de campul de date si apoi este completat cu unul sau mai multe dintre urmatoarele tipuri de controale:

-  butoane de comanda-  butoane radio-  casete de validareControalele Linie (Line) si Dreptunghi (Rectangle) sunt folosite pentru

infrumusetarea formularelorControalele Cadru de obiect neasociat (Unbound Object Frame) Cadru de

obiect asociat (Bound Object Frame) si Imagine (Image). Aceste trei controale sunt folosite pentru afisarea unor obiecte binare pe un formular. De obicei obiectele sunt documente realizate cu editoare de texte, imagini, sunete, foi de calcul tabelar etc. Majoritatea programelor Windows pot sa exporte obiecte cu ajutorul tehnicii OLE (Object Linked Embedded), iar programul Access 97 poate sa afiseze astfel de obiecte si sa foloseasca pentru editarea lor aplicatia in care au fost create.

49

Page 50: Baze de Date

Baze de date – Microsoft Access 2015

Obiectele neasociate (Unbound Object Frame si Image) nu se afla in nici o relatie cu datele inregistrate, astfel ca modificarile operate la nivelul bazei de date nu vor afecta aceste obiecte.

Obiectele asociate sau neasociate pot fi 'legate' (Linked)  sau inglobate (Embedded) intr-un formular. Avantajul inglobarii unui obiect intr-un formular este creat de faptul ca nu mai este necesara copia acelui  obiect pe discul calculatorului dumneavoastra. Un obiect legat stabileste o referinta in cadrul bazei de date cu obiectul insusi, care trebuie sa ramane stocat intr-un fisier de pe disc.

Controlul Separator de Pagina (Page Break). Daca un formular este prea lung, puteti sa marcati un punct in care pagina pare ca se rupe atunci cand folositi tastele Page Up, Page Down, in cazul in care formularul este mai lung decat fereastra in care este afisat, Access 97 va afisa in mod automat o bara de derulare verticala pentru a permite navigarea in cadrul acestuia. Daca este prezent un control Page Break tasta Page Down va redesena formularul astfel incat partea superioara a acestuia sa apara imediat dupa separatorul de pagina. Acest tip de controale sunt extrem de utile in cazul rapoartelor.

Formular controale 1

Formular controale 2

50

Page 51: Baze de Date

Baze de date – Microsoft Access 2015

Formular controale 3

Capitolul 6. Rapoarte51

Page 52: Baze de Date

Baze de date – Microsoft Access 2015

Rapoartele sunt obiecte prin intermediul cărora generezi rezultate profesionale care pot fi afişate pe ecran, tipărite pe hârtie sau afişate pe Internet.

CREAREA UNUI RAPORT CU AUTOREPORT

Cea mai simpla cale petru crearea unui raport este folosirea unuia din asistentii Wizard (Report Wizard) pentru crearea rapoartelor. Daca fereastra Database este vizibila in fereastra aplicatiei Access executati un click pe eticheta Reports astfel incat aceasta sa apara in prim plan.   Acest mod de creare a unui raport, la fel ca si modul Report Wizard, nu impune obligativitatea declararii unei surse a inregistrarilor, deoarece veti avea ulterior posibilitatea sa declarati sau sa creati o noua sursa de inregistrari pentru raportul dumneavoastra.  Odata cu aparitia imaginii de mai sus pe ecranul calculatorului dumneavoastra, actiunea asistentului Wizard pentru crearea rapoartelor ia sfarsit, programatorul trebuind sa decida singur asupra datelor si formei datelor care vor apare in raport. Intrucat completarea datelor acestui raport este o operatiune complexa ea va fi dezvoltata ulterior, inchideti raportul executand un click pe butonul Close. Acceptati salvarea raportului creat, chiar daca deocamdata, acesta nu contine nimic si apasati pe butonul Yes. Denumiti acest raport si apasati pe butonul OK pentru finalizarea operatiunii de creare a raportului.

Raport 1

Raport 2

52

Page 53: Baze de Date

Baze de date – Microsoft Access 2015

Raport 3

Raport 453

Page 54: Baze de Date

Baze de date – Microsoft Access 2015

Raport Interogări 1

Raport Interogări 2

54

Page 55: Baze de Date

Baze de date – Microsoft Access 2015

Raport Interogări 3

55

Page 56: Baze de Date

Baze de date – Microsoft Access 2015

INTRAREA ÎN MODUL DE VIZUALIZARE REPORT DESIGN

Etape: Execută clic pe eticheta REPORTS. Execută clic pe raportul pe care vrei să-l vizualizezi. Execută clic pe butonul DESIGN. Apare raportul în modul de vizualizare

DESIGN. Raportul conţine următoarele zone: REPORT HEADER – conţine titlul raportului; PAGE HEADER – conţine etichetele de coloană ale raportului; DETAILS – afişează lista câmpurilor alese pentru a fi tipărite în aceste

coloane; PAGE FOOTER – conţine o formula care va afişa data şi ora curentă.

56