Sei sulla pagina 1di 44

UNIVERSITATEA PETROL-GAZE DIN PLOIEŞTI

FACULTATEA DE ŞTIINŢE ECONOMICE

SPECIALIZAREA CONTABILITATE ŞI INFORMATICĂ DE GESTIUNE

LUCRARE DE LICENŢĂ

Coordonator ştiinţific:

Conf. Univ. Dr. Dorel DUŞMĂNESCU

Ploieşti

2011

Absolventă, TĂNASE Mariana

UNIVERSITATEA PETROL-GAZE DIN PLOIEŞTI

FACULTATEA DE ŞTIINŢE ECONOMICE

SPECIALIZAREA CONTABILITATE ŞI INFORMATICĂ DE GESTIUNE

LUCRARE DE LICENŢĂ

APLICAŢIE PRIVIND EVIDENŢA UNEI BIBLIOTECI

Coordonator ştiinţific:

Conf. Univ. Dr. Dorel DUŞMĂNESCU

Ploieşti

2011

2

Absolventă, TĂNASE Mariana

UNIVERSITATEA PETROL – GAZE DIN PLOIEŞTI

FACULTATEA DE ŞTIINŢE ECONOMICE

SPECIALIZAREA CONTABILITATE ŞI INFORMATICĂ DE GESTIUNE

Se aprobă, Şef de catedră

Declar pe proprie răspundere că am elaborat personal proiectul de diplomă şi nu am folosit alte materiale documentare în afară de cele prezentate la capitolul „Bibliografie”. Semnătura,

Tema lucrării de diplomă dată studentei: Tănase Mariana.

1.

Tema lucrării: Aplicaţie privind evidenţa unei biblioteci.

2.

Termenul de predare a proiectului este: martie 2011

3.

Elemente iniţiale ale lucrării: Bibliografia.

4.

Conţinutul lucrării: Capitolul 1 Baze de date şi sistemul de gestine al bazelor de date , Capitolul 2 – Limbajul SQL, Capitolul 3 – Proiectarea aplicaţiei, Concluzii, Bibliografie.

5.

Enumerarea materialului grafic (dacă este cazul): 40 figuri.

6.

Consultaţii pentru lucrare (cu indicarea părţilor de lucrare pentru care solicită consultaţia):

lunar.

7.

Data eliberării temei: 1.06.2009.

Tema a fost primită pentru îndeplinire,

Data: noiembrie 2009

Semnătura studentului …………………………….

3

COORDONATOR ŞTIINŢIFIC:

Conf. Univ. Dr. Dorel DUŞMĂNESCU

CUPRINS

INTRODUCERE

5

CAPITOLUL I. BAZE DE DATE ŞI SISTEME DE GESTIUNE A BAZELOR DE DATE

6

1.1 Colecţii de date

6

1.2 Sisteme de fişiere

6

1.3 Arhitectura sistemelor de gestiune a bazelor de date

9

1.4 Caracteristicile şi obiectivele SGBD-urilor

11

1.5 Obiectivele principale ale unui sistem de gestiune a bazelor de date

11

1.6 Sisteme de gestiune a bazelor de date relaţionale – SGBDR

13

1.6.1 Modelul relaţional al datelor

13

1.6.2 Structura relaţională a datelor

13

1.6.3 Normalizarea datelor

14

1.7

Cerinţele minimale de definire a SGBDR

14

CAPITOLUL II. LIMBAJUL SQL

16

2.1. Etapele crearii unei interogări

17

2.1 Comenzi pentru definirea datelor

17

2.2 Instrucţiunile de selecţie a datelor

18

2.3 Instrucţiunile pentru manipularea datelor

21

2.4 Cereri de interogare imbricate

22

2.5 Tabele. Chei. Relaţii

23

CAPITOLUL III. PROIECTAREA APLICAŢIEI

26

3.1 Crearea tabelelor

26

3.2 Relaţii între tabele

28

3.3 Prezentarea meniului aplicaţiei

28

3.4 Meniul Cititori

29

3.5 Meniul Cărţi

33

3.6 Meniul Împrumut

37

3.7 Meniul Rapoarte

38

CONCLUZII

43

BIBLIOGRAFIE

44

4

INTRODUCERE

În lucrarea de faţă sunt descrise cele mai des întalnite tehnici de definire şi utilizare a bazelor de date însoţite de o exemplificare prin aplicaţia Office Access 2007. Aplicaţia de faţă este un exemplu de ceea ce se poate realiza folosind teoria bazelor de date. Lucrarea este structurată în trei capitole, fiecare avand mai multe subcapitole, urmate de o serie de concluzii şi o listă cuprinzătoare de referinţe bibliografice. În primul capitol Baze de date şi sistemul de gestiune a bazelor de date sunt prezentate caracteristicele generale a bazelor de date, modelul relational, concepte folosite şi pentru dezvoltarea aplicaţie Access 2007. Astfel sunt prezentate pe scurt urmatoarele concepte:

Baze de date;

Modul de organizare a datelor: modelul de date, descrie modul de organizare a

datelor în baza de date şi o scurtă prezentare a modelelor ierarhic, reţea, relaţional;

Modelul relaţional, modalitate reprezintă datele sub forma unor structuri

bidimensionale, asemanătoare tabelelor. Sunt prezentate atuurile modelului relaţional care au

determinat folosirea lui în cadrul aplicaţiei Access 2007: bazele de date relaţionale sunt foarte flexibile şi usor de folosit;

Concepte generale ale modelului relational;

Normalizarea bazei de date (forme normale);

În cel de-al doilea capitol Limbajul SQL îmi propun să vorbesc despre aspectele generale ale limbajului precum etapele ceării unei interogări, sintaxa definirii datelor şi instrucţiunilor de selecţie şi manipulare a datelor, realizarea tabelor şi a relaţiilor dintre tabele. Al treilea capitol Proiectara aplicaţiei îmi propun să realizez un manual de utilizare al aplicaţiei, în care vor fi descrise acţiunile utilizatorului în cadrul folosirii aplicaţiei. Acest manual va explica utilizarea pas cu pas a aplicaţiei, prezentându-se din punctul de vedere al utilizatorului.

În final sunt prezentate câteva concluzii, precum şi ideile esenţiale ale lucrării practice şi teoretice.

5

CAPITOLUL I. BAZE DE DATE ŞI SISTEME DE GESTIUNE A BAZELOR DE DATE

1.1 Colecţii de date

Dictionarul explicativ al limbii române precizează că noţiunea aferentă termenului de dată poate avea atât semnificaţie temporală, cât şi semnificaţie referitoare la „fiecare din numerele, marimile, relaţiile etc. care servesc pentru rezolvarea unei probleme sau care sunt obţinute în urma unei cercetări şi urmează să fie supuse unei prelucrări”. Un ansamblu de date înrudite pot configura o informaţie complexă. Datele de acelaşi tip sau aceeaşi structură informaţională pot fi clasificate în fişe şi/sau tabele şi pot fi prelucrate ulterior. De-a lungul timpurilor, evidenţele datelor au găsit felurite suporturi de stocare, de la memorarea mintală, rabojul de lemn, suporturi de piele sau papirus, registre de hârtie, suportul magnetic al dischetei etc. Data poate fi asimilată în bună masură cu cantitatea de informaţii. Ea poate fi concomitent obiect de prelucrare, sursă de fundamentare a modelelor şi proceselor, mijloc de tezaurizare informaţională. Pe de-o parte, datele pot fi generatoare de informaţii, pe de altă parte, au proprietăţi care permit procesarea, rafinarea acestora ca sursă de noi informaţii. Indiferent de domeniul vieţii sociale abordate, datele concură la luarea deciziilor.

1.2 Sisteme de fişiere

Anii ’60 şi lupta pentru supremaţia spaţială a impus introducerea unor standarde de evidenţe a datelor a căror destinaţie iniţială au fost misiunile Apolo. Volumul enorm de date trebuia actualizat aproape continuu şi astfel s-au conturat concepte aferente sistemelor de gestiune a bazelor de date, prescurtat SGBD. Sistemele bazate pe fişiere presupun ca fiecărui fişier i se alocă un nume specific, în care se introduc date de acelaşi tip, cum ar fi de exemplu: situaţia facturilor furnizor (un singur furnizor sau diferiţi), situaţia stocurilor din magaziile specializate sau din magazia centrală, situaţia clientilor etc. Fiecare fişier este stocat şi posiate şi fi modificat de unul sau mai mulţi utilizatori (mai mult sau mai puţin autorizaţi) putând apărea dublări de fişiere rezultate după fiecare nouă prelucrare, dublări de date etc. Dacă, însă, reţeaua centrală la care sunt cuplate terminalele a fost dezvoltată pe parcurs exista şi cazul în care unele aplicaţii software să nu fie

6

compatibile între ele şi, deja, problema se complica în sensul că prin incompatibilitate

prelucrarea unor informaţii poate fi complet suprimată.

Fară îndoială că sistemele bazate pe fişiere prezintă avantaje de lucru atunci când sunt

monitorizate de un număr limitat de utilizatori:

nu este necesară prelucrarea a două sau mai multe fişiere de date aferente unor

activităţi diferite, dar înrudite în unele limite (ex: intrări de marfă/ieşiri de marfă);

nu este necesară conlucrarea în reţea sau lucrul în simultan pe acelaşi fişier în

locaţii diferite ale reţelei etc.

Definiţia generală a bazelor de date este dată de Thomas Connolly: „Bazele de date sunt

o colecţia partajată de date, între care există relaţii logice (şi o descriere a acestor date),

proiectată pentru a satisface necesităţile informaţionale ale unei organizaţii sau ale unui grup.”

Există însă o diferenţă între date şi informaţii, bine sesizată de Robert Dollinger astfel:

„Datele sunt fapte culese din lumea reală pe bază de observaţii şi măsurători. Informaţia este

rezultatul interprerii datelor de catre un anumit subiect şi conferă acestuia capacitatea de a

lua decizii”.

În functie de gradul de detaliere, datele pot fi:

date elementare;

date compuse.

Astfel, datele elementare sunt entităţi indivizibile, atât la nivel informaţional, cât şi la nivel

de prelucrare. Datele compuse sunt mulţimi de date elementare, care ajută la caracterizarea

entităţilor (ansamblelor) informaţionale şi care pot fi descompuse în date elementare.

Prelucrarea datelor se poate realiza atât la nivelul datelor elementare, cât şi la nivelul

datelor compuse.

Colecţiile de date sunt mulţimi de date ce privesc, deci, un domeniu, un proces, o activitate

sau un obiect. Sub aspect informatizat ele sunt organizate şi dispuse sistematizat pe un suport de

memorie externă.

Sub aspectul evoluţiei categoriilor de receptare şi memorare informatizată a datelor, Robert

Dollinger identifica patru etape distincte de abordare a acestora.

Prima etapa este aferentă trecerii de la sistemele de prelucrare manuală la computer.

Principalul tip de organizare a datelor este fişierul. Sistemul bazat pe fişiere reprezintă o colecţie

de programe-aplicaţie, care efectuează servicii pentru utilizatorii finali, cum ar fi producerea de

rapoarte. Fiecare program defineşte şi gestionează propriile date. Un fişier este un set de

înregistrari care conţin date între care există relaţii logice. Dacă informaţia este stocată în diverse

locaţii spre prelucrare, datele pot fi dublate, triplate, iar multiplicarea datelor va fi existentă în

fişiere, care, cel mai probabil nu vor fi actualizate periodic. Accesul la o înregistrare dintr-un

7

fişier se face pe principiul accesului secvenţial sau prin acces direct, pe baza unei chei de identificare şi de localizare rapidă a înregistrarii, pe baza indexării fişierelor. Acest tip de organizare a datelor este caracteristic aplicaţiilor realizate cu limbaje de programare (Fortran, Pascal, Basic etc.). Dezavantajele rezultate din organizarea datelor în fişiere sunt urmatoarele:

Redundanţa ridicată (stocarea aceloraşi date în mai multe fişiere);

Dificultăţi de acces la date, întrucât aceleaşi date sunt exploatate de mai mulţi utilizatori simultan şi în paralel, ceea ce necesită ulterior operaţii suplimentare de sortare, fuziune, ventilare, conciliere etc.;

Izolarea datelor, întrucât nu pot fi scrise aplicaţii executabile care să acceseze datele într-o maniera globală;

Actualizarea datelor prin adăugare, modificare, ştergere, care creează conflicte când mai multi utilizatori doresc să modifice simultan aceleaşi date;

Dependenţa programelor faţă de date;

Greutatea de a obtine raspunsuri rapide (on-line) la probleme neprevăzute;

Fiecare dată este descrisă independent în toate fişierele în care apare. Dacă, însă, într-un fişier se modifică formatul şi valoarea unei date, modificarea nu se transmite automat ulterior în toate fişierele, astfel că pentru aceeaşi data pot să

apară valori diferite în fişiere diferite, ceea ce este cunoscut sub denumirea de inconsistenţă a datelor. Dacă fişierul este realizat în limbaje diferite, există riscul incompatibilitatii datelor, respectiv nu este posibilă menţinerea integrităţii datelor. Deci, toate limitarile tratării bazate pe fişiere se bazează pe urmatorii factori:

a. definiţia datelor este încorporată în programele aplicaţie, în loc să fie stocată separat şi independent;

b. nu există un control al accesului şi manipularii datelor, dincolo de cel impus de către

programele aplicaţie. A doua etapă se caracterizează prin separarea dintre structura logică de date şi structura fizică. Dacă în prima etapă datele memorate pe benzi magnetice, iar structura datelor servea, de regulă, o singură aplicaţie, în această nouă etapă apar noi forme de stocare a datelor (discul magnetic, banda magnetică etc.), ceea ce a creat probleme de compatibilizare, atât hardware, cât şi software, cu alte cuvinte există riscul alterarii datelor şi structurilor de date atât fizic, cât şi logic.

8

Etapa a treia este definită de apariţia fişierelor integrate, prin care datele sunt legate logic între ele, chiar dacă datele fizice sunt rezidente pe diverse sisteme. Această etapă constituie un prim pas spre compatibilizarea accesului la date atât logic, cât şi fizic, ceea ce a constituit nucleul de bază în definirea datelor şi a legaturilor dintre ele, ca sistem paralel de aplicatiile sub care rulează acestea. Etapa a patra este etapa bazelor de date propriu-zise şi a dezvoltarii sistemelor de gestiune a bazelor de date. Thomas Connolly defineste baza de date ca fiind „colecţie partajată de date, între care există relaţii logice (şi o descriere a acestor date), proiectată pentru a satisface necesităţile informaţionale ale unei organizaţii”. Bazele de date constituie o coleţie de date structurată logic care serveşte ca sursă informaţională unei comunităţi ce poate fi închisă sau deschisă.

1.3 Arhitectura sistemelor de gestiune a bazelor de date

Principala operaţie dintr-o aplicaţie de baze de date este cea de regăsire a datelor, deci de a raspunde la interogări. Într-o bază de date, de asemenea sunt frecvente operaţiile urmatoare:

memorare;

ştergere;

actualizare.

Evoluţia conceptuală a deceniului ultim a dus spre generalizare către arhitectura client-

server, arhitectură care înglobează baza de date, sistemul sau sistemele de gestiune a bazelor de date şi sistemele de aplicaţii. Independenţa datelor reprezintă un concept fundamental în filosofia bazelor de date şi în administrarea lor. Ea este legată de modul de memorare şi de organizare a datelor şi în ce masură este transparent şi inteligibil pentru utilizator. Două aspecte sunt principal importante în caracterizarea independenţei datelor, şi anume:

1. Independenţa fizică a datelor, care presupune posibilitatea modificării schemei fizice a datelor fară ca aceasta să implice modificarea schemei conceptuale, a schemei logice şi a aplicaţiilor executabile. Astfel, o modificare a structurii fizice nu va afecta aplicaţia şi reciproc, o modificare a aplicaţiei va lasă nemodificată structura fizică a datelor;

2. Independenţa logică a datelor, presupune că pot fi realizate modificări conceptuale ale datelor, fară ca prin aceasta să fie modificată schema logică sau a programelor de aplicaţie.

9

Cerinţele minimale impuse unei baze de date, sunt:

furnizarea în timp util a informaţiilor solicitate;

asigurarea unor costuri minime în prelucrarea şi întreţinerea informaţiei;

capacitatea de a satisface, cu aceleaşi date, necesităţi informaţionale ale unui numar mare de utilizatori;

flexibilitate, în sensul de adaptare la interogari noi, neprevazute iniţial;

minimizarea redundanţei datelor;

posibilitatea exploatării datelor de mai mulţi utilizatori;

asigurarea securităţii datelor prin măsuri de protecţie pe diverse nivele a accesului neautorizat, denumit şi confidenţialitatea accesului;

capacitatea recuperării datelor ca urmare a unor manipulări eronate sau deteriorări accidentale (integritatea datelor);

posibilitatea utilizării eforturilor anterioare şi anticiparea nevoilor viitoare (compatibilitate şi expandabilitate). Avantajele datelor centralizate în baze de date sunt în principal urmatoarele:

A. Reducerea redundanţei datelor;

B. Evitarea inconsistenţei datelor prin actualizarea centralizată a întregii baze de date;

C. Posibilitatea partajării datelor;

D. Încurajarea introducerii standardelor de compatibilizare a bazelor de date cu aplicaţii executabile;

E. Posibilitatea aplicării restricţiilor de securitate pe mai multe nivele;

F. Menţinerea integrităţii datelor. Arhitectura bazelor de date este, principial, alcatuită din urmatoarele componente:

baza de date propriu-zisă;

sistemul de gestiune al bazei de date;

un dictionar al bazei de date, care conţine informaţii despre: date, structura datelor, statistici;

documentaţie;

componente hardware (comune sau specializate);

reglementări administrative destinate bunei funcţionări a sistemului;

factorul uman autorizat în diverse limite (utilizatori, administrator, programatori, operatori).

10

Sistemele de gestionare a bazelor de date (SGBD) reprezintă în viziunea lui Thomas Connolly un sistem de programe care permit utilizatorului definirea, creerea şi întreţinerea bazei de date şi accesul controlat la aceasta. Dupa alti autori, un sistem de gestiune a bazelor de date reprezintă un produs software capabil de a asigura interacţiunea cu o bază de date, care să permită definirea, consultarea şi actualizarea datelor din baza de date.

1.4 Caracteristicile şi obiectivele SGBD-urilor

Caracteristicile principale ale Sistemelor de gestiune a datelor sunt urmatoarele componente:

limbajul de definire a datelor pe baza căruia pot fi specificate tipurile de date şi structurile dintre acestea;

limbajul de manipulare a datelor cu ajutorul căruia utilizatorii autorizaţi pot să insereze, sa actualizeze, sa şteargă şi să extragă date din baza de date. Limbajul de manipulare a datelor poate realiza toate acţiunile de mai sus pe baza interogarilor, fiind deseori denumit şi limbaj de interogare. Limbajele de manipulare a datelor pot fi procedurale sau neprocedurale. Limbajele procedurale tratează bazele de date înregistrare-cu-înregistrare, în schimb limbajele neprocedurale operează asupra unor seturi de înregistrari;

limbaj pentru controlul şi securitatea datelor pe baza căruia se poate asigura menţinerea confidenţialităţii şi integrităţii datelor faţă de utilizatori neautorizati. De asemenea, acest tip de limbaj poate, până în anumite limite, să salveze informaţii în cazul unor defecţiuni etc.

1.5 Obiectivele principale ale unui sistem de gestiune a bazelor de date

Un prim obiectiv este acela de independenţă fizică legată de suporturile de memorare a datelor şi interacţia cu sistemul/sistemele de gestiune a bazelor de date, fară ca datele sa fie alterate. Independenţa logică, permite că un utilizator sau un grup de utilizatori autorizaţi să-si construiască noi entităţi şi relaţii conversaţionale. Manipularea datelor de către neinformaticieni, face ca SGBD-ul să pună la dispoziţie un limbaj neprocedural şi o interfaţă vizuală apropiată de limbajul natural.

11

Administrarea centralizată a datelor a permite o organizare coerentă şi eficace a informaţiei, organizarea nejudicioasă a acestora poate conduce la un grad mai mic sau mai mare de redundanţă a unor date. Coerenţa datelor este un concept prin care informaţia trebuie să satisfacă simultan constrângeri statice, dinamice, locale sau generale. Partajabilitatea datelor face posibilă utilizarea datelor din baza de date de către aplicaţii în timp şi simultan, fara a afecta aplicatiile altor utilizatori. SGBD-ul trebuie să asigure securitatea fizică şi logică a informaţiei şi să permită doar utilizatorilor autorizaţi să efectueze operaţii asupra bazei de date. De regula, un SGBD trebuie să includă minimal cinci clase de module:

programe de gestiune a bazei de date;

module pentru tratarea limbajului de definire a datelor;

module pentru tratarea limbajului de manipulare a datelor;

module utilitare;

module de control.

Participanţii la alcătuirea, configurarea şi utilizarea bazelor de date sunt:

a) Administratorii de date – sunt responsabili de gestionarea resurselor de date, de planificarea,

dezvoltarea şi întreţinerea standardelor, a politicilor şi a procedurilor bazei de date, precum şi de

proiectarea logică a bazei de date. b) Administratorii de baze de date – sunt responsabili cu realizarea fizică a bazei de date, respectiv proiectarea şi implementarea acesteia, securitatea şi controlul integrităţii, întreţinere şi atingere de performanţe optime pentru aplicaţii şi utilizatori.

c) Proiectanţii de baze de date – care pot fi la rândul lor de alte două categorii:

c1) proiectanţi de baze de date logice – acesta trebuie să cunoască foarte bine necesităţile bazei de date, sa fie capabil să identifice datele sub aspectul constrângerilor şi relaţiilor dintre acestea. Acesta trebuie să aibe temeinice cunoştinţe asupra sursei datelor şi tipurilor principale de utilizare ale acestora, inclusiv a fluxurilor. Practic, proiectantul de baze de date logice va avea două obiective majore:

proiectarea conceptuală a bazei de date pentru a fi cât mai putin sensibilă la sistemul de gestiune a bazei de date avut la dispozitie, programele-aplicaţie, limbajele de programare etc.;

orientarea spre un anume model de date (relaţional, reţea, ierarhic, orientat spre obiecte).

12

c2) proiectanţii de baze de date fizice – au rolul de a prelua modelul logic şi de al transpune fizic prin:

configurarea setului de tabele şi constrângeri sub aspectul integrităţii datelor;

tipurile de suporturi de stocare şi metodele de acces la date;

măsurile aferente asigurării securităţii datelor.

d) programatorii de aplicaţii – preiau de la analiştii de sistem documentaţia necesară şi proiectează implementarea programelor de aplicaţii tinând seamă de limitele sistemului de operare şi al resurselor acestuia, astfel încât, utilizatorii finali sa aibă acces rapid la informaţie. De regulă programele de aplicaţii sunt redactate într-un limbaj de programare. e) Utilizatorii finali – pot fi:

utilizatori conversaţionali (nespecialişti), care interactionează cu baza de date într- un mod apropiat cu conversaţia curentă.

utilizatori iniţiaţi (specialişti), care cunosc structura bazei de date, au cunoştinţe de programare, cunosc problemele sistemului de operare, astfel încât resursele consumate sa fie minime.

1.6 Sisteme de gestiune a bazelor de date relaţionale – SGBDR

1.6.1 Modelul relaţional al datelor

SGBDR se defineşte ca fiind un sistem de gestiune care utilizează organizarea datelor conform modelului relaţional. Conceptul de bază al modelului relaţional este acela de relaţie/tabelă (limbajul SQL specializat în comenzi de manipulare la nivel de tabelă).

1.6.2 Structura relaţională a datelor

Structura relaţională a datelor cuprinde următoarele component:

Domeniul – ansamblul de valori caracterizat printr-un nume (domeniu de valori). El poate fi precizat explicit – prin enumerarea tuturor valorilor care aparţin domeniului – sau implicit prin precizarea proprietăţilor pe care le au valorile din domeniu. Pentru un ansamblu de valori produsul

cartezian al acestora reprezintă ansamblul tuplurilor nDD,

,1()nvv,

,1unde

v 1 este o valoare din D 1 ,

v 2 este o valoare din D 2 , etc., unde tuplura corespunde unei linii din tabelă.

Relaţia – un subansamblu al produsului cartezian al mai multor domenii, caracterizat prin nume şi care conţine tupluri cu semnificaţie (tabelă). Într-o relaţie, tuplurile trebuie să fie distincte nu se admit duplicate. O reprezentare a relaţiei este tabelul bidimensional (tabela de date) în care

13

liniile reprezintă tuplurile iar coloanele corespund domeniilor. Numărul tuplurilor dintr-o relaţie este cardinalul relaţiei, numărul valorilor dintr-un tuplu este gradul relaţiei. Pentru a diferenţia coloanele care conţin valori ale aceluiaşi domeniu, eliminând dependenţa de poziţie, se asociază fiecărei coloane un nume distinct – atribut. În timp ce tuplurile sunt unice, un domeniu poate apare de mai multe ori în produsul cartezian pe baza căruia este definită relaţia.

1.6.3 Normalizarea datelor

Este procesul prin care se elimină redundanţa datelor în proiectul bazei de date şi se construieşte un model de bază de date care susţine diverse cerinţe funcţionale şi structuri alternative ale bazei de date. Sunt aplicate în normalizarea unei baze de date următoarele trei reguli.

R 1 . Toate atributele trebuie specificate o singură dată. Aceasta este forma intâi normală.

R 2 . Un atribut trebuie să depindă în întregime de identificatorul unic al entităţii pe care o

descrie. Aceasta este forma a doua normală. Se pun atributele într-o tabelă în care depind exclusiv de o cheie principală. Nu se utilizează tabele în care atributele să nu depindă exclusiv de o singură cheie!

R 3 . Pentru a fi în forma normală a treia, fiecare tabelă trebuie să posede o singură cheie

primară, iar datele din tabelă trebuie să depindă exclusiv de cheia primară a tabelei.

1.7 Cerinţele minimale de definire a SGBDR

Din primele versiuni apărute, practic nici un SGBD nu reuşea să acopere în întregime regulile lui Codd. De aceea s-au formulat o serie de criterii minimale pe care trebuie să le satisfacă un sistem de gestiune a bazelor de date pentru a putea fi considerat relaţional. Pentru ca un SGBD să fie minimal relaţional:

1. toate datele din cadrul bazei de date sunt reprezentate prin valori în tabele; 2. între tabele nu există pointeri observabili de către utilizatori – operaţiile cu relaţii nu fac apel la pointeri, indecsuri, fişiere inverse etc.; 3. sistemul suportă operatori relaţionali de proiecţie, selecţie şi joncţiune natural, fără limitări impuse. Unitatea de informaţie în cadrul acestor operaţii trebuie să fie relaţia. SGBD este complet relaţional dacă este minimal relaţional şi satisface în plus următoarele condiţii:

sistemul suportă toate operaţiile de bază ale algebrei relaţionale;

sistemul suportă două dintre restricţiile de integritate de bază ale modelului relaţional şi anume unicitatea cheii unei relaţii şi restricţia referenţială; SGBD este pseudorelaţional dacă satisface condiţiile 1 şi 3 de mai sus;

14

SGBD este cu interfaţă relaţională dacă satisface condiţiile 1 şi 3 de mai sus şi condiţia 3 este îndeplinită numai în raport cu operaţia de interogare.

15

CAPITOLUL II. LIMBAJUL SQL

Unul dintre cele mai puternice limbaje structurate pentru interogarea bazelor de date relaţionale îl constituie în prezent SQL (Structured Query Language). Acesta a devenit chiar un standard pentru o gamă din ce în ce mai largă de sisteme de gestiune a bazelor de date. Limbajul SQL permite o comunicare complexă şi rapidă a utilizatorului cu bazele de date, în funcţie de cerinţele şi restricţiile acestuia. Pe lângă manipularea şi regăsirea datelor, se efectuează şi operaţii complexe privind actualizarea şi administrarea bazei de date. Există un anumit grad de standardizare a limbajului SQL, mai multe sisteme de gestiune a bazelor de date recunoscând principalele instrucţiuni ale acestuia (de exemplu: Oracle, Access, Sybase etc.). Pe plan mondial, standardul în domeniu este considerat ANSI (American National Standards Institute) SQL care are în vedere atât aspectele de definire, interogare, manipulare a datelor, procesare a tranzacţiilor, cât şi caracteristicile complexe privind integritatea informaţiilor, cursoarele derulante sau joncţiunile externe. Mulţi producători de sisteme de gestiune a bazelor de date furnizează propriile extensii ale limbajului SQL, asigurându-şi astfel exclusivitatea. Sistemul de gestiune a bazelor de date ACCESS 2007 acceptă utilizarea limbajului de interogare SQL. Existenţa tehnicii grafice QBE (Query by Example - interogare prin exemplu) permite proiectarea facilă a unor interogări complexe. Informaţia definită pe grila QBE va fi automat transformată într-o instrucţiune SQL. Dialectul ACCESS conţine unele particularităţi în raport de standardul ANSI SQL, fiind conceput mai mult pentru crearea interogărilor de selecţie. Pentru a putea scrie corect o instrucţiune SQL în ACCESS 2007 este necesară respectarea strictă a unor reguli de sintaxă. Câteva dintre acestea:

orice comandă se va încheia cu ; ;

într-o interogare unde se folosesc câmpuri din mai multe tabele, pentru a separa numele tabelului de numele câmpului, se va utiliza „.” după modelul: tabel.câmp ;

parantezele drepte încadrează numele de câmpuri doar când acestea conţin spaţii sau simboluri neacceptate de SQL ;

pentru a delimita parametrii dintr-o listă, se utilizeaza virgulele ;

valorile de tip şir se marchează prin apostrof sau ghilimele ;

inegalităţile din cadrul clauzelor se vor specifica prin “<>”;

simbolurile ? şi * sunt folosite pentru a desemna unul sau mai multe caractere de înlocuire;

pentru a evidenţia valorile de tip dată/timp se apelează la caracterul #;

16

2.1. Etapele crearii unei interogări

În crearea şi respectiv executarea unei interogări ACCESS 2007 construită prin utilizarea de instrucţiuni SQL se parcurg, de fiecare dată, mai multe etape de bază:

din fereastra Database se va selecta butonul Queries (Interogări) ;

Database se va selecta butonul Queries (Interogări) ; Figura 1. Creare interogări • pentru a crea

Figura 1. Creare interogări

pentru a crea interogarea SQL dorită va fi necesară, fie activarea butonului New, fie alegerea opţiunii Create query in Design view;

în cazul în care utilizatorul a folosit butonul New, acum va trebui să aleagă din fereastra New Query, opţiunea Design View

foarte importantă este alegerea în continuare (cu ajutorul butonului Add) a tabelelor (Tables), interogării (Queries) sau a ambelor categorii de obiecte (Both) care vor reprezenta suportul interogării SQL. De menţionat faptul că se pot utiliza mai multe tabele (interogări) din fereastra Show Table;

pentru a scrie interogarea SQL Access este necesar ca din meniul View utilizatorul să opteze pentru modul de vizualizare SQL View. În fereastra care apare se vor tasta instrucţiunile SQL specifice, respectând sintaxa corespunzătoare;

interogarea SQL Access creată se poate lansa în execuţie în două moduri: prin utilizarea butonului din bara Query Design sau prin opţiunea Run, din meniul Query. Pe ecranul calculatorului va fi afişat în final rezultatul interogării SQL. Utilizatorul îl va analiza şi interpreta în funcţie de propriile cerinţe şi restricţii informaţionale. În cazul în care cererea de interogare SQL ACCESS are erori de sintaxă sau determină obţinerea de rezultate eronate, va trebui să se revină în modul de afişare SQL View pentru a se face corecţiile necesare.

afişare SQL View pentru a se face corecţiile necesare. • 2.1 Comenzi pentru definirea datelor Principalele

2.1 Comenzi pentru definirea datelor

Principalele comenzi SQL pentru definirea datelor sunt următoarele:

CREATE DATABASE,

DROP DATABASE,

CREATE TABLE,

17

ALTER TABLE,

DROP TABLE. Comanda CREATE DATABASE are următoarea sintaxă: CREATE DATABASE nume_baza_de_date fiind utilizată pentru crearea unei noi baze de date. Comanda DROP DATABASE nume_baza_de_date este utilizată pentru stergerea bazei de

date.

Pentru crearea unei tabele se utilizează comanda CREATE TABLE nume_tabela (câmp1 tip_data [NOT NULL], câmp2 tip_data [NOT NULL], câmp3 tip_data [NOT NULL] Printre cele mai importante tipuri de date folosite amintim: Character, Memo, Number, Integer, Decimal, Logical, Date, OLE Object etc.Numele tabelei trebuie să fie unic în cadrul bazei de date, neputând fi unul din cuvintele rezervate. Totodată, acesta poate avea şi anumite restrictii privind: numărul de caractere din care este format, utilizarea anumitor simboluri, folosirea literelor mari sau mici, natura caracterului de început etc. Aceleaşi cerinţe apar şi pentru numele câmpurilor. În plus există posibilitatea duplicării lor în cadrul bazei de date, dar se păstrează unicitatea în tabelă. Clauza NOT NULL arată că în câmpul respectiv nu se memorează valori de tip NULL. Exemplu: Se creează tabela Vânzări cu urmatoarea structură a înregistrării: numar (tip numeric), cod marfa (tip numeric), data vânzarii (tip data calendaristica), localitatea (tip caracter În câmpul data vânzarii nu se vor memora valori de tip NULL. CREATE TABLE VANZARI(Nr Number, Cod_m Number, Data_v Date NOT NULL, Localit Char) Pentru modificarea structurii unui tabel se utilizează comanda ALTER TABLE cu următoarea sintaxă (simplificată): ALTER TABLE nume_tabela ADD nume_câmp tip_data. În această variantă se adaugă în structura tabelei câmpul specificat în comenda. Exemplu: Se adaugă în tabela Personal_Vânzare un nou câmp numit Telefon: ALTER TABLE PERSONAL_VANZARE ADD Telefon Integer. Comanda DROP TABLE nume_tabela este folosită pentru a şterge complet o tabelă dintr-o bază de date (structura şi valorile asociate).

2.2 Instrucţiunile de selecţie a datelor

Instrucţiunile de selecţie reprezintă una dintre categoriile cele mai importante ale limbajului de interogare SQL ACCESS. Indiferent dacă sunt simple sau complexe, punctul de plecare îl constituie fraza SELECT, prin care se regasesc şi se afiseaza informaţiile dorite de utilizator.

18

Pentru definirea interogărilor de selectie simple se utilizează urmatoarea sintaxă a

instrucţiunii SELECT:

SELECT [domeniu] lista_selectie

FROM nume_tabela1, nume_tabela2,

[WHERE criteriul_de_selectie]

[ORDER BY câmpuri_criteriu [ASC|DESC]]

[GROUP BY câmp_de_grupare

[HAVING criteriul_de_ grupare]]

Domeniu permite stabilirearea modalităţii de manipulare a înregistrarilor din baza de date

asupra căreia se efectuează selecţia şi poate fi:

ALL: permite includerea tuturor înregistrarilor ce îndeplinesc condiţiile impuse. Cum

frazele SELECT tabela şi SELECT ALL tabela au practic acelaşi rezultat, calificativul

ALL este destul de rar utilizat;

DISTINCT: are ca efect eliminarea înregistrarilor care conţin duplicate în câmpurile

selectate astfel se va afişa doar o apariţie a datei multiple;

DISTINCTROW: are în vedere înregistrările duplicate în ansamblul lor, nu numai pe cele

care au câmpuri duplicate.

Lista_selectie cuprinde toate câmpurile care vor apărea în tabelă cu rezultatele interogarii.

Câmpurile adăugate în rândul Field din grila Query a machetei grafice QBE, care au marcată

caseta de validare Show, sunt aceleaşi cu cele menţionate în lista de selecţie. În scrierea

interogărilor de selecţie simple SQL ACCESS este posibilă şi folosirea funcţiilor totalizatoare.

Cele mai importante funcţii din această categorie sunt:

COUNT: returnează numărul de înregistrări care respectă condiţiile stabilite prin clauza

WHERE;

SUM: redă suma tuturor valorilor dintr-un câmp; operează numai cu valori numerice;

AVG: calculează valoarea medie a unui câmp numeric;

MAX: permite determinarea celei mai mari valori dintr-un câmp;

MIN: duce la obţinerea celei mai mici valori a unui câmp ramâne valabilă şi aici restricţia

privind clauza WHERE.

În cadrul listei de selecţie se pot defini şi alias-uri. Acestea reprezintă un pseudonim

(nume) asociat unui câmp astfel : câmp AS alias. functiei agregat.

Clauza FROM specifică numele tabelei sau tabelelor care vor forma suportul interogării.

dacă în lista_selectie se includ câmpuri din mai multe tabele, în faţa numelui acestora trebuie

precizată tabela din care fac parte. Aşa cum am arătat la regulile de sintaxă, pentru separarea

numelor de tabele, se utilizează semnul , (virgulă). Trebuie să precizez faptul că în cadrul acestei

19

clauze se pot menţiona pe lânga tabele, ca surse de informatii pentru interogarile SQL, şi interogări care au fost deja create. Clauza WHERE face interogările mai selective, specificând faptul ca vor fi afişate numai înregistrările care îndeplinesc criteriul descris. Parametrul criteriul de selecţie este o expresie care conţine un operator de tip text (şir) sau numeric, în funcţie de tipul câmpului. Clauza WHERE este opţională şi nu operează cu funcţii totalizatoare. În cadrul condiţiei din clauza WHERE pot fi utilizaţi operatorii : AND, OR, NOT, IN, BETWEEN, LIKE. Apelând la aceştia, este posibilă construirea unor condiţii mai complexe. Clauza ORDER BY utilizată atunci când se doreşte ca rezultatele interogării să fie ordonate în mod crescator (ASC) sau descrescător (DESC). Sortarea este opţională şi se poate realiza după unul sau mai multe câmpuri_criteriu (definite drept chei de sortare). Componenta BY a clauzei nu poate să lipsească atunci când se doreşte sortarea rezultatelor interogarii SQL ACCESS. Clauza GROUP BY precizează câmpul sau câmpurile pe baza cărora se va efectua gruparea înregistrarilor. În acelaşi timp, prin intermediul acestei clauze, se pot executa funcţiile agregate descrise în lista de selectie pentru fiecare dintre grupări (constituite pe baza câmpurilor de grupare). Echivalentul acestei clauze în macheta grafică QBE de construcţie a interogării îl reprezintă rândul Total. Clauza HAVING se referă la criteriul care va fi aplicat câmpului-definit ca argument al funcţiei agregat. Altfel spus, când se foloseste clauza GROUP BY şi este necesară şi o condiţie, se va utiliza clauza HAVING. Spre deosebire de WHERE, care acţionează înainte de a se efectua gruparea înregistrarilor, HAVING va opera după definirea acesteia. De remarcat faptul că se admite utilizarea unei funcţii agregat care nu apare în lista de selecţie, precum şi apelarea la mai multe criterii de grupare. O facilitate deosebit de importantă a limbajului SQL o reprezintă posibilitatea de a grupa şi folosi date din tabele diferite. Operaţiile de asociere induse de clauza JOIN au ca rezultat producerea tuturor combinaţiilor posibile, pentru conţinutul informaţional al fiecarei tabele. Noile înregistrări care rezultă în urma joncţiunii vor deveni disponibile pentru selecţiile ulterioare. La o asociere pot participa mai mult de două tabele. Principala modalitate de realizarea a joncţiunii este sintetizată de următoarea sintaxă:

SELECT [domeniu] lista_selectie FROM nume_tabela1 {INNER|LEFT OUTER|RIGHT OUTER} JOIN nume_tabela2 ON criteriul_de_asociere [{INNER|LEFT OUTER|RIGHT OUTER} JOIN nume_tabela3 ON criteriul_de_asociere] [WHERE criteriul_de_selectie]

20

[ORDER BY câmpuri_criteriu [ASC|DESC]] Semnificaţia elementelor de sintaxă descrise mai sus este urmatoarea:

INNER, LEFT OUTER, RIGHT, OUTER se referă la tipurile de joncţiuni (INNER JOIN, internă de tip echivalent, LEFT OUTER JOIN, externă de stânga, RIGHT OUTER JOIN, externă de dreapta). De remarcat faptul ca SQL ACCESS acceptă scrierea interogărilor externe fară specificarea explicită a lui OUTER;

JOIN specifică tabela care va fi asociată (nume_tabela2, nume_tabela3

tabelei

)

precizată în clauza FROM,

ON criteriul de asociere arată relaţia dintre câmpurile pe care se bazeaza joncţiunea. Unul se afla în tabela asociată, iar celălalt există într-o altă tabelă din lista cu numele tabelelor.

Expresia criteriul_de_asociere conţine un operator de comparatie (=,<,>,<>,<=,>=) şi va returna valorile logice TRUE sau FALSE. Joncţiunile tip INNER JOIN determină o asociere a înregistrarilor din tabele, astfel încât să rezulte un numar total de înregistrări egal cu produsul numărului de înregistrări din fiecare tabelă. Joncţiunile externe (OUTER) sunt de două tipuri: de stânga (LEFT OUTER JOIN) şi de dreapta (RIGHT OUTER JOIN), fiind destul de puţin utilizate. Echivalentul QBE al acestor categorii de joncţiuni este alegerea opţiunilor 1, 2 sau 3, din caseta Join Properties.

2.3 Instrucţiunile pentru manipularea datelor

Cele mai importante instrucţiuni sunt: INSERT, UPDATE şi DELETE. Comanda INSERT se foloseşte pentru adăugarea de înregistrări dintr-o tabelă în alta. Prin această interogare de adăugare nu se pot insera date dintr-o tabelă în ea însăşi. Operaţia ar fi totuşi posibilă printr-o selectare prealabilă a datelor iniţiale într-un tabel temporar, urmată de modificarea şi readucerea lor în tabelul de la care s-a plecat. Sintaxa comenzii este următoarea:

INSERT INTO nume_tabela (câmp1, câmp2 VALUES (valoare1,valoare2 În acest caz se adaugă o înregistrare într-o tabelă, mentionându-se câmpurile şi valorile asociate acestora. Ca particularitate se remarcă inserarea unei singure înregistrari la un moment dat. Prima forma a lui INSERT se utilizează pentru operaţii simple care presupun lucrul cu un numar redus de înregistrări. După lansarea în execuţie a interogării apare un mesaj de avertizare privind adăugarea noii înregistrari în baza de date şi caracterul ireversibil al acestei operatii. În cadrul acestui tip de inserare a datelor trebuie sa se respecte urmatoarele reguli:

)

21

valorile menţionate în clauza VALUES vor avea aceeaşi natură cu câmpurile specificate în clauza INTO,

marimea valorii corespunzatoare fiecărui câmp va fi mai mică decât dimensiunea câmpului,

nu va fi obligatorie specificarea denumirii câmpurilor, deoarece SQL ACCESS va asocia listei de valori câmpurile în ordinea din structura înregistrării (prima valoare se va introduce în primul câmp, a doua valoare, în al doilea câmp ş.a.m.d.)

dacă un câmp are definiţia NOT NULL, va fi obligatorie introducerea unei valori pentru acesta. Comanda DELETE are următoarea sintaxă:

DELETE FROM nume_tabela [WHERE criteriul_de_stergere] se materializează în interogarea acţiune de ştergere parţială sau totală a înregistrărilor din tabele. În acelaşi timp se va şterge doar conţinutul tabelei nu şi aceasta (pentru eliminarea tabelei se va apela la instrucţiunea DROP TABLE). Comanda UPDATE are următoarea sintaxă:

UPDATE nume_tabela SET nume_câmp1 = valoare1 [,nume_câmp2 = valoare2] [WHERE criteriul_de_actualizare] Aceasta are atât scopul de a insera noi înregistrari, cât şi de a modifica valorile câmpurilor din înregistrările existente. Ca şi în cazul instrucţiunii INSERT, se va urmări dacă în câmpul cu valori de actualizat sunt permise numai valori unice. Atunci când se doreşte actualizarea datelor din mai multe câmpuri se foloseşte virgula ca separator între câmpuri şi valorile acestora. Se pot utiliza mai multe condiţii WHERE apelând la operatorul logic AND pentru a limita actualizarea la înregistrari mai bine specificate.

2.4 Cereri de interogare imbricate

Scrierea unei interogari în cadrul alteia duce la apariţia unei subinterogari. Setul de rezultate obţinut de la o interogare va constitui argument pentru o alta. Utilizatorul poate astfel să creeze legături între mai multe interogări SQL ACCESS, pe baza unor câmpuri unice, cu rol de căutare în structura tabelelor. Subinterogarile înlocuiesc interogarile imbricate din versiunile precedente, cu performanţe mult îmbunătăţite. Pot fi construite şi prin varianta de lucru a machetei grafice QBE Access.

22

Cea mai simpla subinterogare are sintaxa urmatoare:

SELECT * FROM Tabela1 WHERE Tabela1.nume_ câmp = (SELECT nume_câmp FROM Tabela2 WHERE criteriul_de_selectie); Tabela1 şi Tabela2 vor avea un câmp comun (nume_câmp) care va reprezenta de fapt câmpul de legatură ce stă la baza construirii subinterogării. Clauza SELECT din subinterogare va avea acelaşi număr de câmpuri şi de natură similară cu cele din clauza WHERE a interogării externe.

2.5 Tabele. Chei. Relaţii

Tabelele în modelul relaţional sunt folosite pentru a reprezenta entităţi. Fiecare tabel reprezintă o singură entitate. Un tabel este format din linii (înregistrări, tuple) şi coloane(atribute, câmpuri), iar modelul relaţional cere ca fiecare tuplă să fie unic identificată. Dacă se permit înregistrări duplicate într-un tabel, atunci este imposibilă adresarea unei anumite linii. Aceasta ar crea ambiguităţi şi probleme care se recomandă a fi evitate.

Unicităţii unui tabel este dată de cheia primară. Aceasta reprezintă o combinaţie de una sau mai multe coloane care identifică în mod unic fiecare rând. Deoarece datele nu pot fi accesate în funcţie de locaţia lor fizică, este nevoie de o descriere logică a lor pentru ca engine să le găsească.

Fiecare tabel poate avea o singură cheie primară, chiar dacă mai multe coloane sau combinaţii ale coloanelor conţin valori unice. Toate coloanele dintr-un tabel care conţin valori unice sunt referite sub numele de chei candidate, dintre care trebuie aleasă cheia primară.

Cheile pot fi simple sau compuse. O cheie simplă este formată dintr-un singur atribut (o singură coloană), iar o cheie compusă constă din două sau mai multe atribute. Decizia de a alege

o cheie primară aparţine administratorului bazei de date, însă nu există o regulă care să spună

care din cheile candidate e cea mai bună. Totuşi, după cum menţionează Fabian Pascal în cartea sa „SQL and Relational Basics”, decizia ar trebui să se bazeze pe următoarele principiile:

minimalitate (cheia primară să fie reprezentată de cât mai puţine coloane), stabilitate (alegerea unei chei nevolatile - neschimbătoare) şi simplitate/familiaritate (alegerea unei chei care e simplă

şi familiară pentru utilizatori).

O altă componentă importantă a bazelor de date o reprezintă relaţiile. Între două tabele este

o relaţie dacă există posibilitatea de a asocia înregistrările primului tabel cu înregistrările celui de-al doilea tabel.

23

Când se determină faptul că între două tabele există o relaţie, această relaţie este stabilită luând o copie a cheii primare din prima tabelă şi încorporând-o în structura celei de-a doua tabele, unde devine cheie străină. Aceasta, în afară de faptul că stabileşte o legătură între doua tabele, asigură şi integritatea relaţiei: înregistrările din ambele tabele vor fi întotdeauna corect relaţionate deoarece valorile cheii străine trebuie să se potrivească cu valorile cheii primare la care se referă.

Relaţiile pot fi stabilite printr-u n set d e chei p rimare şi străine, d ar şi p rintr-o a treia tabelă numită tabelă de legătură. Modul în care se stabileşte relaţia depinde de tipul relaţiei care există între tabele.

Există trei tipuri de relaţii între tabele (cunoscute şi sub numele de cardinalitate): one-to- one, one-to-many şi many-to-many.

Relaţia one-to-one dintre două tabele apare atunci când o singură înregistrare din prima tabelă este în relaţie cu o singură înregistrare din tabela a doua şi o singură înregistrare din a doua tabelă este în relaţie cu o singură înregistrare din prima tabelă.

în relaţie cu o singură înregistrare din prima tabelă. Figura 2 . Relaţia one -to-one O

Figura 2. Relaţia one-to-one

O relaţie one-to-many dintre două tabele apare atunci când o singură înregistrare din

prima tabelă poate fi în relaţie cu o mai multe înregistrări din tabela a doua, dar o singură înregistrare din a doua tabelă este în relaţie numai cu o singură înregistrare din prima tabelă.

numai cu o singură înregistrare din prima tabelă. Fogura 3 . Relaţia one -to-many O relaţie

Fogura 3. Relaţia one-to-many

O relaţie many-to-many dintre două tabele apare atunci când o singură înregistrare din

prima tabelă poate fi în relaţie cu o mai multe înregistrări din tabela a doua şi o singură înregistrare din a doua tabelă este în relaţie cu mai multe înregistrări din prima tabelă. Această

24

relaţie se stabileşte prin intermediul unei tabele de legătură, care face mai uşoară asocierea înregistrărilor dintr-o tabelă cu cele din cealaltă tabelă şi asigură faptul că nu vor exista probleme la adaugarea, stergerea sau modificarea datelor relaţionate.

nu vor exista probleme la adaugarea, stergerea sau modificarea datelor relaţionate. Figura 4 . Relaţia many

Figura 4. Relaţia many-to-many

25

CAPITOLUL III. PROIECTAREA APLICAŢIEI

3.1 Crearea tabelelor

Pentru a prezenta capitolul de aplicaţie, am realizat o bază de date, formată din tabelele

Cărţi, Cititori, Fişă, Penalizare, Sală_lectură folosind programul Ms-Access. Interogările ce

stau la baza aplicaţiei au fost realizate cu ajutorul limbajului SQL Access (Structured Query

Language).

Petru crearea tabelelor am folosit instrucţiunile SQL ce au sintaxa următoare:

1) create table CARTI ( nr_inventar smallint PRIMARY KEY , titlu

varchar(70),autor varchar(40),editura varchar(30), pret money, data_achiz

datetime , categorie varchar(30))

pret money, data_achiz datetime , categorie varchar(30)) 2) Figura 5. Tabelul „Cărţi” create table CITITORI

2)

Figura 5. Tabelul „Cărţi”

create table CITITORI (nr_leg smallint PRIMARY KEY , nume varchar(20), prenume varchar(20), cnp varchar(15), tel varchar(15))

PRIMARY KEY , nume varchar(20), prenume varchar(20), cnp varchar(15), tel varchar(15)) Figura 6. Tabelul „Cititori” 26

Figura 6. Tabelul „Cititori”

26

3)

create table FISA (nr_leg smallint PRIMARY KEY , nr_inventar smallint, data_achiz datetime, data_scadenta datetime)

smallint, data_achiz datetime, data_scadenta datetime) 4) Figura 7. Tabelul „Fişă” create table PENALIZARE (

4)

Figura 7. Tabelul „Fişă”

create table PENALIZARE ( nr_leg smallint PRIMARY KEY, nr_inventar

smallint,

suma_pen money)

pret_c money , data_scadenta datetime, durata_zile

smallint,

pret_c money , data_scadenta datetime, durata_zile smallint, 5) Figura 8. Tabelul „Penzalizare” create table

5)

Figura 8. Tabelul „Penzalizare”

create table SALA_LECTURA (nr_leg smallint PRIMARY KEY, nume_ex varchar(60), autor varchar(20), tipul_ex varchar(10) , data datetime)

nume_ex varchar(60), autor varchar(20), tipul_ex varchar(10) , data datetime) Figura 9. Tabelul „Sală_Lectură” 27

Figura 9. Tabelul „Sală_Lectură”

27

3.2

Relaţii între tabele

3.2 Relaţii între tabele Figura 10. Rela ţii între tabele 3.3 Prezentarea meniului aplicaţiei Formularul „Meniu

Figura 10. Relaţii între tabele

3.3 Prezentarea meniului aplicaţiei

Formularul „Meniu Principal” este alcătuit din patru butoane: Cititori, Cărţi, Împrumut şi Rapoarte. Pentru fiecare dintre acestea am stabilit denumirea, culoarea, grosimea, alinierea fontului, culoarea de fundal şi evenimentul care are în spate câte o macrocomandă pentru deschiderea formularului Meniu Cititori, Meniu Cărţi, Meniu Împrumut, Meniu Rapoarte şi o etichetă, în spatele căreia se regăseşte o macrocomandă ce închide baza de date.

o etichetă, în spatele căreia se regăseşte o macrocomandă ce închide baza de date. Figura 11.

Figura 11. Meniul principal

28

Meniul Principal este reprezentat astfel:

Cautare Adauga cititori Cititori Actualizeaza Cititori Vizualizare Sterge Adauga Sala de Actualizeaza lectura
Cautare
Adauga
cititori
Cititori
Actualizeaza
Cititori
Vizualizare
Sterge
Adauga
Sala de
Actualizeaza
lectura
Cautare carte
Sterge
Cautare autor
Adauga
Carti
Carti
Actualizeaza
Inventar
Sterge
Vizualizare
Meniu
Adauga
Actualizeaza
Imprumut
Sterge
Penalizari
Carti
Cititori
Sala lectura
Rapoarte
Situatie
penalizari
Calcul
penalizari
Arhiva carti

3.4 Meniul Cititori

Meniul Cititori este un formular căruia i-am ataşat un titlu „Cititori”, pe background-ul acestuia se regăseşte o imagine de tip .jpg, iar în stânga formularului se regăsesc cinci butoane (Căutare cititori, Cititori, Vizualizare, Sala de lectură), acestea accesând câte o macrocomandă.

Cititori, Vizualizare, Sala de lectură ), acestea accesând câte o macrocomandă. Figura 12. Meniul Cititori 29

Figura 12. Meniul Cititori

29

Butonul Căutare cititor acţionează asupra unei interogări de parametrizare prin intermediul unei macrocomenzi şi realizează căutarea în tabelul Cititori, în funcţie de numărul de legitimaţie, cititorul dorit.

în funcţie de numărul de legitimaţie, cititorul dorit. Figura 13. Căutare cititor după nr legitimaţie Figura

Figura 13. Căutare cititor după nr legitimaţie

dorit. Figura 13. Căutare cititor după nr legitimaţie Figura 14. Rezultatul întors în urma căutării Sintaxa

Figura 14. Rezultatul întors în urma căutării

Sintaxa interogării este următoarea:

SELECT CITITORI.nr_leg, CITITORI.nume, CITITORI.prenume, CITITORI.cnp,

CITITORI.tel

FROM CITITORI

WHERE (((CITITORI.nr_leg)=[Introduceti Nr Legitimatie]));

Butonul Cititori din cadrul meniului ne trimite către un alt formular unde putem face

modificări asupra tabelei Cititori (de adăugare, de actualizare şi de ştergere) apoi se revine la

meniul anterior prin apăsarea butonului Meniu.

şi de ştergere) apoi se revine la meniul anterior prin apăsarea butonului Meniu. Figura 15. Submeniul

Figura 15. Submeniul Cititori

30

Butonul Adaugă activează o interogare de tip append query

Butonul Adaugă activează o interogare de tip append query ce permite adăugarea de noi înregistrări în

ce permite adăugarea

de noi înregistrări în tabela Cititori. Sintaxa acestei interogări este următoarea:

INSERT INTO CITITORI

SELECT CITITORI.*

FROM CITITORI;

INSERT INTO CITITORI SELECT CITITORI.* FROM CITITORI; Figura 16. Permisiunea de a face modificări asupra tabelei

Figura 16. Permisiunea de a face modificări asupra tabelei

Figura 16. Permisiunea de a face modificări asupra tabelei Figura 17. Mesajul de confirmare a adăugării

Figura 17. Mesajul de confirmare a adăugării

tabelei Figura 17. Mesajul de confirmare a adăugării Butonul Actualizează acţionează o interogare de tip

Butonul Actualizează acţionează o interogare de tip update ce permite

actualizarea câmpurilor din cadrul tabelei Cititori. Sintaxa acestei interogări este:

UPDATE CITITORI SET CITITORI.nr_leg = [CITITORI]![nr_leg];

Aceasta funcţionează pe acelaşi princiupiu ca şi interogarea de adăugare.

Ştergerea înregistrărilor din tabela Cititori se realizeaza prin accesarea butonului şterge ce

se realizeaza prin accesarea butonului şterge ce activează o interogare de ştergere în funcţie de un

activează o interogare de ştergere în funcţie de un parametru introdus de la tastatura ce

reprezintă numărul legitimaţiei cititorului ce se doreşte a fi şters din baza de date.

31

Figura 18. Ştergere după un parametru Figura 19. Confirmarea ştergerii unei înregistrări În cadrul meniului

Figura 18. Ştergere după un parametru

Figura 18. Ştergere după un parametru Figura 19. Confirmarea ştergerii unei înregistrări În cadrul meniului regăsim

Figura 19. Confirmarea ştergerii unei înregistrări

În cadrul meniului regăsim butonul Vizualizare ce ne permite accesarea tabelului cu cititori spre vizualizarea conţinutului acestuia.

cu cititori spre vizualizarea conţinutului acestuia. Figura 20. Vizualizarea tabelului Cititori Butonul Sală de

Figura 20. Vizualizarea tabelului Cititori

Butonul Sală de lectură activează o macrocomandă ce dechide subformularul Sală de lectură unde putem face modifică asupra tabelei Sală_lectură (de adăugare, de actualizarea, de ştergere).

32

Figura 21. Meniul Sală de lectură 3.5 Meniul Cărţi Meniul Cărţi este un formular căruia

Figura 21. Meniul Sală de lectură

3.5 Meniul Cărţi

Meniul Cărţi este un formular căruia i-am ataşat un titlu „Cărţi”, pe background-ul acestuia se regăseşte o imagine de tip .jpg, iar în stânga formularului se regăsesc cinci butoane (Căutare carte, Căutare autor, Cărţi, Vizualizare), acestea accesând câte o macrocomandă.

carte, Căutare autor, Cărţi, Vizualizare ), acestea accesând câte o macrocomandă. Figura 22. Meniul Cărţi 33

Figura 22. Meniul Cărţi

33

Accesând butonul Căutare carte acesta activează o macrocomandă ce deschide o interogare de parametrizare. Căutarea se realizează în funcţie de autorul dorit introdus de la tastatură.

în funcţie de autorul dorit introdus de la tastatură. Figura23. Căutare în funcţi e de autor

Figura23. Căutare în funcţie de autor

de la tastatură. Figura23. Căutare în funcţi e de autor Figura 24. Rezultatul întors în urma

Figura 24. Rezultatul întors în urma căutării

Interogarea de căutare după autor are următoarea sintaxă:

SELECT CARTI.autor, CARTI.* FROM CARTI WHERE (((CARTI.autor)=[Autor Carte]));

CARTI.* FROM CARTI WHERE (((CARTI.autor)=[Autor Carte])); Figura 25. Căutare în tabelul Cărţi în funcţie de o

Figura 25. Căutare în tabelul Cărţi în funcţie de o carte dorită

34

Figura 26. Rezultatul întors în urma căutării Butonul Cărţi din cadrul meniului duce la deschiderea

Figura 26. Rezultatul întors în urma căutării

Butonul Cărţi din cadrul meniului duce la deschiderea unui subformular unde putem face modificări asupra cărţilor existente în baza de date (modificări ce constau în adăugare, actualizare şi ştergere).

ce constau în adăugare, actualizare şi şterge re). Figura 27. Submeniul Cărţi Adăugarea unei cărţi se

Figura 27. Submeniul Cărţi

Adăugarea unei cărţi se acţioneaza asupra butonului Adaugă, rezultatul fiind activarea unei interogări de adăugare. Codul interogării este:

INSERT INTO CARTI ( cota, titlu, autor, editura, data_achiz, categorie, pret_carte ) SELECT CARTI.cota, CARTI.titlu, CARTI.autor, CARTI.editura, CARTI.data_achiz, CARTI.categorie, CARTI.pret_carte FROM CARTI;

35

Actualizarea unui câmp sau al unui rând se realizează acţionând asupra butonului Actualizare acesta actualizând modificările realizate de către operator în tabelul Cărţi. Codul interogării este:

UPDATE CARTI SET CARTI.cota = [CARTI]![cota], CARTI.titlu = [CARTI]![titlu], CARTI.autor = [CARTI]![autor], CARTI.editura = [CARTI]![editura], CARTI.data_achiz = [CARTI]![data_achiz], CARTI.categorie = [CARTI]![categorie], CARTI.pret_carte = [CARTI]![pret_carte]; Ştergerea înregistrărilor se realizează activând butonul Ştergere acesta activând interogarea de tip ştergere sub un parametru introdus de la tastatură de către operator, a câmpurilor din tabelul Cărţi. Interogarea are sintaxa:

DELETE CARTI.*, CARTI.cota FROM CARTI WHERE (((CARTI.cota)=[Introduceti COTA])); Butonul Inventar accesează o interogare de selecţie ce are ca şi criteriu ordonarea crescătoare în funcţie de data de achiziţie a cărţilor. Codul interogării este:

SELECT CARTI.cota, CARTI.titlu, CARTI.autor, CARTI.editura, CARTI.data_achiz, CARTI.categorie, CARTI.pret_carte FROM CARTI ORDER BY CARTI.cota; Rezultatul obţinut este un raport ce prezintă ordonarea cărţilor existente în bibliotecă.

este un raport ce prezintă ordonarea cărţilor existente în bibliotecă. Figura 28. Ordonare cărţi (partea 1)

Figura 28. Ordonare cărţi (partea 1)

36

Figura 29. Ordonare cărţi (partea 2) Ultimul buton din cadrul acestui meniu permite vizualizarea întregului

Figura 29. Ordonare cărţi (partea 2)

Ultimul buton din cadrul acestui meniu permite vizualizarea întregului tabel:

cadrul acestui meniu permite vizualizarea întregului tabel: Figura 30. Vizualizare cărţi 3.6 Meniul Împrumut În

Figura 30. Vizualizare cărţi

3.6 Meniul Împrumut

În cadrul acestui meniu, operatorul poate realiza acţiuni de împrumut a cărţilor din cadrul bibliotecii acţiuni ce adaugă, actualizează sau şterg date din cadrul tabelului Fişă. Împrumutul se poate realiza pe o perioadă de 14 zile, iar depăşirea celor 14 zile duce la achitarea unei penalizări de 1% din costul de achiziţie al cărţii/cărţilor împrumutate. Adăugarea, actualizarea şi ştergerea înregistrărilor urmează aceleaşi proceduri ca şi cele ce există la meniurile anterioare.

37

În cadrul formularului se regăseşte butonul Penalizare ce activează o interogare de parametrizare în funcţie de numărul legitimaţiei al celui ce a întârziat restituirea cărţii împrumutate. Codul interogării este:

SELECT PENALIZARE.nr_leg, PENALIZARE.durata_zile, PENALIZARE.pret_carte, [PENALIZARE]![durata_zile]*([PENALIZARE]![pret_carte]/100) AS Penalizare FROM PENALIZARE WHERE (((PENALIZARE.nr_leg)=[Introduceti Nr Legitimatie]) AND

((PENALIZARE.durata_zile)>0));

3.7 Meniul Rapoarte

În cadrul acestui meniu putem afla rezultatul câtorva interogări sub forma unor rapoarte (vizualizarea înaintea printării) privind cărţile existente, o arhivă a acestora, situaţia penalizărilor şi calculul acestora, sala de lectură, cititorii existenţi, sau efectuarea unor căutări după nume autor sau titlu carte.

cititorii existenţi, sau efectuarea unor căutări după nume autor sau titlu carte. Figura 31. Meniul Rapoarte

Figura 31. Meniul Rapoarte

38

Fiecare buton al meniului acţionează asupra unei macrocomenzi, aceasta la rândul ei deschide o interogare spre vizualizare înainte de tipărire, sau un raport creat anterior. Raportul cărţi deschide un raport creat în modul raport design, ce conţine etichete şi căsuţe text ce fac legătura cu tabelul Cărţi.

şi căsuţe text ce fac legătura cu tabelul Cărţi. Figura 32. Raport creat în modul raport

Figura 32. Raport creat în modul raport design

text ce fac legătura cu tabelul Cărţi. Figura 32. Raport creat în modul raport design Figura

Figura 33. Raport Cărţi

39

Butonul cititori acţioneaza asupra unui raport creat asemănător cu cel anterior:

asupra unui raport creat asemănător cu cel anterior: Figura 34. Raport cititori Raportul Calcul penalizări

Figura 34. Raport cititori

Raportul Calcul penalizări deschide interogarea de selecţie ce calculează pentru fiecare cititor penalizarea pe care o are de plătit dacă durata_zile ce depăşesc 14 zile este „>0”. Interogarea este parametrizată şi caută cititotul după numărul legitimaţiei introdus.

şi caută cititotul după numărul legitimaţiei introdu s. Figura 35. Introducere parametru de căutare Figura 36.

Figura 35. Introducere parametru de căutare

numărul legitimaţiei introdu s. Figura 35. Introducere parametru de căutare Figura 36. Raport calcul penalizare 40

Figura 36. Raport calcul penalizare

40

Raportu Căutare autor acţionează asupra interogării parametrizate ce caută autorul dorit în baza de date şi întoarce ca rezultat într-un formular cărţile scrise de acesta.

ca rezultat într - un formular cărţile scrise de aces ta. Figura 37. Căutare autor Figura

Figura 37. Căutare autor

cărţile scrise de aces ta. Figura 37. Căutare autor Figura 38. Raport Căutare autor Raport Sumă
cărţile scrise de aces ta. Figura 37. Căutare autor Figura 38. Raport Căutare autor Raport Sumă

Figura 38. Raport Căutare autor

Raport Sumă totală cărţi acţionează asupra interogării totalizatoare după funcţia SUM şi returnează ca raport suma totală a cărţilor existente în baza de date. Sintaxa ecestei interogări este:

SELECT Sum(CARTI.pret_carte) AS SumOfpret_carte FROM CARTI;

este: SELECT Sum(CARTI.pret_carte) AS SumOfpret_carte FROM CARTI; Figura 39. Interogare totalizatoare în modul vizual 41

Figura 39. Interogare totalizatoare în modul vizual

41

Raportul pe care în întoarce interogarea totalizatoare a sumei tuturor cărţilor este:

care în întoarce interogarea totalizatoare a sumei tuturor cărţilor este: Figura 40. Raport Sumă tatală cărţi

Figura 40. Raport Sumă tatală cărţi

42

CONCLUZII

Chiar şi într-o instituţie public este necesară efectuarea unei evidenţe, o evidenţă a cărţilor şi fişelor cititorilor, iar pentru a uşura activitatea de creare şi gestionare a evidenţei, se poate utiliza Microsoft Acceess. Cu ajutorul Access-ului am putut crea tabele, interogări, formulare, rapoarte, atât în modul visual cât şi uilizând limbajul SQL. Access presupune o bază de date cu un ansamblu de date organizate în una sau mai multe tabele cu relaţii între ele. Astfel am realizat proiectul meu „Aplicaţie privind evidenţa unei biblioteci”. Proiectul meu cuprinde:

1. Creare tabelelor Cărţi, Cititori, Fişă, Penalizare, Sală Lectură cu toate înregistrarile de

bază.

2. Interogările făcute pe baza tabelelor, cu ajutorul limbajului SQL.

3. Formularele ce ajută la vizualizarea înregistrărilor din tabele.

4. Rapoartele ce întorc câteva rezultate al interogărilor privind căutarea autorilor, căutarea

cărţilor, calculul penalizărilor sau totalizarea preţurilor cărţilor. Într-o bază de date regăsim informaţiile despre obiectele cu care se lucrează într-o entitate şi relaţiile dintre acestea ce ajută la uşurarea activităţii. Aplicaţiile bazate pe baze de date permit accesul mai multor utilizatori în acelaşi timp, însă cu permisiuni diferite. Bazele de date oferă utilizatorilor o serie de avantaje, cum ar fi:

reducerea redundanţei datelor prin proiectarea unitară a bazei şi evitarea suprapunerii unor

informaţii;

păstrarea consistenţei datelor prin propagarea actualizărilor dintr-un fişier la nivelul întregii baze de date;

partajarea datelor între utilizatorii aceleiaşi aplicaţii, dar şi între aplicaţii diferite;

securitatea datelor prin verificarea accesului utilizatorilor pe bază de parolă şi prin autorizarea operaţiilor de întreţinere de către administratorul bazei de date.

43

BIBLIOGRAFIE

1. Alison Balter, “Invata singur MS Office ACCESS 2003 in 24 de ore”, Editura Niculescu,

2006

2. Dulu, Ana, „Baze de date Access - ECDL Avansat”, editura Adreco Educational, 2006

3. Fotache, Marin, „SQL. Dialecte DB2, Oracle, PostgreSQL si SQL Server”, editura Polirom, 2009

4. Henderson, K. "Proceduri stocate în SQL Server. XML, HTML", Teora 2003 (traducere Ion Bldea şi Eugen Sipoş, după ediţia din 2002)

5. Ipate, F.E., “ Dezvoltarea aplicaţiilor de baze de date în Oracle 8 şi Forms 6 “, Editura BIC ALL, 2000

6. Jennings, R., “Totul despre Access 2000“, Editura Teora, 2002

7. Lungu, Ion, „Baze de date relationale - Utilizarea limbajului SQL*PLUS”, editura ALL,

2000

8. Năstase, P., Mihai, F., Baze de date - Access 2000“, Editura Teora, 2001

9. Oppel, Andy, „SQL fara mistere - ghid pentru autodidacţi”, editura Rosetti Educational,

2006

10. Patriciu, V., “Criptografia şi securitatea reţelelor de calculatoare “, Editura Tehnică,

1994

11. Popa, Gh., Berbec, F., Ivancenco, V., Şova, A., Şova, A.M. D., Baze de date Access”, Editura Cison, Bucureşti, 2003.

12. Roşca, I.Gh.,Bucur, C.M., Timofte-Stanciu, C. Paiu, O., Vişan, M., Comerţul electronic:

concepte, tehnologii şi aplicaţii, Editura Economică, 2004

13. Rusu, L, „Managementul sistemelor informatice, Presa Universitara Clujeana, Cluj- Napoca, 2001

14. Teodorescu, A., „Lecţii de Access (ediţie actualizată)”, editura Albastră

15. Velicanu, M., Lungu, I., Muntean, M., Ionescu, S., „Sisteme de baze de date”, Editura Petrion, Bucureşti, 2003

44