Documente Academic
Documente Profesional
Documente Cultură
2011
5
Capitolele 1-3: asist. univ. dr. Ileana Hauer
Capitolele 4-6: lect. univ. dr. Diana Trnveanu
6
CUPRINS
CAPITOLUL 1
CONCEPTE GENERALE DESPRE BAZELE DE DATE I
SISTEMELE DE GESTIUNE A BAZELOR DE DATE .................... 13
1.1 Revoluia relaional ........................................................................................ 13
1.2 Conceptul de baz de date................................................................................ 15
1.3 Conceptul de sistem de gestiune a bazelor de date ............................................ 19
1.3.1 Introducere............................................................................................... 19
1.3.2 Obiectivele unui SGBD ............................................................................ 19
1.3.3 Funciile unui SGBD ................................................................................ 21
1.3.4 Regulile lui Codd ..................................................................................... 23
1.4 Modelarea datelor ............................................................................................ 27
1.4.1 Modele de date: perspectiv istoric ......................................................... 27
1.4.2 Sistemul de gestiune bazat pe fiiere (SGF) .............................................. 28
1.4.3 Modele prerelaionale............................................................................... 29
1.4.4 Modelul relaional .................................................................................... 30
1.4.5 Modelele postrelaionale i noi funcionaliti ........................................... 32
1.5 Rezumatul capitolului ...................................................................................... 34
1.6 ntrebri de auto-evaluare ................................................................................ 35
CAPITOLUL 2
PROIECTAREA I IMPLEMENTAREA BAZELOR DE DATE ...... 37
2.1 Arhitectura ANSI-SPARC ............................................................................... 37
2.2 Proiectarea bazelor de date............................................................................... 39
2.3 Utilizarea modelelor de date n etapa de proiectare ........................................... 40
2.4 Modelul conceptual al bazei de date ................................................................. 42
2.5 Modelul logic al bazei de date.......................................................................... 42
2.6 Modelul fizic al bazei de date........................................................................... 43
2.7 Rezumatul capitolului ...................................................................................... 45
2.8 ntrebri de autoevaluare.................................................................................. 46
7
CAPITOLUL 3
MODELUL CONCEPTUAL AL BAZELOR DE DATE
RELAIONALE .................................................................................. 47
3.1 Entitai i instane............................................................................................ 47
3.2 Atribute .......................................................................................................... 48
3.2.1 Concept i tipologie ................................................................................. 48
3.2.2 Cheia primar, un atribut special .............................................................. 50
3.2.3 Entitate sau atribut ................................................................................... 51
3.3 Relaii ............................................................................................................. 53
3.3.1 Definiie .................................................................................................. 53
3.3.2 Gradul i cardinalitatea relaiilor .............................................................. 53
3.4 Schema conceptual i diagrama entitate-relaie............................................... 54
3.5 Modelul relaional: fundamentarea teoretic .................................................... 57
3.5.1 Concepte de baz ..................................................................................... 57
3.5.2 Stabilirea relaiilor ntre entiti ................................................................ 59
3.6 Reguli de integritate pentru bazele de date relaionale ...................................... 63
3.6.1 Valoarea special Null a atributelor .......................................................... 63
3.6.2 Integritatea entitilor ............................................................................... 64
3.6.3 Integritatea referenial ............................................................................ 64
3.6.4 Restricii procedurale ............................................................................... 65
3.7 Implementarea modelului conceptual............................................................... 66
3.8 Rezumatul capitolului ..................................................................................... 68
3.9 ntrebri de auto-evaluare ................................................................................ 70
CAPITOLUL 4
NORMALIZAREA BAZELOR DE DATE .......................................... 73
4.1. Introducere..................................................................................................... 73
4.2 Organizarea datelor ......................................................................................... 73
4.3 Dependene ..................................................................................................... 75
4.3.1 Dependene funcionale simple ................................................................ 75
4.3.2 Dependene funcionale directe i tranzitive.............................................. 78
4.3.3 Dependene funcionale multiple .............................................................. 78
4.3.4 Dependene multivaloare ......................................................................... 78
4.3.5 Dependene jonciune .............................................................................. 80
4.3.6 Matricea dependenelor funcionale .......................................................... 81
4.4 Forme normale................................................................................................ 85
4.4.1 Forma normal 1 ..................................................................................... 85
4.4.2 Forma normal 2 ..................................................................................... 86
8
4.4.3 Forma normal 3 ...................................................................................... 88
4.5 Concluzii ......................................................................................................... 89
4.6 Rezumatul capitolului ...................................................................................... 89
4.7 ntrebri de autoevaluare din partea teoretic.................................................... 90
4.8 Exemple .......................................................................................................... 91
4.8.1 Problem rezolvat Filiala CEC ............................................................. 91
4.8.2 Probleme propuse..................................................................................... 94
CAPITOLUL 5
ELEMENTE INTRODUCTIVE N ACCESS .................................... 97
5.1 Introducere ...................................................................................................... 97
5.2 SGBD Access: prezentare general .................................................................. 97
5.2.1 Caracteristici generale .............................................................................. 98
5.2.2 Operaii cu baze de date ........................................................................... 99
5.2.3 Obiectele bazei de date ........................................................................... 105
5.3 Obiecte Tables............................................................................................... 106
5.4 Obiecte Queries ............................................................................................. 116
5.4.1. Interogri de selecie ............................................................................. 117
5.4.2 Interogri de sintetizare a datelor ............................................................ 119
5.4.3 Interogri de aciune............................................................................... 120
5.5 Obiecte Forms ............................................................................................... 123
5.5.1 Formulare create cu ajutorul butonului Form .......................................... 124
5.5.2 Formulare create cu ajutorul butonului Form Wizard .............................. 125
5.5.3 Formulare create cu ajutorul butonului Form Design ............................... 128
5.5.4 Formulare cu sub-formulare ................................................................... 133
5.6 Obiecte Reports ............................................................................................. 134
5.7 Obiecte Macros ............................................................................................. 139
5.8 Obiecte Modules ........................................................................................... 141
5.9 Concluzii ....................................................................................................... 141
5.10 Rezumatul capitolului .................................................................................. 141
5.11 ntrebri de autoevaluare din partea teoretic ................................................ 142
5.12 Exemple ...................................................................................................... 143
5.12.1 Problem rezolvat Tabel creat n Datasheet View .......................... 143
5.12.2 Problem rezolvat Tabele create n Design View .............................. 148
5.12.3 Problem rezolvat Formulare i controale......................................... 154
5.12.4 Problem rezolvat Formulare cu controale calculate, Switchboard .... 161
5.12.5 Problem rezolvat Interogri ............................................................ 168
5.12.6 Problem rezolvat Rapoarte ............................................................. 175
9
5.13 Probleme propuse........................................................................................ 181
5.13.1 Problema propus Crearea tabelelor Filial CEC............................. 181
5.13.2 Problem propus Crearea formularelor............................................. 181
5.13.3 Problem propus Crearea interogrilor ............................................. 181
5.13.4 Problem propus Crearea rapoartelor ............................................... 181
CAPITOLUL 6
ELEMENTE SQL ............................................................................. 183
6.1 Introducere.................................................................................................... 183
6.2 Comenzi SQL ............................................................................................... 183
6.2.1 Comanda CREATE TABLE .................................................................. 186
6.2.2 Comanda ALTER TABLE ..................................................................... 188
6.2.3 Comanda DROP TABLE ....................................................................... 190
6.2.4 Comanda INSERT INTO ....................................................................... 190
6.2.5 Comanda DELETE ................................................................................ 191
6.2.6 Comanda SELECT ................................................................................ 192
6.2.7 Comanda UPDATE ............................................................................... 200
6.3 Concluzii ...................................................................................................... 201
6.4 Rezumatul capitolului ................................................................................... 201
6.5 ntrebri de autoevaluare din partea teoretic ................................................. 202
6.6 Exemple ....................................................................................................... 203
6.6.1. Problem rezolvat Produse ............................................................... 203
6.6.2 Problem rezolvat Aprovizionare....................................................... 208
6.6.3 Problem propus Bibliotec ............................................................... 216
6.6.4 Problem propus Amenajri interioare ............................................... 216
10
OBIECTIVELE CURSULUI
11
12
CAPITOLUL 1
CONCEPTE GENERALE DESPRE BAZELE DE DATE
I SISTEMELE DE GESTIUNE A BAZELOR DE DATE
13
ierarhic i reea. Modelul relaional de date e aplicat pe larg i n bazele de date
deductive. Pe de alt parte, se observ convergena modelului relaional i
tehnologiilor orientate pe obiecte.
"Revoluia relaional" a introdus mai multe idei valoroase n lumea
bazelor de date. Printre acestea progrese tehnologice i beneficii ale sistemelor
de gestiune ale bazelor de date pot fi menionate:
Tabelele sunt un mijloc simplu de reprezentare a datelor. Ele permit
programatorilor i utilizatorilor finali s-i organizeze datele n mod
acceptabil. Extinderea modelului relaional a confirmat puterea de atracie
a acestei reprezentri.
SQL este un standard de limbaje de interpelri foarte comod. El e un limbaj
nonprocedural de manipulare a datelor i a contribuit mult la creterea
popularitii sistemelor de gestiune ale bazelor de date relaionale.
Operaiile orientate pe mulimi permit programatorilor i utilizatorilor
ordinari s gseasc i s actualizeze mari colecii de nregistrri fr a
scrie programe speciale.
Jonciunile sunt instrumente puternice de asociere a nregistrrilor anterior
independente. Utilizatorii pot crea noi seturi de nregistrri (aa-numitele
tabele virtuale), apelnd la jonciune.
Interpelrile interactive. Cutarea i prelucrarea datelor n mod dinamic a
adus la utilizarea larg a bazelor de date relaionale. Gestionarea
tabelelor, vizualizarea interactiv i mbuntirea interactiv a contribuit
ca utilizatorul s-i dea votul pentru sistemele relaionale.
Consistena datelor. Sistemele de gestiune relaionale asigur c nici un
utilizator i nici o aplicaie nu pot modifica baza de date, dac
modificarea e n contradicie cu constrngerile de integritate.
14
1.2 Conceptul de baz de date
Apariia i dezvoltarea calculatoarelor electronice au condus la
amplificarea activitilor legate de stocarea, interogarea i administrarea
coleciilor de date. O colecie de date reunete date despre o anume clas de
obiecte (reale sau conceptuale).
Folosirea tehnologiilor informaionale n colectarea, stocarea, procesarea i
transmiterea coleciilor de date a impus definirea unor tehnici i metode de
organizare a acestora.
Se cunosc dou metode de organizare a coleciilor de date:
- organizarea n fiiere de date;
- organizarea n baze de date.
Organizarea datelor n fiiere de date este specific anilor 60 i poate fi
utilizat i astzi, ndeosebi n cazul folosirii limbajelor procedurale de
programare1, cum ar fi limbajele Cobol, Fortran, Basic.
Ca limite ale organizrii datelor n fiiere menionm:
- descrierea datelor se face n fiecare program n care ele sunt utilizate;
spunem c datele sunt dependente de program.
- lipsa unui formalism riguros de definire i validare a datelor.
- meninerea unei redundane ridicate n cadrul coleciilor de date
memorate pe suporturi tehnice.
- performane scazute pentru procesarea datelor ndeosebi cand este
necesar s se fac asocieri ntre datele memorate n fiiere de date
distincte.
Limitele organizrii datelor n fiiere i posibilitile oferite de noile
tehnologii informaionale au dus la promovarea metodei de organizare a datelor
n baze de date.
Astzi, cele mai multe dintre activitile noastre zilnice necesit accesarea
i actualizarea informaiei dintr-o baz de date: extragerea unei sume de bani
din cortul bancar, rezervarea unei camere de hotel, cumprarea unui bilet de
avion, mprumutul unei cri de la bibliotec, plata facturilor de telefon, curent
electric etc. Toate acestea se pot face rapid i n siguran, pentru c datele
respective sunt bine organizate ntr-o baz de date i administrate de un sistem
de gestiune a bazelor de date.
Pentru baza de date2 avem mai multe definiii:
este un ansamblu integrat de nregistrri sau de fiiere legate ntre ele n
mod logic (Lungu, et al., 1995).
1
Versiuni recente ale acestor limbaje permit i accesarea datelor organizate n baze de date.
2
Termenul database (baz de date n limba englez) a aprut pentru prima dat n titlul unei
conferine organizate n Santa Monica, SUA, n 1964: Development and Management of
Computer Centered Database.
15
ansamblu structurat de date nregistrate pe suporturi accesibile de
calculator pentru a satisface, chiar simultan, mai muli utilizatori de o
manier selectiv i n timp oportun (Delobel, Adiba, 1982).
colecie de date aflate n interdependen, mpreun cu descrierea
datelor i a relaiilor dintre ele (Pescaru, et al, 1976).
colecie de date utilizat ntr-o organizaie, colecie care este
automatizat, partajat, definit riguros (formalizat) i controlat la
nivel central (Everest, 1986).
Fa de modelul bazat pe fiier, noutatea adus de organizarea datelor n baze de
date o constituie existena unui fiier de descriere global al bazei, astfel nct
s se poat asigura independena programelor fa de date. Acest fiier de
descriere global al bazei este denumit dicionar de date sau catalog al
sistemului. Dup cum se observ din figura 1.1, lucrul cu fiierele de date, deci
extragerea i modificarea datelor, se desfoar exclusiv prin intermediul
dicionarului de date n care se gsesc informaii privitoare la structura datelor i
restriciile ndeplinite de acestea.
Termenul de baz de date este folosit de multe ori n mod eronat,
confundndu-se cu softul pentru baz de date care este utilizat. n realitate,
softul pentru baze de date este numit sistem de gestiune a bazelor de date
(SGBD), iar baza de date este recipientul care conine informaiile, recipient
creat i manipulat prin intermediul SGBD. Coninutul acestui recipient se
schimb foarte des, atunci cnd se lucreaz cu baza de date (adugri, tergeri i
modificri de informaii)
16
Figura 1.1 Schema de principiu a unei baze de date
Adaptare dup Fotache, M., 1997
17
n concluzie, fa de un inventar (un tabel), o baz de date are
urmtoarele proprieti:
reprezint un anumit aspect al lumii reale, numit microuniversul bazei
de date; orice modificare care se produce n acest microunivers se
reflect n baza de date (de exemplu: cumprarea unui nou DVD n
vederea nchirierii, modificarea diferenei permise ntre cursul de
cumprare i cel de vnzare al valutei etc);
este o colecie de date coerent din punct de vedere logic i avnd un
neles intrinsec (de exemplu: din baza de date asociat bibliotecii
universitii nu vor face parte crile de telefon sau lista de materiale
didactice din laboratorul de informatic);
este proiectat, construit i administrat, avnd permanent n vedere un
anumit scop; o baz de date este destinat utilizrii de ctre un anumit
grup de persoane i permite efectuarea unui anumit set de operaii.
18
1.3 Conceptul de sistem de gestiune a bazelor de date
1.3.1 Introducere
3
Exemple de SGBD: Microsoft Access, FoxPro (de la Microsoft), Paradox, Visual dBase (de la
Borland), Oracle 10g (de la Oracle Corporation), Sybase Adapted Server (de la Sybase Inc.), Iris
(de la Hewlett-Packard), IMS, DB2 (pn DB9 de la IBM).
19
folosirii sistemului de informare dispunnd de un minim de cunotine despre
modul de organizare a lui n general i informatic n special; integritatea i
securitatea datelor etc.
n acest context, sistemului de gestiune al bazei de date i revin o serie de de
obiective, cum sunt:
1) Asigurarea independenei datelor. O aplicaie, n general, este
dependent de date n sensul c modificarea structurii de memorare a datelor
sau a strategiei de acces la date afecteaz i aplicaia. Independena datelor fa
de aplicaie este totui necesar cel puin din urmtoarele considerente: diferite
aplicaii au nevoie de viziuni diferite ale acelorai date; administratorul bazei de
date trebuie s aib libertatea de a schimba structura de memorare sau strategia
de acces, ca rspuns la cerine (schimbri de standarde, prioritile aplicaiilor,
unitile de memorare etc), fr a modifica aplicaiile existente; baza de date
existent, precum i programele de exploatare a ei, care au fost folosite o
perioad de timp, reprezint o investiie major la care nu trebuie s se renune
prea uor.
Independena datelor trebuie privit din dou puncte de vedere:
independena fizic; independena logic a datelor.
Independena fizic a datelor face ca memorarea datelor i tehnicile fizice
de memorarea s poat fi modificate fr a determina rescrierea programelor de
aplicaie.
Independea logic a datelor se refer la posibilitatea adugrii de noi
articole de date sau extinderea structurii conceptuale (globale), fr ca aceasta
s impun rescrierea programelor existente.
20
- spre deosebire de sistemul clasic de prelucrare pe fiiere, unde exista un
singur criteriu de adresare (cel care a stat la baza organizrii fiierului) n cazul
bazelor de date, sistemul de gestiune trebuie s ofere posibilitatea unui acces
multicriterial, fr sortri suplimentare, n timp ce modificarea criteriului la
fiierele clasice implic reorganizarea lor;
- utilizarea unui limbaj ct mai apropiat de limbajul natural, cu posibilitatea
exploatrii bazei de date n regim conversaional. Aceasta ar oferi posibilitatea
exploatrii n mod facil a bazei de date i de ctre utilizatorii neinformaticieni.
21
gestiune ce utilizeaz limbaje gazd de nivel nalt, identificarea i delimitarea
funciilor nu este att de evident. n ciuda acestor particulariti, totui, se pot
deduce cteva funcii cu caracter de generalitate pentru toate sistemele de
gestiune a bazelor de date.
Prezentm n continuare cteva astfel de funcii:
1) Funcia de descriere a datelor permite definirea structurii bazei de date
cu ajutorul limbajului de definire. Definirea datelor poate fi realizat la nivel
logic, conceptual i fizic. La nivelul acestei funcii se descriu multitudinea
atributelor (cmpurilor) din cadrul structurii bazei de date, legturile dintre
entitile bazei de date sau dintre atributele aceleiai entiti, se definesc
eventualele criterii de validare a datelor, metodele de acces la date, aspectele
referitoare la asigurarea integritii i confidenialitii datelor, etc. Rezultatul
acestei funcii se va concretiza n schema bazei de date, memorate n cod intern.
22
1.3.4 Regulile lui Codd
23
5 Limbaj Un SGBD trebuie s suporte un limbaj Access, prin motorul
cuprinzto clar pentru manipularea datelor (SQL) Jet, asigur SQL
care asigur modaliti cuprinztoare pentru manipularea
pentru manipularea datelor, definirea datelor, crearea
datelor, definirea vederilor, vederilor (Select
constrngerile de integritate, limitrile Queries),
de tranzacii i de autorizare. constrngerile de
intergritate
(Relationships i
Create Constraint.
6 Actualizarea Toate vederile trebuie s poat fi Access a fost primul
vederilor actualizate de sistem. ntr-un SGBD SGBD pe PC-uri care
total relaional majoritatea vederilor ar a permis interogri de
trebui s se poat actualiza. actualizare (Update
Query)
7 Actualizri Un SGBDR trebuie s fac mai mult Access suport
la nivel de dect simpla extragere a datelor. interogri de aciune
mulime Trebuie s aib capacitatea de inserare, (Action Query)
actualizare i tergere a datelor, privite
ca o mulime relaional.
8 Independena Datele trebuie s fie fizic independente Access permite
fizic a de programul aplicaie. SGBDR trebuie modificarea obiectelor
datelor s fie n stare s urmreasc bazei de date fr
modificrile fizice la nivelul datelor pe alterarea celorlalte
"sub aplicaie". De exemplu, SGBDR componete ale
nu se va modifica dac un index se Accessului. Jet are
adaug sau se terge dintr-un tabel. motor de stocare logic.
9 Independena Pe ct este posibil, aplicaiile software n Access, o interogare
logic a trebuie s fie independente de se poate lega la un
datelor modificrile fcute n tabelele de baz. formular sau la un
De exemplu, nu trebuie s se rescrie raport la fel de simplu
codul n cazul n care tabelele sunt ca un tabel.
combinate ntr-o vedere.
10 Independena Integritatea datelor trebuie s se poat Dei Microsoft nu a
integritii defini ntr-un limbaj relaional i s fie documentat modul n
datelor stocat n catalog. Constrngeri de care Jet stocheaz
integritate a datelor trebuie s poat fi integritile, se pot
construite la nivel de aplicaie. Acest crea reguli de
concept este oarecum strin modelului integritate via SQL. Jet
relaional. n modelul relaional, va stoca aceste
integritatea trebuie s fie inerent informaii n proiectul
proiectului bazei de date. bazei de date ca parte a
catalogului.
24
11 Independena Capacitile SGBDR nu au voie s fie Pentru c motorul Jet
distribuiei limitate datorit distribuiei unor stocheaz regulile de
componente ale acestuia n baze de integritate la nivel de
date separate. motor, alte
componente ale
motorului nu afecteaz
regulile de integritate.
12 Inexistena Dac un SGBDR are un limbaj de Access permite
subminrilor manipulare "a unei singure nregistrri folosirea lui DAO i
la un moment dat", acest limbaj nu va ADO pentru
putea fi folosit la ocolirea regulilor de manipularea a cte
integritate sau a constrngerilor unei singure
modelului relaional. Astfel nu numai nregistrri la un
c SGBDR trebuie s fie guvernat de moment dat prin
reguli relaionale, ci aceste reguli intermediul mulimilor
trebuie s fie i primare. de nregistrri
actualizabile
(updateable recordsets)
25
oanomalii de modificare rezult din faptul c este dificil de modificat o
valoare a unui atribut atunci cnd ea apare n mai multe tupluri ale
relaiei.
Eliminarea acestor anomalii se realizeaz cu ajutorul operaiei numite
normalizare5, care este o tehnic formal care se bazeaz pe cheile primare,
respectiv cheile candidat ale relaiilor i pe dependenele funcionale. Tehnica
include o mulime de reguli care pot fi utilizate pentru testarea relaiilor
individuale.
5
Subiect dezvoltat n capitolul 4.
26
1.4 Modelarea datelor
6
E.F.Codd este considerat a fi printele conceptului de model de date, n general, i al
conceptului de model de date relaional, n particular .
27
mijlocul anilor '60, IBM s-a alturat NAA dezvoltnd n continuare GUAM i
producnd unul dintre primele sisteme comerciale de gestiune a bazelor de date:
IMS (Information Management System). IBM a preluat modelul ierarhic pentru
a respecta cerina de stocare a datelor pe benzi magnetice (deci n acces
secvenial). Ulterior, aceast restricie a fost nlturat i IMS continu s fie
principalul SGBD ierarhic utilizat de majoritatea calculatoarelor mainframe7.
Construirea bazelor de date a cunoscut o evoluie foarte rapid, trecnd
prin mai multe abordri, clasificate dup cum urmeaz:
sistemele de fiiere;
sistemele prerelaionale (sau istorice", numite i navigante sau
tradiionale -legacy systems): ierarhic i reea;
sistemul relaional;
sistemele postrelaionale: orientat obiect i hibrid (obiect-relaional);
sistemele semantice: multidimensional i logic (deductiv).
7
Un calculator mainframe este un calculator cu capacitate de memorie i vitez de lucru foarte
mari, utilizat de marile corporaii pentru a stoca volume foarte mari de date i pentru a coordona
sute sau mii de terminale (inclusiv calculatoare personale) conectate la el.
28
1.4.3 Modele prerelaionale
29
Figura 1.3 Modelul reea
Considerat drept cel mai important eveniment din istoria bazelor de date,
apariia modelului relaional s-a produs n iunie 1970, odat cu publicarea - n
revista Communications of the ACM - a articolului fundamental al lui Edgar
Frank Codd8 (de la IBM Research Laboratory): A Relaional Model of Data for
Large Shared Databanks". n acest articol, autorul aplica o serie de concepte din
algebra relaional pentru a rezolva problemele legate de stocarea volumelor
mari de date i enuna celebrele" 12 reguli (condiii) pe care trebuie s le
ndeplineasc un SGBD pentru a fi declarat relaional.
S amintim ns existena unui precursor: modelul bazat pe teoria
mulimilor, propus de D.L. Childs n articolul su: Feasability of a Set-
Theoretical Data Structure", aprut n 1968.
Cele mai importante prototipuri de sisteme de gestiune a bazelor de date
de tip relaional au fost:
System R, dezvoltat la San Jose Research Laboratory din California spre
sfritul anilor '70. Acest model a condus la:
8
E.F. Codd s-a nscut la 23 august 1923 n Portland, Marea Britanie, i a murit n 18 aprilie
2003, n Florida. A fcut studii de matematic i chimie la Oxford i s-a mutat n Statele Unite, n
1948, pentru a lucra la IBM. A introdus termenul OLAP (OnLine Analytical Processing) i a
impus modelul relaional; a avut, de asemenea, contribuii n domeniul modelelor de
calculabilitate prin lucrrile sale privind automatele celulare. A obinut de dou ori Premiul
Turing: n 1981 i 1994.
30
o apariia unui limbaj structurat de interogare a bazelor de date: SQL.
o producerea mai multor SGBD-uri relaionale comerciale: DB2 i
SQL/DS de la IBM i, respectiv, ORACLE de la Oracle
Corporation (n deceniul 9 al secolului trecut).
INGRES (Interactive Graphics Retrival System), dezvoltat la Universitatea
Berkeley din California.
Peterlee Relaional Test Vehicle, dezvoltat la IBM UK Centre din Peterlee,
Marea Britanie.
Numrul sistemelor relaionale comerciale a ajuns acum la cteva sute, dintre
care cele mai cunoscute sunt: DB2 (de la IBM), Ingres II (de la Computer
Associates International Inc.), Oracle 10g (de la Oracle Corporation), Ms
Access, FoxPro (de la Microsoft), Paradox, Visual dBase (de la Borland),
Sybase Adapted Server (de la Sybase Inc.). Succesul acestui model continu s
fie att de mare nct multe sisteme nerelaionale ofer acum i o interfa cu
utilizatorii de tip relaional, indiferent de modelul de date pe care se bazeaz de
fapt.
Informal putem defini model relaional de date ca pe un model n care:
datele sunt percepute de utilizatori ca nite tabele i numai ca nite tabele;
operaiile disponibile pentru utilizatori (spre exemplu, pentru obinerea
informaiilor) sunt operaii care genereaz noi tabele pe baza tabelelor
vechi: operaia de selecie (SELECT) extrage o submulime de rnduri
dintr-o tabel, operaia de proiecie (PROJECT) extrage o submulime de
coloane, operaia de juxtapunere (JOIN) asociaz dou tabele pe baza
valorilor identice pe care le conin n anumite coloane, de asemenea
identice; or, toate aceste submulimi rezultate pot fi privite i ele nsele ca
nite tabele.
Numele modelului relaional provine de la conceptul matematic de relaie. Aa
cum o funcie f : {1, 2,...,n} N R are mai multe reprezentri convenionale,
dintre care cea mai comod este cea de vector, tot astfel relaia poate avea mai
multe reprezentri, una dintre ele fiind tabela. Din acest motiv, cel puin la nivel
informal, termenii de relaie i tabel pot fi considerai sinonimi.
31
1.4.5 Modelele postrelaionale i noi funcionaliti
32
(II) Modelul obiect-relaional extinde modelul relaional, oferind un set
de tipuri de date mai bogat, i include i orientarea obiect. Se ncearc astfel
combinarea avantajelor celor dou abordri, cea relaional i cea orientat-
obiect: atributele i instanele entitilor pot avea tipuri complexe i pot evita
unele dintre restriciile specifice modelului relaional. De exemplu, n timp ce n
modelul relaional fiecare atribut trebuie s ia pentru fiecare instan a unei
entiti o valoare i numai una din domeniul lui de definiie, n acest model
poate lua un sub-set de valori (de exemplu: pentru un angajat oarecare, atributul
Telefon poate lua ca valori numrul telefonului fix de acas i de la serviciu, al
telefonului mobil propriu i de serviciu, dac angajatul dispune de toate patru).
Cel mai cunoscut exemplu: Informix Universal Server care combin teh-
nologiile relaionale i orientate obiect din dou produse preexistente: Informix
i Illustra.
Noi funcionaliti ale bazelor de date:
a. baze de date partajate n reea; n condiiile lucrului n reea este posibil s
se stocheze baza de date pe un calculator ce are loc de server. Astfel toi
utilizatorii vor partaja ntre ei baza de date. Administratorul bazei de date
are sarcini pe linia modelrii datelor, a implementrii bazei de date, definirii
utilizatorilor i a drepturilor de acces i ntreinerea bazei de date. Drepturile
de acces la nivel utilizator vizeaz operaiile pe care acestea le pot realiza.
b. baze de date distribuite; unitile economice dispersate geografic sunt
nevoite s acceseze baze de date care sunt distribuite. Lucrul ntr-o reea de
calculatoare permite distribuirea unei baze de date, din punct de vedere
fizic, pe mai multe site-uri. Fiecare site gzduiete un sistem local de
gestiune a bazelor de date. Utilizatorii unui site au acces la baz de date
local i, n plus, la bazele de date distribuite n celelalte site-uri.
Conexiunile inter-site-uri pot fi stabilite ntr-o manier divers.
c. baze de date deductive; acest gen de baze de date se fundamenteaz
cuplarea unei baze de date relaionale cu un procesor din clasa sistemelor
expert.
d. depozite de date (datawarehouse); un depozit de date reprezint un sistem
de baze de date 1) ce acoper un sistem temporal mai mare; 2) ce conine
date interne i externe; 3) optimizat pentru a rspunde interogrilor
complexe (de la manageri la analiti).
e. baze de date multidimensionale; acest gen de baze de date au aprut ca
urmare a necesitilor crescnde de procesare multidimensional a datelor.
Aplicaiile care se bazeaz pe analiza multidimensional a datelor sunt
cunoscute sub numele de OLAP (On Line Analytical Processing 9)
9
Se face distincie ntre:- OLTP (On-Line Transactional Processing) care privilegiaz:
integritatea i securitatea datelor i tratarea cererilor informaionale simple de ctre servicii
operaionale (producie, comercial, resurse umane).i OLAP, care privilegiaz analiza i
manipularea datelor (folosind cereri complexe) n vederea elaborrii stategiei i sunt destinate
ndeosebi conducerii i controlului de gestiune.
33
1.5 Rezumatul capitolului
34
1.6 ntrebri de auto-evaluare
1) Explicai conceptul de baz de date.
2) Definii sistemul de gestiune al bazelor de date i dai exemple.
3) Enumerai obiectivele unui SGBD.
4) Enumerai funciile unui SGBD.
Model Concept
Ierarhic Relaie
Reea Arbore
Relaional Graf
35
36
CAPITOLUL 2
PROIECTAREA I IMPLEMENTAREA BAZELOR DE
DATE
10
ANSI = American National Standards Institute
SPARC = Standards Planning and Requirements Committee
37
Nivelul intern (baza de date fizic) este o colecie de fiiere coninnd datele
fizice la care se adaug diverse structuri auxiliare menite s asigure accesul
operativ la date. Structurile auxiliare pot fi: directoare, indexi, pointeri, tabele
de dispersie. Modul de organizare a bazei de date fizice este n mare msur
influenat de configuraia echipamentelor hardware care suport baza de date i
de sistemul de operare. Schimbarea sistemului de operare sau modificri n
configuraia hardware pot atrage modificri ale bazei de date fizice. Dac este
satisfcut condiia de independen fizic, aceste modificri n nivelul intern al
bazei de date nu vor ataca nivelele superioare ale acesteia.
Nivelul intern trateaz chestiuni cum ar fi:
alocarea spaiului de stocare pentru date i indexi ;
descrierea nregistrrilor pentru stocare (cu dimensiunile de
stocare pentru date) ;
plasarea nregistrrilor ;
tehnici de comprimare a datelor i de codificare a acestora.
Nivelul extern este cel mai apropiat utilizatorului. Este ceea ce vede acesta din
baza de date, sau modul cum vede acesta baza de date. Nivelul extern este
derivat din cel conceptual dar poate prezenta deosebiri substaniale fa de
acesta. Un termen deseori folosit pentru modelul extern este acela de vedere sau
38
viziune. Prin aceste viziuni, utilizatorii au acces doar la pri bine definite din
baza de date, fiindu-le ascunse prile care nu intereseaz. Prin modelul extern
se realizeaz independena logic a datelor. Fiecrei viziuni i corespunde o
descriere n termenii entitilor logice din modelul conceptual.
Diferite vederi pot avea reprezentri diferite ale acelorai date. De ex, un
utilizator poate vedea datele calendaristice n format an-lun-zi, altul le poate
vedea ca zi-lun-an.Vederile pot include chiar date combinate sau derivate din
entiti diferite.
Realizarea unei baze de date se desfoar n mai multe etape; cele mai
importante sunt: (1) analiza, (2) proiectarea i (3) implementarea.
(1) n etapa de analiz se examineaz n mod sistematic i aprofundat acel
aspect al lumii reale care trebuie transpus ntr-o baz de date: o tipografie,
magazin universal, organizarea unei expoziii etc; se stabilesc gradul de
generalitate, dimensiunea bazei de date, categoriile i numrul de viitori
utilizatori. O baz de date trebuie s conduc la ameliorarea activitii din
organizaia respectiv i se realizeaz la cererea proprietarului.
39
Principalele scopuri ale etapei de proiectare sunt:
reprezentarea datelor i a relaiilor dintre date, conform cerinelor formulate
de utilizatori i condiiilor impuse de programele de calculator;
furnizarea unui model de date care s asigure orice tip de prelucrare a
datelor;
schiarea unui proiect astfel structurat nct s satisfac parametrii de efi-
cien specificai (de exemplu: obinerea datelor solicitate ntr-un interval de
timp cel mult egal cu o valoare prestabilit).
Proiectarea bazei de date se poate face prin metoda:
bottom-up: se ncepe cu stabilirea atributelor i - prin analiza asocierilor
dintre ele - se obin entitile i relaiile dintre entiti;
top-down: se dezvolt un model de date constnd din cteva entiti i
relaii foarte generale. Apoi, modelul este rafinat, obinndu-se modele
din ce n ce mai detaliate;
mixt: se combin i se itereaz metodele de mai sus.
40
Figura 2.2 Succesiunea fazelor n modelarea bazelor de date
41
2.4 Modelul conceptual al bazei de date
42
precum modul de stocare a datelor, tipurile de indexare etc. - sunt complet
ignorate.
Pe parcursul acestei etape, modelul este permanent testat i validat, cu
ajutorul datorilor, pentru a descoperi eventualele neconcordane cu restriciile
formulate de acetia. Tehnica folosit se numete normalizare i urmrete
asigurarea corectitudinii modelului logic (de exemplu, prin eliminarea
redundanelor n date, redudane care - o dat implementate - pot genera erori n
timpul operaiilor de actualizare a bazei).
Proiectarea conceptual i proiectarea logic a bazei de date sunt etape
foarte importante, critice, pentru realizarea unui proiect bun al bazei de date.
Dac unul dintre ele nu reprezint corect aspectul modelat, implementarea fizic
a bazei de date va fi eronat i corectarea ulterioar aproape imposibil. De
aceea, rafinarea modelului conceptual i a celui logic este un proces iterativ,
virtual infinit.
Proiectarea fizic a bazei de date este ultima faz a proiectrii, cea n care
proiectantul alege modul concret de implementare a bazei de date. Prima
operaie const n alegerea unui SGBD care s poat implementa modelul logic.
Urmeaz comunicarea ntre modelul fizic i cel logic, similar celei dintre
modelul logic i cel conceptual: orice decizie privind implementarea fizic
(ameliorarea performanelor, asigurarea securitii etc.) poate afecta structura
modelului logic. Cu toate acestea, modelul conceptual i modelul logic trebuie
s fie n continuare complet separate de modelul fizic al bazei de date i fiecare
trebuie s-i pstreze scopul: primele s rspund la ntrebarea: CE trebuie
fcut"; ultimul la: CUM trebuie fcut".
Aceast abordare a proiectrii bazelor de date este compatibil cu
arhitectura pe trei nivele a acestora, aa cum a fost ea stabilit de ANSI-SPARC
n 1975.
Figura 2.4 prezint modelarea datelor i arhitectura ANSI-SPARC.
43
Figura 2.4 Modelarea datelor i arhitectura ANSI-SPARC.
44
2.7 Rezumatul capitolului
Nivelul extern este cel mai apropiat utilizatorului. Prin modelul extern se
realizeaz independena logic a datelor. Fiecrei viziuni i corespunde o
descriere n termenii entitilor logice din modelul conceptual.
Proiectarea unei baze de date este procesul de creare a unui proiect pentru
baza de date care s asigure desfurarea corect a activitilor i rezolvarea
cerinelor utilizatorilor.
Realizarea unei baze de date se desfoar n mai multe etape; cele mai
importante sunt:
(1) analiza se examineaz n mod sistematic i aprofundat acel aspect al lumii
reale care trebuie transpus ntr-o baz de date;
(2) proiectarea, are 3 subetape: 2a) proiectarea bazei de date la nivel conceptual,
2b) proiectarea bazei de date la nivel logic i 2c) proiectarea bazei de date la
nivel fizic. n aceast etap se poate selecta sistemul de gestiune a bazei de date,
se proiecteaz interfeele i aplicaiile de utilizare i administrare a bazei de
date.
(3) implementarea: realizarea propriu-zis a bazei de date.
Proiectarea bazei de date se poate face prin metoda: bottom-up, top-down sau
mixt.
45
2.8 ntrebri de autoevaluare
1) Care este ordinea corect a celor trei niveluri care compun arhitectura
ANSI-SPARC pentru bazele de date:
a) nivelul conceptual, nivelul intern, nivelul extern;
b) nivelul conceptual, nivelul extern, nivelul intern;
c) nivelul extern; nivelul conceptual, nivelul intern.
4) Care dintre cele trei modele ale unei baze de date: logic, conceptual, fizic,
rspunde" la ntrebarea: CE trebuie fcut?
a) modelul logic i modelul conceptual;
b) modelul conceptual i modelul fizic;
c) modelul fizic i modelul logic.
46
CAPITOLUL 3
MODELUL CONCEPTUAL AL BAZELOR DE DATE
RELAIONALE
47
Exemplu: fiecare client al unei bnci este o instan a entitii Clieni; fiecare
curs predat ntr-o facultate este o instan a entitii CursuriUniversitare etc.
OBSERVAII.
O entitate poate avea subentiti; acestea trebuie s fie disjuncte; de
exemplu, entitile Piloi i MecaniciDeBord sunt disjuncte i sunt subentiti
ale entitii PersonalNavigant.
ntr-o baz de date pot exista entiti a cror existen este determinat de
alte entiti; primele se numesc entiti dependente, celelalte se numesc entiti
principale (de exemplu, entitatea Persoanenntreinere depinde de entitate
Salariai).
3.2 Atribute
Exemplu:
Fie entitatea ri; considerm atributele Nume, Continent, Capital, Form
DeGuvernmnt, Suprafa, SrbtoareNaional. Tabelul 3.1 prezint cteva
instane ale acestei entiti i valorile luate de atribute.
48
Clasificarea atributelor
A) Atributele se pot clasifica dup complexitate:
o atribute compuse;
o i atribute simple sau elementare, dup cum ele se mai descompune sau
nu n alte atribute, de mai mic complexitate.
Exist atribute nu pot fi dect simple (atributele Capital, Suprafa, Continent
ale entitii ri). Exist ns atribute care pot fi considerate fie simple, fie
compuse. De exemplu atributul DataNaterii cu valorile: 1 ianuarie 2000, 2 Mai
1990 etc. poate fi privit fie ca un atribut simplu, fie ca unul compus din
atributele Zi, Lun, An.
Este indicat s l tratm ca un atribut compus, dac prevedem necesitatea de a
avea acces direct la luna sau anul de natere al unei persoane nregistrate n baza
de date. Dac ns o astfel de necesitate nu este probabil i dac dorim s sim-
plificm structura entitii (i deci a bazei de date), atunci este preferabil s l
tratm ca atribut simplu.
B) Atributele se pot clasifica dup mulimea de valori n:
o atribute cu valori unice;
o i atribute cu valori multiple, dup cum ele pot lua cte o singur
valoare (de exemplu, atributele Capital, Suprafa, Continent ale
entitii ri) sau, dimpotriv, pentru unele instane pot lua cte o
singur valoare, pentru altele mai multe valori, iar pentru altele nici o
valoare (de exemplu, atributul OraCuMinimumlMilioane Locuitori al
entitii ri).
Cnd este cazul se pot defini limite inferioare i/sau superioare pentru numrul
de valori pe care le poate lua un astfel de atribut pentru o instan oarecare (de
exemplu, putem specifica faptul c atributul NrTelefon al entitii Persoane
poate lua minimum o valoare - telefonul de serviciu - i maximum trei).
C) Atributele se pot clasifica dup stabilitate n:
o atribute de baz;
o i atribute derivate, dup cum ele au valori de sine stttoare sau valori
care pot fi calculate din valorile altor atribute.
De exemplu, s considerm entitile corelate Cri, cu atributul NumrAutori -
i Autori, cu atributul Titlu; atributul NumrAutori este un atribut derivat:
valorile pe care le ia pentru diferite instane ale entitii Cri pot fi calculate pe
baza numrului de apariii ale atributului Titlu pentru diferite instane ale
entitii Autori.
49
3.2.2 Cheia primar, un atribut special
Cheia primar= un atribut sau cea mai mic mulime de atribute ale
unei entiti care iau, fiecare instan a entitii respective, o valoare
i numai una, sugestiv prin sensul figurat al cuvntului cheie. Atunci
cnd niciun atribut sau pe atribute ale entitii, rezonabil de numeros,
nu iau valori distincte pentru fiecare instan a acesteia, se poate
aduga un atribut convenional" care s ndeplineasc aceast
condiie. De obicei, acest atribut este denumit cu ajutorul prefixelor
cod sau id.
Exemple:
1) pentru entiti precum Studeni, Profesori, Angajai un exemplu de
identificator unic este codul numeric personal; un contraexemplu: numele
(chiar nsoit de prenume) sau data naterii. Se poate utiliza i atributul
convenional CodStudent (CodProfesor etc), cu valori formate din iniialele
numelui i prenumelui, urmate de numere distincte formate din 2 sau 3
cifre.
2) Pentru entitatea Comenzi putem folosi un atribut convenional (de exemplu:
CodComand, cu valori numere distincte) sau putem folosi trei atribute ale
sale: NumeFurnizor, NumeClient, DataEmiterii.
n alte situaii, identificatorul unic este compus dintr-o combinaie de dou sau
mai multe atribute (identificator unic compus). De exemplu combinaia dintre
titlu, numele autorului i data apariiei poate forma unicul identificator al
50
entitii CARTE. Oare combinaia titlu i nume autor nu era suficient?
Rspunsul este NU, deoarece pot exista de exemplu mai multe volume scrise de
Mihai Eminescu avnd toate titlul Poezii, dar aprute la date diferite.
O entitate (de exemplu: Angajai, avnd atributele Nume, IniialaTatlui,
Prenume, Adres, Funcie, CodDepartament, Salariu, DataAngajrii) poate avea
mai multe atribute care pot juca rolul de identificator unic; de exemplu:
Nume, Prenume, Adres;
Nume, Prenume, IniialaTatlui, Adres;
Nume, Prenume, Funcie, CodDepartament;
Nume, Prenume, Adres, Funcie, CodDepartament.
Toate aceste combinaii de atribute se numesc chei candidate. Prima
combinaie ndeplinete condiia de minimalitate (pe care a doua nu o poate
satisface). Ca atare, dintre cele dou, numai aceasta poate constitui un
identificator unic sau o cheie primar pentru entitatea Angajai, n timp ce a
doua este numai o cheie candidat. Acelai lucru este valabil i pentru a treia i
a patra combinaie de atribute, ca i pentru prima i a patra combinaie de
atribute.
La alegerea cheia candidate inem cont de urmtoarele:
compus din cel mai mic numr de atribute;
compus din atribute ale cror valori nu sunt susceptibile de modificri
n viitor;
care nu este susceptibil s-i piard unicitatea n viitor;
care are valorile cele mai mici (cuvintele cele mai scurte, numerele cu
cel mai mic numr de cifre etc);
care este cel mai uor de utilizat.
51
o cadrul didactic are mai multe adrese. Motivul: ntr-o baz de date corect proiectat
(normalizat) un atribut nu poate lua simultan mai multe valori pentru aceeai instan
a unei entiti;
o structura adresei (localitate, strad, sectorul/judeul etc.) este important ( exemplu,
trebuie s extragem din baza de date cadrele didactice care loc iese ntr-o anumit
localitate sau ntr-un anumit sector din Bucureti). Motivul: valorile atributelor sunt
atomice.
Este indicat modelarea prin atribut n oricare dintre situaiile complementare (o singur
adres, tratarea adresei ca un tot unitar).
52
3.3 Relaii
3.3.1 Definiie
Ori de cte ori un atribut al unei entiti se refer la alt entitate din baza
de date se stabilete, de fapt, o relaie ntre cele dou entiti (de exemplu,
atributul Destinaie al entitii Trenuri se refer la oraul ctre care circul un
tren, indicnd astfel o relaie ntre entitatea Trenuri i entitatea Orae). Cnd
proiectm baza de date, aceste referiri nu ar trebui s fie reprezentate ca atribute
ale entitilor, ci ca relaii (att n sensul real, ct i n sensul matematic al
cuvntului) ntre entiti. Atributele prin care se stabilete aceast relaie se
numesc chei sau cmpuri de legtur.
Relaie ntr-o baz de date = o legtur logic ntre dou sau mai multe entiti.
S considerm dou entiti E1 i E2; dup cardinalitate (sau tip), relaiile dintre cele dou
entiti pot fi :
o 1-1 (one-to-one): o relaie ntre dou entiti E1 i E2 n care unei instane a entitii
E 1 i corespunde o singura instan din entitatea E2 i reciproc.
o 1 - m (one-to-many): o relaie ntre dou entiti E1 i E2 n care unei instane a
entitii E1 (numit entitate dominant) i pot corespunde mai multe instane din
entitatea E2 (dar unei instane din E2 nu-i poate corespunde dect cel mult o
instan din E1).
53
o n - m (many-to-many): o relaie ntre dou entiti E1 i E2 n care unei instane a
entitii E 1 i pot corespunde mai multe instane din entitatea E2 i, reciproc, unei
instane din entitatea E2 i pot corespunde mai multe instane din entitatea E1.
11
Modelul entitate-relaie a fost descries de Chen n 1976 i perfecionat ulterior.
54
Tabelul 3.2 i Tabelul 3.3 prezint conveniile de reprezentare grafic (n diagramele ER)
a entitilor, atributelor i relaiilor din modelul conceptual al unei baze de date relaionale.
Observaie.
Entitile i atributele sunt denumite prin substantive; relaiile dintre entiti sunt
denumite prin verbe precedate sau urmate de prepoziii; exist situaii n care ordinea
entitilor aflate n relaie este important (atunci avem, de fapt, dou relaii care trebuie
citite de la stnga la dreapta, respectiv de la dreapta la stnga) i situaii n care ordinea nu
este important.
Numele date entitilor, respectiv relaiilor, trebuie s fie unice la nivelul bazei de
date. Numele atributelor trebuie s fie unice numai la nivelul aceleiai entiti; eventualele
confuzii la nivelul bazei de date se rezolv prin cuplarea numelui atributului cu numele
entitii. Este totui indicat- pentru simplificarea referirilor- ca numele atributelor care
constituie cheile primare s fie unice la nivelul bazei de date.
Reprezentare grafic
Entitate principal dreptunghi simplu
Entitate dependent dreptunghi dublu
Atribut elips
Atribut cu valori multiple elips dubl
Atribut derivat elips punctat
Cheie primar elips i subliniere cu linie continu
Cheie extern elips i subliniere cu linie punctat
Relaie romb
55
Figura 3.1 Diagrama entitate-relaie
56
3.5 Modelul relaional: fundamentarea teoretic
Fie mulimile Marca = {Dacia, Ford, Fiat, Audi, Opel, Volvo}, Tip = {benzin,
motorin}, CapacCil = {1100, 1200, 1300, 1400, 1600}, NrLoc = {4,5}, NrUi = {2, 4,
5}. Atunci, entitatea Automobil poate fi reprezentat ca o relaie peste aceste mulimi:
Automobil Marca x Tip x CapacCil x NrLoc x NrUi
Iat cteva instane ale acestei entiti:
(Dacia, benzin, 1400, 5, 4), (Dacia, motorin, 1400, 5, 4), (Dacia, benzin, 1100, 5, 4),
(Dacia, motorin, 1400, 5. 5), (Ford, motorin, 1400, 5, 5), (Ford, benzin, 1600, 5, 4),
(Fiat, benzin. 1300, 5, 4), (Fiat, benzin, 1100, 5,4), (Audi, motorin, 1600, 5, 4), (Opel,
benzin, 1400, 5, 5), (Volvo, benzin, 1400, 5, 5), (Volvo, motorin, 1600, 5, 4).
12
Ideea i aparine lui D.F.Childs care a publicat n 1968 o lucrare n care a artat c orice
structur de date poate fi reprezentat sub form de tabele n interiorul creia trebuie s existe i
informaie de legtur (Lungu, et al, 1995).
13
O concepie greit, larg rspndit, este aceea c modelul relaional i-ar fi preluat numele de
la faptul c ntre tabelele unei baze de date relaionale exist relaii.
57
Pentru simplitatea reprezentrii, entitile nu sunt reprezentate ca mulimi de tupluri
(ca n exemplul nostru de mai sus), ci ca tabele (tabelul 3.4), tot aa cum n loc s notm
cu <(3,5) instana relaiei de ordine < N X N dintre naturale 3 i 5, scriem 3 < 5.
Puterea i elegana modelului relaional sunt date de faptul c relaiile dintre entiti
conduc la asocieri ce pot fi reprezentate tot prin tabele.
Conform modelului relaional avem urmtoarele:
o Orice entitate este reprezentat printr-o tabel; numele entitii devine
numele tabelei.
o Oricrui atribut al unei entiti i corespunde o coloan (numit i
cmp) n tabela corespunztoare entitii; numele atributului devine
antetul coloanei respective din tabel.
o Orice instan a unei entiti este reprezentat printr-un rnd n tabel
asociat entitii, numit nregistrare; fiecare celul din nregistrare
conine valoarea luat de atributul corespunztor pentru instana
respectiv.
58
3.5.2 Stabilirea relaiilor ntre entiti
59
Relaii 1-m
Fie dou entiti U i V (de exemplu: Pacieni i Programri) avnd atributele
a1, (cheie primar), a2, ... , an i respectiv b1(cheie primar), b2, ... , bm, ap (de
exemplu: codPacient, numepren, datanaterii, adresa, telefon, nrSerieCI, CNP,
respectiv nrProgramare, dataprogramare, oraprogramare, codpacient). Prin
cheie extern nelegem un atribut al entitii V a crui mulime de valori
coincide cu mulimea valorilor cheii primare din entitatea U (aici: atributul
codPacient este cheie primar pentru entitatea Pacieni i cheie extern pentru
entitatea Programri).
Observaii:
60
Pentru a stabili o relaie (numit Areprogramare) de 1-m ntre entitile Pacieni
i Programri procedm astfel:
1. includem n descrierea ambelor entiti un acelai atribut (aici:
CodPacient);
2. definim acest atribut drept cheie primar pentru entitatea principal i
cheie extern pentru entitatea secundar.
Relaii n-m
n acest caz, ne bazm pe faptul c n modelul relaional nu numai entitile, ci
i relaiile dintre ele sunt relaii n sens matematic i, ca urmare, pot fi
reprezentate prin tabele.
S considerm baza de date a unei faculti care conine cel puin entitile Curs
(IdCurs, denumire) i Student (NrMatricol, nume, prenume, grupa). Evident un
student poate s se nscrie la mai multe cursuri, iar la un curs pot participa mai
muli studeni.Avem de-a face cu o relaie n-m, numit CerereiOfert.
Pentru a o relaie n-m ntre dou entiti (aici CerereiOfert ntre entitile
Curs i Student) procedm astfel:
1. identificm cheile externe - dou atribute care s corespund atributelor
care funcioneaz drept chei primare pentru cele dou entiti (aici:
IdCurs i NrMatricol);
2. definim o entitate nou, CursStudent descris prin cele dou atribute;
aceast entitate este numit si entitate intersecie.
3. reducem astfel stabilirea unei relaii n-m (aici: relaia dintre Curs i
Student) la stabilirea a dou relaii 1-m (aici: relaiile dintre Curs i
CursStudent, i respectiv dintre Student i CursStudent (figurile 3.6 i
3.7).
Figura 3.6 prezint diagrama entitate pentru o relaie n-m, iar figura 3.7 prezint
implementarea acesteia n Access.
61
Figura 3.6. Diagrama entitate pentru o relaie n-m
62
3.6 Reguli de integritate pentru bazele de date relaionale
63
3.6.2 Integritatea entitilor
Exemplu
Fie baza de date cu tabele Pacieni (codPacient, numepren, datanaterii, adresa,
telefon, nrSerieCI, CNP) i Programri (nrProgramare, dataprogramare,
oraprogramare, codpacient) aflate n relaie 1-m (Figura 3.8). Regula de
integritate referenial nu permite s nregistrm datele personale ale unui
pacient i s-l includem ntr-o list de programri care nu exist" (adic s dm
atributului su Codpacient - cheie extern pentru entitatea Programri - o
valoare pe care nu a luat-o atributul CodPacient -cheie primar pentru entitatea
Pacieni-pentru niciuna dintre instanele entitii).
64
Figura 3.8 Stabilirea integritii refereniale n Access
65
3.7 Implementarea modelului conceptual
Regulile ce se pot extrage studiu de caz pot fi descrise prin elemente ale
modelului conceptual: atribute, identificatori unici, relaii ntre entiti.
Trecerea de la modelul conceptual la modelul fizic se face prin
implementarea ntr-un SGBD (Microsoft Access n aceast carte) a elementelor
specifice reprezentate simbolic n Figura 3.9.
Tabelele sunt formate din linii i coloane. Fiecare coloan reine date de anumit
tip i corespunde unui atribut al entitii; numele atributului devine antetul
coloanei.
Un rnd din tabel corespunde unui element al entitii (instan) i se
num nregistrare. Aceasta descrie complet proprietile unei instane. Dac ne
imaginm un tabel sub forma unei grile asemntoare unei foi de calcul tabelar,
coloanele verticale din gril sunt coloanele tabelului, iar rndurile orizontale
reprezint rndurile tabelului.
66
O cheie primar este reprezentat de o coloan sau o combinaie de
coloane ale cror valori sunt unice la nivelul tabelei i sunt completate
obligatoriu. Cheile primare provin din identificatorii unici ai entitii.
O relaie dintre dou entiti va fi transformat ntr-o coloan cheie
strin.
O constrngere de integritate implementeaz o regul referitoare la o
coloan sau la ntregul tabel. Constrngerile de integritate pot fi stocate n baza
de date, ca parte a definiiei tabelului.
Crearea unei tabele se realizeaz n dou etape:
a) n prima etap, se stabilete structura tabelei, specificndu-se numele
cmpurilor, lungimile acestora, precum i tipul informaiilor care vor fi
introduse n fiecare cmp;
b) n a doua etap, se ncarc efectiv datele n tabel.
67
3.8 Rezumatul capitolului
Modelul relaional a fost fundamentat n anul 197014 de E.F.Codd i este
azi cel mai folosit model de baze de date n gestiunea bazelor de date. Acest
model este fundamentat pe dou ramuri ale matematicii teoria mulimilor i
logica predicatelor de ordinul nti.
Noiunile fundamentale ale modelului relaional sunt: relaie, domeniu,
atribut, tuplu i schem relaional.
Conform modelului relaional avem urmtoarele:
o Orice entitate este reprezentat printr-o tabel; numele entitii devine
numele tabelei.
o Oricrui atribut al unei entiti i corespunde o coloan (numit i
cmp) n tabela corespunztoare entitii; numele atributului devine
antetul coloanei respective din tabel.
o Orice instan a unei entiti este reprezentat printr-un rnd n tabel
asociat entitii, numit nregistrare; fiecare celul din nregistrare
conine valoarea luat de atributul corespunztor pentru instana
respectiv.
Relaia ntr-o baz de date este o legtur logic ntre dou sau mai multe
entiti.
La proiectarea bazei de date, relaiile dintre entiti trebuie definite n mod
efectiv i pot fi de urmtoarele tipuri: 1-1, 1-m, n-m.
Dup modelarea bazei de date la nivel structural (definirea entitilor,
atributelor lor i a relaiilor dintre ele), urmeaz nivelul operaional al modelrii:
stabilirea tipurilor de operaii care se pot efectua asupra datelor stocate
(sortare, cutare, vizualizare, adugare, tergere, modificare etc.);
verificarea respectrii regulilor de integritate (ceea ce va asigura
corectitudinea i consistena datelor).
Distingem urmtoarele tipuri de reguli de integritate:
14
Ideea i aparine lui D.F.Childs care a publicat n 1968 o lucrare n care a artat c orice
structur de date poate fi reprezentat sub form de tabele n interiorul creia trebuie s existe i
informaie de legtur (Lungu, et al, 1995).
68
reguli de integritate a entitilor;
reguli de integritate referenial.
La acestea se adaug i regulile de integritate impuse de situaia real modelat
prin baza de date, numite restricii procedurale.
Prima regul de integritate se aplic cheilor primare (cheia sa primar nu
poate lua valoarea NULL pentru nici o instan a entitii).
A doua regul de integritate se aplic cheilor externe (pentru orice
instan a entitii secundare, valoarea cheii externe trebuie s corespund
valorii cheii primare a unei instane oarecare a entitii principale sau s fie
NULL.
69
3.9 ntrebri de auto-evaluare
I) Entiti disjuncte; entiti dependente.
a) Fie baza de date a unei faculti i entitile Persoane, CadreDidactice,
Studeni, PersonalAdministrativ. Identificai entitile disjuncte. n ce
situaie se afl entitile Persoane, CadreDidactice i
PersonalAdministrativ?
b) Fie baza de date a unui club dotat cu sli de gimnastic, saloane de
cosmetic, solare i saun. Identificai entitile disjuncte, subentitile,
precum i entitile principale i cele dependente.
II) Entiti, atribute i chei primare
a) Dai exemple de instane ale entitii Studeni.
b) Dai exemple de valori ale atributului Vitez al entitii Microprocesor.
c) Descriei atributele urmtoarelor entiti i identificai un atribut/grup de
atribute cu proprietatea de identificator unic: (i) persoan; (ii) abonat
telefonic; (iii) automobil; (iv) calculator.
III) Exemple de relaii: grad i cardinaliti
Dai exemple de relaii binare din baza de date a unui club sportiv.
Dai exemple de relaii 1-1, 1-m i n-m din baza de date a unui spital.
70
5.Modelul conceptual al unei baze de date poate fi reprezentat:
a) printr-o schem logic;
b) printr-o diagram relaionat;
c) printr-o schem conceptual sau printr-o diagram entitate-relaie.
V) Reguli de integritate
1.Principalele reguli de integritate pentru bazele de date se refer la:
a) entiti i relaii;
b) entiti i atribute;
c) entiti i chei primare;
d) atribute i relaii.
2. Regula de integritate a entitilor interzice unui atribut care face parte din
cheia primar a unei entiti:
a) s ia valoarea 0;
b) s ia valoarea 1;
c) s ia valoarea NULL;
d) s ia oricare dintre valorile 0, 1 sau NULL.
3. Integritatea referenial se refer la valorile luate de:
a) fiecare dintre cheile candidat ale entitii principale;
b) fiecare dintre cheile candidat ale entitii dependente;
c) cheia primar;
d) cheia extern.
71
72
CAPITOLUL 4
NORMALIZAREA BAZELOR DE DATE
4.1. Introducere
Dac datele sunt simple, ele pot fi organizate ntr-un tabel simplu. O baz de
date simpl poate fi ntreinut chiar i cu ajutorul unui procesor de texte sau a
unei aplicaii cu foi de calcul tabelar. Pentru a lucra cu un tabel simplu nu sunt
necesare cunotine despre teoria bazelor de date. De exemplu o list de
contacte Figura 1. Fiecare coloan de date (nume, adres, numr de telefon)
este logic legat de celelalte.
Bazele de date din viaa real conin adeseori sute de mii sau chiar milioane de
nregistrri, datele fiind legate instrinsec ntre ele.
73
invariante ale liniilor care compun relaia i este relativ constant n timp.
Atributul este o caracteristic a obiectului reprezentat ntr-o relaie.15
Dup cum se poate vedea din figura 2, redundana excesiv poate determina un
proiectant de baze de date s evite folosirea unei singure relaii. n afara
redundanei, mai exist trei probleme importante legate de acest tip de
organizare:
Anomalia la modificare: pentru a modifica adresa furnizorului Pop Ion
este necesar modificarea fiecrui rnd care conine acea adres. Dac o
nregistrare nu este modificat, apare anomalia la modificare, rezultnd
o relaie care conine inexactiti.
Anomalia la inserare: dac se dorete adugarea unui nou furnizor, dar
nu exist nici o factur a acestuia sau nici un detaliu despre produsele
facturate, se poate aduga un rnd nou, iar n cmpurile n care
informaiile nu sunt disponibile se va plasa valoarea NULL (o valoare
15
Hurbean L., Dnia D., Negovan A.-M. Baze de date: de la teorie la practic utiliznd
Access 2007, Editura Mirton, Timioara, 2008, p.84
16
Giulvezan C., Mircea G., Trnveanu D. Baze de date: Teorie i practic. Access, VBA i
SQL, Editura Universitii de Vest, Timioara, 2009, p. 15
74
care indic o valoarea necunoscut sau care lipsete). Aceasta cauzeaz
aa-numita anomalie la inserare.
Anomalia la tergere: n contradicie cu problema precedent, dac se
dorete tergerea tuturor apariiilor furnizorului Pop Ion, automat vor fi
terse toate informaiile legate de produsele livrate i facturile pe care
acesta apare. Aceasta constituie anomalia la tergere.
4.3 Dependene
17
Tama I. (coord.), Stanciu V., Gheorghe M. Access 2007 Proiectare i realizare pas cu pas,
Editura Infomega, Bucureti, 2010, p.23
75
unde nrmatr este determinantul, iar numeprenstudent este determinatul.
Alte exemple:
nr_f cod_furn
cod_p unit_masura
unde nr_f este numrul facturii, cod_furn este codul furnizorului, iar cod_p este
codul de bare al produsului, unit_masura fiind unitatea de msur a produsului.
Observaie: ntre cmpul de tip cheie primar al unei relaii i celelalte
cmpuri ale relaiei exist dependene funcionale.
18
Hurbean L., Dnia D., Negovan A.-M. Baze de date: de la teorie la practic utiliznd
Access 2007, Editura Mirton, Timioara, 2008, p.55
19
Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p.41
20
Hurbean L., Dnia D., Negovan A.-M. Baze de date: de la teorie la practic utiliznd
Access 2007, Editura Mirton, Timioara, 2008, p.56
76
Exemple de dependene funcionale compuse:
(nr_f, cod_p) pret_unitar
21
Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p.41
22
Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p.41
77
4.3.2 Dependene funcionale directe i tranzitive
Fiecare banc are mai multe agenii, fiecare agenie are propria adres.
Definiie: O dependen funcional direct este acea dependen AB
pentru care nu exist dependene tranzitive ACB.
23
Tama I. (coord.), Stanciu V., Gheorghe M. Access 2007 Proiectare i realizare pas cu pas,
Editura Infomega, Bucureti, 2010, p.24
24
Hurbean L., Dnia D., Negovan A.-M. Baze de date: de la teorie la practic utiliznd
Access 2007, Editura Mirton, Timioara, 2008, p.84
78
Definiie: Se consider relaia R(A,B,C), unde A, B i C sunt atribute ale
acesteia (simple sau compuse). Fie ai,bi i ci valorile atributelor A, B i C.
Spunem c exist o dependen funcional multivaloare a atributului C
fa de B, notat B C dac pentru orice valori a 1, a2, b, c1, c2 i a1a2 i
c1c2, astfel nct tuplurile (a1,b,c1) i (a2,b,c2) fac parte din relaia R, atunci
i tuplurile (a1,b,c2) i (a2,b,c1) fac parte din relaia R.
79
4.3.5 Dependene jonciune
Fie relaia R(A1, A2, ... An) i X1, X2,..., Xm, m subansambluri de atribute din R.
25
Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p.44
80
4.3.6 Matricea dependenelor funcionale
Exemplu:
Se dorete informatizarea unei pri din activitatea unei firme. Furnizorii sunt
identificai prin cod furnizor, denumire furnizor (numele i prenumele
furnizorului), localitatea, adresa, email, banca furnizor i cont furnizor. Despre
produse se cunosc cod produs, denumire produs, unitate de msur, stoc, pre
unitar. Produsele sunt depozitate n magazii, pentru care se cunosc cod
magazie, denumire magazie, gestionar (numele persoanei care are n gestiune
depozitul respectiv). Operaiunile se desfoar pe baza unor facturi, care
trebuie s conin numrul facturii i data facturii. Fiecare factur conine
detaliate liniile facturii i anume denumirea produsului, preul unitar, cantitatea
facturat, calculndu-se valoarea produsului (cu i fr TVA) i valoarea total
a facturii (cu i fr TVA).
26
Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p.44, p.57
81
Rezolvare:
1. Inventarierea atributelor
Pe baza analizei rezult urmtoarele atribute: cod_f (cod furnizor), den_f
(denumire furnizor), localit (localitatea furnizorului), adresa, email, banca, cont,
nr_f (numrul facturii), data_f (data facturii), nr_crt (numrul curent asociat
fiecrui produs de pe factur), cod_p (codul produsului), cantit (cantitatea
facturat), val_f_TVA (valoarea produsului fr TVA), val_c_TVA (valoarea
produsului cu TVA), val_totala_f_TVA (valoarea total a facturii fr TVA),
val_totala_c_TVA (valoarea total a facturii cu TVA), TVA (TVA-ul din
valoarea produsului), cotaTVA (valoarea cotei TVA), den_p (denumirea
produsului), um (unitatea de msur a produsului), stoc (stocul din produsul
respectiv), pret_u (preul unitar facturat al produsului), cod_m (codul magaziei
n care este depozitat), den_m (denumirea magaziei) i gestionar (numele
gestionarului).
Algoritmi de calcul
Val_f_tva = cantit*pret_u
TVA=cantit*pret_u*cotaTVA
Val_c_TVA=Val_f_TVA+TVA
Val_totala_f_TVA=
Val_totala_c_TVA=
82
Graful dependenelor funcionale multiple
cod_f nr_f
cod_m cod_p cod_p cod_m
nr_f cod_p cod_p nr_f
6. Atribute izolate: cantit, cotaTVA i pre_u sunt determinate de un grup
de atribute dup cum urmeaz:
83
9. Matricea dependenelor funcionale
Prin linie continu se simbolizeaz cheile primare, iar prin linie ntrerupt,
cheile strine.
84
4.4 Forme normale
O relaie se afl n forma normal 1 (FN1) dac toate atributele sale sunt
atomice (nu se mai pot descompune) i nerepetitive.
Pentru aducerea relaiilor n FN1 se parcurg urmtorii pai:
atributele compuse sunt nlocuite cu atribute complete;
pentru grupurile de atribute repetitive, se formeaz o alt relaie;
cheia primar a noii relaii va fi compus din cheia primar a primei
relaii i din atributele adiionale din noua relaie. Cheia primar a noii
relaii va fi cheie extern.
O relaie nu este n FN1 dac are cmpuri care conin valori care pot fi
descompuse n mai multe cmpuri (cum ar fi adresa) sau valori redundante
figura 5.
27
Ionescu F. Baze de date relaionale i aplicaii, Editura Tehnic, Bucureti, 2004, p.187
28
Hurbean L., Dnia D., Negovan A.-M. Baze de date: de la teorie la practic utiliznd
Access 2007, Editura Mirton, Timioara, 2008, p.60
85
De exemplu:
O relaie se afl n forma normal 2 (FN2) dac respect FN1 i orice atribut
non-cheie este complet dependent de cheia primar a relaiei. FN2 interzice
existena dependenelor funcionale pariale ntre atributele cu rol de cheie
primar i celelalte atribute.
Pentru aducerea relaiilor din FN1 n FN2 se parcurg urmtorii pai:
se identific dependenele funcionale pariale;
acestea vor genera o nou relaie, avnd ca structur atributele
participante n dependena funcional parial;
atributele determinante devin chei externe n relaiile iniiale i chei
primare n relaiile nou create.
86
Fig. 6 Relaia FacturiProduse nu respect FN2
87
4.4.3 Forma normal 3
O relaie este n forma normal 3 (FN3) dac respect FN2 i toate atributele
non-cheie sunt dependente direct de cheia primar. Altfel spus, FN3 interzice
dependenele tranzitive.
O relaie care nu respect FN3 prezint anomalii la tergere, inserare i
modificare, precum i redundane pentru atributele determinate funcional
tranzitiv.
Pentru aducerea unei relaii FN2 n FN3, se parcurg urmtorii pai:
se identific dependenele funcionale tranzitive;
determinantul non-cheie mpreun cu atributul sau atributele
determinate funcional de ctre acestea, vor forma o nou relaie;
determinantul non-cheie devine cheie primar n relaia nou format i
cheie extern n relaia iniial.
88
4.5 Concluzii
29
Hurbean L., Dnia D., Negovan A.-M. Baze de date: de la teorie la practic utiliznd
Access 2007, Editura Mirton, Timioara, 2008, p.85
89
4.7 ntrebri de autoevaluare din partea teoretic
90
4.8 Exemple
Rezolvare
1. Inventarierea atributelor
Pe baza analizei rezult urmtoarele atribute: codcl, numepren, cnp, serieci,
nrci, dataelibci, adresa, serie_nrcec, dataelibcec, titularcec, codtipcec, tipcec,
termen, coddep, datadep, sumadep, codrest, datarest, sumarest, codlich,
datalich, sumalich, datadob, dobanda.
2. Specificarea regulilor de gestiune
un client poate avea mai multe cecuri, un cec poate avea mai muli
titulari (clieni);
pe un cec se pot face mai multe depuneri;
pe un cec se pot face mai multe restituiri;
un cec poate fi lichidat doar o singur dat;
mai multe cecuri sunt de acelai tip.
91
termen, coddep, datadep, sumadep, codrest, datarest, sumarest, codlich,
datalich, sumalich, datadob, dobanda.
92
8. Graful dependenelor funcionale
93
9. Definitivarea modelului relaional:
Clienti (codcl, numepren, cnp, serieci, nrci, dataelibcl, adresa)
TipuriCecuri (codtip, tipcec, termen)
Cecuri (serie_nrcec, dataelibcec, codtip)
CecuriClienti (codcl, serie_nrcec)
Depuneri (coddep, datadep, sumadep, serie_nrcec)
Restituiri (codrest, datarest, sumarest, serie_nrcec)
Lichidari (codlich, datalich, sumalich, serie_nrcec)
Dobanzi (codtip, datadob, dobanda)
30
Stanciu A. (coord.), Mihai F, Mangiuc D, et al Baze de date Access 2007: studii de caz,
Editura Infomega Bucureti, 2009, p. 28
94
care se memoreaz un cod unic i denumirea serviciului. Indiferent de
denumirea serviciului, se impune specificarea rii destinaie identificat prin
cod i denumire; pentru ara de destinaie se precizeaz localitatea destinaie,
pentru care se reine codul i numele.
Pentru ca s fie ct mai atractiv, agenia ofer anumite reduceri n funcie de
vsrta turitilor, astfel pentru turitii cu vrsta mai mic sau egal cu 12 ani, se
acord o reducere de 40% din tariful standard aferent fiecrui serviciu, iar copii
care nu au mplinit nc 12 ani beneficiaz de gratuitate.
Fiecare prestator de servicii se identific printr-un cod unic, denumire, numrul
de telefon, categoria n care se ncadreaz (companie aerian, firm de transport
terestru, unitate cazare).
Pentru serviciile prestate, agenia ncheie un contract de care pot beneficia mai
muli turiti (de exemplu, o familie). n cadrul contractului, pe lng numrul i
data ncheierii acestuia, se precizeaz turistul/turitii beneficiar(i), clauzele
contractuale (drepturile/obligaiile prilor contractuale), avansul, data pn la
care se poate achita valoarea integral a contractului, tariful standard aferent
serviciului respectiv, data plecrii i data sosirii. Dac turistul renun din vina
sa la serviciile care fac obiectul respectivului contract, el datoreaz ageniei
despgubiri difereniate n funcie de momentul renunrii (mai exact, numrul
de zile nainte de data plecrii).
31
Stanciu A. (coord.), Mihai F, Mangiuc D, et al Baze de date Access 2007: studii de caz,
Editura Infomega Bucureti, 2009, p. 111
95
depuneri de numerar la banc. Operaiile sunt grupate pe categorii n funcie de
sursa acestora, reinndu-se pentru fiecare operaie codul categoriei, denumirea
acesteia i tipul. Principalele categorii de operaii sunt tax cursani, ridicare
numerar banc, aport capital, achitare drepturi salariale, avans spre decontare,
cumprare bunuri, depunere de numerar la banc, la care pot fi adugate ulterior
(n timpul exploatrii bazei de date) i alte pli sau ncasri.
O categorie special de operaii o reprezint avansurile spre decontare. Acestea
trebuie justificate prin intermediul unor documente n cadrul deconturilor de
cheltuieli. Pentru fiecare decont de cheltuieli este necesar reinerea numrului
i datei acestuia, a documentelor (numr, data, suma, tip) ce justific cheltuirea
avansului precum i a datelor titularului avansului. Pot s beneficieze de
avansuri spre decontare salariaii firmei. Datele fiecrui salariat (nume, data
naterii, adresa) vor fi nregistrate n cadrul bazei de date o singur dat, acesta
fiind identificat cu ajutorul mrcii. Avansul neutilizat este restituit la casierie pe
baza documentului de ncasare. Documentele justificative pentru avansuri se
vor scana i se vor arhiva.
32
Nstase P., Coscescu L., Covrig L., et al Tehnologia bazelor de date Access 2000, Editura
Economic, Bucureti, 2000, p. 351
96
CAPITOLUL 5
ELEMENTE INTRODUCTIVE N ACCESS
5.1 Introducere
33
Tama I. (coord.), Stanciu V., Gheorghe M. Access 2007 Proiectare i realizare pas cu pas,
Editura Infomega, Bucureti, 2010, p.7
97
este necesar regruparea datelor din diverse tabele ntr-un singur loc cu
ajutorul unor interogri complexe;
baza de date este accesat de mai muli utilizatori (se poate beneficia de
mecanismele de modificare furnizate de baza de date).
Este recomandat utilizarea Microsoft Excel dac:
sunt suficiente tabelele simple, fr relaii ntre ele;
se doresc efectuarea de calculi i comparaii statistice;
setul de date nu depete 15000 de nregistrri.
Primul lucru care se poate observa la deschiderea Microsoft Access este noua
interfa grafic prietenoas cu utilizatorul (GUI Graphical User Interface),
folosit att de Access ct i de toat gama de produse Office 2007.
De pe bara de meniuri evideniem:
pagina Home (Views, Clipboard, Font, Rich Text, Records,
Sort&Filter, Find) pagina principal Access, conine funcii de
editri de baz cum ar fi Cut i Paste, mpreun cu marea majoritate a
opiunilor de formatare;
pagina Create (Tables, Forms, Reports, Other) grupeaz toate
opiunile de creare;
pagina External Data (Import, Export, Collect Data, SharePoint
Lists) conine toate operaiile care faciliteaz colaborarea i schimbul
de date;
pagina Database tools (Macro, Show/Hyde, Analyze, Move Data,
Database Tools) coloana vertebral a Access-ului. Aici se pot crea
sau menine relaiile dintre tabele, se analizeaz performanele fiierului
i se execut rutine de ntreinere.
Fereastra Access Options furnizeaz acces rapid la aproape toate opiunile care
pot fi configurabile n Access. Dintre acestea vom evidenia urmtoarele
opiuni:
Popular: opiunile cele mai populare printre utilizatori (selectate de
Microsoft);
Current Database: opiuni care afecteaz baza de date curent, de
exemplu, opiuni pentru adugarea unui titlu sau a unei icoane,
selectarea unui formular care s apar la deschiderea aplicaiei,
dezactivarea opiunii Layout view, i o opiune util programatorilor,
activarea sau dezactivarea panoului de navigare (Navigation Pane). n
98
cadrul acestei opiuni, utilizatorii pot crea o panglic special i o pot
folosi n locul celei predefinite;
Datasheet: opiuni de formatare pentru Datasheet View. Utiliznd
aceast opiune, se poate selecta tipul literelor folosite, afiarea liniilor
de ghidaj pe formulare i setarea efectelor implicite ale celulelor;
Object Designers: opiuni care pot fi setate i afecteaz modul n care
uneltele de design sunt configurate n Access. Opiunile sunt grupate
astfel: Table Design, Query Design, Form Design, Error Checking;
Proofing: include opiuni legate de verificri gramaticale cum ar fi:
spell checking, grammar checking, i auto correction;
Advanced: opiuni care pot fi setate i care controleaz modul n care
Access interacioneaz cu datele i utilizatorul cu aplicaiile. Sunt
disponibile urmtoarele grupuri de opiuni: Editing, Display, Printing,
General, Advanced;
Customization: utile pentru a aduga sau terge opiuni de pe panglic.
Add-Ins: o list a utilitarelor add-ins disponibile pentru Access;
Trust Center: acceseaz Trust Center. Muli utilizatori seteaz nivelul
de securitate la nivelul minim pentru a evita mesajele care apar atunci
cnd se deschide o baz de date care conine o macrocomand.
Microsoft recomand pstrarea nivelului de securitate la valoarea
implicit, i anume funcionalitate deplin. n Trust Center sunt
disponibile dou opiuni: Show the message bar in all applications
when content has been blocked i Never show information about
blocked content.
Resources: conine link-uri ctre resurse online care asist utilizatorul
care lucrez cu Access. Sunt disponibile linkuri la pagina Office,
diagnostice interactive Office 2007, help online i actualizri de
software.
Exist multe opiuni, controale i unelte disponibile pentru a ajuta la
modificarea programului i a aplicaiei fr a fi necesare cunotine de
programare.
99
Fig. 1 Deschiderea mediului de lucru Microsoft Access 2007
100
n partea din dreapta a ecranului sunt vizibile link-uri ctre ultimele fiiere de
tip baz de date utilizate. n cazul nchiderii accidentale a bazei de date, aceasta
poate fi deschis rapid selectnd primul link din lista Open Recent Database.
Pentru a crea o baz de date vid se alege butonul Blank Database figura 2.
Folosind icoana de folder din partea din dreapta a ecranului se alege locaia
unde va fi salvat baza de date, se tasteaz numele dorit, apoi se apas butonul
Create figura 4.
101
Odat cu crearea unei baze de date vide, Microsoft Access creaz o nou tabel
n care s fie salvate datele. Aceasta poarta numele implicit Table1 i este
deschis n Datasheet View (mod de vizualizare care permite afiarea datelor
din tabel). Pentru a crea o tabel n acest mod de vizualizare se poate studia
problema rezolvat 5.13.1.
Pentru a parola baza de date, aceasta trebuie s fie deschis exclusiv. Pentru
aceasta, se nchide baza de date folosind butonul Office, opiunea Close
Database figura 5.
Pentru a uura accesul la anumite butoane se poate folosi bara de acces rapid.
Pentru a afia mai multe butoane pe aceasta (n cazul de fa butonul Open) se
apas sgeata din partea dreapt a barei, selectndu-se comanda Open. Butonul
Open va fi afiat pe bara de acces rapid. Analog se pot selecta alte butoane
pentru a fi afiate pe bara de acces rapid. Dac acestea nu sunt afiate implicit,
se pot cuta utiliznd comanda More Commands.
102
Fig. 6 Adugarea butonului Open pe bara de acces rapid
Pentru a deschide exclusiv baza de date creat anterior se apas butonul Open
de pe bara de acces rapid figura 7.
103
Fig. 9 Parolarea bazei de date
Protejarea bazei de date este vizibil doar la deschiderea acesteia, deci pentru a
verifica acest lucru se nchide i se deschide din nou baza de date. Pentru a
elimina parola setat la deschiderea bazei de date, aceasta trebuie deschis
exclusiv, selectndu-se mai apoi opiunea Decrypt Database figura 10.
n cazul n care panoul de navigare este ascuns, acesta poate fi afiat selectnd
sgeile laterale figura 11.
104
Afiarea sau ascunderea panglicii (Ribbon) poate fi controlat folosind
opiunea Minimize the Ribbon de pe bara de acces rapid figura 12.
105
milkshake-urilor consumate n fiecare zi n trei tabele separate. O tabel
este containerul n care sunt stocate datele. Restul obiectelor permit
manipularea datelor stocate n tabele. Construirea tabelelor Access se
poate rezuma la dou activiti principale: crearea structurii tabelei (n
modul de vizualizare Design View) i popularea tabelului cu date fie
n Datasheet View, prin intermediul formularelor sau a instruciunilor
SQL;
Interogri (Queries): sunt structuri care permit efectuarea unei aciuni
rapide asupra unei tabele sau mai multor tabele. Aceste aciuni implic
de obicei obinerea unei informaii necesare (de exemplu, cumprturile
efectuate pe parcursul unei zile cu cardul de credit), sau aplicarea unor
modificri. Interogrile sunt obiecte virtuale de tip tabel care nu au
corespondent fizic, fiind definite cu ajutorul tabelelor create deja n
baza de date. Ele permit efectuarea seleciilor i sortrilor n tabele, a
calculelor simple i analizelor ncruciate, a aciunilor (crearea unui nou
tabel, adugarea, tergerea sau actualizarea nregistrrilor) sau execuia
unor comenzi SQL.
Formulare (Forms) sunt ferestre atractive folosite pentru a consulta
sau actualiza datele dintr-un tabel sau o interogare. Ele permit totodat
crearea unui meniu interactiv construit de ctre utilizator, furniznd i o
facilitate special pentru aceasta (Switchboard). Pe un formular pot fi
plasate butoane care pot ncorpora comenzi SQL;
Rapoarte (Reports) sunt utilizate pentru a tipri unele sau toate
informaiile din tabele sau interogri. Permit gruparea i sortarea
datelor, adugarea unor cmpuri calculate, numere de pagin, etc;
Macrocomenzi (Macros) mini-programe care automatizeaz
sarcinile curente. Macrocomenzile sunt formate dintr-o suit de aciuni;
Module (Modules) fiiere care conin cod Visual Basic Application.
VBA este un mediu de programare orientat obiect. Se pot defini
variabile, constante, funcii i proceduri globale ntregii aplicaii sau
asociate unui anumit obiect. Cu ajutorul acestor coduri se poate executa
aproape orice.
106
Un cmp este o unitate elementar sau o categorie cum ar fi titlurile crilor sau
numerele de telefon. Un cmp nu conine n mod necesar o valoare. De
exemplu, un cmp numit e-mail poate rmne necompletat dac furnizorul nu
deine o adres de e-mail. O nregistrare este un set complet de date (cmpuri)
care se refer la o persoan, loc, eveniment, idee. De exemplu, pentru un
profesor numrul matricol, numele, prezena i nota final compun o
nregistrare. O tabel, fundaia oricrei baze de date, este o colecie de
nregistrri care au legtur unele cu altele, i conine cmpuri pentru a organiza
datele.
O coloan reprezint un cmp, o linie reprezint o nregistrare. Fiecare
nregistrare conine aceleai cmpuri n aceeai ordine. Fiierul profesorului cu
prezenele studenilor este o tabel care conine nregistrri despre toi studenii
avnd o structur comun. O baz de date const n una sau mai multe tabele i
obiectele suport care permit introducerea datelor, prelucrarea i extragerea lor
din tabele.
valoarea cmpului
baza de date
nregistrare
tabel
nregistrare
valoare
107
Codul produsului este cheie primar n tabela produse. Cheia primar poate
conine numere, litere, sau o combinaie a acestora.
Puterea bazelor de date relaionale st n abilitatea SGBD-ului de a organiza
datele i a le recombina pentru a obine o imagine complet a evenimentelor
descrise. Un design eficient a bazelor de date conecteaz datele din diferite
tabele sub forma unui sistem de legturi.
Legtura dintre tabele este ca un fir electric care traverseaz baza de date
conectnd tabelele astfel nct s permit obinerea rspunsului la cererea
utilizatorului (figura 15). Odat identificat rspunsul, cmpurile i nregistrrile
sunt rearanjate astfel nct s poate fi nelese cu uurin de ctre utilizator.
Captul de nceput al firului este creat odat cu setarea cheii primare ntr-unul
dintre tabele. Cellalt capt la firului este legat de un cmp dintr-un alt tabel.
Acel cmp poart numele de cheie strin. De exemplu cmpul cod_f (cod
furnizor) din tabela furnizori este un cmp de tip cheie strin.
Definiie: O cheie strin este un cmp dintr-o tabel, care ntr-o alt
tabel este cheie primar.
Dup cum se poate observa din figura 15, chiar i n relaia normalizat nc
mai exist redundane. De exemplu, codul produsului (cod_p) apare n mai
multe tabele. De fapt nu pot fi eliminate toate cmpurile duplicate i n acelai
timp meninute legturile dintre tabele. Acest tip de redundan (cheie primar-
cheie strin) poart numele de redundan necesar.
Orice legtur dintre dou tabele poat fi ntrit utilizndu-se regulile de
integritate referenial. Integritatea sugereaz ncredere. Atunci cnd regulile de
integritate sunt stabilite, utilizatorul poate avea ncredere n firul care leag
tabelele bazei de date, fiind pstrat acurateea datelor.
Regulile de tip cascad permit ca modificrile datelor s se perpetueze dintr-o
tabel n alta figura 16.
108
Definiie: Regula Cascade Update Related Records va fi setat n cazul
n care dac o valoare a cmpului pe care este setat cheia primar este
modificat, atunci toate valorile corespunztoare din tabela referit sunt
modificate automat cu aceeai valoare. Regula Cascade Delete Related
Records va fi setat n cazul n care dac o valoare din tabela de referin
este tears prin tergerea nregistrrii care o conine, atunci toate
nregistrrile din tabela referit care conin acea valoare referit vor fi
automat terse.
Legturile dintre tabele n Microsoft Access 2007 sunt de mai multe tipuri:
One-to-Many (unu-la-mai-muli) aceast legtur se creaz ntre o
cheie primar dintr-un tabel i o cheie strin din alt tabel. n prima
tabel exist o singur nregistrare care conine o valoare a cmpului de
tip cheie primar. n cea de-a doua tabel exist mai multe nregistrri
care conin n cmpul comun aceeai valoare a cmpului comun.
One-to-One (unu-la-unu) se creaz ntre dou tabele care au aceeai
cheie primar sau un cmp de tip cheie primar n prima tabel i un
cmp cheie strin pe care este setat un index Unique din a doua tabel.
n acest caz n ambele tabele exist o singur nregistrare cu valoarea
cmpului comun identic. Acest tip de relaie se folosete foarte rar, n
special datorit necesitii meninerii securitii datelor din tabele.
Many-to-Many (mai-muli-la-mai-muli) acest tip de relaie este
construit artificial (nu exist n Access) i corespunde mai multor
valori ale cmpului comun din ambele tabele. n acest caz este necesar
construirea unui nou tabel numit tabel de jonciune.
ntr-o baz de date bine definit, relaia de tip one-to-many este cel mai frecvent
ntlnit.
109
Atunci cnd se proiecteaz o tabel este important cunoaterea operaiilor de
baz care pot fi efectuate cu cmpurile acesteia:
pentru adugarea unui nou cmp ntre alte cmpuri existente se
poziioneaz cursorul pe cmpul deasupra cruia se dorete adugarea
unui nou cmp, se apeleaz meniul contextual (clic cu butonul din
dreapta al mouse-ului) i se alege opiunea Insert Rows;
mutarea unui cmp un cmp poate fi mutat folosind drag-and-drop,
selectndu-se ptratul gri din stnga numelui cmpului i
repoziionndu-se cmpul n poziia dorit;
tergerea unui cmp se apeleaz meniul contextual al ptratului gri
din stnga numelui cmpului i se selecteaz Delete Rows. De reinut
faptul c odat cu tergerea unui cmp se terg toate datele depozitate
n acel cmp, aciunea nefiind reversibil, de aceea Access afieaz un
mesaj pentru a preveni eventualele tergeri accidentale.
Fiecare cmp are un nume (Field Name) cu ajutorul cruia sunt identificate
datele introduse n acel cmp. Numele cmpului trebuie s fie descriptiv pentru
datele coninute i poate conine maxim 64 de caractere incluznd litere, cifre i
spaii. Este interzis utilizarea caracterelor ., !, [, i ], iar numele cmpului nu
poate ncepe cu cu spaiu.
Fiecare cmp este definit ca fiind de un anumit tip (Data Type), care determin
valorile care pot fi introduse i operaiile care pot fi efectuate cu datele. Access
recunoate 10 tipuri de date:
Text date alfanumerice cele mai multe caractere care se afl pe
tastatur (incluznd numere), cu limita maxim de 255 de caractere.
Cmpurile care conin doar numere care nu sunt folosite pentru a
efectua calcule ar trebui setate ca fiind de tip Text (numere de
telefon, coduri potale, numrul crii de identitate, numrul de
paaport);
Number conine o valoare care poate fi folosit n calcule, ca de
exemplu numrul creditelor pe care le are un student. Coninutul
cmpului de tip Number este restricionat la numere, virgula zecimal i
simbolurile + i -:
Byte numere ntre 1 i 255 (ocup 1 byte);
Integer numere n intervalul [-32768,+32757] (ocup 2 bytes);
Long Integer [-2147483648,+2147483647] (ocup 4 bytes);
Single numere reprezentate n simpl precizie:
[-3.40*1038,3.40*1038] (ocup 4 bytes i are precizie de 7
zecimale);
110
Double numere reprezentate n dubl precizie, [-1.797*10308,
1.797*10308] (ocup 8 bytes i are precizie de 15 zecimale);
Replication ID GUID (Global Unique IDentifier) identificator
unic global, (ocup 16 bytes) este folosit pentru un cmp care
este sau compun un cmp de tip cheie strin corespondentul
unui cmp de tip cheie primar Autonumber;
Decimal [-1028, 1028] (ocup 12 bytes i implicit are o precizie
de 18 zecimale care poate s creasc pn la 28 de zecimale).
Memo blocuri mari de text de lungime maxim 65536 caractere.
Cmpurile de tip Memo sunt utilizate pentru a pstra date descriptive
(propoziii, paragrafe). Lungimea maxim este de is 2 GB.
Date/Time conine date calendaristice formatate, ore, sau ambele,
permind calcule aritmetice cu acestea. Anii din datele calendaristice
sunt n intervalul dintre anii 100 i 9999. Datele sunt salvate sub form
de numr pe 8 bytes, cu dubl precizie;
Currency numere cu 4 zecimale urmate de simbolul monetar, cu care
pot fi efecuate calcule. Ocup 8 bytes i sunt utilizate pentru calcule
financiare, dac nu se dorete rotunjirea valorilor;
AutoNumber un numr care este incrementat automat pentru fiecare
nregistrare. Valoarea unui cmp de tip Autonumber este unic pentru
fiecare nregistrare din tabel, de aceea tipul Autonumber se utilizez n
mod frecvent ca tip de date al unui cmp cheie primar. Numrtoarea
poate fi secvenial sau ntmpltoare (random). Valoarea acestuia nu
poate fi modificat i ocup 4 bytes;
Yes/No permite alegerea unei valori din 2 posibile, o informaie
discret care poate avea doar dou valori cum ar fi: True/False, Yes/No,
On/Off, (ocup 1 byte);
OLE Object conine un obiect creat cu o alt aplicaie, cum ar fi
Microsoft Excel, Microsoft Word sau poze. Dimensiunea maxim a
fiierului este de 2GB, dar baza de date este ncetinit considerabil prin
nglobarea obiectelor externe;
Hyperlink utilizat pentru a stoca adrese Web (URL Uniform
Resource Locators). Toate fiierele din suita Office permit faciliti
Web dac se selecteaz un link, automat este afiat pagina Web
asociat (1 GB);
Attachment cel mai nou tip de date introdus doar n MS Access
2007, permite ataarea mai multo obiecte create cu alte aplicaii.
Mrete flexibilitatea bazei de date prin utilizarea technicilor OLE
(Object Linking and Embedding=Legare i ncorporare de Obiecte);
111
Lookup Wizard este utilizat pentru valori care vor fi completate
selectnd o valoare dintr-o caset combinat. Nu este un tip de date
propriu-zis, ci un program utilitar care creaz relaii cu tabela printe
sau o list definit de utilizator.
112
Decimal Places specific numrul de zecimale. Valoare predefinit
este Auto sunt afiate toate zecimalele rezultate n urma calculelor,
dar nu mai mult de 15 zecimale;
Format modific modul de afiare al valorii unui cmp, dar nu
afecteaz valoarea stocat;
pentru unele tipuri de date cum ar fi Number, Date/Time i
Yes/No se poate alege formatul dorit dintr-o list;
pentru cmpuri de tip Number pot fi afiate valori pozitive,
negative, zero sau valoarea Null folosind caractere speciale (0,
#, $, %, E+, E-, e+, e-);
pentru cmpuri de tip Date/Time: se utilizeaz urmtoarele
caractere (d zi ntre 1 i 31, dd zi ntre 01 i 31, ddd
primele 3 litere n englez din numele zilei (de exemplu, Mon
de la Monday pentru ziua de Luni), dddd numele ntreg al
zilei, etc);
pentru cmpuri de tip Text:
! dac se introduc numere;
< litere mici; > majuscule;
text textul va aprea exact cum este scris: text;
@ creaz grupuri de numere: @@@@-@@@-@@@
cum ar fi 0744-256-56.
Input Mask faciliteaz introducerea datelor afind caractere care nu
sunt stocate, cum ar fi caracterul slash ntr-o dat calendaristic (/). De
asemenea, asigur validarea datelor pentru a corespunde formatului ales
(de exemplu, previne introducerea unei cifre n plus sau n minus n
cazul unui numr de telefon);
0 o cifr obligatorie ntre 0 i 9;
9 o cifr opional ntre 0 i 9;
A o liter sau o cifr obligatorie;
a o liter sau o cifr opional;
# o cifr opional ntre 0 i 9 sau un spaiu opional;
& orice caracter sau spaiu;
C un caracter opional sau un spaiu
L o liter obligatorie de la A la Z;
? o liter opional de la A la Z;
> litere care vor fi transformate n majuscule;
< litere care vor fi transformate n majuscule.
Cnd ambele proprieti sunt setate, (Format i Input Mask),
Format este cea impus (are prioritate).
113
Caption specific o etichet diferit fa de numele cmpului, care va
fi afiat n DataSheet View n capul de tabel, pe formulare i rapoarte.
Lungimea maxim a valorii introduse n Caption este 2084 caractere.
Valoarea proprietii Caption nu are nici o semnificaie n cadrul
interogrilor sau cnd se utilizeaz cod n Visual Basic Application;
Default value introduce automat o valoare predefinit pentru cmpul
respectiv atunci cnd o nou nregistrare este inserat ntr-un tabel. De
exemplu, dac foarte muli dintre studeni sunt nscui n Timioara,
valoarea proprietii Default Value poate fi modificat n Timioara;
Validation Rule respinge orice nregistrare pentru care valoarea
introdus n cmpul respectiv nu respect regula stabilit. Expresia
poate fi tastat n interiorul casetei de text, sau se poate selecta butonul
pentru a deschide fereastra Expression Builder. Aceast
proprietate nu poate fi folosit pentru tipuri de date cum ar fi:
Autonumber, OLE Object, Attachment, Number cu sub-tipul
Replication ID. Pentru a construi o regul de validare pot fi folosite
funcii Access, operatori i constante. Numele cmpului trebuie s apar
ntre paranteze drepte, de exemplu [cod produs]. Exemple de reguli de
validare:
>200 and <=400 pentru un cmp numeric;
<>NULL, IS NOT NULL pentru orice fel de cmp;
Timisoara pentru un cmp de tip Text;
>=#03/12/2011# pentru o dat calendaristic;
>=Date() pentru o dat calendaristic;
Year([data factura])=Year(Date()) unde fucia Year extrage
anul dintr-o dat calendaristic (n acet caz cmpul data
facturii), iar funcia Date() extrage data curent;
Validation Text specific mesajul de eroare care va fi afiat n cazul
n care regula de validare nu este respectat;
Required dac este setat pe Yes, respinge orice nregistrare care nu
conine o valoare n cmpul respectiv; valoarea predefinit este No;
Allow Zero Length dac este setat pe Yes, permite irul de lungime
zero n cazul cmpurilor de tip text sau memo; valoarea predefinit este
No;
Indexed mrete eficacitatea cutrilor n acel cmp (cmpul pe care
este setat cheia primar este ntotdeauna indexat):
No nu este setat nici un index;
Yes (No Duplicates) este setat un index care nu permite
duplicarea valorilor, ca n cazul CNP-ului, de exemplu. Este
valoarea care apare atunci cnd se seteaz cheia primar;
114
Yes (Duplicates Ok) este setat un index care permite duplicarea
valorilor, ca n cazul numelui pacientului, de exemplu.
Indecii mai pot fi definii i prin intermediul butonului Indexes de pe
panglic figura 17. Se poate seta numele indexului (Index Name),
cmpul pe care acesta va fi setat (Index Field), i ordinea de sortare
(Sort Order), specificndu-se pentru fiecare index tipul acestuia:
Primary (dac se dorete crearea unui index de tip Primary Key),
Unique (crearea unor chei candidate cu valori unice) sau Ignore Null
(crearea unui index care ignor valorile Null).
115
grafic asociat modului de vizualizare Pivot Table View. Pentru a trece de la un
mod de vizualizare la altul, se poate utiliza fie butonul View de pe panglic,
opiunea de meniu Home, fie butonul corespunztor de pe bara de stare (Status
bar). O tabel poate fi deschis din panoul de navigare direct n modul de
vizualizare dorit apelndu-se meniul contextual al tabelei i selectndu-se
modul de vizualizare dorit.
Interogarea este un obiect ce permite vizualizarea informaiilor din una sau mai
multe tabele pe baza unor criterii de selecie. Microsoft Access prevede o
interfa prietenoas cu utilizatorul, de tip QBE (Query By Example) pentru a
construi o interogare. Rezultatul unei interogri este o foaie de rspuns
dinamic care poart numele de Dynaset. Aceasta este volatil (dispare odat cu
nchiderea interogrii).
Cu ajutorul unei interogri pot fi grupate datele din mai multe tabele, pe baza
leagturilor create ntre ele, pot fi create noi cmpuri calculate, dar pot fi
efectuate i urmtoarele aciuni: crearea unui nou tabel, adugarea nregistrrilor
din alt tabel, modificarea valorii cmpurilor sau tergerea nregistrrilor.
Interogrile se creaz de obicei n modul de vizualizare Query Design. Pentru a
vedea rezultatul interogrii, se trece n modul de vizualizare Datasheet View
sau se apas butonul Run de pe panglic, opiunea de meniu Design. O alt
modalitate de a crea o interogare este folosind modul de vizualizare SQL View.
Aceast metod necesit cunotine de SQL (Structured QueryLanguage)
detaliate n capitolul urmtor.
116
5.4.1. Interogri de selecie
117
Dintre operatorii folosii n construirea expresiilor de pe linia Criteria
amintim: + (adunare), - (scdere), * (nmulire), / (mprire), MOD (restul
mpririi a dou numere), ^ (ridicarea la putere, de exemplu x 2 se scrie x^2), &
(concatenare a dou iruri de caractere), = (verific egalitatea a dou valori), <>
(operatorul diferit, de exemplu ), < (strict mai mic), > (strict mai mare), <= (mai
mic sau egal), >= (mai mare sau egal), LIKE (format general LIKE masca, de
exemplu nume LIKE A* se vor afia toate numele care ncep cu A, indiferent
din cte caractere, dar LIKE A?? va afia doar numele care ncepe cu A i are
lungimea de trei caractere), IN (formatul general IN (list de valori), de
exemplu condiia: sex IN (m,f) sau [tip client] IN (persoana
fizica,persoana juridica)), BETWEEN (format general Between Val_minim
AND Val_maxim, de exemplu, dac se dorete afiarea studenilor cu note
ntre 9 i 10 se va utiliza condiia BETWEEN 9 AND 10), NOT (negaie), AND
(conjuncie), OR (disjuncie), NOT NULL (va afia toate nregistrrile care nu
au valori introduse n acel cmp), Date() (returneaz data curent), MONTH
(afieaz luna dintr-o dat calendaristic, de exemplu MONTH(#27.12.2011#)
va returna valoarea 12), YEAR (afieaz anul dintr-o dat calendaristic, de
exemplu YEAR(#21.11.2011#) va returna valoarea 2011), IIF (cu formatul
general IIF (condiie, val_dac_adevarat, val_daca_fals), de exemplu dac se
dorete afiarea situaiei bursierilor: pentru studeni care au media peste 9,50 se
va afia burs de merit, celor ntre 8 i 9,50 burs de studiu iar celorlai nimic,
se va scrie urmtoarea condiie: IIF ([media]>9,5; bursa de merit; IIF([media]
BETWEEN 8 AND 9,50;Bursa de studiu;)) ) i multe altele. Simbolul ; care
desparte argumentele funciei depinde de setrile regionale. Setrile regionale
utilizate n cadrul aceszui capitol sunt cele corespunztoare Romniei (Control
Panel, Clock Language and Region, Change Location, pagina Location, Current
Location: Romania). Data calendaristic este astfel formatat ca dd.mm.yyyy,
iar punctul zecimal este simbolul virgul. n cazul n care este selectat o alt
locaie, att separatorul care desparte argumentele funciei, simbolul zecimal,
formatul Currency ct i formatele Date/Time sunt modificate n consecin.
118
Interogri cu parametru
n cazul interogrilor de selecie se pot utiliza parametrii. Dac se dorete citirea
interactiv de la tastatur a unei valori a unui cmp, n vederea verificrii unui
criteriu i a afirii datelor din tabel/tabele, pe linia Criteria se introduce ntre
paranteze drepte un text, de exemplu [Introduceti data facturii]. Acest text va fi
interpretat ca un parametru, construindu-se automat pentru acest parametru o
caset de introducere a valorii. Va fi evaluat valoarea citit de la tastatur, se
verific egalitatea cu valorile din cmpul pe care este plasat parametrul, i
anumte [data facturii], i sunt afiate nregistrrile care verific condiia [data
facturii]=valoarea introdus de la tastatur.
119
5.4.3 Interogri de aciune
Interogrile care creaz o nou tabel sunt utilizate de obicei pentru a obine un
tabel unic cu date din mai multe tabele legate ntre ele.
Pentru a crea o interogare de tip Make Table se parcurg urmtorii pai:
1. se creaz o interogare n Design View;
2. se selecteaz sursa datelor (din fereastra Show Table, dublu-clic pe
numele tabelelor, acestea fiind legate ntre ele), apoi se nchide fereastra
Show Table;
3. se selecteaz cmpurile dorite, se ordoneaz datele, se adug condiii;
4. se verific trecnd n Datasheet View rezultatul dorit, apoi se revine n
Design View;
5. se transform interogarea de selecie ntr-una de aciune selectndu-se
butonul Make Table de pe panglic. n fereastra Make Table se va
tasta numele noului tabel care va fi creat figura 19;
6. se va salva interogarea:
7. se execut interogarea prin apsarea butonului Run de pe panglic.
Observaie: Dac se dorete deschiderea interogrii pentru modificare, se
apeleaz meniul contextual ataat interogrii din panoul de navigare, apoi se
alege Design View. De fiecare dat cnd interogarea este apelat, tabela este
rescris.
120
Fig. 19 Interogare de tip Make Table
121
Observaie: Dac se dorete deschiderea interogrii pentru modificare, se
apeleaz meniul contextual ataat interogrii din panoul de navigare, apoi se
alege Design View. De fiecare dat cnd interogarea este apelat, valoarea
cmpului este modificat.
Interogrile de acest tip permit adugarea unor nregistrri din alte tabele care
au n componen cmpuri de acelai tip.
Pentru a crea o interogarea de tip Append se parcurg urmtorii pai:
1. se creaz o interogare n Design View;
2. se selecteaz sursa datelor tabelul surs, de unde se dorete transferul
datelor n cellalt tabel (din fereastra Show Table, dublu-clic pe numele
tabelelor, acestea fiind legate ntre ele), apoi se nchide fereastra Show
Table;
3. se selecteaz cmpurile care se doresc a fi trimise ntr-o alt tabel. n
acea tabel vor trebui s existe cmpuri de acelai tip cu cele selectate
la acest pas;
4. se selecteaz o ordine de sortare a nregistrrilor i/sau se completeaz
liniile Criteria i Or (dac este cazul);
5. se verific trecnd n Datasheet View rezultatul dorit, apoi se revine n
Design View;
6. se transform interogarea de selecie ntr-una de aciune selectndu-se
butonul Append To. Se selecteaz numele tabelei destinaie. Se
observ adugarea unei noi linii n fereastra QBE, cu numele Append
To. Dac numele cmpurilor din cele dou tabele difer, celula
corespunztoare din tabela destinaie, de pe linia Append to, va rmne
necompletat. Ea poate fi completat utilizndu-se caseta combinat,
alegnd numele cmpului dorit din tabela destinaie;
7. se salveaz interogarea;
8. se execut interogarea prin apsarea butonului Run de pe panglic.
Aceeai observaie este valabil ca i la interogarea de tip Update. Totodat,
icoana asociat acestui tip de interogare este diferit de celelalte.
122
5.4.3.4 Interogri pentru tergerea nregistrrilor (DELETE)
Observaie: n cazul tergerii nregistrrilor din mai multe tabele, aceasta poate
fi mpiedicat datorit setrii regulilor de integritate referenial (dac n
fereastra Relationship, fiind selectat legtura dintre tabele, este selectat
caseta Enforce Referential Integrity iar Cascade Delete Related Records nu
este bifat).
123
nelegate: destinate crerii unui meniu, afirii unor mesaje, informaii
despre sistem, etc.
Dac tabelul este tabel de referin pentru un singur tabel, atunci Access va crea
automat un formular cu subformular, afind n subformular doar acele
nregistrri din tabela referit care verific condiia ca valoarea cheie strin
este egal cu valoarea afiat n cmpul cheie primar din tabela de referin
afiat n formular. Pentru tabela de referin layout-ul formularului este
Columnar (este afiat o singur nregistrare la un moment dat), iar pentru sub-
124
formular layout-ul este Tabular (sunt afiate toate nregistrrile care verific
condiia de legtur) figura 21. Totodat cmpul cheie strin (din tabelul
referit) este ascuns (nu este necesar afiarea aceluiai cmp de mai multe ori n
cadrul unui formular).
Se observ c pentru fiecare formular apare cte o bar de navigare Record.
Cea mai de jos este pentru datele din tabelul de referin (printe), cea din
interior va fi pentru datele din tabelul referit (copil). Pentru a naviga prin
nregistrri se utilizez bara corespunztoarelor formularului creat pentru tabelul
de referin.
125
Fig. 22 Selectarea butonului Form Wizard
Pentru a crea un formular utiliznd Form Wizard trebuie parcuri urmtorii pai:
se selecteaz sursa datelor numele tabelului sau a interogrii pe baza
cruia se dorete crearea formularului i a cmpurilor care se dorete s
apar pe formular figura 23, apoi se apas butonul Next;
126
se alege stilul (combinaiile de culori i obiectele grafice de pe
formular) figura 25, apoi se apas butonul Next;
127
Orice formular conine urmtoarele zone figura 28:
Form Header antetul formularului, utilizat pentru afiarea unui titlu,
sigla unei companii, data ntocmirii;
Detail zona n care sunt amplasate controalele corespunztoare
nregistrrilor din tabelul sau interogarea surs;
Form Footer: subsolul formularului, utilizat pentru comentarii,
semnturi, numrul paginii, butoane de comand.
128
2. de pe panglic, opiunea de meniu Design, se selecteaz butonul
3. se selecteaz butonul Add Existing Fields iar din fereastra Field List
se execut dublu-clic pe numele cmpurilor care se dorete s apar pe
formular figura 31. Acestea vor aprea pe formular n zona de Detail
a formularului;
129
Dintre cele mai des utilizate controale amintim:
Label (etichete) control cu un coninut fix, corespunztor
constantelor, utilizat pentru afiarea unor comentarii, titluri, mesaje.
Access genereaz automat cte o etichet pentru majoritatea
controalelor definite de utilizator. De obicei ele sunt plasate n stnga
controlului pe care l nsoete. Toate etichetele vor fi salvate cu nume
care ncep cu prefixul de 3 litere lbl (label). Pentru fiecare control de tip
etichet se vor modifica proprietile Name i Caption. Proprietatea
Caption controleaz textul care va apare pe formular figura 33.
130
Caption, iar pentru caseta de text se vor modifica proprietile Name i
Control Source (dac nu este deja completat);
Dup ce s-a ales categoria, se alege aciunea din partea dreapt. n cazul de fa,
s-au ales operaiile cu formulare pentru c se dorete crearea unui buton care s
nchid forma, de aceea a fost selectat aciunea Close Form. Se trece cu Next
la pasul urmtor.
131
Se va alege opiunea Text specificndu-se textul care se dorete s apar pe
buton: nchidere figura 36, apoi se apas butonul Next.
132
Pe un formular pot fi plasate controale care s afieze valori calculate. Pentru a
crea un control calculat, se parcurg urmtorii pai:
1. se selecteaz butonul Text box de pe panglic, apoi execut clic n zona
Detail, sub controalele existente;
2. se modific proprietile Name i Caption ale etichetei;
3. se modific proprietatea Name a casetei de text;
4. n cadrul proprietii Control Source se tasteaz formula de calcul,
ncepnd cu semnul =. Numele cmpurilor sunt scrise ntre paranteze
drepte, de exemplu: =[valoare fara TVA]*1,24.
133
5.6 Obiecte Reports
Varianta cea mai simpl de creare a rapoartelor este Report Wizard. Dac se
dorete afiarea datelor din mai multe tabele, poate fi creat o nou tabel pe
baza unei interogri, raportul fiind construit pe baza acesteia. Dac se dorete
afiarea unor cmpuri calculate, acestea pot fi create cu ajutorul unei interogri,
raportul fiind creat pe baza interogrii.
134
Fig. 39 Selectarea sursei raportului
3. Se pot aduga unul sau mai multe niveluri de grupare selectnd numele
cmpului din partea din stnga. Se folosesc butoanele cu sgei pentru a
selecta cmpul/cmpurile ca nivel de grupare. Pot fi adugate pn la 10
niveluri de grupare figura 40.
135
4. se poate stabili o ordine de afiare a nregistrrilor n cadrul raportului,
sortnd pn la 4 cmpuri simultan figura 42, apoi se apas butonul
Next figura;
136
7. la ultimul pas se alege titlul raportului i vizualizarea acestuia n modul
Preview figura 45, apoi se apas butonul Finish.
137
Fig. 48 Raport n Design View
Pentru cmpurile numerice care conin valori multiple n cadrul aceluiai grup,
la pasul 4 se va afia un buton n plus, denumit Summary Options figura 49.
138
Fig. 51 Raport cu grupare i subtotaluri la nivel de grup i raport
Pe orice raport pot fi create casete de text care pot fi calculate dup modelul
prezentat n paragraful 5.5.3. Pentru a aduga o funcie totalizatoare (de
exemplu, calcularea valorii totale a tuturor facturilor, n zona Report Footer se
va aduga o caset de text. Se vor modifica proprietile Name i Caption
corespunztoare etichetei. Se va modifica proprietatea Name asociat casetei de
text. n cadrul proprietii Control Source asociat casetei de text se va tasta
formula =SUM([cantitate]*[pret]*1,24)). Din cadrul proprietii Format
asociat casetei de text se va alege opiunea Currency, pentru afiarea
simbolului valutar.
Obiectele de tip Macro sunt un instrument util atunci cnd se dorete execuia
unor aciuni i evitarea programrii. Ele automatizeaz operaiunile din cadrul
unei baze de date Access. Obiectele de tip Macro pot fi ncorporate n cadrul
unui formular, depinznd de obiectul n care este plasat, sau pot fi autonome,
fiind apelabile de oriunde.
n cadrul unui obiect de tip Macro pot fi selectate mai multe aciuni, acestea
fiind alese dintr-o list i executate n ordinea n care au fost create.
O macrocomand se execut folosindu-se butonul Run (ca i n cazul
interogrilor de aciune).
Cu ajutorul macrocomenzilor pot fi create meniuri personalizate pentru a
nlocui panglica (Ribbon-ul).
Pentru a crea o macrocomand se selecteaz opiunea de meniu Create, iar din
zona Other, Macro. De exemplu, dac se dorete crearea unei macrocomenzi
139
care s deschid o interogarea n mod Read-Only se vor parcurge urmtorii
pai:
n coloana Action se alege dintr-o list de aciuni predefinite, Open
Query;
n partea de jos a ecranului se selecteaz Query Name (numele
interogrii);
se selecteaz modul de vizualizare n care va fi deschis interogarea (n
cazul de fa Datasheet);
n caseta Data Mode se alege Read-Only.
140
5.8 Obiecte Modules
5.9 Concluzii
141
5.11 ntrebri de autoevaluare din partea teoretic
142
5.12 Exemple
Rezolvare
Se va crea o baz de date cu numele Exemplul 1, salvat pe Desktop. Odat cu
crearea bazei de date, Access creaz automat o tabel cu numele care va conine
un cmp ID (identificator) de tip Autonumber, care va fi cheia primar a
tabelei.
143
Fig. 54. Meniul Datasheet, caseta Data type
Se poate selecta fiecare cmp pentru a se verifica formatul dorit. n cazul n care
valoarea care a fost introdus nu corespunde cu valorile care trebuie introduse n
cadrul acestui cmp, valoarea existent este pierdut.
n cazul cmpului data naterii acesta trebuie s fie de tip Date/time, adresa de
tip memo (texte mai mari de 255 de caractere), casatorit un cmp de tip Yes/No.
Formatul clasic de afiare fiind un check-box (caset de opiune) care poate fi
bifat sau nu, corespunztor celor dou valori posibile.
144
Pentru a introduce o fotografie n cmpul omonim, se selecteaz celula
corespunztoare, se selecteaz meniul contextual, apoi opiunea Insert Object.
Sunt disponibile dou opiuni Create New sau Create from File. n acest caz
vom presupune faptul c fotografia exist deja, deci alegem a doua opiune.
Tehnologia OLE (Object Linking and Embedding) legare i ncorporare de
obiecte, permite nglobarea obiectului n tabel, deci n baza de date, sau, dac se
selecteaz opiunea Link, crearea unei legturi ctre obiectul respectiv, fr ca
acesta s fie ncorporat n tabel.
145
Modul de vizualizare utilizat se observ de pe bara de stare Datasheet View.
Pentru a trece de la un mod de vizualizare la altul se pot utiliza butoanele de pe
bara de stare: Datasheet View, PivotTable View, PivotChart View sau
Design View. Modul de vizualizare Datasheet View se utilizeaz n general
pentru a vizualiza datele din tabel, iar modul Design View se utilizeaz pentru
a modifica proprietile structurii tabelei. Opiunile PivotTable View i
PivotChart View permit crearea unui tabel, respectiv a unui grafic pivot.
146
Tabelul va fi automat deschis n modul de vizualizare Datasheet View. Pentru a
trece la modul de vizualizare special pentru modificarea proprietilor tabelului
se selecteaz butonul Design View de pe bara de stare figura 63.
Modul uzual de lucru pentru crearea unei tabele este n modul de vizualizare
Design View, acesta permind setarea unor valori implicite, reguli de validare,
moduri de afiare a datelor n cmp, etc.
147
5.12.2 Problem rezolvat Tabele create n Design View
Rezolvare
n urma analizei datelor i a aplicrii metodei matricii dependenelor funcionale
din capitolul anterior, se obine urmtoarea schem a bazei de date:
148
n modul de vizualizare Design View, fie folosind butonul View de pe panglic,
fie butonul cu acelai nume de pe bara de stare.
Dup ce toate cmpurile au fost create, se salveaz tabela alegnd butonul Save,
apoi se apas sgeata de pe butonul View, de unde se alege Datasheet View
figura 66, pentru a introduce datele a trei furnizori n tabel figura 67.
149
Dup ce tabela a fost creat i s-au introdus nregistrri n ea, aceasta va fi
nchis.
150
Tabela ProduseMagazii:
cod_p (cod produs) un cmp de tip Lookup Wizard pentru care se
selecteaz opiunea I want the lookup column to lookup the values in
a table or query, apoi se alege tabela Produse, apoi se selecteaz
butonul Next; se alege cmpul cod_p, apoi se apas butonul Next
figura 69. Ordonarea va fi fcut dup acelai cmp cod_p, apoi se
alege butonul Next.
151
in a table or query, apoi se alege tabela Magazii; selectm cmpul
cod_m (cod magazie). Ca ordine de sortare se alege cod_m, se
vizualizeaz codurile magaziilor introduse n tabela Magazii, apoi se
las neschimbat numele cmpului i se apas Finish. Se cere din nou
salvarea tabele;
stoc (stocul disponibil n magazie) de tip Number, Field Size: Long
Integer, Caption: Stoc produs, Required: Yes.
Pentru a crea o cheie primar compus, se selecteaz utilizndu-se ptratul gri
din faa numelui cmpului ambele cmpuri cod_p i cod_m i se apas butonul
Primary Key de pe panglic. Se salvez tabela i se trece n modul de
vizualizare Datasheet View pentru a introduce date n tabel.
Pentru ca ambele relaii s fie de tipul one-to-many, se vor introduce minim 4
nregistrri, un produs fiind depozitat n dou magazii (de exemplu 111113).
Tabela Facturi este copilul tabelei Furnizori. Avnd 3 furnizori n tabela printe,
vom introduce minim 4 facturi, codul furnizorului 1 repetndu-se de 2 ori:
152
Tabela ProduseFacturate:
nr_f (numrul facturii) un cmp pentru care se alege Lookup Wizard,
se creaz a legtur cu tabela Facturi, cmpul nr_f; Caption: Numarul
facturii. Se salveaz tabela cu numele ProduseFacturate, iar la
ntrebarea dac se dorete alegerea unei chei primare se alege No;
nr_crt (numr curent) un cmp de tip Number, Field Size: Integer,
Caption: Numar curent;
cod_p (codul produsului) un cmp pentru care se selecteaz Lookup
Wizard, se creaz o legtur cu tabela Produse, pe baza cmpului
cmpul cod_p;
cantit un cmp de tip Number, Field Size: Integer, Caption: Cantitate;
pret_u un cmp de tip Currency, Caption: Pret unitar;
cotaTVA un cmp de tip Number, Field Size: Single, Default Value:
0,24, Caption: Cota TVA.
153
Pentru fiecare legtur n parte, se apeleaz meniul contextual, se alege opiunea
Edit Relationships... Pentru a seta regulile de integritate referenial se
selecteaz opiunea Enforce Referential Integrity, bifnd opiunea Cascade
Update Related Field. Dac se dorete modificarea tipului de relaie dintre cele
dou tabele, se selecteaz butonul Join Type..., alegnd una dintre cele trei
tipuri de relaii (Left Join, Inner Join sau Right Join).
154
specialitatea sa (cardiolog, ORL, etc). S se introduc 3 nregistrri n tabela
(tabelele) printe i numrul necesar de nregistrri n tabela (tabelele) copil.
1. S se afieze toi pacienii ordonai alfabetic dup nume.
2. S se creeze un formular de meniu care s conin 4 butoane de
comand: primul va deschide forma Pacieni cu subformularul
Programri, al doilea va deschide forma Programari (care va fi creat n
Design, modificnd culoarea fundalului), al treilea buton va deschide
forma Doctori (care va avea un titlu i o poza pe fundal), iar ultimul
buton permite nchiderea formei.
Rezolvare
n urma analizei problemei, s-a ajuns la urmtoarea structur a datelor:
155
2. Formularul de meniu va fi creat ultimul, acesta apelnd formularele
create anterior.
Pentru a crea primul formular cu subformular, vom selecta tabela printe
(Pacieni) din panoul de navigare i apsm butonul Form de pe panglic
(Ribbon), fiind selectat opiunea de meniu Create figura 79. Se observ c
dac au fost create relaiile dintre tabele, apelarea butonului Form nu creaz un
formular simplu, ci un formular pentru tabela printe cu un subformular
corespunztor tabelei copil. Formularul se va salva cu numele
PacientiProgramari. Dac se dorete vizualizarea formularului n Design
View, se folosete fie butonul View de pe panglic, opiunea de meniu Home,
opiunea Design View, fie butonul cu acelai nume de pe bara de stare. Se pot
observa 3 zone: Form Header, Detail i Form Footer.
156
Fig.80 Formular n Design View
157
Fig. 82 Adugarea controalelor pe formular
158
Pentru a aduga aduga o poz de fundal vom selecta butonul Property Sheet
de pe panglic. De la Selection type vom alege Form, apoi opiunea Picture.
Selectnd butonul cu trei puncte se va alege o poz pentru fundal. Dac este
nevoie, se va modifica culoarea textului etichetelor pentru a crea un contrast cu
fundalul. Pentru form se va selecta proprietatea Picture Size Mode i se vor
alege opiunea Stretch figura 84. Pentru a vizualiza formularul se va alege
opiune Form View. Se nchide formularul.
159
Fig. 85 Fereastra Command Button Wizard
Se alege categoria Form Operations, apoi aciunea Open Form, apoi se apas
butonul Next. Se alege formularul PacientiProgramari, apoi se apas Next. Se
va alege opiunea Open the form and show all the records, apoi se apas
butonul Next. Se selecteaz opiunea Text, modificnd textul n Forma
PacientiProgramari, apoi se apas butonul Next. Numele butonul va fi
cmdPacCons, apoi se apas Finish.
Analog se construiesc butoanele corespunztoare celorlalte dou formulare.
Pentru ultimul buton se va alege categoria Application, aciunea Quit
Application. Se va selecta pentru opiunea Text: Ieire, numele butonului fiind
cmdIeire.
Formularul va fi salvat cu numele Meniu Figura 86. Se va testa formularul
trecnd n Form View.
160
5.12.4 Problem rezolvat Formulare cu controale calculate,
Switchboard
161
printe se va alege un formular de tip Columnar, iar pentru tabela copil, un
formular de tip Tabular.
Pentru a crea primul formular, se alege opiunea de meniu Create, butonul
More forms... apoi Form Wizard. La primul pas se alege tabela Clienti,
selectndu-se toate cmpurile cu ajutorul butonului cu dou sgei, apoi se
apas Next figura 88. Aspectul (layout-ul) formularului va fi Columnar, apoi
se selecteaz butonul Next. Se alege un stil, apoi se apas Next. La ultimul pas
se apas doar butonul Finish. Se salveaz formularul cu numele Clienti.
162
Fig. 89 Formularul Clienti cu subformularul FiseTrans
163
Fig. 90 Crearea unui cmp calculat
Pentru a formata cele dou cutii de text create astfel nct s conin simbolul
valutar, n fereastra Property Sheet, se va selecta proprietatea Format de unde
se alege Currency. Formularul va fi salvat cu numele FiseTransport.
Pentru a aduga un buton de comand care va nchide formularul, se verific
dac este apsat butonul Use Control Wizard din opiunea de meniu Design
(de pe panglic). Dac este selectat, se alege butonul Button, apoi se execut un
clic pe formular, sub restul controalelor. Se alege categoria Forms, aciunea
Close Form, apoi se apas butonul Next. Se selecteaz opiunea Text unde se
tasteaz nchidere, apoi se apas butonul Next. Pentru a finaliza, se tasteaz
numele controlului, cmdInchidere, apoi se apas butonul Finish.
164
Fig. 91 Crearea celui de-al doilea formular
165
Fig. 93 Adugarea unui item pe primul formular
166
Fig. 95 Adugarea item-ului Intoarcere pe formularul Vizualizare formulare
Pentru a seta formularul ca fiind primul obiect care apare la deschiderea bazei
de date, se selecteaz butonul Office, se alege butonul Access Options, apoi
Current Database. Se poate alege un titlu pentru aplicaie, n caseta
Application Title: Transporturi, iar din lista Display Form se alege
Switchboard figura 97.
167
Fig. 97 Crearea unui titlu a aplicaiei i setarea formularului principal
168
8. S se afieze toate produsele care au preurile 50 i 1000 lei.
9. S se determine pentru fiecare factur valoarea total.
10. S se creeze un nou tabel pe baza tabelelor Facturi, Produse i
LiniiFact, rezultatul unei interogri, care s conin toate datele din
toate tabele, suprimnd apariia dublat a cmpurilor de legtur,
tabelul fiind ordonat alfabetic dup denumirea produselor.
Rezolvare:
1. Pentru a crea o interogare, de pe bara de meniuri se alege opiunea
Create, apoi Query Design. n fereastra Show table se vor selecta prin
dublu-clic tabelele Facturi, ProduseFacturate i Produse, apoi se
nchide fereastra. Pentru a alege cmpurile dorite, acestea se selecteaz
prin dublu-click. Sub coloana data_f, pe linia Criteria, se va introduce
=Date(). Se salveaz interogarea apsnd pe butonul Save (numele
interogrii fiind Facturi curente). Pentru a vizualiza rezultatul
interogrii, de pe butonul View se alege Datasheet View.
169
2. Pentru a crea a doua interogare, se alege de pe panglic opiunea de
meniu Create, apoi Query Design. Din tabela ProduseFacturate se
selecteaz cantitatea, preul i cotaTVA, iar din tabela Produse
denumirea produsului i unitatea de msur. Deci n fereastra Show
Tables, se vor alege ambele tabele, selectndu-se cmpurile respective.
Pe prima coloan liber se calculeaz TVA-ul dup urmtoarea formul
TVA: [cantit]*[pret_u]*[cotaTVA]
Pe urmtoarea coloan se calculeaz valoarea:
Valoare: [cant]*[pret_u]+[TVA]
Se salveaz i vizualizez rezultatul interogrii. Pentru a afia simbolul
valutar ntr-o anumit coloan din interogare (de exemplu pt. TVA), n
modul de vizualizare Design View se selecteaz coloana, se apeleaz
din meniul contextual opiunea Properties, iar la opiunea Format se
alege Currency. Analog se procedeaz i cu coloana Valoare.
170
4. Se selecteaz tabela Facturi, ProduseFacturate i Produse, cmpurile:
nr_f, data_f, den_p, pret_u i cantit:
171
Dac se trece n modul de vizualizare Datasheet View se poate observa
rezultatul aplicrii funciei IIf figura 105.
172
Fig. 107 Operatorul IN
10. Pentru a crea o nou tabel cu toate nregistrrile din tabelele Facturi,
Produse i ProduseFacturate, se adaug toate cmpurile din aceste
tabele, fr a le duplica. Se salveaz interogarea cu numele Creare
tabela. De pe panglic se alege butonul Make Table figura 109, se
tasteat numele noii tabele: Reuniune, apo se apas butonul OK. Pentru
a se executa interogarea se va selecta Run. Dac nivelul de securitate
nu este setat astfel nct s permit execuia codurilor Visual Basic,
interogarea nu va funciona. Pentru a permite utilizarea codurilor, de pe
173
bara Security Warning se alege butonul Options, apoi opiunea
Enable this content.
174
Fig. 111 Mesaj de avertizare la transferarea nregistrrilor ntr-un nou tabel
Rezolvare:
1. Pentru a crea un raport cu ajutorul asistentului, se alege opiunea de
meniu Create, butonul Report Wizard. La primul pas se alege tabela sau
interogarea pe baza creia se va crea raportul (Tables/Queries). Din caseta
Available Fields se selecteaz cmpurile dorite, apoi se apas butonul Next.
175
Fig. 113 Fereastra Grouping Intervals
Dac este selectat butonul Summary Options... se pot selecta funcii ce vor fi
aplicate pe cmpurile numerice din tabel sau interogare figura 115.
176
Fig. 115 Summary Options
177
Ultimul pas permite modificarea titlului raportului (nu este vorba de numele cu
care va fi salvat raportul, ci doar textul care va apare n antentul raportului),
apoi putem alege ntre a vizualiza raportul i a modifica raportul. Pentru a
ncheia crearea raportului se alege opiunea Finish. figura 118
Fig. 118 - Alegerea unui titlu i vizualizarea raportului n mod Print Preview
178
n Design View raportul arat ca n figura 120.
Dac datele provin din mai multe tabele, sau sunt necesare unele cmpuri
calculate, se poate crea o interogare n care se selecteaz tabelele, se calculeaz
cmpurile dorite, apoi se creeaz raportul pe baza interogrii.
Dac se dorete adugarea unui cmp care va fi calculat, se alege de pe panglic
controlul Text Box. Se modific pentru etichet proprietile Name: lblValoare
i Caption: Valoare. Aceasta va fi mutat n zona nr_f Header. Pentru controlul
de tip Text Box se vor modifica proprietile Name: txtValoare i Control
Source: =[cantit]*[pret_u]* [cotaTVA].
179
Pentru a vizualiza raportul, de pe butonul View se alege opiunea Print
Preview figura 122.
180
5.13 Probleme propuse
181
182
CAPITOLUL 6
ELEMENTE SQL
6.1 Introducere
Unul dintre cele mai puternice limbaje structurate pentru interogarea datelor,
SQL (Structured Query Language), a devenit un standard pentru o gam din ce
n ce mai larg de sisteme pentru gestiunea bazelor de date. A fost construit n
1986 de ctre ANSI (American National Standards Institute). De atunci, este
considerat a fi un standard interaional avizat de ctre ISO (International
Organization for Standardization) i IEC (International Electrotechnical
Comission). A fost adoptat ca fiind standard federal de ctre FIPS (american
Federal Information Processing Standard). n cadrul acestui capitol se vor
prezenta comanda Select care permite realizarea interogrii bazelor de date,
precum i instruciunile care permit actualizarea datelor (adugarea, modificarea
i tergerea datelor prin comenzi SQL).
183
standardizare: limbajul SQL este standardul de interogare al bazelor de
date relaionale. 34
34
Giulvezan C., Mircea G., Trnveanu D., Margea C. Baze de date, Editura Universitii de
Vest, Timioara, 2009, p.59
35
Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p. 67
184
caracterul virgul este utilizat pentru a delimita valorile unei liste (de
exemplu lista cmpurilor);
valorile de tip Number sunt scrise direct, fr a fi ncadrate de nici un
alt caracter;
valorile de tip Text sunt ncadrate ntre caracterul apostrof (de
exemplu: Timioara);
valorile de tip dat calendaristic sunt ncadrate ntre caracterul diez
(de exemplu: #31/12/2011#).
Atunci cnd se scriu instruciunile n format general, exist mai multe convenii
de notare:
cuvintele rezervate sunt scrise cu majuscule;
cuvintele definite de utilizator se scriu cu litere mici;
bara vertical semnific separarea mai multor elemente alternative
care se exclud reciproc (doar unul din acestea poate fi s apar);
parantezele drepte [ ] ncadreaz un element opional;
acoladele {} ncadreaz un element obligatoriu;
punctele de suspensie semnaleaz repetarea opional a unui element al
unei liste.
36
Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p. 71
185
6.2.1 Comanda CREATE TABLE
unde numet1 este numele tabelului creat, numec1, numec2,... sunt numele
cmpurilor care vor constitui structura tabelului. Tip1, tip2, ... sunt tipurile de
date suportate de limbajul SQL vezi figura 1. PRIMARY KEY semnifica
setarea unui cmp ca fiind de tip cheie primar. Atributul NOT NULL
semnific faptul c acel cmp este este obligatoriu s fie completat (echivalentul
proprietii Required din Access). Programatorii folosesc o denumire pentru
fiecare constrngere utilizat (Primary Key, Foreign Key, Not Null, Unique).
Denumirea constrngerii este poziionat n faa constrngerii, dup cuvntul
predefinit CONSTRAINT. Numele constrngerilor sunt formate dintr-un prefix
urmat de numele cmpului pe care este setat. Prefixul este prestabilit:
pk (pentru PRIMARY KEY);
nn (pentru NOT NULL);
un (pentru UNIQUE);
fk (pentru FOREIGN KEY).
ntre tipurile de date din Access (din Design View) i tipurile de date din SQL
nu exist o coresponden perfect figura 1.
Access SQL
Double Number
Long Integer Integer
Yes/No Logical
Date/Time Date
Text Text
Fig. 1 Corespondenele ntre tipurile de date din Access i SQL
186
Exemplu: S se creeze o tabel cu turitii unei agenii de turism. Pentru acetia
vom cunoate CNP-ul, numele i prenumele, seria i numrul de pe cartea de
identitate, data naterii, telefonul i numrul de paaport.
187
Pentru a crea o tabel referit, se utilizeaz urmtorul format general:
188
Dac se dorete adugarea unui nou cmp:
ALTER TABLE numet1
ADD COLUMN (numec1 tip1,
numec2 tip2, ...);
189
Dac se dorete tergerea unei constrngeri:
ALTER TABLE numet1
DROP CONSTRAINT numeconst;
Comenda DROP TABLE terge fizic tabela (nu doar datele din tabel ci i
structura acesteia).
Dac o tabel este de referin, nu poate fi tears datorit relaiei pe care o are
cu tabela referit. Pentru a rezolva acest neajuns, se terge condiia de legtur
dintre tabele cu ajutorul comenzii ALTER TABLE, apoi se terge tabela.
190
Specificarea listei cmpurilor este opional. Dac lista cmpurilor este omis,
toate cmpurile din tabel vor fi completate, n ordinea n care ele au fost create,
cu valorile specificate n lista de valori.
Dac lista cmpurilor apare dar nu este complet, unele cmpuri lipsind, acele
cmpuri care nu apar n list vor fi completate cu valoarea NULL, sau cu
valoarea setat ca valoare implicit (DEFAULT). Din pcate, n standardul
minimal, setarea unei valori predefinite nu este permis.
Numrul cmpurilor din lista de cmpuri trebuie s fie identic cu numrul
valorilor din lista valorilor, iar valorile trebuie s corespund ca tip tipului de
date a cmpurilor din lista de cmpuri.
Formatul general:
DELETE FROM numet1
[WHERE conditie];
191
6.2.6 Comanda SELECT
Comanda SELECT permite filtrarea datelor din una sau mai multe tabele pe
baza unor condiii. Formatul general al comenzii:
unde:
comanda SELECT afieaz nregistrri din una sau mai multe tabele;
clauza From specific numele tabelei sau a tabelelor surs a interogrii.
Dac datele provin din mai multe tabele, este necesar adugarea unei
condiii de legtur n cadrul clauzei WHERE sau setarea unei jociuni
ntre tabele. Dac se dorete afiarea unui cmp care apare n dou
tabele, este necesar precizarea numelui tabelei din care acesta face
parte. Numele tabelei este separat de numele cmpului prin caracterul
punct (de exemplu: Produse.CodProdus);
nregistrrile pot fi distincte (dac clauza DISTINCT este selectat o
valoare va apare o singur dat) sau nu;
filtrarea nregistrrilor se face n funcie de evaluarea condiiei logice
din cadrul clauzei Where (dac aceasta este selectat);
dac se utilizez clauza Group By, aceasta va grupa nregistrrile n
funcie de criteriul de grupare. n acest caz pot fi adugate condiii
pentru grupurile astfel create utilizndu-se clauza Having;
poate fi impus o ordine de sortare dac se utilizeaz clauza Order by,
valoarea implicit fiind Ascending;
simbolul * semnific selecia tuturor cmpurilor din acea tabel. Dac
se dorete omiterea unor cmpuri, se va specifica lista cmpurilor fr a
specifica cmpurile respective. Ambele liste lista_campuri i
lista_tabele conin elemente desprite ntre ele prin virgul.
192
AVG calculeaz media aritmetic a valorilor unui cmp numeric;
MAX afieaz valoarea maxim din cadrul valorilor unui cmp, dar
nu poate fi folosit n cadrul clauzei WHERE;
MIN afieaz valoarea minim din cadrul valorilor unui cmp, dar nu
poate fi folosit n cadrul clauzei WHERE.
193
Exemplul 6: S se afieze numele studenilor care ncep cu litera A i sunt
nscui n luna octombrie 1980.
SELECT nume_prenume
FROM studenti
WHERE nume_prenume LIKE A* AND
datan BETWEEN #01/10/1980# AND #31/10/1980#;
unde domeniul de selecie poate fi: ALL (vor fi returnate toate nregistrrile),
DISTINCT, DISTINCTROW (vor fi afiate doar nregistrrile distincte), TOP n
[PERCENT] (vor fi returnate doar primele n nregistrri sau un procent din
numrul total de nregistrri, nregistrrile fiind ordonate cu ajutorul clauzei
Order By).
194
n mod uzual, compunerile de tabele au la baz condiii de tipul cheie primar-
cheie strin.
37
Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p.93
195
Formatul general al interogrilor ce include compuneri de tabele:
SELECT [domeniu_selectie] lista_campuri
FROM numet1
{INNERLEFT[OUTER]RIGHT[OUTER]} JOIN numet2
ON conditie_jonctiune
[WHERE criterii_de_selectie];
38
Nstase P., Coscescu L., Covrig L., et al Tehnologia bazelor de date Access 2000, Editura
Economic, Bucureti, 2000, p. 197
196
unde:
funciile agregate sunt cele amintite n cadrul instruciunilor SELECT
simple: COUNT, SUM, MIN, MAX, AVG, etc.
lista_selectie seminific una sau mai multe funcii agregate care au ca
argumente cmpuri ale bazei de date;
AS alias asociaz un pseudonim rezultatului utilizrii funciei agregat;
GROUP BY precizeaz cmpul sau cmpurile care vor fi criterii de
grupare (echivalentul liniei Total din cadrul unei interogri de
sintetizare a datelor);
HAVING criteriu care va fi aplicat cmpului definit ca argument al
funciei agregat. Spre deosebire de clauza Where, criteriul va aciona
naintea gruprii nregistrrilor.
197
6.2.6.4 Subinterogri
Formatul general39:
SELECT [domeniu_selectie] lista_selectie
FROM numet1, numet2, ...
WHERE {numec1 expresie} operator_comparatie
(SELECT {campexpresie}
FROM numet1, numet2, ...
[WHERE criterii_selectie_subinterogare]);
unde operator_comparatie poate fi =, <, <=, >, >=, <>, IN, LIKE, Between.
Observaii:
subinterogrile trebuie incluse ntre paranteze rotunde;
subinterogrile trebuie plasate n partea dreapt a operatorului de
comparare;
nu se va aduga o clauz ORDER BY ntr-o subinterogare;
att n interogare ct i n subinterogare, sursa datelor poate fi simpl
(un singur tabel) sau compus (mai multe tabele), putnd fi chiar
identic, necesitnd crearea legturilor dintre tabele;
clauzele Group By, Having i Order pot s apar n ambele interogri;
dac se utilizeaz operatorul IN, rezultatul subinterogrii va fi o coloan
cu mai multe valori;
domeniul rezultatelor unei subinterogri poate fi influenat prin
recurgerea la urmtoarele cuvinte cheie: ALL, ANY i EXISTS. n
cazul n care se dorete negarea condiiei, se plaseaz operatorul NOT
n faa specificatorului:
- ANY/SOME comparaia este adevrat dac se gsete cel puin
o valoare n valorile din coloana returnat de subinterogare. n
cazul utilizrii acestui specificator, ;
- ALL comparaia este adevrat dac este verificat de toate
valorile din coloana returnat de subinterogare. n mod uzual,
comparaia const ntr-o inegalitate: <, <=, >, >=, <>. De
regul, rezultatul comparaiei este False;
39
Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p.101
198
- EXISTS comparaia este adevrat dac subinterogarea
returneaz cel puin o valoare din coloana sau coloanele
returnate de subinterogare.
Tipuri de subinterogri
- subinterogri care au ca rezultat o singur linie (single-row subquery);
- subinterogri care au ca rezultat mai multe linii (multiple-row
subquery);
- subinterogri care au ca rezultat mai multe coloane (multiple-column
subquery).
SELECT nume_prenume
FROM studenti
WHERE an=(SELECT an
FROM Studenti
WHERE CNP=1711227658965);
199
6.2.7 Comanda UPDATE
Comanda Update permite modificarea valorilor unuia sau mai multor cmpuri.
Formatul general este:
UPDATE numet1
SET numec1={expresie1(SELECT ...)}
numec2={expresie2(SELECT ...)}
[WHERE conditie];
200
6.3 Concluzii
SQL este unul dintre cele mai puternice i larg rspndite limbaje folosite
pentru definirea i accesarea bazelor de date relaionale. El permite consultarea
bazei de date sau efectuarea anumitor aciuni prin simpla specificare a
comenzilor, fr a fi necesar specificarea unor modaliti concrete sau a
algoritmilor de obinere a rezultatului. SQL este suportat de diferite sisteme de
gestiune a bazelor de date cum ar fi: MS Access, MS SQL Server, DB2,
Informix (IBM), Oracle, MySql, etc, diferenele dintre dialecte fiind minore40.
40
Florescu V. (coord.), Ionescu B. (coord.), Cozgarea G., et al Baze de date, Editura Infomega,
Bucureti, 2009, p.66
41
Nstase P., Coscescu L., Covrig L., et al Tehnologia bazelor de date Access 2000, Editura
Economic, Bucureti, 2000, p. 189
201
6.5 ntrebri de autoevaluare din partea teoretic
202
6.6 Exemple
Rezolvare:
Se creaz o nou baz de date cu numele Produse. Se creaz tabela Produse cu
urmtoarea structur: cod_p, den_p, um_p, stoc_p, pret_p, cod_magazin. Se vor
introduce 3 nregistrri n tabel.
Se creaz un nou formular folosind de pe bara de meniuri opiunea Create,
butonul Form Design.
De pe panglic se verific dac butonul Use Control Wizards este selectat.
Acesta trebuie s fie deselectat pentru a permite crearea manual a controalelor,
fr ajutorul asistentului. n continuare se alege butonul Button, executndu-se
un clic pe form. Apelnd meniul contextual asociat butonului de comand de
pe form, se selecteaz opiunea Properties i se modific proprietile Name i
Caption pentru fiecare buton n parte. n total sunt 8 butoane de comand,
fiecare avnd un alt Name i Caption. Proprietatea Name va fi completat
ntotdeauna cu prefixul cmd urmat de un cuvnt sau alturare de cuvinte
semnificativ pentru aciunea executat de buton, fr caracterul spaiu ntre ele.
Numele butoanelor vor fi n ordine: cmdDesPr, cmdDesPr1, cmdInsPr,
cmdModDen, cmdCrTNou, cmdViz, cmdValoare, cmdIesire. Proprietatea
Caption va fi completat cu textul care apare pe butonul corespunztor din
figura 1 i admite orice fel de caractere, inclusiv caracterul spaiu. Se selecteaz
butonul dorit, iar n fereastra Property Sheet se modific cele dou proprieti
aflate pe pagina All. Dac fereastra Property Sheet nu apare, ea poate fi
203
activat folosind butonul Property Sheet de pe panglic, atunci cnd este
selectat opiunea de meniu Design.
Se salveaz forma cu numele Meniu (butonul Save din dreapta butonului
Office).
Pentru a introduce instruciuni ataate butoanelor trebuie apelat editorul Visual
Basic. Pentru aceasta, se apeleaz meniul contextual al fiecrui buton n parte
(clic cu butonul din dreapta al mouse-ului), se alege Build Event, Code
builder, OK.
Mediul de programare Visual Basic Application arat ca n figura urmtoare:
Pentru fiecare buton n parte se scrie codul corespunztor. Tot ce este scris dup
caracterul apostrof semnific un comentariu, este un mesaj pentru programator,
o explicaie. Dac acesta apare, nu influeneaz cu nimic execuia programului,
dar poate fi ignorat dac se consider oportun.
204
DoCmd este o comand Visual Basic care permite execuia unei comenzi (Do
Command). Open Table este comanda care permite deschiderea unei tabele.
Numele tabelei este scris ntre ghilimele, iar parametrul acViewDesign
specific deschiderea tabelei n modul Design, nu n Datasheet View.
Comanda RunSQL este comanda care permite execuia unei instruciuni SQL
(Structured Query Language). Dintre cel mai des utilizate instruciuni SQL
amintim: SELECT, INSERT INTO, UPDATE, ALTER TABLE, DELETE
TABLE. Toate instruciunile SQL se scriu ntre ghilimele, simbolul ; de la
sfritul comenzilor SQL fiind ignorat.
n acest caz s-a folosit instruciunea INSERT INTO, care permite introducerea
unei singure nregistrri n tabela Produse. Pentru fiecare din parametrii din
parantez, acetia fiind considerai nite variabile, este creat automat un
InputBox (o caset de introducere a valorilor de la tastatur) care permite
citirea lor de la tastatur. Comanda Insert Into conine cuvntul Values, iar
numrul parametrilor din parantez (care ca nume sunt diferite de numele
cmpurilor din tabela Produse) trebuie s fie acelai cu numrul cmpurilor din
tabel i s corespund ca tip de valori i semnificaie. De exemplu, dac n
tabela Produse avem 5 cmpuri, n parantez, dup cuvntul Value, trebuie s
avem 5 parametrii, n aceeai ordine.
205
Pentru a modifica denumirea unui produs pentru care se cunoate codul, se
utilizeaz o variabil pentru a citi de la tastatur codul respectiv. Variabila
v_cod este definit la nceputul aplicaiei, n seciunea DIM (de dimensionare a
variabilelor). Cu ajutorul unei casete de introducere a datelor (Inputbox),
valoarea variabilei cod produs este reinut n variabila v_cod. Pentru a
modifica valoarea denumirii produsului, se utilizeaz instruciunea Update.
Dup cuvntul predefinit SET avem o atribuire. Membrul din stnga este
numele cmpului den_p din tabela Produse, iar n partea din dreapta avem un
parametru. Pentru parametru, Access construiete automat o caset de
introducere a datelor, permind citirea acestuia de la tastatur. Valoarea citit
va nlocui valoarea veche a denumirii. Dac nu este adugat condiia Where,
toate denumirile produselor vor fi modificate. Pentru a modifica doar un anumit
cmp, n cadrul condiiei Where este specificat o condiie logic. Cod_p este
cmpul cod produs din tabela Produse. Pentru a se utiliza valoarea reinut n
variabila v_cod, acesta va fi scris n afara ghilimelelor. Simbolul & este
simbolul care semnific concatenarea mai multor valori de tip ir de caractere.
206
Pentru a citi o valoare de la tastatur este necesar declararea unei variabile n
care valoarea s fie stocat. Variabila poart numele v_cod. Valoarea este citit
de la tastatur prin intermediul comenzii InputBox (crearea unei casete de
introducere a textului). Comanda Select creaz o nou tabel numit Temp1,
fiind selectate doar cmpurile definite n lista cmpurilor (cod_p, den_p, um,
stoc, pret_u, cod_m) i acele nregistrri care verific condiia Where (codul
produsului s fie mai mare dect valoarea care a fost introdus n variabila
v_cod). Tabela Temp1 va fi apoi deschis pentru a vizualiza rezultatul
interogrii.
Acest buton permite calcularea unui cmp n cadrul unei interogri. Acesta se
scrie n lista de cmpuri, ncepnd cu formula de calcul, urmat de cuvntul
predefinit AS i numele care se dorete s apar n capul de tabel ca nume de
cmp: valoare. Rezultatul interogrii este un nou tabel cu numele Valoare.
Pentru a vedea rezultatul interogrii se deschide tabelul Valoare.
207
Fig. 4 Setarea nivelului minimal de securitate
208
6. S se tearg toate notele de recepie corespunztoare codului material
111 din tabela receptiemateriale. S se tearg toate nregistrrile din
tabela receptiemateriale.
7. S se tearg toate tabele din baza de date (inclusiv cele create n cadrul
interogrilor).
Rezolvare:
Se va crea o nou baz de date cu numele Aprovizionare. Table 1 se nchide,
fr a fi salvat. Tabelele nu vor fi create cu ajutorul instrumentelor vizuale, ci
tot cu ajutorul comenzilor SQL.
Construind matricea dependenelor funcionale se ajunge la urmtoarea
structur a bazei de date figura 6.
209
se execut clic pe formular. Se apeleaz meniul contextual asociat
butonului i se alege opiunea Properties. n fereastra Property Sheet
se modific proprietile Name: cmdCreare i Caption: Crearea
tabelelor figura 7.
210
Observaii:
Fiecare constrngere (PRIMARY KEY, NOT NULL, FOREIGN KEY)
a fost denumit cu un nume format din prefixul pk pentru Primary Key,
nn pentru Not Null sau fk pentru Foreign Key. nainte de a specifica
constrngerea se adaug cuvntul predefinit CONSTRAINT apoi
numele constrngerii. n cazul unei chei primare compuse,
constrngerea este lsat la urm, dup ultimul cmp i definit ca fiind
combinaia dintre nrrec i codm.
Relaia dintre tabele este creat de la tabela referit (copil) la tabela de
referin (printe), setndu-se o constrngere de tip FOREIGN KEY pe
cmpul comun, utilizndu-se cuvntul predefinit REFERENCES, urmat
de numele tabelei de referin (printe) i cmpul de legtur din acea
tabel. Ambele cmpuri trebuie s fie definite ca fiind de acelai tip.
MSG este un nume de variabil, care va lua valoarea apsrii butonului
OK specificat n partea dreapt a egalitii. n partea din dreapta se
utilizez o comanda care afieaz pe ecran mesajul scris ntre ghilimele
i afieaz doar butonul OK.
211
DoCmd.RunSQL "INSERT INTO receptii VALUES
(245370,#25/11/2011#)"
DoCmd.RunSQL "INSERT INTO receptii VALUES
(245371,#25/11/2011#)"
MSG = MsgBox("S-au introdus inregistrari in tabela receptii!",
vbOKOnly)
DoCmd.OpenTable "receptii"
212
Codul asociat butonului cmdModStruct este prezentat n continuare:
213
Codul asociat butonului cmdInterogari este prezentat n continuare:
Observaii:
Specificatorul * semnific afiarea tuturor cmpurilor din tabela
respectiv.
Clauza INTO creeaz o nou tabel n care rezultatul interogrii va fi
depus. Dac se dorete vizualizarea acestuia, tabelul trebuie deschis.
Dac datele sunt extrase din mai multe tabele, n cazul n care este
specificat un cmp care apare n ambele tabele, este necesar
specificarea aparteneei lui (de exemplu receptii.nrc).
Dac se dorete afiarea datelor din mai multe tabele, este necesar
specificarea condiiei de legtur dintre tabele. n acest caz s-a ales
jonciunea natural. Condiia de legtur apare n cadrul clauzei
WHERE, operatorul dintre condiii fiind AND.
Dac se dorete afiarea unor totaluri pe grupe de nregistrri, se
utilizeaz clauza Group By. Aceasta este specificat dup clauza
Where. Cmpul specificat ca i criteriu de grupare va apare ca primul
cmp selectat n lista cmpurilor.
214
6. Pentru a terge nregistrri din tabele se adaug un nou buton pe form
(se selecteaz butonul Button, apoi se execut clic pe formular). Se
modific proprietile butonului: Name: cmdStergereValori i
Caption: Stergere valori. Pentru a asocia cod butonului, se apeleaz
meniul contextual al acestuia, se alege opiunea Build Event/Code
Builder.
215
6.6.3 Problem propus Bibliotec
216
4. adugarea unui cmp cu numele alte clauze n tabela Contracte;
5. completarea cmpului observaii cu valoarea pltit integral pentru
comanda cu codul 1234;
6. vizualizarea comenzilor care expir luna aceasta;
7. vizualizarea numelui beneficiarilor i suma total pltit de acetia;
8. vizualizarea numrului beneficiarilor care au ncheiat contracte care
expir anul acesta;
9. tergerea comenzii cu numrul 1234;
10. tergerea tuturor tabelelor;
11. nchiderea formei.
217
218
BIBLIOGRAFIE
219
20. Tama I. (coord.), Stanciu V., Gheorghe M. (2010) Access 2007 Proiectare
i realizare pas cu pas, Editura Infomega, Bucureti
21. Whitehorne M., Marklyn B. (2007) Inside Relational Databases with
Examples in Access, Springer
220
GLOSAR DE TERMENI
221
Forma normal 1 (FN1) O relaie se afl n FN1 dac toate atributele sale
sunt atomice (nu se mai pot descompune) i
nerepetitive
Forma normal 2 (FN2) O relaie se afl n FN2 dac respect FN1 i orice
atribut non-cheie este complet dependent de cheia
primar a relaiei (interzice dependene funcionale
pariale)
Forma normal 3 (FN3) O relaie se afl n FN3 dac respect FN2 i toate
atributele non-cheie sunt dependente direct de cheia
primar (interzice dependenele funcionale
tranzitive)
Cmp o unitate elementar sau o categorie cum ar fi
titlurile crilor sau numerele de telefon
nregistrare un set complet de date (cmpuri) care se refer la o
persoan, loc, eveniment, idee
Tabel structur elementare n care sunt stocate datele n
cadrul unei baze de date
Interogare structur care permite efectuarea unei aciuni rapide
(obinerea unor informaii sau efectuarea unor
modificri) asupra unei tabele sau mai multor tabele
Formular fereastr atractiv folosit pentru a consulta sau
actualiza datele dintr-un tabel sau o structur de
interogare
Raport structur care permite tiprirea informaiilor din
tabele sau interogri
Macrocomand mini-programe care automatizeaz sarcinile curente
(formate dintr-o suit de aciuni)
Modul fiier care conine cod Visual Basic Application
SQL (Structured Query este un limbaj de interogri i gestionare a bazelor
Language) de date relaionale
CREATE TABLE permite crearea unei tabele
ALTER TABLE permite modificarea structurii unei tabele
adugarea, tergerea unor cmpuri sau modificarea
proprietilor acestora
DROP TABLE permite tergerea fizic a nregistrrilor
INSERT INTO permite inserarea unei nregistri ntr-o tabel
DELETE Permite tergerea nregistrrilor dintr-o tabel,
structura tabelei rmnnd neschimbat
222
SELECT permite selectarea nregistrrilor din una sau mai
multe tabele, n funcie de anumite criterii,
permind agregarea datelor i crearea
subinterogrilor
UPDATE permite modificarea valorilor unui cmp dintr-o
tabel
223