Documente Academic
Documente Profesional
Documente Cultură
Competenţe dobândite:
93
Baze de date relaţionale
nume relatie
atribut
Obiecte-inventar
schema
relatiei
Cod-Furnizor Cod-ob-inv Den-ob-inv. UM PU Cantitate
O relaţie corespunde unei restricţii semantice din universul real modelat deoarece
fiecare obiect din acest univers trebuie să fie identificat într-o manieră unică şi diferenţiat în
raport cu alte obiecte. Deci, relaţia reprezintă un subansamblu al produsului cartezian al unei
liste de domenii.
Atributul reprezintă numele dat unui domeniu dintr-o relaţie şi determină ansamblul
de valori pe care acesta îl poate lua. Noţiunea de atribut nu trebuie confundată cu cea de
domeniu. Într-o relaţie numele unui atribut este unic. Orice atribut al unei tabele oarecare
trebuie să fie atomic, adică să nu mai poată fi descompus în alt atribut. Atributele situate în
relaţii diferite pot avea acelaşi nume, dacă implicit sunt definite pe acelaşi domeniu semantic.
Tuplul sau n-uplu reprezintă un rând sau o linie distinctă de valori din cadrul unui
tabel rezultând că o relaţie este un ansamblu de tupluri care poate fi definită: extensiv (prin
indicarea listei tuturor tuplurilor ce o compun) şi intensiv (prin indicarea predicatului de
apartenenţă a unui tuplu la relaţia respectivă). Deci relaţia este un ansamblu de m-tupluri:
R={t1,t2,.....t k......t m} unde t k=(dk1,dk2,...d ki...dkn) , iar d k1 este o valoare în domeniul
D1...Dn.
n - este ordinul relaţiei(numărul valorilor dintr-un tuplu)
94
Instrumente software pentru Administraţia Publică
diferite se face prin intermediul unor atribute sau combinaţii de atribute numite chei externe
(străine).
O cheie primară, în orice moment, posedă următoarele proprietăţi:
este unică – identifică un singur tuplu într-o relaţie;
are o compoziţie minimală – fiecare atribut al cheii nu poate fi eliminat fără
distrugerea unicităţilor relaţiei;
valorile atributelor din cheia primară sunt specificate deci non-nule.
Schema relaţiei se constituie din numele relaţiei urmat de lista atributelor şi,
eventual, de definirea domeniului lor [Moréjon 1992, p. 34], fiind posibile mai multe
reprezentări. Schema este cunoscută sub numele de intensia relaţiei. Ea este expresia
proprietăţilor comune şi invariante ale tuplurilor care compun relaţia. Spre deosebire de
intensie, extensia unei relaţii reprezintă ansamblul tuplurilor care compun la un moment dat
relaţia şi este variabilă în timp.
Conceptul de relaţie permite reprezentarea unei entităţi din universul modelat şi o
legătură semantică inter-entitate. Într-o entitate, fiecărei legături semantice îi corespunde o
relaţie. În teoria sistemelor, adăugarea unui nou tuplu determină modificarea fizică a relaţiei,
în timp ce din punct de vedere semantic, aceasta rămâne neschimbată. Pentru definirea, fără
ambiguităţi semantice, a unei relaţii nu este suficientă noţiunea de domeniu.
95
Baze de date relaţionale
străină. Relaţia SITSC poate fi numită şi referenţiată sau desemnată, în timp ce relaţiile
STUDENT şi EXAMEN pot fi numite referenţiale sau desemnante.
ST U D E N T N R . M AT R IC O L NU M E STUD ENT D AT A N A S T S E C T IE
S I T. SC N R . M AT R IC O L CO D EXAM EN D AT A E X N O TA
EXAMEN C O D EX A M EN D IS C I P L IN A
96
Instrumente software pentru Administraţia Publică
Reuniunea este operaţia între două relaţii R1 şi R2 având aceeaşi schemă (sunt
unicompatibile). Rezultatul va fi relaţia R3 care conţine ansamblul tuplurilor constituit prin
reuniunea tuplurilor din relaţiile R1 şi R2, eliminând duplicatele.
Matematic reuniunea se poate prezenta astfel:R3 = R1R2 sau R3 = APPEND(R1,
R2) sau R3 = OR(R1, R2) sau R3 = UNION(R1, R2).
Diferenţa este operaţia între două relaţii R1 şi R2 unicompatibilie (care au aceeaşi
schemă) obţinându-se relaţia R3 cu aceeaşi schemă dar având în conţinut un ansamblu de
realizări constituit din tuplurile relaţiei R1 care diferă de cele existente în relaţia R2.
Matematic diferenţa se poate prezenta astfel: R3 = R1 – R2 sau R3 = DIFF(R1, R2)
sau R3 = REMOVE(R1, R2) sau R3 = MINUS(R1, R2).
Intersecţia reprezintă operaţia între două relaţii R1 şi R2 care au aceeaşi schemă,
rezultatul fiind o relaţie R3 cu schemă identică şi care conţine tuplurile comune relaţiilor R1
şi R2.
Matematic intersecţia pot fi exprimată astfel: R3 = R1 R2 sau R3 = INTER(R1,
R2) sau R3 = AND(R1, R2). Pornind de la relaţiile de bază intersecţia poate fi exprimată şi
sub formele:
R3 = R1 – (R1-R2) sau R3 = R2 – (R2-R1)
Produsul cartezian este operaţia între două relaţii R1 şi R2 ce are ca rezultat o relaţie
R3 a cărei schemă se obţine prin juxtapunerea schemelor relaţiilor R1 şi R2. Relaţia R3
cuprinde toate combinaţiile n-uplurilor din relaţiile R1 şi R2. Relaţiile R1 şi R2 au scheme
diferite (fiind încălcat principiul unicompatibilităţii).
Matematic produsul cartezian poate fi exprimată astfel: R3 = R1 X R2; sau R3 =
PROD(R1, R2); sau R3 = PRODUCT (R1, R2); sau R3 = TIMES(R1, R2).
Proiecţia (decupajul vertical) reprezintă o operaţie pe o singură relaţie R1 şi are ca
rezultat o relaţie R2 redusă la atributele menţionate explicit în operanzi. N-uplurile din relaţia
R2 sunt unice. Prin proiecţie se trece la o relaţie de grad inferior relaţiei R1.
Matematic pentru proiecţie sunt folosite notaţiile: R2 = Atribut1, Atribut2, …,
(R1) sau R2 = PROJECT(R1, Atribut1, Atribut2, …) sau R2 = R1(Atribut1, Atribut2, …)
Selecţia (restricţia) este operaţia pe o relaţie R1 care produce o nouă relaţie R2, cu
aceeaşi structură şi în care tuplurile verifică o condiţie exprimată explicit. Prin selecţie se
elimină liniile care nu satisfac condiţia impusă. Cardinalitatea relaţiei R2 va fi mai mică sau
cel mult egală decât cardinalitatea relaţiei R1. Matematic selecţia se poate scrie astfel: R2 =
Condition(R1) sau R2 = R1(Condition) sau R2 = SELECT(R1, Condition) şi R2 =
RESTRICT(R1, Condition).
Joncţiunea (Join sau Teta-joncţiune) reprezintă o operaţie între două relaţii R1 şi R2
care are ca rezultat o relaţie R3 cu o schemă obţinută prin concatenarea schemelor primelor
două. Conţinutul relaţiei îl reprezintă ansamblul n-uplurilor obţinute prin concatenarea
97
Baze de date relaţionale
tuplurilor din R1 şi R2 care verifică o condiţie stabilită între atributele celor două relaţii. Sub
formă matematică joncţiunea poate fi prezentată astfel: R3 = R1 |><|R2 (Condition) sau R3 =
JOIN(R1, R2, Condition).
Joncţiunea poate fi obţinută şi prin combinaţia dintre produsul cartezian urmat de
selecţie.
R3 = SELECT(PROD(R1, R2), Condiţie)
Dacă operatorul folosit la joncţiune este „=” se obţine aşa numita echijoncţiune.
2
Evolu¡iasistemului Proiectarea
(domeniului) economic structurii BD 4
Sistemul (domeniul) Exploatarea
economic pentru care BD
esterealizatåBD Structura BD
(schema
conceptualå,
3 externå¿i
¥ncårcarea internå)
4 datelor în BD Descrierea
¥ntre¡inere datelor
BD
Colec¡ii dedate
98
Instrumente software pentru Administraţia Publică
99
Baze de date relaţionale
Dependenţa funcţională este elementară (totală) Data1 Data2 dacă nu există nici o
Data3 ca subansamblu al lui Data1 care să verifice dependenţa funcţională Data3 Data2.
În caz contrar avem o dependenţă parţială. Ea poate apare numai în cazul dependenţelor
funcţionale cu sursă compusă (o parte a sursei-un element din cheie - poate identifica fără
ambiguităţi destinaţia).
O dependenţă funcţională Data1 Data2 este directă dacă nu există o Data3 care
angajează o dependenţă tranzitivă Data1 Data3 Data2 (Data3 este un element din
destinaţie care poate identifica un alt element din destinaţie).
100
Instrumente software pentru Administraţia Publică
1FN
2FN DF
3FN
BCNF
4FN DMV
5FN DJ
3. Intr-o relatie:
a) [ ] pot exista mai multe combinatii de atribute ce confera unicitatea fiecarui tuplu
b) [ ] schema este denumita extensie
c) [ ] trebuie sa existe o cheie primara
d) [ ] schema relatiei este alcatuita din mai multe domenii
101
Baze de date relaţionale
Bibliografie selectivă
1. [Codd 1970] Codd, E., F., A relational model of the data for large shared data bancks, Commun,
ACM13,6 (June 1970)
2. [Date 1981] Date, C., J., Referencial integrity, 7th International on VLDB, Cannes, September,
1981
3. [Davidescu 2004] Davidescu, N., D., Sisteme informatice financiar-bancare, Editura All,
Bucureşti, 2004
4. [Lungu 1995] Lungu, I., ş. a., Baze de date – Organizare, proiectare şi implementare, Ed. All,
Bucureşti, 1995
5. [Moréjon 1992] Moréjon, José, Principes et conception d’une base de données relationnelle, Les
Editions d’Organisation, Paris, 1992
102
Unitatea de studiu 5
Competenţe dobândite:
Microsoft Access 2007 face parte din pachetul Microsoft Office. Versiunea iniţială
1.0, a fost lansată în 1992, şi a suportat o serie de îmbunătăţiri, Access 2007 fiind versiunea
care a schimbat radical interfaţa produsului.
Principalele caracteristici ale programului ACCESS sunt următoarele:
este un SGBD relaţional şi lucrează sub SO Windows;
este conceput pentru uz personal sau pentru mici activităţi;
dispune de o interfaţă atractivă şi uşor de utilizat;
este deschis comunicării cu alte SGBD-uri (FoxPro, Paradox);
permite realizarea unor aplicaţii complexe prin utilizarea limbajului VisualBasic;
este compatibil cu tehnologia ActiveX care permite realizarea aplicaţiilor client /server;
permite utilizarea de adrese şi legături Internet inclusiv accesul la baze de date din reţeaua
Internet, fiind totodată un instrument util pentru publicarea informaţiilor în pagini Web;
conţine instrumente wizard care permit utilizatorului crearea facilă a unor obiecte (peste 20
de tipuri comune de aplicaţii);
permite comunicarea şi utilizarea bazelor de date din SQL Server(un alt produs Microsoft
care gestionează baze de date), în cadrul unei reţele de calculatoare;
este autodocumentat prin help.
Facilităţi Access 2007:
interfaţă grafică îmbunătăţită,
plus de productivitate,
aplicaţii şablon,
punct de plecate pentru alte aplicaţii,
posibiliăţi noi de sortare şi filtrare,
support pentru alegerea datelor calendaristice,
posibilitatea de a adăuga mai uşor noi obicete în cadrul bd prin intermediul meniului create,
crearea rapidă a tabelelor în modul de vizualizare datasheet,
adăugarea unui nou tip de date – attachment (ce stochează fotografii, grafice Obiectele unei
aplicaţii Access 2007. În SGBD-ul Access baza de date este definită ca o colecţie de obiecte:
tabele (table), formulare (form), rapoarte (report), cereri de interogare (query).
Tabele (table) care organizează şi stochează datele propriu-zise,
Cereri (query) generate prin comenzi de interogare SQL,
Formuri (form) pentru introducerea, prezentarea şi modificarea datelor,
104
Instrumente software pentru Administraţia Publică
Rapoarte (report) afişează date din una sau mai multe tabele în forma dorită de utilizator,
eventual grupate pe mai multe niveluri.
Notă! Paginile Web de acces la date, lansate în access 2003 pentru transferul
aplicaţiilor pe Internet au dispărut în Access 2007, odată cu implementarea
mecanismului de export al datelor direct în format html.
Instrumente Wizard
Microsoft Access dispune de două categorii de instrumente de tip wizard:
orientate obiect care facilitează crearea de obiecte prin parcurgerea unor etape de
dialog între utilizator şi sistem pe baza căruia se dă forma obiectului (rapoarte,
formulare etc.);
generale când rezolvarea unor probleme se poate face automat prin utilizarea unor
şabloane (Contact Management etc.).
Deschiderea unei sesiuni de lucru Excel se poate realiza în mai multe moduri:
- butonul Start (figura 5.1), selectând din meniul All Programs opţiunea Microsoft
Office Access 2007,
- meniul rapid, selectând comanda New şi apoi opţiunea Microsoft Office Access
2007;
- shortcut-ul de pe Desktop (figura 5.1), accesând pictograma de pe desktop, dacă a
fost creată o scurtătură Access.
Lansarea SGBD-ului Access se face în mod asemănător oricărui instrument Microsoft
Office: START →All Programs → Microsoft Office → Microsoft Office Access 2007.
Pentru a crea o bază de date, Access oferă mai multe modalităţi (figura 5.2):
ca o aplicaţie complet nouă (cea mai utilizată metodă);
105
Sisteme de gestiune a bazelor de date - Acces
Figura 5.2 Fereastra Microsoft Access pentru crearea unei noi baze de date
Spre deosebire de vechile versiuni, în Access 2007 meniurile apar abia după ce este
deschisă o bază de date, sau după ce se precizează numele unei noi baze de date şi destinaţia
în care aceasta se va salva.
Configurarea sesiunii de lucru în Access.
Ca şi alte produse software, Access permite stabilirea unor parametri de lucru pentru
sesiunea curentă şi, eventual, a sesiunilor viitoare. În acest scop, se activează din butonul
Office Button, butonul Access Options. Fereastra acestei comenzi este structurată pe
numeroase opţiuni: Popular, Current Database, Datasheet etc. În contextul care ne interesează
vizăm opţiunea Popular, care, printre altele, permite stabilirea unui director implicit în care să
fie salvate fişierele. Pentru exemplificare, din raţiuni lesne de înţeles, în zona Default
database folder:, s-a declarat ca director curent D:\2010-2011\ISAP_ID (figura 5.3).
106
Instrumente software pentru Administraţia Publică
Aşa cum s-a precizat în capitolul 4 o bază de date înseamnă cel puţin două tabele
(relaţii) între care există legături.
Pentru exemplificare va fi creată o bază de date cu informaţii privind cărţile şi cititorii
unei biblioteci, care conţine tabelele: Carti, Cititori şi Imprumuturi.
Când se creează o BD nouă se parcurg următorii paşi:
din fereastra Getting Started with Microsoft Office Access, zona New Blank
Database, se selectează Blank Database (figura 5.2);
se indică locaţia în care se va salva (în cazul nostru locaţia va fi folderul implicit,
declarat anterior) şi numele atribuit bazei de date (Biblioteca). Implicit, sistemul atribuie un
nume de tipul Database1, Database2 etc. şi extensia .accdb (figura 5.4);
107
Sisteme de gestiune a bazelor de date - Acces
Figura 5.5 Fereastra meniului Datasheet de creare a obiectelor bazei de date Biblioteca
Deschiderea unui baze de date se realizează în acelaşi mod ca deschiderea
oricărui fişier: meniul FILE → comanda Open şi apoi se localizează fişierul care va avea
extensia .accdb.
108
Instrumente software pentru Administraţia Publică
109
Sisteme de gestiune a bazelor de date - Acces
Size)
Auto Completat în mod automat (folosit pentru generarea unei chei
Number unice pentru înregistrări)
Currency Format fix cu 4 zecimale (folosit pt. eliminarea erorilor de
rotunjire)
Logice Yes/No Câmp logic folosit pentru a stoca valorile yes sau no
Calendaristice Date/Time Format fix, are subtipuri ,selecţie din proprietăţi (Data/Time
Format)
Obiecte OLE object Include elemente grafice ce pot fi create cu OLE server
Hiperlegături Hiperlink Informaţie folosită ca adresă a unei pagini Web
Informaţii Lookup Creează câmpuri ce permit alegerea de valori din cadrul altor
legate Wizard tabele sau dintr-o listă de valori
-Numărul de zecimale - Decimal Place se poate încadra între 0 şi15 sau Auto când sunt
determinate automat.
-Formatul de introducere - Input Mask conduce la fixarea unui anumit format de introducere
pentru toate datele incluse în câmp (numere de telefon, date calendaristice).
-Eticheta - Caption permite specificarea unui nume care poate fi utilizat în formule sau
pentru afişare.
110
Instrumente software pentru Administraţia Publică
-Valoare iniţială – Default Value permite la introducerea de date, umplerea automată a unui
câmp cu valoarea specificată.
-Regula de validare – Validation Rule introduce o informaţie (expresie, funcţie, constantă
etc.) care permite validarea exactităţii datelor introduse.
-Textul de validare – Validation Text reprezintă mesajul care va apare în cazul când valoarea
introdusă nu respectă regula de validare.
-Cerut (necesar) – Required stabileşte prin opţiunile Yes /No obligativitatea încărcării sau nu
cu date a unui câmp (valoarea implicită este No).
-Indexat – Indexed precizează indecşii care admit valori duplicate (duplicates OK) sau valori
unice (No duplicates). Ştergerea unui index se realizează selectând No.
În tabelul 5.2 sunt prezentate proprietăţile minimale ale atributelor tabelelor
componente ale bazei de date Biblioteca, alcătuită din trei tabele Carti, Cititori şi
Imprumuturi.
Tabelul 5.2 Proprietăţile minimale ale atributelor din tabelele bazei de date Biblioteca.
Carti
Nume câmp Tip câmp Caracteristici Observaţii
Cota Text 10 Cheie primara
Autor Text 50
Titlu Text 50
An_aparitie Number Long integer
Editura Text 50
Numar_ex Number Long integer
Pret_unitar Number Long integer
Cititori
Nume câmp Tip câmp Caracteristici Observaţii
Nr_permis Number Long Integer Cheie primara
Nume_prenume Text 35
CNP Text 50 Cheie alternativa
Adresa Text 50
Localitate Text 30
Ocupatie Text 25
Imprumuturi
Nume câmp Tip câmp Caracteristici Observaţii
Cota Text 10 Cheie primara
Nr_permis Number Long Integer Cheie primara
Data_imprumut Date/Time Short Date
Data_rest Date/Time Short Date
111
Sisteme de gestiune a bazelor de date - Acces
112
Instrumente software pentru Administraţia Publică
113
Sisteme de gestiune a bazelor de date - Acces
Access deschide fereastra Edit Relationship (figura 5.13) în care trebuie activată
proprietatea Enforce Referenţial Integrity (forţează integritate referenţială). Între tabelele
114
Instrumente software pentru Administraţia Publică
Carti şi Imprumuturi se stabileşte o relaţie una la mai multe (One-To-Many). Câmpul Cota,
cheie primară în tabela Carti, se va lega cu acelaşi câmp din tabela Imprumuturi. Relaţia este
de tip una la mai multe deoarece pot fi mai mulţi cititori care să împrumute aceeaşi carte.
Access restricţionează adăugarea, modificarea şi /sau ştergerea în tabela părinte şi
copil astfel:
nu se permite modificarea valorii cheii primare din tabela părinte dacă există
în tabela copil măcar o înregistrare cu care este în legătură;
nu poate fi introdusă nici o valoare a unei chei străine dacă respectiva valoare
nu există deja ca şi cheie primară în tabela părinte.
Dacă se alege opţiunea Cascade Update Related Fields, orice modificare a unei chei
primare în tabela părinte va atrage modificarea în cascadă a tuturor cheilor străine în
înregistrările copil, iar bifând opţiunea Cascade Delete Related Records la ştergerea unei
înregistrări din tabela părinte se vor elimina automat toate înregistrările copil.
În figura 5.14 sunt afişate legăturile permanente dintre tabelele bazei de date
Biblioteca.
115
Sisteme de gestiune a bazelor de date - Acces
116
Instrumente software pentru Administraţia Publică
117
Sisteme de gestiune a bazelor de date - Acces
Pentru exemplificare se va obţine lista cărţilor apărute între anii 2000 şi 2003. Fiind
un câmp de tip numeric se alege opţiunea Between şi se construieşte condiţia în fereastra
Between Numbers (figura 5.20). Rezultatul este în figura 5.21.
Figura 5.20 Stabilirea condiţiei de filtrare (Anul apariţiei între 2000 şi 2003)
118
Instrumente software pentru Administraţia Publică
119
Sisteme de gestiune a bazelor de date - Acces
120
Instrumente software pentru Administraţia Publică
Figura 5.28.Ultima fereastră Form Wizard Figura 5.29 Fereastra formular pentru tabela
Carti
121
Sisteme de gestiune a bazelor de date - Acces
122
Instrumente software pentru Administraţia Publică
Figura 5.32 Fereastra (1) Simple Query Wizard Figura 5.33 Fereastra (2) Simple Query Wizard
din fereastra Simple Query Wizard în lista Tables /Queries se stabileşte tabela
pentru care se realizează filtrarea, iar din zona Available Fields sunt selectate şi mutate în
zona Selected Fields câmpurile care vor apărea în filtru (figura 5.33). Acţionarea butonului
Next are ca efect o nouă fereastră Simple Query Wizard; în această fereastră se păstrează
formatul de afişare detaliat sau se optează pentru o afişare în sumar a rezultatului.
Dacă se optează pentru Summary se deschide fereastra Summary Options, în care pot
fi aplicate operaţii statistice asupra câmpurilor numerice (figura 3.34).
123
Sisteme de gestiune a bazelor de date - Acces
124
Instrumente software pentru Administraţia Publică
Rezultatul unui astfel de filtru în care s-au folosit trei tabele Carti, Cititori şi
Imprumuturi este prezentat în figura 5.37. Au fost preluate câmpurile Nume_prenume şi
Ocupatie din tabela Cititori, Autor şi Titlu din tabela Carti Data_imprumut din tabela
Imprumuturi.
Pentru a crea o cerere de interogare folosind modul Design view se parcurg paşii:
- din meniul Create, secţiunea Other se selectează butonul Design view ;
- în fereastra Query (structurată în două zone) este deschisă fereastra Show Table
care conţine lista tabelelor bazei de date Biblioteca (figura 5.38);
125
Sisteme de gestiune a bazelor de date - Acces
- din fereastra Show Table se selectează prin dublu clic tabela /tabelele care vor
participa la interogare şi care vor apare în zona de sus a ferestrei Query;
- în zona de jos, numită grilă de proiectare (design grid) se va construi cererea din
punct de vedere structural şi funcţional;
- câmpurile din structura unei cereri pot fi preluate din tabele sau pot fi calculate;
- printr-o cerere de interogare câmpurile pot fi ordonate crescător sau descrescător
după unul sau mai multe criterii prin caseta Sort (Ascending /Descending) din
grilă. Dacă se specifică mai multe câmpuri de ordonare operaţiunea se execută
începând cu primul câmp din stânga;
- dacă se doreşte introducerea unor criterii de selecţie acestea vor fi plasate în grila
de interogare în caseta Criteria. Principalele criterii sunt introduse prin:
utilizarea operatorilor de comparaţii: <,>,<=,>=,<>,= ;
apartenenţa la un interval: BETWEEN valoare-inferioară AND valoare-
superioară ;
apartenenţa la o dată indicată printr-o mască (şablon): LIKE „mască”; în mască
pot să apară carterele: „*” folosit pentru oricâte caractere şi caracterul ”?” care
înlocuieşte un singur caracter;
apartenenţa la o listă de valori: IN(valoare1, valoare2,..valoaren);
utilizarea operatorilor de negaţie: NOT valoare;
selectarea înregistrărilor care conţin sau nu valori: NOT NULL, IS NOT NULL
sau NULL, IS NULL;
selecţia după o dată relativă la data curentă: DATE().
126
Instrumente software pentru Administraţia Publică
Pentru exemplificarea realizării unei interogări s-a folosit baza de date Biblioteca cu
tabelele Carti, Cititori, Imprumuturi obţinându-se lista cititorilor care au restituit cărţile în
intervalul 10-03-2009 şi 30-06-2009 (figura 5.39).
127
Sisteme de gestiune a bazelor de date - Acces
Vizualizarea datelor dintr-o bază de date se poate realiza prin intermediul foilor de
date, a formularelor şi a situaţiilor finale, numite generic rapoarte. Sursa rapoartelor o
constituie tabelele sau interogările.
Crearea rapoartelor în Access permite gruparea datelor şi prezentarea acestora într-un
anumit format şi o anumită structură, în funcţie de cerinţele utilizatorului pentru a-i servi la
informare sau pentru fundamentarea deciziilor. În rapoarte se pot obţine totaluri şi subtotaluri
(după anumite criterii), se pot include subformulare grafice şi obiecte de tip OLE.
Un raport este structurat în: antet şi subsol de raport (Report Header, Report Footer),
antet şi subsol de pagină (Page Header, Page Footer ), secţiunea Detail care cuprinde datele
pentru fiecare înregistrare precum şi antet şi subsol de grup. Controalele care apar în corpul
raportului pot fi: independente, dependente (preluate din tabele /interogări) şi calculate.
Crearea rapoartelor se poate realiza folosind opţiunile din secţiunea Report a meniului
Create (figura 5.42).
Pentru tabela curentă se poate obţine un raport rapid folosind opţiunea Report. În
figura 5.43 este obţinut un raport rapid pentru tabela Carti.
128
Instrumente software pentru Administraţia Publică
129
Sisteme de gestiune a bazelor de date - Acces
Fereastra Report Wizard asociată celei de a treia etape (figura 5.46) permite sortarea
datelor din raport, după cel mult patru câmpuri. A fost aleasă sortarea descrescătoare, după
câmpul Pret_unitar.
Următoarea fereastră permite selectarea opţiunilor de aranjare pentru raport (figura
5.47).
Figura 5.46 Fereastra Report Wizard Figura 5.47 Fereastra Report Wizard
(3-sortare/opţiuni de calcul predefinite) (4-opţiuni de aranjare a datelor)
Figura 5.48. Fereastra Report Wizard Figura 5.49 Fereastra Report Wizard
(5-selectarea stilului) (6-precizarea numelui şi a modului de afişare)
130
Instrumente software pentru Administraţia Publică
Într-un raport pot fi folosite date din mai multe tabele. În astfel de situaţii este de
preferat ca în prealabil să se realizeze o interogare şi pe baza ei să se obţină raportul cu
grupările şi sortările dorite.
131
Sisteme de gestiune a bazelor de date - Acces
132
Unitatea de studiu 6
Competenţe dobândite:
134
Instrumente software pentru Administraţia Publică
135
Limbajul de interogare SQL
136
Instrumente software pentru Administraţia Publică
137
Limbajul de interogare SQL
Operatorul LIKE se poate aplica datelor de tip şir de caractere, comparând un câmp
text cu un literal (constantă de tip text). Literalul se defineşte ca o mască în care se pot folosi
caracterele speciale % şi _. Semnul “%” determină înlocuirea unui şir de caractere de
lungime variabilă, în timp ce semnul “_” înlocuieşte (substituie) un singur caracter. Aceste
două caractere pot fi utilizate şi împreună.
Operatorul IN permite ca şi operatorul BETWEEN simplificarea condiţiei de căutare.
El testează dacă valoarea unui atribut specificat în lista de atribute din clauza WHERE se
potriveşte uneia din valorile listei specificate în predicatul IN.
Operatorul IS NULL oferă facilităţi de selectare a tuplurilor ale căror valori ale
atributelor au valoarea NULL. Facem precizarea că o valoare nulă este o valoare nedefinită şi
nu se poate confunda cu valoarea zero (pentru câmpurile numerice) sau cu valoarea “spaţiu”
(pentru câmpurile de tip şir de caractere).
O frază SELECT, pentru o interogare din mai multe tabele, trebuie să precizeze şi
legătura /legăturile dintre tabele. Aceste legături se precizează fie în clauza FROM prin
operatorul INNER JOIN, fie în clauza WHERE prin operatorul ON. Legătura permanentă este
reprezentată de egalitatea, la nivel de tuplu /înregistrare, dintre valoarea cheii primare din
tabela părinte şi valorile cheii străine din tabela /tabelele copil.
Folosind baza de date Biblioteca exemplificăm în continuare facilităţile de interogare
oferite de SQL Access.
Figura 6.5 Opţiunea SQL View din meniul Design Figura 6.6 Opţiunea SQL View din
meniul rapid
138
Instrumente software pentru Administraţia Publică
Fraza SELECT pentru această interogare este în figura 6.7, iar rezultatul interogării în
figura 6.8.
a.2. Care sunt cărţile care au apărut la editura Polirom, după anul 2003?
b.2
SELECT Autor,Titlu,An_aparitie,Editura
FROM Carti
WHERE An_aparitie>=2003) AND Carti.Editura="Polirom";
139
Limbajul de interogare SQL
c.2
b.3
SELECT Nume_prenume, Adresa, Localitate, Ocupatie
FROM Cititori
WHERE Cititori.Localitate="Iasi" AND Cititori.Ocupatie="Student";
c.3
b.4
SELECT cota, Autor, Titlu, An_aparitie, Editura, Numar_ex, Pret_unitar,
[Numar_ex]*[Pret_unitar] AS Valoare
FROM Carti;
c.4
140
Instrumente software pentru Administraţia Publică
a.5. Să se obţină lista elevilor care au împrumutat cărţi (Nume, Localitate, Autor, Titlu,
Data împrumutului şi Data restituirii).
b.5
SELECT Cititori.Nume_prenume, Cititori.Localitate, Cititori.Ocupatie,
Carti.Autor, Carti.Titlu, Imprumuturi.Data_imprumut, Imprumuturi.Data_rest
FROM Cititori INNER JOIN (Carti INNER JOIN Imprumuturi ON Carti.cota
= Imprumuturi.Cota) ON Cititori.Nr_permis = Imprumuturi.Nr_permis
WHERE Cititori.Ocupatie="Elev";
c.5
b.6
SELECT Cititori.Nr_permis, Cititori.Nume_prenume, Count(Carti.Autor) AS
Nr_carti_imprumutate
FROM Cititori INNER JOIN (Carti INNER JOIN Imprumuturi ON Carti.cota
= Imprumuturi.Cota) ON Cititori.Nr_permis = Imprumuturi.Nr_permis
GROUP BY Cititori.Nr_permis, Cititori.Nume_prenume;
141
Limbajul de interogare SQL
c.6
a.7. Să se afişeze lista cititorilor care au împrumutat cărţi în luna martie 2009.
b.7
Pentru această interogare se foloseşte funcţia Month() care extrage, dintr-o dată
calendaristică, luna specificată prin numărul acesteia (1 pentru ianuarie, 2 pentru
februarie etc.).
SELECT Cititori.Nume_prenume, Cititori.Nr_permis, Carti.Autor,
Carti.Titlu, Imprumuturi.Data_imprumut
FROM Cititori INNER JOIN (Carti INNER JOIN Imprumuturi ON
Carti.cota = Imprumuturi.Cota) ON Cititori.Nr_permis =
Imprumuturi.Nr_permis
WHERE Month([data_imprumut])=3;
c7
a.8. Să se afişeze lista cititorilor care au avut de restituit cărţi între 18 şi 30 martie
2009.
142
Instrumente software pentru Administraţia Publică
b.8
SELECT Cititori.Nr_permis, Cititori.Nume_prenume, Carti.Autor, Carti.Titlu,
Imprumuturi.Data_imprumut, Imprumuturi.Data_rest
FROM Cititori INNER JOIN (Carti INNER JOIN Imprumuturi ON Carti.cota
= Imprumuturi.Cota) ON Cititori.Nr_permis = Imprumuturi.Nr_permis
WHERE Imprumuturi.Data_rest BETWEEN #3/18/2009# And #3/30/2009#;
c.8
143
Limbajul de interogare SQL
b.9
SELECT SUM([numar_ex]*[pret_unitar]) AS valoare_totala
FROM Carti;
c.9
b.10
SELECT SUM(Carti.Numar_ex) AS Numar_total_ex
FROM Cititori INNER JOIN (Carti INNER JOIN Imprumuturi ON Carti.cota
= Imprumuturi.Cota) ON Cititori.Nr_permis = Imprumuturi.Nr_permis;
c.10
b.11
SELECT AVG(Carti.Pret_unitar) AS Pret_unitar_mediu
FROM Carti;
144
Instrumente software pentru Administraţia Publică
c.11
a.12. Care este cel mai mare preţ şi cel mai mic preţ al cărţilor din bibliotecă?
Rezultatul va grupa datele după editura în care au apărut cărţile.
b.12
SELECT Max(Carti.Pret_unitar) AS MaxOfPret_unitar, Min(Carti.Pret_unitar)
AS MinOfPret_unitar, Carti.Editura
FROM Carti
GROUP BY Carti.Editura;
c.12
a.13. Care este cel mai mare preţ şi cel mai mic preţ al cărţilor din bibliotecă, care au
apărut în editura Polirom, după anul 2000?
b-13
SELECT Max(Carti.Pret_unitar) AS MaxOfPret_unitar, Min(Carti.Pret_unitar)
AS MinOfPret_unitar, Avg(Carti.Pret_unitar) AS AvgOfPret_unitar, Carti.Editura
FROM Carti
GROUP BY Carti.Editura, Carti.Editura
HAVING Carti.Editura="Polirom" AND Carti.Editura>="2000";
c-13
145
Limbajul de interogare SQL
a.14. Care sunt autorii pentru care în bibliotecă există mai mult de 2 titluri?
b.14
SELECT Carti.Autor, COUNT([titlu]) As [Nr titluri pe autor]
FROM Carti
GROUP BY [autor]
HAVING COUNT([titlu])>=2;
c.14
b.15
SELECT Carti.Editura, COUNT([titlu]) AS [Titluri pe editura]
FROM Carti
GROUP By [editura];
c.15
b.16
146
Instrumente software pentru Administraţia Publică
c.16
b.17
SELECT Count([nr_permis]) AS [Nr studenti]
FROM Cititori
WHERE Cititori.Ocupatie="Student";
c.17
a.18. Să se adauge o nouă carte (Cota: 12157, Autor: Mansfield Ron, Titlu: Microsoft
Windows Vista, Anul apariţiei: 2008, Editura: Niculescu, Nr de exemplare: 5, Pret
unitar: 49) care este împrumutata la data de 2 mai 2009, de un nou cititor (Nr permis:
12130, Nume şi prenumele Vernescu Mihai, CNP: 2870623056318, Str. Macazului, nr.
9A, Localitatea: Iaşi, Ocupaţia: Student).
b.18
INSERT INTO Cititori (Nr_permis, Nume_prenume, CNP, Adresa, Localitate,
Ocupatie )
SELECT 12130 AS Expr1, "Vernescu Mihai" AS Expr2, 2870623056318 AS
Expr3, "Str. Macazului, nr. 9A" AS Expr4, "Iasi" AS Expr5, "Student" AS Expr6;
147
Limbajul de interogare SQL
a.19. Să se şteargă din tabela Carti cartea care are cota 12154. Cum se modifică
restricţiile de integritate referenţială pentru a şterge automat şi înregistrările
corespunzătoare din tabela Imprumuturi?
b.19
DELETE Carti.cota
FROM Carti
WHERE Carti.cota="12154";
c.19
148
Instrumente software pentru Administraţia Publică
b.20
DELETE Cititori.Localitate, Cititori.Ocupatie
FROM Cititori
WHERE Cititori.Localitate="iasi" AND Cititori.Ocupatie="elev";
c.20
b.21
UPDATE Carti SET Carti.Pret_unitar =[pret_unitar] + [pret_unitar]*0.10/1.10;
149
Limbajul de interogare SQL
c.21
b.22
UPDATE Carti SET Carti.Pret_unitar = [pret_unitar]+[pret_unitar]*0.15 / 1.15
where editura="Polirom";
c.22
După cum s-a observat în exemplele de mai sus, rezultatul unei fraze SELECT este o
tabelă în care vor fi grupate /regrupate liniile tabelei /tabelelor specificate prin FROM şi care
au aceleaşi valori pentru câmpul sau câmpurile specificate prin GROUP BY. Practic, se
generează câte un tuplu pentru fiecare grup de tupluri. Deoarece clauza GROUP BY
grupează tuplurile după valoarea unor atribute /câmpuri se introduc restricţii în ceea ce
priveşte lista de atribute ce apar în fraza SELECT. Atributele care pot apărea pot fi:
- atribute care alcătuiesc baza pentru grupare (cele specificate în clauza GROUP BY);
- funcţii agregat (AVG(), SUM(), MAX(), MIN(), COUNT() ) aplicate asupra atributelor.
150
Instrumente software pentru Administraţia Publică
a) [ ] media notelor la examene pentru studentii care au promovat cel putin 4 examene si
au media mai mare decat 7
b) [ ] media notelor la examene pentru studentii care au promovat cel putin 4 examene si
au note mai mari decat 7
c) [ ] situatia notelor la examene pentru studentii care au promovat toate examenele si au
media mai mare decat 7
3. Care dintre urmatoarele fraze SELECT au ca rezultat numarul de studenti din fiecare
judet?
a) [ ] SELECT Judet COUNT(*) AS Nrst FROM Student, Localit
WHERE Student.Codp=Localit.Codp;
b) [ ] SELECT Judet COUNT(*) AS Nrst FROM Student, Localit
WHERE Student.Codp=Localit.Codp GROUP GY Judet;
c) [ ] SELECT Judet COUNT(Matricol) AS Nrst FROM Student, Localit
WHERE Student.Codp=Localit.Codp GROUP GY Judet;
151
Limbajul de interogare SQL
152