3Cursul de BAZE DE DATE este destinat studen ților Facultă ții deȘtiințe Economice a Universităț ii din Pite ști, forma de învățământ FRECVENȚ Ă… [613380]
BAZE DE DATE
Luminița Șerbănescu
2
3Cursul de BAZE DE DATE este destinat studen ților Facultă ții deȘtiințe
Economice a Universităț ii din Pite ști, forma de învățământ FRECVENȚ Ă
REDUSĂ , specializările:
SpecializareCCOONNTTAABBIILLIITTAATTEE
SSIIIINNFFOORRMMAATTIICCAA
DDEEGGEESSTTIIUUNNEEFFIINNAANNTTEE
BBAANNCCII
Numărul de
credite6 4
Numărul total
de ore de
studiu
individual28 28
Numărul de ore
de pregătire
tutoriale56 28
Forma de
finalizare
(E, V, C)E V
Semestru I I
Ponderea notei la examen 60%Structura notei
Ponderea notei laverificare 100%
4
5CUPRINS
TEMA1:METODE DE ORGANIZARE A DATELOR ÎN APLICAȚ II……………….. 6
TEMA2:SISTEME DE GESTIUNE A BAZELOR DE DATE .PROIECTAREA
BAZELOR DE DATE RELA ȚIONALE ………………………….. ………………….. 21
TEMA3:SCHEMA UNEI BAZE DE D ATE.PRINCIPII DE NORMALIZ ARE.
STABILIREA CHEILOR .INTEGRITATEA DATELOR …………………………. 38
TEMA4:FEREASTRA DATABASE. EXPRESII ÎN ACCESS…………………… 58
TEMA5:TABELE ÎN ACCESS………………………….. ………………………….. ……69
TEMA6:CREAREA RELAȚIILOR ………………………….. ………………………….. .91
TEMA7:INTEROGĂRI ÎN ACCESS………………………….. ……………………….. 107
TEMA8:CERERI DE SELECȚIE ………………………….. ………………………….. .125
TEMA9:CERERI ACȚIUNE ………………………….. ………………………….. ……..145
TEMA10:FORMULARE ÎN ACCESS………………………….. …………………….. 167
BIBLIOGRAFIE ………………………….. ………………………….. ………………………. 197
6Tema 1
Metode de organizare a datel or în aplicații
Cuprinsul Tem ei 1:
1.1 INTRODUCERE ………………………….. ………………………….. ………………………… 6
1.2 CLASIFICAREA DAT ELOR………………………….. ………………………….. ………7
1.3 COLECȚII DE DAT E………………………….. ………………………….. ……………….. 8
1.4 MODELARE ………………………….. ………………………….. ………………………….. …..9
1.4.1MODELAREA CONCEPTUALĂ ………………………….. ………………………….. …..10
1.4.1.1. Exemple ………………………….. ………………………….. ……………………….. 11
14.1.1.1. Modelul Entitate Asociere Furnizori -Contracte ……………………. 11
1.4.1.1.2. Modelul Entitate Asociere Profesor -Sudenți……………………….. 13
1.4.2MODELAREA LOGICĂ ………………………….. ………………………….. …………….. 13
1.4.3MODELAREA TEHNICĂ ………………………….. ………………………….. …………… 14
1.5 METODE DE ORGANI ZARE A DATELOR ………………………….. ………….14
1.5.1ORGANIZAREA DATELOR Î N FIȘIERE ………………………….. …………………….. 14
1.5.2ORGANIZAR EA DATELOR ÎN BAZE D E DATE………………………….. …………… 16
1.6 ÎNTREBĂRI ………………………….. ………………………….. ………………………….. …17
1.7 TEST GRILĂ TEMA 1………………………….. ………………………….. ……………… 19
Obiective
Însușirea noțiunilor de date și colecții de date .
Înțelegerea noțiunii de modelare și proiectare a modelării: conceptuală,
logică și tehnică .
Cunoașterea metodelor de organizare a datelor în fișiere clasice și in baze de
date.
Timp alocat:2 ore
1.1Introducere
Data este un model de reprezentare a informației, accesibil unui anumit
procesor (om, program calculator). Cu acest model se operează pentru a obține noi
informații despre fenomenele și procesele lumii reale.
7Colecția de date este o mulțime relativ omogenă de date care privește un
anumit domeniu, proces, activitate sau obiect și organizată și dispusă sistematizat pe un
suport de memorie. Dacă este definit un mecanism de selectare a elementelor colecția
de date se numește structură de date.
Organizarea date lor reprezintă procesul de identificare, definire, evaluare,
structurare și memorare a informațiilor, în cadrul unui sistem informațional, în general
sau în activitatea de elaborare a unui program, în particular.
Organizarea datelor presupune:
-definirea, structurarea, ordonarea și gruparea datelor în colecții de date
omogene;
-stabilirea relațiilor dintre date, dintre elementele colecțiilor și dintre colecții;
-stocarea datelor pe suport informațional, prelucrabil prin intermediul unui
sistem de calcul.
Scopul organizării datelor îl reprezintă regăsirea automată a datelor după
diverse criterii.
Obiectivele urmă rite în organizarea datelor:
-minimizarea timpului de acces la date;
-minimizarea spațiului de memorie (internă și externă) ocupat de date;
-minimizarea redundanței datelor;
-reflectarea tuturor legăturilor dintre obiectele, fenomenele și procesele
economice pe care aceste date le reprezintă;
-să permită schimbarea structurii datelor și a relațiilor dintre acestea fără
modificarea programelor care le prelucrează .
1.2 Clasificarea datelor
Clasificarea datelor se realizea ză pe baza mai multor criterii. Datele din
sistemul informațional, generate în timpul și datorită proceselor economice, se împart
în funcție de nivelul de detaliere în două categori i: date elementare și date compuse.
Identificatorul datei (numele) este un simbol asociat datei pentru a o distinge
de alte date si pentru a o referi în procesele de prelucrare.
Atributele precizează proprietățile datei si determină modul în ca re va fi tratată
în procesul de prelucrare:
-tipîntreg, real, logic, sir de caractere etc. ;
-precizia reprezentării interne : virgula mobila precizie simpla, vir gula mobila
precizie dubla;Datele elementare, numite și scalari, sunt indivizibile, atât la nivel
informațional cât și la nivel de prelucrare. De exemplu cursul BNR al unei
valute la o anumită dată sau prețul unui produs dintr -o factură. Datele
elementare sunt identif icate prin nume (identificator) și au o anumită
valoare.
8-modul de adresare a memoriei ;
-valoarea inițială etc.
Valorile date ise pot preciza prin enumerare și sunt str âns legate de tipul datei .
Dacă pe parcursul proceselor de prelucrare data păstrează aceiași valoare este denumit ă
constantă .Pentru constante se utilizează ca identificator valoarea acestora. Dacă
valorile datei sunt diferite în timpul procesului de prelucrare atunci datele se numesc
date variabile sauvariabile.
Din punct de vedere fizicunei date îi corespunde o zonă de memorie de a
anumită mărime identificată printr -un nume, situată la o anumită adresă.
Cele mai des întâlnite tipuri de date elementare sunt:
-numerice – sunt incluse numerele întregi, reale si complexe (virgulă fixă,
virgulă mobilă, precizie simpla, precizie dublă etc.). Asupra lor se pot realiza
operații de adunare, scădere, înmulțire, împăr țire etc.;
-logice (boolean) – utilizate pentru precizarea stărilor de adevăr (adevărat, fals).
Asupra acestora se pot efectua operații logice precum AND,OR, NOT, XOR ;
-caracter (text, string) – conțin o mulțime de simboluri alfanumerice
utilizând codul A SCII. Asupra acestora se pot defini operații de căutare,
concatenare, ordonare.
În afară de aceste tipuri de date mai există și tipuri dependente de limbajul de
programare (de exemplu Date, DateTime, Currency)
Datele pot fi clasificate în func ție de modul de alocare a memoriei, astfel
existând date de tip static și date de tip dinamic. La datele de tip static, memoria este
alocată la încărcarea programului, pe când la datele de tip dinamic memoria este
alocată în momentul execuției programului.
Majoritatea aplicațiilor economice operează cu cele două categorii de structuri
existente: structuri interne și structuri externe.
Structurile de date interne se referă la modul de amplasare în memoria internă
a datelor elementare aparținând unei cole cții.În această categorie sunt incluse
structurile de tip masiv, înregistrare (articol), mulțime, lista și arbore.
Structurile externe se referă la modul de memorare a datelor pe suporți de
memorie magnetică. Din această categorie fac part e fișierele și bazele de date.
1.3 Colecții de date
Colecțiile de date definesc mulțimi relativ omogene de date care descriu un
domeniu, un proces, o activitate sau un obiect al lumii reale.Datele compuse sunt mulțimi de date elementare, omogene din punct de
vedere al descrierii și al prelucrării. Datele comp use au apărut din nevoia
de a descrie din punct de vedere informațional un anumit obiect sau
proces din realitatea înconjurătoare ale cărui caracteristici nu puteau fi
sintetizate de un singur scalar.
9Complexitatea problemelor econom ice se reflectă și în diversita tea și
complexitatea relațiilor dintre colecțiile de date. Între colecțiile de date există corelații,
legături care trebuie să se regăsească și între entități.
Aceste legături permit asocierea datelor, gruparea a două sau mai multor
entități sau selectarea unui anumi t subset de membri în vederea prelucrării lor distincte.
Legăturile se pot realiza prin diverse modalități, cel mai frecvent fiind utilizată varianta
de plasare de atribute comune în cadrul entităților asociate.
1.4 Modelare
Un model va păstra numai acele caracteristici care sunt importante pentru
reprezentarea acestuia în contextul în care va funcționa. De exemplu, daca dorim sa
creăm modelul unui calculator în scopul studierii performanțelor sale, atunci modelul
realizat va conține informații referitoare la viteza procesorului, la memorie, dar nu va
conține informații referitoare la materialul sau culoarea din care este confecționată
carcasa, deoarece acestea nu au nici un rol în contextul respectiv.
Un model realizat în sistemul i nformatic conține date sau informații și
prelucrări care provin din proprietățile și metodele obiectului sau fenomenului supus
modelării. Vom avea astfel două procese de modelare și anume: modelarea datelor și
modelarea prelucrărilor. Aceste procese vor pa rcurge mai multe grade de abstractizare,
obținându -se astfel trei tipuri de modele: conceptual, logic și tehnic. Modelul care
poate fi implementat pe calculator este modelul tehnic.
In figura 1.3.1 este prezentată activitatea de modelare efectuată asupra unui
obiect sau fenomen din lumea reală în scopul realizării unei aplicații informatice.Prin modelare se înțelege reprezentarea unui obiect, fenomen, sau proces
din lumea reală într -un anumit sistem(matematic, fizic, informatic).
Modelul este creat pentru a permite studiul obiectului sau fenomenului
din lumea re ală, într-un anumit context.
Un obiect reprezintă o entitate (ceva bine definit) care are o anumită
structură, anumite caracteristici și o anumită funcție.
Un obiect se caracterizează prin:
– Proprietăți, care reprezintă structura și atributele unui obiect.
– Metode, care reprezintă acțiunea (acțiunile) pe care poa te să le
efectueze un obiect.
10Figura 1.3.1 Activitatea de modelare
1.4.1 Modelarea conceptuală
Modelele conceptuale utilizează abstracții reprezentând lumea re ală ca pe o
colecție de entități și de legături, stabilite între acestea. Majoritatea modelelor permit
definirea de restricții descriind aspectele statice, dinamice sau chiar temporale ale
entităților.
Un exemplu de model conceptual al datelor este modelu lEntitate –
Asociere(EA).
Pornind de la semantica obiectelor lumii reale și a legăturilor stabilite între
acestea, modelul EA servește în egală măsură ca un mijloc de comunicare întreObiect, Fenomen
Informații(date) Prelucrări
Modelul conceptual al
datelorModelul conceptual al
prelucrărilor
Modelul logic al
datelorModelul logic al
prelucrărilor
Modelultehnic al
prelucrărilorModelul tehnic al
datelorModelare
Aplicația informaticăcalculator
Un model conceptual este un ansamblu de concepte și reguli de
combinare a acestor concepte permițând reprezentarea realității
circumscrise domeniului supus informatizării.
Modelul EA urmărește obținerea unei reprezentări fidele, utilizând
concepte specifice, a realității (problemei de rezolvat ce urmează a fi
informatizată). Această reprezentare a lumii reale se va realiza făcându –
se abstracție de orice r estricție fie ea informatică sau organizatorică.
11modelator (informatician) și viitorul utilizator al sistemului (beneficiarul sistemului
informatic), care descrie realitatea supusă modelării în conformitate cu propria lui
percepție.
1.4.1.1. Exemple
14.1.1.1. Modelul Entitate Asociere Furnizori -Contracte
Pentru exemplificare se vo r considera entitățile FURNIZORI șiCONTRACTE .
Dacă la un moment dat se dorește gruparea tuturor contractelor încheiate cu un anumit
furnizor, se constată că este necesar un câmp comun (existent în cele două entități),
prin intermediul căruia să se realize ze extragerea și gruparea informațiilor dorite, din
cele două colecții (figura 1. 4.1.1.1).Conceptele de bază ale modelului Entitate Asociere sunt:
-ENTITATEA care reprezintă un obiect al realității modelate
caracterizat printr -o existență proprie, cu o identitate proprie (care -l
face identificabil în raport cu celelalte obiecte de același tip) și o mulțime
de caracteristici care exprimă proprietățile acestuia. În activitatea de
modelare interesul se focalizează pe definirea tipurilor de entități
aparținând problemei de rezolvat și nu pe entități care reprezintă
realizările tipurilor de entități. Tipul de entitate reprezintă un concept
generic desemnând mulțimea tutu ror entităților prezentând aceleași
caracteristici constructive. De exemplu, tipul de entitate STUDENT
desemnează ansamblul studenților caracterizați prin aceleași trăsături
comune: număr matricol, nume, data -nașterii, localitatea, facultatea,
specializare a etc.
-ATRIBUTUL definește o proprietate distinctă a unei entități.
Fiecare atribut prezintă un domeniu, adică o mulțime de valori admise.
Într-o entitate se regăsesc realizări corespunzătoare caracteristicilor
definitorii pentru tipul de entitate.
ASOCIE REA dintre entități exprimă legătura stabilită dintre acestea și
rolul pe care îl joacă fiecare entitate participantă la legătură. Exprimând
o legătură dintre entități ea nu are o existență de sine stătătoare. O
asociere poate prezenta unul sau mai multe a tribute proprii cu rol de a
caracteriza, explicita, legătura stabilită între entitățile participante la
asociere. Tipul de asociere se definește ca ansamblul legăturilor,
prezentând aceiași semnificație, dintre entitățile aparținând la două sau
mai multe t ipuri de entități.
12FURNIZOR F1:
Nr_Contract Data_Contr CodFurnizor DenumireF Adresa Valoare
100 10.01.2008 1 F1Pitești1500
103 12.03.2008 1 F1Pitești1200
Figura 1. 4.1.1.1Corelarea datelor pe baza relațiilor dintre entități
Pentru exemplul din figura 1. 4.1.1.1 se poate construi modelul EA astfel:Membri entitatea FURNIZORIEntitatea FURNIZORI
Atribut TipLungime
CodFurnizor N 3
DenumireF C20
Adresa C30
CodFurnizor DenumireF Adresa
1 F1 Pitești
2 F2 București
3 F3 Pitești
4 F4 CraiovaEntitateaCONTRACTE
Atribut TipLung
Nr_Contract N4
Data_Contr D8
CodFurnizor N3
Valoare N10
Membri entitatea CONTRACTE
Nr_Contract Data_ContrCodFurnizor Valoare
100 10.01.2008 1 1500
101 05.02.2008 2 1000
102 14.02.2008 3 800
103 12.03.2008 1 1200
104 23.03.2008 4 1600
105 03.04.2008 3 600
106 27.04.2008 2 1100CodFurnizor
CodFurnizor=1
13Figura 1. 4.1.1.2 Modelul EA
Între realizările a două tipuri de entități se pot stabili mai multe asocieri
prezentând semantică diferită.
1.4.1.1.2. Modelul Entitate Asociere Profesor-Sudenți
Un profesor lucrează la o disciplină cu un grup de studenți, unora dintre aceștia
(maxim 10) conducându -leși proiectul de semestru la disciplina respectivă(figura
1.4.1.1.2.1)
Figura 1. 4.1.1.2.1 Modelul Entitate Asociere
Modelul EA este completat de restricțiile de integritate ce definesc cerințele pe
care datele trebuie să le respecte pentru a fi corecte și coerente în raport cu realitatea pe
care o reflectă. Restricțiile de integritate privesc:
-valorile pe care le pot lua atributele entităților și asocierilor;
-valorile identificatorilor entităților;
-rolurile jucate de entități în asocierile la car e participă;
-asocierile stabilite între entități.
1.4.2 Modelarea logică
Modelarea logică reprezintă aducerea modelului conceptual într -o formă în
care prin precizarea anumitor metode de organizare și prelucrare a datelor, sunt
stabilite anumite cerinț e informatice pe care modelul trebuie să le îndeplinească.
Astfel, pentru cre area modelului logic al datelor , trebuie ținut cont de modul de
organizare pe care îl vor avea acestea pe calculator, și anume (așa cum se va arăta înPROFESOR
CodProf
Nume
Grad didacticSTUDENT
Nr. Matricol
Nume
PrenumeLucrează
1,n
Conduce
1,10FURNIZOR
CodFurnizor
DenumireF
AdresaCONTRACTE
Nr_Contract
Data_Contr
ValoareÎncheie
1,n
14continuare) în fișiere clas ice sau în baze de date. De asemenea dacă se dorește un
model logic bazat pe baze de date, va exista posibilitatea alegerii între mai multe tipuri
de arhitecturi (ierarhic, rețea, funcțional, deductiv, orientat obiect, etc.).
De asemenea, pentru crearea m odelului logic al prelucrărilor , trebuie ținut cont
în general de principiile sistemului de programare ce se va utiliza: procedural, formal,
LMD (limbaj de manipulare a datelor) etc.
Modelul logic relațional, creează suportul necesar pentru definirea baz elor de
date relaționale (ca Microsoft Access). Elementele de bază definite în acesta sunt
relațiile (ce provin din entitățile și asocierile modelului conceptual).
1.4.3 Modelarea tehnică
Modelul tehnic , reprezintă aducerea modelului logic într -o formă
precisă, dependentă strict de hardware -ul (calculatoarele, rețeaua de
calculatoare, echipamentele de transmisie a datelor, etc.) și de software -ul
(sistemul de operare, limbajele de programare, SGBD -ul (Sistemul de gestiune
al bazelor de date), alte progr ame utilitare, etc.) ce vor fi efectiv utilizate, prin
modificarea componentelor definite la nivel logic funcție de facilitățile oferite
de echipamentele și produsule informatice folosite.
1.5 Metode de organizare a datelor
Există două metode de organiz are a datelor:
-în fișiere clasice;
-în baze de date.
1.5.1 Organizarea datelor în fișiere
Principala formă de organizare externă a datelor este fișierul. Fișierul ocupă un
anumit spațiu pe suportul de memorie externă, spațiul alocat putând fi sa u nu continuu,
fiind sarcina sistemului de operare să gestioneze alocarea fizică a acestuia pe suportul
de memorie.
Datele într -un fișier sunt structurate în înregistrări care au în general aceiași
structură.
Instrucțiunile specifice care manipulează un fișier de date trebuie să rezolve în
general următoarele categorii de probleme:
-Descrierea structurii fișierului.Fișierulreprezintă o colecție organizată de date, omogenă din punct de
vedere al conținutului și al prelucrării, stocată pe un suport de memorie
externă.
15-Conectarea și deconectarea programului la fișierul de date. Pentru aceste
acțiuni se folosesc termenii de deschidere și închidere a fișierulu i.
-Poziționarea pe o anumită înregistrare, pentru a permite prelucrarea ei.
-Citirea sau actualizarea(modificarea datelor dintr -un câmp, adăugarea unor noi
înregistrări sau ștergerea unor înregistrări) înregistrărilor fișierului.
Există două metode de organizare și de accesare a datelor din fișierele clasice:
1.secvențial -este o metodă simplă fiind admisă de orice suport de memorie. Ea
constă în stocarea înregistrărilor pe suportul de memorie în ordinea cronologică a
apariției lor. Pentru accesul la datele din fișierele organizate secvențial se utilizează
numai modul de acces secvențial, care constă în parcurgerea una câ te una, la rând, a
tuturor înre gistrărilor dinaintea celei căutate.
2.direct- presupune stabilirea dinainte a adresei fizice a fiecărei înre gistrări, care
să servească atât la scriere cât și la citire. Operația de stabilire a acestei adrese fizice,
deci a locului ocupat de fiecare înregistrare, se realizează pe baza unui algoritm care
stabilește adresa fiecărei înregistrări ținând seama de car acteristicile și parametrii
suportului de memorie, de modul cum este împărțit suportul la momentul formatării
discului.
Organizarea datelor în fișiere clasice este o metodă rigidă care creează destule
neajunsuri utilizatorilor sistemelor de programe bazate pe acest tip de fișiere cum ar fi:
Independența datelor față de programele de aplicații.
Frecvent există situații în care mai multe aplicații fo losesc aceleași
date. Programarea clasică necesită pentru fiecare program în parte descrierea
aceleași structuri de date. O modificare în această structură de date implică
refacerea tuturor programelor care au acces la aceasta.
Deși există posibilități d e modernizare a programării clasice prin
proceduri, funcții și fișiere incluse, totuși dependenta programului de
structurile de date este foarte strânsă în cazul lucrului cu fișiere clasice, ceea
ce duce la greutăți deosebite în activitatea de dezvoltare a aplicațiilor.
Redundanța datelor din fișierele clasice.
Noțiunea de redundanță se referă la repetarea unor informații. O
aplicație conține în general mai multe fișiere. Acestea au legături între ele prin
niște date comune. Aceste date comune ( redundante ) pot la aplicații complexe
să ajungă în cantități foarte mari. Acest lucru creează pe lângă ocuparea unui
spațiu de memorare inutil, în special dificultăți în actualizarea fișierelor
(deoarece modificarea unei date comune trebuie să se facă în toate fișier ele
care o conțin pe aceasta).
161.5.2 Organizarea datelor în baze de date
O bază de date poate fi folosită de una sau mai multe aplicații, care vor
gestiona o anumită activitate
Sistemele de baze de dat e sunt o componentă esențială a vieții de zi cu zi în
societatea modernă. În cursul unei zile, majoritatea persoanelor desfășoară activități
care implică interacțiunea cu o bază de date: depunerea sau extragerea unor sume de
bani din bancă, rezervarea bile telor de tren sau avion, căutarea unei referințe într -o
bibliotecă computerizată, cumpărarea unor produse etc.
Bazele de date pot avea dimensiuni (număr de înregistrări) extrem de variate,
de la câteva zeci de înregistrări (de exemplu, baza de date pentru o agendă cu numere
de telefon) sau pot ajunge la zeci de milioane de înregistrări (de exemplu, baza de date
de plată pentru plata taxelor și a impozitelor).
Utilizatorii unei baze de date au posibilitatea să efectueze mai multe categorii
de operații asup ra datelor memorate:
-Introducerea de noi date (insert);
-Ștergerea unora din datele existente (delete);
-Actualizarea datelor memorate (update);
-Interogarea bazei de date (query) pentru a regăsi anumite informații, selectate
după un criteriu ales.
În continuare sunt prezentate principalele obiective ale organizării datelor în
baze de date.
1.Asigurarea independenței relative a programelor față de structura datelor este
primul obiectiv al organizării datelor în b aze de date, și desigur cel mai important. El
este îndeplinit tocmai prin memorarea distinctă a structurii logice a datelor în tabele.
2.Asigurarea unei redundanțe minime și controlate a datelor este al doilea
obiectiv major al organizării date lor în baze de date. Aceasta în seamnă că se urmăreșteO bază de date (database) este o colecție de date corelate din punct de
vedere logic, care reflectă un anumit aspect al lumii reale și este destinată
unui anumit grup de utilizatori.Integritatea datelor.
Noțiunea de integritate se referă la faptul că datele au o anumită
structură și ele trebuie să respecte anumite corelații logice. De exemplu, dacă
avem un câmp care reprezintă vârsta unei persoane, o valoare negativă introdusă
în acesta va determina o 'eroare logică' în date. Integritatea datelor reprezintă
poate cel mai important lucru pentru o aplicație complexă. Fișierele clasice nu
au metode speciale de verificare și protecție a structurilor logice care se creează
între datele aparținând unuia sau mai multor fișie re.
17pe cât posibil ca fiecare câmp să apară numai într -un singur fișier, deci numai o singură
dată în bază. Excepție fac câmpurile comune ce apar în fișiere distincte și câmpurile
care fac necesară întregirea semnificației semantice a datelor, a înțelesului acestora.
Duplicarea datelor, redundanța, trebuie redusă la minim și menținută sub control.
O anumită redundanță trebuie acceptată pentru a asigura perfor -manțe sporite
programelor de accesare și prelucrare a bazei datelor. Redundanța minimă se asigură
prin tehnici le de proiectare a bazelor de date, de exemplu normalizarea bazelor de date
relaționale.
Celor două obiective menționate până acum li se mai pot adăuga și altele la fel
de importante, cum ar fi:
-Asigurarea unor facilități sporite de utilizare se realizeaz ă prin pu nerea la
dispoziția utilizatorilor a unei interfețe prietenoase, ce permite un dialog concis pentru
actualizarea și exploa tarea bazei de date. Utilizatorii obișnuiți nu trebuie să cunoască
structura întregii baze de date, ei pot să utilizeze un l imbaj mai apropiat de limbajul
natural al procedurilor de actualizare, int erogare și afișarea datelor din baza de date.
-Securitatea datelor vizează prevenirea accesului neautorizat la baza de date,
lucru posibil prin filtrarea drepturilor de acces ale fiec ărui utilizator și printr -un sistem
de parole multinivel.
-Păstrarea integrității datelor îns eamnă prevenirea distrugerii ac cidentale a
fișierelor, fapt care obligă la instituirea unui set de proceduri de autorizare, dar și de
confirmare a operațiilor de șt ergere, adăugare, precum și proceduri de realizare a unor
copii de siguranță, a unor jurnale de urmărire a actualizărilor și proceduri de refacere a
bazei de date, de re staurare a acesteia, în caz de incidente.
-Partajabilitatea datelor trebuie înțeleasă nu numai sub aspectul uti -lizării în
comun de către mai multe aplicații ale aceleiași baze de date, ci ca posibilitate a
dezvoltării de noi aplicații, de scriere de noi programe ce necesită poate chiar
extinderea/modificarea aplicațiilor aflate deja în funcț iune.
1.6 Întrebări
1. Ce este modelarea ?
Răspuns:
2. Care sunt tipurile de modele prin care se reprezintă un obiect sau fenomen din
lumea reală în scopul realizării unei aplicații informatice
Răspuns:Prin modelare se înțelege reprezentarea unui obiect, fenomen, sau proces din
lumea reală într -un anumit sistem(matematic, fizic, informatic). Modelul este
creat pentru a permite studiul obiectului sau fenomenului din lumea reală, într -un
anumit context.
183. Care sunt metodele de organizare a datelor?
Răspuns:
4. Ce este un obiect ?
Răspuns:
5. Care sunt cele mari trei neajunsuri ale organizării datelor în fișierele clasice ?
Răspuns:
6. Ce este o bază de date ?
Răspuns:Tipuri de modele:
– modelul conceptual
-modelul logic
-modelul fizic
Există două metode de organizare a datelor:
-în fișiere clasice;
-în baze de date.
191.7 Test grilă tema1
1. Care dintre următo arele tipuri de modele are cel mai înalt grad de
abstractizare :
a)modelul conceptual;
b)modelul logic;
c)modelul tehnic;
d)modelul abstract;
e)nici unul;
2.Organizarea ș i accesul secven țial la înregistr ările fișierelor clasice presupune:
a)selectarea unei înregistr ări pe baza unei rela ții de calcul care determin ă locul unde se
găseste pe suport înregistrarea respectivă.
b)selectarea unei anumite înregistr ări prin parcurgerea tuturor înregistră rilor
precedente .
c)selectarea unei anumite înregistrări fără a fii necesar ă parcurgerea înregistrărilor
precedente .
d)selectarea unei înregistrări prin accesul direct la aceasta .
3. Care sunt neajunsurile organizării datelor în fișiere clasice?
a) independenta datelor
b) sortarea datelor
c) integritatea d atelor
d) redundanța datelor
e) indexarea datelor
f) interclasarea datelor
3. Care dintre următoarele caracterizări se referă la termenul de INTEGRITATE
a datelor:
a)păstrarea structurii logice și a coerenței datelor;
b)posibilitatea de refacere a date lor în cazul unor "accidente", "blocări" sau "viruși" la
execuția aplicațiilor;
c)nerepetarea acelorași date în fișierele aplicației;
d)posibilitatea execuției aplicațiilor, în diferite sisteme de operare;
e)schimbarea structurii datelor nu implică modi ficarea programelor;
4. Care dintre următoarele caracterizări se referă la termenul de REDUNDANȚĂ
a datelor?
a)Posibilitatea de a se putea executa o ap licație, sub diferite sisteme de operare.
b)Posibilitatea de refacere a datelor în cazul unor "acciden te".
c)Nerepetarea acelora și date în fi șierele aplica ției.
d) Păstrarea structurii logice a datelor.
20e)Posibilitatea de a nu modifica programele dac ă se schimba st ructura fiș ierelor
aplicației.
5. Care dintre urm ătoarele caracteriz ări se referă la terme nul de
INDEPENDENȚĂ a datelor?
a)Nerepetarea acelora și date în fi șierele aplica ției.
b) Păstrarea structurii logice a datelor.
c)Posibilitatea de refacere a datelor în cazul unor "accidente".
d)Posibilitatea de a se putea executa o aplica ție, sub diferi te sisteme de operare.
e)Posibilitatea de a nu modifica programele dac ă se schimb ă structura fi șierelor
aplicației.
6. Noțiunea de bază de date definește:
a)O colecție de date opera ționale stocate folosită de sistemele de aplica ții ale unei
anumite acti vități.
b)O colecție de date organizate independent și hibrid, indexate secven țial.
c)Un sistem redundant ce asigur ă integritatea și independenta datelor .
d)O colecție de obiecte folosite doar pentru afi șarea de date .
e)O colecție de sisteme redundante ce asigur ă calculul asupra datelor .
f)O colecție de SGBD -uri.
21Tema 2
Sisteme de gestiune a bazelor de date. Proiectarea bazelor de date relaționale
Cuprinsul Temei 2:
2.1 INTRODUCERE ………………………….. ………………………….. ………………………. 21
2.2 SISTEME DE GESTI UNE A BAZELOR DE DAT E………………………….. .22
2.2.1MODELUL IERA RHIC………………………….. ………………………….. ……………… 22
2.2.2MODELUL REȚEA ………………………….. ………………………….. ………………….. 24
2.2.3MODELUL RELAȚIONAL ………………………….. ………………………….. ………….25
2.2.3.1 Tabele ………………………….. ………………………….. ………………………….. 25
2.2.3.2 Relații ………………………….. ………………………….. ………………………….. .26
2.3 OPERAȚII ÎN MODE LUL RELAȚIONAL. INTR ODUCERE ÎN ALGEBRA
RELAȚIONALĂ ………………………….. ………………………….. ………………………….. ..27
2.4 ÎNTREBĂRI ………………………….. ………………………….. ………………………….. …31
2.5 TEST GRILĂ TEMA 2………………………….. ………………………….. ……………… 33
Obiective
Însușirea noțiunilor de sisteme de gestiune a bazelor de date.
Proiectarea modelelor de organizare a bazelor de date :ierarhic, rețea,
relațional .
Cunoașterea operațiilor specifice modelului relațional.
Timp alocat:2 ore
2.1Introducere
Pentru crearea unei bază de date, pentru actualizarea permanentă a conținutului
acesteia și pentru consultarea și prelucrarea datelor stocate aici es te utilizat un sistem
specializat de programe cunoscut sub denumirea de sistem de gestiune a bazei de
date(SGBD). El este un instrument software la care utilizatorul apelează pentru
comunicarea cu baza de date la fel cum apelează la sistemul de operare Wi ndows
pentru a comunica cu computerul. El este plasat la u n nivel intermediar între utili zator
și baza de date și asigură:
-o interfață prietenoasă pentru comunicarea cu utilizatorul;
-un mediu de programare performant, format dintr -un editor pro -priu de texte,
un compilator, un utilitar pentru depanarea pro -gramelor, alte utilitare și instrumente de
lucru cu baza de date.
22Sistemul de gestiune a bazei de date dispune de un limbaj de descriere a
datelor(DDL– Data Definition Language ) și de un limbaj de manipulare a datelor
(DML– Data Manipulation Language ) cu ajutorul cărora se asigură îndeplinirea
funcțiilor sale și anume:
-definirea structurii bazei de date;
-manipularea datelor, adică: încărcarea datelor în baza de date, actualizarea
acestora, sortarea, indexarea, concatenarea ș.a.;
-utilizarea bazei de date, ceea ce înseamnă: accesare rapidă, listare, calcule,
editarea rapoartelor etc.;
-administrarea bazei de date, care presupune: optimizarea structurii bazei de
date, validarea accesului l a date, reor ganizarea, compactarea bazei și refacerea bazei în
caz de incidente pentru asigurarea securității sau integrității bazei de date.
Un SGBD are rolul de a furniza suportul software complet pentru dezvoltarea
de aplicații informatice cu baze de date.El trebuie să asigure:
-minimizarea costului de prelucrare a datelor,
-reducerea timpului de răspuns,
-flexibilitatea aplicațiilor și
-protecția datelor.
2.2 Sisteme de gestiune a bazelor de date
Din punct de vedere al modului de organizare, structurar e și accesare a datelor,
cele mai cunoscute sisteme de gestiune a baz elor de date sunt:
-modelul ierarhic ;
-modelul de tip rețea;
-modelulrelațional .
2.2.1 Modelul ierarhic
Modelul de date ierarhic a fost primul model folosit pentru dezvoltarea bazelor
de date. Cea mai cunoscută realizare de SGBD ierarhic este sistemul IMS (Information
Management System) dezvoltat de firma IBM în cadrul programului de cercetări
Apollo, în perioada anilor 1960.Accesul la date se referă la operațiile de interogare și actualizare.
Interogarea este complexă și presupune vizualizarea, consultarea,
editarea de situații de ieșire (rapoarte, liste, regăsiri punctuale).
Actualizarea presupune 3 operații: adăugare, modificare efectuate prin
respectarea restricțiilor de integritate și ștergere
23Modelul ier arhic se reprezintă prin următoarea diag ramă de structură:
Figura 2.2 .1.1.Diagrama de structură a modelului ierarhic
Într-o asemenea ierarhie există o înregistrare (nod) rădăcină și mai multe
înregistrări (noduri) subordona te, cu legături de tip arbore , pe unul sau mai multe
niveluri ierarhice.
O asemenea abordare rezolvă problema redundantei. De asemenea , permite
modificări relativ ușoare a structurii bazei de date.
Modelul ierarhic creează totuși dificultăți majore:
-mărimea exagerată a timpului de regăsire a info rmațiilor(deci și a actualizării
datelor), deoarece pentru a ajunge la o anumită entitate este necesară parcurgerea
fiecărei ramificații de la vârf până la nivelul pe care se găsește acesta;
-numărul de ierarhii posibile crește combinatoric cu numărul înreg istrărilor,
ceea ce poate conduce la "explozia" volumului de date, greu controlabil;BĂNCI Nodul
rădăcină
BANCA 1 … BANCA n
FILIALA
1FILIALA
2FILIALA
1FILIALA
2FILIALA
3Noduri subordonateBazele de date ierarhice se caracterizează prin faptul că elementele
componente au relații de subordonare de tip unu la mulți, astfel încât
fiecare entitate are în subordine una sau mai multe entități și este
subordonată, la rândul ei, unei singure entită ți superioare.
Între noduri se respectă următoare regulă: fiecare nod intermediar, care
nu estenici nod rădăcină și nici nod final, are un singur nod superior
(părinte) și unul sau mai multe noduri inferioare (copii). Astfel, legătura
dintre un nod părinte și unul fiu este de tip 1:N, în timp ce între un nod
copil și unul părinte este de tip 1:1.
24-abordarea ierarhică nu este posibilă pentru anumite structuri de date.
Aceste limite ale modelului ierarhic au determinat evoluția spre modelul rețea.
2.2.2 Modelul rețe a
Deosebirea față de modelul ierarhic constă în aceea că în modelul rețea
asocierile M:N se reprezintă fără duplicarea înregistrărilor, fiecare înregistrare putând
fi referită de mai multe înregistrări, ceea ce elimină redundanța.
În modelul re țea, un nod copil poate avea mai multe noduri părinți. Trebuie
precizat faptul că act ualizările la acest model înseamnă adăugări, modificări și ștergeri
de realizări, atât asupra tipurilor de înregistrări cât și asupra legăturilor.
Modelul este destul de performant dar foarte complicat și dificil de
implementat. Legăturile formează trasee care permit o regăsire ușoară a informațiilor
de pe orice nivel., însă o actualizare a structurii (modificare nodurilor sau legăturilor)
creează probleme deosebit de comp licate și complexe .
Diagrama de structură a modelului rețea se prezint ă astfel:
Figura2.2.2.1 Diagrama de structură a modelului rețea
În momentul de față modelul de date rețea este foarte rar utilizat pentru baze de
date de uz general ( care implică operații de interogare), dar există unele domenii în
care structurarea ca graf a datelor permite o parcurgere eficientă a acestora. DeBĂNCI
BANCA 1 … BANCA n
FILIALA
1FILIALA
2FILIALA
1FILIALA
2FILIALA
3Modelul rețea folosește o structură de graf pentru definirea schemei
conceptuale a bazei de date; nod urile grafului sunt tipuri de entități
(înregistrări – records), iar muchiile grafului reprezintă în mod explicit
asocierile (legăturile -links) dintre tipurile de entități.
25exemplu, majoritatea bazelor de date grafice folosite în modelarea scenelor
tridimensionale din realitatea v irtuală sunt baze de date rețea
2.2.3 Modelul relațional
Acest model de date a apărut ca urmare a anomaliilor evidențiate la modelele
de date precedente, cum ar fi cele constatate la actualizare, cele referitoare la
redundanța informațională, precum și la modul de utilizare eficientă a spațiului.
Modelul relațional a fost fundamentat în 1970 de către E. F. Codd, pe baza
teoriei matematice a calculului relațional și a relațiilor, conform cărora orice structură
de date se poate reprezenta sub forma de t abele legate între ele prin așa -numita
informație de legătură.
Pe lângă avantajul unui model de date precis și simplu, sistemele de baze de
date relaționale mai beneficiază și de un limbaj de programare unanim recunoscut și
acceptat, limbajul SQL (Structu red Query Language) .
2.2.3.1 Tabele
Entitățile conținute într -un tabel vor avea aceiași structură, care va reprezenta
atributele (caracteristicile, câmpurile) obiectelor conținute de tabel.
Spre exemplificare, oferim în figura 2.2.3.1.1 o bază de date cu două tabele
ANGAJATI șiDEPARTAMENTE . În acest exemplu:
ANGAJATI areșapte atribute (câmpuri) , Cod_A, Nume, Prenume ,
Data_nașterii, Cod_D,Funcția,Salariu.
DEPARTAMENTE are trei atribute (câmpuri) Cod_D,DenumireD și
Nr_Angajați .
ANGAJATI are patru înregistrări
DEPARTAMENTE are trei înregistrări.Modelul relațional se compune din două elemente principale: tabele și
relații.
Tabelele, printr -o structură asemănătoare cu a fișierelor clasice, conțin
entitățile care se găsesc în baza de date. Fiecare tabel poate fi considerat
ca o structură în plan, bidimensională, care descrie prin
entitățile(înregis trările) pe care le conține o anumită mulțime de obiecte
de același fel.
26Tabela ANGAJAȚI
Cod_A Nume Prenume Data_nașteriiCod_DFuncție Salariu
1Ionescu Ion 05.01.1967 10Inginer 5000
2Popescu Petre 21.06.1972 20Maistru 3500
3Marin Ana 02.04.1975 10Secretară 3000
4Dincă Nicolae 01.03.1965 30Inginer 5000
TabelaDEPART AMENTE
Cod_DDenumireD Nr_Angajați
10CROIT 15
20CUSUT 20
30FINISAJ 25
Figura 2.2.3.1.1 Tabele
De exemplu putem din tabelul “ANGAJAȚI ”, să obținem informați i despre
:numele angajaților, data nașterii, funcția și salariul obținut de acești a, etc., dar n u vom
putea să oferim informații despre numărul de angajați ai fiecărui departament , deoarece
nu pot fi concomitent vizibile tabelele “ANGAJAȚI” și“DEPARTAMEN TE”.
2.2.3.2 Relații
Dacă ne referim la exemplul prezent at anterior, relațiaîntre entitățile celor
două tabele DEPARTAMENTE șiANGAJAȚI se va realiza prin câmpul(atributul):
„Cod_D”. În acest fel, se poate acum știi care este denumirea dep artamentului la care
esteangajată fiecare persoană , dar informația folo sită pentru această legătură(Cod_D )
se va găsi în ambele tabele .
Modelul relațional prezentat, va arăta ca în figura de mai jos:Relațiile, au rolul de a introduce a treia dimensiune în modelul relațional,
deci de a permite extragerea de informații din mai multe tabele în același
timp(asemănător scărilor care fac legătura între nivele unei clădiri).
Relațiile se realizează între două câmpuri (atribute), care reprezintă
același fel de informații și care aparțin celor două tabele între care se
stabilește o relație. Dealtfel, datorită acestei dublări a informației folosită
la realizarea relațiilor, modelul relațional are un gr ad ridicat de
redundanță.
27Figura2.2.3.2.1 Modelul relaționa l
2.3 Operații în modelul relațional. Introducere în algebra relațională
În algebra relațională „clasică” toți operanzii și toate rezultatele expresiilor
sunt mulțimi. Deoarece un tabel este o mulțime, multe dintre aceste operații sunt
preluate din teor ia mulțimilor. Algebra relațională este un set de opt operații, care
preiau unul sau mai multe tabele ca operanzi si produc un nou tabel(virtual) ca rezultat.
Deci o data ce avem creată si încărcată o bază de date, în momentul în care
avem de furnizat a numite informații, prin operații de algebră relațională se realizează
un tabel virtual, numai cu datele necesare solicitării respective. Aceasta reprezintă o
operație de interogare a unei baze de date.
De asemenea prin intermediul celor opt operații, din punct de vedere teoretic,
se poateactualiza o baza de date relațională, și anume se permite:
-Adăugarea – introducerea de noi înregistrări în tabele.
-Modificarea – schimbarea unor câmpuri dintr -o înregistrare
-Ștergerea – eliminarea unei înregistrări.
Operațiile în algebra relațională sunt următoarele:
1. Produsul cartezian extins .
Exemplu:Tabela DEPARTAMENTE
Cod_D
DenumireD
Nr_AngajațiTabela ANGAJAȚI
Cod_A
Nume
Prenume
Data_nașterii
Funcție
Salariu
Cod_D
Produsul cartezia n extins, produce un tabel virtual care va avea toate
coloanele tabelelor de intrare și un număr de înregistrări suficient pentru
a exprima toate combinațiile posibile ale acestor tabele. Este deci cel mai
mare tabel care rezultă din combinarea mai multor tabele.
28Produsul cartezian extins
Câmp1 Câmp2 Câmp3 Câmp4 Câmp5
A A1 A2 C 1
A A1 A2 D 2
A A1 A2 E 3
B B1 B2 C 1
B B1 B2 D 2
B B1 B2 E 3
2. Selecția .
Exemplu:
3. Proiecția.
Exemplu:Tabela 2
Câmp4 Câmp5
C 1
D 2
E 3Tabela 1
Câmp1 Câmp2 Câmp3
A A1 A2
B B1 B2
Tabela 2
Câmp4 Câmp5
C 1
D 2
E 3Selecție
Câmp4 Câmp5
D 2
E 3Selecția, produce un tabel virtual care în urma unei operații de filtrare
reprezintă un subset orizontal al tabelului originar. Deci dintr -un tabel
sunt păstrate numai acele entități(înregistrări, rânduri) care respectă
anumite condiții.
Proiecția, produce un tabel virtual care reprezintă un subset vertical al
tabelului originar. Deci dintr -un tabel sunt păstrate numai acele
coloane(câmpuri) care ne interesează. În urma acestei operații pot rezulta
și câmpuri virtuale.Selecție
Câmp5>=2
294. Alăturarea(join).
Exemplu:
Alăturarea
Câmp1 Câmp2 Câmp3 Câmp4 Câmp5
A A1 A2 C 1
A A1 A2 D 2
B B1 B2 C 1
B B1 B2 D 2
5. Reuniunea.
Exemplu:Tabela 1
Câmp1Câmp2 Câmp3
A A1 A2
B B1 B2Proiecție
Câmp1 Câmp2
A A1
B B1
Tabela 1
Câmp1 Câmp2 Câmp3
A A1 A2
B B1 B2Tabela 2
Câmp4 Câmp5
C 1
D 2
E 3
Tabela 3
Câmp1 Câmp2 Câmp3
C C1 C2Tabela 1
Câmp1 Câmp2 Câmp3
A A1 A2
B B1 B2
Reuniune
Câmp1 Câmp2 Câmp3
A A1 A2
B B1 B2
C C1 C2Join
Câmp5
<3Alăturarea, este un produs cartezian, dar în care sunt păstrate numai
înregistrările care satisfac o anumită condiție. Deci această operație este
formată dintr -un produs cartezian extins urm at de o selecție.
Reuniunea, produce un tabel care conține toate înregistrările celor două
tabele originale, acestea trebuind să aibă aceleași câmpuri. Deci
adăugarea un ei înregistrări la un tabel este practic o operație de
reuniune.Proiecție
Câmp1
Câmp2
306. Intersecția.
Exemplu:
7. Diferența .
Exemplu:
8. Împărțirea.Tabela 1
Câmp1 Câmp2 Câmp3
A A1 A2
B B1 B2Tabela 1
Câmp1 Câmp2 Câmp3
A A1 A2
B B1 B2
Intersecție
Câmp1 Câmp2 Câmp3
B B1 B2
Tabela 4
Câmp1 Câmp2 Câmp3
C C1 C2
B B1 B2Tabela 1
Câmp1 Câmp2 Câmp3
A A1 A2
B B1 B2
Diferență
Câmp1 Câmp2 Câmp3
A A1 A2Intersecția, reprezintă mulțimea tuturor înregistrărilor care se găsesc
simultan în ambele tabele. Evident pentru a se produce acea sta operație
condiția de la reuniune( ca ambele tabele să conțină aceleași coloane)
trebuie respectată.
Diferența, dintre doua tabele, X și Y, (compatibile pentru reuniune, deci
cu aceleași câmpuri) constă în mulțimea înregistrărilor din X care nu
sunt în Y .
Împărțirea, dintre doua tabele, X și Y, duce la crearea unui tabel care
conține câmpurile din X care nu sunt în Y si înregistrările din X care sunt
identice cu cele din Y( în ceea ce privește coloanele comune). Evident că
există puține șanse de a aplica un asemenea operator într -o aplicație
reală.
31Exemplu:
Extinderea alg ebrei relaționale reprezintă modalitatea de implementare
practică într -un SGBD, a algebrei relaționale(practic numai a anumitor operații). În
general se realizează prin definirea a dou ă limbaje:
-Limbajul de definire a datelor (DDL) care este folosit pentru : crearea de tabele
și definirea câmpurilor acestora, s tabilirea cheilor , indexări și sortări , stabilirea
relațiilor,asigurarea protecției datelor .
-Limbajul de manipulare a datelor (DML) care se ocupă de : interogarea bazei
de date și actualizarea bazei de date.
–
2.4Întrebări
1. Prin ce se caracterizează modelul iererhic de reprezentare a bazelor de date ?
Răspuns:
2. Care este depsebirea dintre modelul rețea și modelul ierarhic ?
Răspuns:
3. Ce este o tabela ?
Răspuns:Tabela 5
Câmp1 Câmp4 Câmp5
B X1 X2
C Y1 Y2Tabela 4
Câmp1 Câmp2 Câmp3
A A1A2
B B1 B2
Împărțire
Câmp2 Câmp3
B1 B2
Bazele de date ierarhice se caracterizează prin faptul că elementele
componente au relații de subordonare de tip unu la mulți, astfel încât fiecare
entitate are în subordine una sau mai multe entități și este subordonată, la
rândul ei, unei singure entități superioare.
Deosebirea dintre modelul rețea și modelul ierarhic constă în aceea că în
modelul rețea asocierile M:N se repre zintă fără duplicarea înregistrărilor,
fiecare înregistrare putând fi referită de mai multe înregistrări, ceea ce elimină
redundanța.
324. Ce rol au rel ațiile întro bază de date relațională ?
Răspuns:
5. Care sunt operațiile care se pot efectua asupra unei baze de date prin operațiile de
algebră relațională ?
Răspuns:
6. Ce înseamnă produsul cartezian extins ?
Răspuns:
7. Cum se realizea ză impărțirea a doua tabele X și Y ?
Răspuns:Tabelele conțin entitățile care se găsesc în baza de date. Fiecare tabel poate fi
considerat ca o structură în plan, bidimensională, care descrie prin
entitățile(înregistrările) pe care le conține o anumită mulțime de obiecte de
același fel.
332.5 Test grilă tema2
1. Bazele de date pot fi de urm ătoarele tipuri:
a)Sistemice
b)Referențiale
c)Ierarhice
d)Relaționale
e)În rețea
f)Existențiale
2.Căruia dintre următoarele modele de SGBD -uri i se potrivește afirmația:
”fiecare părinte poate avea mai mulți copii, dar un copil nu poate avea decât un
singur părinte” :
a) modelului ierarhic;
b)modelului rețea;
c)modelului relațional;
d)a+b;
e)a+c;
3. Modelul IERARHIC de administrare a bazel or de date permite:
a)proiectarea relativ uș oară a structurilor de date care se realizeaz ăînsa printr -o
creștere a redundan ței datelor fa ță decelelalte dou ă modele.
b)regăsirea ușoară a informa țiilor de pe orice nivel.,dar actualizarea creeaz ă probleme
deosebit de complicate și complexe .
c)actualizări relativ u șoare în bazele de date, dar creeaz ă dificultăți majore în
extragerea unor informa ții de pe anumite nivele.
d)introducerea datelor într-o colecție de noduri și legături, fiecare nod putând fi le gat
de oricare altul .
e)extragerea u șoară a unor informa ții de pe anumite nivele .
4. Modelul RE ȚEA de administrare a bazelor de date permite:
a)introducerea datelor într -o structura arborescenta ramificata cu un singur vârf, sub
forma unei piramide
b)proiectarea relativ uș oară a structurilor de date care se realizeaz ăînsa printr -o
creștere a redundan ței datelor fa ță decelelalte dou ă modele.
c)regăsirea ușoară a informa țiilor de pe orice nivel.,dar actualizarea creeaz ă probleme
deosebit de complicate și complexe .
d)actualizări relativ u șoare în bazele de date, dar creeaz ă dificultăți majore în
extragerea unor informa ții de pe anumite nivele.
5. Care dintre urm ătoarele afirma ții referitoare la administrarea bazelor de date
sunt CORECTE?
34a)O bază de date de tip re țea reprezint ă o colecție de noduri și legături (un graf),
fiecare nod putând fi legat de oricare altul.
b)Într-o bază de date administrat ă ierarhic, fiecare 'p ărinte' poate avea mai mul ți
'copii', iar un 'copil' poate avea mai mul ți'părinți'.
c)Într-o bază de date administrat ă ierarhic, fiecare 'p ărinte' poate avea mai mul ți
'copii', dar un 'copil' nu poate avea decât un singur 'p ărinte'.
c)Proiectarea unei baze de date în modelul ierarhic șiîn modelul re țea presupune
creșterea redundan ței datelor
d)Proiectarea unei baze de date rela ționale se realizează prin construirea unei structuri
arborescente ramificat ă cu unsingur vârf, sub forma unei piramide
6. Componentele modelului relațional sunt:
a)înregistrările și relațiile;
b)câmpurile și relațiile;
c)înregistrările și câmpurile;
d) tabelele și relațiile;
e)tabelele și câmpurile;
7. Care din următoarele afirmații este corectă:
a)modelul ierarhic creează dificultăți majore în ceea ce privește extragerea
informațiilor de pe anumite n ivele;
b)modelul relațional elimină total problema redundanței;
c)SGBD-ul permite crearea dar nu și manipularea datelor;
d)redundanța este o noțiune care se referă la complexitatea datelor;
e)valoarea atomică reprezintă un tip de date;
8.Care dintre următoarele afirmații este corectă:
a)modelul ierarhic creează deficiențe majore în ceea ce privește problema redundanței
datelor;
b)în modelul rețea datele sunt organizate sub forma unei structuri arborescente
ramificate;
c)în modelul ierarhic datele sunt organizate sub forma unei structuri formate din
noduri și legături între acestea;
d)modelul relațional se compune din două elemente principale: relații și tabele;
e)modelul relațional se remarcă prin rezolvarea totală a neajunsurilor organizării
datelor în fișiere clasice;
9.La bazele de date relaționale, care dintre următoarele caracteristici considerați
că este mult mai slab rezolvată decât la bazele de date ierarhice:
a)integritatea datelor;
b)independența datelor;
c) redundanța datelor;
d)interfața cu utilizatorul;
35e)crearea cererilor;
10. Care dintre definițiile următoare reprezintă operația de produs cartezian
extins:
a)produce la ieșire o tabelă virtuală care va avea toate coloanele tabelelor de intrare și
un număr suficient de înreg istrări pentru a exprima toate combinațiil e posibile ale
acestor tabele;
b)produce la ieșire o tabelă virtuală care conține toate înregistrările tabelelor de
intrare;
c)produce la ieșire o tabelă virtuală care conține toate coloanele tabelelor de intrar e;
d)produce la ieșire o tabelă virtuală care se obține păstrând numai înregistrările care
satisfac o anumită condiție;
e)produce la ieșire o tabelă virtuală care conține produsul dintre datele din tabelele de
intrare;
11. Care dintre definițiile următo are reprezintă operația de selecție:
a)produce la ieșire o tabelă virtuală care în urma unei operații de filtrare reprezintă un
sub-set orizontal al tabelei originare;
b)produce la ieșire o tabelă virtuală care reprezintă un sub -set vertical al tabelei
originare;
c)produce la ieșire o tabelă virtuală care se obține păstrând numai înregistrările care
satisfac o anumită condiție din rezultatul produsului cartezian extins efectuat între două
tabele;
d)produce la ieșire o tabelă virtuală care conține toate înregistrările celor două tabele
originare;
e)produce la ieșire o tabelă virtuală care conține toate înregistrările care se găsesc
simultan în ambele tabele.
12.Care dintre definițiile următoare reprezintă operația de proiecție:
a)produce la ieșire o tabelă virtuală care în urma unei operații de filtrare reprezintă un
sub-set orizontal al tabelei originare;
b)produce la ieșire o tabelă virtuală care reprezintă un sub -set vertical al tabelei
originare; .
c)produce la ieșire o tabelă virtuală care con ține toate coloanele tabelelor originare;
d)produce la ieșire o tabelă virtuală care conține toate înregistrările tabelelor originare;
e)produce la ieșire o tabelă virtuală prin proiectarea înregistrărilor unei tabele;
13.Care dintre definițiile următo are reprezintă operația de alăturare (join):
a)produce la ieșire o tabelă virtuală care reprezintă toate înregistrările și coloanele
tabelelor originale;
b)produce la ieșire o tabelă virtuală care se obține păstrând numai înregistrările care
satisfac o a numită condiție din rezultatul produsului cartezian extins efectuat între două
tabele;
36c)produce la ieșire o tabelă virtuală care conține toate coloanele tabelelor originare;
d)produce la ieșire o tabelă virtuală care conține toate înregistrările tabele lor originare;
e)produce la ieșire o tabelă virtuală care conține mulțimea tuturor înregistrărilor care
se găsesc simultan în tabelele de intrare;
14. Care dintre definițiile următoare reprezintă operația de reuniune (union):
a)produce la ieșire o tabel ă virtuală care conține mulțimea tuturor înregistrărilor care
se găsesc simultan în tabelele de intrare (care au aceleași câmpuri);
b)produce la ieșire o tabelă virtuală care conține mulțimea tuturor coloanelor care se
găsesc simultan în tabelele de intra re;
c)produce la ieșire o tabelă virtuală care se obține păstrând numai înregistrările care
satisfac o anumită condiție în tabelele de intrare;
d)produce la ieșire o tabelă virtuală care conține toate înregistrările tabelelor de intra re
(care au aceleași câmpuri);
e)produce la ieșire o tabelă virtuală care conține mulțimea tuturor înregistrărilor și
coloanelor care se găsesc în tabelele de intrare;
15. Care dintre definițiile următoare reprezintă operația de intersecție:
a)produce la ieșire o tabelă v irtuală care reprezintă intersecția dintre înregistrările și
coloanele tabelelor de intrare;
b)produce la ieșire o tabelă virtuală care conține mulțimea tuturor înregistrărilor care
nu se găsesc simultan în tabelele de intrare (care au aceleași câmpuri);
c)produce la ieșire o tabelă virtuală care conține mulțimea tuturor înregistrărilor care
se găsesc simultan în tabelele de intrare (care au aceleași câmpuri);
d)produce la ieșire o tabelă virtuală care conține toate înregistrările tabelelor de intrare
(care au aceleași câmpuri);
e)produce la ieșire o tabelă virtuală care se obține păstrând numai înregistrările care
satisfac o anumită condiție din rezultatul produsului cartezian extins efectuat între
tabelele de intrare;
16. Care dintre definițiile urmă toare reprezintă operația de diferență:
a)produce la ieșire o tabelă virtuală care reprezintă diferența dintre înregistrările și
coloanele tabelelor de intrare;
b)produce la ieșire o tabelă virtuală care reprezintă diferența dintre coloanele și
înregistrările tabelelor de intrare;
c)produce la ieșire o tabelă virtuală care conține mulțimea tuturor înregistrărilor care
nu se găsesc simultan în tabelele de intrare (care au aceleași câmpuri);
d)produce la ieșire o tabelă virtuală care conține mulțimea tutu ror înregistrărilor care
se găsesc simultan în tabelele de intrare (care au aceleași câmpuri);
e)dintre două tabele X și Y (care au aceleași câmpuri) constă în mulțimea
înregistrărilor din X care nu sunt în Y;
17. Care din enunțuri conține numai operați i de algebră relațională:
37a)selecția, proiecția, alăturarea, produsul cartezian;
b)adăugarea, selecția, modificarea, ștergerea ;
c)proiecția, actualizarea;
d)reuniunea, actualizarea, selecția, ștergerea;
e)actualizarea, adăugarea, modificarea, șterge rea.
18. În urma operației de selecție: "[Câmp2]=3", aplicată asupra tabelei
următoare, câte înregistrări rezultă:
19. În urma operației de proiecție: "[Câmp1] și [Câmp3]", aplicată asupra tabel ei
următoare, câte înregistrări rezultă:
20. În urma operației de proiecție: "[Câmp1] și [Câmp3]", aplicată asupra tabelei
următoare, câte câmpuri rezultă:Câmp1 Câmp2 Câmp3
A 3 A1
D 1 D1
B 3 B1
E 2 E1
F 3 F1
Câmp1 Câmp2 Câmp3
A 3 A1
D 1 D1
B 3 B1
E 2 E1
F 3 F1
Câmp1 Câmp2 Câmp3
A 3 A1
D 1 D1
B 3 B1
E 2 E1
F 3 F1a)una
b)două;
c)trei;
d)cinci;
e)nici una;
a)nici una;
b)una;
c)două;
d)trei;
e)cinci;
a)nici unul;
b)unul;
c)două;
d)trei;
e)cinci;
38Tema 3
Schema unei baze de date. Principii de normalizare. Stabilirea cheilor .
Integritatea datelor
Cuprinsul Temei 3:
3.1 INTRODUCERE ………………………….. ………………………….. …………………….. 399
3.2 CARACTERISTICI A LE BAZELOR DE DATE RELAȚIONALE ……..39
3.2.1TABELA, CÂMPUL, ÎNREGISTRAREA ………………………….. …………………….. 39
3.2.2RELAȚII ÎNTRE TABELE ………………………….. ………………………….. …………..40
3.2.2.1 Tipuri de relații ………………………….. ………………………….. ……………… 41
3.2.2.1.1 Relațiile one to one(unu la unu) ………………………….. …………….. 41
3.2.2.1.2 Relațiile one to many(unul la mai mulți) ………………………….. ….43
3.2.2.1.3 Relațiile many to one(mai mulți la unu) ………………………….. …..43
3.2.2.1.4 Relațiile many to many(mau mulți la mai mulți) …………………… 44
3.2.2.2 Tipurile de legătură ale relațiilor ………………………….. …………………. 44
3.3 TIPURI DE CHEI ………………………….. ………………………….. …………………….. 45
3.4 PRINCIPII DE NOR MALIZARE A BA ZELOR DE DATE RELAȚI ONALE
………………………….. ………………………….. ………………………….. ………………………….. 45
3.5 INTEGRITATEA DAT ELOR………………………….. ………………………….. ……47
3.6 SORTARE ȘI INDE XARE…………………………… ………………………….. ……….48
3.7 EXEMPLE DE SISTE ME DE GESTIUNE A BAZ ELOR DE DATE
RELAȚIONALE ………………………….. ………………………….. ………………………….. …49
3.8 APLICAȚII ………………………….. ………………………….. ………………………….. …..50
3.9 ÎNTREBĂRI ………………………….. ………………………….. ………………………….. …51
3.10 TEST GRILĂ TEMA 3………………………….. ………………………….. ……………. 53
Obiective
Însușirea noțiunilor tabele și relații .
Proiectarea schemei unei bazer de date r elaționale.
Cunoașterea tipurilor de relații și a modului de construire a acestora .
Însușirea principiilor de normalizare a bazelor de date relaționale .
Timp alocat: 4ore
393.1 Introducere
Așa cum s -a arătat informațiile care se introduc într -o bază de date relațională
sunt stocate în unul sau mai multe tabele(in 2 dimensiuni) încare rândurile constituie
cazuri posibile (înregistrări ) iar coloanele reprezintă atributele unei înregistrări
(câmpuri).
În felul acesta printr -un tabel se descriu entități,acestea fiind o reprezentare
unică a unui anumit obiect din lumea reala, prin stabilirea tuturor atributelor acestuia.
Deci termenii de entitate siînregistrare înseamnă practic același lucru.
În modelul relațional, pentru ca fiecare entitate să fie unic ă este necesar ca cel
puțin unul dintre câmpurile tabelului să aibă o valoare unică.
De asemenea fiecare tabel va avea în baza de date un nume unic pentru a putea fi
identificat. Acesta împreună și cu alte caracteristici(prezentate în alt capitol) vor
reprezenta proprietățile tabelei.
3.2Caracteristici alebazelor de date relațional e
Într-o explicație simplistă, o bază de date poate fi definită ca o colecție de
informații. De exemplu, cartea de telefon este o bază de date, la fel cum este și agenda
cu numerele de telefon și catalogul cu fișe de la bibliotecă. O bază de date relațională
este formată din mai multe tabele între care se stabilesc diferite legături (relații).
3.2.1 Tabela, câmpul, înregistrarea
Modelul relațional asociază unei entități o t abelă bidimensională în care:
-coloanele tabelei reprezintă atributele (câmpuri) entității;
-liniile (rândurile) tabelei reprezintă membrii entității.
Fiecare coloană are un nume distinct, prima linie fiind destinată amplasării
acestor nume de atribute. Olinie dintr -o tabelă se numește înregistrare .
A1A2A3…An
Vi2
Figura3.2.1 Elementele unei tabele
La intersecția unui rând cu o coloană se află valoarea câmpului.Atribute
Numele
atributelor
Înregistrarea i
Valoare Membrii entității
40Exemplu:
TabelaDEPARTAMENTE, câmpulNr_angaja ți are tipul de date
numeric, byte și trebuie sa fie un număr mai mare ca 0, și eventual mai mic sau egal
decât 100. Asta înseamnă ca domeniul de valabilitate va fi între 1 și 100. În acest caz,
dacă se lucrează cu:
-un fișier clasic cu câmpul „Nr_Angajați” , de fiecare dată când se vor introduce
valori în acesta, prin instrucțiuni de program se va verifica dacă data introdusă este în
intervalul 1..100;
-dacă se va lucra cu un câmp „Nr_Angajați ”al unei tabele, acest lucru nu va
mai fi necesar, deo arece respectivul domeniu de valabilitate va fi precizat la
descrierea(proprietățile) câmpului.
3.2.2 Relații între tabele
Ceea ce diferențiază o bază de date relațională de alte aplicații de gestiune este
capacitatea acesteia de a lega două sau mai mu lte tabele astfel încât ele să apară în fața
utilizatorului ca o singură tabelă.
Pentru a se putea realiza acest lucru este obligatorie existența unor câmpuri
comune(câmpuri care să conțină același fel de date) în cele două tabele care intră în
legătură, ceea ce duce totuși la un aspect negativ, și anume la creșterea redundantei și
la "împrăștierea" datelor. De exemplu: Câmpul Cod_D se află atât în tabela
DEPARTAMENTE cât și îin tabela ANGAJAȚI.
Tabelele care i ntră intr-o relație vor fi în „tandemul părin te– copil”.Relația
dintre două tabele se caracterizează prin:
-tipul relației;
-tipul de legătură al relației.Un tabel este constituit di n câmpuri, care la rândul lor au anumite
proprietăți(caracteristici) printre cele mai semnificative fiind:
-Numele(identificatorul) câmpului;
-Tipul de date :numeric, boolean, string, etc.;
-Dimensiunea : pentru anumite tipuri de date(de exemplu string)
trebuie precizată și lungimea pe care o va avea câ mpul în memoria
calculatorului;
-Domeniul de valabilitate , adică limitele pe care le iau valorile
pentru a fi acceptate într -un câmp.
413.2.2.1 Tipuri de relații
Pentru explicarea tipurilor de relații considerăm următoarea problemă: O firmă
are mai multe gestiuni situate la adrese diferite. În aceste gestiuni se g ăsesc mai multe
produseîn stocuri dif erite, iar un produs se poate gă si în mai multe gestiuni.
Construim baza de date relațională astfel:
1.TabelaGESTIUNI : Cod_G (câmp cu caracter de unicitate) , Denumire G,
Adresa
2.TabelaPRODUSE : Cod_P(câmp cu caracter de unicitate) , DenumireP, Um,
Preț
3.TabelaSTOCURI : Cod_G, Cod_P, Stoc
Figura 3.2.2.1.1 Baza de date relațională
Urmează să stabilim tipurile de relații existente între tabelele construite.
Între tabelele unei baze de date se pot stabili patru tipuri de relații, si anume:
3.2.2.1.1 Relațiile one to one(unu la unu )
Relațiile de tipu l 1→1 (unu la unu) presupun că unui membru din colecția A îi
corespunde un singur membru din colecția B (figura3.2.2.1.1.1).
Figura3.2.2.1.1.1 Relațiile unu la unu
Astfel de relații se folosesc pentru a diviza tabelele mari, în două sau mai
multe tabele de dimensiuni mai mici, ceea ce va oferi următoarele avantaje:A BGestiuni
Cod_G
DenumireG
AdresaStocuri
Cod_G
Cod_P
StocProduse
Cod_P
DenumireP
Um
Preț
Relațiile de tip unu -la-unu sunt cele mai simple și mai rar folosite,
obligând la respectarea următoarei reguli: fiecare înregistrare dintr -un
tabel corespunde unei singure înregistrări din alt tabel.
42-reducerea timpului de căutare a anumitor date pr in separarea informațiilor ce
au o frecvență mai redusă de folosire.
-îmbunătățirea timpului de răspuns la actualizarea datelor în tabele de către mai
mulți utilizatori.
-creșterea securității și a controlului aplicației prin separarea într -un alt tabel a
unor informații cu caracter confidențial.
Pentru ca o relație să fie one to one, este necesar ca în ambele tabele, câmpul
de legătură să aibă caracter de unicitate pentru toate înregistrările tabelei respective.
Exemplu: Relația dintre tabelel ePRODUSE șiSTOCURI este de tipul one to one dacă
un produs se găsește într -o singură gestiune, o gestiune însă poate conține mai multe
produse.
Tabela PRODUSE Tabela STOCURI
3.2.2.1.2 Relațiile one to many(unul la mai mulți)
Relațiile de tipul 1 → (unu lamaimulți) presupun că unui membru din prima
entitate A îi corespund mai mulți membri din a doua entitate B (figura3.2.2.1.2.1).
Figura3.2.2.1.2.1 Relațiile unu la mai mulți
Exemplu: Relația dintre tabelele PRODUSE șiSTOCURI , realizată prin câmpul comun
Cod_P, va fi o relație de tipul one to many , dacă un produs se poate găsi în mai multe
gestiuni.DenumireP UmPrețCod_P
P1 Kg101
P2 L152
P3 Kg253
P4 L454Cod_P Cod_GStoc
110110
210230
310150
4103201 one to one 1
A B
Relațiile de tip unu-la-mai mulți sunt cele mai frecvente tipuri, realizând
legătura între un rând dintr -un tabel și niciunul, unul, două sau mai
multe rânduri din alt tabel. Legătura se realizează prin câmpul cu
caracter de unicitate a tabelului părinte și câmpul corespunză tor
tabelului copil.
43Tabela PRODUSE Tabela STOCURI
De asemenea în tabela virtuală de ieșire pentru o înregistra re din tabela
părinte(PRODUSE ) se pot crea mai multe înregistrări și anume câte înregistrări vor fi
în tabela copil (STOCURI ) cu aceiași valoare a câmpului de legătură ca în tabela
părinte. În exemplul de mai sus,
-pentruprima înregistrare din tabela pări nte se vor genera în tabela virtuală de
ieșire 3 înregistrări, deoarece există în tabela copil 3 înregistrări cu aceiași valoarea a
câmpului de legătură ( Cod_P=1 ),
– pentru ultima înregistrare din tabela părinte se vor genera în tabela virtuală de
ieșire 2 înregistrări( Cod_P=4),
-pentru a doua înregistrare din tabela părinte nu se va genera în tabela virtuală
de ieșire nici o înregistrare, deoarece nu există în tabela copil nici o înregistrare cu
aceiași valoare a câmpului de legătură( Cod_P=2).
3.2.2.1.3 Relațiile many to one(mai mulți la unu)
Relațiile de tipul →1 (mai mulți la unu) presupun că mai multor membri din
prima entitate A le corespund eun membru din a doua entitate B (figura 1.7.2. 1.3.1).
Figura3.2.2.1.3.1Relațiile mai mulți la unuDenumireP UmPrețCod_P
P1 Kg101
P2 L152
P3 Kg253
P4 L454Cod_P Cod_GStoc
110110
110225
110315
310230
410150
4103201 one tomany
A B
Aceste relații sunt opusele relațiilor one to many. O asemenea relație este
reflexivă daca se poate crea prin inversarea rolurilor entităților
participante la o relație one to many. În Microsoft Access toate relațiile
sunt reflexiv e, astfel că specificarea o singură dată a unuia dintre sensuri
va asigura funcționalitatea relației și în celălalt sens.
443.2.2.1.4 Relațiile many to many(mau mulți la mai mulți)
Relațiile de tipul m→m (mulți la mulți), în care unui membru din entitatea A îi
corespund mai multe date din colecția B și mai multor da -te din colecția A îi
corespunde o singură dată din co lecția B(figura3.2.2.1.4.1).
Figura3.2.2.1.4.1 Relațiile mai mulți la mai mulți
Relații de tip mulți la mulți se mai numesc și relații de tip rețea. O relație mulți
la mulți se va descompune înto tdeauna în două relații, o rela ție tip unu la mulți și
respectiv o a doua relație de tip mulți la unu prin intermediul unei entități de legătură.
În exemplul prezentat anterior acest rol de tabelă intermediară îl are tabela
„STOCURI ”, plasată între tabelele „GESTIUNI ” și„PRODUSE ”. Se observă că î n
tabela intermediară vor exista două câmpuri de legătură, (Cod _G și Cod_P) cu care se
vor realiza cele două relații de tip many to one.
Exemplu: Baza de date relațională corespunzătoare exemplului anterior , unde o
gestiune are mai multe produse, iar un p rodus se află în mai multe gestiuni, stocul de
produs stabilindu -se la nivel de gestiune , arată astfel:
3.2.2.2 Tipurile de legătură ale relațiilor
Tipul de legătură a unei relații (Join Type), reprezintă o proprietate a relației
care are efect în ceea ce privește extragerea de date corelate din tabelele care participă
la aceasta.A B
Gestiuni
Cod_G
DenumireG
AdresaStocuri
Cod_G
Cod_P
StocProduse
Cod_P
DenumireP
Um
Preț1 1
Pentru ca o relație să fie many to many, este necesar ca în ambele tabele,
câmpul de legătură să nu aibă caracter de unicitate pentr u toate
înregistrările tabelei respective. O asemenea relație se creează prin
intermediul unei tabele intermediare care are relații many to one cu cele
două tabele.
45Problema pe care o rezolvă această proprietate este următoarea: dacă în unul
din tabele, există înregistrări pentru care în câmpul de relație conține valori care nu s e
regăsesc în câmpul corespondent din cealaltă tabelă, care vor fi înregistrările care se
vor selecționa din ambele tabele?
3.3 Tipuri de chei
3.4 Principii de normalizare a bazelor de date relaționale
La proiectarea st ructurii unei baze de date relaționale trebuie stabilite în primul
rând tabelele în care vor fi memorate datele și asocierile dintre tabele. Acestea suntCheia unei tabele reprezintă un ansamblu minim de atribute care
identifică o înregistrar e dintr-o tabelă. Cheia poate fi formată dintr -un
singur atribut (cheie simplă) sau din mai multe atribute (cheie compusă).
La un moment dat într -o tabelă pot exista mai multe atribute cu
proprietatea că pot identifica o înregistrare, aceste combinații se numesc
chei candidate.
Un tabel, în mod natural trebuie să conțină cel puțin o zonă (un
câmp sau o operație relațională între mai multe câmpuri – de ex.
reuniune) care să permită o unicitate a entităților. Această zonă se
numește cheie primară(principală ). Acest lucru se concretizează în două
aspecte, și anume: în unicitatea datelor din cheia primară și implicit în
inexistența într -un tabel a înregistrărilor duplicate.
O cheie primară reprezintă deci un câmp care nu conține pentru
nici o înregistrare o valoare nulă ("NULL" – nu zero) sau
duplicată(NULL, este o valoare pe care un câmp al unei anumite
înregistrări o ia pentru a preciza lipsa de date).
Când două tabele sunt asociate(intră în relație), atunci tabelul
părinte trebuie să aibă un câmp special, care să conțină o trimitere
precisă la un câmp din tabelul subordonat(tabelul copil). Acest lucru se
realizează prin exportul din tabela părinte a câmpului cu caracter de
unicitate(cheia primară) în tabela copil. Acest câmp, din tabela copil, se
numește c heie externă(st răină).În funcție de înregistrările care sunt selectate din cele două tabele care
intră în relație există două tipuri de legături:
-inner join – vor fi selecționate numai acele înregistrări care au
câmpul de legătură egal în ambele tabele.
-outer join – vor fi selecționate toate înregistrările unei tabele iar
din cealaltă, numai acele înregistrări care au câmpul de legătură egal în
ambele tabele.
46stabilite într -o formă inițială, după care, prin rafinare succesivă se ajunge la forma
definitivă. Ace stei structuri inițiale îi sunt aplicate un set de reguli care reprezintă pașii
de obținere a unei baze de date normalizate. Dacă o bază de date nu este normalizată ea
nu poate fi utilizată cu un maxim de eficiență.
Normalizarea este procesul reversibil d e transformare a unei relații în relații de
structură mai simplă. (Procesul este reversibil în sensul că nici o informație nu este
pierdută în timpul transformării). Scopul normalizării este de a suprima redundanțele
logice, de a evita anomaliile la reactu alizare și rezolvarea problemei reconexiunii.
Astfel, într -o tabela fiecare element(intersecția unui rând cu o coloană, uneori
se mai folosește si termenul de celulă), trebuie să aibă o singură valoare, denumită
valoare atomică. De asemenea prin normaliza re se vor elimina informațiile duplicate
din tabele iar schema bazei de date trebuie creată astfel încât să permită modificări ale
acesteia.
Normalizarea unei baze de date, este realizata în 5 pași dintre care primii trei
sunt mai importanți, si anume:
Această regulă se aplică când se utilizează o cheie primară care conține mai
multe coloane. De exemplu, să presupunem că avem un tabel care conține următoarele
coloane, dintre care Nr_Comandă și Cod_Produs alcătuiesc cheia primară compusă:
•Nr_Comandă (cheie primară)
•Cod_Produs (cheie primară)
•NumeProdus
Acest tabel încalcă a doua formă normală, deoarece NumeProdus depinde de
Cod_Produs, dar nu și de Nr_Comandă, a șadar nu depinde de întreaga cheie primară.
NumeProdus trebuie eliminat din tabel, el a parține de alt tabel (Produse).
De exemplu, să presupunem că av em un tabel care co nține următoarele
coloane:FN1.Înregistrările să conțină pentru câmpuri numai valori
atomice(de exemplu, nu poate exista un câmp denumit „ Preț” în care să
plasăm o l istă de prețuri) și să nu conțină grupuri care se repetă.
FN2. Datele din câmpurile care nu sunt chei, să depindă de
cheia primară.
FN3. Toate câmpurile să fie independente unul față de altul. Un
alt mod de a spune aste este că fiecare coloană care nu este cheie trebuie
să depindă de întreaga cheie primară și numai de cheia primară.
47•Cod_Produs (cheie primară)
•NumeP
•Preț
•Reducere
Acest tabel încalcă a treia formă normală, deoarece o coloană car e nu este
cheie,Reducere , depinde de altă coloană care nu este cheie, Preț. Independen ța
coloanelor înseamnă că se poate modifica orice coloană care nu este cheie fără a afecta
alte coloane. Dacă se modifică o valoare din câmpul Preț, se modifică în mod
corespunzător Reducere (care reprezintă un procent din preț) , așadar încălcându -se
regula.
În proiectarea bazelor de date relaționale , prin procesul de normalizare a
tabelelor care conțin datele primare ale obiectului supus modelării, se prod uc:
-eliminarea din tabele a informațiilor care se repetă prin extragerea acestora și
mutarea în noi tabele, care conțin înregistrări cu valori unice ale datelor ;
-repartizarea în tabele numai a câmpurilor ce depind de cheia primară;
-eliminarea câmpurilor ca re pot fi obținute prin operații ai căror operanzi sunt
alte câmpuri;
-stabilirea relațiilor între tabelele cu valori comune ale câmpurilor de date;
-introducerea de tabele intermediare în cazul relațiilor many to many.
3.5 Integritatea datelor
Restricțiile de integritate ale modelului relațional reprezintă cerințe pe care
trebuie să le îndeplinească datele din cadrul bazei de date pentru a putea fi considerate
corecte și coerente în raport cu lumea reală pe care o reflectă. Dacă o bază de date nu
respectă aceste cerințe, ea nu poate fi utilizată cu un maxim de eficiență.
Principalele tipuri de integritate a datelor unui model relațional sunt:FN4. Între tabele să nu existe entități independente între care să
existe relații de tipul many to many.
FN5. O tabelă iniț ială, care a fost descompusă în mai multe
tabele, să poate fi refăcută.
483.6Sortare și indexare.
Cea mai utilizată operație care se efectuează pe tabelele unei baze de date este
sortarea.
Există posibilitatea ca după ce se sortează toate înregistrările unei tabele după
un câmp, numai pentru acele înregistrări în care câmpul respectiv are valorile egale să
se procedeze la o nouă sortare după alt câmp. În acest c az se va produce o sortare după
mai multe chei de sortare.
Pentru a se putea realiza operațiile relaționale cu tabelele de cele mai multe ori
acestea trebuiesc în prealabil sortate. Realizarea sortării se poate efectua în două feluri,
fizic sau logic(pr in intermediul indecșilor) .
Această operație se face în prealabil prin atașarea la câmpul(câmpurile) după
care se face sor tarea a unei tabele de indecși. Indexarea reprezintă operația de atașare a
tabelelor de indecși la un câmp, care va deveni i ndexat. Indecșii sunt niște tabele de
dimensiuni reduse, care conțin 2 câmpuri, și anume cheia de sortare(indexul) și adresa
fizică a înregistrării corespunzătoare.
Sortarea efectivă a acestui tabel de indecși de dimensiuni reduse, care consumă
foarte puțin timp, dă posibilitatea după aceea a accesării înregistrărilor tabelei bazei deIntegritatea existențială, impune ca întotdeauna într -o tabelă să
nu existe două înregistrări identice. Acest lucru se realizează de la sine
dacă se definește o cheie primară pent ru tabela respectivă.
Integritatea referențială, impune ca orice valoare dintr -o cheie
externă a unei tabele copil să se regăsească printre valorile pe care le ia
cheia de legătură din tabelul părinte asociat.
Integritatea de domeniu, impune pentru un câm p care are
stabilit un anumit domeniu, să nu fie acceptate date care sunt în afara
acestuia.
Sortarea reprezintă operația prin care înregistrările unei tabele sunt
aranjate în ordine ascendentă sau descendentă după valorile pe care le ia
un câmp, denumit cheie de sortare.
Sortarea fizică necesită aranjarea efectivă pe disc a
înregistrărilor în ordinea dorită după valorile cheii(cheilor) de sortare.
Ea este o operație care consumă foarte mult timp și memorie.
Sortarea logică nu modifică poziția înregistră rilor de pe disc, ci
ea permite numai regăsirea acestora în ordinea ascendentă sau
descendentă pe care o iau valorile din cheia(cheile) de sortare.
49date în ordine crescătoare sau descrescătoare după cheia de indexare, fără ca acestora
să li se modifice poziția de pe disc.
În felul acesta operația de sortare logică a tabelei originale prin intermediul
indexării prealabile a câmpului ce este cheie de sortare se va efectua în condițiile unui
consum minim de timp și memorie.
Indexarea este utilizată și la alte operații în afară de sortare. Astfel selecția
înregistrărilo r care au o anumită valoare pentru un câmp, se realizează de zeci de ori
mai rapid dacă acest câmp este indexat.
3.7 Exemple de sisteme de gestiune a bazelor de date relaționale
1. Oracle. Este realizat de firma Oracle Corporation USA. Sistemul este
complet relațional, robust, se bazează pe SQL standard extins. Arhitectura sistemului
este client/server, arebaze de date Internet și modul de optimizare a regăsirii.
2.DB2. Este realizat de firma IBM. Sistemul respectă teoria relațională, este
robust și se bazează pe SQL standard. Permite lucrul distribuit și are modul de
optimizare a regăsirii.
3. Progress. Este realizat de firma Progress Software. Are limbaj propriu
(Progress 4GL) dar suportă și SQL. Rulează pe o gamă largă de calculatoare sub
diferite sisteme de operare.
4. SQL Server. Este sistemul de gestiune a bazelor de date relaționale dezvoltat
de firma Microsoft pentru sistemele de operare Windows. În toate versiunile sistemul
SQL Server suportă complet standardul SQL2, cu implementarea perfor mantă a
trăsăturilor avansate de stocare și prelucrare a datelor
5. Visual FoxPro. Este realizat de firma Microsoft. Are un limbaj procedural
propriu foarte puternic, o extensie orientată obiect, programare vizuală și nucleu extins
de SQL.
6. Paradox. Este realizat de firma Borland. Are limbaj procedural prop riu
(PAL) și suportă SQL
7. Access. Este realizat de firma Microsoft. Se bazează pe SQL, are limbajul
procedural gazdă (Basic Access) și instrumente de dezvoltare. Microsoft Access este
unul din cele mai cunoscute sisteme de gestiune a bazelor de date relaționale pe
platforme de calculatoare personale. MS Access dispune de un sistem de control al
bazei de date și o interfață grafică pentru interacțiunea cu utilizatorul. Aplicațiile de
baze de date în MS Access se pot dezvolta cu multă ușurință datorită generatoarelor de
aplicații (Wizards) care permit proiectarea vizuală a bazelor de date și a formularelor
(forms) pentru interfețele grafice. MS Access este folosit în special pentru aplicații
personale sau pentru mici afaceri
503.8 Aplicații
1. Să se creeze o bază de date relațională pentru evidența unei colecții de CD -uri. Se
știe ca pe un CD se gasesc mai multe piese, sunt CD -uri de lansare iar o piesă se poate
găsi pe un singur CD.
Rezolvare:
Informațiile necesare sunt:
Număr CD
Titlu
Artist
Data lansării
Numar de piese
Denumire piesă
Durata piesă
Presupunem că avem o singură tabelă formată din toate aceste câmpuri.
Introducem date si obținem:
Nr CD TitluArtistData lansării Nr piese Denumire
piesăDurată
piesă
1T1A120.07.2009 5 P1 3
1T1A120.07.2009 5 P2 2
1T1A120.07.2009 5 P3 3
1T1A120.07.2009 5 P4 5
1T1A120.07.2009 5 P5 4
Se observă că pentru cele 5 piese de pe CD -ul cu numărul 1 se vor repeta
practic datele di n primele 5 câmpuri. În acest caz, conform princiupiilor de
normalizare, acestea se elimină din tabela inițială și se trimit într -o altă tabelă.
Astfel vom obține două tabele: una care conține informații despre CD -uri si a
doua care va conține informații despre piese. Intrucât știm ca pe un CD sunt mai multe
piese, iar o piesă se va gasi pe un singur CD între cele două tabele se va stabili o relație
de tipul one to many. Pentru construirea acestui tip de relații se va exporta din prima
tabelă(CD -uri) câmpu l cu caracter de unicitate(cheia primară) în a doua tabelă(Piese)
Schema bazei de date este următoarea:
512. Să se creeze o bază de date pentru stocarea informațiilor referitoare la cluburi
sportive. Se știe că un club are mai mulți jucă tori. Fiecarea jucător are mai mulți
sponsori, iar un sponsor poate sponsoriza mai mulți jucători
3. Să se creeze o bază de date pentru evidența pacienților înscriși la medicii de familie
și a serviciilor oferite acestora. Informațiile necesare sunt:
– datele de identificare a medicilor și a pacienților
– data înscrierii pacientului la medicul de familie
– serviciile oferite și costurile lor
– luna în care se oferă serviciul.
4. Să se creeze o baza de date pentru evidența închirierilor de mașini di ntr-un parc
auto. Informațiile necesare sunt:
– tipul mașinii(marcă și culoare)
– datele de identificare a clienților
– data închirierii și data returnării
– pretul de închiriere pe oră.
3.9 Întrebări
1.Care sunt tipurile de relații ce se pot stabil i între tabele unei baze de date
relaționale ?
Răspuns:CD-uri
Număr CD
Titlu
Artist
Data lansării
Număr de pieseCD-uri
Număr CD
Denumire piesă
Durată piesă1
522. Cum se construiește o relație de tipul many to many ?
Răspuns:
3. Ce este o cheie primară ?
Răspuns:
4. Care sunt tipurile de legătură a relațiilor și cum se definesc aceste a?
Răspuns:
5. Ce este o cheie externă ?
Răspuns:
6. Care sunt pașii prin care se realizează normalizarea unei baze de date relaționale ?
Răspuns:Tipurile de relații sunt:
-relația one to one – se stabilește atunci când unei înregistrări din
prima tabelă îî corespunde o singura înregistrare în cea de a doua
tabelă
-relația one to many – se stabilește atunci când unei înregistrări din
prima tabelă ii corespunde niciuna, una, două sau mai multe
înregistrări din a doua tabelă
-relația many to one – este inversul relației one to many
-relația many to many – apare atunci când unei înregistrări din
prima tabelă îî corespund mai multe înregistrări în a doua tabelă și
invers, unei înregistrări din a doua tabe lă îî corespund mai multe
inregistrări în prima tabelă.
O relație many to many se creează prin intermediul unei tabele intermediare
carese va afla în r elații many to one cu cele două tabele.
O cheie primară reprezintă un câmp care nu conține pentru nic i o înregistrare o
valoare nulă ("NULL" – nu zero) sau duplicată .
533.10 Test grilă tema 3
1. Ce tipuri de rela țiiîntre dou ă tabele nu sunt acceptate într-o baza de date
Acces:
a)relațiile unu la unu (one to one);
b)relațiile unu la mai mul ți (one to many);
c)relațiile mai mulț i la unu (many to one);
d)relațiile mai mulț i la mai mul ți (many to many);
2.Care dintre urmă toarele afirma ții referitoare la relațiile unu la unu (one to one)
sunt CORECTE?
a)O asemenea rela ție se realizeaz ă în general între cheia principal ă a tabelei p ărinte si
cheile externe ale tabelelor corelate.
b)O asemenea rela ție se realizeaz ă în general între c âmpurile care nu sunt c hei ale
tabelelor corelate.
c)O asemenea rela ție este folosit ă pentru a diviza tabelele cu multe câmpuri în tabele
mai înguste.
d)O asemenea rela ție se creeaz ă prin intermediul unei tabele care are rela ții one to
many cu alte dou ă tabele.
e)Nu exista re lații de tipul one to one.
3. Care dintre urm ătoarele afirmatii referitoare la rela țiile unu la mai mul ți (one
to many) sunt CORECTE?
a)O asemenea rela ție se creeaz ă prin intermediul unei tabele care are rela ții one to one
cu alte dou ă tabele.
b)O asemenea relație se realizeaz ă în general între cheia principal ă a tabelei p ărinte si
cheile externe ale tabelelor corelate.
c)O asemenea rela ție se realizeaz ă în general între c âmpurile care nu sunt chei ale
tabelelor corelate.
d)O asemenea rela ție este folo sită pentru a diviza tabelele cu multe câmpuri în tabele
mai înguste.
54e)O asemenea relaț ie se creeaz ă prin intermediul unei tabele care are rela ții many to
many cu alte două tabele.
4. Termenul de VALOARE ATOMIC Ă reprezint ă:
a)Valoarea unei chei primare a unei tabele care este într -o relație
b)O singură valoare pe care trebuie s ă o aibă fiecare element într -o tabelă
c)O valoare calculat ă a unei tabele sau cereri
d)Valoarea unei chei externe a unei tabele care este într -o relație one to one sau one to
many
e)Valoarea unei chei alternative a unei tabele care nu este într -o relație cu alte tabele
f)O valoare pozitiva și diferită de NULL
5.Care sunt tipurile de chei care pot exista în tabele:
a)cheie principală, cheie secundară;
b)cheie externă, chei e comună;
c)cheieinternă, cheiesimplă;
d)cheie principală, cheie externă;
6.Care din următoarele enunțuri caracterizează o cheie primară:
a)un câmp sau o operație relațională între mai multe câmpuri care permite existența
înregistrărilor duplicate;
b)un câmp care are proprietatea Indexed setată;
c)un câmp care permite valoarea NULL;
d)un câmp sau o operație relațională între mai multe câmpuri care să perm ită o
unicitate a entităților;
e)un câmp dintr -un tabel 'părinte' care se află în relație cu unul sau mai multe câmpuri
din tabele 'copil';
7.Care din următoarele enunțuri caracterizează o cheie primară:
a)un câmp care nu conține pentru nici o înregistrare valoarea 0;
b)un câmp care nu conține pentru nici o înregistrare valori negative;
c)numai primul câmp al unei tabele;
d)un câmp sau o operație relațională între mai multe câmpuri care nu conține pentru
nici o înregistrare o valoare NULL sau duplicată;
e)un câmp care depinde de alt câmp al tabelei;
8. Care din urmă toarele variante de r ăspuns reprezint ă pași ai procesului de
NORMALIZARE ai unei baze de date?
a)Înregistrările să nu conțină grupuri care se repet ă;
b)O tabelă originală care a fost descompus ăîn mai multe tabele s ă nu mai poată fi
refacută;
c)Toate coloanele depind de cheia principal ăși sunt independente între ele;
d)Datele din coloane sunt dependente de cheia principal ă;
55e)Între tabele s ă nu existe entit ăți independente între care s ă existe rela ții de tipul
many to many;
9.Care din urm ătoarele variante de r ăspuns repre zintă pați ai procesului de
NORMALIZARE ai unei baze de date?
a)Cheia primar ă să nu conțina o valoare NULL sau duplicat ă;
b)Orice cheie extern ă să corespundă unei chei primare din tabelul asociat;
c) Pentru un câmp , să nu fie acceptate decât anumite date ;
d)Datele din coloane care nu sunt chei depind de cheia principal ă;
e)Înregistrările să nu conțina grupuri care se repet ă;
f)Toate coloanele depind de cheia principal ăși sunt independente între ele;
10. Care din următoarele afirmații referitoare la n ormalizarea unei baze de date
relațională este adevărată:
a)O tabela originară care a fost descompusă în mai mult e tabele să poată fi refăcută;
b)Înregistrările pot conține grupuri redundante;
c)Toate câmpurile depind de cheia primară și sunt dependent e între ele;
d)Între tabele să existe entități independente între care să existe relații de tipul many to
many;
e)Cheia primară poate avea numai în anumite situații valoarea NULL;
11 Într-o bază de date relațională care dintre următoarele relații nu se pot crea
între entitățile a două tabele (conform celei de a IV -a forme de normalizare):
a)unu la unu (one to one);
b)mai mulți la mai mulți (many to many);
c)unu la mai mulți (one to many);
d)mai mulți la unu (many to one);
e)nici una din relațiile specificate;
12. Care dintre următoarele afirmații nu este adevărată în contextul normalizării
unei baze de date relaționale:
a)între tabele să nu existe relații many to many;
b)toate câmpurile unei tabele să fie dependente unul față de altul;
c)datele din câmpurile care nu sunt chei, să depindă de cheia primară;
d)înregistrările să conțină pentru câmpuri numai valori atomice și să nu conțină
grupuri care se repetă;
e)o tabelă originală, care a fost descompusă în mai multe tabele, să poată fi refăcut ă;
13. Tipurile de integritate a datelor unui model relațional sunt:
a)existențială, de domeniu, relațională;
b)existențială, relațională, referențială;
c)existențială, de domeniu, referențială;
d)relațională, de domeniu, referențială;
56e)nici una di n cele specificate;
14.Dintre enunțurile de mai jos care se referă la noțiunea de integritate
referențială:
a)cheia primară să nu conțină o valoare NULL sau duplicată;
b)orice valoare dintr -o cheie externă corespunde unei valori a cheii primare din tabelul
asociat;
c)pentru un câmp, să nu fie acceptate decât anumite date;
d)datele din coloanele care nu sunt chei, depind de cheia principală;
e)înregistrările să nu conțină grupuri care se repetă;
15.Dintre enunțurile de mai jos care se referă la noț iunea de integritate de
domeniu:
a)cheia primară să nu conțină o valoare NULL sau duplicată;
b)orice valoare dintr -o cheie externă corespunde unei valori a cheii primare din tabelul
asociat;
c)pentru un câmp, să nu fie acceptate decât anumite da te;
d)datele din toate câmpurile tabelelor să nu conțină valoarea NULL;
e)domeniul tabelelor unei baze de date să nu se intersecteze;
16.Dintre enunțurile de mai jos care se referă la noțiunea de integritate
existențială:
a)cheia primară să nu conțină o valoare NULL sau duplicată;
b)orice valoare dintr -o cheie externă corespunde unei valori a cheii primare din tabelul
asociat;
c)pentru un câmp, să nu fie acceptate decât anumite date;
d)toate tabelele bazei de date să aibă o existență de sine stătătoare ;
e)toate înregistrările tabelelor să conțină date;
17.Referitor la prelucrările efectuate într -o bază de date relațională care dintre
cazurile de mai jos este cel mai complet:
a)interogarea, modificarea;
b)actualizarea, ștergerea;
c)adăugarea, modif icarea;
d)interogarea, adăugarea;
e) interogarea, actualizarea;
24.Care din afirmațiile referitoare la operația de sortare este corectă:
a)așezarea datelor după importanța lor;
b)aranjarea înregistrărilor în ordinea introducerii lor;
c)organizarea înregistrărilor în ordine crescătoare sau descrescătoare, după unul sau
mai multe câmpuri;
57d)operație prin care din înregistrările tabelelor, sunt selectate grupuri după unul sau
mai multe criterii;
e)atașarea unei tabele asociate, la unul sau mai multe câmpuri;
25.Indexarea reprezintă:
a)așezarea datelor după importanța lor;
b)aranjarea înregistrărilor în ordinea introducerii lor;
c)organizarea fizică a înregistrărilor, crescător sau descrescător;
d)operație de așezare a înregistrărilor tabelelor în ordine alfabetică, crescătoare sau
descrescătoare, după unul sau mai multe câmpuri;
e)operația de atașare la câmpurile unei tabele, a unui index ;
58Tema 4
Fereastra DATABASE. Expresii în Access
Cuprinsul Temei 4:
4.1 INTRODUCERE ………………………….. ………………………….. ………………………. 58
4.2 PRIMII PAȘI ÎN L UCRUL CU BAZE DE DAT E………………………….. ……59
4.3 FEREASTRA “DATAB ASE”………………………….. ………………………….. …….62
4.4 EXPRESII ÎN ACCE SS………………………….. ………………………….. …………….. 63
4.5 ÎNTREBĂRI ………………………….. ………………………….. ………………………….. …65
4.6 TEST GRILĂ TEMA 4………………………….. ………………………….. ……………… 67
Obiective
Cunoașterea modalităților de creare și proiectarea a unei baze de date .
Cunoașterea obiectelor de rang superior ale unei baze de date .
Utilizarea expresiilor în Access
Timp alocat:2 ore
4.1 Introducere
Microsoft Access este un instrument puternic pentru dezvoltarea și gestionarea
bazelor de date relaționale de capacitate mică/medie. Sub aspectul performanțelor în
funcționare, acestea scad o dată cu creșterea volumului bazei de date; astfel, când
numărul înregistrărilor depășește ordinul sutelor de mii, viteza de lucru este sub nivelul
celei oferite de sistemele de gestiune a bazelor de date Oracle, Microsoft SQL Server
O aplicație Access es te realizată în totalitate din configurarea corespunzătoare
a unor obiecte și este plasată într -un singur fișier cu extensia MDB sau MDE, care
conține deci atât schema, datele efective cât și modulele de manipulare.
Obiectele aplicației sunt plasate în colecții de obiecte, într -o structură
ierarhic-arborescentă, din car e, 7 sunt de rang superior:
1.Tabele (Tables) – sunt obiecte care păstrează entitățile din baza de
date, într -o structură bidimensională formată din câmpuri și înregistrări.
Prin definirea proprietăților tabelelor și a câmpurilor acestora se
stabilesc restri cțiile de integritate existențială și de domeniu ale bazei de
date;
594.2Primii pași în lucrul cu baze de date
►Pentru a deschide aplicația de baze de date există mai multe posibilități:
a). din meniul Start–AllPrograms –Microsoft Office -Microsoft Access (vezi
figura 2.1.1)
b). dacă pe ecran există o pictogramă sub care scrie Microsoft Access se poate
porni aplicația printr -un dublu clic pe această iconiță.2.Relații ( Relationships) – sunt obiecte care conțin relațiile ce se
stabilesc între tabele. Prin definirea proprietăților relațiilor se stabilesc
restricțiile de integritate referențială ale bazei de date;
3.Cereri (Queries) – sunt obiecte prin care se prelucrează bazele de
date cu ajutorul operațiilor de algebră relațională. Cererile, în funcție de
rolul lor, sunt de două feluri:
cereri de selecție prin care se extrag informații din baza de
date,
cereri de actualizare prin care se realizează modificări în
baza de date. În funcție de ceea ce se modifică avem:
cereri acțiune – prin care se pot actualiza datele
din tabele(modificarea datelor din câmpuri,
adăugarea sau ștergerea de înregistrări ) sau se pot
memora datele într -o tabelă temporară,
cereri de definiții de date – prin care se pot
actualiza structural tabelele bazei de date;
4.Formulare (Forms) – sunt obiecte care reprezintă interfața de
intrare a aplicațiilor Access și permit actualiza rea asistată a datelor din
tabele și vizualizarea acestora prin intermediul unor obiecte
standardizate numite controale;
5.Rapoarte (Reports) – sunt obiecte care realizează interfața de
ieșire a aplicațiilor Access și permit editarea formatată, gruparea și
sortarea înregistrărilor, folosirea anteturilor sau a subsolurilor de pagină
sau de raport. Informațiile sunt oferite utilizatorilor sub forma unor
liste, grafice sau tabele, de obicei la imprimantă;
6.Macro-comenzi (Macros) – sunt obiecte ce permit introdu cerea
automatizării proceselor de prelucrare a aplicațiilor Access. Se
realizează prin selectarea dintr -o listă a unor comenzi prin care se pot
efectua automat aproape toate prelucrările posibile oferite de o aplicație
Access;
7.Module de cod (Modules) – sunt coduri de program scrise în
limbajul de programare VBA(Visual Basic for Application) în vederea
introducerii unor prelucrări de finețe a aplicațiilor Access.
60Pentru a închide aplicația putem alege opțiunea Exit din meniul File sau putem
executa un clic pe butonul de închidere din dreapta sus a ferestrei. La termi narea
sesiunii de lucru se va efectua automat și salvarea stării în care se găsește aplicația.
Figura4.2.1 Lansarea în execuție a aplicației Access
►Pentru a deschide o bază de date existentă se poate alege una din
următoarele posibilități:
a). alege m din meniul File opțiunea Open sau apăsăm pe
pictograma existentă în bara de sub meniul File, dacăaplicația Microsoft
Access este deschisă;
b).printr-un dublu clic pe numele bazei de date;
c). printr -unclic efectuat pe butonul Open, după ce fișie rul dorit a fost
selectat;
61
Figura4.2.2 Deschiderea unei baze de date existente
d)baza de date se poate deschide și printr -un dublu clic pe fișierul dorit, dacă
deschidem fereastra Explorer;
e)prin meniul Startîn documentele recent create;
f)în partea de jos a meniului File, există în ordinea folosirii ultimele fișiere
accesate. Printr -unclic pe cel dorit se efectuează deschiderea lui.
►O bază de date nouă, se poate crea cu ajutorul opțiunii New din meniul
File, sau printr -un dublu clic pe simbolul din bara de instrumente;
sau în fereastra Explorer executăm clic dreapta în directorul în care vrem să salvăm
baza de date și apoi alegem opțiunea New Microsoft Access Application .
►Pentru a salva un fișier Access, se apelează funcția Save din meniul File,
sau se apasă pictograma existentă în bara de instrumente de sub meniul File
Numele bazei de dateCalea unde se găsește
baza de date
62►Microsoft Access oferă mult mai multe instrumente decât sunt prezente
inițial.Adăugarea sau ștergerea barelor de instrumente se poate realiza prin
deschider ea meniului View– Toolbars . Toate barele active la un moment dat sunt
marcate, pentru a dezactiva una dintre ele fiind suficient să apăsăm o singură dată pe
numele ei. Nu se recomandă folosirea unui număr prea mare de bare de instrumente
deoarece se micșo rează spațiul dedicat lucrului cu baza de date.
4.3 Fereastra “Database”
Prima fereastră care apare la deschiderea unei baze de date este fereastra
DATABASE. In partea stângă a ferestrei va fi afișat tot ceea ce putem realiza într -o bază
de date.
Prin această fereastră se poate selecta unul din următoarele 6 obiecte de rang
superior (principale) – practic colecții de obiecte – și anume: Tabele(Tables),
Cereri(Queries),Formulare( Forms), Rapoarte( Reports), Macro -comenzi ( Macros),
Module de cod( Modules)
Cel de-al șaptelea obiect de rang superior, Relații(Relationships) , se poate
apela din meniul Tools,sau direct de pe bara cu instrumente.
Orice pagină a acestei ferestrei are în partea de sus 3 butoane, și anume:
-New– crearea unui obiect nou
-Design–reproiectarea unui obiect (selectat în prealabil)
-Opensau Preview sau Run– execuția obiectului selectat .
Figura4.3.1 Fereastra Database
634.4 Expresii în Access
O expresie este formată din termeni, asupra cărora se efectuează anumite
operații.În expresiile Access se pot utiliza următorii termeni:
►Literali– sunt valori de tip numeric, șir de caractere, dată calendaristică
sau oră(Date/Time), care se introduc într -o expresie astfel:
-șirurile de caractere se scriu între ghilimele: „ …”;
-numerele se scriu în sistemul zecimal;
-literalii de tip Date/Time se scriu între diezi: #…#.
►Funcțiile standard – se găsesc înbibliotecile Access si sunt urmă toarele:
-SQR– determină radicalul;
-SIN, COS, TAN, ATN – funcții trigonometrice;
-LEFT, RIGHT, MID – extrag un subșir dintr -un sir de caractere;
-UCASE, LCASE – transformă literele mici în litere mari, și invers;
-DAY, MONTH, YEAR – extrag o parte dintr -o valoare de tip dată
calendaristică(ziua, luna sau anul);
-SECOND, MINUTE, HOUR – extrag o parte dintr -o datăde tip
ora(minutele, secundele sau ora);
-NOW- furnizează data curentă a sistemului;
►Numele de obiecte cum ar fi numele unor câmpuri din tabele sau cereri
sau a unor controale din formulare și rapoarte. Numele obiectelor în Access se scriu
între paranteze d repte[]. Obiectele se scriu calificat cu obiectele superioare din ierarhia
acestora, folosindu -se pentru aceasta semnul exclamării (!) saupunctul (.). Astfel
numele unui câmp se califică cu numele tabelei din care face parte câmpul respectiv
►Valoarea NULL – arată lipsa unei valori dintr -un termen al unei expresii.
ValoareaNULL, când este folosită ca termen al unei expresii cu operații aritmetice,
logice, relaționale sau ca argument al unei funcții se propagă în rezultat, indiferent de
forma expresiei.
Excepții:
-prin concatenarea cu NULL a unui șir de caractere se obține șirul și nu
NULL;
-în funcțiile agregate valoare NULL se ignoră.
Operatorii utilizați în expresiile din Access sunt de trei tipuri și anume:
►Operatorii aritmetici , care acționând asupra unor termeni
scalari(numere, șiruri de caractere, etc.) vor determina tot un rezultat de aceiași
natură(scalar).
64+ – * ^ /
Adunare Scădere ÎnmulțireRidicare
la
putereÎmpărțire
reală
5+3=85-3=25*3=155^2=25 5/2=2.5
\ Mod &
Împărțire
întreagăRestul împărțiriiConcatenare
șiruri
10\3=3 10 Mod 3=1ab&c=abc
►Operatorii relaționali , care acționând asupra unor termeni
scalari(numere, șiruri de caractere, etc.) vor determina un rezultat
logic(boolean)
< <= > >= = <>
mai micmai mic sau
egalmai maremai mare
sau egalegal ne egal
(5<5)
=False(5<=5)
=True(5>3)
=True(5>=5)
=True(5=5)
=True(5<>5) =
False
În expresiile Access se mai folosesc următorii operatori relaționali :
-IS– este operatorul relațional cu ajutorul căruia se realizează compararea cu
valoare NULL.
-BETWEEN data1AND data2- se folosește pentru a determina dacă o dată
calendaristică aparține intervalului închis [data1, data2].
-LIKE– este operator ul relațional de egalitate folosit pentru șiruri de caractere
care evaluază și caracterele generice( “*”- mai multe caractere și“?”- un singur
caracter)
►Operatorii logici ,având valori logice(True , False) ca operanzi, vor
determina un rezultat tot logic. Tabelele de adevăr ale celor mai utilizați operatori
logici folosiț i în Access sunt:
65Op 1Op 2 OR
TrueTrue True
TrueFalse True
False True True
FalseFalse False
În Access există un constructor de expresii (Expression Builder ) care este util
pentru asistența oferită atunci când se lucrează cu funcții standard sau cu nume de
obiecte.
Expresiile Access sunt cel mai des utilizate în:
-proprietățile câmpurilor (Validation Rule ),
-criteriile de selecție din cereri,
-câmpuri calculate.
4.5 Întrebări
1. Care este obiectul de rang superior care nu se află în fereastra Database ?
Răspuns:
2. Cum se comportă valoarea NULL în operațiile aritmetice, logice sau relaționale ?Op 1Op 2 XOR
TrueTrue False
TrueFalse True
False True True
FalseFalse FalseOp 1 Op 2 AND
True True True
True False False
False True False
False False FalseOp NOT
True False
False True
Obiectulde rang superior care nu se află în fereastra Database este
Relații(Relationships ).Acestase poate apela din meniul Tools,sau direct de
pe bara cu instrumente.
66Răspuns:
3. Care sunt butoanele ca re apar in fereastra Database indiferent de obiectul de rang
superior selectat ?
Răspuns:
4. Cum se scriu numele obiectelor în Access ?
Răspuns:
5. Unde sunt utilizate cel mai des expresiile în Access ?
Răspuns:Valoarea NULL, când este folosită ca termen al unei expresii cu operații
aritmetice, logice, relaționale se propagă în rezultat, indiferent de forma
expresiei. Există și e xcepții:
-prin concatenarea cu NULL a unui șir de caractere se obține șirul
și nu NULL;
-în funcțiile agregate valoare NULL se ignoră.
674.6 Test grilă tem a 4
1.Care din următoarele enunțuri conține numai obiecte Access de rang superior:
a)tabele, relații, rapoarte, module;
b)tabele, formulare, cereri, clase;
c)clase, colecții, module, rapoarte;
d)clase, colecții, cereri;
e)nici una din acestea;
2.În Access ce obiecte de rang superior nu se găsesc în fereastra Database:
a)tabele;
b) relații;
c)cereri;
d)rapoarte;
e) formulare;
3.Care dintre următoarele tipuri de obiecte Access nu se găsesc în fereastra
Database:
a)tabele, cereri;
b)formulare, rapoarte;
c) relații, proprietăți;
d)module, macro;
e)nici un răspuns nu este corect;
4.În fereastra DATABASE se pot vedea urm ătoarele tipuri de obiecte:
a)Tabele
b)Proprietati
c)Formulare
d)Module de cod
e)Relatii
f)Macro-instructiuni
5.Care din enunțurile de mai jos este eronat:
a)expresiile Access pot conține operatori aritmetici, relaționali sau logici;
b)o condiție este o expresie a cărei evaluare este True sau False;
c)operatorul LIKE este un operator relațional de egalitate;
d)operatorul SUM nu ține cont de valorile NULL;
e)operatorul + nu ține cont de valorile NULL;
6.Care din enunțurile de mai jos este eronat:
a)literalii reprezintă valori de tip numeric, șir de caractere, Date/Time etc., care se
introduc direct într -o expresie fiind evaluați exact așa cum sunt scriși;
b)literalii de tip șiruri de caractere se scriu între ghilimele: “….“;
68c)literalii de tip Date/Time se scriu între diezi: #….#;
d)literalii de tip nume ric se scriu numai în zecimal;
e)condițiile pot conț ine literali;
7.Care din rezultatul operațiilor de mai jos este eronat:
a)SUM (3 + NULL +NULL) = 3;
b)3 + NULL +NULL = NULL;
c)AVG (3 + NULL +NULL) = 3;
d)3 MOD NULL = NULL;
e) 3- NULL=3;
8.Care din rezultatul operațiilor de mai jos este eronat:
a)TRUE AND TRUE=TRUE;
b)TRUE OR TRUE=TRUE;
c) TRUE XOR TRUE=TRUE;
d)FALSE XOR TRUE=TRUE;
e)FALSE XOR FALSE = FALSE;
9. Care dintre următoarele afirmații este adevărată:
a)(5>5) OR (5<5) = TRUE;
b)(5=5) AND (5 MOD 2 = 2) = TRUE;
c) (5=6) OR (5 MOD 3 = 2) = TRUE;
d)(5=6) OR (5 MOD 5 = 5) = TRUE;
e)NOT(TRUE OR FALSE) = TRUE;
10. Care dintre următoarele afirmații NU este adevărată:
a)TRUE XOR TRUE = FALSE;
b)TRUE XOR (10<10) = TRUE;
c)( (5 MOD 2) = (9 MOD 2) ) = TRUE;
d) NOT(TRUE XOR TRUE) = FALSE ;
e)(NOT TRUE) AND TRUE = FALSE;
11. Care dintre următoarele afirmații este adevărată:
a)COUNT(25, 25, 50, NULL) =NULL;
b)MIN(25, 25, -50, NULL) =NULL;
c)MAX(-25,-75,-50, NULL) = 0;
d)(25+25+50+NULL) / 4 = 0;
e)COUNT(NU LL,"25"," 25","XXL", NULL) =3;
12. Care dintre următoarele afirmații NU este adevărată:
a) COUNT(25, 25, 50, NULL) =4;
b)MIN(20+NULL, 25, 50, NULL) =25;
c)(5>2) AND (9 MOD 3 = 0) = TRUE;
d)(5>=5) AND (5<=5) = TRUE;
69Tema 5
Tabele în Access
Cuprinsul temei 5 :
5.1 INTRODUCERE ………………………….. ………………………….. ………………………. 69
5.2 PROIECTAREA TABE LELOR ÎN ACCESS ………………………….. ………….70
5.2.1DEFINIREA CÂMPURILOR ………………………….. ………………………….. ………..71
5.2.1.1 Tipuri de date ale câmpurilor ………………………….. ………………………. 71
5.2.1.2 Proprietățile câmpurilor ………………………….. ………………………….. ….73
5.2.1.3 Proprietatea Lookup ………………………….. ………………………….. ……….77
5.2.2PROPRIETĂȚILE TABELEI ………………………….. ………………………….. ………..78
5.3 VIZUALIZAREA TAB ELELOR ………………………….. ………………………….. .79
5.4 APLICAȚIE ………………………….. ………………………….. ………………………….. ….80
5.5 ÎNTREBĂRI ………………………….. ………………………….. ………………………….. …84
5.6 TEST GRILĂ TEMA 5………………………….. ………………………….. ……………… 86
Obiective
Cunoașterea modalităților de creare și proiectarea a unei tabele.
Definirea câmpurilor și stabilirea propr ietăților acestora.
Construirea listelor de valori și preluarea datelor unor câmpuri ale unei
tabele din valorile existente în alte tabele , stabilirea proprietăților tabelelor.
Timp alocat: 4 ore
5.1 Introducere
Proiectarea tabelelor este activitatea care are rolul esențial în realizarea unei
baze de date, celelalte obiecte fiind obținute funcție de tabelele create.
Un tabel reprezintă o colecție de date legate între ele, memorată pe linii și
coloane; fiecare linie conține o înregistrare -entitate com pletă dedate referitoare la un
anumit tip de obiecte. La rândul ei, fiecare înregistrare este compusă din coloane sau
câmpuri–un câmp reprezentând cea mai mică entitate de date.
O tabelă se poate afla în două stări, între care poate trece prin activarea
comenzii specifice de pe ToolsBar. Acestea sunt:
Proiectare(Design View) – în care se poate defini o tabelă nouă, sau
modifica structura uneia deja create.
Vizualizare(Datasheet View) – în care se pot
afișa sau actualiza(adăugarea de înregistrări noi,
ștergeri de înregistrări sau modificarea valorilor din
70câmpuri) datele din tabelă.
5.2 Proiectarea tabelelor în Access
Pentru acrea o tabelă nouă, va trebui :
-să apăsăm butonul Tables din fereastra Database și apoi să executăm dublu
clic peuna dinopțiunile
Create table in Design view – pentru a crea tabelul prin definire
câmpurilor și a proprietăților acestora;
Create table by using wizard – pentru a crea tabelul cu ajutorul
vrăjitorului ;
Create table by entering data -pentru a crea tabelul prin introducerea
înregistrărilor, fără a mai defini structura acestui. În acest caz câmpurile tabelului vor fi
denumite automat “field1”, “field2”, etc.
-să apăsăm butonul Tables din fereastra Database și apoi să executăm clic pe
butonul New din partea de sus a acestei ferestre. În acest caz se deschide o nouă
fereastrăcare are următoarele opțiuni:
Datasheet View – proiectarea tabelului print introducerea
înregistrărilor;
Design View – proiectarea tabelului prin definirea câmpurilor
Table Wizard – construirea tabelului cu ajutorul vrăjitorului;
Import Table – aducerea fizică unui tabel dintr -o altă baza de date;
Link Table – construirea unei legături către un tabel dintr -o altă baza
de date, fără ca acesta sa fie adus fiyic în baza noastră de date.
Figura5.2.1Fereastra butonului New
71Modificarea structurii unei tabele în care au fost deja introduse date, poate
duce la pierderea sau deteriorarea caracteristicilor acestora, fiind o operație care este
indicat a se efectua după ce se face o copie de siguranț ă a tabelei respective.
5.2.1 Definirea câmpurilor
Majoritatea tabelelor unei baze de date au unul sau mai multe câmpuri ce
identifică în mod unic fiecare înregistrare din acel tabel. Un câmp se caracterizează
prin: nume, tip de dată și proprietăți.
Numele câmpurilor se va introduce în coloana Field Name , aflată în partea
superioară a formularului de proiectare a tabelelor.
Regulile de constituire a numelui unei tabele, ca și a celorlalte obiecte folosite
în Access, sunt cele introduse de standardul „Windows”.
Pentru exemplificare vom con strui tabela GESTIUNI din exemplul anterior,
prezentat la tipurile de relații.
5.2.1.1 Tipuri de date ale câmpurilor
Fiecărui tip de informații îi va corespunde un anumit tip de date care determină
tipul câmpului. Microsoft Access pune la dispoziția utilizatorului următoarele opțiuni
pentru tipul de date cu care se va încărca fiecare câmp:
1.AutoNumber nu poate fi modificat manual, fiind de preferat a se folosi drept
cheie primară a unui tabel. Deși este incrementat secvențial în mod implicit, se poate
stabili și o incrementare aleatoare;
2.Texteste destinat informației de tip șir de caractere (ma -xim 255 caractere);
– combinatii de litere și cifre sau caractere nefolosite în calcule matematice
3.Numberare mai multe s ubtipuri, determinate de pro -prietateafield size:
Bytecu interval valoric între 0 și 255;
Integercu interval valoric între –32.768 și 32.767;
Long Integer cu interval valoric între –2.147.483.648 și 2.147.483.647;
Singlecu interval valoric între –3,4*1038
și 3,4*1038
;
Doublecu interval valoric între –1,797*10308
și 1,797*10308
;
Decimal cu interval valoric între –22337203685477.5808 și
922337203685477.5808Definirea unei tabele se va face prin precizarea următoarelor elemente:
-Numele tabelei. Se stabilește la crearea tabelei în urma unei
întrebări explicite făcută de sistem, sau se modifică(ca de altfel orice nume
de obiect) din fereastra Database, prin metodele folosite în Windows.
-Câmpurile și proprietățile (caracteristicile, atributele) acestora.
-Proprietățile tabelei.
724.Memoeste utilizat pentru text de lungime ce depășește capacitatea de 255
caractere a tipului text;
5.Date/Time conține informații de dată și/sau timp;
6.Currency conține o valoare asociată la o anumită monedă ,precizie de 15
cifre la stânga virgulei zecimale și 4 cifre la dreapta ;
7.Yes/Noconține una din cele două stări: yes/no, on/off, true/false .
8.Obiecte OLE este tot un câmp de capacitat e mare ce conține obiecte
provenite din aplicații ca Excel , Word . Dimensiunea maximă esteîn jur de 1 G Octet
9.Lookuppermite stocarea unei valori, dar afișează textul ce însoțește
valoarea respectivă. Acest tip de câmp poate fi legat de fapt de un alt tabel sau
interogare, de unde își extrage informațiile pe care le afișează sub forma unui combo
box(listă ascunsă) ;
Figura5.2.1.1.1 Crearea unui tabel în modulul Design View
După cum se observă în figura 5.3.1.1.1 există și o zonă de comentarii. Acestea
se introduc în Description , a treia coloană din partea de sus a formularului de
proiectare a tabelelor . Deși nu este obligatoriu, este utilă folosirea l orpentru creșterea
lizibilității aplicațiilor.
Atunci când creă m o tabelă trebuie să stabilim cheia primară a tabelei. O
tabelă care are cheie primară, va avea garantată integritatea existențială.
Deci stabilirea cheii primare și configurarea cu atenție a proprietăților
câmpurilor tabelelor, sunt cele mai simple și puternice metode pentru
crearea unei baze de date relaționale cu integritate existențială și de
domeniu.
73Cheia primară se stabilește cu ajutorul comenzii Primary Key din meniul Edit.
Această funcție se apelează după ce am selectat câmpul sau câmpurile care dorim să fie
cheie primară a tabelei. Același lucru îl putem face alegând funcția Primary Key din
meniul derulant ce apare în urma executării unui clic dreapta pe câmpul ce dorim să fie
cheie primară.
Figura5.2.1.1.2 Stabilirea cheii primare
5.2.1.2 Proprietățile câmpurilor
După ce s -a ales un anumit tip de dată, înfuncție de acesta, se v or afișa în
partea de jos a formularului, și restul de proprietăți care pot fi stabilite pentru acel
câmp.Setarea proprietăților câmpurilor este mult ușurată de wizard -uri și liste ascunse.
Felul proprietăților este specific fiecărui tip de date care se fixează pentru un
câmp. Totuși multe dintre proprietăți sunt comune, la cele mai utilizate tipuri de date
(Text, Number, Date/Time, Currency, Yes/No ).
În continuare sunt prezentate cele mai utilizate proprietăți:Existența panoului Field Properties este foarte importantă deoarece
permite stabilirea de proprietăți suplimentare pentru anumite câmp uri.
Proprietățile unui câmp, îl vor însoți oriunde acesta va fi folosit, existând
totuși posibilitate ca unele dintre ele să fie modificate temporar(de
exemplu prin intermediul unor controale folosite în formulare sau
rapoarte, așa cum se va prezenta în a lte capitole).
74►Caption– deși câmpul are un nume, introd ucerea unui alt nume în această
casetă, duce la folosirea acesteia din urmă atunci când se va afișa numele câmpului.
Această acțiune este valabilă numai la afișarea numelui câmpului, orice referire la
acesta făcându -se cu numele efectiv al câmpului. Dacă n u se introduce nimic – se fa
folosi la afișare numele câmpului.
►Default Value – Introducerea unei valori valide în această casetă,
reprezintă valoarea de inițializare a acestui câmp la crearea unei înregistrări noi. Dacă
nu se introduce nimic câmpul va fi inițializat cu valoarea NULL.
NULL arată lipsa unei valori în câmpul respectiv. Valoarea NULL poate fi
testată sau folosită în expresii. Ea se comportă într -un mod specific dacă este folosită în
operații relaționale, logice, aritmetice sau ca parametru a unei funcții și anume se
propagă ca rezultat al expresiei, indiferent de forma acesteia.
Notă:Există două excepții de la regula cu privire la comportamentul valorii NULL:
-prin concatenarea cu NULL a unui șir, se obține șirul și nu NULL;
-în funcțiile ag regate(prezentate în alt capitol) NULL se ignoră.
►Validation Rule – stabilește domeniul de valabilitate al valorilor pe care
poate să le ea câmpul, fiind cel mai puternic instrument prin care se configurează
integritatea de domeniu. Pentru a nu introduce date eronate putem defini reguli de
validare asupra câmpurilor, reguli ce nu ne vor permite să introducem date
necorespunzătoare.
Prin această casetă se introduce o condiție , care dacă nu este adevărată, va
produce două acțiuni:
-Afișarea unui mesaj(intro dus în caseta Validation Text);
-Blocarea părăsirii de către focus(locul unde se află cursorul) a câmpului
respectiv până când operatorul nu va introduce o dată care să determine ca respectiva
condiție să fie adevărată.
În principal se va ține seama de ur mătoarele două reguli:
-Expresiile se creează având obligatoriu ca unul din termeni valoarea introdusă
în câmpul respectiv. Numele acestuia se va omite, considerându -se implicit.
-Dacă nu se introduce nici un operator la începutul condiției acesta va fi
implicit operatorul relațional de egalitate “=“.
Așa cum am mai arătat, dacă această regulă de validare aplicată datei care a
fost introdusă în acest câmp nu este adevărată, atunci valoarea respectivă este respinsă
așteptându -se introducerea unei date corecte .
Deci ca o dată să fie acceptată trebuie să respecte tipul respectiv, regula de
validare și masca de introducere( Input Mask ).Aceste trei proprietăți determină practic
integritatea de domeniu pentru câmpul respectiv.
În zonaValidation Rule se poate in troduce o condiție astfel:
– direct de la tastatura. De exemplu scriem : <20- va determina pentru un
câmp de tip byte numai introducerea de valori de la 0 la 19, sau>=1 AND <= 10 – va
determina pentru un câmp numeric introducerea de valori de la 1 la 10.
75- apăsând butonul din dreapta caz în care se va deschide fereastra
Expression Builder în care vom putea crea propriile reguli de validare folosind diferite
funcții sau operatori.
Figura5.2.1.2.1 Fereastra Expression Builder
►Validation Text – stabilește un text care va fi afișat dacă regula de
validare nu este adevărată. Este indicat ca acest mesaj să fie foarte explicit și clar
pentru a lămuri operatorul asupra erorii comise.
►Format–reprezintă felul în care vor fi afișate datele în câmp, fol osindu-
se un anumit șablon. La anumite tipuri (Number, Date) se pot folosi șabloanele din
Windows/Control Panel/Regional Settings.
►Input Mask – Este un șablon care este folosit la introducerea datelor.
Pentru crearea lui este pus la dispoziție un wizard. (La instalarea Access -ului, trebuie
menționat în mod special acest wizard.). Această proprietate prin care se pot elimina
anumite caractere care se încearcă a se introduce, va acționa și ea în sensul respectării
integrității de domeniu a câmpului respecti v.
►Field Size – stabilește dimensiune câmpului astfel:
•La Text reprezintă lungimea câmpului
•La Numere reprezintă tipul sistemului de codificare, și anume:
•Byte– 8 biți, pozitiv
•Integer– 16 biți, pozitiv și negativ
•Long Integer – 32 biți,pozitiv și negativ
•Single– Virgulă mobilă simplă precizie, 7 cifre semnificative
76•Duble- Virgulă mobilă dublă precizie, 14 cifre semnificative
►Decimal Places – folosit numai la tipurile de date numerice și
reprezentând numărul de zecimale. Există ș i opțiunea Auto, care setează automat
numărul de zecimale funcție de datele introduse.
►New Value – la tipul AutoNumber stabilește dacă noile numere se acordă
prin incrementare sau random(aleator) .
►Required șiAllow ZeroLenght garantează introducerea de d ate în
câmpurile de ti p cheie și la cele în care apli cația solicită existența unor informații
diferite de null . Prin ace ste proprietăți, care fac ca o înregistrare introdusă într -o tabelă
să aibă sens, să fie logică, se introduce o nouă metodă de realizare a integrității bazei
de date.
►Indexed. Deși Microsoft Access creează un index după cheia primară,
pentru a spori viteza de căutare, se pot folosi și alți indecși pentru câmpurile cu
utilizare frecventă. Chiar dacă utilizarea acestora mărește timpul de in troducere a
datelor datorită timpului necesar pentru actualizarea indecșilor suplimentari, procesele
de căutare vor fi accelerate de existența lor.
Stabilirea dacă un câmp va fi sau nu indexat se face funcție de utilizarea
frecventă sau mai puțin a câmpu lui respectiv în operații de sortare sau selecție. Această
proprietate își arată eficiența în special la tabele cu mii de înregistrări, unde se pot face
economii de timp de execuție la nivelul orelor.
Există trei posibilități:
No
Yes– Duplications Ok
Yes– No Duplications – evident așa se setează un câmp cheie primară
Access este prevăzut cu un mecanism foarte simplu și direct de efectuare chiar
în timpul utilizării a sortării pe unul sau mai multe câmpuri. Acest sistem este activ în
orice obiect unde es te utilizată o tabelă. El constă din selecția sau poziționarea
cursorului pe câmpului respectiv și lansarea acestei operații din meniul contextual( clic
dreapta), așa cum se vede și din figura următoare .
77Un mecanism identic cu cel prezentat anterior es te folosit în Access și pentru
efectuarea unor operații simple de selecție, numite filtre. În meniul contextual afișat
după poziționarea pe o anumită valoare dintr -un câmp sunt disponibile 3 posibilități de
filtrare, și anume:
Filter By Selection – prin care se selecționează toate înregistrările care
pentru câmpul respectiv au aceiași valoare cu cea în care este plasat cursorul.
Filter Excluding Selection – prin care se selecționează toate
înregistrările care pentru câmpul respectiv au o valoare diferită de cea în care este
plasat cursorul.
Filter For – prin care se selecționează toate înregistrările care pentru
câmpul respectiv au aceiași valoare ca aceea pe care se introduce în caseta
respectivă
Operațiile de sortare sau filtrare efectuate pot fi ușor anu late prin comanda
Remove Filter/Sort .
5.2.1.3 Proprietatea Lookup
La câmpurile de tip Number,Text sauYes/No, se poate atașa proprietatea
Lookup, care permite introducerea de date prin intermediul unui control List Box(listă
derulantă) sau Combo Box (listă ascunsă) direct din una din următoarele trei tipuri de
surse:
Valoarea unor câmpuri dintr -o altă tabelă sau cerere – cea mai
utilizată.
Dintr-o listă de valori introdusă și atașată casetei
Numele unor câmpuri dintr-o altă tabelă sau cerere.
Figura5.2.1.3.1 Pagina Lookup
78Pentru a seta această proprietate se pot folosi două metode:
-Wizard LookUp – lansat din lista derulantă a tipurilor câmpurilor (vezi figur a
5.2.1.1.1)– care practic asistă utilizatorul în setarea proprietăților paginii LookUp, din
Field Propert ies.
-direct înpaginaLookUp.Datele ce trebuiesc completate în pagina de LookUp
sunt:
►Display Control – Se alege intre List Box sau Combo Box
►Row Source Type – Una din cele trei tipuri de surse prezentate mai sus.
►Row Source – există două p osibilități funcție de sursa de date precizată:
Numele tabelei /cererii ce este folosită ca sursă de date (selectată dintr –
o listă ascunsă);
Valorile din listă, separate prin ; (pentru tipul de sursă Value List)
►Bound Column – Numărul (începând de la 1) câ mpului din tabela
/cererea, de la care importăm datele de intrare.
►Column Count – Numărul (începând de la 1) câmpurilor din tabela
/cererea care se vor afișa în listă (separate tot prin ; ). Deci pe lângă câmpul din ale
cărui date vom selecționa ceea ce vr em să introducem (Bound Column) este uneori
necesar să afișăm mai multe câmpuri (Column Count) pentru a permite transmiterea
tuturor informațiilor necesare. De exemplu, vrem să selecționăm un câmp care conține
un cod, dar este necesar să afișăm și denumiri i explicite a ceea ce este codificat.
►Column Head – specifică dacă se vor afișa și denumirile câmpurilor
►Column Widths șiList Widths – specifică lățimea coloanelor și a întregii
liste.
►List Row – specifică numărul de linii care se afișează, restul liniil or fiind
accesate eventual prin bare derulante.
►Limt to List – setată pe Yes blochează introducerea de date în afara celor
din listă.
Deși toate aceste proprietăți pot fi setate și prin formulare este bine ca aceste
proprietăți să fie ataș ate tabelei și nu formularelor. Acest lucru devine evident dacă ne
gândim că aceiași tabelă poate fi folosită de mai multe formulare sau interogări.
5.2.2 Proprietățile tabelei
Se introduc printr -un formular ce apare la acționarea pictogramei specifice de
proprietăți(o mână ce arată un tabel) sau din meniul Access.
Aceste proprietăți, se referă la setări ce se referă la comportamentul tabelei în
ansamblu. Cea mai folosită este:
►Validation Rule – introduce o condiție a cărei evaluare se face în
momentul când se termin ă de introdus(modificat) o înregistrare și se trece la alta. Prin
aceasta se introduce o regulă de validare care se poate referi la relațiile dintre câmpuri,
ea completând în acest fel configurarea integrității de domeniu.
Dacă evaluarea condiției nu est e adevărată, se vor produce două acțiuni:
79Afișarea unui mesaj(introdus în caseta următoare, Validation Text);
Blocarea ieșirii din înregistrare până când evaluarea condiției va fi
adevărată
Această facilitate se folosește când se doresc a se verifica cor elații între datele
introduse în mai multe câmpuri, deoarece evaluarea se va face după ce se termină
introducerea datelor în toate câmpurile înregistrării. În exemplu se verifi că ca data
introdusă în câmpul [ C1] să fie inferioară datei din câmpul [C2] (când se face referire
la un câmp acesta este scris obligatoriu între paranteze drepte ).
Figura5.2.2.1Proprietățile tabelei –stabilirea unei reguli de validare
5.3 Vizualizarea tabelelor
Încărcarea cu date a tabelelor (popularea), indiferent de modul în care se
creează un tabel, se realizează prin Datasheet View . La adăugarea de date în acest
mod, se respectă toate regulile de validare referitoare la integritatea referențială ,
integritatea de domeniu și integritatea existențială ; dacă nu se respectă condi țiile de
validare, utilizatorul este avertizat printr -un mesaj de atenționare, oferindu -i-se totodată
posibilitatea corectării erorilor de introducere.
Obiectele Datasheet sunt prevăzute cu o interfață utilizator simplă și deosebit
de performantă, bazată aproape exclusiv pe lucrul cu mouse -ul, care permite facilități
deosebite privind personalizarea structurii de afișare. Obiectul Datasheet, are
implementate toate facilitățile Windows privind lucrul cu ferestre(redimimensionări,
poziționări, copieri sau mu tări de obiecte, etc.)
Figura5.3.1 Fereastra Datasheet
80Prezentăm în continuare cele mai utilizate operații care se pot efectua în
fereastra Datasheet:
Selecția unei înregistrări – clic pe marcajul din dreptul înregistrării;
Selecția unui câmp – clicpe numele câmpului;
Selecția multiplă – clic urmat de parcurgerea cu mouse -ul apăsat a
zonei respective(sau selecții multiple cu tasta Shift apăsată);
Ștergerea unei înregistrări – selecție + meniu contextual + Delete;
Mutarea unei coloane – selecție + 'tr agere' pe noua poziție;
Modificarea lățimii unei coloane – poziționare pe linia de demarcare
dintre numele coloanelor + tragere;
Sortare sau filtrare – selecția unei celule + meniu contextual +
comanda(au fost deja prezentate);
Căutarea sau înlocuirea unor date- ca în standardul Windows cu Find
șiReplace;
Rolul ferestrelor Datasheet , este acela de a oferi proiectanților de aplicații un
modul prin care să își testeze obiectele create. Pentru popularea tabelelor, este însăde
preferat încărcarea datelor p rin intermediul unui formular, mai ales când se alocă date
în mai multe tabele.
5.4 Aplicație
O firmă are mai multe gestiuni situate la adrese diferite. În aceste gestiun i se
găsesc mai multe produse î n stocuri dif erite, iar un produs se poate gă si în mai multe
gestiuni. Proiectăm tabele bazei de date astfel:
Rezolvare:
1. Tabelul „ GESTIUNI ” care conține următoarele câmpuri:
-Cod_G– cheie primară(se observă cheița din dreptul acestui câmp, precum și
proprietatea Indexed stabilită automat la „ Yes(No D uplicates) ”), ce conține date
numerice( Number- Integer) cu valori mai mari decât 100(se setează în proprietatea
Validation Rule condiția >100, iar Validation Text conținemesajul ce va fi afișat în
momentul în care nu este respectată condiția și anume “Un număr mai mare decât
100”)(vezi figura 3.3.1).
-DenumireG – câmp de tip Text pentru care se stabilește proprietatea
Required laYes pentru a obliga introducerea unei date în acest câmp.
-Adresa– câmp de tip Text.
81
Figura 5.4.1 Proiectarea tab elului „GESTIUNI”
2. Tabelul „ PRODUSE ”care conține câmpurile (vezi figura 3.3.2) :
-Cod_P– cheie primară care conține date pozitive . Se stabilește în
proprietatea Validation Rule condiția >0, proprietatea Validation Text conține mesajul
de atenționare î n cazul introducerii unei valori eronate “ Un număr pozitiv ”, iar
proprietatea Indexed este setată la „Yes(No Duplicates) ”.
-DenumireP – câmp de tip Text
-Um– unitatea de măsură de tip Text
-Preț– câmp de tip real . Se alege tipul de date Number și se setează
proprietatea Field Size la valoare Single.
Figura5.4.2 Proiectarea tabelului PRODUSE
823. Tabelul „ STOCURI” , care este un tabel intermediar ce realizează legătura dintre cele
două tabele, datorită existenței unei relații de tipul many to many ,conține câmpurile:
-Cod_G este cheie externă și va conține același tip de date ca și câmpul de
legătură din tabela „ GESTIUNI ”. Pentru acest câmp se setează proprietatea Lookup
astfel încât să fie permisă introducerea de date prin intermediul unui „ Combo Box” din
câmpulCod_G al tabelei pă rinte. Pentru aceasta se setează următoarele proprietăți din
paginaLookup:
-Display Control se stabilește la Combo Box ;
-Row Source Type se setează Table/Query ;
-Row Source precizează sursa de date și anume tab elulGESTIUNI ;
-Bound Column se setează la 1 întrucât câmpul Cod_G se găseșteîn
prima pozi țieîntabelulGESTIUNI ;
-Column Count va fi 1 deoarece, pentru exemplul considerat, este
suficient s ă vedem numai datele din codul gestiunii
-Cod_P este tot cheie externă și va fi de acel ași tip de date cu câmpul Cod_P
din tabela părinte PRODUSE . Și pentru acest câmp putem să ne legăm la sursa de date
deja construită, din tabela părinte, deci vom seta proprietatea Lookup la fel ca la
câmpulCod_G.
-Stoc este un câmp de tip Number, care apare în această tabelă intermediară
deoarece stocul depinde atât de gestiune cât și de produse(stocul de produs se stabilește
la nivel de gestiune) .
Figura5.4.3 Stabilirea proprietății Lookup pe ntru câmpurile Cod _Gși Cod_P din
tabelul STOCURI
După proiectarea tabelelor trebuiesc stabilite relațiile ce leagă cele trei tabele
ale bazei de date, dar acest lucru va fi prezentat în capitolul următor, și apoi se trece la
introducerea înregistrărilor . Întrucât introducerea înregistrărilor în tabele se realizează
83prin intermediul ferestrei Datasheet , descrisă anterior, voi prezenta doar câteva
exemple, pentru care ori nu sunt îndeplinite regulile de validare, ori datele sunt
introduse prin selecționare a dintr-o listă.
1. Dacă introducem în câmpul Cod_G un număr mai mic decât 100 se vaafișa un
mesaj de atenționare.
2. Dacă se omite introducerea unei denumiri de gestiune se va afișa un mesaj
corespunzător
3. Dacă se introduce în câmpul Cod _P un număr negativ va fi afișat mesajul scris la
proprietatea Validation Text .Și în cazul introducerii în cheia primară a unei valori care
mai există, se va afișa un mesaj dat de Access
84
4. În cazul definirii unor surse de date vom alege din liste ascuns e valorile ce urmează
să le primească câmpurile Cod_GșiCod_P din tabelul STOCURI .
5.5 Întrebări
1. Care sunt elementele care conduc la definirea unei tabele ?
Răspuns:
Definirea unei tabele se va face prin precizarea următoarelor elemente:
-Numele tabelei.
-Câmpurile și proprietățile (caracteristicile, atributele) acestora.
-Proprietățile tabelei.
852. Cum funcționează proprietatea Validation Rule a câmpurilor ?
Răspuns:
3. Ce reprez intă proprietatea Caption a unui câmp ?
Răspuns:
4. Care este diferența dintr Validation Rule a unui câmp si Validation Rule a unei
tabele?
Răspuns:
5.Ce înseamnă tipul de date AutoNumber ?
Răspuns:
6. Cum se stabilește cheia primară și ce proprietate se modifică automat la definirea
acesteia?
RăspunsDacă evaluarea condiției nu este adevărată, se vor produce două acțiuni:
-Afișarea unui mesaj(introdus în caseta următoare, Validation Text);
-Blocarea ieșirii din câmpul respectiv până când evaluarea condiției va fi
adevărată
Prinintroducerea unui nume în proprietatea Caption,acesta va fi folosit atunci
când se va trece în faza de vizualizare a tabelei . Această acțiune este valabilă
numai la afișarea numelui câmpului, orice referire la acesta făcându -se cu
numele efectiv al câmpului.
865.6 Test grilă tema 5
1.Care dintre următoarele enunțuri despre tabele este corect:
a)în proprietatea "Field Name" se introduce numele înregistrărilor;
b)în proprietatea "Field Name" nu se introduce numele tabelei;
c)în proprietatea "Data Type" se stabilește data curentă;
d)proprietatea "Data Type" determină tipul de relație;
e)proprietatea "Data Type" determină ti pul de date al câmpului;
2. Printr-un tip de date se definește:
a)mulțimea valorilor care pot fi luate de date;
b)dimensiunea ocupată de date în memorie;
c)numele variabilei care conține datele;
d)operațiile care se pot efectua cu aceste date;
3. Tipurile de date ale câmpurilor unui tabel nu po t fi:
a)text, number;
b) file, set;
c)autoNumber;
d)memo;
e)nici o variantă nu este corectă;
4. Tipul de dată a câmpului unui tabel poate fi:
a) currency;
b)string;
c)array;
d)variant;
5.Tipurile de date ale câ mpurilor unui tabel pot fi:
a)Text
b)Number
c)File
d(Set
e)AutoNumber
f)Recorder
6.Tipurile de date ale campurilor unui tabel pot fi:
a)Currency
b) Recorder
c)Memo
d)Set
e)OLE Object
f) Yes/No
877.Care dintre următoarele enunțuri despre tipul de dată al unui câmp este
corect:
a)tipul "Memo" este un șir de caractere de lungime fixă;
b)tipul "OLE Object" perm ite introducerea unor obiecte;
c)tipul "Currency" permite introducerea datei curente;
d)tipul "Text" permite introducerea unui singur caracter;
e)a+b;
8.Care dintre ur mătoarele enunțuri despre tipul de dată al unui câmp este
corect:
a)tipul "Memo" este șir de caractere de lungime nedeter minată;
b)tipul "OLE Object" permite introducerea unei valori asociate la o anumită monedă;
c)tipul "Currency" permite introducerea caracterelor;
d)tipul "Number" permite generarea unei secvențe de numere, sau a unor numere
aleatoare;
e)nici o variantă nu este corectă;
9.Care dintre următoarele afirmații referitoare la proprietățile câmpurilor este
corect:
a)proprietatea "Caption ", permite introducerea unui nume care va fi folosit atât la
afișarea cât și la referirea numelui câmpului;
b)proprietatea "Default Value", permite introducerea unei valori valide ce reprezintă
valoarea de inițializare a câmpului la crearea unei înregist rări noi;
c)proprietatea "Validation Text", stabilește domeniul de valabilitate al câmpului;
d)proprietatea "Indexed" setată pe Yes duce la obligativitatea de a se introduce o data
validă în acest câmp;
e)proprietatea "Input Mask" permite ca un câmp să fie ascuns;
10.Care dintre următoarele afirmații referitoare la proprietățile câmpurilor este
corect:
a)proprietatea "Validation Rule", stabilește domeniu l de valabilitate al câmpului;
b)proprietatea "Default Value", stabilește un text care va fi afi șat dacă regula de
validare nu este adevărată;
c)proprietatea "Format", la text reprezintă lungimea câmpului, iar la numere reprezintă
tipul sistemului de codificare;
d)proprietatea "Caption" permite captarea într -un formular a datelor;
e)proprietatea " Field Size", reprezintă felul în care vor fi afișate datele în câmp,
folosindu -se un anumit șablon;
11.Care dintre următoarele afirmații referitoare la proprietățile câmpurilor este
corect:
a)proprietatea "Validation Text", verifică datele de tip text;
88b)proprietatea "New Value", permite introducerea unei valori valide ce reprezintă
valoarea de inițializare a câmpului la crearea unei înregistrări noi;
c)proprietatea "Decimal Places", setează tipul de date "numere zecimale";
d)proprietatea "Required" – setată pe Yes duce la obligativitatea de a se introduce o
dată validă câmpul respectiv;
e)proprietatea "Field Size", reprezintă felul în care vor fi afișate datele în câmp,
folosindu -se un anumit șablon;
12.O tabelă se poate afla în starea de:
a)vizualizare;
b)salvare;
c)proiectare;
d)a+b;
e) a+c;
13. Care din următoarele afirmații referitoare la proprietățile câmpurilor sunt
corecte?
a)Required-stabilește dacă datele din c âmpul respecti v vor fi afi șate sau nu într-o
cerere de selec ție.
b)Validation Text -definește domeniul de valabilitate al valorilor ce pot fi introduse
într-un camp.
c)Caption-stabilește numele c âmpului.
d)New Value -proprietate specific ă numai tipului de date Auto Number .
e)Decimal Place -este caracteristic ă numai a tipuril or de date numerice .
f)Default Value -reprezintă valoare cu care se ini țializează câmpul la crearea unei
înregistrări noi.
14.Care dintre următoarele afirmații este adevărată:
a)dacă un câmp are setat un nume la proprietatea "Caption", acest nume poate fi
folosit oricând în locul numelui câmpului;
b)dacă proprietatea "Required" este setată, atunci câmpul respectiv are garantată
integritatea de domeniu;
c)dacă nu este completată proprietatea "Default Value" a unui câmp, acesta se va
inițializa cu valoa rea NULL la crearea unei noi înregistrări;
d)dacă este setată proprietatea "Validation Rule" a unui câmp, acesta poate lua orice
valoare care respectă tipul câmpului;
e)daca este setată proprietatea "Indexed" cu "Yes – Duplication OK", câmpul respectiv
poate fi cheia primară a unei tabele;
15.Care dintre următoarele afirmații este adevărată:
a)un câmp numeric cu proprietatea "Field Size" setată Integer desemnează valori
întregi, pozitive pe 16 biți;
89b)un câmp numeric cu proprietatea "Field Size" seta tă Integer desemnează valori
întregi, pozitive și negative pe 4 octeți;
c)într-un câmp numeric cu proprietatea "Field Size" setată Integer se poate introduce
numărul 50000;
d)dacă este setată proprietatea "Indexed" cu "Yes – Duplication OK", câmpul respe ctiv
poate fi cheia primară a unei tabele;
e)nici o variantă nu este ad evărată;
16. Care dintre următoarele afirmații nu este adevărată:
a)într-un câmp numeric cu proprietatea "Field Size" setată Integer se poate introduce
numărul-30000;
b)într-un câmp numeric cu proprietatea "Field Size" setată Single se poate introduce
fărătrunchiere numărul 1,23456789;
c)într-un câmp numeric cu proprietatea "Field Size" setată Single se poate introduce
fără trunchiere numărul 123456;
d)într-un câmp numeric cu proprietatea "Field Size" setată Double se poate introduce
fără trunchiere numărul 123456789000000000000;
e)într-un câmp numeric cu proprietatea "Field Size" setată Double se poate introduce
fără trunchiere numărul 0,00000000000123456789;
17.Care dintre următoarele afirmații nu este adevărată:
a)se poate introduce proprietatea "Validation Rule" ori pentru câmpuri ori pentru
tabel;
b)prin proprietatea "Validation Rule" a unui câmp, se poate introduce o condiție care
să se refere la mai multe câmpuri ale tabelei;
c)prin proprietatea "Validation Rule" a unui tabel, se poate introduce o condiție care să
se refere la mai multe câmpuri ale tabelei;
d)într-un tabel cu 3 câmpuri se pot introduce maxim 4 reguli de validare prin
Validation Rule;
e)proprietate a "Input Mask" a unui câmp poate bloca introducerea anumitor caractere;
18.Care dintre următoarele afirmații este adevărată:
a)prin proprietatea "Validation Rule" a unui câmp, se poate introduce o condiție care
să se refere la mai multe câmpuri ale tabe lei;
b)proprietatea "Validation Rule" pentru un tabel, înlocuiește proprietatea "Validation
Rule" ale câmpurilor acestuia;
c)proprietatea "Validation Text" a unui câmp, este folosită pentru introducerea unei
reguli de validare pentru câmpurile de tip Tex t;
d)într-un câmp "AutoNumber" opera torul nu poate introduce date;
e)toate enunțurile de mai sus nu sunt adevărate;
19. Proprietatea LookUp permite introducerea de date prin intermediul:
a) unui control lista derulantă;
90b)unui control cutie de text ;
c) unui control listă de opțiuni;
d)unui control caseta de dialog ;
e) unui control listă ascunsă;
20.Care dintre urm ătoarele afirma ții referitoare la datele ce trebuiesc completate
în pagina de LookUp sunt CORECTE?
a)Row Source Type – numele tabelei/cer erii ce este folosit ă ca sursă de date.
b)Bound Column – specifică dacă se vor afi șași denumirile câmpurilor.
c)Display Control – se alegeîntre List Box sau Combo Box.
d)List Row – setată pe Yes blocheaz ă introducerea de date în afara celor din list ă.
e)Column Count – numărul (începând de la 1) câmpurilor din tabela/cererea care se
vor afisș în listă.
21.Care dintre următoarele afirmaț ii referitoare la datele ce trebuiesc completate
în pagina de LookUp sunt CORECTE?
a)Limt to List – specifică numărul de linii care se afi șează, restul liniilor fiind accesate
eventual prin bare derulante.
b)Bound Column – numărul (începând de la 1) câmpului din ta bela/cererea, de la care
importăm datele de intrare.
c)Column Widths și List Widths – numărul (începând de la 1) câmpurilor din
tabela/cererea care se vor afi șa în listă.
d)Display Control – specifică dacă se vor afi șași denumirile câmpurilor.
e)Row Source – numele tabelei/cererii ce este folosit ă ca sursă de date.
22.Care dintre următoarele afirmații e ste adevărată:
a)prin obiectul Datasheet, se pot m odifica datele dintr -o tabelă;
b)prin obiectul Datasheet, se poate modifica structura unei tabele;
c)în obiectul Datasheet, sortarea sau selecția datelor unui câmp, are același efect;
d)în Access, toat e tabelele au obligatoriu definită o cheie primară;
e)dacă proprietatea "Default Value" a unui câmp este setată cu o anumită valoare
aceasta nu mai poate fi modificată în momentul introducerii unei noi înregistrări;
23.Care dintre următoarele afirmații nu este adevărată:
a)în obiectul Datasheet, filtrarea este practic un criteriu simplu de selecție aplicat
asupra datelor unui câmp;
b)în obiectul Datasheet, se poate schimba numele cu care sunt afișate câmpurile unei
tabele;
c)în obiectul Datasheet, se pot ascunde anumite câmpuri;
d)în obiectul Datasheet, se poate efectua sortarea după mai multe câmpuri;
e)în obiectul Datasheet, se pot introduce câmpuri calculate;
91Tema 6
Crearea r elațiilor
Cuprinsul Temei 6:
6.1INTRODUCERE ………………………….. ………………………….. ………………………. 91
6.2 CREAREA UNEI REL AȚII ÎNTRE DOUĂ TABE LE………………………… 92
6.3 TIPUL RELAȚIEI ………………………….. ………………………….. ……………………. 94
6.4 INTEGRITATEA REF ERENȚIALĂ ………………………….. …………………….. 95
6.5TIPUL DE LEGĂTURĂ A UNEI RELAȚII – JOIN TYPE ………………….. 97
6.6 CREAREA RELAȚIIL OR MULTIPLE. ………………………….. ………………… 99
6.7 ÎNTREBĂRI ………………………….. ………………………….. ………………………….. .100
6.8 TEST GRILĂ TEMA 6………………………….. ………………………….. ……………. 101
Obiective
Cunoașterea m odalităților de creare și proiectarea a unei relații.
Configurarea proprietăților relațiilor.
Cunoașterea și utilizarea tipurilor de relații și a tipurilor de legătură a
relațiilor
Timp alocat: 2 ore
6.1 Introducere
Relațiile sunt al doilea obiect, care împreună cu tabelele definește
structura(schema) unei baze de date. Ele au rolul de a permite accesarea mai multor
tabele în același timp.
Așa cum s -a mai arătat relațiile se realizează între două câmpuri care aparțin la
două tabele sau cereri.(car e sunt privite tot ca niște tabele, dar virtuale). Pentru ca o
relație să fie logică, este necesar, ca în cele două tabele, câmpurile între care se
stabilește relația să se refere la aceleași date.
În Access se pot crea și folosi, funcție de domeniul lor de valabilitate, două
tipuri de relații, permanente și temporare.
1Relațiile permanente. Relațiile permanente, sunt valabile pen tru toate
obiectele din baza de date. Ele se vor atașa definitiv la tabele sau cererile
între care se creează. Oriunde se vor folosi aceste obiecte, ele vor fi legate
întotdeauna prin relațiile create.
92Unei relații permanente i se poate seta proprietatea de integritate referențială,
care joacă un rol major asupra structurii bazei de date.
Metoda prin care se creează relațiile perma nente, este implementată de
modulul Relationships. Acesta se poate lansa prin mai multe feluri:
-din meniul Tools
-acționând pictograma specifică relațiilor, direct de pe ToolsBar.
-din meniul contextual, lansat din fereastra Database.
De acest tip de relații, permanente, ne vom ocupa în continuare.
O tabelă sau o cerere care participă la o relație nu va mai putea fi ștearsă decât
dacă în prealabil sunt eliminate toate relațiile la care aceasta participă.
O relație temporară poate în locui într -o cerere o relație permanentă, prin
setarea în mod diferit a proprietății specifice folosită la extragerea datelor( Join Type ).
6.2 Crearea unei relații între două tabele
Dacă avem mai multe tabele între care vrem să creăm anumite legături vom
apela funcția Relationships .Pe ecran va apare fereastra Show Table din care vom
alege tabelele între care vom crea legătura. Vom selecta tabela dorită și vom apăsa
butonulAdd. Vom face acest lucru pe rând cu toate tabelele dorite sau selectăm mai
multe tabele în același timp și apăsăm butonul Add.
2Relațiile temporare. Relațiile temporare sunt cre ate de obicei în cereri,
fiind valabile numai în obiectul în care au fost definite. Ele se folosesc
numai în operațiile de extragere a informațiilor din baza de date. Prin
aceste relații nu se poate introduce proprietatea de integritate
referențială. Din a ceastă cauză ele nu au nici un rol în ceea ce privește
structura bazei de date.
93
Figura6.2.1 Fereastra Show Table
Pe ecran, în fereastra Relationships, vor ap ărea tabelele pe care vrem să le
legăm.În continuare, prin tragerea(drag and drop) câmpurilor între tabelele(cererile)
aflateîn fereastra Relationships, se construiesc relațiile dorite.
Figura6.2.2 Construirea relațiilor – fereastra Relationships
Selectăm
căsuța
Enforce
Referential
Integrity
pentru a
putea defini
restricții
asupra
legăturii nou
create
Se observă tipul legăturii:unul la mulțiCele două
tabele între
care se
construiește
relația
Câmpul comun
94O relația se poate șterge sau edita prin lansarea meniului contextual al
acesteia(se poziționează mo use-ul pe relație și clic dreapta).
Se editează relația prin intermediul ferestrei Edit Relationship . Prin această
operație se stabilesc proprietățile relației.
Tot cu modulul Relationships se vor putea defini și relații multiple între două
tabele(cereri), adică relații care se stabilesc între mai multe câmpuri(nu numai două) .
Practic definirea relațiilor se face prin acțiuni de selecție din liste, tragere sau
setare, făcute numai cu mouse -ul.
6.3Tipul relației
Tipul relației reprezintă de fapt modalitatea în care se vor asocia înregistrările
din cele două tabele(cereri), din punctul de vedere al numărului posibil de înregistrări
pe care fiecare tabelă(cerere) îl furnizează în realizarea relației respective.
El este determinat automat funcție d e proprietățile câmpurilor care participă la
relație, fiind afișat în partea de jos a ferestrei ca în figura 6.2.2.
Astfel, dacă un câmp e c heie primară sau are proprietatea Indexed setată la
Yes(No Duplication) , relația va fi în acel capăt One.
Dacă un câmp de legătură are proprietatea Indexed setată la Nosau
Yes(Duplication OK) , atunci relația în acel loc va fi Many.
Dacă în ambele capete relația este No Indexed sauIndexed-Duplication OK ,
atunci relația va fi nedeterminată( many to many ).
Figura6.3.1 Tipuri de relațiiNu vom putea crea legături între două tabele după orice câmpuri ci doar
după acele câmpuri care într -o tabelă sunt cheie primară și în cealaltă
tabelă cheie externă. Cele do uă câmpuri după care se face legătura
trebuie să fie de același tip.
956.4 Integritatea referențială
Integritatea referențială, are efect deosebit în ceea ce privește păstrarea
corelațiilor logice care se stabilesc între câmpurile unei relații. Ea este o proprietate,
valabilă numai pentru relațiile permanente.
Dacă se dorește ca relația editată să aibă proprietatea de integritatea
referențială se va bifa caseta de validare –Enforce Referential Integrity.
Reamintim că dacă o relație între două tabele are proprietatea de integritate
referențială, at unci nu pot exista în tabela copil pentru câmpul de relație, valori care să
nu se găsească în câmpul corespunzător din tabela părinte.
Dacă relația este de tip one to many, întotdeauna tabela părinte va fi în partea
one a relației. Dacă relația este de t ip one to one, oricare dintre tabele poate fi părinte,
aceasta fiind cea de la care se pornește 'tragerea', și care în fereastra de editare se va
găsi afișată în partea stângă. Dacă relația este de tip many to many (nedeterminată),
atunci proprietatea de integritate referențială nu va putea fi setată.
Deci, dacă la o relație , care are proprietatea de integritatea referențială , sunt
setate ambele opțiuni atunci actualizări în tabela părinte care ar trebui să fie
refuzate(blocate) pent ru că produc în tabele copil „stricarea” integrității referențiale,
vor fi acceptate și efectuate, dar în același timp, automat se vor face și prelucrările
necesare în tabela copil, pentru care proprietatea de care discutăm să se menți nă
corectă, adică să nu existe „ copil” care să nu aibă „ părinți” în tabelele din ierarhia
superioară.
Exemplu:Între tabelele PRODUSE șiSTOCURI este creată o relație one to man y, între
câmpurile Cod _P din cele două tabele. În funcție de activarea sau nu a integritățiiDacă o relație are setată integritate referențială atunci se pot selecta(bifa)
două opțiuni care vor permite ca acțiunea de actualizare a unui câmp sau
ștergere a unor înregistrări din tabela părinte să se propage și în tabelele
legate de aceasta. Acestea sunt:
►Cascade Update Related Fields (actualizarea în cascadă a
câmpurilor din relație). În acest caz, dacă se va modifica valoarea dintr –
un câmp al unei tabele părinte, atunci această modificare se va efectua
automat și asupra câmpului corespunzător din tabela copil, dacă acesta e
legat de tabela părinte printr -o relație cu setarea de mai sus făcută. În
felul acesta, integritatea referențială este păstrată pentru respectiva
relație.
►Cascade Delete Related Records (ștergerea în cascadă a
înregistrărilor din relație). În acest caz, ștergerea unei înregistrări din
tabela părinte, va duce la ștergerea automată din tabela copil, a tuturor
înregistrărilor care vor avea în câmpul de relație, ac eiași valoare cu cea
din înregistrarea care a fost ștearsă.
96referențiale și de setarea sau nu a celor două opțiuni, avem următoarele operații
permise:
1. Integritatea referențială nu este setată.
Sunt permise orice modificări de câmpuri sau ștergeri de înregistrări în ambele
tabele. Se observă că dacă, de exemplu se șterge înregistrarea 1 din PRODUSE ,
înregistrările 1 , 2 și3dinSTOCURI , rămânfără informațiile de nivel superior(fără
părinți).
2. Integritatea referențială este setată, dar nu și ștergerea și actualizarea în cascadă
•Se șterge înregistrarea 1 din PRODUSE – operația nu este acceptată
•Se șterge înregistrarea 2 dinPRODUSE – operația este acceptată
•Se modifică Cod_P din înregistrarea 1 din PRODUSE cu valoarea 10-
operația nu este acceptată
•Se modifică Cod_P din înregistrarea 2 dinPRODUSE cu valoarea 10-
operația este acceptată
•Se șterge înregistrarea 1 din STOCURI-operația este acceptată
• Se modifică Cod_P din înregistrarea 1 din STOCURI cu valoarea 10-
operația nu este acceptată
3. Integritatea referențială este setată, precum și ștergerea și actualizarea în cascadă.
•Se șterge înregistrarea 1 din PRODUSE – operația este acceptată, dar se șterg
automat și înregistrările 1 , 2 și3 dinSTOCURI
• Se șterge înregistrarea 2 dinPRODUSE – operația este acceptată
•Se modifică Cod_P din înregistrarea 1 din PRODUSE cu valoarea 10-
operația este acceptată , dar s e modifică automat și în înregistrările 1 , 2 și3 din
STOCURI, Cod_P cu10.
•Se modifică Cod_P din înregistrarea 2 dinPRODUSE cu valoarea 10 –
operația este acceptată
• Se șterge înregistrarea 1 din STOCURI- operația este acceptată
•Se modifică Cod_P din înregistrarea 4 dinSTOCURIcu valoarea 10 –
operația nu este acceptată .PRODUSE
DenumireP UmPrețCod_P
P1 Kg101
P2 L152
P3 Kg253
P4 L454STOCURI
Cod_P Cod_GStoc
1101 10
1102 25
1103 15
3102 30
4101 50
4103 201 one tomany
976.5Tipul de legătură a unei relații – Join Type
Problema pe care o rezolvă această proprietate este următoarea: dacă în unul
din tabele, există înregistrări pentru c are în câmpul de relație conține valori care nu se
regăsesc în câmpul corespondent din cealaltă tabelă, care vor fi înregistrările care se
vor selecționa din ambele tabele?
Ea este o proprietate, valabilă atât pentru relațiile permanente cât și pentru cel e
temporare(din cereri). Este o proprietate care are un rol hotărâtor în execuția cererilor
care folosesc la intrare mai multe tabele corelate.
Setarea tipului de legătură se face prin acționarea din modulul de editare a
relației permanente a butonului d e comandă Join Type , care va duce la apariția ferestrei
Join Properties , prezentată mai jos.
Figura 4.4.1 Fereastra Join Type
În cazul relațiilor temporare, fereastra Join Properties , apare direct în
momentul în care se editează relația.Tipul de legătură a unei relații ( Join Type ), reprezintă o proprietate a
relației care are efect în ceea ce privește extragerea de date corelate din
tabelele care participă la aceasta.
Funcție de înregistrările care sunt selectate din cele două tabele(cereri)
care intră în relație există două tipuri de legături:
►Inner Join. În acest tip de legătură vor fi selecționate numai
acele înregistrări care au câmpul de legătură egal în ambele tabele
(cereri).
►Outer Join. În acest tip de legătură vor fi selecționate toate
înregistrările unei tabele iar din cealaltă, numai acele înregistrări care au
câmpul de legătură egal în ambele tabele (cereri). În funcție de
tabela(cererea) care intră cu toate înregi strările vom avea:
98Exemplu: Considerăm două tabele PRODUSE și STOCURI , legate printr -o relație de
tipulone to many realizată între câmpurile Cod_P și care nu are setată proprietatea de
integritate referențială.
1. Tipul de legătură a relației este Inner Join. Se vor extrage următoarele înregistrări:
-Din tabela PRODUSE – înregistrările: 1; 3; 4
-Din tabela STOCURI – înregistrările: 1; 2; 3; 4; 5; 6
2. Tipul de legătură a relației este Left Outer Join.
-Din tabela PRODUSE – toate înregistrările: 1; 2; 3; 4
-Din tabela STOCURI – înregistrările: 1; 2; 3; 4;5; 6PRODUSE
DenumireP UmPrețCod_P
P1 Kg101
P2 L152
P3 Kg253
P4 L454STOCURI
Cod_P Cod_GStoc
1101 10
1102 25
1103 15
3102 30
4101 50
4103 20
5103 50
1101 10
1102 25
1103 15
3102 30
4101 50
4103 20P1 Kg101
P3 Kg253
P4 L4541 one tomany-Left Outer Join (stânga) – se consideră toate înregistrările
din tabelul din stânga, iar din tabelul din dreapta numai acele înregistrări
care au câmpul de legătură egal în ambele tabele
-Right Outer Join (dreapta) – se consideră toate
înregistrările din tabelul din dreapta, iar din tabelul din stânga numai
acele înregistrări care au câmpul de legătură egal în ambele tabele
993. Tipul de legătură a relației este R ight Outer Join. Se vor extrage următoarele
înregistrări:
-Din tabela PRODUSE – înregistrările: 1; 3; 4
-Din tabela STOCURI – toate înregistrările: 1; 2; 3; 4; 5; 6 ; 7
6.6 Crearea relațiilor multiple.
Între două tabele se pot crea relații multiple, adică între mai multe câmpuri.
Metoda folosită constă în realizarea la început a unei relații, după care, în modulul de
editare al acesteia, se vor selecta în cele două casete din partea superioară, câmpurile
din tabelele între care se vor stabili și celelalte relații.
Pentru toate relațiile create între cele două tabele, se permite o singură
proprietate pentru tipul de legătură.
Figura6.6.1 Crearea relațiilor multiple1101 10
1102 25
1103 15
3102 30
4101 50
4103 20P1 Kg101
P2 L152
P3 Kg253
P4 L454
1101 10
1102 25
1103 15
3102 30
4101 50
4103 20
5103 50P1 Kg101
P3 Kg253
P4 L454
1006.7 Întrebări
1.Cum se stabilește tipul unei relații ?
Răspuns:
2. Care sunt tipurile de legătură a unei relații ?
Răspuns:
3. În funcție de domeniul de valabilitate care sunt tipurile de relații care se pot crea?
Răspuns:
4. Ce înseamnă Cascade Update Related Fields ?
RăspunsTipul unei relații l este determinat automat funcție de proprietățile câmpurilor
care participă la relație .Astfel, dacă un câmp e cheie primară sau are
proprietatea Indexed setată la Yes(No Duplication), relația va fi în acel capăt
One. Dacă un câmp de legătură are proprietatea Indexed setată la No sau
Yes(Duplication OK), atunci relația în acel loc va fi Many. Dacă în ambele
capete relația este No Indexed sau Indexed -Duplication OK, atunci relația va fi
nedeterminată(many to many).
Există două tipuri de legătură a unei relații:
-Inner Join. În acest tip de legătură vor fi selecționate numai acele
înregistră ri care au câmpul de legătură egal în ambele tabele (cereri).
-Outer Join. În acest tip de legătură vor fi selecționate toate
înregistrările unei tabele iar din cealaltă, numai acele înregistrări care au câmpul
de legătură egal în ambele tabele (cereri) .
Există două tipuri de relații:
– relații permanente – sunt valabile pentru toate obiectele din baza de
date;
– relații temporare – sunt create de obicei în cereri, fiind valabile numai
în obiectul în care au fost definite.
1015. Ce înseamnă Cascade Delete Related Records ?
Răspuns:
6.8 Test grilă tema 6
1. Într-o bază de date relațională, între două tabele relațiile se formează:
a)între două câmpuri ca re conțin același tip de date;
b)între un câmp de tip Integer și unul de tip Text;
c)între două câmpuri, indiferent de tipul de date;
d)numai între cheile primare;
e)automat, după realizarea tabelelor;
2. În Access se pot crea urm ătoarele tipuri de relații:
a)permanente, semipermanente;
b)temporare, semitemporare;
c)permanente, atemporale;
d) permanente, temporare;
e)nici o variantă nu este corectă;
3. Într-o bază de date relațională, care dintre următoarele afirmații referit oare la
relațiile "one to one" este corectă:
a)o asemenea relație se realizează în general între cheia principală a tabelei părinte și
cheile externe ale tabelelor corelate;
b)o asemenea relație se realizează dacă în ambele tabele câmpul de legătură are
caracter de unicitate doar pentru o parte din înregistrările tabelei respective;
c)o asemenea relație se realizează atunci când între entitățile celor două tabele exi stă o
corespondență biunivocă;
d)o asemenea relație se creează prin intermediul unei ta bele intermediare care are
relații "one to many" cu alte două tabele;
e)nu există relații de tipul "one to one";
4. Într-o bază de date relațională, relațiile “one to many" se creează atunci când
orice entitate din tabela părinte este legată de:
a)nicio entitate din cealaltă tabelă;
b)o entitate din cealaltă tabelă;
c)două sau mai multe entități din cealaltă tabelă;
d) a+b+c;
102e)a+c;
5. Într-o bază de date relațională, care dintre următoarele afirmații referitoare la
relațiile "one to many" este cor ectă:
a)o asemenea relație se realizează în general între cheia principală a tabelei părinte și
cheile externe ale tabelelor corelate;
b)o asemenea relație se realizează în general între câmpuri care nu sunt chei;
c)o asemenea relație este folosită pen tru a diviza tabelele cu multe câmpuri în tabele
mai "înguste";
d)o asemenea relație se creează prin intermediul unei tabele intermediare care are
relații "one to one" cu alte două tabele;
e)o asemenea relație se creează prin intermediul unei tabele inte rmediare care are
relații "many to many" cu alte două tabele;
6. Într-o bază de date relațională, relațiile "many to many" se creează:
a)între două tabele, în ambele câmpul de legătură având caracter de unicitate pentru
toate înregistrările tabelei respe ctive;
b)conform celei de a patra formă de normalizare;
c)atunci când între entitățile celor două tabele există o corespondență biunivocă;
d)prin intermediul unei tabele intermediare care are relații "one to one" cu cele două
tabele;
e)prin intermediul unei tabele intermediare care are relații "man y to one" cu cele două
tabele;
7. În Access, în care din următoarele relații nu se poate seta proprietatea de
integritate referențială:
a)unu la unu (one to one);
b)unu la mai mulți (one to many);
c)mai mulți la unu (many to one);
d)mai mulți la mai mulți (many to many);
e)la toate relațiile se poate seta;
8. În Access, care dintre următoarele afirmații nu este adevărată :
a)noțiunile: tip de relație și tip de l egătură (join), sunt identice;
b)tipul de legătură (join), poate fi modificat la crearea unei cereri;
c)tipul de relație, nu poate fi modificat la crearea unei cereri;
d)relațiile permanente sunt atașate obiectelor pe care le leagă, fiind valabile oriunde în
baza de date;
e)există și relați i care nu sunt salvate în baza de date;
10. În Access, care dintre următoarele afirmații este adevărată:
a)tipul de relație, poate fi modificat la crearea unei cereri;
b)dacă o tabelă este în relație cu alta, ea poate fi ștearsă oricând;
103c)tipul relați ei este stabilit prin comanda Edit Relationships;
d)dacă câmpul este setat "Indexed=Yes Duplication OK", rel ația în acel loc va fi
"many";
e)integritatea existențială înseamnă că nu pot exista înregistrări 'copil' care să nu aibă
'părinți' în tabelul di n ierarhia superioară;
11. Tipul de legătură "Inner Join" semnifică:
a)o relație intrinsecă;
b)o legătură redundantă;
c)selecția tuturor înregistrărilor dintr -o tabelă, iar din cealaltă doar a celor care au
câmpul de legătură egal în ambele tabele;
d)o selecție actualizată;
e)selecția numai a înregistrărilor care au câmpul de l egătură egal în ambele tabele;
12. În Access, care dintre următoarele afirmații este adevărată:
a)tipul de legătură "Outer Join" determină selecționarea acelor înregistrări di n cele
două tabele care au câmpul de legătură egal;
b)o relație între două câmpuri care sunt chei primare poate fi: "one to one" sau "one to
many";
c)toate relațiile permanente au obligatoriu setată proprietatea de integritate
referențială;
d)dacă o rel ație are setată proprietatea de integritate referențială, atunci automat se
produce și ștergerea sau actualizarea în cascadă;
e)dacă o relație are setată proprietatea de integritate referențială, precum și ștergerea și
actualizarea în cascadă, atunci în " tabela părinte" este permisă ef ectuarea oricărei
actualizări;
13. În Access, care dintre următoarele afirmații este adevărată:
a)în relațiile "one to one", ștergerea sau actualizarea în cascadă sunt fără sens,
deoarece nu se poate stabili care este tabe lul "părinte" și care este tabelul "copil";
b)dacă o relație are setată proprietatea de integritate referențială, dar nu și cele de
ștergere și actualizare în cascadă, atunci în "tabela părinte" este permisă efectuarea
oricărei actualizări;
c)o relație s e poate crea și între două câmpuri ale aceleiași tabele;
d)relațiile "one to one", au întotdeauna tipul de legătură "Inner Join";
e)relațiile "one to many", au întotdeauna tipul de legătură "Outer Join";
14. În Access, care dintre următoarele afirmații nu este adevărată :
a)relațiile se pot crea și în cereri;
b)se pot seta în același timp: ștergerea și actualizarea în cascadă;
c)actualizarea în cascadă se poate seta numai dacă e setată și integritatea referențială;
d)la relațiile "one to one" se poa te seta integritatea referențială;
e)toate enunțuril e de mai sus sunt adevărate;
10415. În Access, „Cascade Delete Related Records” reprezintă:
a)o proprietate a câmpului unei tabele;
b)o proprietate a înregistrărilor unei tabele;
c)o proprietate a unei cereri;
d)ștergerea în cascadă a câmpurilor din relație;
e)ștergerea în cascadă a înregistrărilor din rela ție;
16. În Access, „Cascade Update Related Fields” reprezintă:
a)o proprietate a câmpului unei tabele;
b)o proprietate a înregistrărilor unei tabele;
c)o proprietate a unei cereri;
d)actualizarea în cas cadă a câmpurilor din relație;
e)actualizarea în cascadă a înregistrărilor din relație;
17. Se dau următoarele două tabele cu: relație "one to many" pe câmpul
CNP; integritatea referențială este setată; dar nu și ștergerea și
actualizarea în cascadă. Dacă se modifică câmpul CNP din înregistrarea 1
din tabelul "Studenți", ce se întâmplă ?
a)se modifică înregistrarea 1 din tabelul "Studenți" ;
b)se modifică câmpul CNP din înregistrările 1 și 2 din tabelul "Înscriși";
c) modificarea nu va fi acceptată;
d) se modifică câmpul CNP din înregistrarea 2 din tabelul "Înscriși ";
e)a+b;
18. Se dau următoarele două tabele cu: relație "one to many" pe câmpul CNP;
integritatea referențială este setată; precum și ștergerea și actualizarea în
cascadă. Dacă se șterge înregistrarea 4 din tabelul "Studenți", ce se întâmplă ? Tabela'STUDENTI '
Nume PrenumeCNP-cod
student
1-EnescuAnca-Cristina2-84,01,09…
2-CalotăMarius-Alin1-85,04,11…
3-Groșanu Ana-Maria2-83,08,10…
4-CaciucRomică1-75,12,17…Tabela'INSCRISI'
CNP-cod
studentCod
spec.Tip
înv.
1)2-84,01,09.. 002Taxă
2)2-84,01,09.. 003Fără
3)2-83,08,10.. 003Taxă
4) 1-75,12,17.. 001Fără
5) 1-75,12,17.. 002Taxă
6) 1-75,12,17.. 003Taxă1one to many 1
105a)ștergerea nu va fi acceptată ;
b)se șterge înregistrarea 4 din tabelul "Studenți" ;
c)se șterg înregistrările 4, 5, 6 din "Înscr iși";
d)se șterge înregistrarea 4 din ambele tabele ;
e)b+c;
19.Se dau următoarele două tabele cu: relație "one to many" pe câmpul CNP;
integritatea referențială este setată; dar nu și ștergerea și actualizarea în cascadă.
Care din următoarele afir mații este adevărată:
a)se șterge înregistrarea 1 din „Studenți” – operație acceptată, dar înregistrările 1și 2
din „Înscriși” rămân fără informațiile de nivel superior;
b)se șterge înregistrarea 3 din „Studenți” – operație acceptată;
c)se modifică câm pul „CNP” din înregistrarea 1 din „Studenți” – operație acceptată;
d)se modifică câmpul „ CNP” din înregistrarea 2 din „Studenți” – operație acceptată;
e)se șterge înregistrarea 2 din „Studenți” – operație neacceptată; Tabela'STUDENTI '
Nume PrenumeCNP-cod
student
1-EnescuAnca-Cristina2-84,01,09…
2-CalotăMarius-Alin1-85,04,11…
3-Groșanu Ana-Maria2-83,08,10…
4-CaciucRomică1-75,12,17…Tabela'INSCRISI'
CNP-cod
studentCod
spec.Tip
înv.
1)2-84,01,09.. 002Taxă
2)2-84,01,09.. 003Fără
3)2-83,08,10.. 003Taxă
4) 1-75,12,17.. 001Fără
5) 1-75,12,17.. 002Taxă
6) 1-75,12,17.. 003Taxă1one to many 1 Tabela'STUDENTI '
Nume PrenumeCNP-cod
student
1-EnescuAnca-Cristina2-84,01,09…
2-CalotăMarius-Alin1-85,04,11…
3-Groșanu Ana-Maria2-83,08,10…
4-CaciucRomică1-75,12,17…Tabela'INSCRISI'
CNP-cod
studentCod
spec.Tip
înv.
1)2-84,01,09.. 002Taxă
2)2-84,01,09.. 003Fără
3)2-83,08,10.. 003Taxă
4) 1-75,12,17.. 001Fără
5) 1-75,12,17.. 002Taxă
6) 1-75,12,17..003Taxă1one to many 1
10620.Se dau următoarele două tabele cu: relație "one to many" pe câmpul CNP;
integritatea referențială este setată; precum și ștergerea și actualizarea în
cascadă.
Care din următoarele afirmații este adevărată:
a)se șterge înregistrarea 1 din „Studenți” – operație acceptată, dar înregist rările 1și 2
din „Înscriși” rămân fără informațiile de nivel superior ;
b)se șterge înregistrarea 1 din „ Înscriși” – operație neacceptată;
c)se modifică câmpul „ CNP” din înregistrarea 2 din „Studenți", cu valoarea 1 –
99,01,01.. – operație neacceptată;
d)se modifică câmpul „ CNP” din înregistrarea 2 din „Studenți”, cu valoarea 1-
85,04,11..– operație neacceptată;
e)se șterge înregistrarea 4 din „Studenți” – operație acceptată, dar se vor șterge
automat și înregistrările 4, 5 și 6 din „Înscriși”; Tabela'STUDENTI '
Nume PrenumeCNP-cod
student
1-EnescuAnca-Cristina2-84,01,09…
2-CalotăMarius-Alin1-85,04,11…
3-Groșanu Ana-Maria2-83,08,10…
4-CaciucRomică1-75,12,17…Tabela'INSCRISI'
CNP-cod
studentCod
spec.Tip
înv.
1)2-84,01,09.. 002Taxă
2)2-84,01,09.. 003Fără
3)2-83,08,10.. 003Taxă
4) 1-75,12,17.. 001Fără
5) 1-75,12,17.. 002Taxă
6) 1-75,12,17.. 003Taxă1one to many 1
107Tema7
Interogări în Access
Cuprinsul Temei 7
7.1 INTRODUCERE ………………………….. ………………………….. …………………….. 107
7.2 CONSTRUIREA INTE ROGĂRILOR PRIN QBE(Q UERY BY EXAMPLE)
………………………….. ………………………….. ………………………….. ………………………… 113
7.2.1SCHEMA UTI LIZATĂ DE O CERERE ………………………….. ……………………… 113
7.2.2PROIECTAREA IEȘIRII U NEI CERERI ………………………….. …………………….. 115
7.2.3CERERI CU CÂMPURI CAL CULATE………………………….. ………………………. 116
7.2.4CERERI CU PARAMETRI ………………………….. ………………………….. …………117
7.2.5CERERI CU CLAUZA TOTALS ………………………….. ………………………….. .117
7.2.5.1 Funcții agregate SQL ………………………….. ………………………….. …11118
7.2.6SALVAREA , MODIFICAREA , ȘTERGEREA ȘI ÎNCHID EREA UNEI INTEROGĂRI 119
7.3 PROPRIETĂȚILE CE RERII………………………….. ………………………….. …..119
7.4 ÎNTREBĂRI ………………………….. ………………………….. ………………………….. .121
7.5 TEST GRILĂ TEMA 7………………………….. ………………………….. ……………. 122
Obiective
Cunoașterea modalităților de creare și proiectarea a unei interogări.
Proiectarea cererilor cu parametrii și cu câmpuri calculate.
Configurarea proprietăților cererilor.
Timp alocat: 2 ore
7.1 Introducere
Câteva dintre cele mai importante caracteristici ale unei cereri sunt:
– Tabelele și relațiile care stau la baza unei cereri reprezintă subschema cererii.
– Extragerea de informații din cereri se face prin operații de algebră relațională
pe mulțimi.
O interogare ( query) este o definiție a datelor care se extrag: care câmpuri din
tabele, din ce tabele, criteriile de selecție, ordinea de sortare. Structura unei interogări
indică datele care se vor extrage, Microsoft Access oferind următoarele posibilități:Cererile reprezintă obiectul prin care se extrag informații dintr -o bază de
date. O ce rere acționează fie asupra unui tabel, fie asupra mai multor
tabele corelate prin relații.
108-selectarea anumitor câmpuri mai semnificative din înregistrările unei tabele ;
-selectarea înregistrărilor care satisfac anumite criterii;
-sortarea înregistrărilor într -o ordine precizată de utilizator;
-interogarea mai multor tabele; o interogare permite combinarea înregistrărilor
din mai multe tabele și afișarea rezultatul ui într-un singur tabel de date;
-interogarea altor baze de date existente în sisteme de gestiune a bazelor de
date cum sunt FoxPro, Paradox, dBase, Microsoft SQL Server;
-crearea de câmpuri pentru afișarea rezultatelor unor calcule;
-crearea de rap oarte, formulare sau alte interogări.
În principal, putem considera cererile grupate în mai multe categorii, după
efectul execuției lor. În continuare sunt prezentate aceste tipuri de cereri:
1. Cereri care nu modifică
datele din tabelele bazei
de date
Select Query
Crosstab Query
Union Query
Pass-Through Query
Sub-Query2. Cereri care modifică datele
din tabelele bazei de date,
denumite cereri acțiune
Update Query
Delete Query
Append Query
Make-Table QueryÎn funcție de efectul pe care îl are execuția unei cereri – deci care va fi rolul
informațiile obținute, există:
Cererea de selecție – rezultatul a cesteia este crearea unui tabel
virtual, care se va manifesta în prelucrările următoare ca un tabel obișnuit.
De aici se poate deduce că cererile pot accepta la intrare alte cereri(de
selecție). De obicei aceste cereri reprezintă partea de intrare a unui r aport
Cererea de acțiune – rezultatul acestei cereri va duce la
modificări directe în baza de date(actualizări de date sau
crearea(modificarea) de structuri de tabele)
3.Cereri care modifică
structura tabelelor bazei
de dateData Definition Query
– CREATE TABLE
– ALTER TABLE
– CREATE INDEX
– DROP
109Observații:
– Cele patru ce reri SQL Specific (Union Query, Pass -Through Query, Sub –
Query,Data Definition Query ), se scriu direct în SQL.
– Cererea de tip Select, are caracteristici care se regăsesc la majoritatea
celorlalte tipuri de cereri.
– Pentru simplificarea proiectării sa u modificării unei cereri, Access pune la
dispoziție un instrument grafic, care se numește QBE(Query By Example).
Interogările de selecție extrag informații din unul sau mai multe tabele și le
afișează sub formă de listă. Sunt cel mai ușor de creat și au avantajul că pot afișa un
număr redus de date dintr -un tabel de mare capacitate (datele care îndeplinesc
condițiile specificate). Ele permit și modificarea rezultatului afișat, modificare ce va fi
văzută și în tabelul sursă.De asemenea, permit și folosir ea de parametri, cum este
reuniunea de câmpuri din tabele între care nu există nici o legătură.
Interogările încrucișate centralizează în formatul unei foi de calcul tabelar
datele din unul sau mai multe tabele. Datele rezultate după execuția unei astfel de
interogări sunt prezentate într -un format potrivit pentru analiza datelor și crearea de
grafice.
Interogările de acțiune creează un nou tabel în baza de date sau realizează
modificări majore ale unui tabel existent. În general, toate interogările de ac țiune pot fi
realizate pe baza unei interogări de selecție. Ele permit adăugarea, modificarea sau
ștergerea de înregistrări într -un tabel. Există patru tipuri de interogări de acțiune:
• interogări de generare a unui nou tabel din datele conținute în setu l de
rezultate al interogării;
• interogări de adăugare a noi înregistrări într -un tabel;
• interogări de ștergere a unor înregistrări dintr -un tabel;
• interogări de actualizare a unor înregistrări dintr -un tabel, conform cu o
condiție ce trebuie îndep linită.
Acțiunile acestora sunt ireversibile asupra datelor din tabelele sursă, iar în
cazul ultimelor trei dintre ele, trebuie urm ărită păstrarea integrității re ferențiale atunci
când prin intermediul lor se acționează asupra mai multor tabele legate.
Microsoft Access include patru modalități de creare a unei interogări:
1. automat (Query Wizard);
2. manual (Query Design);
3. comenzi SQL;
4. prin program(bibliotecile ActiveX Data Objects, Data Microsoft Access
Objects și obiectele QueryDef)
Crearea interogărilor utilizând Query Wizard , este posibilă atât pentru
interogările de selecție cât și pentru interogările încrucișate.
Prin acționarea butonului New, se va deschide o fereastră care permite alegerea
următoarelor modalități de creare a unei ce reri:
110
Figura 7.1.1 .. Crearea unei cereri
►Simple Query Wizard este destinat pentru crearea de interogări de selecție
în principiu dintr -un singur tabel, dar poate afișa date din două sau mai multe tabele și
interogări între care există sau nu legături d irecte.Printre opțiunile puse la dispoziția
utilizatorului sunt și cele de adunare/contorizare a datelor din câmpurile ce conțin
valori numerice.
Figura 5.2 Fereastra Simple Query Wizard
►Crosstab Query Wizard .Pentru interogările încrucișate, Microsof t Access
dispune de un program Wizard dedicat. În aceast tip de interogare s e stabilrdv
rândurile, coloanele și funcția de calcul pentru determinarea unei valori ce se va situa
la intersecția dintre linii și coloane .Crosstab Query Wizard este restricționa t de
posibilitatea de a totaliza date doar dintr-un singur tabel.
111
Figura 5.3 Fereastra Crosstab Query Wizard
►Find Duplicates Query Wizard este interogarea care localizează
înregistrările ce conțin valorile duplicat dintr -un anumit câmp. Este o interoga re extrem
de utilă atât în gestionarea creșterii dimensiunii unui tabel, prin evitarea încărcării
inutile cu date duble, cât și pentru stabilirea pe parcurs a unui câmp drept cheie
primară, atunci când înregistrările duplicat nu permit acest lucru. În figu ra5.4 este
prezentat unul dintre ecranele de lucru al acestui program, în care s -a ales câmpul
pentru care se dorește căutarea de duplicate.
Figura 5.4 Fereastra Fiind Duplicates Query Wizard
►Find Unmatches Query Wizard .Dacă interogarea ce găsește du plicatele
este utilă pentru elimina rea înregistrărilor duble ca urmare a unor erori de introducere,
interogarea Find Unmatches Query Wizard (cea care găsește valorile nepotrivite )
localizează înregistrările asociate care nu mai au o înregistrare principală
112corespondentă ca urmare a erorilor de ștergere și care afectează integritatea
referențială.
Cele patru programe Wizard sunt extrem de utile și de facile în utilizare,
dar destul de limitate pentru a face față tuturor cerințelor unei baze de date de
dimensiuni mari.
Figura 5.5 Fereastra Find Unmatches Query Wizard
►Design View .Crearea manuală a interogărilor se realizează prin
intermediul opțiuni Query Design care folosește pentru interfața grafică Query by
Example (QBE). Aceasta permite și utilizatoril or care nu știu limbajul de programare
QBE să găsească și să afișeze informațiile de care au nevoie.
Odată activată opțiunea Query Design , Microsoft Access va considera
implicit că orice generare a unei noi interogări este o interogare de selecție.
Transformarea tipului de interogare implicit se face prin selectarea tipului dorit din
meniul Query
Ocererese poate afla în una din următoarele trei stări:
Proiectare –Design View.
Vizualizare –Datasheet View.
Instrucțiune SQL –SQL View.
Trecerea de la o stare la alta se poate face prin
pictograma specifică de pe ToolsBar sau din meniul
contextual.
1137.2 Construirea interogărilor prin QBE(Query By Example)
Modulul Query, se lansează din fereastra Database , prin selectarea paginii
corespunzătoare acesteia (la fel ca la tabele). Pentru simplificarea proiectării sau
modificării unei cereri, Access pune la dispoziție un instrument grafic, care se numește
QBE(Query By Example ).
Cu QBE, se pot defini toate tipurile de cereri acceptate de Access, cu excepția
cererilor SQL Specific. Formularul QBE este constituit din două părți:
-definirea intrării cererii
-definirea prelucrărilor efectuate.
7.2.1 Schema utilizată de o cerere
Pentru a crea o nouă interogare în modul Query Design, se vor parcurge
următorii pa și:
1.selectarea tabelelor din care se do resc a fi afișate/prelucrate da tele, prin
intermediul ferestrei Show Table ;
Figura7.2.1.1.Fereastra Show Table
2.selectarea câmpurilor care se vor transforma în coloanele tabelului rezultat al
interogării;
3.stabilirea criteriilor de selecție și a câmpurilor asupra cărora vor fi aplicate;
se poate apela la un singur criteriu de selecție sau la mai multe criterii, aplicate fie unor
câmpuri diferite, fie formând un criteriu compus aplicat aceluiași câmp;
4.stabilirea parametrilor de selecție. Parametrii funcționează pentru interogări
asemănător criteriilor de selecție, cu deosebirea că la fiecare execuție trebuie
specificată valoarea parametrului în funcție de care se va realiza selecția;
1145.stabilirea tipului de sorta re a datelor afișate ca rezultat și a câmpurilor asupra
cărora va acționa;
6.specificarea formulei pentru câmpurile care sunt rezultatul unor operații
executate asupra unora dintre câmpurile deja existente. Acest lucru se poate face fie
prin scrierea directă a formulei, fie prin apelarea la generatoarele de funcții pentru
calcule mai complicate sau care folosesc funcții definite deja în Microsoft Access;
7.alegerea tipului de interogare prin selectarea din meniul Query a uneia dintre
opțiunile: interogări de se lecție, interogări încrucișate, de generare a unui tabel, de
adăugare într -un tabel, de ștergere dintr -un tabel, de actualizare a unui tabel. În funcție
de opțiunea aleasă, Microsoft Access modifică designul interogării și cere informații
suplimentare astf el:
pentru generarea unui tabel – numele tabelului ce urmează a fi creat;
pentru adăugarea într -un tabel– numele tabelului ce urmează a fi încărcat
cu date, precum și câmpurile destinație;
pentru actualizare – condițiile de actualizare și valoarea la care se dorește
actualizarea;
pentru ștergere – numele tabelului din care se va șterge și condiția de
ștergere.
Figura 7.2.1.2 Schema utilizată de o cerereINTRAREA
tabelele și relațiileIEȘIREA
câmpurile de ieșire și
caracteristicile lor
CASETA DE SELECȚIE
Sunt permise următoarele operații:
-ștergerea câmpului
-mutarea câmpului – prin tragerea câmpului în altă poziție
-lansarea meniului contextual
115Formularul QBE conține în partea superioară tabelele și relațiile dintre acestea,
iar înpartea inferioară, definiția ieșirii cererii(selecția, proiecția și alte acțiuni
specifice). O dată cu introducerea tabelelor se vor aduce automat și relațiile
permanente existente între tabelele respective. Aceste relații se pot însă modifica în
cerere prin lansarea meniului contextual al relației și alegerea opțiunii Join Properties
prin care se alege tipul de legătură al relației respective( Inner Join sauOuter Join ).
Meniul contextual al relației conține două comenzi
-Join Properties – pentru schimbar ea tipului de legătura al relației;
-Delete– pentru ștergerea relației.
7.2.2 Proiectarea ieșirii unei cereri
Rândurile care trebuiesc completate în QBE al unei cereri sunt prezentate în
figura următoare. La acestea se poate adăuga, eventual, rândul cu clauza Total.
Field
Table
Sort
Show
Criteria
Or
Indiferent de tipul de cerere, se vor efectua următoarele operații:
►Includerea c âmpurilor care ne interesează în construirea cererii se face prin
„tragerea” lor cu ajutorul mouse -ului din tabelele din caseta de sus în r ândul Field al
casetei de jos sau prin executarea unui dublu -clic pe denumirile respective sau prin
alegerea din listele derulante, realizându -se în acest fel ‘proiecția’ schemei. În felul
acestase completează primele două rânduri din QBE, și anume:
Field– numele câmpului care se trage.
Table– tabela din care provine câmpul.
Există posibilitatea ca din tabelă să se tragă caracterul (*) – ceea ce duce la
preluarea tuturor câmpurilor tabelei.
Așa cum se observă în figura de pe pagina anterioară (7.2.1.2), din caseta de
selecție a câmpului se poate lansa prin metoda obișnuită ( clic dreapta), meniul
contextual al câmpului, și din acesta proprietățile câmpului.
Acestea(vezi figura 7 .2.2.1), sunto parte din proprietățile câmpurilor stabilite
la crearea tabelei și evident – conform a ceea ce am mai arătat referitor la domeniul de
valabilitate al setărilor în Access – ele vor fi valabile și în cererea la care participă
tabela respectivă, putând fi e ventual modificate, dar numai la nivelul obiectului curent
116
Figura7.2.2.1 Proprietățile câmpurilor
►Se marchează în rândul Show câmpurile pe care utilizatorul dorește să le
aibă la ieșirea din cerere. Acest lucru se datorează faptului că la o cerere, pot participa
câmpuri necesare la prelucrările efectuate, dar care nu m ai sunt necesare în continuare.
De exemplu se pot folosi unele câmpuri care trebuie să îndeplinească o anumită
condiție, fără a fi necesară vizualizarea lor la ieșirea din cerere.
►În rândulSort, se stabilește cu ajutorul listei derulante a acestuia, dacă se
dorește ordonarea datelor la ieșirea din cerere după un anumit câmp (câmpuri), și
ordinea,Ascending sauDescending . Dacă există mai multe câmpuri astfel marcate,
atunci ordinea de sort are a acestora, va fi de la stânga la dreapta – câmpul plasat cel mai
în stânga fiind deci primul după care se va efectua această operație.
►Criteriile de selecție, se introduc cu ajutorul rândurilor Criteria șiOr (se
pot introduce mai multe rânduri Or). Prin acestea se va face o selecție a
rândurilor(înregistrărilor) care vor apare la ieșirea din cerere. Principiul de constituire a
criteriilor de selecție este următorul:
-În dreptul fiecărui câmp, se poate introduce în rândurile specificate mai sus, o
regulă de selecție la care participă acesta (asemănătoare cu cea prezentată la
proprietatea Validation Rule , de la câmpurile tabelelor)
-Mai multe reguli scrise pe același rând vor fi legate prin funcția logică AND.
-Două rânduri de reguli, vor fi legate prin funcția logică OR.
Practic, în câmpul Criteria vom defini propriile restricții care pot fi de genul:
mai mare decât o anumită valoare, mai mare sau egal, mai mic sau egal, mai mic, egal
sau diferit de o valoare. Vom putea crea și expresii logice cu ajutorul operatorilor
logici And și Or.
7.2.3 Cereri cu câmpuri calculate
Există posibilitatea ca un anumit câmp din QBE să nu provină dintr -o tabelă
sau o cerere ci să fie introdus printr -o expresie . Pentru construirea unui câmp calculat
seva folosi u rmătoarea sintaxă :
NumeCâmp : Expresie
1177.2.4 Cereri cu parametri
În expresiile scrise în QBE sunt admiși parametrii. Aceștia sunt niște nume
care se inițializează cu o valoare corespunzătoare, numai în momentul executării
cererii, printr -un dialog i nițializat de sistem cu utilizatorul. Astfel, valoarea introdusă
de utilizator în momentul executării cererii va
înlocui numele parametrului, în calcularea
respectivei expresii.
Numele unui parametru, trebuie să fie
diferit de numele câmpurilor folosite î n cerere și
trebuie scris între paranteze drepte.
Implicit parametrii sunt considerați de tip
Text. Dacă se dorește ca un parametru să fie de un
alt tip de dată, se deschide fereastra Parameters,
din meniul contextual al ferestrei QBE, ori prin
pictograma specifică, sau din meniul Query și se
declară în mod explicit tipul param etrului, ca în
exemplul alăturat.
7.2.5 Cereri cu clauza TOTALS
În multe cazuri apare necesitatea de a obține valori rezumative referitoare la
toate înregistrările din tabel sau pentru o submulțime a lor. ClauzaTOTALS se poate
introduce în QBE din ToolsBar, din meniul View sau din meniul contextual al zonei
de prelucrare a cererii . Ea se poate aplica la toate cererile(mai puțin DeleteșiUpdate).
În urma alegerii acestei clauze, în zona de prelucrare a cererii apare rândul Total.
Efectul acestei clauze este :
►După ce condițiile de selecție de înregistrări ale cererii au fost
rezolvate(tipul legăturii și criteriile), datele sunt grupate după câmpul, care în clauza
Total, are introdusGroup By .Acest lucru înseamnă că toate înregistrările care au în
câmpul respectiv aceiași valoare vor fi grupate, urmând ca în urma prelucrărilor
efectuate ele să constituie o singură înregistrare la ieșirea din cerere. Se pot introduce
pentru mai multe câmpuri valoarea Group By în rândul Total, ceea ce va duce la
constituirea de grupe și subgrupe, ordinea fiind – ca și la sortare – de la stânga la
dreapta.
►Această înregistrare va avea în celelalte câmpuri valori calculate cu funcții
agregate SQL– funcții al căror domeniu de intrare este constituit din datele unui c âmp
din mai multe înregistrări. Deci, domeniul acestor funcții va fi constituit din
înregistrările care au aceiași valoare în câmpul Group By . Valoarea NULL, nu este
luată în consideraț ie în calculul funcțiilor agregate (Atenție! – nu este echivalentă cu
zero).
118În rândul Total, în afară de Group By sau funcțiile agregate SQL, se mai pot
introduce următoarele valori:
►Where– Câmp care nu se va regăsi la ieșire (se va debifa automat rându l
Show) și care este folosit numai la introducerea unor criterii.
►Expression – Câmp calculat, dar obligatoriu cu ajutorul unei a sau mai
multorfuncții agregate SQL.
7.2.5.1 Funcții agregate SQL
Funcțiile agregate SQL sunt valabile în cereri, fie în rândulTotal, fie în
câmpurile calculate.
Figura7.2.5.1.1 Rândul Total
În Access există următoarele funcții agregate SQL:
►Sum, pentru calcularea sumei valorilor câ mpului;
►Avg, pentru calcularea mediei aritmetice a valorilor c âmpului;
►Min, pentru găsi rea valorii minime;
►Max, pentru găsirea valorii maxime;
►Count, calculează numărul de valori ale câ mpului (excluz ând-le pe cele
vide);
►StDev, pentru calcularea deviațieistandard;
►Var, pentru calcularea dispersiei ;
►First, pentru găsirea primei valori a câmp ului respectiv, conform ordinii
de sortare active;
►Last, pentru găsirea ultimei valori a câmpului respectiv, conform ordinii
de sortare active;
Funcțiile FirstșiLastnu sunt valabile decât în rândul Total– deci nu se pot
aplica încâmpurile calculate .
În câmpurile calculate , sintaxa pentru funcțiile agregate este:funcție(expresie).
în care:
– expresia identifică câmpuri (sau parametrii).
119- câmpul trebuie să aparțină schemei cererii și dacă există ambiguitate, trebuie
calificat cu numele tabelei di n care provine.
7.2.6Salvarea, modificarea, ștergerea și închiderea unei interogări
Pentru a salva o interogarea creată cu ajutorul constructorului de interogări
vom apela funcția Save din meniul File, sau vom apăsa butonul corespunzăto rexistent
pe bara de instrumente , sau vom apăsa tastele Ctrl+S. Pe ecran va apărea fereastra Save
As în care vom introduce numele dorit pentru interogare.
Dacă vrem putem modifica o interogare adăugând atât restricții noi cât și
tabele noi. Pentru aceasta vom se lecta mai întâi interogarea dorită, apoi vom apăsa pe
butonulDesign. Pe ecran va apărea constructorul de interogări. Pentru a adăuga o
tabelă nouă interogării, vom selecta din meniul Query opțiunea Show Table sau vom
apăsa butonul existent pe bara de inst rumente a aplicației, iar pe ecran va
apărea o fereastră din care ne vom putea alege tabela dorită.
Pentru a închide o interogare vom apăsa butonul existent în partea dreaptă a
ferestrei sau vom apela funcția Close din meniul File.
Pentru a șterge o i nterogare vom apăsa butonul existent în partea de sus a
ferestrei bazei de date după ce am selectat în prealabil interogarea dorită sau vom da
clic dreapta pe interogarea pe care dorim să o ștergem și vom alege opțiunea Delete din
meniul apărut sau vom s electa interogarea și apoi vom apăsa butonul Delete existent pe
tastatură. Pe ecran va apărea o casetă de dialog care ne va cere să confirmăm ștergerea
interogării (opțiunea Yes pentru ștergere, opțiunea No pentru anularea ștergerii).
7.3 Proprietățile ce rerii
Numele cererii se stabilește după crearea acesteia în urma unei întrebări
explicite făcută de sistem, sau se modifică(ca de altfel orice nume de obiect) din
fereastra Database, prin metodele folosite în Windows. (la fel ca la tabele sau ca la
orice obiect de rang superior nou creat)
Fereastra de setare a proprietăților unei cereri se lansează din meniul
contextual al ferestrei QBE.
120
Figura 5.2.1 Proprietățile unei cereri
Dintre proprietățile prezentate, ne vom referi în acest moment numai la c âteva,
și anume:
►Output All Fields – Setată pe Yes, toate câmpurile din tabelele(cererile)
din subschema QBE, vor fi selectate.
►Top Values – Limitează la un anumit număr (sau procent) înregistrările
care vor fi preluate .
►Unique Values – Există posibilitate a ca în urma proiecțiilor efectuate
asupra subschemei cererii, la ieșirea din aceasta, pot apărea mai multe înregistrări
identice (toate câmpurile din respectivele înregistrări au aceiași valoare). Setarea
acestei proprietăți la Yes, face ca la ieșire să n u existe înregistrări la fel. Deci, această
proprietate se aplică la ieșirea cererii.
►Unique Records – Această proprietate este valabilă, numai în cazul în care
cererea lucrează cu mai multe tabele (cereri). Și în acest caz, este posibil, ca la intrarea
în cerere să existe înregistrări identice, pentru toate câmpurile schemei (și nu numai
pentru cele care se vor regăsi la ieșire). Setarea pe Yes a acestei proprietăți, elimină
duplicatele la intrarea în cerere.
Observația 1. Numai una din cele două proprietă țiUnique poate fiYes.
Observația 2. Rezultatul unei cereri trebuie privit ca o tabelă virtuală. Practic o cerere
creează un filtru prin care se poate ajunge la tabelele originale, urmând ca în momentul
în care folosim o cerere să lucrăm cu câmpurile din tabelele originale. Deci, o
modificare a unui câmp dintr -o cerere, va duce la modificarea câmpului respectiv în
tabela originală.
Evident, modificarea unui câmp a unei înregistrări dintr -o cerere se poate face
numai dacă acest câmp poate fi identificat î ntr-o înregistrare din tabela originară. În
cazul setării pe Yes a uneia din proprietățile Unique, această identificare a sursei
datelor nu mai poate fi făcută, astfelblocându-se posibilitatea modificării câmpurilor
(același lucru e valabil și la câmpuril e calculate).
121►Source Database
►Source Connect Str
Prin aceste proprietăți, se poate crea o cerere folosind tabele (fără să fie
importate) care se află în exteriorul bazei de date curente, în format JET, ISAM sau
ODBC.Pentru a folosi tabelele sau cererile unei alte baze de date Access (format Jet),
se va introduce în Source Database ,calea și numele (fișierul .mdb) acesteia (în Source
Connect Str nu se va introduce nimic). În acest caz, când se va lansa fereastra Show
Table, vor apărea tabelele și cererile bazei de date Jet externe, care vor constitui deci,
subschema cererii.
Pentru a folosi tabelele unei baze de date în format ISAM, se va introduce în
Source Database ,calea directorului unde se află aceasta, iar în Source Connect Str se
va introduce tipul bazei de date . În acest caz, când se va lansa fereastra Show Table ,
vor apărea tabelele bazelor de date ISAM, care se găsesc în directorul respectiv.
Exemplu:În exemplu de mai jos se arată modalitatea prin care se poate crea în Access
o cerere care să f ie definită folosind o subschemă formată numai din fișiere DBF,
create în FoxPro.
7.4 Întrebări
1. Care sunt c ererile care nu modifică datele din tabelele bazei de date ?
Răspuns:
2. Care sunt stările în care se poate găsi o cerere ?
Răspuns:
3.Ce este un parametru ?
Răspuns:Nu uitați „ ;” la
sfârșit
Cererile care nu modifică datele din tabelele bazei de date sunt cererile de
selecție care extrag informații din unul sau mai multe tabele și le afișează sub
formă de listă . Axestea sunt: Select Query, Crosstab Query, Union Query ,Pass-
Through Query ,Sub-Query
O cerere se poate afla în una din următoarele trei stări:
Proiectare – Design View.
Vizualizare – Datasheet View.
Instrucțiune SQL – SQL View
1224. Care sunt rândurile care se completează la proiectarea unei cereri ?
Răspuns:
5. Care este efectul clauzei Total ?
Răspuns:
6. Ce reprezintă proprietatea Unique Values a unei cereri ?
Răspuns:
7.5 Test grilă tema 7
1. În Access, care dintre următoarele cazuri se referă numai la cereri de selecție:
a)cerere Update, cerere Append, cerere Delete, cerere Make Table;
b)cerere Select, cerere Crosstab, cerere Union, cerere Update;
c)cerere Union, cerere Append, cerere Select;
d)cerere Select, cerere Union , cerere Crosstab, sub -cerere;
e)cerere Union, cerere Select, cerere Delete;
2. În Access, care dintre următoarele cazuri se referă numai la cereri acțiune:
a)cerere Update, cerere Ap pend, cerere Delete, cerere MakeTable;
b)cerere Select, cerere Crosstab, cerere Union, cerere Update;Parametru este un nume care se inițializează cu o valoare corespunzătoare,
numai în momentul executării cererii, printr -un dialog inițializat de sistem cu
utilizatorul.
123c)cerere Union, cerere Append, cerere Select;
d)cerere Select, cerere Union, cerere Crosstab, sub -cerere;
e)cerere Union, cerere Select, cerere Del ete;
3. În Access, câmpul calculat:
a)poate proveni dintr -o tabelă;
b)are următoarea sintaxă: nume câmp: expresie;
c)este un câmp activ;
d)este un element funcțional;
e)nu se poate vizualiza;
4. În Access, cererile de acțiune sunt:
a) cererile Upd ate, Delete;
b)cererile Union, Update, Pass -Through;
c)cererile Append, Make Table, Select;
d)cererile Union, Update, Append;
e)cererile Crosstab, Appent, Update;
5. În Access, care dintre afirmațiile următoare este adevărată:
a)rezultatul unei cere ri de selecție este o tabelă virtuală;
b)rezultatul unei cereri acțiune este un mesaj;
c)numele unui parametru este numele unui câmp folosit în cerere;
d)în cereri nu se pot folosi decât parametrii de tip Text;
e)și în cereri se pot declara chei prim are;
6. În Access, care dintre afirmațiile următoare este adevărată:
a)cererile acțiune funcționează în trei pași;
b)prin intermediul QBE se pot definii toate tipurile de cereri acceptate de Access;
c)Append Query modifică valoarea din câmpurile înregi strărilor unei tabele;
d)cererile SQL Specific se pot crea și prin formatul QBE;
e)relațiile între două tabele sunt valabile și în cadrul cererilor, în subschema cărora
participă cele două tabele;
7. În Access, care dintre afirmațiile următoare nu este adevărată:
a)valoarea parametrilor este stabilită în momentul executării cererii;
b)după execuția unei cereri pot exista mai multe înregistrări identice;
c)printr-o cerere nu se pot modifica d atele din câmpurile tabelelor;
d)toate cererile pot fi cre ate prin limbajul SQL;
e)într-o cerere, în linia de "Total", pot exista mai multe câmpuri cu clauza "Group
By";
8.În Access, care dintre afirmațiile următoare este adevărată:
a)printr-o cerere nu se poate modifica structura tabelelor;
124b)intrarea unei cereri, nu poate fi formată decât din tabele;
c)cererile cu rând de "Total" nu pot fi cereri acțiune;
d)după execuția unei cereri cu linie de "Total", se obțin la ieșire un număr mai mic sau
egal de înregistrări decât la execuția aceleiași cereri fără cl auza de "Total";
9. În Access, referitor la criteriile de selecție utilizate în cereri, care din enunțurile
de mai jos este adevărat:
a)nu se pot folosi în toate tipurile de cereri;
b)dacă se scriu pe același rând se leagă prin funcția logică AND;
c)dacă se scriu pe rânduri diferite se leagă prin funcția logică AND;
d)permit utilizarea operatorilor relaționali dar nu și a celor logici;
e)sunt obligatorii în cereri;
10.În Access, referitor la criteriile de selecție utilizate în cereri, care din
enunțurile de mai jos este adevărat:
a)dacă se scriu pe rânduri diferite se leagă prin funcția logică OR
b)dacă se scriu pe același rând se leagă prin funcția logică OR;
c) nu se pot folosi în toate tipurile de cereri;
d)permit utilizarea operatorilor rel aționali dar nu și a celor logici;
e) permit ordonarea crescătoare a înregistrărilor ;
125Tema 8
Cereri de selecție
Cuprinsul Temei 8:
8.1 INTRODUCERE ………………………….. ………………………….. …………………….. 125
8.2SELECT QUERY………………………….. ………………………….. ……………………. 125
8.3CROSSTAB QUERY ………………………….. ………………………….. ………………. 130
8.4UNION QUERY ………………………….. ………………………….. ……………………… 132
8.5SUB-QUERY………………………….. ………………………….. ………………………….. .134
8.6 ÎNTREBĂRI ………………………….. ………………………….. ………………………….. .135
8.7 TEST GRILĂ TEMA 8………………………….. ………………………….. ……………. 136
Obiective
Însusirea tipurilor de cereri de selecție și a caracteristicilor acestora.
Cunoașterea modalităților de creare și proiectarea a unei interogări de
selecție.
Proiectarea cererilor de selecție cu criterii, cu para metrii și cu câmpuri
calculate.
Timp alocat: 4 ore
8.1 Introducere
Cererile de selecție extrag informații din unul sau mai multe tabele și le
afișează sub formă de listă. Sunt cel mai ușor de creat și au avantajul că pot afișa un
număr redus de date dint r-un tabel de mare capacitate (datele care îndeplinesc
condițiile specificate). Ele permit și modificarea rezultatului afișat, modificare ce va fi
văzută și în tabelul sursă.De asemenea, permit și folosirea de parametri, cum este
reuniunea de câmpuri din tabele între care nu există nici o legătură.
În continuare vor fi prezentate cele mai utilizate tipuri de cereri.
8.2 Select Query
"Select Query ", este cea mai utilizată cerere din aplicațiile realizate în
Access. Ea constă din proiecția și selecția câmpurilor și înregistrărilor din
schema cererii, în vederea extragerii unor informații din baza de date, care
pot fi utilizate în alte module ale aplicației sub forma unui tabel virtual. Este
folosită foarte des ca suport pentru real izarea rapoartelor (pentru
prezentarea datelor), a formularelor (pentru introducerea datelor), ca
intrare pentru alte cereri, în controale, etc.
126Execuția cereriiSelect Query , nu modifică direct datele din schemă. Totuși,
după execuția cererii, datele afi șate prin intermediul ferestrei Datasheet , dacă au o
adresă precisă, unică în înregistrările și câmpurile bazei de date, pot fi modificate de
către operator (lucru care nu se întâmplă întotdeauna; de exemplu în cererile cu clauza
'Total' sau câmpurile calcu late).
Exemple:Vom urmări ordinea și felul în care sistemul va prel ucra (executa) o cerere
Select Query în care:
– Schema este formată din două tabele, PRODUSE șiMIȘCARE ;
-Relația între tabele este de tip one to many ,fiind creată între câmpurile Cod
(cod produs)
-Tipul de legătură a relației ( Inner Join ) este nesemnificativ deoarece, așa cum
se observă, nu există valori ale câmpului de legătură care să nu se găsească în ambele
tabele
Buc 3000 Calculator4Buc 400 Televizor3Buc 100 CD-ROM 2Buc 500 Imprimanta1UM Preț Denumire Cod
10.10.2005 5 7 421.12.2005 1 3 316.05.2005 3 6 314.04.2005 1 2 215.11.2005 0 5 122.02.2005 2 4 111.01.2005 4 1 1Data Output Input Cod
127Se selecționează și corelează în registrările conform relației și tipului de
legătură. În urma acestei operații se va crea o primă tabelă intermediară virtuală,
prezentată mai jos:
CodDenumire PrețUMInputOutput Data
1Imprimanta 500buc1411.01.2005
1Imprimanta 500buc4222.02.2005
1Imprimanta 500buc5015.11.2005
2CD-ROM100Buc2114.04.2005
3Televizor 400Buc6316.05.2005
3Televizor 400Buc3121.12.2005
4Calculator 3000Buc7510.10.2005
Dacă există în această tabelă virtuală, două sau mai multe înregis trări
identice(ceea ce nu este cazul în exemplul nostru), cele duble vor fi eliminate dacă
proprietatea cererii: Unique Records este setată.
1. Se vor opera pe tabela intermediară obținută, proiecția și selecțiile precizate
în cerere. Dacă vom avea o cere re care în partea de jos a formularului QBE, va avea
structura de mai jos atunci aceas tă cerere va produce o nouă tabelă intermediară
virtuală după aceste prelucrări.
a)Câmpurile preluate sunt: [Denumire ],[Preț],[Input],[Output],[Data];
b)Criteriul de s elecție este ca data să fie cuprinsă în intervalul [4/14/2005 ..
12/30/2005 ];
c)În tabela virtual ă de ieșire înregistrările vor fi sortate crescător dupa câmpul
[Denumire ];
128d)Câmpul[Data] va fi folosit numai pentru selecție, el nefiind trimis la ieșire.
Rezultatul acestei cereri de selectie este dat de toate inregistrarile tabelei
virtuale anterioare care îndeplinesc condiția ca [Data] sa fi cuprinsă intre 4/14/2005 și
12/30/2005:
Dacă există în această tabelă virtuală, două sau mai multe înregi strări
identice(ceea ce nu este cazul în exemplul nostru), cele duble vor fi eliminate dacă
proprietatea cererii: Unique Value este setată.
2.Dacă vom avea o cerere care în partea de jos a formularului QBE, va avea
structura de mai jos atunci această ce rere va produce o nouă tabelă intermediară
virtuală după aceste prelucrări. Se observă că avem o cerere de selecție cu clauza
Totals, unde vom avea datele grupate după câmpul [Denumire ], și pentru fiecare grup
vom calcula numărul intrărilor(sumă după câmpul[Input]) cu condiția ca data să fie în
intervalul [2/22/2005 ..12/30/2005 ]. Este o cerere cu câmp calculat deoarece se observă
în coloana a patra din zona de prelucrare a cererii ca avem un câmp format aplicând o
funcție agregată și o operație aritmetică asupra altor câmpuri
Vom arăta mai jos cum se formează la ieșire una dintre înregistrări, și anume
aceea cu: [ Denumire ]= “Imprimanta ”. Din cele două tabele sunt selecționate mai întâi
înregistrările, conform relației și tipului de legătură a l acesteia.
129
Pentru înregistrarea cu [ Denumire ]= “Imprimanta ”, se vor selecționa și corela
pentru ieșire, înregistrările care au [ CodProdus]=1, formându -se în prima instanță
înregistrări virtuale ca în tabelul de mai jos.
CodDenumire PrețUMInputOutputData
1Imprimanta 500buc1411.01.2005
1Imprimanta 500buc4222.02.2005
1Imprimanta 500buc5015.11.2005
Se aplică criteriului de selecție de la câmpul “data”:between #2/22/2005# And
#12/30/2005# În urma acestei operații se elimină prima î nregistrare deoarece are data
în afara intervalului de selecție.
a) Observăm introducerea cu clauza Where, a acestui criteriu, deoarece nu se
dorește apariția datei la ieșire(de altfel nu are nici sens).
b) Se aplică proiecțiile impuse de câmpurile selecț ionate, fiind eliminate
celelalte câmpuri(cele prezentate în tabelul de mai sus cu litere neîngroșate)
c) Din înregistrările rămase se face o grupare pe câmpul [ Denumire ]- deoarece
are clauza Group By .
d) Pentru toate înregistrările care au [ Denumire ]= “Imprimanta ” (înregistrările
de pe pozițiile: 2 și 3), se va obține la ieșire o singură înregistrare care va avea:
În câmpul: [ Denumire ], valoarea “ Imprimanta ”;
În câmpul de ieșire: [Input], se va calcula numă rul acestora:adică 2
Câmpul calculat de ieșire: [Val]=Sum([Input]*[Preț]) a fost introdus în cerere
prin introducerea în rândul de Total a clauzei Expression . După execuția cererii
acest câmp va avea valoarea 4500.
Pentru a calcula această valoare sistemul va proceda astfel:
-pentru înregistrările sele cționate se calculează :
[Input]*[Pret] adică:500*4=2000 și 500*5=2500
– Se aplică funcția agregată Sum(însumare), pe val orile calculate anterior,
adică: sum(2000,2500)=4500
Celelalte înregistrări de ieșire se vor calcu la după aceiași metodă. În urma
acestor operații tabela virtuală de ieșire va arăta ca în figura:
1308.3Crosstab Query
Access permite gruparea și reprezentarea datelor într -o formă compactă, formă
care se aseamănă cu un tabel electronic. În acest sco p se definesc interogări speciale,
numite interogări încrucișate (Crosstab Query).
Formularul QBE care trebuie completat în cazul acestei cereri, va avea pe
lângă un rând obișnuit cu clauza Total, un rând specific, cu clauza Crosstab.
Field
Table
Total
Crosstab
Sort
Criteria
OrCrosstab Query (cerere încrucișată )este o cerere de selecție cu clauza Total,
prin care se introduc două grupe prin opțiunea Group By . Afișarea prin
fereastra Datasheet este însă diferită, luând forma unei table de șah,
deoarece valorile pe care le iau datele pentru cele două grupe vor fi
prezentate una ca denumiri ale coloanelor și cealaltă ca denumirea
rândurilo r. Există posibilitatea ca să se introducă pe rânduri mai multe
subgrupe, dar maxim 3. Cererea Crosstab se construiește pornind de la o
cerere Select după care se selectează opțiunea Crosstab din meniul Query.
Ca rezultat, titlul ferestrei se schimbă în Crosstab Query , iar în partea de
jos apare rândul Crosstab.
Rândul cu clauza Crosstab trebuie completat obligatoriu cu unul din
următoarele cuvinte:
►Column Heading -denumirile(titlurile) coloanelor reprezintă
practic grupele pe care poate să le ia un c âmp. Câmpul căruia i se atribuie
această caracteristică este obligatoriu să fie câmp de grupare definit în clauza
Total cu opțiunea Group By . Valorile pe care le vor lua datele pentru această
grupă vor constitui chiar titlurile(numele) coloanelor cererii Crosstab.
►Row Heading -denumirile(titlurile) rândurilor – reprezintă la fel
ca și la coloane valorile pe care poate le ia un câmp din tabelă, declarat ca
grupă prin clauza Total. În tabelul virtual obținut după execuția cererii,
datele din această coloană vor arăta la fel ca la o cerere obișnuită cu clauza
Total.Se pot declara mai multe câmpuri cu opțiunea Row Heading (maxim
trei).
131Exemplu: Cu datele din cele două tabele “ PRODUSE ” și “MISCARE” se face o cerere
crosstab, cu două grupe, una cu rezultatele pe rânduri([ Denumire ]), cealaltă cu
rezultatele ca denumiri de coloane ([ Preț]). Funcția agregată, SUM, se va calcula pe
câmpul [Input].
Rezultatul obținut î n urma execu ției acestei cereri va fi afișat sub forma unei
tabel deșah, unde datele
-sunt grupate după denum irea produselor și afișate în capetele de linii,
-sunt grupate după prețul produselor și acestea sunt afișate în capetele de
coloane,
La intersecția dintre linii și coloane se va afișa suma intrărilor produselor din
grupele selecționate acest lucru realiz ându-se prin stabilirea în rândul Total a funcției
agregateSum iar în rândul Crosstab a opțiunii Value.►Value-se atribuie unui câmp pentru care se va calcula o
funcție agregată SQL , care are ca domeniu de definire înregistră rile din
ultima subgrupă definită(cea mai din dreapta grupă scrisă în QBE).
Afișarea acestei valori în tabela virtuală de ieșire se va face chiar la
intersecția dintre un rând și o coloană care definesc practic grupa și
subgrupa respectivă pentru care s -acalculatfuncția agregată SQL .
►Not Shown -se atribuie unui câmp care nu va apărea la ieșire
dar care va fi folosit într -un criteriu de selecție.
132În cazul care care adăugăm și o condiție cum ar fi [ Pret]>400 atunci se vor
afișa:
Denumire 500 3000
Calculator 7
Imprimanta 10
8.4Union Query
Union Query este o cerere de selecție care permite obținerea la ieșire a
unui tabel virtual care să conțină reuniunea (toate înregistrările a două
tabele) a două sau mai multe SelectQuery, care au aceleași câmpuri. Este
o cerere care nu se poate crea decât direct prin SQL. Realizarea ei este
totuși destul de simplă, procedându -se astfel:
1. Se definește prin QBE prima cerere de selecție.
2. Se trece aceasta în forma SQL și se copiază prin comanda
obișnuită 'Copy', textul afișat.
3. Se face o nouă cerere și i se stabilește tipul Union,prinmeniul
contextual sau din comanda Query de pe meniul principal urmat deSQL
Specific | Union .Se observă că cererea nu va avea decât forma SQL.
4. Se face 'Paste' pe aceasta a textului cererii create la punctul 1 și
preluat anterior cu 'Copy‘.Se șterge semnul punct și virgulă ( 😉 de la
sfârșit, care semnifică sfârșitul un ei declarații SQL.
5. Se tastează în continuare Unionși eventual ALL.Există
posibilitatea ca din reuniune, să se obțină la ieșire înregistrări duble.
Acestea în mod obișnuit sunt eliminate. Dacă totuși se dorește păstrarea
tuturor înregistrărilor, atun ci se va introduce în instrucțiunea SQL
cuvântul ALL.
6. Se definește prin QBE a doua cerere de selecție, care trebuie să
aibă aceleași câmpuri de ieșire cu a celei dintâi.
7. Se trece și aceasta în forma SQL și se copiază prin comanda
'Copy', formatul SQL al acesteia.
8. Se face 'Paste',șicu această informație la sfârșitul textului
introdus până atunci pe cererea Union.
9. Se verifică ca textele introduse să fie separate prin spații
10. Se introduc eventual și alte cereri de selecție după aceiași
metodă.
11. Se închide cererea și i se dă un nume, așa cum se procedează
de obicei la crearea unei cereri noi.
133Exemplu: Să se realizeze reuniunea a două cereri astfel :
– prima cerere afișează informații referitoare la denumirea produsului , pretul si
calculează suma intrărilor cu condiția ca prețul să fie >400
– a doua cerere afișeazătoate produsele și prețul acestora cu condi ția ca suma
intrărilorsă fie<5.
Rezultatul acestei cereri de selecție este:
A doua cerere de selecție construită cu ajutorul instrumentului grafic QBE este:
Rezultatul acestei a este:
Forma SQL pentru cele două cereri reunite este:
SELECT PRODUSE.Denumire, PRODUSE.Pret, Sum(MISCARE.Input) AS
SumOfInput FROM PRODUSE INNER JOIN MISCARE ON
PRODUSE.CodProdus = MISCARE.CodProdus GROUP BY PRODUSE.Denumire,
PRODUSE.Pret HAVING ( ((PRODUSE.Pret)>400)) UNION SELECT
PRODUSE.Denumire, PRODUSE.Pret, Sum(MISCARE.Input) AS SumOfInput
134FROM PRODUSE INNER JOIN MISCARE ON PRODUSE.CodProdus =
MISCARE.CodProdus GROUP BY
PRODUSE.Denumire, PRODUSE.Pret HAVING (((Sum(MISCARE.Input))<5));
Rezultatul acestei secvențe de cod SQL , adică reuniunea a două cereri, este:
Reuniunea a două tabele TAB1, TAB2, pentru câmpurile [C1] și [C2] va arăta
în formatul SQL astfel:
SELECT Tab1.C1, Tab1.C2 FROM Tab1
UNION SELECT Tab2.C1, Tab2.C2 FROM Tab2;
8.5Sub-Query
Exemplu: Cererea din exemplul următor va avea un criteriu de selecție scris direct în
SQL. Prin acesta se vor selecționa toate înregistrările în care datele din câmpul [ Pret]
nu sunt mai mari decăt media aritmetică a tuturor pr eturilor (calculate pe același câmp
al aceleași tabele)Sub-Query(sub-cerere) este o cerere care nu poate fi utilizată
decât în interiorul altei cereri. Ea nu are machetă de proiectare, se scrie
direct în SQL și nu poate fi salvată separat ci numai o dată cu cererea în
care se găsește. Posibilitatea folosirii de subinterogări este o opțiune
foarte importantă în crearea dinamică de criterii în interogările
obișnuite.
Sub-cererile sunt utilizate de obic ei direct într -o expresie a unei
cereri, folosită pentru definirea unui criteriu de selecție sau a unui câmp
calculat. Scrierea frazei SQL se face între paranteze și fără caracterul
punct și virgulă la sfârșit. O caracteristică a sub -cererii este posibilit atea
definirii ei pe orice tabelă din baza de date(și nu numai din subschema).
135Rezultatul acestei cereri de selecție care conține o sub -cerere este:
Denumire Preț
Imprimanta 500
CD-ROM 100
Televizor 400
8.6 Întrebări
1. Ce rol are o cerere de selec ție?
Răspuns:
2. Ce este Select Query ?
Răspuns:
3. Cum sunt afișate datele în cererea Crosstab Query ?
Răspuns:
Cererile de selecție extrag informații din unul sau mai multe tabele și le
afișează sub formă de listă.
Select Query este cea mai utilizată cerere din aplicațiile realizate înAccess.
Ea constă din proiecția și selecția câmpurilor și înregistrărilor din schema
cererii, în vederea extragerii unor informații din baza de date, care pot fi
utilizate în alte module ale aplicației sub forma unui tabel virtual.
Datele sunt afișate sub forma unei table de șah, stabilindu -se prin obțiunea
Column Heading care sunt capetele coloanelor și prin obțiunea Row Heading
care sunt capetele rândurilor.
1364. Ce conține obțiunea Value din clau za Crosstab a unei cereri încrucișate ?
Răspuns:
5. Cum sunt utilizate cererile Sub -Query?
Răspuns:
6. În ce condiții se poate realiza o cerere de tip Union ?
Răspuns:
8.7 Test grilă tema 8
1. Într-o tabelă aveți:
Cod Cant Preț UM Data
1 20 10 M 01/01/2000
2 40 15 Kg 01/02/2000
3 60 22 M 01/03/2000
4 80 25 Kg 01/04/2000
În cererea de selecție care folosește numai această tabelă, aveți în
CRITERIA și OR, corespunzător câmpurilor de sus:
CRITERIA >30 <24
OR "M"
Ce înregistrări vor fi selecționate (se folosește valoarea din COD pentru
identificare):
a)1+2+3;
b)2+3;
c)1+2+3+4;
d)2+3+4;
e)nici una din variante nu este corectă;
1372. Într-o tabelă aveți:
Cod Cant Preț UM Data
1 20 10 M 01/01/2000
2 40 15 Kg 01/02/2000
3 60 22 M 01/03/2000
4 80 25 Kg 01/04/2000
În cererea de selecție care folosește numai această tabelă, aveți în
CRITERIA și OR, corespunzător câmpurilo r de sus:
CRITERIA >20 >=25
OR "M"
Ce înregistrări vor fi selecționate (se folosește valoarea din COD pentru
identificare):
a)1+2+3+4;
b)2+3+4;
c)1+3+4;
d)4;
e)nici una din variante nu este corectă;
3. Într-o tabelă aveți:
Cod Cant Preț UM Data
1 20 10 M 01/01/2000
2 40 15 Kg 01/02/2000
3 60 22 M 01/03/2000
4 80 25 Kg 01/04/2000
În cererea de selecție care folosește numai această tabelă, aveți în
CRITERIA și OR, corespunzător câmpurilor de sus:
CRITERIA 80 15
OR "M"
Ce înregistrări vor fi selecționate (se folosește valoarea din COD pentru
identificare):
a) 1+3;
b) 1+2+3+4;
c) 1+3+4;
d) 1+2+3;
e) nici una din variante nu este corectă;
1384. Într-o tabelă aveți:
Cod Cant Preț UM Data
1 20 10 M 01/01/2000
2 40 15 Kg 01/02/2000
3 60 22 M 01/03/2000
4 80 25 Kg 01/04/2000
În cererea de selecție care folosește numai această tabelă, aveți în
CRITERIA și OR, corespunzător câmpurilor de sus:
CRITERIA >=80 <=25 "M"
OR "MKg"
Ce înregistrări vor fi selecționate (se folosește valoarea din COD pentru
identificare):
a) 1+2+3+4;
b) 2+4;
c) 4;
d) 2;
e) nici una din variante nu este corectă;
5. Într-o tabelă aveți:
Cod Cant Preț UM Data
1 20 10 M 01/01/2000
2 40 15 Kg 01/02/2000
3 60 22 M 01/03/2000
4 80 25 Kg 01/04/2000
În cererea de selecție care folosește numai această tabelă, aveți în
CRITERIA și OR, corespunzător câmpurilor de sus:
CRITERIA >20
OR >0 "kg"
Ce înregistrări vor fi selecționate (se folosește valoarea din COD pentru
identificare):
a) 2+4;
b) 1+2+3+4;
c) 2+3+4;
d) nici o înregistrare;
e) nici una din variante nu este corectă;
1396.Într-o tabelă aveți:
NrPreț Cantitate Valoare TVA DataIntrare Total
1150 80 12.000 2.280 01.01.2000 14.280
2200 100 20.000 3.800 10.02.2000 23.800
380 300 24.000 4.560 15.06.2000 28.560
4310 280 86.800 16.492 01.07.2000 103.292
În cererea de selecție care folosește numai această tabelă , aveți
următoarele criterii corespunzător câmpurilor:
Cantitate DataIntrare.
CRITERIA >100 And <300 Between #15.02.2000# And #31.12.2000#
OR 80
Ce înregistrări vor fi selecționate (se folosește valoarea din NR pentru
identificare):
a)1+2+3+4;
b)3+4;
c)3;
d)1;
e)1+4;
7.Într-o tabelă aveți:
NrPreț Cantitate Valoare TVA DataIntrare Total
1150 80 12.000 2.280 01.01.2000 14.280
2200 100 20.000 3.800 10.02.2000 23.800
380 300 24.000 4.560 15.06.2000 28.560
4310 280 86.800 16.492 01.07.2000 103.292
În cererea de selecție care folosește numai această tabelă, aveți următoarele
criterii corespunzător câmpurilor:
Cantitate DataIntrare.
CRITERIA >100 And <300 Between #01.04.2000# And #01.07.2000#
OR 80
Ce înregistrări vor fi selecționate (se folosește valoarea din NR pentru
identificare):
a)1+2+3+4;
b)3;
c) 1+4;
d)3+4;
140e)nici una din variante nu este corectă;
8.Într-o tabelă aveți:
NrPreț Cantitate Valoare TVADataIntrare Total
1150 80 12.000 2.280 01.01.2000 14.280
2200 100 20.000 3.800 10.02.2000 23.800
380 300 24.000 4.560 15.06.2000 28.560
4310 280 86.800 16.492 01.07.2000 103.292
În cererea de selecție care folosește numai această tabelă, aveți următoarele
criterii corespunzător câmpurilor:
Cantitate DataIntrare. Total
CRITERIA >100 And <300 #10.02.2000#
OR 280 <= 90.000
Ce înregistrări vor fi selecționate (se folosește valoarea din NR pentru
identificare):
a)1+4;
b)2;
c)4;
d) nici o înregistrare;
e)nici una din variante nu este corectă;
9.Pentru tabela de mai jos aveți o cerere de selecție cu clauza Total:
CodDimensiune Cantitate Preț
10 XXL 10 50
20 XL 15 30
30 XXL 30 60
40 XL 10 40
TOTAL Where GroupBy SUM GroupBy
Se dau următoarele variante de linii:
Nr variantă Dimensiune Cantitate Preț
1) XL 15 30
2) XL 10 40
1413) XXL 10 50
4) XXL 30 60
Care dintre variantele prezentate sunt corecte:
a)2+3;
b)1+4;
c)2;
d) toate variantele;
e)nici una din variante nu este corectă;
10.Pentru tabela de mai jos aveți o cerere de selecție cu clauza Total:
CodDimensiune Cantitate Preț
10 XXL 10 50
20 XL 15 30
30 XXL 30 60
40 XL 10 40
TOTAL Where GroupBy SUM Where
Se dau următoarele variante de linii:
Nr variantă Dimensiune Cantitate
1) XL 15
2) XL 10
3) XXL 10
4) XXL 30
5) XXL 40
6) XL 25
Care dintre variantele prezentate sunt corecte:
a)1+2+3+4;
b) 5+6;
c)5;
d)6;
e)nici una din variante nu este corectă;
11.Pentru tabela de mai jos aveți o cerere de selecție cu clauza Total:
142CodDimensiune Cantitate Preț
10 XXL 10 50
20 XL 15 30
30 XXL 30 60
40 XL 10 40
TOTAL Where GroupBy MIN Where
Se dau următoarele variante de linii:
Nr variantă Dimensiune Cantitate
1) XL 25
2) XXL 40
3) XL 15
4) XL 10
5) XXL 10
6) XXL 30
Care dintre variantele prezentate sunt corecte:
a)1+2+4+5;
b)4+5;
c)1+2;
d)3+6;
e)nici una din variante nu este corectă;
12.Pentru tabela de mai jos aveți o cerere de selecție cu clauza Total:
CodDimensiune Cantitate Preț
10 XXL 10 50
20 XL 15 30
30 XXL 30 60
40 XL 10 40
TOTAL Where GroupBy COUNT Where
Se dau următoarele variante de linii:
Nr variantă Dimensiune Cantitate
1) XL 2
2) XXL 2
3) XL 4
1434) XL 45
5) XXL 40
6) XXL 4
Care dintre variantele prezentate sunt corecte:
a)1+2;
b)3+6;
c)4+5;
d)1+2+4+5;
e)nici una din variante nu este corectă;
13. Pentru tabela de mai jos aveți o cerere de selecție cu clauza Total:
CodDimensiune Cantitate Preț
10 XXL 10 50
20 XL 0 30
30 XXL NULL 60
40 XL 10 40
TOTAL Where GroupBy AVG Where
Se dau următoarele variante de linii:
Nr variantă Dimensiune Cantitate
1) XL 5
2) XL 10
3) XL 0
4) XXL 5
5) XXL 10
6) XXL NULL
Care dintre variantele prezentate sunt corecte:
a)1+4;
b) 1+5;
c)1+6;
d)2+5;
e)3+6;
14.Pentru tabela de mai jos aveți o cerere de selecție cu clauza Total:
144CodDimensiune Cantitate Preț
10 XXL 10 50
20 XL 0 30
30 XXL NULL NULL
40 XL 10 40
TOTAL Where GroupBy AVG SUM
Se dau următoarele variante de linii:
Nr variantă Dimensiune Cantitate Preț
1) XL 5 70
2) XL 10 70
3) XL 0 70
4) XXL 5 50
5) XXL 10 50
6) XXL NULL NULL
Care dintre variantele prezentate sunt corecte:
a)1+4;
b) 1+5;
c)1+6;
d)2+5;
e)3+6;
145Tema 9
Cereri acțiune
Cuprinsul Temei 9
9.1 INTRODUCERE ………………………….. ………………………….. …………………….. 145
9.2 UPDATE QUERY ………………………….. ………………………….. …………………… 146
9.3 DELETE QUERY ………………………….. ………………………….. …………………… 148
9.4 APPEND QU ERY………………………….. ………………………….. …………………… 153
9.5 MAKE -TABLE QUERY ………………………….. ………………………….. ………….157
9.6 ÎNTREBĂRI ………………………….. ………………………….. ………………………….. .159
9.7 TEST GRILĂ TEMA 9………………………….. ………………………….. ……………. 161
Obiective
Însusirea tipurilor de cereri acțiune și a caracteristicilor ac estora.
Cunoașterea modalităților de creare și proiectarea a unei cereri acțiune .
Proiectarea cererilor acțiunede modificare, ștergere, adăugare și creare de
noi tabele.
Timp alocat: 4 ore
9.1 Introducere
Cererile acțiune funcționează în doi timpi :
– În primul moment se realizează o cerere de selecție după regulile pe care le –
am prezentat.
– În al doilea moment se realizează cu datele selectate anterior tipul de
actualizare a bazei de date specificat de cerere.
Dacă se trece în forma Datasheet V iew, atunci nu se va executa decât pasul 1,
deci vor fi afișate numai datele selectate, fără a se trece la modificarea lor.
Aceasta este o facilitate care se poate folosi pentru a se testa o cerere acțiune.
Modificarea efectivă a datelor se va realiza n umai la execuția cererii prin OPEN lansat
din pagina Query a ferestrei Database , după ce în prealabil s -a selectat respectiva
cererea acțiune , prin dublu clic pe cererea respectivă tot din fereastra
Database sau prin acționarea butonului Run din bara de in strumente din
formularul QBE.Înainte de execuția unei cereri acțiune, sistemul avertizează
utilizatorul asupra faptului că se vor modifica tabelele bazei de date și a numărului de
înregistrări care se vor schimba, oferind opțiunea renunțării la aceasta. A cest
avertisment poate fi eliminat:
146- Prin folosirea macro -ului Set Warnings;
-În cod VBA prin setarea proprietății corespunzătoare a obiectului DoCmd –
obiect care așa cum se va vedea conține majoritatea comenzilor utilizate în Access.
Astfel folosindu -se instrucțiunea:
-DoCmd.SetWarnings False – se anulează mesajele de avertizare.
-DoCmd.SetWarnings True – se activează apariția mesajelor de avertizare.
Tehnologia de realizare a unei cereri acțiune este similară cu cea a unei cereri
de selecție. Totuși, fiecare tip de cerere acțiune are un rând specific în formatul QBE,
prin care se precizează acțiunea pe care o va efectua cererea.
Prezentăm în continuare următoarele cereri acțiune:
9.2 Update Query
Field
Table
Update To
Criteria
Or
Prin acest rând se va introduce o valoare care o va înlocui pe aceea care se
găsește în câmpul respectiv în toate înregistrările selectate de către cerere. În rândul
Update To sunt valabile aceleași obiecte și reguli care s e folosesc la criterii sau
câmpuri calculate. Deci se pot folosi literali(constante), se poate face referire la datele
din câmpurile subschemei sau din controalele aflate în formulare deschise, se pot folosi
operațiile obișnuite din expresii, etc. Importan t este ca rezultatul evaluării expresiei
introduse să fie inclus în domeniul admis pentru câmpul respectiv și să respecte
regulile de integritate sau existențialitate care sunt eventual introduse. În caz contrar,
modificarea pentru câmpul respectiv nu se v a efectua, utilizatorul fiind evident
informat despre acest lucru.Update Query provoacă modificarea unor valori ale datelor din
câmpurile subschemei. Așa cum se vede și din macheta QBE a acestui tip de
cerere, specific este rândul Update To .
În cazul în care se modifică printr -o cerere Update Query , un câmp
care este cheie primară a unei alte tabele părinte care se află în legătură cu
o tabelă copil și dacă între acestea relația are setată proprietatea Cascade
Update Related Fields (a integrității referențiale), atunci această modificare
se va efectua automat și în câmpul aflat în relație din tabela copil.
147Pentru ca o cerere Update Query să fie executabilă, este necesar ca
înregistrările selectate să fie actualizabile(updateable). Acest lucru este posibil numai
dacă în urma cererii d e selecție se vor selecționa înregistrări pe care sistemul să le
poată identifica precis. De asemenea, pentru ca cererea Update Query , să funcționeze,
este necesar ca și câmpul care se dorește a fi modificat să fie actualizabil(updateable).
De exemplu un c âmp calculat nu va putea fi modificat.
Exemple:
1.Cererea prezentată în figura alăturată va selecta la
început, din tabela PRODUSE toate înregistrările care
au câmpul [ Preț]=400,apoi va înlocui pre țul din
aceste înregistrări cu 350 .
Întrucât câmpul [Preț] nu este cheie primară,
sau cheie externă pentru alt tabel, î n urma exe cuției
acestei cereri se vor produce automat modificările în
toate înregistrările selectate, care îndeplinesc condiția
ca prețul să fie 400. După execuția acestei cereri
tabelaProduse va avea următoarele înregistrări:
2.Cererea prezentată în figura următoare, va selecta,
la început, din tabelaPRODUSE ,toate înregi strările
care au câmpul [ CodProdus ]=1. În continuare pentru
toate înregistrările selectate, se va introduce în
câmpul [ CodProdus ] valoarea 6. Practic această
cerere înlocuiește în toate înregistrările din tabela
PRODUSE , valoarea 1 din câmpul [CodProdus ],cu
valoarea 6. TabelaMIȘCARE, este legată printr -o
relație de tip one to many , de tabela PRODUSE , prin
câmpul [ CodProdus ].Această relație are setată
proprietatea de integritate referențială și opțiunea
Cascade Update Related Fields. În această relație,
tabelaMIȘCARE fiind la capătul many, va avea rol
de tabelă copil.
Deși tabela MIȘCARE nu aparține
subschemei acestei cereri, totuși datorită relației prezentate, execuția cererii UpdatevaCodDenumire PrețUM
1Imprimanta 500Buc
2CD-ROM 100Buc
3Televizor 350Buc
4Calculator 3000Buc
148produce aceeași modificare și în câmpul [ CodProdus ] al acestei tabe le (valorile 1 ale
câmpului sunt modificate în 6).
Cele două tabele PRODUSE șiMIȘCARE au acum următoarele înregistrări:
9.3 Delete Query
Field
Table
Delete
Criteria
Or
Prin acest rând se va introduce o bligatoriu una dintre valorile Wheresau From
-care însă se completează automat.Delete Query provoacă ștergerea înregistrărilor care au fost
selectate, de către cerere prin criteriile obișnuite de selecție. Deci toate
înregistrările selectate prin această cerere, vor fi șterse din tabela
respectivă. Așa cum se vede și din macheta QBE a acestui tip de cerere,
specific este rândul Delete.
149Acțiunea de ștergere este ireversibilă . Deci în Access, ștergerile sunt
definitive, efectuându -se la nivel fizic și nu la nivel logic (cum este în FoxPro de
exemplu).
Un lucru foarte important este că toate ștergerile efectuate în Access
(înregistrări din tabele, diferite obiecte ale aplicației – tabele, formulare , etc.) nu
eliberează spațiul ocupat. Din această cauză, aplicațiile care suportă multe adăugări și
ștergeri vor prezenta o creștere semnificativă a spațiului ocupat, chiar dacă ele nu își
măresc volumul de date. Pentru eliberarea spațiului ocupat este pusă la dispoziția
utilizatorului comanda Compact din meniul Tools | Database Utilities .
Exemple:
1.Cererea de mai jos va exemplifica cum funcționează opțiunile Where șiFrom din
clauzaDelete.Rândul Delete este important atunci când se dorește ștergerea de
înregistrări dintr -o tabelă(cu From introdus în rândul Delete) care sunt
selectate însă prin criteriile introduse într -o altă tabelă cu care aceasta
este în relație(cu Whereintrodus în rândul Delete) din care nu se vor
șterge înregistrări. Nu trebuie confundată ștergerea unei înregistrări, cu
ștergerea datelor d intr-un câmp – care se realizează cu o cerere de tip
Update(de exemplu actualizarea cu NULL a datelor din acesta)
Similar cererilor de tip Update, în cazul în care se șterg înregistrări
printr-o cerere Delete dintr-o tabelă care este părinte în relație cu o altă
tabelă(partea din față a unei relații one to one sauone to many) și dacă
această relație are setată proprietatea Cascade Delete Related Records (a
integrității referențiale ),atunci din tabela c opil, se vor șterge automat
toate înregistrările care au pentru câmpul de relație, valori care s -au
pierdut datorită ștergerilor de înregistrări efectuate în tabela părinte.
Evident această operație se efectuează chiar dacă tabelacopil nu este
inclusă în subschema.
150
Se vor șterge toate înregistrările din tabele MIȘCARE (unde este clauza From)
care au denumire „ Televizor”(vezi clauzaWhere).
Tabelele obținute în urma execuției cererii vor arăta astfel:
151În cererea Delete din figura de mai sus pornind de la tabelele din exemplul
precedent, se șterg din tabela MIȘCARE, înregistrările corespunzătoare celor care au
[Denumire]=“Televizor” în tabelaPRODUSE .
Sistemul va selecta la început înregistrarea care în tabela PRODUSE are
[Denumire ]=“Televizor”.
În același timp se va selecționa din tabela MIȘCARE toate înregistrările legate
de aceasta prin câmpul [ CodProdus ]. Deoarece în tabela PRODUSE , înregistrarea
selecționată are pentru câmpul de relație [ CodProdus ]=3, atunci se vor selecționa și din
tabelaMIȘCARE , cele două înregistrări care au această valoare în câmpul
[CodProdus ].(vezi cum arăta tabela MIȘCARE înainte de execuț ia cererii în exemplul
dat la cererea Update)
În continuare sistemul va trece la ștergerea înregistrărilor selecționate numai
din tabela care are în clauza Delete opțiunea From.
Se observă din figură, că în urma ștergerilor efectuate de cererea Delete,în
tabelaMIȘCARE s-au șters cele două înregistrări cu [ CodProdus ]=3.
În același timp tabela PRODUSE a rămas neschimbată datorită faptului că în
cerere la această tabelă s -a introdus opțiunea Where în clauza Delete.
În cazul în care se șterge printr -o cerereDelete Query , un câmp care este cheie
externă a unei alte tabele(copil) și dacă între acestea relația are setată proprietatea
Cascade Delete Related Records (a integrității referențiale), atunci această modificare
se va efectua automat și în câmpul a flat în relație din tabela copil.
2.În exemplul următor vom șterge din tabela PRODUSE toate produsele care au
prețul mai mare de “1000”
TabelaPRODUSE înainte de execuția cererii:
Tabela MIȘCARE înainte de execuția cererii:
152Cererea Delete:
T
TabelaPRODUSE după execuția cererii:
TabelaMIȘCARE după execuția cererii:
Se observă că din tabelul PRODUSE s-a șters înregistrarea cu [ CodProdus ]=4
corespunzătoare condiției [Preț]>1000și în același timp au fost șterse din tabela
MIȘCARE toate înregistrările corespunzătoare câmpului de legătură(o înregistrare cu
[CodProdus ]=4) deoarece a fost setată proprietatea Cascade Delete Related Records .
1539.4 Append Query
Field
Table
Sort
Append To
Criteria
Or
În acest rând se pot introduce denumiri de câmpuri ale tabelei destinație. În
felul acesta se va crea o corespondentă între câmpul de ieșire al cererii, declarat în
rândulField, și câmpul din tabela destinație, declarat în rândul Append To .
Deci adăugarea în tabela destinație a înregistrărilor virtuale obținute prin
execuția cererii Append Query , se va realiza respectând corespondența obținută prin
completarea clauzei Append To în formularul QBE.
Totuși, adăugarea unei noi înregistrări în tabela d estinație, se va face numai
dacă aceasta respectă toate condițiile de integritate ale tabelei destinație și a câmpurilor
sau relațiilor acesteia. În cazul în care se vor folosi în cererea Append Query , câmpuri
care nu se vor duce în înregistrarea adăugată la tabela destinație, se va lăsa
necompletată celula corespondentă din clauza Append To .(de exemplu pentru
câmpurile folosite numai pentru introducerea unor criterii de selecție).
Proiectarea unei asemenea cereri necesită precizarea tabelei destinați e și a
locului unde se găsește. Acest lucru se realizează printr -un dialog inițiat de sistem laCererile Append Query provoacă adăugarea de noi înregistrări la o tabelă
existentă (în baza de date curentă sau altă bază de date), denumită în
continuare tabelă destinație .Practic, această cerere va funcționa în prima
instanță ca o cerere o bișnuită de selecție, urmând ca înregistrările
obținute la ieșire să fie adăugate în tabela destinație. Specific acestei
cereri este rândul Append To.
154începutul creării unei noi cereri Append Query . În felul acesta va fi posibil ca în rândul
Append To dinQBE, să fie atașate la lista ascunsă a acestuia, numele câmpurilor din
tabela destinație.
Numele și locul tabelei destinație, se vor găsi în pagina de proprietăți a cererii,
și anume în:
-Current Database – numele tabelei destinație;
-Another Database – numele complet(cu cale) al fișierului care conține t abela
destinație, proprietate care va fi completată numai în cazul în care tabela destinație nu
se găsește în baza de date curentă.
Exemple:
1.Cererea pe care o prezentăm va crea din tabelaMIȘCARE,printr-o cerere cu clauza
de total, înregistrări car e se vor adăuga la tabelaMIȘCARE .
Tabela MIȘCARE înainte de execuția cererii:
CerereaAppend conține pentru cele patru câmpuri ale tabelei MIȘCARE noi
valori ce se calculează în funcție de ceea ce se alege în clauza Total și anume :
-se grupează pro duseledupă câmpul [ CodProdus ];
-se calculează suma intrărilor prin aplicarea funcției agregate Sum asupra
câmpului [Input];
-se calculează media aritmetică a ieșirilor prin aplicarea funcției agregate Avg
asupra câmpului [Output];
-se determin ă cea mai ma re dată când au avut loc intr ări și ieșiri prin aplicarea
funcției agregate Max asupra câmpului [Data].
155CerereaAppend, va grupa înregistrările din tabelaMIȘCARE, după câmpul
[CodProdus ].În tabela MIȘCARE , vor fi adăugate două înregistrări, așa cum se p oate
vedea din figura următoare.
TabelaMIȘCARE după execuția cererii Append:
1562.Vom adăuga în tabela PRODUSE un nou produs a cărei denumire este introdusă de
la tastatură (cerere cu parametru), c are are codul egal cu cel mai mare Cod existent la
care se adaugă 1, prețul egal cu suma prețurilor tuturor produselor existente.
TabelaPRODUSE înainte de execuția cererii :
În urma selecției se va adăuga în tabela PRODUSE următoarea linie:
TabelaPRODUSE după execuția cererii de adăugare :
157
9.5 Make-Table Query
Proiectarea unei asemenea cereri necesită ca și la cererea Append precizarea
tabelei destinație și a locului unde se găsește, tehnologia fiind absolut aceiași.
Deci la începutul creării unei noi cereri Make-Table sistemul inițiază un dialog
prin care se solicită numele și locul tabelei destinație.
Numele și locul tabelei destinație, se vor găsi în pagina de proprietăți a cererii,
și anume în:
-Current database -numele tabelei destinație ;Cererile Make-Tableprovoacă crearea unei noi tabele cu înregistrările
virtuale ce rezultă din execuți a unei cereri obișnuite de selecție. Structura
acestei tabele (inclusiv numele câmpurilor) va fi creată automat de sistem
funcție de câmpurile care sunt folosite în cererea de selecție.
Cererea Make-Table,nu conține nici un rând suplimentar în formularul
QBE. Realizarea ei este similară cu a unei cereri de selecție obișnuite.
158-Another Database -numele complet(cu cale) al fișierului care conține tabela
destinație, proprietate care va fi completată numai în cazul în care tabela destinație nu
se găsește în baza de da te curentă.
La execuția unei cereri Make-Table,dacă mai există o tabelă cu același nume
ca acela al tabelei destinație, atunci după un mesaj de avertizare aceasta va fi ștearsă
automat, înainte de executarea cererii respective.
Tabelelor create cu cerer i de tipMake-Table, nu li se pot seta prin QBE nici un
fel de atribute specifice (de exemplu nu li se po ate stabilicheia primară, sau câmpurile
index.). Din această cauză dacă se dorește crearea unor tabele cu anumite caracteristici,
se procedează în fel ul următor:
– Se creează structura tabelei conform dorinței utilizatorului.
– Se șterg toate înregistrările din această tabelă cu o cerere Delete.
– Se folosește o cerere Appendpentru introducerea înregistrărilor.
Exemplu: Se creează un tabel cu numel eNOUcare conține câmpurile
-[CodProdus],
-[Denumire],
-[Intrări]= [Preț]*[Input],
-[Ieșiri]=[Preț]*[Output],
-[Diferența]=[Intrări]-[Ieșiri]
În urma execuției cererii, noul tabel va fi:
159
CodProdus Number
Denumire Text
IntrăriNumber
Ieșiri Number
DiferențaNumber
În cazul în care dorim ca acest nou tabel să aibă [ CodProdus ] ca fiind cheie
primară vom construi un tabel din acesta , care să conțină și cheia primară, printr -o
cerereDelete vom șterge toate înregistrăr ile și printr -o cerereAppend vom adăuga în
tabel înregistrările anterioare.
9.6 Întrebări
1. Ce realizează cererea Update ?
Răspuns:
2. Care sunt opțiunile rândului Delete al unei cereri de ștergere ?
Răspuns:Interogarea Update Query provoacă modificarea unor valori ale datelor
din câmpurile subschemei. Acest tip de cerere are specific rândul Update To
în carese va introduce o valoare care o va înlocui pe aceea care se găsește în
câmpul respectiv în toate înregistrările selectate de către cerere.
RândulDelete conține două clauze:
-From unde se specifică tabela din care se vor șterge înregistrări
-Where undesunt stabil ite criteriile de selecț ie a înregistrărilor
care urmeaz ă să fie șterse.
1603. Ce se întâmplă când modificăm printr-o cerere Update valoarea unui câmp cheie
primară?
Răspuns:
4. Ce se întâmplă când ștergem printr -o cerere Delete înregistrările dintr -o tabelă
părinte care se află în relație cu o tabelă copil ?
Răspuns:
5. Cum funcționează o cerere Append To ?
Răspuns:
6. Ce realizează o cerere Make Table ?
Răspuns: În cazul în care se modifică printr -o cerere Update Query, un câmp care
este cheie primară a unei alte tabele părinte care se afl ă în legătură cu o tabelă
copil și dacă între acestea relația are setată proprietatea Cascade Update Related
Fields(a integrității referențiale), atunci această modificare se va efectua automat
și în câmpul aflat în relație din tabela copil. În cazul în ca re relația are setată
integritatea referențială, dar nu si Cascade Update Related Fields atunci
modificarea nu se poate efectua.
1619.7 Test grilă tema 9
1.Se dau tabelele :Produse și Produse Noi
Între câmpurile NR din cele 2 tabele este definită o relație "One to M any",
care are setate "Integritatea Referențială", precumși "actualizarea în cascadă" și
"ștergerea în cascadă".
După execuția cererii ce înregistrări vor fi în tabelul "ProduseNoi":
a)1+2+3+4+5+6;
b)1+2+5+6;
c)3+4+5+6;
d)2+3+4+5;
e)nici una din variante nu este corectă;
2.Se dau tabelele :Produse și Produse Noi
Între câmpurile NR din cele 2 tabele este definită o relație "One to Many",
care are setate "Integritatea Referențială", dar nu și "actualizarea în ca scadă" și
"ștergerea în cascadă".Field NR
Table PRODUSE
Update To 5
Criteria 1
Or1)1 Tricou XXL
2)1 Tricou L
3)2 Cămașă L
4)2 Cămașă M
5)5 Tricou XXL
6)5 Tricou Ldupă execuția acestei
cereri Update, în dreapta
se dau următoarele
posibile înregistrări din
tabela"Produse Noi":NRNumeProd Cant.Preț
1Tricou 1005
2Cămașă 308NrNumeProd Mărime
1Tricou XXL
1Tricou L
2Camașă L
2Cămașă M
NRNumeProd Cant.Preț
1Tricou 1005
2Cămașă 308NrNumeProd Mărime
1Tricou XXL
1Tricou L
2Camașă L
2Cămașă M
162După execuția cererii ce înregistrări vor fi în tabelul "ProduseNoi":
a)1+2+3+4+5+6 ;
b)1+2+5+6;
c)3+4+5+6;
d)1+2+3+4;
e)nici una din variante nu este corectă;
3.Se dau tabelele :Produse și Produse Noi
Între câmpurile NR din cele 2 tabele este definită o relație "One to
Many", care nu are setată "Integritatea Referențială".
După execuția cererii ce înregistrări vor fi în tabelul "ProduseNoi":
a)1+2+3+4+5+6;
b)1+2+5+6;
c)3+4+5+6;
d) 1+2+3+4;
e)nici una din variante nu este corectă;Field NR
Table PRODUSE
Update To 5
Criteria 1
Or1)1 Tricou XXL
2)1 Tricou L
3)2 Cămașă L
4)2 Cămașă M
5)5 Tricou XXL
6)5 Tricou Ldupă execuția acestei
cereri Update, în dreapta
se dau următoarele
posibile înregistrări din
tabela"Produse Noi" :
NRNumeProd Cant.Preț
1Tricou 1005
2Cămașă 308NrNumeProdMărime
1Tricou XXL
1Tricou L
2Camașă L
2Cămașă M
Field NR
Table PRODUSE
Update To 5
Criteria 1
Or1)1 Tricou XXL
2)1 Tricou L
3)2 Cămașă L
4)2 Cămașă M
5)5 Tricou XXL
6)5 Tricou Ldupă execuția acestei
cereri Update, în dreapta
se dau următoarele
posibile înregistrări din
tabela"Produse Noi" :
1634.Se dau tabelele :Produse și Produse Noi
Între câmpurile NR din cele 2 tabele este definită o relație "One to Many",
care are setate "Integritatea Ref erențială ", precum și "actualizarea în cascadă" și
"ștergerea în cascadă".
După execuția cererii ce înregistrări vor fi în tabelul "ProduseNoi":
a)1+2+3+4+5+6;
b)1+2+5+6;
c)3+4+5+6;
d)2+3+4+5;
e)nici una din variante nu este corectă;
5.Se dau tabelele :Produse și Produse Noi
Între câmpurile NR din cele 2 tabele este definită o relație "One to Many",
care are setate "Integritatea Referențială", "ștergerea în cascadă", dar nu si
„actualizarea în cascadă”Field NR
Table PRODUSE
Update To 3
Criteria 2
Or1)1 Tricou XXL
2)1 Tricou L
3)2 Cămașă L
4)2 Cămașă M
5)3 Cămașă L
4)3 Cămașă Mdupă execuția acestei
cereri Update, în dreapta
se dau urm ătoarele
posibile înregistrări din
tabela"Produse Noi" :NRNumeProd Cant.Preț
1Tricou 1005
2Cămașă 308NrNumeProd Mărime
1Tricou XXL
1Tricou L
2Camașă L
2CămașăM
NRNumeProd Cant.Preț
1Tricou 1005
2Cămașă 308NrNumeProd Mărime
1Tricou XXL
1Tricou L
2Camașă L
2Cămașă M
164După execuția cererii ce înregistrări vor fi în tabelul "ProduseNoi":
a)1+2+3+4+5+6;
b)1+2+5+6;
c)3+4+5+6;
d) 1+2+3+4;
e)nici una din variante nu este corectă;
6.Se dau tabelele :Produse și Produse Noi
Între câmp urile NR din cele 2 tabele este definită o relație "One to Many",
carenu are setată „Integritatea Referențială ”.
După execuția cererii ce înregistrări vor fi în tabelul "ProduseNoi":
a)1+2+3+4+5+6;
b)1+2+5+6;
c)3+4+5+6;
d) 1+2+3+4;
e)nici una din variante nu este corectă;Field NR
Table PRODUSE
Update To 5
Criteria 1
Or1)1 Tricou XXL
2)1 Tricou L
3)2 Cămașă L
4)2 Cămașă M
5)5 Tricou XXL
6)5 Tricou Ldupă execuția acestei
cereri Update, în dreapta
se dau următoarele
posibile înregistrări din
tabela"Produse Noi" :
Field NR
Table PRODUSE
Update To 3
Criteria 2
Or1)1 Tricou XXL
2)1 Tricou L
3)2 Cămașă L
4)2 Cămașă M
5)3 Cămașă L
4)3 Cămașă Mdupă execuția acestei
cereri Update, în dreapta
se dau următoarele
posibile înregistrări din
tabela"Produse Noi" :NRNumeProd Cant.Preț
1Tricou 1005
2Cămașă 308NrNumeProd Mărime
1Tricou XXL
1Tricou L
2Camașă L
2Cămașă M
1657.Se dau tabelele :Produse și Produse Noi
Între câmpurile NR din cele 2 tabele este definită o relație "One to Many", care
nu are setată "Integritatea Referențială".
După execuția cerer ii ce înregistrări vor fi în tabelul "ProduseNoi":
a)3+4;
b)1+2;
c)2+3+4;
d)1+2+3+4;
e)nici una din variante nu este corectă;
8.Se dau tabelele :Produse și Produse Noi
Între câmpurile NR din cele 2 tabele este definit ă o relație "One to
Many", care are setate "Integritatea Referențială", precum și
"actualizarea în cascadă" și "ștergerea în cascadă".NRNumeProd Cant.Preț
1Tricou 1005
2Cămașă 308NrNumeProd Mărime
1Tricou XXL
1Tricou L
2Camașă L
2Cămașă M
Field NR
Table PRODUSE
Delete Where
Criteria 1
Or1)1 Tricou XXL
2)1 Tricou L
3)2 Cămașă L
4)2 Cămașă Mdupă execuția acestei
cereri Delete, în dreapta
se dau următoarele
posibile înregistrări din
tabela"Produse Noi" :
NRNumeProd Cant.Preț
1Tricou 1005
2Cămașă 308NrNumeProd Mărime
1Tricou XXL
1Tricou L
2Camașă L
2Cămașă M
Field NR
Table PRODUSE
Delete Where
Criteria 1
Or1)1 Tricou XXL
2)1 Tricou L
3)2 Cămașă L
4)2 Cămașă Mdupă execuția acestei
cereri Delete, în dreapta
se dau următoarele
posibile înregistrări din
tabela"Produse Noi" :
166După execuția cererii ce înregistrări vor fi în tabelul "ProduseNoi":
a) 3+4;
b)1+2;
c)2+3+4;
d)1+2+3+4;
e)nici una din variante nu este corectă;
9.Se dau tabelele :Produse și Produse Noi
Între câmpurile NR din cele 2 tabele este definită o relație "One to Many", care
are setată "Integritatea Referențială" , „ștergerea în cascadă ”, dar nu și
„actualizarea în cascadă””
După execuția cererii ce înregistrări vor fi în tabelul "ProduseNoi":
a)3+4;
b)1+2;
c)2+3+4;
d)1+2+3+4;
e)nici una din variante nu este corectă;NRNumeProd Cant.Preț
1Tricou 1005
2Cămașă 308NrNumeProd Mărime
1Tricou XXL
1Tricou L
2Camașă L
2Cămașă M
Field NR
Table PRODUSE
Delete Where
Criteria 2
Or1)1 Tricou XXL
2)1 Tricou L
3)2 Cămașă L
4)2 Cămașă Mdupă execuția acestei
cereri Delete, în dreapta
se dau următoarele
posibile înregistrări din
tabela"Produse Noi" :
167Tema 10
Formulare în Access
Cuprinsul Temei 10
10.1 INTRODUCERE ………………………….. ………………………….. …………………… 168
10.2 SECȚIUNILE UNUI FORMULAR ………………………….. …………………….. 169
10.3 TIPURI DE FORMU LARE………………………….. ………………………….. ……172
10.4 CREAREA FORMULA RELOR………………………….. …………………………. 172
10.4.1CREAREA FORMULARELOR UTILIZÂND FORMWIZARD…………………… 174
10.4.2CREAREA FORMULARELOR UTILIZÂND AUTOFORM……………………….. 177
10.4.3CREAREA FORMULARELOR UTILIZÂND CHARTWIZARD…………………. 178
10.4.4CREAREA FORMULARELOR UTILIZÂND DESIGNVIEW…………………….. 178
10.5 PROPRIETĂȚILE F ORMULARELOR ………………………….. …………….. 182
10.5.1PAGINAFORMAT ………………………….. ………………………….. …………….. 182
10.5.2PAGINADATA………………………….. ………………………….. …………………. 184
10.5.3PAGINAOTHER………………………….. ………………………….. ……………….. 185
10.5.4PAGINAEVENT………………………….. ………………………….. ……………….. 185
10.6 CONTROALE UZUAL E FOLOSITE ÎN CONSTR UIREA
FORMULARELOR ………………………….. ………………………….. ……………………… 186
10.6.1CASETA DE TEXT –TEXTBOX………………………….. …………………………. 186
10.6.2LISTA ASCUNSĂ –COMBOBOX, LISTĂ DERULANTĂ –LISTBOX……….189
10.6.3OPTIONBUTTON,CHECKBOX,TOGGLEBUTTON………………………….. .190
10.6.4GRUP DE OPȚIUNI -OPTIONGROUP………………………….. ………………….. 190
10.6.5ETICHETA-LABEL………………………….. ………………………….. …………….. 190
10.6.6CONTROALE GRAFICE –LINE,RECTANGLE ,PICTURE……………………… 190
10.6.7BUTONUL DE COMANDĂ –COMMAND BUTTON………………………….. ….190
10.7 INTREBĂRI ………………………….. ………………………….. …………………………. 191
10.8 TEST GRILĂ TEMA 10………………………….. ………………………….. …………193
Obiective
Utilizarea tuturor tipurilor de formulare.
Cunoașterea modalităților de creare și proiectarea a un ui formular.
Stabilirea proprietăților formularelor.
Proiectarea formularelor cu utilizând toate tipurile de controale.
Timp alocat: 2 ore
16810.1 Introducere
Formularele sunt machete(ferestre) folosite în scopul adăugării,
modificării, ștergerii sau consultării datelor în/din tabelele bazei de date.
Formularul este destinat în special ecranului, dar poate fi tipărit și la imprimantă. Este
folosit pentru un acces aleator la înregistrări, în sensul că după ce se obține accesul la o
înregistrare, utiliza torul poate trece la sfârșitul formularului pentru a adăuga o
înregistrare; ulterior va putea reveni la început pentru a căuta o altă înregistrare.
Spre deosebire de rapoarte, dacă se tipărește un formular la imprimantă apar și
culorile de fundal, împreun ă cu butoanele de comandă, casetele de text și alte
controale.
Formularele au și anumite limite; principala limită se referă la faptul că nu pot
grupa datele după diverse criterii, inconvenientul fiind eliminat prin utilizarea
rapoartelor.
Actualizarea t abelelor se poate face și direct, prin deschiderea lor din fereastra
bazei de date, însă utilizare a formularelor prezintă următoa rele avantaje:
-interfața prietenoasă este realizată prin intermediul diferitelor controale sau
alte elemente grafice;
-posibilitatea definirii unor reguli de validare suplimentare celor definite la
nivelul tabelelor;
-posibilitatea actualizării mai multor tabele printr -un singur formular, operație
realizabilă prin intermediul su bformularelor.
Microsoft Access permite proiectarea formularelor în următoarele
scopuri:
-afișarea și editarea datelor . Este cea mai obișnuită utilizare a
formularelor. Formularele oferă o modalitate de personalizare a
proiectăr ii datelor în cadrul unei aplicații de baze de date. De asemenea,
formularele se pot folosi pentru schimbarea, ștergerea sau adăugarea
datelor într -o bază de date;
-controlul desfășurării aplicațiilor . Se pot proiecta formulare care
lucrează cu comenzi macr o sau cu proceduri Microsoft Visual Basic for
Application (VBA) destinate automatizării afișării anumitor date sau a
ordinii anumitor acțiuni. Prin intermediul comenzilor macro și al
procedurilor VBA se pot deschide alte formulare, se pot lansa în execuție
interogări, se pot limita datele afișate, se poate executa o comandă din
meniu, se pot configura valori în cadrul înregistrărilor și al formularelor,
se pot afișa meniuri, se pot tipări rapoarte și realiza o mulțime de alte
acțiuni.
169În esență, formularele din Microsoft Access creează interfața utilizatorului cu
tabelele și cererile bazei de date. Prin intermediul lor se operează direct asupra datelor
fie dintr-un tabel, fie din mai multe tabele asociate, fiind create de cele m ai multe ori
pe baza unei interogări care include toate câmpurile necesare.
Formularele sunt compuse din obiecte de control, care sunt o colecție de
elemente specifice de proiectare destinate fie afișării datelor din tabele/cereri, fie
afișării informații lor generale.
10.2 Secțiunile unui formular
Un formular se poate afla în trei stari:
-Design View – faza de proiectare
-Form View – în execuție
-Datasheet View – faza de viz ualizare sub formă
de tabel.
Trecerea de la o stare la alta se face prin meniul contextual sau prin pictograma
specifică de pe ToolsBar.
Informațiile dintr -un formul ar pot fi împărțite în secțiuni:
►Detail- utilizată pentru a cuprinde corpul principal al unui formular.
Această secțiune conține de obicei controale legate la câmpuril e din sursa
înregistrărilor (dar este posibil să conțină și controale nelegate, cum ar fi etichetele care
identifică conținutul câmpurilor ), în triplu scop și anume pentru:
-vizualizarea datelor din câmpurile tabelei legate la formular
-modificarea acestor da te
-adăugarea de noi înregistrări în tabela legată la formular.
De asemenea, se poat e proiecta un formular astfel încât să realizeze comenzi
macro și proceduri VBA atunci când apar anumite evenimente (de exemplu,
se deschide un formular, se selectează un anumit control, se execută clic pe o
opțiune sau se schimbă datele din formular);
-acceptarea intrării . Se pot proiecta formulare folosite pentru
introducerea de noi date într -o bază de date sau pentru furnizarea valorilor
de date care permit automatizarea unei aplicații;
-afișarea mesajelor . Formularele pot oferi informații referitoare la
modul de utilizare a unei aplicații sau despre acțiunile viitoare;
-tipărirea informațiilor . Deși pentru tipărirea informațiilor se folosesc
în general rapoarte, acest lucru se poate realiza și cu ajutorul unui
formular.
170Deoarece există și posibilitatea ștergerii înregistrărilor(prin selectare și tasta
Delete sau din meniul contextual) practic printr -un formular se poate vizualiza și
actualiza tabela legată de acesta.
Această secțiune se repetă, în execuția formularului, pentru fiecare înregistrare
a tabelei legate de formular.
Figura10.2.1Secșiunile unui formular
►Form Header (antet de formular) –reprezintă partea de început a unui
formular. Se foloseș te o singura dată și este u tilizat pentru a afișa capul de tabel al unui
formular.
►Page Header (antet de pagină) -afișează informațiile cum ar fi un titlu ,
date calendaristice, numere de pagină sau anteturile coloanelor în partea superioară a
fiecăreipagini imprimate. Anteturile paginilor apar doar pe formularele imprimate.
►Form Footer (subsol al formularului) – reprezintă parte de sfârșit a unui
formular. Apare o singură dată și este u tilizat pentru a afișa informații care rămân
aceleași pentru fiec are înregistrare, ca butoanele de comandă
►Page Footer (subsol de pagină) -afișează informații ca data sau numărul
paginii în partea inferioară a fiecărei pagini imprimate. Subsolurile paginilor apar doar
pe formularele imprimate.
Prin trecerea formular ului din figura 10.2 .1 în faza de excuție( Form View ) se
obține:
171
Figura10.2.2 Form View
Se observă că informațiile din antetul și subsolul de pagină nu apar în faza de
execuție a formularului. Acestea apar numai la imprimarea formularului.
Figura 7.1.3 Printarea unui formularContinous Form
DetailForm Header
Form Footer
Continous Form
DetailForm Header
Form Footer
Page FooterPage Header
17210.3 Tipuri de formulare
Clasificarea formularelor se poate face în funcție de următoarele criterii,
detaliate în continuare:
10.4 Crearea formularelor
Microsoft Access include un număr de nouă programe Wizard prin intermediul
cărora se pot crea formulare în formate prestabilite, formulare tip grafic ș i formulare
pivot.Ele sunt activate la opțiunea utilizatorului de a crea un nou formular, prin
selectarea buton uluiNew(figura 7.3.1).1. După sursa de date:
►formulare le gate- sunt formulare care permit afișarea sau
actualizarea datelor din tabele, direct sau prin intermediul unor cereri de
selecție ;
►formulare nelegate – sunt formulare destinate afișării sau
editării unor date care nu sunt stocate în tabele. Ele sunt fol osite frecvent
pentru afișarea unor mesaje, vizualizarea unor informații despre sistem,
preluarea datelor necesare afișării unui raport etc.
2. În funcție de modul de afișare , sunt disponibile următoarele tipuri de
formulare:
►Single form afișează doar înr egistrarea curentă(o singură
secțiune de detail se poate vedea la un moment dat). Este folosit pentru
introducerea de date în tabelele cu un număr mare de câmpuri care nu
încap pe o singură linie a formularului;
►Continuous form permite vizualizarea mai mu ltor
înregistrări(mai multe secțiuni detail și anume atâtea câte încap). Este cel
mai utilizat tip de formular pentru introducerea de date cu condiția ca
numărul de câmpuri să nu fie prea mare;
►Datasheet form afișează datele sub formă de linii și coloane, la
fel ca o foaie de calcul tabelar;
►Chart form afișează datele sub formă grafică.
3. După modul de interacțiune cu alte ferestre :
►formulare modale sunt formulare care nu permit accesarea
obiectelor conținute în alte ferestre până când nu sunt închise sau ascunse
(se mai numesc și formulare de dialog);
►formulare nemodale sunt formulare care permit utilizatorului
să activeze și alte ferestre.
173Se observă că există următoarele modalități de realizarea a formularelor:
1.Design View permite crearea manuală a formularelor. Utilizatorului i se
pune la dispoziție un tabel liber și caseta cu instrumente Toolbox;
2.Form Wizardgenerează un formular pe baza câmpurilor selectate din unul
sau mai multe tabele sau interogări;
Figura 7.3.1 Ecranul i nițial în crearea unui formular
3.AutoForm: Columnar creează un formular în care fiecare câmp apare pe o
linie separată avân d în stânga numele, fiecare înregistrare reprezentând un nou tabel;
4.AutoForm: Tabular creează un formular î n care numele câm purilor apare o
singură dată în capătul de sus al formularului, iar înregistrarea datelor se face pe linie;
5.AutoForm: Data sheetcreează un formular în care datele sunt afișate sub
forma foilor de calcul tabelar;
6.AutoForm: PivotTable creează un formular în care sunt afișate date
calculate;
7.AutoForm: PivotChart creează un formular în care sunt afișate sub formă
grafică date calculate;
8.Chart Wizard creează un formular în care datele sunt afișate sub forma unui
grafic;
9.Pivot Table Wizard creează un formular în care sunt afișate datele calculate;
programul folosește aplicația Microsoft Excel pentru a crea tabelu l pivot, în timp ce în
Microsoft Access se creează formularul în care acesta va fi inclus. Sunt numite astfel
pentru că li se poate schimba în mod dinamic aranjarea astfel încât să analizeze datele
selectate în diverse moduri.
Dacă variantele AutoForm generează tipul de formular selectat într -un singur
pas, celelalte programe necesită trecerea prin mai multe etape.
174În esență, formularele din Microsoft Access creează interfața utilizatorului cu
tabelele și interogările.
10.4.1Crearea formularelor utili zândForm Wizard
Este cea mai facilă modalitate pentru crearea unui formular simplu sau a unui
formular care conține subformulare. Pe baza câmpurilor selectate din unul sau mai
multe tabele sau interogări, Form Wizard generează modelul de bază al formul arului
incluzând și subformularul, precum și obiectele de control necesare afișării și editării
datelor.
La realizarea unui formular în acest mod, sunt foarte importante relațiile
existente între tabelele/interogările sursă ale acestuia, mai ales dacă în tre ele nu a fost
declarată o relație până în acest moment.
Crearea unui formular se încheie cu operația de formatare care constă din
alegerea modului de afișare, a fundalului, a numelui.
Pentru exemplificare vom construi un formular care să permită co nsultarea
tabeleiPRODUSE și actualizarea conținutului acesteia – adăugare, modificare și
ștergere de înregistrări. Selectăm opțiunea Form Wizard și alegem tabela PRODUSE ca
sursă de date pentru formular – figura 10 .4.1.1.
Urmează să parcurgem o succesiun e de pași, la fiecare dintre aceștia vom fi
invitați să specificăm o serie de informații iar pe baza acestora Microsoft Access va
genera în mod automat formularul dorit. Trecerea la pasul următor se realizează cu
ajutorul butonului Next, revenirea la cel a nterior se face prin folosirea butonului Back.
Utilizând butonul Finish, utilizatorul poate opta pentru finalizarea procesului de creare
automată a formularului chiar dacă nu au fost parcurși toții pașii respectivi. Apăsarea
butonului Cancelatrage după si ne închiderea ferestrei fără generarea formularului.
Figura 10.4.1.1 Crearea unui formular cu Form Wizard
La primul pas suntem invitați să indicăm câmpurile tabelei PRODUSE pe care
dorim să le includem în formular. Câmpurile alese vor fi mut ate în partea dreaptă –
175figura 10.4.1.2. Folosind butoanele <, <<, >, >> putem selecta/deselecta câmpul curent
sau toate câmpurile afișate.
Figura10.4.1.2.Selectarea câmpurilor dorite
Urmează să specificăm modul de dispunere a câmpurilor selectate în cad rul
formularului. Putem alege una dintre opțiunile următoare:
-Columnar – fiecare câmp apare pe o linie separată având în partea stângă
numele acestuia iar formularul va afișa la un moment dat doar valorile aferente
înregistrării curente;
-Tabular – numele c âmpurilor apare o singură dată în capătul de sus al
formularului iar valorile asociate pentru fiecare înregistrare sunt afișate pe linii;
Figura10.4.1.3Specificarea modului de dispunere a câmpurilor în cadrul
formularului
176-Datasheet – datele sunt afiș ate sub forma unei foi de calcul tabelar iar
utilizatorul va vizualiza mai multe înregistrări în același timp;
-Justified– valorile corespunzătoare înregistrării curente sunt afișate unele după
altele pe linii succesive.
În continuare vom opta pentru unul din stilurile de afișare care ne sunt puse la
dispoziție – figura 10 .4.1.4.
Figura10.4.1.4Alegerea stilului de afișare
La ultimul pas vom alege un nume pentru formularul nou creat sau îl vom
accepta pe cel propus în mod implicit. Apăsarea butonulu iFinish atrage după sine
crearea, salvarea și afișarea în modul Form View a formularului respectiv – figura
10.4.1.5.
Figura10.4.1.5 Vizualizarea formularului în modul Form View
În partea inferioară a ferestrei sunt afișate numărul înregistrării cur ente și
numărul total de înregistrări conținute de către tabela PRODUSE . Tot acolo se găsesc
177și butoanele de navigare care ne ajută să ne deplasăm către o altă înregistrare sau să
adăugăm noi valori.
Utilizatorul poate reveni în Design View pentru a schim ba proprietățile
formularului și ale obiectelor conținute de către acesta.
10.4.2Crearea formularelor utilizând AutoForm
Este cea mai simplă modalitate pentru crearea unui formular bazat pe o singură
tabelă sau pe o singură interogare. Astfel, după sp ecificarea sursei de date, formularul
este creat în mod direct, fără a mai fi necesar să se furnizeze sistemului alte informații,
să se selecteze alte opțiuni sau să se apese alte butoane.
Astfel, dacă optăm pentru varianta AutoForm: Tabular și alegem ca sursă de
date interogarea Query5(afișarea tuturor produselor care au prețul mai mare decât 400
și suma intrărilor) (figura10.4.2.1), formularul pe care îl vom obține va fi asemănător
cu cel prezentat în figura 10.4.2.2.
Figura10.4.2.1 Alegerea tipului de formular și a sursei de date
În partea inferioară a ferestrei avem zona de navigare care ne dă informații
despre numărul înregistrării curente și despre numărul total de înregistrări ce sunt
conținute de către formular. Putem folosi butoanele din ace astă zona pentru a ne
deplasa pe o nouă înregistrare. Înregistrarea curentă este marcată cu un semn special în
zona din stânga (semnul ).
178Figura 7.3.2.2 Vizualizarea formularului în modul Form View
Utilizatorul poate comuta în modul Design View pentru a schimba proprietățile
formularului și ale obiectelor afișate în cadrul acestuia. Salvarea formularului face
posibilă utilizarea ulterioară a acestuia.
10.4.3Crearea formularelor utilizând Chart Wizard
Această opțiune ne ajută să realizăm un formular în care datele sunt afișate sub
forma unui grafic.
Graficul numai afișează valorile câmpurilor tabelei sau interogării în forma
dorită de noi, modificarea acestora nefiind posibilă. Pentru obținerea graficului,
utilizatorul va trebui să parcurgă integral sau parțial pașii wizard -ului.
10.4.4 Crearea formularelor utilizând Design View
Această metodă constă în proiectarea manuală a formularelor (figura10.4.4.1),
inițial fiind puse la dispoziție un formular liber și caseta cu instrumente Toolbox.
În formularele Microsoft Access există trei mari categorii de obiecte de
control:
1.obiecte de control asociate sunt obiecte atașate unui câmp din sursa de date
a formularului, ele afișând și actualizând valorile datelor câmpului asociat din
înregistrarea c urentă. Toate obiectele de acest fel sunt însoțite de etichete ce afișează
titlul câmpului căruia îi sunt atașate;
2.obiecte de control neasociate sunt obiecte care afișează datele independente
de sursa de date a formularului; ele pot sau nu să fie înso țite de etichete;
3.obiecte de control calculate sunt obiecte ce folosesc expresiile calculate, ca
sursă de date.
Figura10.4.4.1 Proiectarea manuală a formularelor
179CasetaToolbox este utilă pentru ins erarea obiectelor de
control în tr-un formular. La fiecare inserare a unui obiect, se
apelează un program Wizard care ajută la proiectarea obiectelor de
control mai complexe.
Principalele obiecte de control vizibile pe caseta Toolbox
sunt:
►caseta de text Text Box creează o casetă ce
afișează și perm ite editarea datelor de tip text ;
►caseta de listă List Box creează o casetă ce
cuprinde o listă derulantă de opțiuni ;
►caseta combinată Combo Box creează o casetă combinată
formată dintr -o casetă de text editabilă și o casetă de listă. Poate avea ca sursă
chiar un alt tabel decât sursa de date ;
►casetă de validare Check Box creează o casetă de validare care
comută între stările On șiOff;
►buton comutator Toggle Button creează un buton cu două stări
On/Off, corespunzătoare stărilor Yes (-1),respectiv No (0);
►buton de opțiune Option Button creează un buton rotund cu un
comportament identic cu cel al unui buton comutator ;
►grup de opțiune Option Group creează o casetă în care se pot
plasa butoane comutatoare, de opțiune sau casete de validar e. În cadrul unui
astfel de grup poate fi activ un singur obiect de control;
►buton de comandă Command Button creează un buton care la
selectare comută un eveniment ce execută o macro -instrucțiune sau o
procedură VB A;
►etichetăLabel creează o casetă ce conține un text fix de descrie re
;
►submachetă Subform atașează unei machete o submachetă deja
existentă .
180Pentru crearea manuală a unui formular se parcurg următorii pași:
1. stabilirea surselor de date care pot fi unul sau mai multe
tabele/interogă ri;
2. stabilirea tipului de formular dorit, în funcție de forma de afișare;
3. alegerea obiectelor de control necesare și configurarea lor conform cu
necesitățile de afișare și editare în cadrul formularului;
4. configurarea zonelor de antet și de subs ol atât la nivelul întregului
formular cât și la nivelul fiecărei pagini;
5. crearea unui subformular dacă este necesar;
6. adăugarea subformularului și crearea legăturilor cu formularul de
origine.
Pentru exemplificare vom construi un formular care să permită consultarea
tabeleiPRODUSE și actualizarea conținutului acesteia – adăugare, modificare și
ștergere înregistrări. Selectăm opțiunea Design View și alegem tabela PRODUSE ca
sursă de da te pentru formular – figura10.4.4.2.
Figura10.4.4.2 Aleger ea sursei de date pentru formular
După apăsarea butonului OK, noul formular va fi deschis în Design View și
alături de acesta se va afișa și o fereastră ce conține câmpurile tabelei PRODUSE .
Selectăm toate câmpurile acesteia după care tragem cu mouse -ulaceste câmpuri în
cadrul formularului – figura10.4.4.3.
Dacă nu dorim ca formularul să afișeze toate câmpurile tabelei atunci putem
selecta doar câmpurile dorite din lista care ne este pusă la dispoziție.
181
Figura10.4.4.3 Alegerea câmpurilor ce vor apărea în cadrul formularului
Comutăm în modul Form View iar formularul ce va fi afișat ar trebui să fie
asemănător cu cel prezentat în figura urmă toare– figura 10.4.4.4.
Figura10.4.4.4 Vizualizarea formularului în modul Form View
Formularul va afișa valorile ce se află în câmpurile tabelei pentru înregistrarea
curentă. Numărul acesteia ne este indicat în partea inferioară a ferestrei, alături de
butoanele ce pot fi folosite pentru trecerea la o nouă înregistrare.
Valorile afișate în cadrul form ularului pot fi modificate de către utilizator iar
aceste schimbări se vor salva automat în baza de date.
Zona din partea stângă a formularului este folosită pentru selectarea
înregistrării curente. Apăsarea tastei Delete va avea ca efect ștergerea respec tivei
înregistrări. Tot pentru ștergerea înregistrării curente se mai pot folosi opțiunile Delete
șiDelete Record ale meniului Edit.
Putem parcurge toate înregistrările unei tabele cu ajutorul formularelor
utilizând butoanele din partea de jos a formular ului.
182
Utilizatorul poate reveni în Design View pentru a schimba proprietățile
formularului și ale obiectelor afișate în cadrul acestuia. Text Box -urile pot fi
redimensionate și repoziționate, textul ce apare în bara ferestrei poate fi schimbat, etc.
După efectuarea tuturor modificărilor și validarea rezultatelor folosind modul de
vizualizare Form View , formularul ar trebui salvat astfel încât să fie posibilă utilizarea
lui ulterioară.
10.5 Proprietățile formularelor
Proprietățile formularelor sunt grupate în mai multe pagini și ele pot fi accesate
static cât și dinamic(prin scrierea de cod VBA). Ele pot fi accesate fie din
meniul contextual, unde se alege opțiunea Properties , fie din bara de
instrumente prin acționarea pictogramei specifice.
10.5.1 Pagina FORMAT
Cele mai utilizate proprietăți din această pagină, referitoare la forma de
prezentare a formularului, sunt:
►Caption reprezintă titlul formularului ce apare pe bara de titlu a acestuia.
Implicit, dacă această proprietate nu este completată, se va folosi ca titlu numele
formularului.
►Default Value – stabilește tipul formularului: Continous Form– mai
multe înregistrări în zona detail sauSingleForm– o singură înregistrare.
►Scroll Bars – specifică dacă există sau nu bare de derulare verticale sau
orizontale.
►Record Selectors – specifică dacă apare sau nu în stânga înregistrării
butonul de selecție al acesteia.
►Navigation Buttons – specifică dacă există sau nu, în partea de jos a
formularului, butoanele pentru deplasarea î ntre înregistrări. De asemenea sePentru a ne
poziționa
pe prima
înregistrare
a tabeleiPentru a ne
reîntoarce la
înregistrarea
anterioarăPentru a
trece la
înregistrarea
următoarePentru a ne
poziționa pe
ultima
înregistrare
a tabeleiPentru a adăuga o nouă
înregistrare în tabelă
183afișeazănumărul curent al înregistrării și câte înregistrări sunt în formular.
►Dividing Lines – specifică dacă există sau nu linii de separare a
înregistrărilor.
►Auto Resize – specifică dacă formularul își modifică forma , prin tragere
de margini, dacă se recalculează dimensiunile obiectelor conținute în formular.
►Auto Center – specifică dacă se poziționează sau nu formularul în
centrul ecranului.
►Border Style – se referă la marginile formularului și are ca valori:
-Sizable– formularul poate fi maximizat, minimizat sau i se poate schimba
forma prin tragere de margini;
-None–nu este valabilă nici una din facilitățile de mai
sus, si nu apare nici buton de închidere;
-Thin– caSizable, dar nu are margini de tragere;
-Dialog– e caNone dar are buton de închidere.
►Control Box – specifică dacă există sau nu caseta de
butoane din stânga barei de titlu (vezi figura alăturată).
►Min Max Button – specifică dacă apar sau nu
butoanele de maximizare și minimizare în Control Box .
►CloseButton– specifică dacă există sau nu butonul de
închidere a formularului.
►Width– stabilește lățimea formularului(nu a ferestrei de vizualizarea a
acestuia).
►What’s This Button – se poate seta la Yes numai dacă Min Max Button
esteNo,și în acest caz duce la introducerea în Control Box a butonului specific de
asistență( Help).
►Picture– se introduce adresa unei i magini ce va apărea pe fundalul
formularului.
►Picture Type – se stabilește dacă f ișierul cu imaginea este încapsulat sau
legat.
►Picture Size Mode – conține următoarele posibilități:
-Clip– imaginea este preluată la dimensiunile ei reale;
-Zoom– imaginea va fi mărită până la dimensiunea ferestrei formularului,
dar își păstrează proporțiile;
-Stretch– imaginea va fi mărită pentru a ocupa întreaga ferea stră a
formularului, dar nu își păstrează proporțiile.
►Picture Alignement – se stabilește unde se plasează imaginea în fereastra
formularului.
►Picture Tiling – setată la Yesduce la repetarea imaginii pentru a ocupa
întreaga suprafață a ferestrei formularu lui.
►Grid X, Grid Y – stabilește distanța dintre liniile grilei de proiectare a
formularului, exprimată în pixeli.
18410.5.2 Pagina DATA
Pagina Data conține informații referitoare la d atele formularului(vezi figura
10.5.2.1).
►Record Source – se alege tab ela sau cererea de care este legat formularul.
►Filter– se introduce o expresie care are rolul de a face o selecție a
înregistrărilor din sursă. Dacă se creează un filtru prin meniul Records când formularul
este în execuție, atunci va fi introdus automat î n această proprietate.
►Order By –se introduc câmpurile după care se sortează înregistră rile din
formular. Dacă se dorește o sortare descendentă se introduce numele câmpului urmat
de cuvântul DESC. Dacă sunt mai multe câmpuri de sortare ele se separă prin
caracterul „ ,”. Ca și la filtre. Dacă se stabilește un câmp de sortare, din meniul Records,
când formularul este în execuție, atunci câmpul respectiv va fi introdus automat în
această proprietate.
Figura10.5.2.1 Pagina Data
►Allow Filters, Allow Edits, AllowDeletions, Allow Additions – setate pe
No blochează comanda respectivă.
►Record Locks – are rolul de a stabili ce înregistrări se blochează atunci
când se lucrează în rețea. Posibilitățile de blocare oferite de si stem sunt:
-No Loks – înregistrările n u sunt blocate, toți utilizatorii putând scrie în
același timp în aceeași înregistrare;
-All Records – întreaga tabelă este blocată, numai un singur utilizator
având dreptul să efectueze modificări, ceilalți putând numai să citească datele din
tabela respec tivă;
-Edited Record – numai înregistrarea curentă este blocată.
18510.5.3 Pagina OTHER
În această pagină avem următoarele proprietăți(vezi fig ura 10.5.3.1):
Figura10.5.3.1Pagina Other
►Pop Up – specifică dacă fereastra formularului va fi sau nu deas upra
celorlalte ferestre.
►Modal– specifică dacă fereastra formularului este sau nu modală, adică
preia controlul și nu mai permite deschiderea altei ferestre până la închiderea
formularului.
►Cycle– stabilește care este ordinea de accesare a înregistrăril or când se
trece cu tasta Enter sauTab de la un control la altul. Dacă proprietatea este setată pe:
-AllRrecords– se va continua cu înregistrarea următoare;
-Current Record – se va reveni la primul control din aceeași înregistrare.
►Meniu Bar – conține nume le unei alte bare de meniu creată de proiectant,
care să înlocuiască meniul standard din Access.
►Toolbar– conține numele altei bare de instrumente creată de proiectant,
care să înlocuiască bara de instrumente standard din Access.
►Shortcut Menu – specifică dacă se va permite sau nu apariția meniului
contextual al formularului.
►Shortcut Menu Bar – conține numele meniului contextual creat de
proiectant, care să înlocuiască p e cel standard ce apare la execuția unui formular.
10.5.4 Pagina EVENT
Cele mai im portante evenimente ce se găsesc în pagina Event sunt:
►On Open șiOn Close se produc la deschiderea, respectiv închiderea
formularului. Aceste evenimente se folosesc pentru ca utilizatorul să confirme aceste
acțiuni.
186►On Load șiOn Unload – se produc la în cărcarea în memorie a
formularului, respectiv la eliberarea spațiului ocupat de el. Se produc după On Open
respectiv On Close.
►Before Update – se produce după modificarea înregistrării, atunci când se
iese din aceasta. Se folosește pentru verificarea unor anumite corelații între câmpurile
unei înregistrări și nu permite trecerea la o altă înregistrare dacă acestea nu sunt
corespunzătoare.
►After Update – se produce după modificarea înregistrării, atunci când se
iese din aceasta. Se folosește pentru a calcula anumite valori și a le introduce în
controale, la terminarea modificărilor dintr -o înregistrare.
►Before Insert șiAfter Insert – sunt la fel ca Before Update șiAfter
Update numai ca se produc când se introduc înregistrări noi.
►On Current – se produce câ nd se trece pe o altă înregistrare.
►On Timer – se produce dacă proprietatea Timer Interval este diferită de
zero.Dacă valoarea din Timer Interval este numerică, atunci aceasta va specifica
intervalele de timp, în milisecunde, la care se lansează metoda in trodusă la On Timer .
►On Click, On Dbl Click, On Mouse Down, On Mouse Up, On Mouse
Move– se produc la acțiunea mouse -ului pe formular.
►On Key Down, On Key UP, On Key Press – se produc la acț iunea
respectivă a tastaturii .
►On Error – se produce la o eroare d atorată datelor.
►On Got Focus, On Lost Focus – se produc la primirea/pierderea
focusului de către formular.
10.6 Controale uzuale folosite în construirea formularelor
Cele mai utilizate tipuri de controale folosite în proiectarea formularelor sunt
prezentate în continuare împreună cu proprietățile lor.
10.6.1 Caseta de text – Text Box
Caseta de text este un control case se poate lega la un câmp al unui tabel și
permite vizualizarea și actualizarea datelor din câmpul respect iv.
Pentru descrierea conțin utuluiText Box-ului, în partea stângă a acestuia este
adăugat în mod automat și un obiect de tip Label(etichetă) . Cele două controale pot fi
mutate concomitent sau se poate opta pentru deplasarea individuală a acestora prin
folosirea elementului aflat în dreptul colțului stânga sus. Cele mai utilizate proprietăți
ale casetei de text sunt:
1) Pagina FORMAT conține proprietățile prin care se configurează formatul și stilul
textului din casetă.
►Font Name – stabilește tipul de literă folosit. Fonturile care acceptă
diacriticele românești sunt cele cu terminația „ CE”.
187►Fore Color – stabilește
culoarea fontului.
►Font Size – stabilește
mărimea fontului.
►Font Weight – stabilește
grosimea fontului.
►Font Italic – literă înclinată.
►Font Underline – font
subliniat.
►Text Align – alinierea
textului în casetă.
►Border Style, Border Color,
Border Width – se folosesc pentru
configurarea marginii casetei.
►Special Effect – stabilește un
tip standardizat de margine a controlului,
și anume:
-Flat–plat;
-Raised– în relief;
-Sunken– îngropat;
-Etched– zgâriat;
-Shadowed – cu umbră;
-Chiseled– subliniat.
►Back Color – culoarea
fundalului casetei.
►Back Style – dacă fundalul este sau nu transparent.
►Format– stabilește tipul de afișare specific tipului de dată ce este stabilit
pentru câmpul de care este legat controlul.
►Decimal Places – pentru datele numerice stabilește numărul de zecimale.
►Visible– permite ca un control să poată fi făcut vizibil sau nu, în funcție
de un anumit context.
►Scroll Bars – dacă se atașează bara de derulare v erticală, în cazul în care
controlul conține mai multe linii.
►Left, Top, Wid th, Height – poziția și mărimea controlului pe ecran.
Aceste proprietăți se completează automat atunci când se aș ează contro lul pe ecran.
2) Pagina DATA
►Control Source – este cea mai importantă proprietate și conține numele
câmpului de care se leagă controlul.
188►Input Mask, Default Value,
Validation Rule, Validation Text –
funcționează la fel ca la proprietățile
câmpurilor. Dacă nu se completează se preiau
setările făcute pentru câmpul respectiv la
crearea tabelei.
►Enabled, Locked – stabilesc
permisiunea de intrare în control respectiv de
modificare a datelor din el. Avem următoarele
posibilități:
-Enabled=Yes șiLocked=No – se
poate intra in control și se modifică datele din
el;
-Enabled=No– nu se poate plasa cursorul în control;
-Enabled=Yes șiLocked=Yes– se poate poziționa cursorul în control, dar
nu se pot modifica datele din el;
-Enabled= No șiLocked=No – nu are sens, controlul apare șters.
3) Pagina OTHER
►Name– se introduce numele
controlului care se va folosi când se fac referiri
la el. Este indicat ca numele controlului să fie
același cu numele câmpului.
►Status Bar Text – când focusul
ajunge în control, apare pe bara de stare
textul introdus în control.
►Tab Stop – dacă este setată la Yes,
în momentul terminării introducerii datelor în
control, focusul se va poziționa pe următorul
control din secțiune.
►Auto Tab – trecerea de la un
control la altul se face când:
-se apasă tasta Enter sauTab;
-dacă proprietatea Auto Tab este
setată laYes trecerea la următorul control se face automat, după completarea datelor
din controlul respectiv.
►Enter Key Behavior – are sens numai daca controlul are mai multe
rânduri. Dacă această proprietate este setată la New Line in Field , atunci la
apăsarea tasteiEnter cursorul se va poziționa pe următoarea linie din control,
iar la apăsarea tastei Tab se va trece la următorul control.
►Shortcut Menu Bar –se poate crea un meniu contextual specific pentru
control prin comanda Customize .
189►Control Tip Text – va apărea textul introdus în această proprietate când se
poziționează mouse -ul deasupra controlului.
►Allow Auto Correct – dacă se setează la Yes determină efectuarea
automată a corecțiilor textului introdus.
4) Pagina Event conține aceleași proprietăți ca la formulare.
10.6.2 Lista ascunsă – Combo Box , listă derulantă – List Box
PrinCombo Box seînțelege un obiect combinat format dintr -o casetă de text și
olistă. Utilizatorul poate introduce o nouă valoare sau poate alege una din listă.
Controlul Combo Box are aceleași proprietăți și evenimente ca ale controlului Text
Box. Vom prezenta în continuare doar proprietățile specifice acestui control:
1)Pagina Format
►Column Count – specifică numărul de
coloane care apar la deschiderea listei.
►Column Hea d– specifică dacă se
afișează sau nu denumirea coloanelor.
►Column Width – stabilește lățimea
coloanelor.
►List Rows – stabilește numărul de
rânduri care se afișează la desfacerea listei, restul
accesându -se prin intermediul barelor de derulare.
►List Width – stabilește lățimea listei
derulante. Dacă aceasta este mai mică decât suma coloanelor af ișate, vor apărea barele
de derulare
2) Pagina Data
►Row Source Type – stabilește tipul
sursei de date ce va fi afișat în lista derulantă și
anume:
-Table/Query – câmpuri din altă tabelă
sau cerere;
-Value List – listă de valori;
-Field List – denumiri de câmpuri din
altă tabelă.
►Bound Column – stabilește numărul coloanei de legătură.
►Limit To List – dacă este setată la Yes nu se vor putea introduce în control
alte datedecât cele din lista derulantă.
►Auto Expand – dacă este setată la Yes atunci se caută și se afișează cea
mai apropriată denumire din listă care să aibă la început caracterele introduse, de la
tastatură, în control până în acel moment.
190Controlul List Box este asemănător cu Combo Box , dar lista nu este ascunsă, ci
este afișată tot timpul. Acest control are aceleași proprietăți specifice care au fost
prezentate mai sus.
10.6.3 Option Button, Check Box, Toggle Button
Toate aceste controale sunt booleene, ad ică vor lua două valori: True șiFalse.
Există însă posibilitatea ca o valoare booleană să poată fi și NULL.Pentru setarea
numărului de stări al valorilor booleene e xistă proprietatea Triple State care are două
valori:
-No, caz în care butonul are două stă ri:True șiFalse;
-Yes, caz în care butonul are trei stări: True,False șiNull.
10.6.4 Grup de opțiuni – Option Group
În controlul Option Group se pot introduce două sau mai multe controale
booleene. UnOption Group creează o casetă în care se pot pl asa butoane de opțiune
(option buttons ), butoane comutatoare ( toggle buttons ) sau casete de validare ( check
boxes).Specific acestui grup este ca la un moment dat numai unul din controalele
booleene poate fi True, celelalte devenind automat False.Câmpul d e care se leagă
acest control este de tip integer, valoarea conținută reprezentând numărul de ordine al
controlului boolean care este True în grup.
10.6.5 Eticheta – Label
Controlul Label este un control nelegat de un câmp și conține un text. Cea mai
importantă proprietate a acestui control este Caption care va conține textul ce va fi
afișat de control. Forma controlului se configurează la fel ca la Text Box.
10.6.6 Controale grafice – Line, Rectangle, Picture
Aceste controale sunt nelegate de câmp uri și vor crea figurile specificare în
numele lor(linii, zone dreptunghiulare, imagini).
10.6.7 Butonul de comandă – Command Button
PrinCommand Button înțelegem un buton prin a cărui apăsare vom genera un
eveniment la care putem asocia o serie de pre lucrări(să deschidem un nou formular, să
închidem aplicația, să efectuăm diferite calcule, etc) .Proprietățile pe care le vom
explicasunt:
►Caption– reprezintă textul ce apare afișat pe buton ;
►Name–semnifică numele controlului. Acest nume se folosește atunci
când vom asocia cod evenimentului ce se declanșează la apăsarea butonului.
19110.7 Intrebări
1. Ce este un formular?
Răspuns:
2. Care sunt secțiunile unui formular ?
Răspuns:
3. Cum se clasifică formularele după sursa de date ?
Răspuns:
4. Care sunt stările în care se pot gasi formularele ?
Răspuns:Un formular este o fereastră folosită în scopul adăugării, modificării,
ștergerii sau consultării datelor în/din tabelele unei bazei de date.
Secțiunile unui formular sunt:
-Detail- utilizată pentru a cu prinde corpul principal al unui formular.
-Form Header (antet de formular) – reprezintă partea de început a
unui formular.
-Page Header (antet de pagină) -afișeazăinformațiile cum ar fi un
titlu, date calendaristice, numere de pagină sau anteturile coloanelor în partea
superioară a fiecărei pagini imprimate.
-Form Footer (subsol al formularului) – reprezintă parte de sfârșit a
unui formular. Apare o singură dată și este utilizat pentru a afișa informații
care rămân aceleași pentru fiecare înregistrare, ca butoanele de comandă
-Page Footer (subsol de pagină) – afișează informații ca data sau
numărul paginii în partea inferioară a fiecărei pagini imprimate.
După sursa de date formularele pot fi :
-formulare legate – sunt formulare care permit afișarea sau
actualizarea datelor din tabele, direct sau prin intermediul unor cereri de
selecție ;
-formulare nelegate – sunt formulare destinate afișării sau editării
unordate care nu sunt stocate în tabele. Ele sunt folosite frecvent pentru
afișarea unor mesaje, vizualizarea unor informații despre sistem, preluarea
datelor necesare afișării unui raport etc.
1925. Cum se clasifică formularele după de modul de afișare ?
Răspuns:
6. Care sunt controalele folosite în proiectarea formularelor ?
Răspuns:
19310.8 Test grilă tema 10
1. În Access, din punctul de vedere al interfeței aplicației cu utilizatorul
formularul este un obiect:
a)de intrare;
b)de ieșire;
c)specializat pentru afișarea la imprimantă;
d)specializat pentru afișarea pe monitor;
e)a+b+d;
2. În Access, din punctul de vedere al relației existente între formular și tabelele
bazei de date (al rolului formularului) există:
a)Continous Forms;
b)Single Form;
c)formulare legate și formulare neleg ate de tabelele bazei de date;
d)formulare simple și multiple;
e)formulare legate și formulare nelegate de câmpurile tabelelor bazei de date;
3.În Access, care este cea mai importantă/importante secțiune/secțiuni ale unui
formular:
a)Form Header;
b)Form Footer;
c)Form Header și Form Foote r;
d)Form Footer și Detail;
e) Detail;
4. În Access, secțiunile unui formular sunt:
a)Form Header, Detail și Form Footer;
b)Form Header și Form Footer;
c)Design View și Form View;
d)Form Header, Form View și Form Footer;
e)Design View, Detail și F orm View;
5. În Access, stările unui formular sunt în număr de:
a)două: Design View – în proiectare; Form View – în execuție;
b)două: Design View – în execuție; Form View – în proiectare;
c)două: Design View – în proiectare și Datasheet View;
d)trei:Design View – în proiectare; Form View – în execuție; Datasheet;
e)trei:Design View – în proiectare; Form View – în execuție; Form Footer;
1946. În Access, care dintre afirmațiile următoare reprezintă definiția evenimentului
unui obiect:
a)un eveniment reprezintă doar o acțiune externă produsă asupra unui obiect, pe care
acesta o sesizează și la care poate acționa numai în cazul în care în prealabil s -a creat o
metodă specifică evenimentului, prin execuția acesteia;
b)un eveniment reprezintă o acțiune e xternă sau internă produsă asupra unui obiect, pe
care acesta o sesizează și la care poate acționa numai în cazul în care în prealabil s -a
creat o metodă specifică evenimen tului, prin execuția acesteia;
c)un eveniment reprezintă o acțiune externă sau int ernă produsă asupra unui obiect,
indiferent dacă acesta o sesizează sau nu;
d)un eveniment reprezintă posibilitatea de adaptare a caracteristicilor unui obiect în
funcție de contextul în care este folosit;
e)un eveniment reprezintă acțiunea de deschidere sau închidere a unui formular sau
raport;
7. În Access, care din următoarele afirmații este corectă:
a)Sectiunea Form Header a unui formular este prezentă în partea de sus a
formularului tot timpul cât se utilizează acesta, indiferent de tipul acestuia ;
b)Sectiunea Form Footer a "formularului continuu" nu este prezentă pe ecran decât
atunci când se ajunge la sfârșitul formularului;
c)în secțiunea Data a proprietăților formularului există proprietatea Control Source;
d)în secțiunea Data a proprietăți lor unui control Combo Box există proprietatea
Record Source;
e)în secțiunea Data a proprietăților unui control Text Box există proprietatea Record
Source;
8. În Access, care din următoarele afirmații nu este corectă:
a)prin proprietatea Default View di n secțiunea Format a proprietăților unui formular se
setează modul de vizualizare a înregistrărilor tabelei legate;
b)un control este un obiect programabil;
c)proprietatea Caption a unui formular nu se stabilește în fereastra Database;
d)proprietatea Ca ption a unui formular se folosește pentru a referi formularul respectiv
(eventual calificat ) de oriunde din baza de date;
e)proprietatea Record Source a unui formular permite legarea acestuia de o tabelă;
9. În Access, care din termenii următori desemn ează un formular continuu:
a) Continous Form;
b)Columnar Form;
c)Single Form;
d)Default Form;
e)nici una din variante;
19510. În Access, proprietatea Caption a unui formular :
a)se referă la titlul cu care formularul va fi afișa t în bara de titlu a ac estuia;
b)se referă la numele formularului;
c)se află în pagina Others a proprietăților formularului;
d)se află în pagina Data a proprietăților formularului;
e)se stabilește din fereastra Database;
11. În Access, care noțiuni desemnează una din secț iunile unui formular:
a) Form Footer;
b)Form Design;
c)Single Form;
d)Form Body;
e)Form Next;
12. În Access, un formular poate fi legat de :
a)un tabel, o cerere de selecție;
b)un tabel, un alt formular;
c)un tabel, o cerere Append Query;
d)un tabel, orice tip de cerere;
e)un tabel, o cerere Make -Table;
13. În Access, proprietatea Record Source a unui formular:
a)desemnează tabela sau cererea de care este legat formularul;
b)se află în secțiunea Format a proprietăților formularului;
c)seaflă în toate secțiunile proprietăților formularului;
d)nu este o proprietate a unui formular;
e)trebuie obligatoriu completată;
14. În Access, care din următoarele afirmații referitoare la formulare sunt
adevărate:
a)este un obiect de rang superior s pecializat în p rezentarea datelor pe monitor;
b)este un obiect care nu permite actualizarea datelor afișate;
c)poate fi legat sau încapsulat;
d)este un obiect doar de intrare;
e)este un obiect doar de ieșire;
15. În Access, care din următoarele afirm ații referitoare la evenimentele
formularelor sunt adevărate:
a)evenimentul "On Open", se produce la deschiderea formularului și nu poate fi
anulat;
b)evenimentele "On Close" și "On Unload", se produc la închiderea formularului și
sunt la fel;
196c)evenimentul "Before Update" se produce înainte de modificarea unei înregistrări din
formular;
d)evenimentul "After Update" se produce imediat după modificarea datelor dintr -un
câmp al unei înregistrări;
e)nici una din variante le de mai sus nu este corectă;
16. În Access, care din următoarele afirmații referitoare la evenimentele
formularelor sunt adevărate:
a)evenimentul "On Open", se produce la deschiderea formularului imediat după
evenimentul "On Load";
b)evenimentul "Before Update" nu este un eveniment al formularelor ci al controalelor
TextBox;
c)evenimentul "After Update" nu este un eveniment al formularelor ci al controalelor
TextBox;
d)evenimentul "On Timer" nu se produce dacă proprietatea "Timer Interval" este 0;
e)nici una din variantele de mai s us nu este corectă;
17. În Access, care din următoarele afirmații referitoare la evenimentele
formularelor sunt adevărate:
a)orice eveniment o dată produs nu mai poate fi anulat;
b)evenimentul "On Timer" se produce automat la fiecare secundă;
c)evenimentul "After Update" se produce întotdeauna după ce se trece de la o
înregistrare la alta;
d)dacă evenimentul "After Update" se anulează, se va bloca ieșirea din înregistrarea
curentă;
e)nici una din variante le de mai sus nu este corectă;
18. În Acces s, care din următoarele afirmații referitoare la evenimentele
formularelor sunt adevărate:
a)evenimentul "On Timer" se produce automat la fiecare minut;
b)numele evenimentelor se pot modifica prin proprietatea Caption;
c)evenimentul "On Current" produce modificarea tabelei de care formularul e legat;
d)evenimentul "On Unload", se produce când tabela de care e legat formularul nu are
înregistrări;
e)nici una din variantele de mai sus nu este corectă;
19. Controlul Text Box:
a)permite numai afișarea de informații și se poate lega de orice tip de câmp;
b)permite preluarea datelor dintr -o lista ascunsă;
c)are proprietatea Control Source;
d)nu este un obiect programabil;
e)numele controlului se setează prin proprietatea Caption;
197Bibliografie
[1].Alison Balter, Microsoft Office Access 2007 , Editura Pearson Education,
Indianapolis, United States, 2008
[2].Andrew Unsworth, Access 2007 in easy steps , Editura In Easy Steps Limited,
United Kingdom, 2007
[3].Brown A., Balter A., Bazele ACCESS 95 , Editura Teora ,1997.
[4].C. N. Prague, J. Reardon, L. Skasevich, Acces 2003 programare – curs fulger ,
Editura Teora, 2004
[5].Ed Bott, Woody Leonard, Microsoft Office XP , Editura Teora, 2004 .
[6].Felicia Ionescu, Baze de date relationale si aplicatii, Editura Tehnică. 2004
[7].Joe Habracken, Microsoft Access 2002 pentru începători , Editura Teora, 2003 .
[8].Luminița Șerbănescu, Baze de date relaționale. Aplicații Access, Editura
Paralela 45, 200 8
[9].Manole Velicanu, Ion Lungu, Constanța Bodea, Cristina Ioniță, G. Bădescu,
Sisteme de gestiu ne a bazelor de date , Editura Petrion, București, 2000.
[10].Mariana Miloșescu, Învață singur Microsoft Access , Editura Teora, 2002 .
[11].Pavel Nastase, Florin Mihai, Baze de date – Microsoft Access 2000 , Editura
Teora, 2002 .
[12].Steve Johnson, Microsoft Office Access 2003 , Editura Teora, București, 2003.
[13].Șerban Crișcotă, Proiectarea în Access a aplicațiilor informatice , Editura
Carminis, 2004.
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: 3Cursul de BAZE DE DATE este destinat studen ților Facultă ții deȘtiințe Economice a Universităț ii din Pite ști, forma de învățământ FRECVENȚ Ă… [613380] (ID: 613380)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
