You are on page 1of 134

Capitolul 3

PROGRAME DE CALCUL TABELAR

Sumar:

• Noţiuni de bază privind programele de calcul tabelar


• Principii de realizare a aplicaţiilor informatice în programele de calcul tabelar
• Categorii de funcţii din programele de calcul tabelar şi posibilităţi de utilizare în
simulări
• Facilităţi grafice în programele de calcul tabelar
• Baze de date şi tabele de simulare
2 Instrumente software pentru afaceri

3.1 NOŢIUNI DE BAZĂ PRIVIND PROGRAMELE DE CALCUL


TABELAR

3.1.1 Programe de calcul tabelar, foi de calcul, registre de lucru,


tipuri de date, formule, funcţii, comenzi, macro-comenzi
Programele de calcul tabelar sunt răspândite pe toate platformele. Unele sunt incluse în
pachete software integrate (Works, StarOffice, Ability Office etc.). Cele mai multe sunt
produse-program specializate (vezi tabelul nr. 3.1).
Tabelul nr. 3.1. Principalele programe de calcul tabelar
Nr. Denumire Platformă Observaţii
Crt
.
1 abs Linux
2 Applix Unix, Windows NT, Windows 95, Java
3 As Easy As DOS shareware, noi versiuni Windows
4 CliqCalc Unix, x-Windows
5 Java applet spreadsheet Java
6 Lucid 3-D Windows
7 NExS Linux/Unix
8 Spreadsheet 2000 Macintosh
9 Storeys Macintosh spreadsheet 3-D
10 Sum-It Macintosh
11 Visual Components Java Pt. Internet
12 Wingz Unix, Windows, Macintosh
13 XESS Spreadsheet Unix, VMS/OpenVMS, Windows NT
Sursa: http://www.j-walk.com/ss

Trei din programele de calcul tabelar deţin ponderea pe piaţă: EXCEL, LOTUS 1-2-3,
QUATTRO PRO.
LOTUS 1-2-3 a reprezentat în deceniul 8 standardul în programele de calcul tabelar.
Astăzi este, la distanţă bună, pe locul al doilea.
Liderul autoritar al pieţei programelor de calcul tabelar pentru PC-uri este Excel,
deţinând acum statutul de standard. Există implementări sub următoarele sisteme de operare
pentru microcalculatoare: Windows, OS/2, MacOS. EXCEL face parte din pachetul
\Microsoft Office şi este îmbunătăţit şi actualizat odată cu noile versiuni Microsoft Office.
Versiunea Excel 2003 este componentă Microdoft Office 11 şi include suport XML şi
facilităţi pentru analiza datelor (Add-in for SQL Server Analysis Services). Versiunea Excel
2007 dispune de noi funcţii de vizualizare a datelor şi prezintă extensii pentru gestiunea
electronică a documentelor şi Business Intelligence. Integrarea aplicaţiilor din Microsoft
Office 2007 (Outlook, Word, Excel, Power Point, SharePoint Server) oferă posibilitatea
accesării unui set complet de instrumente pentru lucrul colaborativ.
Programe de calcul tabelar 3

Versiuni EXCEL întâlnim şi pentru minicalculatoare sau mainframe-uri. EXCEL este


componentă a Office Vision sub OS/400 pentru minicalculatoarele AS/400 şi sub MVSE
(Multiple Virtual Storage) pentru mainframe-uri IBM 9370.

Instrumentul specific de lucru al programelor de calcul tabelar este centralizatorul


electronic (foaia de calcul). Centralizatorul electronic reprezintă un tabel de dimensiuni foarte
mari, structurat în linii şi coloane, în care se pot defini simplu modelele de rezolvare a
problemelor. În literatura de specialitate de la noi este întâlnit şi sub alte denumiri: foaie de
calcul electronică, tabel electronic sau chiar "spreadsheet", după denumirea din limba engleză.
În literatura de specialitate din alte ţări apare, de asemenea, sub diverse denumiri: spreadsheet
(worksheet) în engleză, feuille de calcul electronique, respectiv tableur în franceză, chiffreur în
franceza canadiană, hoja de calculo în spaniolă.
Foaia de electronică de calcul oferă posibilităţi de introducere a datelor şi definire a
modelelor, posibilităţi de calcul, posibilităţi de vizualizare, posibilităţi de exprimare grafică,
posibilităţi de simulare etc. (vezi fig. nr. 3.1).
Registrul de lucru sau agenda de lucru (workbook) este un fişier cu extensia .xls în
care sunt stocate modelele definite şi datele în Excel. Un registru de lucru poate conţine mai
multe foi de calcul (sheet, worksheet), ceea ce permite reunirea şi organizarea unor tipuri
variate de informaţii într-un singur fişier. Astfel, un grafic poate fi plasat în foaia de calcul ce
conţine datele sursă sau într-o foaie distinctă (chart sheet) care va fi inclusă în registrul de
lucru. În Excel, numele foilor de calcul apar în partea de jos a ferestrei de lucru (vezi fig. nr.
3.2), având asociate implicit numele Sheet1, Sheet2 ş.a.m.d., nume pe care utilizatorul le
poate modifica după dorinţă. Când se execută clic pe numele unei foi de calcul, această
devine foaia de calcul curentă.
Fiecare căsuţă (casetă, celulă) poate fi referită printr-o adresă (referinţă) care indică
linia şi coloana la întretăierea căreia se află. Sunt două stiluri practicate pentru specificarea
adreselor:
• stilul consacrat de LOTUS: A1; A2; F5; …;IV65536;
• stilul consacrat de MULTIPLAN: R1C1; R2C1; R5C6; …;R65536C256.
În mod implicit, EXCEL utilizează stilul A1, în care coloanele sunt identificate cu o
literă (de la A la IV, pentru cele 256 de coloane), iar liniile cu numere (de la 1 la 65536). Se
poate trece la stilul R1C1, prin comanda Options din meniul Tools, din care se selectează
opţiunea R1C1 reference style din pagina General. Acest stil este util atunci când se lucrează
cu macrouri, deoarece face posibilă calcularea poziţiei rândurilor sau coloanelor din foaia de
calcul. Pentru a face referire la un grup de căsuţe, se vor indica adresa colţului stânga-sus şi
adresa colţului dreapta-jos ale zonei de specificat, separate prin caracterul: (două puncte).
4 Instrumente software pentru afaceri

Indicator căsuţă curentă

Linja de editare Panou comenzi directe

Fig. nr. 3.1. Model de analiză a rentabilităţii pe produse în EXCEL

foi de calcul
foaia de calcul
curentă

deplasare la următoarea/precedenta foaie de calcul

deplasare la prima/ultima foaie de calcul

Fig. nr. 3.2. Dispunerea foilor de calcul într-un registru de lucru


Într-o foaie de calcul se pot referi şi date din alte foi de calcul ale aceluiaşi registru, sau
chiar din alt registru de lucru. În acest caz, adresa căsuţei va fi precedată de numele foii de
calcul (având ca separator caracterul !), iar dacă este dintr-un alt registru, se va specifica şi
numele acestuia, între paranteze pătrate (vezi exemplele de mai jos).
Exemple:
• A20 (căsuţa aflată pe coloana A şi pe rândul 20)
• F10:F20 (grupul de căsuţe de pe coloana F, pe rândurile de la 10 la 20)
Programe de calcul tabelar 5

• B12:E12 (grupul de căsuţe de pe rândul 12, pe coloanele de la B la E)


• 6:6 (toate căsuţele de pe rândul 6)
• 4:8 (toate căsuţele de pe rândurile de la 4 la 8)
• C:G (toate căsuţele de pe coloanele de la C la G)
• Studenti!C5 (căsuţa C5 din foaia de calcul Studenti, din acelaşi registru)
• [d:\utilizatori\isa.xls]Evaluare!D2 (căsuţa D2 din foaia de calcul Evaluare, din registrul de
lucru salvat în fişierul isa.xls)
Programele de calcul tabelar lucrează, în principiu, cu două tipuri esenţiale de date:
date numerice şi date tip şir de caractere. Sistemul detectează tipul datei după natura primului
caracter introdus sau după conţinut. În principiu, dacă primul caracter este o literă data este
considerată de tip şir de caractere, dacă începe cu o cifră data este considerată de tip numeric.
Programele de calcul tabelar gestionează şi date calendaristice: intern ele sunt
reprezentate ca valori numerice, iar afişarea se poate face în diferite formate. De exemplu,
pentru ca raportul din fig. nr. 3.1 să conţină data calendaristica de 11-Feb-06, trebuie ca în
caseta B3 să introducem numărul 38759 (vezi fig. nr. 3.3) şi să solicităm prin comanda
Format, Cells afişarea ca dată calendaristică.
De regulă, Excel recunoaşte o dată calendaristică atunci când este introdusă în formatul
ll/zz/aa. Astfel, 01/25/06 va fi interpretat ca data de 25 ianuarie 2006. În legătură cu
specificarea anului prin ultimele două cifre, se aplică următoarele reguli:
• anii 2000 – 2029 sunt recunoscuţi atunci când se scriu valorile 00, 01, …, până la 29
(spre exemplu, 5/21/23 este interpretat ca 21 mai 2023);
• anii 1930 – 1999 sunt recunoscuţi atunci când se scriu valorile 30, 31, …, până la 99.
Trebuie precizat că programul de calcul tabelar Excel poate lucra cu 2 sisteme pentru
date calendaristice: sistemul 1900 (utilizat implicit de Excel pentru Windows) şi sistemul
1904 (utilizat implicit de Excel pentru Macintosh). În sistemul 1900, pentru 1 ianuarie 1900
corespunde valoarea numerică 1, iar pentru 31 decembrie 9999 valoarea 2958465. Sistemul
1904 începe numărătoarea cu 2 ianuarie 1904, ce are asociată valoarea 1 şi o finalizează cu
31 decembrie 9999, pentru care asociază valoarea 2957063. Pentru a schimba sistemul 1900,
din meniul Tools se alege Options, unde se alege opţiunea 1904 date system din pagina
Calculation.
Conţinutul unei căsuţe poate fi şi o formulă sau o funcţie. Formulele şi funcţiile încep
printr-un caracter special: =; +; -; @ etc. Prin intermediul formulelor se poate exprima o mare
diversitate de calcule. De fapt, formulele şi funcţiile sunt elementele esenţiale ale
centralizatorului electronic, din care derivă performanţa şi capacităţile de simulare. Printr-o
formulă se defineşte conţinutul unei căsuţe în funcţie de conţinutul altor căsuţe. Relaţia
rămâne adevărată pentru orice conţinut al căsuţelor folosite ca argumente în formule. Dacă se
schimbă conţinutul căsuţelor folosite ca argumente, instantaneu se modifică şi conţinutul
căsuţei care conţine formula. Modelul prezentat în fig. nr. 3.3 poate fi utilizat în analiza
rentabilităţii mai multor categorii de produse. Este suficient să introducem datele de intrare,
iar pe baza formulelor existente vom obţine imediat rezultatele. Întrucât graficul din fig. nr.
3.1. este construit pe baza datelor din prima parte a modelului, de fiecare dată se va modifica
6 Instrumente software pentru afaceri

şi graficul. Dacă sunt mai multe produse vom trece la inserarea de linii, respectiv la copierea
formulelor deja introduse.

Fig. nr. 3.3. Formule şi funcţii utilizate în modelul de rezolvare EXCEL


O formulă/ funcţie care specifică o relaţie de calcul valabilă pentru mai multe rânduri
sau coloane poate fi copiată; adresele căsuţelor se vor actualiza corespunzător. În cazul
mutării unei formule, adresele nu se actualizează. Astfel, dacă formula =D5-C5 din E5 este
copiată în E6 ea devine =D6-C6. Acest tip de adrese se numesc adrese relative. În schimb,
dacă se copie formula =E5*$F$3 din G5 în G6 aceasta devine =E6*$F$3 şi nu =E6*F4.
Adresa $F$3 face parte din categoria adreselor absolute.
Dacă dorim ca o căsuţă să conţină aceeaşi valoare ca şi o altă căsuţă, se va introduce
semnul egal, urmat de adresa căsuţei ce conţine valoarea respectivă. Căsuţa ce conţine
această formulă se numeşte căsuţă dependentă: atunci când se modifică valoarea din căsuţa
referită, ca efect al recalculării automate, se va modifica şi conţinutul căsuţei dependente.
Corectarea formulelor introduse, ştergerea conţinutului unor căsuţe sau grupuri de
căsuţe se poate face la fel de simplu şi rapid ca în procesoarele de texte. Pentru corectare se
utilizează linia de editare (vezi fig.nr. 3.1), care se apelează prin executarea unui clic sau prin
apăsarea tastei F2. Ştergerea se realizează cu ajutorul tastelor Delete sau Backspace.
De asemenea, există posibilitatea atribuirii de nume unor căsuţe sau grupuri de căsuţe
astfel că scrierea formulelor devine mai simplă, mai rapidă şi mai aproape de logica
problemei de rezolvat. De exemplu, =SUM(costuri); =SUM(preturi); =SUM(profit) sunt
mult mai semnificative din punct de vedere al analizei rentabilităţii decât =SUM(C5:C7);
Programe de calcul tabelar 7

=SUM(D5:D7); =SUM(E5:E7) (vezi fig.nr. 3.3). În acest scop, grupului C5:C7 i se atribuie
numele costuri, grupului D5:D7 i se atribuie numele preturi, iar grupului E5:E7 i se atribuie
numele profit.
Funcţiile reprezintă formule predefinite în sistem. Utilizatorul trebuie doar să specifice
numele funcţiei şi argumentele, respectând regulile de sintaxă. Numărul şi natura
argumentelor depind de tipul funcţiei: matematice, logice, financiare, statistice, pentru baze
de date, pentru date calendaristice etc. În fig. nr. 3.3 s-a exemplificat utilizarea funcţiei SUM.
În locul funcţiei =SUM(C5:C7) se putea folosi şi formula: =C5+C6+C7.
La fel ca limbajele de programare din generaţiile anterioare, programele de calcul
tabelar dispun de comenzi şi macro-comenzi prin care se pot defini şi declanşa anumite
operaţiuni sau parametri (inserare de linii, coloane, căsuţe etc.; stabilire parametri de format;
gestionare ferestre de afişare etc.).
Comenzile permit declanşarea unor operaţiuni în foaia de calcul şi sunt desemnate prin
cuvinte cheie. Comenzile sunt grupate în meniuri şi submeniuri cu mai multe niveluri. În
versiunile sub MS-DOS se utilizau, de obicei, meniuri tip linie. În versiunile sub Windows se
utilizează meniuri derulante (vezi fig. nr. 3.4). Concomitent se asigură posibilitatea folosirii
rapide a comenzilor mai des întâlnite prin intermediul pictogramelor din liniile de
instrumente afişate în partea superioară a ecranului. De asemenea, există şi posibilitatea
definirii şi utilizării de linii de instrumente personalizate.

Fig. nr. 3.4. Secvenţă din sistemul de comenzi EXCEL

Macro-comenzile (macro-urile) sunt similare instrucţiunilor şi comenzilor din


limbajele de programare clasice şi permit descrierea grupurilor de operaţiuni repetitive. În
acest fel nu mai este necesară repetarea comenzilor ci doar apelarea modulelor de program
realizate. Modulele de program pot fi asociate unor combinaţii de taste, unor obiecte sau pot
fi organizate în meniuri şi submeniuri similare celor oferite de sistem. Primele versiuni ale
programelor de calcul tabelar utilizau un limbaj de macro-uri asemănător limbajelor de
asamblare (se bazau pe mnemonice obţinute din iniţialele comenzilor). Ultimele versiuni
folosesc ca limbaj de macro-uri un limbaj evoluat (ex. EXCEL foloseşte limbajul Visual
Basic for Applications). În plus, oferă şi posibilitatea înregistrării automate a macro-urilor. În
figura nr. 3.5 se exemplifică un modul de program pentru inserarea datei calendaristice în
EXCEL.
8 Instrumente software pentru afaceri

Fig. nr. 3.5. Exemplu de macro-comenzi EXCEL


Dacă iniţial programele de calcul tabelar se bazau doar pe utilizarea facilitaţilor oferite
de foile de calcul, pe măsura evoluţiei ele au devenit instrumente software integrate. Asfel un
program de calcul tabelar integrează, în general, instrumente destinate următoarelor lucrări:
• definirea modelelor în foile de calcul;
• reprezentarea grafică a datelor din modelele definite;
• crearea şi editarea de obiecte grafice (Drawing toolbar);
• gestiunea bazelor de date (liste);
• definirea de programe, utilizând tehnica macro-urilor;
• instruire sau facilităţi de tip Help;
• navigare Web;
• import/export de date de la/ către alte programe (SGBD-uri, procesoare de texte,
programe de prezentare).

3.1.2 Sistemul de ajutor


La fel ca majoritatea aplicaţiilor din categoria 4GL, programele de calcul tabelar se
învaţă lucrând. În cazul Excel, se oferă asistenţă interactivă extinsă, îmbunătăţită de la o
versiune la alta. Astfel, utilizatorul are 2 alternative pentru a obţine rapid informaţia solicitată
(vezi şi fig. nr. 3.6):
• formularea unei întrebări (meniul Help, opţiunea Microsoft Excel Help sau
Office Assistant din linia de instrumente);
• obţinerea de informaţii despre elementele afişate pe ecran (meniul Help,
opţiunea What’s this sau butonul Help contextual din linia de instrumente).

Help contextual

Fig. nr. 3.6. Linia de instrumente Standard. Butoanele Help


Programe de calcul tabelar 9

O modalitate prietenoasă de a obţine informaţii interactiv este dialogul cu asistentul


(Office Assistant), care se poate apela din meniul Help, din linia de instrumente sau prin
apăsarea tastei F1. În toate produsele Microsoft Office forma asistentului se poate alege din
galeria sistemului (vezi fig. nr.3.7).

Fig. nr. 3.7. Caseta de dialog pentru alegerea formei pentru Office Assistant

Dialogul cu asistentul arată ca în fig. nr. 3.8. Utilizatorul va formula întrebarea şi o va


specifica în caseta text, după care va lansa comanda Search.

Fig. nr. 3.8. Dialogul cu asistentul în EXCEL


În fine, utilizatorul poate afla explicaţii despre ceea ce este afişat pe ecran folosind
sistemul de help contextual, care se apelează din meniul Help (opţiunea What’s this), din
linia de instrumente sau prin combinaţia Shift-F1.
La apelarea acestei opţiuni cursorul îşi modifică aspectul, ataşându-i-se un semn de
întrebare. Dacă se doresc explicaţii asupra semnificaţiei unui element de pe ecran, se plasează
indicatorul mouse-ului pe
elementul respectiv şi se execută
clic. Este exemplificată alături o
astfel de explicaţie, pentru
comanda asociată butonului
Format Painter din linia de
instrumente standard.
10 Instrumente software pentru afaceri

Trebuie precizat ca help-ul contextual rămâne activ până la selectarea unui element
pentru care se doresc explicaţii. El mai poate fi dezactivat prin apăsarea tastei Esc sau prin
clic pe butonul corespunzător din linia de instrumente.
O variantă a help-ului contextual este Tooltip prin care se afişează numele comenzilor
asociate butoanelor din liniile de instrumente de pe ecran atunci când indicatorul mouse-ului
este poziţionat pe un buton. Această opţiune (Show Tooltips) poate fi activată sau inhibată din
meniul View, Toolbars.

3.1.3 Puncte forte ale programelor de calcul tabelar


Programele de calcul tabelar reprezintă instrumentul ideal de lucru în domeniile în care
sunt de efectuat calcule multiple şi de întocmit rapoarte sub diferite forme. Domeniul
gestiunii întreprinderilor este un domeniu privilegiat din acest punct de vedere. Larga
răspândire a programelor de calcul tabelar este susţinută de următoarele puncte forte:
(i) recalcularea automată a rezultatelor formulelor şi funcţiilor;
(ii) simulările;
(iii) rearanjarea automată a liniilor/coloanelor după actualizare;
(iv) posibilităţi de afişare a datelor în diferite formate;
(v) implementarea de funcţii financiare, statistice, speciale etc.;
(vi) posibilităţi de automatizare a unor sarcini;
(vii) instrumente de lucru orientate către utilizatorul final.
(viii) posibilităţi de personalizare a modelelor definite.
Recalcularea automată a rezultatelor formulelor şi funcţiilor oferă posibilitatea
vizualizării rapide a influenţei modificării conţinutului căsuţelor referite. De reţinut că efectul
recalculării este vizibil numai dacă la scrierea formulelor şi funcţiilor nu s-au folosit
constante. Formulele şi funcţiile pot fi oricât de complexe, ele pot face referinţă la căsuţe care
la rândul lor conţin alte formule sau funcţii. De asemenea, funcţiile pot avea ca argumente
alte funcţii. În acest fel modelele definite pot deveni destul de complexe. Recalcularea
automată determină ca atunci când se modifică valoarea unei căsuţe care este referită în
anumite formule sau funcţii, imediat se va modifica şi rezultatul dat de aceste formule sau
funcţii.
Simulările. Simulările au ca punct de plecare recalcularea automată prezentată mai sus.
Programele de calcul tabelar sunt considerate sisteme suport pentru decizii de nivel
elementar, ca instrumente de analiză şi previziune la îndemâna oricărui manager. Orice
formulă sau funcţie permite obţinerea de răspunsuri rapide la întrebări de tipul: CE-AR FI
DACĂ? (What If?). Folosind datele din fig. nr. 3.1 să ne punem întrebarea: "Care ar fi
profitul actualizat dacă indicele de inflaţie ar fi 1.25?" Dar dacă indicele de inflaţie ar fi
1.10? Răspunsul îl obţinem imediat în coloana G dacă în căsuţa F3 introducem pe rând
valorile: 1.25; 1.10.
Există şi posibilitatea construirii de modele de simulare mai complexe prin tehnici cum
sunt: tabele de simulare cu una sau mai multe variabile şi formule, căutare rezultat final (Goal
Programe de calcul tabelar 11

Seek), utilizarea funcţiei de rezolvare (Solver), gestiunea scenariilor, simulări pe bază de


grafice etc.
Rearanjarea automată a liniilor/coloanelor după actualizare. După operaţiunile de
inserare sau ştergere de linii şi sau coloane, sistemul face automat renumerotarea acestora şi
actualizarea adreselor de căsuţe utilizate în formule şi funcţii. Astfel utilizatorul este scutit de
sarcina verificării modelului actualizat.
Afişarea datelor în diferite formate. Programele de calcul tabelar lucrează cu 2 tipuri
de date: numerice şi tip şir de caractere.
Datele de tip şir de caractere pot fi aliniate la stânga, la dreapta sau la centrul căsuţei.
Versiunile noi permit formatarea datelor ca în procesoarele de texte (modificarea fontului;
asocierea de atribute - bold, italic, underline etc.; modificarea mărimii fonturilor; scrierea
textului pe mai multe rânduri în aceeaşi căsuţă, definirea şi utilizarea stilurilor etc.).
Datele numerice au un format implicit (General), ce poate fi modificat oricând de către
utilizator, cum se va arăta în continuare. Câteva din formatele utilizate sunt expuse mai jos:
• Number - afişare în virgulă fixă, cu sau fără delimitarea grupurilor de 3 cifre
printr-un caracter special (spaţiu, punct, virgulă), cu sau fără zecimale (ex.
43,750.00);
• Scientific - afişare în format ştiinţific (virgulă mobilă) (ex. 4.38E+04);
• Text - afişarea şi tratarea oricărei valori ca un text (şir de caractere);
• Percentage - afişarea numărului în format procentual (înmulţeşte valoarea din
căsuţă cu 100 şi afişează semnul %) (ex. 0.2333 va fi afişat 23.33%);
• Date - afişează valoarea numerică din căsuţă în formatul de dată calendaristică
cerut.
În Excel, meniul Format, grupează comenzile pentru formatare astfel: la nivel de
căsuţă/grup de căsuţe (opţiunea Cells), de rând (Row) sau coloană (Column) ori la nivelul
întregii foi de calcul (Sheet). Sunt incluse de asemenea opţiuni pentru utilizarea formatelor
predefinite (Autoformat), pentru formatarea condiţională, doar a anumitor căsuţe (Conditional
formatting) şi pentru aplicarea de stiluri (Style).
culoare de fond
formatare indentare
atribute font aliniere culoare
tip şi mărime font numere text font

stabilire număr de linii de demarcaţie


poziţii zecimale

Fig. nr. 3.7. Linia de instrumente Formatting

Cel mai adesea, utilizatorii preferă lansarea comenzilor de formatare din linia de
instrumente (vezi fig. nr. 3.7), după ce au selectat în prealabil căsuţa/grupul de căsuţe care se
formatează. Dacă linia de instrumente Formatting lipseşte de pe ecran, afişarea se face prin
selectarea acesteia după lansarea comenzii View, Toolbars. Butoanele pentru atributele
12 Instrumente software pentru afaceri

fontului sunt de tip comutator (activare/inhibare), iar la cele pentru aliniere, utilizatorul poate
selecta doar unul, corespunzător tipului de aliniere dorit. Butoanele care sunt urmate de
simbolul  arată posibilitatea de a deschide o listă ascunsă, ce conţine mai multe opţiuni.
Stabilirea formatului de afişare a datelor. În funcţie de tipul datei, se poate stabili un
mod de afişare diferit de cel implicit. Lista formatelor disponibile este prezentată în fig. nr.
3.8, într-o fereastră de dialog ce se afişează la comanda Format, Cells, pagina Number.
Pentru fiecare categorie din listă, trebuie definite opţiuni specifice, cum ar fi numărul de
zecimale, utilizarea separatorului pentru grupurile de 3 cifre, semnul monetar (la formatul
Currency), modul de specificare a datei calendaristice sau orei etc.

Fig. nr. 3.9. Fereastra de dialog Format Cells


În mod implicit, în Excel, marca zecimală este punctul, iar separarea grupurilor de 3
cifre se face prin virgulă (vezi fig. nr. 3.9).
Formatul Text este utilizat atunci când se doreşte ca anumite date să fie tratate ca texte.
Odată stabilit acest format, numerele înscrise în căsuţele respective nu vor putea fi utilizate în
relaţii de calcul, iar revenirea la formatul numeric presupune o procedură ceva mai
complicată, nu doar o simplă modificare a formatului.
În cazul în care se lucrează cu date numerice speciale, cum ar fi numerele de telefon
sau codurile poştale, se poate utiliza categoria de format Special, prin care datele rămân de tip
numeric, dar se afişează corespunzător (spre exemplu, zero-urile nesemnificative, care de
obicei nu se afişează, vor fi afişate).
Un utilizator îşi poate defini formate de afişare proprii, specifice cerinţelor sale. Aşa
cum se observă în fig. nr. 3.9, ultima categorie de format se intitulează Custom şi permite
crearea de noi formate. Există şi o listă de formate predefinite, dintre care utilizatorul poate
alege sau pe care le poate modifica, iar dacă nici unul nu corespunde cerinţelor, acesta poate
defini un format nou. Se vor utiliza coduri prin care se va indica modul de afişare a datei
respective. Fig. nr. 3.10 exemplifică un format definit de utilizator, în care s-a cerut afişarea
împreună cu valoarea numerică, a textului “mil. lei”.
Programe de calcul tabelar 13

Fig. nr. 3.10. Fereastra de dialog pentru definirea unui format propriu

Fig. nr. 3.11. Fereastra de dialog pentru alegerea unui format predefinit
Folosirea formatelor predefinite pentru liste/tabele. După selectarea zonei care
conţine datele se va selecta din meniul Format, comanda Autoformat, care afişează lista
formatelor predefinite. Trebuie precizat că la aplicarea unui astfel de format, Excel analizează
zona selectată şi aplică formatele în funcţie de conţinut, identificând zona de antet, cea de
total sau subtotaluri. De asemenea, este posibil să se aplice doar anumite aspecte ale
formatului predefinit (vezi fig. nr. 3.11), mai precis cele selectate de utilizator (implicit, sunt
selectate toate). Dacă se doreşte renunţarea la un format predefinit, se va selecta din nou zona
respectivă şi se va alege din lista formatelor opţiunea None.
Formatarea cu ajutorul stilurilor. Excel oferă posibilitatea utilizării stilurilor pentru
formatare, prin comanda Format, Styles. Utilizatorii pot aplica un stil existent, pe care îl pot
eventual adapta cerinţelor lor, modificând doar unele aspecte (font, aliniere, format de afişare
etc.), folosind opţiunea Modify (vezi fig. nr. 3.12).
14 Instrumente software pentru afaceri

Fig. nr. 3.12. Fereastra de dialog Style


Un format stabilit pentru o căsuţă poate fi copiat pentru a formata la fel şi alte căsuţe.
Se va utiliza comanda Format Painter din linia de instrumente Standard, care se alege după
selectarea căsuţei care are formatul ce se va copia. Se execută apoi clic pe căsuţa în care se
copie formatul respectiv.
Formatarea condiţională (selectivă) se referă la formatarea doar a acelor date care
îndeplinesc condiţiile specificate prin comanda Format, Conditional Formatting, lansată
după selectarea căsuţelor ce se formatează.
În fig. nr. 3.13 s-a exemplificat un raport asupra vânzărilor dintr-o perioadă, în care s-
au pus în evidenţă facturile neîncasate. Pentru a obţine această evidenţiere, s-a selectat zona
E5:E12, după care s-a lansat comanda arătată mai sus, precizând condiţia care trebuie
îndeplinită şi formatul dorit pentru zona selectată. Aşa cum se observă în fig. nr. 3.13, se
alege opţiunea Formula Is şi se precizează condiţia (=$E5=0), iar apoi se alege formatul dorit
(opţiunea Format, Pattern, Color Orange).

Fig. nr. 3.13. Exemplu formatare condiţională


Programe de calcul tabelar 15

Fig. nr. 3.14. Definirea unui format condiţional. Exemplu 1


Un alt exemplu de formatare selectivă, pornind de la acelaşi caz, este evidenţierea
facturilor care au valori mai mari de 1000000 lei. În acest caz se va selecta doar zona
D5:D12, iar la comanda de formatare (vezi fig. nr. 3.15) se va alege opţiunea Cell Value Is,
operatorul “greater than or equal to” (mai mare sau egal), se va specifica valoarea şi apoi se
va alege formatul dorit pentru valorile care îndeplinesc condiţia (Format, Font, Bold,
Underline).
De precizat că prin opţiunea Add>> se adaugă încă o condiţie în funcţie de care se va
face validarea (se pot include maximum 3 condiţii), iar prin opţiunea Delete se poate elimina
o condiţie.

Fig. nr. 3.15. Definirea unui format condiţional. Exemplu 2


Implementarea de funcţii financiare şi statistice este un alt atu al programelor de
calcul tabelar. Numărul de funcţii variază în funcţie de versiune. Toate programele de calcul
tabelar au implementate funcţiile statistice standard (AVERAGE - medie aritmetică; COUNT
- contorizare; MAX - determinare maxim; MIN - determinare minim; STDEV - abatere medie
pătratică; VAR - dispersie). În plus, există funcţii statistice pentru baze de date, foarte utile în
analize economice. Funcţiile financiare pot fi împărţite în: funcţii pentru analize economico-
financiare, funcţii pentru calculul amortizării, funcţii pentru calculul anuităţilor, alte funcţii
financiare. Unele versiuni dispun de asistenţi de funcţii care încorporează paşii de parcurs în
utilizarea funcţiei.
Posibilităţile de automatizare a sarcinilor se concretizează în crearea şi utilizarea de
module de program prin intermediul macro-urilor. Astfel, prelucrările repetitive pot fi
aplicate rapid şi eficient, fiind necesară definirea lor o singură dată. Limbajul de macro-uri
este uşor de utilizat şi constituie un instrument util la dispoziţia celor interesaţi. În versiunile
mai recente ale programelor de calcul tabelar există şi posibilitatea înregistrării automate a
macro-urilor.
16 Instrumente software pentru afaceri

Posibilităţile de transpunere grafică a datelor din foile de calcul. Graficele sunt


extrem de uşor de realizat. După introducerea datelor în foaia de calcul, cu ajutorul meniului
corespunzător, utilizatorul defineşte un grafic în forma dorită (liniar, histogramă, diagramă de
structură sau combinaţii între acestea), iar graficul este rapid vizualizat. Orice modificare a
datelor în foaia de calcul este reflectată imediat de modificarea graficului, iar în ultimele
versiuni este posibilă şi modificarea inversă. Noile versiuni ale programelor de calcul tabelar
oferă peste 100 de tipuri de grafice în format 2D şi 3D. În plus, utilizatorul este ajutat de un
asistent în realizarea graficelor (Chart Wizard).
Posibilităţile de personalizare a modelelor definite sunt date de combinarea
facilităţilor prezentate anterior. În plus se pot defini module de dialog, linii de instrumente, se
pot adăuga elemente grafice proprii sau importate etc.
Programe de calcul tabelar 17

3.2 PRINCIPII DE REALIZARE A APLICAŢIILOR INFORMATICE ÎN


PROGRAMELE DE CALCUL TABELAR

3.2.1 Reguli de respectat în proiectarea şi utilizarea aplicaţiilor în


programele de calcul tabelar
Programele de calcul tabelar reprezintă instrumente orientate către utilizatorii finali,
care oferă modele şi tehnici de lucru apropiate de modalităţile curente de rezolvare a
problemelor. Astfel, proiectarea aplicaţiilor este la latitudinea utilizatorilor. Dar realizarea de
aplicaţii eficiente şi interschimbabile solicită respectarea anumitor reguli1.
R1. În formule şi funcţii se recomandă să nu se folosească ca argumente constantele. În
principiu, orice formulă sau funcţie reprezintă un potenţial model de simulare. Utilizarea
constantelor ca argumente elimină, din start, acest potenţial. Reutilizarea modelului va
solicita de fiecare dată rescrierea formulelor sau funcţiilor. Dacă modelul de rezolvare
presupune utilizarea unor constante, acestea vor fi plasate în căsuţe distincte şi vor fi apelate
prin referinţe absolute.
R2. Dimensionarea mărimii liniilor şi coloanelor se face în funcţie de datele cele mai
semnificative şi nu de construcţiile cu rol explicativ din antetul de linie sau coloană. Se
recomandă ca această operaţiune să fie efectuată la terminarea construirii modelului în foaia
de calcul. În mediul WINDOWS dimensionarea mărimii liniilor şi coloanelor se poate realiza
rapid cu ajutor mouse-ului sau prin comenzi de tip Format/Row/AutoFit sau
Format/Column/AutoFitSelection.
R3. Pentru lucrările frecvente (facturi, ordine de plată, state de salarii etc.) se
recomandă utilizarea "şabloanelor" oferite de sistem (Spreadsheet Solutions) sau definite de
utilizatori în fişiere de tip Template (cu extensia .xlt în Excel).
R4. Deplasarea în foaia de calcul, din raţiuni de eficienţă, nu se va realiza exclusiv prin
utilizarea tastelor de deplasare tip săgeată (←;↑;→;↓). Enumerăm, mai jos, câteva soluţii
eficiente de deplasare în foaia de calcul:
• utilizarea de taste care permit deplasarea mai rapidă: PgUp; PgDown; Home;
• utilizarea de combinaţii de taste:
• CTRL + → sau ←;↑;↓;
• END + → sau ←;↑;↓;
• utilizarea butoanelor de deplasare, respectiv a liniilor de deplasare verticale sau
orizontale din fereastra de vizualizare a foii de calcul;
• inserarea de butoane suplimentare pentru deplasarea rapidă de la o zonă la alta din
foaia de calcul;

1
Oprea, D., Airinei, D., Meşniţă, G., Dumitriu, F., Aplicaţii cu macro-uri LOTUS 1-2-3, Editura Policromia, Piatra
Neamţ, 1995, pp. 36-39.
18 Instrumente software pentru afaceri

• utilizarea comenzilor de tip GOTO (F5) sau GOTO Special combinate cu atribuirea
de nume diferitelor zone din modelul de rezolvare.
R5. Când se lucrează cu mai multe foi de calcul se recomandă atribuirea de nume
semnificative fiecărei foi, în raport de componentele modelului de rezolvare (ex. în loc de
Sheet1, Sheet2, Sheet3, …, Sheetn se vor folosi denumiri cum ar fi: Meniuri, Help, Preluare
etc. ).
facturi, Centralizare, Tiparire
R6. Înainte de a trece la utilizarea modelului realizaţi salvarea acestuia, prin comenzi
de tip SAVE, într-un fişier cu nume adecvat lucrării (Facturi, Stat_sal, Casa, Devize etc.). În
caz contrar, riscaţi să pierdeţi tot ce aţi lucrat dacă la execuţie sistemul se blochează sau
intervine un incident neprevăzut. Pentru mai multă siguranţă, realizaţi chiar salvări periodice.
Dacă lucraţi pe un calculator utilizat de mai multe persoane, atunci e recomandabil să aveţi
un subdirector propriu în care să depozitaţi toate lucrările.
R7. Componentele modelului de rezolvare se dispun în cascadă în cadrul aceleiaşi foi
de calcul sau în foi de calcul diferite. În acest fel se evită alterarea componentelor modelului
de rezolvare la actualizarea unora prin inserarea/ stregerea de linii sau coloane.
R8. La terminarea construirii modelului se trece la protejarea tuturor zonelor definite în
afară de zonele rezervate datelor de intrare. Dacă zonele sunt protejate nu se mai pot face nici
un fel de modificări asupra conţinutului. În acest mod se evită riscul deteriorării voluntare sau
involuntare a modelului de rezolvare. Protecţia şi asigurarea confidenţialităţii aplicaţiilor
poate fi asigurată şi prin tehnica ascunderii de linii sau coloane. De asemenea, pentru a
preveni supraîncărcarea registrului de lucru sau pentru a proteja anumite date, şi foile de
calcul pot fi ascunse. Se utilizează în acest scop comenzile Hide/Unhide corespunzătoare
elementelor respective (Sheet, Row, Column).
R9. Pentru lucrările mai complexe se recomandă utilizarea macro-comenzilor prin
limbajul de macro-uri disponibil. Prelucrările repetitive sunt astfel încorporate în programe ce
se apelează ori de câte ori sunt necesare de efectuat. Majoritatea versiunilor din programele
de calcul tabelar oferă facilităţi de înregistrare automată a macro-urilor.
R10. Nu reinventaţi roata!!! Foarte multe din problemele economice sunt deja
rezolvate în programele de calcul tabelar, trebuie doar să furnizaţi corect argumentele unor
funcţii sau să apelaţi la modulele de asistenţă/ajutor (ex.: calculul dispersiei - VAR; calculul
mediei aritmetice - AVERAGE; determinarea trendului unui fenomen - TREND;
determinarea ratei interne de rentabilitate - IRR etc.)

3.2.2 Etapele proiectării aplicaţiilor în programele de calcul tabelar


Programele de calcul tabelar au determinat orientarea majorităţii aplicaţiilor
informatice către utilizatorul final. Ele reprezintă un nou tip de limbaj şi un nou mod de a
gândi în informatică. În raport de informatica tradiţională care se baza pe descompunerea
tayloriană a lucrărilor în sarcini elementare, programele de calcul tabelar merg pe ideea
integrării ansamblului sarcinilor în acelaşi cadru: foaia de calcul.
Programe de calcul tabelar 19

Chiar dacă programele de calcul tabelar oferă soluţii rapide de rezolvare a problemelor
nu trebuie să neglijăm aspectele de conceptualizare, de definire a unui model de rezolvare
valabil pentru mai multe situaţii concrete. De aceea, realizarea de aplicaţii eficiente
presupune parcurgerea următoarelor etape (vezi fig. nr. 3.16):
• analiza problemei şi proiectarea modelului de rezolvare (etapă manuală);
• construirea modelului în foaia de calcul;
• utilizarea modelului.

1. Analiza problemei şi proiectarea


modelului de rezolvare
1.1. Analiza şi definirea datelor
• date de ieşire
Etapa 1
• date calculate
Analizã problemã,
proiectare model • date de intrare
1.2. Determinarea relaţiilor de calcul
1.3. Exprimarea tabelară a modelului
de rezolvare

2. Construirea modelului în foaia de


calcul
2.1. Incărcarea produsului-program
2.2. Dispunerea componentelor
P.C.T. modelului în foaia de calcul
2.3. Introducerea antetelor de linii şi
coloane
2.4. Introducerea formulelor şi
Etapa 2 funcţiilor
Construire model
in foaia de calcul 2.5. Stabilirea parametrilor de format
2.6. Personalizarea modelului
2.7. Protejarea componentelor
modelului (cu excepţia zonelor
Model rezervate datelor de intrare)
2.8. Salvarea modelului

3. Utilizarea modelului
3.1. Incărcarea produsului-program
P.C.T. 3.2. Incărcarea modelului
3.3. Introducere date de intrare

Etapa 3 3.4. Analiză rezultate


Utilizare model 3.5. Copii de siguranţă
3.6. Tipărire rezultate

Copie de Rapoarte
siguranta

Fig. nr. 3.16. Etapele realizării aplicaţiilor în PCT


20 Instrumente software pentru afaceri

Exemplu:
S.C. ALFA SA Iaşi este specializată în comerţul cu amănuntul. Permanent societatea
comercială urmăreşte evoluţia vânzărilor pe raioane precum şi încadrarea în profitul planificat
la nivelul întregii societăţi. Perioada optimă de analiză este luna. Realizaţi modelul trimestrial
de analiză într-un program de calcul tabelar.

1. Analiza problemei şi proiectarea modelului de rezolvare.


1.1. Analiza şi definirea datelor:
Date de intrare:
• Vânzări lunare, pe fiecare raion;
• Preţ de achiziţie al mărfurilor vândute, pe fiecare lună;
• Cheltuieli de transport, pe fiecare lună;
• Cheltuieli de desfacere, pe fiecare lună.
Date calculate:
• Total vânzări lunare;
• Total vânzări pe fiecare raion;
• Total preţ de achiziţie al mărfurilor vândute;
• Total cheltuieli de transport;
• Total cheltuieli de desfacere;
• Total cheltuieli, pe fiecare lună şi pe trimestru;
• Profit lunar;
• Media lunară a vânzărilor pe fiecare raion şi pe total;
• Preţul mediu de achiziţie;
• Media lunară a fiecărei categorii de cheltuieli;
• Profitul mediu lunar.

1.2. Determinarea relaţiilor de calcul:


Datele calculate sunt determinate pe baza relaţiilor de însumare şi de calcul a mediei
aritmetice. Profitul este diferenţa dintre venituri şi cheltuieli.

1.3. Exprimarea tabelară a modelului de rezolvare:


S.C. ALFA SA Iaşi

Analiza vânzărilor şi profitului

Ianuarie Februarie Martie Total Medie lunară


Vânzări raion A ∑ X
Vânzări raion B ∑ X
Vânzări raion C ∑ X
Total vânzări ∑ ∑ ∑ ∑ X
Preţ achiziţie ∑ X
Programe de calcul tabelar 21

Cheltuieli transport ∑ X
Cheltuieli desfacere ∑ X
Total cheltuieli ∑ ∑ ∑ ∑ X
Profit Tv-Tch Tv-Tch Tv-Tch Tv-Tch X

2. Construirea modelului în foaia de calcul:

Fig. nr. 3.17. Modelul construit în foaia de calcul EXCEL

3. Utilizarea modelului (fig.nr. 3.18):

Fig. nr. 3.18. Utilizarea modelului EXCEL


22 Instrumente software pentru afaceri

3.3 CATEGORII DE FUNCŢII DIN PROGRAMELE DE CALCUL


TABELAR ŞI POSIBILITĂŢI DE UTILIZARE ÎN SIMULĂRI

Funcţiile din programele de calcul tabelar reprezintă formule des utilizate, prin care se
poate executa o mare varietate de calcule, în mod rapid şi comod. Se pot efectua calcule
financiare, matematice, statistice, cu şiruri de caractere, cu date calendaristice etc. De
asemenea, funcţiile se pot folosi pentru crearea de expresii condiţionale sau pentru efectuarea
de căutări în tabele. Alături de formule şi macro-uri, funcţiile asigură performanţele sporite
programelor de calcul tabelar, mai ales în simulări.
Deoarece fiecare program de calcul tabelar, respectiv fiecare versiune, are anumite
particularităţi ne vom opri la o prezentare de principiu a pricipalelor categorii de funcţii din
EXCEL.

3.3.1 Sintaxa funcţiilor


În Excel funcţiile sunt precedate de semnul =. Pentru utilizatorii de Lotus, Excel
asigură compatibilitatea, astfel că se pot introduce funcţiile precedate de caracterul @.
Fiecare funcţie are o anumită sintaxă. Dacă sintaxa funcţiei nu este respectată, sistemul nu o
poate interpreta, fiind generat un mesaj de eroare (vezi subcapitolul 3.3.5).
Funcţiile din Excel au următorul format general:
FUNCŢIE( ) sau
FUNCŢIE(argument_1; argument_2; ...; argument_n)
FUNCŢIE reprezintă numele funcţiei.
argument_1; argument_2; ...; argument_n reprezintă argumentele funcţiei,
respectiv datele pe care funcţia le va utiliza în calcule. Dacă funcţia are în sintaxă argumente,
acestea trebuie să fie incluse în paranteze rotunde. Chiar dacă argumentele lipsesc, se vor
preciza parantezele. Separatorul din lista de argumente este caraterul “;” sau caracterul “,”.
Argumentele precizează obiectul funcţiilor, acele valori utilizate de funcţii pentru a
realiza operaţiuni sau calcule specifice. Ele se exprimă prin adresele căsuţelor (referinţele) ce
conţin valorile, prin nume atribuite căsuţelor sau prin constante. De exemplu, în funcţia
SUM(C10:C15), argumentul C10:C15 precizează că se vor aduna valorile întâlnite în
grupul de căsuţe C10:C15. Argumentele dintr-o funcţie pot fi: valori numerice, şiruri de
caractere, referinţe de căsuţe, condiţii, formule şi funcţii.
Observaţii:
• Când argumentul este o valoare numerică se poate utiliza un număr, o formulă (expresie)
de tip numeric, un nume de grup sau adresa unei căsuţe care conţine un număr sau o
formulă de tip numeric.
• Când argumentul este de tip şir de caractere se poate utiliza o constantă tip şir de
caractere (orice secvenţă de litere, cifre sau alte caractere, delimitată la stânga şi la
Programe de calcul tabelar 23

dreapta de caracterul " (ghilimele)), o formulă de tip şir, un nume de grup sau adresa unei
căsuţe care conţine un şir sau o formulă de tip şir.
• Când argumentul este o referinţă de căsuţă, se poate utiliza un nume de grup sau o adresă.
• Când argumentul este o condiţie se foloşeste o expresie logică (o formulă în care se
utilizează un operator logic (de comparare) sau un nume de grup ori o adresă de căsuţă
care conţine o expresie logică). Totuşi, ca argument tip condiţie se pot folosi expresii
numerice sau de tip şir, valori numerice, constante de tip şir sau referinţe de căsuţe.
Operatorii specifică tipul de calcule care se execută asupra argumentelor. Sunt 4 tipuri
de operatori:
• aritmetici (+, -, /, *, %, ^);
• de comparare (<, >, =, <>, <=, >=);
• de tip şir (&, utilizat pentru concatenarea şirurilor de caractere);
• de tip referinţă (caracterul “:”, utilizat pentru specificarea grupurilor de căsuţe,
caracterul ”,” utilizat pentru reuniune, caracterul “spaţiu” pentru intersecţia a
două zone din foaia de calcul).
Tabelul nr. 3.2. Exemple de utilizare a operatorilor
Calculul soldului final Presupunem că: în D11 este rulajul debitor, în E11 este
al unui cont de activ rulajul creditor, iar în C8 este soldul iniţial. Formule de
calcul:
=C8+D11-E11
=SUM(C8,D11,-E11)
Afişarea numelui şi Presupunem că: în B4 este numele, în C4 este prenumele.
prenumelui într-o Pentru a afişa în formatul “prenume nume”: =C4&” “&B4
singură căsuţă Pentru a afişa în formatul “nume, prenume”: =B4&”, “&C4
Sporirea unei valori Presupunem că valoarea respectivă este în C6. Sunt 2
numerice cu 5% variante:
1. dacă folosim o constantă: =C6*(1+5%)
2. dacă procentul este în căsuţa B2: =C6*(1+$B$2)
Combinarea unui text Presupunem că data documentului este stocată în E4. Se
cu data calendaristică scrie:
=”Incheiat la data de “&TEXT(E4,”d-mmm-yyyy”)
Calculul totalului în Presupunem că avem lista facturilor dintr-o lună şi dorim să
funcţie de o valoare aflăm valoarea totală a facturilor emise în data de 24 ianuarie
aflată într-o altă zonă 2000 (zona B2:B96 conţine data facturii, iar zona E2:E96
valoarea). Formula de calcul:
=SUMIF(B2:B96,”01/24/2000”,E2:E96)
Calculul unei valori Presupunem că dispunem de lista prezentată mai sus şi dorim
totale în funcţie de să obţinem suma facturilor din săptămâna 24-29 ianuarie.
rezultatul evaluării a 2 Formula:
condiţii =SUM(IF(B2:B96>=DATEVALUE(”01/24/2000”),
IF(B2:B96<=DATEVALUE(”01/29/2000”), E2:E96)))
Obs.: aceasta este o formulă de tip array şi trebuie introdusă prin
combinaţia CTRL+SHIFT+ENTER
Numărarea apariţiilor Presupunem că din lista de mai sus dorim să aflăm numărul
unei valori facturilor emise pe data de 25 ianuarie 2000. Se scrie:
=COUNTIF(B2:B96,”01/25/2000”)

Reguli sintactice de bază


La introducerea funcţiilor trebuie să ţinem cont de următoarele recomandări:
1) Numele funcţiei trebuie să fie precedat de semnul =.
24 Instrumente software pentru afaceri

2) Indiferent de tipul literelor folosite la tastarea numelui funcţiei, mici sau mari,
sistemul le va afişa cu majuscule.
3) Nu se lasă spaţii între numele funcţiei şi argumente.
4) Întotdeauna includeţi argumentele funcţiilor între paranteze rotunde.
5) Când o funcţie devine argument al altei funcţii, fiecare dintre ele trebuie să aibă
argumentele cuprinse între paranteze. Exemplu: =IF(SUM(A1:A5)>0,B1,B2).
6) Dacă sunt mai multe argumente, acestea se separă prin , (virgulă) sau ; (punct şi
virgulă), corespunzător delimitatorului stabilit.
7) O funcţie poate avea ca argument o altă funcţie.
8) Sistemul atribuie valoarea zero tuturor căsuţelor libere ale căror adrese sunt
folosite ca argumente în funcţiile financiare, logice sau matematice.

Observaţie:
Pentru a vizualiza toate formulele/funcţiile dintr-o foaie de calcul se foloseşte combinaţia de
taste CTRL+` (vezi fig. nr. 3.19). Prin aceeaşi combinaţie de taste se revine la afişarea
valorilor calculate. Acelaşi efect se obţine şi prin Tools, Options, View, Formulas.

Fig. nr. 3.19.. Afişarea formulelor într-o foaie de calcul

3.3.2 Categorii de funcţii


În Excel, funcţiile sunt grupate în 11 categorii:
(i) Funcţiile statistice: execută calcule statistice asupra unor serii de date;
(ii) Funcţiile financiare: realizează calcule economice pentru împrumuturi, anuităţi
sau fluxuri financiare;
(iii) Funcţiile logice: calculează rezultatul unei expresii condiţionale;
(iv) Funcţiile matematice şi trigonometrice: execută o mare varietate de calcule
complexe cu valori numerice;
(v) Funcţiile de căutare: identifică o valoare într-un tabel sau într-o listă;
(vi) Funcţiile pentru date calendaristice şi timp: calculează valorile ce reprezintă data
calendaristică şi timpul;
(vii) Funcţiile pentru baze de date: efectuează calcule statistice şi interogări asupra
bazelor de date;
(viii) Funcţiile tip şir de caractere: lucrează cu şiruri (texte, expresii tip şir) sau con-
stante tip şir;
(ix) Funcţiile de informare oferă informaţii despre căsuţe şi despre mediul de lucru;
(x) Funcţiile tehnice: efectuează calcule tehnice;
Programe de calcul tabelar 25

(xi) Funcţiile definite de utilizator (User Defined Functions): execută calcule specifice
aplicaţiilor fiecărui utilizator.
Asistentul de funcţii (Insert Function) ne oferă posibilităţi de vizualizare a funcţiilor
pe categorii, precum şi casete de dialog pentru specificarea argumentelor, respectiv explicaţii
privind semnificaţia şi modul de utilizare şi interpretare (vezi figura nr. 3.20).

Fig. nr. 3.20.. Prima casetă de dialog pentru asistenul de funcţii

3.3.2.1 Funcţii statistice


Funcţiile statistice clasice sunt prezentate în tabelul 3.3. De regulă, aceste funcţii
lucrează doar cu valori numerice, dar sunt definite şi variante ale acestor funcţii care extind
tipurile de date acceptate. Spre exemplu: funcţia AVERAGE acceptă doar valori numerice,
iar funcţia AVERAGEA acceptă şi date de tip logic sau text (în mod similar, sunt definite
funcţiile COUNTA, MAXA, MINA etc.).
Tabelul nr. 3.3. Principalele funcţii statistice
Funcţia Rolul funcţiei
AVERAGE Calculează media aritmetică a valorilor din listă.
COUNT Numără căsuţele cu un conţinut diferit de spaţiu din lista indicată.
MAX Determină valoarea maximă dintr-o listă de valori.
MIN Determină valoarea minimă dintr-o listă de valori.
STDEV Calculează abaterea medie pătratică a valorilor dintr-o listă.
VAR Calculează dispersia valorilor dintr-o listă.

3.3.2.2 Funcţii financiare


Aceste funcţii permit determinarea unor mărimi financiare utilizate în domeniul
economic şi financiar cum ar fi: rata internă de rentabilitate, rata dobânzii, valoarea
26 Instrumente software pentru afaceri

actualizată netă a unei investiţii, amortizarea imobilizărilor (după metoda liniară, după
metoda degresivă, după metada însumării cifrei anilor) etc. O parte dintre ele nu sunt prezente
în configuraţia standard. Ele pot fi instalate prin meniul Tools, Add-Ins, din care se alege
componenta Analysis Toolpak. Semnificaţiile argumentelor ce se regăsesc cel mai frecvent în
funcţiile financiare, cu excepţia celor pentru calculul amortizării, sunt:
• valoarea viitoare (future value – fv), adică valoarea investiţiei sau împrumutului
după ce au fost efectuate toate plăţile;
• numărul de perioade (number of periods – nper) care arată numărul total de plăţi
sau de perioade (ani, luni, zile) ale investiţiei sau împrumutului;
• vărsământul (payment – pmt), adică suma plătită periodic pentru o investiţie sau
un împrumut;
• valoarea prezentă (present value – pv) care se referă la valoarea actuală a
încasărilor sau plăţilor ce se vor efectua în viitor;
• rata dobânzii (rate);
• tipul (type) care precizează intervalul de timp la care se efectuează plata (spre
exemplu, la începutul lunii sau la sfârşitul lunii). Dacă acest argument lipseşte
sau are valoarea 0 se consideră că plata se face la sfârşitul perioadei, iar dacă are
valoarea 1, plata se face la începutul perioadei.
Observaţie:
În scrierea funcţiilor financiare, sumele care reprezintă plăţi sunt introduse ca valori negative,
iar sumele care reprezintă încasări ca valori pozitive.

Tabelul nr. 3.4. Principalele funcţii financiare


Funcţia Rolul funcţiei
Amortizare imobilizări
DDB Calculează amortizarea imobilizărilor după metoda degresivă
(Double-Declining Balance depreciation).
SLN Calculează amortizarea imobilizărilor după metoda liniară
(Straight-LiNe depreciation).
SYD Calculează amortizarea imobilizărilor după metoda însumării
cifrelor anilor (Sum-of-the-Years'-Digits).
Anuităţi
FV Determină valoarea viitoare (Future Value) a unei investiţii
curente, pe bază de vărsăminte egale şi la o rată constantă a
dobânzii.
PMT Determină suma care trebuie plătită periodic, pentru ram-
bursarea unui împrumut.
PV Determină valoarea prezentă (Present Value) a unei investiţii
curente, pe bază de vărsăminte viitoare egale.
Obiective financiare
NPER Determină numărul de perioade necesare pentru obţinerea unei
valori viitoare, pe baza unor vărsăminte egale şi o rată a
dobânzii constantă.
RATE Determină procentul de dobândă pentru o anuitate.
Previziuni
Programe de calcul tabelar 27

Funcţia Rolul funcţiei


IRR Determină rata internă de rentabilitate (Internal Rate of
Return), pentru o serie de fluxuri financiare generate de o
investiţie.
NPV Calculează valoarea actualizată netă prezentă (Net Present
Value) a unei serii de fluxuri financiare viitoare generate de o
investiţie.

Recomandări pentru utilizarea funcţiilor financiare:


• Într-o funcţie financiară, durata (numărul de perioade) şi rata dobânzii trebuie să
se refere la aceeaşi unitate de timp.
• În funcţiile financiare care lucrează cu anuităţi se iau în considerare vărsăminte
egale, efectuate la intervale regulate de timp. O anuitate obişnuită este o anuitate
în care plata se face la sfârşitul fiecărui interval de timp.

3.3.2.3 Funcţii logice


Principalele funcţii logice sunt prezentate în tabelul 3.5. Funcţiile AND, OR, NOT
înlocuiesc operatorii logici similari. Ele evaluează una sau mai multe condiţii precizate ca
argumente şi returnează valoarea logică adevărat sau fals.
Tabelul nr. 3.5. Funcţii logice
Funcţia Rolul funcţiei
AND Dă valoarea logică 1 (adevărat) dacă toate condiţiile evaluate sunt
adevărate (operatorul “şi logic” – conjuncţie).
FALSE Dă valoarea logică 0 (fals).
IF Codifică structura de control alternativă. Dacă se îndeplineşte
condiţia se execută o acţiune, în caz contrar se execută altă acţiune.
NOT Schimbă valoarea logică a argumentului (negaţie).
OR Dă valoarea logică 1 (adevărat) dacă una dintre condiţiile evaluate
este adevărată (operatorul “sau logic” – disjuncţie).
TRUE Dă valoarea logică 1 (adevărat).

3.3.2.4 Funcţii matematice


Principalele funcţii din această categorie sunt incluse în tabelul 3.6.
Tabelul nr. 3.6. Principalele funcţii matematice
Funcţia Rolul funcţiei
Generale
ABS Calculează valoarea absolută.
EXP Calculează ex, x fiind un anumit exponent.
INT Determină valoarea întreagă a unei valori numerice.
LN Calculează logaritmul natural (în baza e).
LOG Calculează logaritmul în baza 10 (zece).
MOD Calculează restul împărţirii a două valori numerice.
RAND Generează un număr aleator cuprins între 0 şi 1.
RANDBETWEEN Generează un număr aleator dintr-un interval specificat.
ROMAN Converteşte cifrele arabe în cifre romane.
ROUND Rotunjeşte o valoare pentru un număr dat de poziţii zecimale.
28 Instrumente software pentru afaceri

Funcţia Rolul funcţiei


SUM Însumează dintr-o listă
SQRT Calculează rădăcina pătrată dintr-un număr pozitiv.
Trigonometrice
ACOS Calculează arccosinus.
ASIN Calculează arcsinus.
ATAN Calculează arctangentă.
COS Calculează cosinus.
PI Dă valoarea numărului PI (3.14159265358979).
SIN Calculează sinus.
TAN Calculează tangenta.

3.3.2.5 Funcţii de căutare


Aceste funcţii sunt utilizate pentru căutarea de valori în cadrul listelor sau în baze de
date, sau pentru identificarea referinţelor unei căsuţe. Cele mai importante funcţii de căutare
sunt prezentate în tabelul 3.7.

Tabelul nr. 3.7. Principalele funcţii de căutare


Funcţia Rolul funcţiei
ADDRESS Construieşte adresa unei căsuţe specificate prin numărul rândului şi
al coloanei, având precizat şi tipul de adresă dorit printr-un argument
numeric (1 sau lipsă pentru adresă absolută, 4 pentru adresă relativă
etc.).
Exemplu: ADDRESS(2,3) dă $C$2.
CHOOSE Alege o valoare numerică dintr-o listă de valori numerice sau de
şiruri, pe baza unui index numeric.Exemplu:
CHOOSE(2, “Ianuarie”,”Februarie”, “Martie”) va da valoarea
“Februarie”
COLUMN Oferă numărul coloanei corespunzător adresei specificate ca
argument.
Exemplu: COLUMN(C2) dă valoarea 3.
HLOOKUP Efectuează cautări, după un criteriu specificat, într-un grup de căsuţe
şi dă ca rezultat conţinutul căsuţei situate la intersecţia coloanei în
care s-a identificat elementul căutat şi a liniei specificate ca
argument. Căutarea se face pe linie.
INDEX Efectuează cautări, într-un grup de căsuţe sau într-un tablou (array)
şi dă ca rezultat conţinutul căsuţei situate la intersecţia liniei şi
coloanei ale căror numere au fost specificate ca argumente.
ROW Oferă numărul rândului corespunzător adresei specificate ca
argument.
Exemplu: ROW(A15) dă 15.
VLOOKUP Efectuează cautări, după un criteriu specificat, într-un grup de căsuţe
şi dă ca rezultat conţinutul căsuţei situate la intersecţia liniei în care
s-a identificat elementul căutat şi a coloanei specificate ca argument.
Căutarea se face pe coloană.
Programe de calcul tabelar 29

3.3.2.6 Funcţii pentru date calendaristice şi timp

Tabelul nr. 3.8. Funcţii pentru date calendaristice şi timp


Funcţia Rolul funcţiei
DATE Calculează un număr corespunzător datei calendaristice specificate
prin valori numerice ale anului, lunii şi zilei. Exemplu: pentru 12
februarie 2006 funcţia DATE(2006;2;12) dă valoarea 38760
(format General) sau 12.02.2006 (format Date).
DATEVALUE Converteşte şiruri care reprezintă data calendaristică în numărul
echivalent. Exemplu: DATEVALUE("12-Feb-06") dă numărul
38760.
DAY Calculează numărul zilei din lună pe baza argumentului care se
referă la numărul de zile trecute de la 1 ianuarie 1900 sau a datei
specificată ca un şir de caractere. Exemplu: DAY(38760) sau
DAY(“12/02/2006”) dă valoarea 12.
MONTH Calculează numărul lunii din an pe baza argumentului care se referă
la numărul de zile trecute de la 1 ianuarie 1900 sau a datei
specificată ca un şir de caractere. Exemplu: MONTH(38759) sau
MONTH(“12.02.2006”) dă valoarea 2.
YEAR Determină anul calendaristic, exprimat prin două sau patru cifre,
conform formatului selectat, pe baza argumentului care se referă la
numărul de zile trecute de la 1 ianuarie 1900 sau a datei specificată
ca un şir de caractere. Exemplu: YEAR(38759) dă valoarea 2006.
HOUR Pornind de la un număr subunitar sau de la ora specificată ca un şir
de caractere, determină ora corespunzătoare din zi. Exemplu:
HOUR(0.437615) dă valoarea 10, deoarece 0.437615 este asociat
la ora 10:30:10 AM; HOUR(“5:15 PM”) dă valoarea 17.
MINUTE Pornind de la un număr subunitar sau de la ora specificată ca un şir
de caractere, determină minutul corespunzător din oră. Exemplu:
MINUTE(0.437615) dă valoarea 30, deoarece 0.437615 este
asociat la ora 10:30:10 AM; MINUTE(“18:15:00”) dă 15.
NOW Determină valoarea care corespunde datei şi orei curente, după
orologiul calculatorului. Exemplu: NOW() dă valoarea
36227.437615 (format General) sau 3/8/99 10:30 (în format Date).
SECOND Pornind de la un număr subunitar sau de la ora specificată ca un şir
de caractere, determină secunda corespunzătoare din minut.
Exemplu: SECOND(0.437615) dă valoarea 10, deoarece
0.437615 este asociat la ora 10:30:10 AM.
TIME Calculează un număr (cu valori între 0 şi 0.999988426)
corespunzător timpului scurs din zi, specificat prin valorile
numerice ale orei, minutului şi secundei. Exemplu: pentru 10:30:10
AM, funcţia TIME(10,30,10) dă valoarea 0.437615.
TIMEVALUE Converteşte şiruri care reprezintă ora în numărul echivalent.
Exemplu: TIMEVALUE("10,30,10") dă numărul 0.437615.
TODAY Determină valoarea care corespunde datei curente, după orologiul
calculatorului. Exemplu: TODAY() aplicată la data de 12 februarie
2006 dă valoarea 38760 (în format General) sau 12.02.2006 (în
format Date).

Recomandări pentru utilizarea funcţiilor calendaristice:


• Numărul asociat de Excel, versiunea pentru Windows, datei calendaristice
reprezintă un număr întreg din intervalul 1 – 2 958 465. Astfel, se atribuie zilei
30 Instrumente software pentru afaceri

de 1 ianuarie 1900 valoarea 1, zilei de 1 februarie 1900 valoarea 32, iar ultima
valoare corespunde zilei de 31 decembrie 9999.
• Numărul asociat de Excel orei exacte reprezintă un număr zecimal din intervalul
0.000000 – 0.999988426. Astfel, se atribuie orei 0 (ce marchează începutul unei
noi zile) valoarea 0.000000, orei 12 (amiază) valoarea 0.500000, iar pentru
23:59:59 valoarea 0.999988426.
• De regulă, Excel recunoaşte o dată calendaristică şi o afişează în formatul
specific, dar pentru ca data sau ora să apară într-un alt format se foloseşte
comanda Format, Cells.
• Chiar dacă funcţia NOW nu are argumente, este obligatorie prezenţa
parantezelor – altfel se obţine eroarea #NAME?.

3.3.2.7 Funcţii pentru baze de date


Aceste funcţii sunt asemănătoare cu funcţiile statistice (vezi tabelul 3.9).
Tabelul nr. 3.9. Principalele funcţii pentru baze de date
Funcţia Rolul funcţiei
DAVERAGE Calculează media aritmetică a valorilor unui câmp dintr-o bază de
date, doar pentru înregistrările care îndeplinesc un anumit criteriu.
DCOUNT Numără căsuţele ce conţin valori numerice dintr-un câmp al bazei
de date, după un anumit criteriu.
DMAX Determină valoarea maximă dintr-un câmp al bazei de date, după
un anumit criteriu.
DMIN Determină valoarea minimă dintr-un câmp al bazei de date, după un
anumit criteriu.
DSTDEV Calculează abaterea medie statică a valorilor dintr-un câmp al bazei
de date, după un anumit criteriu.
DVAR Calculează dispersia valorilor dintr-un câmp al bazei de date, după
un anumit criteriu.

Recomandări pentru utilizarea funcţiilor tip bază de date:


• Toate funcţiile pentru baze de date trebuie să aibă trei argumente: grup de
intrare, câmp, criteriu.
• Grupul de intrare trebuie să conţină baza de date. Poate fi o adresă sau un
nume atribuit zonei care conţine baza de date. În exemplul din fig. nr. 3.21,
grupul de intrare (baza de date) este în zona A1:D7.
• Câmpul este precizat prin numărul de ordine al coloanei pe care se găseşte.
Numărul de ordine corespunde poziţiei ocupate de coloana care conţine
câmpul, în zona de intrare. Primei coloane i se asociază numărul 1, celei de-a
doua, numărul 2 ş.a.m.d. Dacă numărul de ordine este o valoare mai mare
decât numărul de câmpuri, funcţia va afişa mesajul de eroare #VALUE!. În
exemplul dat, grupul de intrare este alcătuit din 4 câmpuri, identificate prin
numere de la 1 la 4. Câmpul poate fi precizat şi prin numele său, scris între
ghilimele (în loc de 4 se poate scrie “Salariu”).
Programe de calcul tabelar 31

• Criteriul este zona în care se specifică condiţia de selecţie. O zonă de criterii


trebuie să includă numele câmpului (aşa cum este specificat în grupul de intra-
re) şi condiţia de selecţie. Zona de criterii trebuie să conţină minimum o
coloană şi două linii. Condiţia se introduce în căsuţa de sub cea cu numele
câmpului. Criteriul poate fi adresa zonei sau un nume atribuit acesteia. În
exemplul de mai jos (fig. nr. 3.21) sunt definite 3 criterii: F1:F2, G3:H4
(condiţia 1 şi condiţia 2), H6:H7.

Fig. nr. 3.21. Funcţii statistice pentru bazele de date. Exemple

Fig. nr. 3.22. Funcţii statistice pentru bazele de date. Scrierea formulelor

3.3.2.8 Funcţii tip şir de caractere


Cu ajutorul funcţiilor de tip şir de caractere se poate lucra cu date de tip text în formule
sau funcţii. Astfel, se poate determina lungimea unui şir de caractere sau se poate converti un
text în majuscule. Spre exemplu, formula de mai jos exemplifică utilizarea funcţiei TODAY
ca argument al funcţiei TEXT, ce transformă data calendaristică în text (vezi rezultatul în fig.
nr. 3.23):
=”Raport de activitate la data “&TEXT(TODAY( ),”dd-mmm-yyyy”)

Fig. nr. 3.23. Utilizarea funcţiei TEXT

Tabelul nr. 3.10. Funcţii tip şir de caractere


Funcţia Rolul funcţiei
CHAR Dă caracterul care are codul ASCII specificat ca argument.
Exemplu: CHAR(65) dă A.
CLEAN Şterge caracterele netipăribile din şirul specificat.
CODE Dă codul ASCII al primului caracter din şirul specificat.
Exemplu: CODE(“Alfa”) afişează A.
32 Instrumente software pentru afaceri

Funcţia Rolul funcţiei


CONCATENATE Uneşte mai multe şiruri de caractere într-unul singur.
EXACT Dă valoarea logică 1 (adevărat) dacă cele două şiruri sunt
identice şi valoarea logică 0 (fals) dacă cele două şiruri sunt
diferite.
FIND Calculează poziţia primului caracter din şirul căutat care a fost
identificat în şirul în care se face căutarea.
LEFT Extrage primele n caractere din şirul precizat ca argument.
LEN Calculează numărul de caractere din şirul precizat ca argument.
LOWER Converteşte toate literele, din şirul precizat ca argument, în
litere mici.
MID Extrage un anumit număr de caractere, din interiorul unui şir
precizat ca argument.
PROPER Converteşte prima literă, din fiecare cuvânt al şirului precizat
ca argument, în literă mare, iar restul literelor din cuvânt le
converteşte în litere mici.
REPT Realizează duplicarea şirului specificat ca argument de un
număr precizat de ori.
REPLACE Înlocuieşte caracterele specificate ale unui şir cu alte caractere.
RIGHT Extrage ultimele n caractere din şirul precizat ca argument.
SEARCH Este similară cu FIND, doar că, spre deosebire de aceasta, nu
face diferenţa între litere mici şi litere mari.
TEXT Transformă o valoare numerică într-un şir, folosind formatul
specificat.
TRIM Elimină spaţiile de la începutul şi sfârşitul şirului specificat.
UPPER Converteşte toate literele, din şirul precizat ca argument, în
litere mari.
VALUE Converteşte un şir ce reprezintă un număr într-o valoare
numerică.

3.3.2.9 Funcţii de informare


Funcţiile de informare oferă date privind conţinutul căsuţelor sau mediul de lucru.
Tabelul nr. 3.11. Principalele funcţii de informare
Funcţia Rolul funcţiei
CELL Dă informaţii despre conţinutul, formatul datelor sau poziţia
(numărul rândului sau coloanei) unei căsuţe. Exemple:
CELL(“contents”,A2) afişează “Nume şi prenume”
CELL(“row”,D31) afişează 31
CELL(“format”,A2) afişează G (adică formatul General)
COUNTBLANK Numără căsuţele goale (libere) dintr-un grup de căsuţe precizat.
INFO Oferă informaţii asupra mediului de lucru curent. Argumentul este
un text predefinit care se referă la tipul de informaţii solicitat.
Exemplu: INFO(“directory”) afişează numele directorului curent;
INFO(“release”) numele versiunii Excel utilizate etc.
Programe de calcul tabelar 33

Funcţia Rolul funcţiei


ISBLANK Funcţiile IS… confirmă/infirmă tipul datei specificat prin numele
ISERR funcţiei, având corespunzător rezultatul TRUE (Adevărat) sau
ISLOGICAL FALSE (Fals). Spre exemplu, ISBLANK dă valoarea TRUE dacă
ISNA respectiva căsuţă este goală sau FALSE în caz contrar. În mod
ISNONTEXT similar, ERR se referă la valori de tip eroare, LOGICAL la valori
ISNUMBER logice, NA la eroarea #N/A, NONTEXT la valori diferite de text,
ISREF NUMBER la valori numerice, REF la referinţe, iar TEXT la şiruri
ISTEXT de caractere. ODD şi EVEN indică prezenţa de valori impare sau
ISEVEN pare. Argumentele acestor funcţii pot fi adresa căsuţei sau o
ISODD valoare concretă.
TYPE Returnează tipul datei sub forma unui număr. Astfel, dacă este o
valoare numerică se afişează 1, dacă este text se afişează 2 ş.a.m.d.

3.3.2.10 Funcţii definite de utilizator


În aplicaţiile în care trebuie efectuate calcule complexe, pentru care nu sunt definite
funcţii Excel, utilizatorul îşi poate defini propriile funcţii, folosind limbajul VBA (Visual
Basic for Applications).

3.3.3 Detalii şi exemple privind funcţiile financiare


IRR IRR(grup-fluxuri-băneşti; rata-estimată) calculează rata internă de
rentabilitate preconizată pentru o serie de fluxuri băneşti generate de o
investiţie. Rata internă de rentabilitate corespunde la procentul de dobândă
pentru care valoarea actualizată a încasărilor viitoare este egală cu
valoarea investiţiei iniţiale. Se presupune că încasările sunt efectuate la
intervale regulate şi egale. Rata estimată reprezintă o valoare prognozată
rentru rata internă de rentabilitate. Poate fi o valoare oarecare (dacă
lipseşte se consideră a fi 10%).

Grup-fluxuri-băneşti poate fi un nume sau o adresă de grup care să


conţină fluxurile băneşti. Plăţile sunt înscrise ca valori negative, încasările
ca valori pozitive. Ca regulă generală, prima sumă din grup este negativă
şi reprezintă investiţia iniţială (costul proiectului de investiţii), iar sumele
pozitive reprezintă încasările viitoare. Pentru calculul ratei interne de
rentabilitate, Excel efectuează o serie de aproximări, plecând de la rata
estimată. În cele mai multe cazuri, rata estimată ar trebui să fie un
procent între 0 (0%) şi 1 (100%). Pentru că sunt mai multe soluţii posibile,
când rezultatele sunt mai mici decât 0 şi mai mari decât 1, se recomandă
folosirea altei rate estimate..
Exemple
Se proiectează o investiţie în valoare de 2000000 lei. Încasările
prognozate pentru cei 5 ani de funcţionare a investiţiei sunt precizate în
tabelul de mai jos. Să se determine rata internă de rentabilitate a
investiţiei. Rata estimată se consideră a fi 5%.
În căsuţa B8 s-a introdus funcţia IRR(B2:B7,B1), care dă rezultatul
3.43%. Deci, la o rată de actualizare de 3.43%, valoarea actualizată a
încasărilor este egală cu valoarea investiţiei.
34 Instrumente software pentru afaceri

NPV NPV(rată-dobândă,grup) calculează valoarea prezentă netă pentru o


serie de fluxuri băneşti viitoare, afectate de aceeaşi rată a dobânzii. Se
consideră că operaţiunile financiare se realizează la intervale egale de timp
şi că prima operaţiune este consemnată la finele primei perioade, a doua -
la finele celei de-a doua perioade ş.a.m.d. Rata-dobânzii poate fi orice
valoare numerică mai mare decât -1. Grup poate fi redat printr-un nume
sau o adresă a grupului care conţine operaţiunile băneşti. NPV este
similară funcţiei financiare PV, cu deosebirea că în cel de-al doilea caz şi
sumele sunt egale.
Funcţia de faţă are la bază următoarea formulă de calcul:
n
fi
Vnp = ∑ (1+r )
i

i=1
în care: fi = fluxuri băneşti; r = rata dobânzii; n = număr de fluxuri şi
i = perioade.
Exemple

FV FV(rata-dobânzii, număr-perioade, suma-vărsată, valoare-prezentă,


tip) calculează valoarea viitoare a unei investiţii, pe bază de vărsăminte
egale, la o rată a dobânzii constantă şi într-un anumit număr de perioade.
Dacă nu se specifică nici o valoare pentru argumentul “tip”, se consideră
că plăţile se fac la sfârşitul fiecărei perioade, iar dacă se precizează
valoarea 1, plata se face la începutul perioadei. FV foloseşte următoarea
formulă de calcul:
(1 + r )n − 1
Vv = Sv *
r
Vv = Valoarea viitoare a investiţiei
Sv = Suma plătită periodic
r = rata dobânzii
n = număr de perioade
Programe de calcul tabelar 35

Exemplu
Dispuneţi de un cont de economii în care depuneţi anual suma de
20000 lei, timp de 20 de ani. Rata anuală a dobânzii este de 7.50%. Care
este suma de care dispuneţi după 20 de ani ştiind că achitarea sumei se
face la sfârşitul fiecărui an?

PV PV(rata-dobânzii, număr-perioade, suma-vărsată, valoare-viitoare,


tip) calculează valoarea acualizată a unei investiţii, pe bază de vărsăminte
egale, la o anumită rată a dobânzii şi într-un anumit număr de perioade.
Argumentul “tip” ia aceleaşi valori ca şi la FV. PV foloseşte următoarea
formulă:
−n
1 − (1 + r )
Vp = Sp *
r
Vp = Valoarea prezentă a investiţiei
Sp = Suma plătită periodic
r = rata dobânzii
n = număr de perioade
Exemplu
O societate comercială realizează o investiţie pentru care estimează un
venit de 10.000.000 lei în viitor. Încasările se fac în 20 de rate anuale a
500.000 lei, la sfârşitul fiecărui an. O altă variantă este ca investiţia
realizată să aducă o încasare imediată de 4.000.000 lei. Care dintre cele
două variante este mai avantajoasă, ştiind că sumele investite în viitor
suportă o rată a dobânzii de 8%?

RATE RATE(număr-perioade, vărsământ, valoare-prezentă, valoare-


viitoare, tip, estimare) calculează rata dobânzii pentru o anuitate.
Valoarea viitoare este valoarea ce va rămâne după efectuarea tuturor
plăţilor; poate fi 0 (de exemplu, în cazul rambursării unui împrumut,
valoarea viitoare este 0). Argumentul tip are aceeaşi semnificaţie ca şi la
PV/FV, iar estimare este un argument opţional prin care se poate estima
rata dobânzii.
Exemplu
Se realizează un împrumut de 10000000 lei, iar rambursarea se face în
vărsăminte lunare de 500000 lei, timp de 3 ani. Care este rata
corespunzătoare a dobânzii aferentă împrumuntului?
36 Instrumente software pentru afaceri

SLN SLN(valoare-de-intrare, valoare-reziduală, durata-de-serviciu)


calculează amortizarea imobilizărilor după metoda liniară (Straight-
LiNe). Valoarea de intrare a imobilizării însumează toate costurile cu
achiziţionarea sau obţinerea imobilizării. Valoarea reziduală reprezintă
valoarea estimată a recuperărilor la momentul scoaterii din funcţiune a
imobilizării din care s-au scăzut cheltuielile cu scoaterea din funcţiune.
Durata de serviciu reprezintă numărul de perioade de funcţionare a
imobilizării. Trebuie să fie mai mare de 2 ani.
Amortizarea liniară se calculează după formula:
Vi - Vr
Al =
Dn
în care:
A l = Amortizarea liniară
Vi = Valoarea de intrare
Vr = Valoarea reziduală
Dn = Durata de serviciu normată
Exemplu
S.C. ALFA SA achiziţionează un microcalculator cu suma de 9950000 lei.
Durata de serviciu normată este de 5 ani, iar valoarea reziduală este nulă.
Să se determine amortizarea după metoda liniară.

DDB DDB(valoare-de-intrare,valoare-reziduală,durata-de-serviciu,
perioada, factor) calculează amortizarea imobilizărilor după metoda
degresivă (Double Decline Balance depreciation). Valoarea de intrare a
imobilizării însumează toate costurile cu achiziţionarea sau obţinerea
imobilizării. Valoarea reziduală reprezintă valoarea estimată a recuperărilor
la momentul scoaterii din funcţiune a imobilizării, din care s-au scăzut
cheltuielile cu scoaterea din funcţiune. Durata de serviciu reprezintă
numărul de perioade de funcţionare a imobilizării şi trebuie să fie mai mare
de 2 ani. Perioada reprezintă anul pentru care se calculează. Argumentul
factor poate să lipsească, având implicit valoarea 2. Dacă se introduce o
altă valoare, se modifică practic formula de calcul.
Amortizarea degresivă se calculează după formula:
Programe de calcul tabelar 37

Vcontabila * factor
ad =
Dn
în care:
ad = amortizarea degresivă
V contabila= valoarea contabilă a imobilizării (Valoarea de inventar minus
amortizarea calculată până în perioada de calcul)
Dn = Durata de serviciu normată
factor = 2, dar se poate lucra şi cu altă valoare
Imobilizarea se consideră amortizată când valoarea contabilă este egală cu
valoarea reziduală.
Exemplu
Pentru mijlocul fix prezentat mai sus să se calculeze amortizarea prin
metoda degresivă. Formulele de calcul sunt indicate în figura de mai sus.

3.3.4 Detalii şi exemple privind funcţiile de căutare


VLOOKUP VLOOKUP(cheie-de-căutare,tabel,număr-coloană,tip-căutare)
determină conţinutul căsuţei aflate în coloana specificată prin număr-
coloană dintr-un tabel de căutare verticală. Tabelul de căutare verticală este
un grup de căsuţe ale căror valori sunt, eventual, sortate crescător pe prima
coloană a tabelului. VLOOKUP compară valoarea cheii de căutare cu
fiecare din valorile căsuţelor situate pe prima coloană. Astfel se determină
linia care conţine elementul căutat.
Cheia de căutare specifică valoarea de căutat, sub formă de număr, text,
dată sau adresă (sau nume asociat zonei).
Tabelul de căutare este zona în care trebuie realizată căutarea şi se
specifică prin adrese sau un nume asociat ei.
Număr-coloană indică poziţia coloanei pe care se găseşte data căutată, în
cadrul tabelului de căutare (coloanele sunt numerotate de la 1 la n).
Tip-căutare este un argument de tip logic, care arată dacă se face sau nu o
căutare exactă. Dacă argumentul lipseşte sau are valoarea TRUE, atunci
când valoarea cheii de căutare nu coincide cu nici una din valorile de pe
prima coloană, localizarea se face pe valoarea inferioară cea mai apropiată
de cea căutată (vezi fig. nr. 3.24). Dacă argumentul este FALSE, se va
realiza o căutare exactă, adică atunci când cheia de căutare nu este găsită
funcţia returnează valoarea #N/A (vezi fig. nr. 3.25). În cazul căutării
exacte, nu este obligatoriu ca valorile cheii de căutare de pe prima coloană
să fie ordonate.
Cheia de căutare trebuie să fie mai mare sau egală cu prima valoare din
tabel, în caz contrar rezultatul funcţiei VLOOKUP este #N/A. După lo-
calizarea liniei are loc deplasarea la dreapta cu un număr de poziţii
specificat prin număr-coloană.
Exemple
Se consideră o listă ce conţine datele despre salariaţii unei firme. Se doreşte
obţinerea de informaţii despre salariatul care are marca 1115 şi a datelor
privind salariile ce corespund la vechimile de 2, respectiv 4 ani.
38 Instrumente software pentru afaceri

În fig. nr. 3.24 s-au arătat funcţiile de căutare utilizate pentru extragerea
datelor din listă. Zonei de căutare (A2:D5) i-a fost atribuit numele SAL.
Tabelul este alcătuit din 4 coloane, numerotate de la 1 la 4, iar pe prima
coloană sunt valorile numărului de marcă, ce constituie cheia de căutare.
Valorile sale sunt ordonate crescător, pentru că se va face o căutare exactă:
în G7:G9, pe baza cheii de căutare din G6, se preiau din zona SAL datele
despre un salariat. Dacă se introduce o valoare inexistentă a numărului de
marcă, VLOOKUP dă mesajul de eroare #N/A (vezi fig. nr. 3.25). În fig.
nr. 3.24 sunt descrise şi funcţiile din căsuţele H11:H12, care caută salariul
ce corespunde la diferite valori ale vechimii în muncă. Zona de căutare este
C2:D5, cheia de căutare este vechimea (C11, C12), iar pentru argumentul
tip-căutare se precizează valoarea FALSE.

Fig. nr. 3.24. Utilizarea funcţiei de căutare VLOOKUP

Fig. nr. 3.25. Mesaj de eroare VLOOKUP


HLOOKUP HLOOKUP(cheie-de-căutare,tabel,număr-linie,tip-căutare) deter-
mină conţinutul căsuţei aflate în linia specificată prin număr-linie dintr-
un tabel de căutare orizontală. Tabelul de căutare orizontală este un grup
de căsuţe ale căror valori sunt sortate, eventual, crescător pe prima linie
a tabelului (numerotată cu 1). HLOOKUP compară valoarea cheii de
căutare cu fiecare din valorile căsuţelor situate pe prima linie. Astfel se
determină coloana care conţine elementul căutat. Dacă tip-căutare
lipseşte sau este TRUE iar valoarea cheii de căutare nu coincide cu nici
unul din elementele specificate în prima linie atunci localizarea se face
pe valoarea inferioară cea mai apropiată. Dacă argumentul tip-căutare
are valoarea FALSE, se realizează căutare exactă, astfel că dacă valoarea
cheii de căutare nu este găsită se va afişa o valoare de eroare. Cheia de
căutare trebuie să fie mai mare sau egală cu prima valoare din tabel, în
caz contrar rezultatul funcţiei HLOOKUP este o valoare de eroare.
După localizarea coloanei are loc deplasarea în jos cu un număr de
poziţii specificat prin număr-linie.
Exemple
Se consideră un tabel cu date referitoare la numărul angajaţilor din
compartimentele unei firme pe parcursul a 20 de ani. Se cere obţinerea
unor date referitoare la numărul angajaţilor din diferite perioade.
Programe de calcul tabelar 39

Tabelul de căutare este în zona B4:E9, pe prima linie aflându-se valorile


cheii de căutare (anul). Liniile sunt numerotate de la 1 la 6.
HLOOKUP(1995,B4..E9,6), introdusă într-o căsuţă din afara tabelului
(D12), generează numărul 7, care reprezinta numărul de angajaţi din
anul 1995 ai compartimentului contabilitate.
HLOOKUP(2002,B4..E9,6) introdusă într-o căsuţă din afara tabelului
(D13) generează numărul 10 care reprezinta numărul de angajaţi, din
anul 2000, ai compartimentului contabilitate. Se observă că s-a luat
valoarea cunoscută cea mai apropiată de anul 2002, respectiv 2000.
HLOOKUP(1985,B4..E9,6) introdusă într-o căsuţă din afara tabelului
(D14) generează valoarea #N/A deoarece cheia de căutare este mai mică
decăt prima valoare din linia 0 a tabelului.

3.3.5 Surse de erori în utilizarea formulelor şi funcţiilor


Experienţa şi practica orelor de laborator cu studenţii anului I ne-au ajutat în formularea
tipurilor de erori de mai jos:
• toate parantezele deschise trebuie închise (dacă se editează formula/funcţia, Excel
va afişa perechile de paranteze în culori diferite, pentru ca urmărirea lor să fie
uşurată);
• indicarea corectă a adreselor de căsuţe şi folosirea operatorului adecvat pentru a
specifica un grup de căsuţe (de regulă, operatorul “:”) sau specificarea corectă a
numelui asociat căsuţei/grupului;
• introducerea numerelor folosind un anumit format de afişare (cum ar fi 1 000 sau
1,000);
• neprecizarea tuturor argumentelor necesare calculului sau specificarea unui număr
prea mare de argumente;
• depăşirea numărului maxim de niveluri acceptat în imbricarea funcţiilor (mai mult
de 7 funcţii );
• omiterea numelui foii de calcul în referinţele căsuţelor care nu sunt din foaia de
calcul curentă;
40 Instrumente software pentru afaceri

• în specificarea datelor din alt workbook nu s-a precizat corect numele şi calea de
căutare.
Tabelul nr. 3.12. Valori de eroare ce pot apare la introducerea de formule/funcţii
Valoare Semnificaţie
afişată
##### Valoarea calculată este prea mare pentru a putea fi afişată în căsuţa
curentă. Trebuie redimensionată coloana.
#VALUE! S-a utilizat un argument/operand greşit sau incompatibil (de exemplu, aţi
introdus o valoare numerică, în timp ce formula cerea o dată de tip logic:
TRUE/FALSE).
#DIV/0! În calculele realizate s-a ajuns la o împărţire la 0 (zero) - de cele mai multe
ori este vorba de o căsuţă care este goală, având astfel valoarea zero.
#NAME? Excel nu recunoaşte textele specificate; pot fi scrise greşit sau inexistente:
numele funcţiei, numele de căsuţe sau zone.
#N/A Arată că o valoare nu este disponibilă (N/A – Not Available) pentru
efectuarea calculelor cerute de formulă (în proiectarea unui model de lucru,
puteţi introduce #N/A pentru valori pe care nu le cunoaşteţi şi care sunt
utilizate în formule/funcţii). Funcţiile de căutare pot afişa această eroare,
atunci când căutarea eşuează.
#REF! Indică o adresă de căsuţă care nu este validă.
#NUM! Indică o problemă în legătură cu o valoare numerică dintr-o formulă sau
funcţie (folosirea unui alt tip de argument în locul unuia numeric, dar şi
obţinerea unui rezultat care nu poate fi afişat de Excel – un număr foarte
mare sau foarte mic).
#NULL! Apare în cazul specificării unei intersecţii a 2 zone care nu se intersectează
de fapt.

3.3.6 Sistemul de asistenţă în utilizarea funcţiilor


Sistemul de asistenţă se activează apelând Insert Function, prin clic pe butonul fx, din

stânga liniei de editare sau butonul asociat din linia standard de instrumente ( ).
Fereastra de dialog deschisă conţine lista argumentelor funcţiilor folosite de utilizator,
însoţite de explicaţii şi de rezultate parţiale şi finale, pe măsură ce se introduc aceste
argumente (vezi fig. nr. 3.26).
Programe de calcul tabelar 41

Fig. nr. 3.26. Sistemul de asistenţă pentru funcţii

3.4 FACILITĂŢI GRAFICE ÎN PROGRAMELE DE CALCUL


TABELAR

3.4.1 Principalele tipuri de grafice


Orice program de calcul tabelar oferă cinci tipuri fundamentale de grafice: liniar,
histogramă, xy (nor de puncte), zonal, diagramă de structură (cerc). În fapt, numărul tipurilor
de grafice este mai mare, iar dacă se au în vedere şi subtipurile, utilizatorul are la dispoziţie
câteva zeci de variante de grafice. Sub mediul de lucru Windows, pentru majoritatea tipurilor
de grafice există atât reprezentare 2 D, cât şi 3 D.
Column Graph (histogramă) constă dintr-o serie de bare verticale, fiecare
reprezentând o valoare numerică. Asigură reprezentarea seriilor dinamice de date. Un tip
particular de histogramă este cea orizontală (bar graph), care permite o mai bună
reprezentare comparativă a valorilor, în detrimentul reprezentării dinamice (în timp). Ambele
tipuri de histograme au şi varianta de reprezentare tridimensională, precum şi varianta stivă,
în care se evidenţiază relaţia dintre parte şi întreg.
Line Graph (grafic liniar) reprezintă grafic evoluţia, în timp, a unuia sau a mai multor
fenomene sau procese. Fiecare linie reprezintă o categorie de date, iar fiecare punct de pe
linie reprezintă o valoare a unei date la un moment dat. Sunt utile pentru urmărirea trendului
şi pentru previziuni.
42 Instrumente software pentru afaceri

Pie Chart (diagrama de structură) este folosit pentru a evidenţia, prin sectoare de cerc,
ponderea fiecărei componente a mulţimii reprezentate. Pentru a scoate şi mai mult în relief
anumite elemente, se poate apela la facilitatea de expandare a sectoarelor de cerc. Un mod
asemănător de reprezentare a unei structuri este graficul de tip doughnut (grafic de tip
inel). Acesta prezintă avantajul că poate reprezenta mai multe serii de date.
Area Graph (grafic zonal) realizează ca şi cel liniar reprezentarea evoluţiei în timp,
dar indică mai clar magnitudinea schimbărilor în timp.
XY Graph (grafic de tip XY sau nor de puncte) scoate în evidenţă corelaţiile existente
între două şiruri de date numerice. Aceste grafice sunt redate prin linii, desenate în sensul dat
de valorile de reprezentat ca puncte din grafic. Spre deosebire de graficele tip linie, cele de tip
XY folosesc o scală numerică şi pe axa Ox. O variantă a acestui grafic este cel denumit
bubble, în care punctele sunt înlocuite de cerculeţe, ale căror dimensiuni indică valoarea
unei a treia variabile.
Pe lângă acestea, în programele de calcul tabelar se regăsesc şi alte tipuri particulare de
grafice. Astfel, în Excel utilizatorul mai poate alege dintre următoarele tipuri:
• Radar, în care fiecare categorie reprezentată are propria axă, pornind din acelaşi
punct central al diagramei;
• Surface, utilizat pentru a găsi combinaţiile optime dintre două seturi de date.
Este o reprezentare tridimensională, asemănătoare cu o hartă topografică,
prezentând în culori diferite datele ce se regăsesc în acelaşi interval de valori;
• High-low-close, utilizat adesea pentru prezentarea fluctuaţiilor de preţuri pe
piaţa bursieră (vezi cele trei componente: cel mai mare, cel mai mic şi preţul la
închidere), dar şi pentru reprezentarea datelor ştiinţifice (de exemplu, a
fluctuaţiilor de temperatură). Există şi variante ale acestui tip de grafic, precum
Open-high-low-close sau Volume-high-low-close;
• Cone, Cylinder, Pyramid, care realizează reprezentări tridimensionale ale
valorilor numerice în formă de con, cilindru sau piramidă, având ca atu un aspect
deosebit faţă de un grafic clasic, cum este cel de tip Column.
La toate acestea se adaugă tipurile de grafice personalizate sau definite de utilizator.
Acesta are posibilitatea de a adăuga în lista de opţiuni un tip nou de grafic, derivat din cele
oferite de sistem, care va apare în listă la utilizările viitoare, sub un nume stabilit de utilizator.
Aşa cum se observă din fig. nr. 3.27, utilizatorul poate selecta pentru un grafic unul
dintre tipurile standard sau, dacă doreşte unul dintre tipurile personalizate, va executa clic pe
Custom Types şi va selecta din listă opţiunea dorită.
Programe de calcul tabelar 43

Tipuri
personalizate
de grafice

Tipuri de
grafice Subtipuri
standard de grafice

Fig. nr. 3.27. Tipuri de grafice EXCEL

3.4.2.Procedura generală de creare a graficelor


Orice grafic se creează pe baza datelor din foile de calcul, cu menţiunea că valorile
reprezentate grafic vor fi actualizate ori de câte ori se modifică datele din foaia de calcul
sursă. Majoritatea programelor de calcul tabelar au un asistent (în Excel se numeşte Chart
Wizard), care îl îndrumă pe utilizator în crearea graficului. Procedura generală de lucru este
structurată în mai mulţi paşi, care se parcurg cu ajutorul comenzilor Next şi Back
(înainte/înapoi) şi care pot fi sistematizaţi astfel:
• alegerea tipului de grafic (vezi subcapitolul 3.4.1 şi fig. nr. 3.27);
• selecţia zonei de căsuţe care conţine datele de exprimat grafic (dacă nu a fost
selectată înainte de lansarea Wizard-ului) şi precizarea informaţiilor despre
dispunerea seriilor de date (pe linie/pe coloană), aşa cum se poate vedea în fig.
nr. 3.28;
Observaţie:
Este posibilă selectarea de zone neadiacente, dacă după selectarea primei zone, se menţine
apăsată tasta CTRL în timp ce se selectează celelalte zone. Atenţie! Selecţiile neadiacente
trebuie să formeze un dreptunghi.
44 Instrumente software pentru afaceri

Fig. nr. 3.28. Spec ificarea datelor de reprezentat grafic


• specificarea opţiunilor pentru îmbunătăţirea graficului (vezi fig. nr. 3.29): titlu
grafic (Titles), titluri şi format pentru axe (Axes), legendă (Legend), etichete
pentru date (Date Labels), linii orizontale şi/sau verticale (Gridlines) etc.

Fig. nr. 3.29. Definirea opţiunilor pentru personalizarea graficului


• indicarea poziţiei (locaţiei) graficului (vezi fig. nr. 3.30). Astfel, graficul poate fi:
• un obiect inclus într-o foaie de calcul (embedded chart), care poate fi

plasat cu uşurinţă în orice zonă a acesteia, poate fi redimensionat după


cerinţe şi poate fi copiat într-o altă aplicaţie (de exemplu, Word) prin
mecanismul Clipboard;
• introdus într-o foaie independentă, denumită Chart Sheet.
Programe de calcul tabelar 45

Fig. nr. 3.30. Plasarea graficului


• terminarea operaţiunilor prin selectarea butonului Finish.
Aşa cum se observă şi în figurile de mai sus, utilizatorului îi este prezentat graficul în
fiecare etapă intermediară (într-o zonă de tip Preview), astfel că el poate mai uşor face
modificări ale aspectelor care nu corespund dorinţelor sale. Se poate reveni oricând la etapele
anterioare (butonul Back) pentru a realiza modificările dorite.

Fig. nr. 3.31. Linia de instrumente Chart


Fiecare componentă a graficului (seriile de date, axele, titlurile, legenda etc.) pot fi
modificate individual după terminarea graficului. Fiecare dintre ele are definit un meniu cu
comenzi specifice (numit meniu shortcut), ce se apelează prin clic dreapta. De asemenea,
pentru modificarea unui grafic există linia de instrumente Chart, care se activează automat la
selectarea graficului (vezi fig. nr. 3.31).
Prezentăm, în continuare, câteva operaţiuni ce se pot efectua după realizarea unui
grafic:
• modificarea aspectului graficului (tip, titluri, legendă, etichete etc.), prin
alegerea comenzilor corespunzătoare din linia de instrumente Chart sau din
meniul de tip shortcut;
• adăugarea de noi date, modificând zona datelor (Data Range) sau utilizând
comenzile Copy şi Paste;
• ştergerea unei serii de date din grafic (se apasă tasta Delete după selectarea
seriei din grafic);
• protejarea graficului, împiedicând modificarea lui prin comanda Protection din
meniul Tools;
• realizarea de simulări;
• adăugarea unei linii de trend.

3.4.3 Previziuni şi simulări pe baza graficelor EXCEL


Graficul exemplificat în fig. nr. 3.32 a fost inclus în foaia de calcul care conţine datele.
Este un grafic de tip Column, căruia i-a fost adăugată două linii de trend pentru seriile de
valori corespunzătoare veniturilor totale şi a cheltuielilor totaleprofitului brut, folosind
funcţia polinomială .
46 Instrumente software pentru afaceri

Fig. nr. 3.32. Grafic inc lus în foaia de calcul


Pentru realizarea de previziuni cu ajutorul graficelor, se parcurg următorii paşi:
(i) se execută clic pe reprezentarea seriei de date pentru care dorim trendul şi
estimările viitoare;
(ii) din meniul Chart sau meniul asociat butonului drept al mouse-ului se alege
comanda Add Trendline;
(iii) se defineşte tipul trendului/regresiei: liniar, polinomial, logaritmic, exponenţial;
(iv) opţional, se pot cere estimări pentru un anumit număr de perioade viitoare, prin
comenzile din pagina Options (Forecast, opţiunea Forward).
Prin clic dreapta pe linia de trend definită, selectând comanda Format Trendline, se
pot modifica ulterior opţiunile utilizatorului (stilul liniei, tipul regresiei, estimările).
Observaţie:
O linie de trend se poate defini doar pentru graficele bidimensionale (2D) de tipurile area,
bar, column, line, stock, xy, bubble.
Pe baza unui grafic se pot reliza şi simulări. Am arătat că între grafic şi datele
reprezentate din foaia de calcul există o legătură permanentă, în sensul că orice modificare a
datelor duce la actualizarea corespunzătoare a graficului. Ce nu am spus este că şi reciproca
este adevărată: o modificare în grafic va duce la schimbarea datelor din foaia de calcul. Cum
se observă în fig. nr. 3.30, veniturile în 2000 au fost de 410 milioane lei. Dacă în grafic am
schimbat nivelul veniturilor din acest an, ridicându-l la 1850 milioane, această valoare a
apărut instantaneu şi în tabelul din foaia de calcul (vezi fig. nr. 3.33). Realizarea simulării
presupune simpla modificare, cu ajutorul mouse-ului, a nivelului reprezentat grafic (se
execută clic pe seria de date dorită, apoi din nou clic pe valoarea care se vrea schimbată şi se
face Drag&Drop în direcţia de modificare dorită).
Programe de calcul tabelar 47

Observaţie:
Modificarea realizată în acest fel este permanentă! Cea mai simplă modalitate de anulare este
comanda Undo din meniul Edit.
Să presupunem acum că dorim să aducem profitul net al anului 2002 la nivelul celui din
2005. Va trebui deci să modificăm seria de date reprezentată printr-o linie, în punctul ce
corespunde anului 2002. Această operaţiune este mai complexă decât a modificării
veniturilor, întrucât intervine o formulă ce calculează profitul ca diferenţă între venituri şi
cheltuieli. De aceea, pe ecran apare o fereastră de dialog numită Goal Seek, în care se
precizează căsuţa a cărei valoare se actualizează (E10) la valoarea ţintă (885) şi se cere
precizarea căsuţei a cărei valoare se va modifica pentru a atinge valoarea ţintă (vezi fig. nr.
3.34). Pentru creşterea dorită a profitului există 2 posibilităţi de modificare: a veniturilor (E5)
sau a cheltuielilor (E6). Am ales prima variantă (nu este posibilă modificarea mai multor
căsuţe), iar rezultatul se poate observa în fig. nr. 3.35.

Fig. nr. 3.33. Simulare pe bază de grafic. Exemplu 1.

Fig. nr. 3.34. Fereastra de dialog Goal Seek


48 Instrumente software pentru afaceri

Fig. nr. 3.35. Simulare pe bază de grafic. Exemplu 2.


Observaţie:
Se pot realiza simulări doar pentru graficele bidimensionale (2D) de tipurile bar, column, line,
pie, doughnut, xy, bubble.

3.5 BAZE DE DATE ŞI TABELE DE SIMULARE

3.5.1 Baze de date


Modulul pentru baze de date din programele de calcul tabelar asigură gestionarea
datelor organizate în liste sau baze de date, permiţând crearea, actualizarea şi interogarea
acestora, precum şi efectuarea unei complexe game de operaţiuni asupra structurii
înregistrărilor. Structurile de date gestionate de un program de calcul tabelar sunt listele. Într-
o listă datele sunt grupate pe linii şi coloane. Pe de altă parte, putem spune că un program de
calcul tabelar lucrează cu baze de date, pentru că le poate importa din SGBD-uri precum
Access sau FoxPro, convertindu-le în liste, pe care le tratează ca şi baze de date. Programele
de calcul tabelar execută operaţiuni specifice bazelor de date, precum actualizarea datelor,
sortarea sau interogarea lor.

3.5.1.1 Scurtă prezentare a bazelor de date


Într-o bază de date prima linie este rezervată pentru schema (structura) bazei de date
şi constă din numele asociate câmpurilor. Următoarele linii conţin înregistrările bazei de
date, respectiv valorile luate de fiecare dintre atributele care descriu obiectele reprezentate de
baza de date (vezi fig. nr. 3.36).
Programe de calcul tabelar 49

Acelaşi centralizator poate să conţină mai multe baze de date, dar se recomandă
plasarea lor în foi de calcul distincte.
Linia de structură
câmpuri

Î
N
R
E
G
I
S
T
R
Ă
R
I

Fig. nr. 3.36. Bază de date în Excel


Crearea unei baze de date presupune doar introducerea numelor câmpurilor în prima
linie ocupată de baza de date, urmată de introducerea valorilor asociate în următoarele linii.
Actualizarea bazei de date se realizează foarte simplu. Adăugarea de înregistrări presupune
introducerea de noi valori după ultima linie completată cu date. Inserarea în interior necesită
utilizarea comenzii de inserare linie în poziţia dorită, urmată de completarea cu date.
Modificarea conţinutului bazei de date utilizează facilităţile de editare (comanda EDIT).
Recomandări la crearea unei baze de date:
• la crearea unei baze de date, lăsaţi cel puţin un rând şi o coloană libere faţă de alte zone
din foaia de calcul, întrucât Excel va detecta automat baza de date în operaţiuni precum
sortarea sau interogarea;
• nu lăsaţi rânduri sau coloane libere într-o listă, pentru că vor genera rezultate eronate în
operaţiuni precum sortarea sau interogarea; pentru delimitare puteţi folosi linii de
demarcaţie (borders);
• plasaţi obligatoriu pe prima linie a listei numele câmpurilor, fiecare într-o singură căsuţă
(nu pe două linii!);
• atribuiţi nume întregii liste şi fiecărui câmp, pentru realizarea mai facilă a sortării şi
interogării.

3.5.1.2 Interogarea bazelor de date


Prin interogarea unei baze de date, utilizatorul vizualizează sau extrage, într-o zonă
distinctă, datele (înregistrările) care satisfac criteriile (condiţiile) precizate.
Pentru vizualizarea înregistrărilor ce îndeplinesc un criteriu de selecţie se foloseşte
opţiunea Autofilter din meniul Data. Prezenţa Autofilter-ului este indicată prin plasarea unui
buton cu simbolul  în fiecare căsuţă din linia de structură. Prin clic pe fiecare dintre acestea
se deschide o listă care conţine toate valorile câmpului respectiv, împreună cu opţiunile: All –
50 Instrumente software pentru afaceri

toate înregistrările, Top 10 – primele 10 valori, Custom – pentru definirea unui criteriu
specific (vezi fig. nr. 3.37).

Fig. nr. 3.37. Opţiunea AUTOFILTER


Dacă se selectează una din valori, în listă vor rămâne doar înregistrările în care câmpul
are valoarea selectată. Exemplu: lista salariaţilor care nu au copii (vezi fig. nr. 3.38).

Fig. nr. 3.38. Filtrarea unei liste


Condiţiile de selecţie compuse se introduc cu ajutorul opţiunii Custom.

Fig. nr. 3.39. Construirea unei condiţii de filtrare


De exemplu, pentru a vizualiza salariaţii fără copii şi cu salarii mai mici de 1200000
lei, se alege opţiunea Custom (vezi fig. nr. 3.39). Prin acest dialog se pot defini una sau două
condiţii care se referă la câmpul respectiv (în exemplul prezentat, salariul de bază). Operatorii
de comparare sunt în lista din stânga, iar valorile posibile în cea din dreapta (dacă nu se
regăseşte valoarea dorită, utilizatorul o va edita). Dacă se definesc 2 condiţii trebuie ales
operatorul (AND/OR). Rezultatul interogării este arătat în fig. nr. 3.40.

Fig. nr. 3.40. Filtrarea unei liste pe baza valorilor a două câmpuri
Programe de calcul tabelar 51

Prin opţiunea Autofilter este posibilă interogarea după criterii oricât de complexe, cu
referire la mai multe câmpuri ale bazei de date. Ceea ce nu se poate realiza este extragerea
rezultatelor într-o zonă distinctă a foii de calcul. Acest lucru este posibil prin comanda Data/
Filter/ Advanced Filter. Fereastra de dialog este prezentată în fig. nr. 3.41. Acţiunea care se
execută implicit este filtrarea listei, cu reţinerea înregistrărilor care îndeplinesc condiţiile
(Filter the list, in-place).
Pentru a realiza această acţiune, înainte de a declanşa operaţiunile specifice, trebuie să
fie definite în foaia de calcul 3 zone: zona de intrare, zona de criterii şi zona de ieşire. Zona
de intrare este cea care conţine datele (baza de date). Zona de ieşire este formată dintr-o
singură linie, care conţine numele câmpurilor extrase din baza de date. Dacă sub linia
menţionată există anumite căsuţe ocupate, conţinutul acestora este periclitat întrucât poate
interveni operaţiunea de suprascriere. Zona de criterii conţine numele câmpului/ câmpurilor şi
condiţia/ condiţiile propriu-zise (vezi fig. nr. 3.42).
Legătura dintre zona de intrare, zona de criteriu şi cea de ieşire se realizează prin
numele câmpurilor. De aceea, se recomandă copierea acestor nume din prima linie a zonei de
intrare în celelalte două zone.
Pentru extragerea datelor se selectează acţiunea Copy to another location. Această
acţiune solicită precizarea următoarelor elemente:
• zona de intrare (opţiunea List range), care arată baza de date supusă interogării (în
exemplu, zona A1:G11, căreia i s-a atribuit numele SAL);
• zona de criterii (opţiunea Criteria range) prin intermediul căreia are loc selecţia
înregistrărilor din baza de date (în exemplu, zona H1:H2);
• zona de ieşire (opţiunea Copy to) care specifică grupul de căsuţe în care se vor
plasa rezultatele (în exemplu, zona A16:D16).
Dacă se selectează opţiunea Unique records only, se elimină înregistrările duplicat din
grupul de ieşire. Rezultatul interogării (lista salariaţilor cu salarii mai mici de 1200000 lei)
este prezentată în fig. nr. 3.42.

Fig. nr. 3.41. Fereastra de dialog Advanced Filter


52 Instrumente software pentru afaceri

Fig. nr. 3.42. Interogarea unei liste, cu extragerea datelor într-o zonă distinctă

Recomandări
La completarea zonei de criterii, trebuie respectate următoarele reguli:
• folosiţi aceleaşi nume care apar în grupul de intrare; este bine să vă creaţi textul criteriului
prin copierea numelor din zona de intrare;
• apelaţi la simbolurile ? şi * pentru a asigura coincidenţa dorită cu grupul de intrare,
simbolurile având următoarele semnificaţii: ? = orice caracter, * = orice grup de caractere
până la sfârşitul textului;
• folosiţi ~ (tilda) pentru a arăta excepţiile la căutare, semnul respectiv însemnând toate
înregistrările, cu excepţia a ceea ce urmează după el. Exemplu: ~Bran înseamnă toate
înregistrările bazei, mai puţin cea cu numele Bran;
• combinaţi cele trei simboluri pentru definiri complexe de criterii. De exemplu, ~B*
selectează toate înregistrările care au valori pe câmpul criteriu care nu încep cu litera B;
La scrierea valorilor criteriului trebuie respectate următoarele reguli:
• pentru a efectua căutarea după o valoare dată, introduceţi valoarea drept criteriu. Formatul
datei nu are importanţă în selecţia înregistrărilor;
• pot fi introduse formule legate între ele prin operatori logici pentru efectuarea căutărilor
valorilor care îndeplinesc condiţia definită de noi, cum ar fi valorile mai mari decât 100000.
Introduceţi condiţia ca o expresie logică în grupul criteriu (exemplu: >=100000), folosind
adresa căsuţei corespunzătoare câmpului dorit din prima înregistrare a bazei de date;
• pot fi introduse formule care să conţină funcţii ale bazelor de date.
La introducerea criteriilor în câmpuri multiple trebuie respectate următorele reguli:
• introduceţi criteriile diverselor câmpuri pe aceeaşi linie a grupului criteriu, pentru a selecta
numai înregistrările care îndeplinesc toate criteriile concomitent. Excel tratează criteriile
scrise pe aceeaşi linie a grupului criteriu ca şi cum ar fi legate între ele prin operatorul logic
#AND# (şi logic). Nu uitaţi să redefiniţi grupul alocat criteriului astfel încât el să conţină
toate coloanele cu criterii.

3.5.1.3 Sortarea bazelor de date


Programe de calcul tabelar 53

Sortarea înseamnă rearanjarea datelor unui grup într-o ordine definită de utilizator.
Grupul poate fi format din înregistrările unei baze de date sau din liniile unei liste. Sortarea se
poate face în ordine ascendentă (1 – 9, A – Z) sau descendentă (9 – 1, Z – A), pe baza
valorilor unei coloane (câmp) sau mai multor coloane ale listei. La sortarea după un câmp de
tip caracter, nu se face distincţia între litere mici şi majuscule. Dacă se doreşte aceasta trebuie
selectată opţiunea Case sensitive din Sort Options (vezi fig. nr. 3.43). Se pot utiliza şi alte
criterii de sortare, indicate de utilizator dintr-o listă definită anterior (spre exemplu, se poate
face sortare după luni: ianuarie, februarie ş.a.m.d.). În fig. nr. 3.43 se observă opţiunea First
key sort order, care este o listă ascunsă ce conţine ordini de sortare definite de utilizator. O
altă opţiune de sortare este cea care se referă la orientarea datelor. De obicei se sortează
liniile unei liste, astfel că opţiunea implicită este Sort top to bottom. Dacă se plasează
câmpurile pe liniile primei coloane, se pot sorta înregistrările plasate pe coloane (vezi fig. nr.
3.43).

sortarea pe linii
sortarea pe coloane

Fig. nr. 3.43. Opţiuni de sortare


Pentru realizarea rapidă a sortării obişnuite, după valorile de pe o singură coloană se
pot utiliza butoanele Sort Ascending, respectiv Sort Descending din linia de instrumente,
după ce cursorul a fost poziţionat pe coloana câmpului după care se face ordonarea (vezi fig.
nr. 3.44 în care s-au sortat salariaţii în ordinea descrescătoare a salariilor).

poziţia
cursorului

Fig. nr. 3.44. Opţiuni de sortare


54 Instrumente software pentru afaceri

Pentru sortarea unei liste după valorile mai multor câmpuri se utilizează comanda Sort
din meniul Data (vezi fig. nr. 3.45). Nu este obligatorie selectarea în prealabil a întregii liste,
ci doar poziţionarea cursorului în cadrul acesteia (Excel va extinde automat selecţia la
întreaga listă). Ordinea de sortare se precizează prin numele câmpurilor pe care sistemul le
preia automat sub formă de liste. Primul câmp specificat este cheia primară de sortare, iar al
doilea cheia secundară. Poate exista şi o cheie terţiară. Pentru fiecare dintre ele trebuie
indicată ordinea de sortare (vezi fig. nr. 3.45).
Observaţii:
• dacă nu sunt mai multe înregistrări care au aceeaşi valoare pentru cheia primară,
precizarea unei chei secundare nu va avea nici un efect în ordonarea datelor, fiind astfel
absolut inutilă. Acelaşi lucru este valabil şi pentru cheia terţiară;
• la folosirea comenzii Sort, asiguraţi-vă că este selectată opţiunea Header row, care indică
prezenţa în cadrul listei a înregistrării de structură, întrucât aceasta nu trebuie inclusă în
zona care se sortează.

cheia primară
de sortare

ordinea de
cheia secundară
sortare
de sortare

cheia terţiară de
sortare

Fig. nr. 3.45. Sortarea după mai multe câmpuri

3.5.2 Tabele de simulare


Comanda Data/Table este cea mai reprezentativă pentru simulările avansate, utilizând
una sau două variabile.
Înainte de lansarea comenzii Data/Table trebuie definit tabelul de simulare. Un tabel de
simulare cu o variabilă este constituit, de obicei, din două coloane şi mai multe linii (vezi fig.
nr. 3.47). În Excel, el poate fi alcătuit şi din două linii şi mai multe coloane. În varianta
standard a tabelului de simulare, pe prima coloană se înscriu valorile care vor înlocui
variabila din formulă. Coloana a doua este rezervată rezultatelor simulării. Pe linia deasupra
acestei coloane trebuie înscrisă formula sau funcţia după care se realizează simularea. Pentru
a specifica variabila, este necesar să definim mai întâi modelul de simulare. Precizarea tuturor
acestor elemente se face prin dialog, într-o fereastră ce apare la execuţia comenzii Data/Table
(vezi fig. nr. 3.46).
Programe de calcul tabelar 55

Fig. nr. 3.46. Definirea unui tabel de simulare cu o variabilă


Cum se observă în fig. nr. 3.46, pentru un tabel de simulare cu o variabilă trebuie
completat doar unul dintre elemente: Column input cell, dacă valorile sunt aşezate pe
coloană, respectiv Row input cell, dacă valorile sunt aşezate pe linie.
Dacă se doreşte reliefarea efectelor schimbării valorilor a două variabile dintr-o
formulă se construieşte un tabel de simulare cu 2 variabile. Rezultatele vor fi plasate în
coloanele aflate sub formulă. Dialogul şi rezultatele simulării sunt prezentate în fig. nr. 3.48.
Se observă fereastra de dialog Table, în care sunt completate ambele elemente,
corespunzătoare celor două variabile pentru care s-au introdus valori, pe linie şi pe coloană.
Exemplu:
Dispuneţi de un cont de economii în care depuneţi anual suma de 1500 RON, timp de 10 ani.
Rata de actualizare aşteptată este de 15.00%. Care este suma de care dispuneţi la sfârşitul
celor 10 ani. Care ar fi rezultatul dacă rata de actualizare ar fi cuprinsă între 5% şi 20%? Care
ar fi rezultatele dacă durata depunerilor este cuprinsă între 2 şi 10 ani?
Rezolvarea este ilustrată în figurile nr. 3.47 şi 3.48.
56 Instrumente software pentru afaceri

Fig. nr. 3.47. Tabel de simulare cu o variabilă în EXCEL

Fig. nr. 3.48. Tabel de simulare cu două variabile în EXCEL


Capitolul 4

MODELUL RELAŢIONAL DE ORGANIZARE A BAZELOR DE


DATE

Sumar:
• Câte ceva despre baze de date
• Prezentare generală a modelului relaţional
• Restricţii ale bazei de date
• Schema şi conţinutul unei baze de date relaţionale
2 Instrumente software pentru afaceri

4.1. CÂTE CEVA DESPRE BAZE DE DATE


Simplificând şi exagerând nepermis lucrurile, am putea spune că există doi poli între care
poate fi poziţionată orice problemă informatică. Pe de o parte, cel al chestiunilor interesante, nu
neapărat cu formule şi calcule complexe, cât o anume ingeniozitate în rezolvare - mult invocata şi
aşteptata "fisă". Imaginea clasică a informaticianului mioritic (un informatician fără ochelari, adidaşi
şi blugi este unul îndoielnic, dacă nu insuportabil !) este cea a unui programator preocupat permanent
să găsească o funcţie recursivă care să-i rezolve o problemă neapărat de logică superioară.
Celălalt pol regrupează probleme în care complexitatea calculelor rareori depăşeşte nivelul
celor patru operaţii aritmetice elementare - adunare, scădere şi încă două; în schimb, volumul
informaţiilor şi zecile/ sutele moduri de regrupare şi agregare a lor este deconcertant.
Fără a face concurenţă vreunui manual de filosofie, putem spune că, din păcate, ca şi în viaţă,
ponderea problemelor din a doua categorie – să le spunem plicticoase – este mult mai mare decât
ponderea problemelor cu adevărat interesante. Aceasta ar fi vestea proastă. Vestea bună este că se
câştigă enorm de mulţi bani din chestiunile plicticoase. O veste intermediară ar fi că, în majoritate,
problemele pe care le are de rezolvat un informatician presupun elemente din ambele categorii. De
fapt, cei doi poli de care vorbim au o existenţă virtuală, fiind utili mai degrabă din raţiuni didactice &
pedagogice.
Cert este că, încă de la începuturile sale, informatica a fost confruntată nu numai cu efectuarea
de calcule sofisticate, ştiinţifice, dar şi cu stocarea şi gestionarea unui volum de informaţii din ce în ce
mai mare. Astfel încât apariţia unor instrumente software dedicate gestiunii şi prelucrării datelor a fost
doar o problemă de timp.

4.1.1 La început a fost fişierul


Prima care a resimţit acut nevoia unor instrumente software dedicate administrării unor
cantităţi imense de informaţii a fost armata SUA. În a doua parte a anilor '50 Departamentul Apărării
al SUA a format un grup de specialişti pentru elaborarea unui limbaj destinat aplicaţiilor
administrative, în care dificultatea majoră ţinea de volumul imens de resurse materiale şi financiare ce
trebuia "chivernisit" şi pentru care erau necesare rapoarte dintre cele mai diverse. La acel moment
apăruse FLOWMATIC, limbaj precursor celui care a fost considerat câteva decenii regele informaticii
economice – COBOL (Common Business Oriented Language).
Arhitectura aplicaţiilor de acest tip – specifică nu numai COBOL-ului, ci multor limbaje din a
III-a generaţie, denumită flat-files architecture – tradusă, într-o doară, în româneşte drept fişiere
independente – este reprezentată în figura 4.1. Specific acestui mod de lucru, referit ca file-based sau
flat files (fişiere independente), este faptul că fiecare dată (Data1, Data2,... Datan) este descrisă (nume,
tip, lungime), autonom, în toate fişierele în care apare. Mai mult, descrierea fiecărui fişier de date
(câmpurile care-l alcătuiesc, tipul şi lungimea fiecăruia, modul de organizare (secvenţial, indexat,
relativ etc.)) este obligatorie în toate programele care îl “citesc” sau modifică. Între FIŞIER1,
FIŞIER2, ... FIŞIERn nu există nici o relaţie definită explicit.
Modelul relaţional de organizarea a datelor în bazele de date 3

Data 1
Data 2 Raport 1

Data 3
FIŞIER 1 PRELUCRARE 1 Fişier de
Data 4 legături

Data 2
Raport 4
Data 4
FIŞIER 2 PRELUCRARE 2 Raport 3
Data 5
Raport 2
Data 6

Data 1 Raport 5
FIŞIER 3 PRELUCRARE 3
Data 5

Data 7
Data 8
DATE FIŞIERE PRELUCRĂRI IEŞIRI
Figura 4.1. Sistem informatic bazat pe organizarea datelor în fişiere independente

Spre exemplu, Data2 este prezentă în două fişiere de date, FIŞIER1 şi FIŞIER2. Dacă, prin
program, se modifică formatul sau valoarea acesteia în FIŞIER1, modificarea nu se face automat şi în
FIŞIER2; prin urmare, o aceeaşi dată, Data2, va prezenta două valori diferite în cele două fişiere, iar
necazurile bat la uşă: informaţiile furnizate de sistemul informatic sunt redundante şi prezintă un mare
risc de pierdere a coerenţei.
Se poate proiecta un mecanism de menţinere a integrităţii datelor, astfel încât actualizarea unei
date într-un fişier să atragă automat actualizarea tuturor fişierelor de date în care aceasta apare, însă, în
sistemele mari, care gestionează volume uriaşe de informaţii, implementarea unui asemenea mecanism
este extrem de complexă şi costisitoare. În plus, fişierele de date sunt uneori proiectate şi
implementate la distanţe mari în timp, în formate diferite: de exemplu, FIŞIER1 este posibil să fi fost
creat cu ajutorul limbajului COBOL, FIŞIER2 în FORTRAN iar FIŞIER3 în BASIC. În asemenea
condiţii, punerea în operă a mecanismului de menţinere a integrităţii devine o utopie.
Chiar numai şi din cele prezentate mai sus, se pot desprinde câteva dezavantaje ale organizării
datelor după modelul fişierelor independente:
Redundanţa şi inconsistenţa datelor: o aceeaşi dată apare în mai multe fişiere; în aceste cazuri
există riscul modificării acesteia într-un fişier fără a face modificările şi în toate celelalte fişiere.
Dificultatea accesului. Într-o întreprindere, o aceeaşi informaţie este exploatată de mai mulţi
utilizatori. Spre exemplu, pentru departamentul care se ocupă cu gestiunea stocurilor, intrările de
materiale trebuie ordonate pe magazii (depozite) şi repere, în timp ce pentru departamentul care se
ocupă cu decontările cu partenerii de afaceri ai întreprinderii, intrările trebuie ordonate pe furnizori ai
materialelor. Or, fişierele tradiţionale nu facilitează accesarea datelor după mai multe criterii, specifice
diferiţilor utilizatori sau grupuri de utilizatori.
Izolarea datelor: când datele sunt stocate în formate diferite, este dificil de scris programe care
să realizeze accesul într-o manieră globală a tuturor celor implicate în derularea unei tranzacţii.
Complexitatea apăsătoare a actualizărilor. O actualizare presupune adăugarea, modificarea
sau ştergerea unor informaţii din fişiere. Cum prelucrările se desfăşoară în timp real, de la mai multe
terminale (în mediile multi-utilizator), pot apare situaţii conflictuale atunci când doi utilizatori doresc
4 Instrumente software pentru afaceri

modificarea simultană a unei aceleiaşi date. Rezolvarea acestui gen de conflicte presupune existenţa
unui program-supervizor al prelucrărilor, care este greu de realizat cu o multitudine de fişiere, create la
distanţă în timp şi, în formate diferite.
Problemele de securitate ţin de dificultatea creării unui mecanism care să protejeze pe deplin
datele din fişiere de accesul neautorizat.
Probleme legate de integritatea datelor. Informaţiile stocate în fişiere sunt supuse la
numeroase restricţii semantice. Toate aceste restricţii alcătuiesc mecanismul de integritate a datelor,
deosebit de complex în mediile de lucru multi-utilizator şi eterogene.
Inabilitatea de a obţine răspunsuri rapide la probleme ad-hoc simple.
Costul ridicat se datorează gradului mare de redundanţă a datelor, eforturilor deosebite ce
trebuie depuse pentru interconectarea diferitelor tipuri de fişiere de date şi pentru asigurarea
funcţionării sistemului în condiţiile respectării unui nivel minim de integritate şi securitate a
informaţiilor.
Inflexibilitatea faţă de schimbările ulterioare, ce sunt inerente oricărui sistem informaţional.
Modelarea inadecvată a lumii reale.
Aceste dezavantaje sunt mai mult decât convingătoare, încât vă puteţi întreba dacă au existat
aşa inconştienţi care să-şi arunce banii pe apa... fişierelor independente. Ei bine, o serie de aplicaţii
dezvoltate în anii '60 sau '70 au fost moştenite şi folosite până în zilele noastre. De ce ? Datorită
consistentelor sume investite, care au putut fi amortizate (trecute pe costuri) doar în ani buni, chiar
decenii. Un alt motiv a fost însă funcţionalitatea şi viteza unor asemenea aplicaţii. Şi, nu în ultimul
rând, un mediu economic relativ “aşezat” (vă daţi seama că nu de mediul nostru economic este vorba),
în care nu au fost necesare modificări majore ale procedurilor şi funcţiilor esenţiale.

4.1.2 Baze de date


Sintagma bază de date apare pentru prima dată în titlul unei conferinţe organizate la Santa
Monica (California) în 1964 de System Development Corporation. Consacrarea definitivă a termenului
este marcată de publicarea în anul 1969, de către CODASYL, în cadrul unei conferinţe dedicate
limbajelor de gestiune a datelor, a primului raport tehnic în care este prezentat conceptul de bază de
date. Faţă de modelul fişierelor independente, noutatea o constituie existenţa unui fişier de descriere
globală a bazei, astfel încât să se poată asigura independenţa programelor faţă de date, după cum o
arată şi figura 4.2.
Avantajele organizării informaţiilor în baze de date decurg tocmai din existenţa acestui fişier
de descriere globală a bazei, denumit, în general, dicţionar de date (alte titulaturi: repertoar de date
sau catalog de sistem). Extragerea şi modificarea datelor, altfel spus, lucrul cu fişierele de date, se
derulează exclusiv prin intermediul dicţionarului în care se găsesc informaţii privitoare la structura
datelor şi restricţiile îndeplinite de acestea.
O bază de date (BD) reprezintă un ansamblu structurat de fişiere, care grupează datele
prelucrate în aplicaţiile informatice ale unei persoane, grup de persoane, întreprinderi, instituţii etc.
Formal, BD poate fi definită ca o colecţie de date aflate în interdependenţă, împreună cu descrierea
datelor şi a relaţiilor dintre ele, sau ca o colecţie de date utilizată într-o organizaţie, colecţie care
este automatizată, partajată, definită riguros (formalizată) şi controlată la nivel central.
Modelul relaţional de organizarea a datelor în bazele de date 5

B A Z A DE D A T E

Fişier de date 1

Fişier de date 2 Dicţionar


de date

Fişier de date n

Aplicaţia 1 Aplicaţia 2 Aplicaţia 3

Figura 4.2. Schemă de principiu a unei baze de date

Atunci când vorbim despre o bază de date, trebuie avute în vedere două aspecte fundamentale
aceste acesteia, schema şi conţinutul. Organizarea bazei de date se reflectă în schema sau structura sa,
ce reprezintă un ansamblu de instrumente pentru descrierea datelor, a relaţiilor dintre acestea, a
semanticii lor şi a restricţiilor la care sunt supuse. Ansamblul informaţiilor stocate în bază la un
moment dat constituie conţinutul sau instanţierea sau realizarea acesteia. În timp ce volumul prezintă
o evoluţie spectaculoasă în timp, schema unei baze rămâne relativ constantă pe tot parcursul utilizării
acesteia.

Într-un sistem informatic ce utilizează BD, organizarea datelor poate fi analizată din mai multe
puncte de vedere şi pe diferite paliere. De obicei, abordarea se face pe trei nivele: fizic sau intern,
conceptual sau global şi extern.
Nivelul fizic (sau intern). Reprezintă modalitatea efectivă în care acestea sunt "scrise" pe
suportul de stocare - disc magnetic, disc optic, bandă magnetică etc.
Nivelul conceptual (sau global). Este nivelul imediat superior celui fizic, datele fiind privite
prin prisma semanticii lor; interesează conţinutul lor efectiv, ca şi relaţiile care le leagă de alte date.
Reprezintă primul nivel de abstractizare a lumii reale observate. Obiectivul acestui nivel îl constituie
modelarea realităţii considerate, asigurându-se independenţa bazei faţă de orice restricţie tehnologică
sau echipament anume. Toţi utilizatorii îşi exprimă nevoile de date la nivel conceptual, prezentându-le
administratorului bazei de date, acesta fiind cel care are o viziune globală necesară satisfacerii tuturor
cerinţelor informaţionale.
Nivelul extern. Este ultimul nivel de abstractizare la care poate fi descrisă o bază de date.
Structurile de la nivelul conceptual sunt relativ simple, însă volumul lor poate fi deconcertant. Iar dacă
la nivel conceptual baza de date este abordată în ansamblul ei, în practică, un utilizator sau un grup de
utilizatori lucrează numai cu o porţiune specifică a bazei, în funcţie de departamentul în care îşi
desfăşoară activitatea şi de atribuţiile sale (lor). Simplificarea interacţiunii utilizatori-bază, precum şi
creşterea securităţii bazei, sunt deziderate ale unui nivel superior de abstractizare, care este nivelul
extern. Astfel, structura BD se prezintă sub diferite machete, referite, uneori şi ca sub-scheme, scheme
externe sau imagini, în funcţie de nevoile fiecărui utilizator sau grup de utilizatori.
6 Instrumente software pentru afaceri

Luând în considerare cele trei nivele de abstractizare, schematizarea unui sistem de lucru cu o
bază de date se poate face ca în figura 4.3.

Utilizator A1 Utilizator A2 Utilizator B1 Utilizator B2 Utilizator B3

Comenzi Comenzi
Aplicaţie Aplicaţie Aplicaţie
autonome autonome

Schemă externă Imagine A Schemă externă Imagine B


A (nivel extern) B (nivel extern)

Interfaţă A Interfaţă B
dintre nivelele dintre nivelele
global şi extern global şi extern
SISTEM DE
Schema Imagine globală GESTIUNE A
conceptuală BAZEI
(nivel global)
(globală) DE DATE

Interfaţă dintre nivelele


fizic şi global

Definirea structurii
interne de stocare Baza de date memorată pe disc
(Schema internă)

Figura 4.3. Schematizare a unui sistem de lucru cu o bază de date

Posibilitatea modificării structurii la un nivel, fără a afecta structura nivelului sau nivelelor
superioare, se numeşte autonomie a datelor stocate în bază, analizabilă pe două paliere.
Autonomia fizică reprezintă posibilitatea modificării arhitecturii bazei la nivel intern, fără ca
aceasta să necesite schimbarea schemei conceptuale şi rescrierea programelor pentru exploatarea bazei
de date. Asemenea modificări sunt necesare uneori pentru ameliorarea performanţelor de lucru (viteză
de acces, mărimea fişierelor etc.). Tot autonomia fizică este cea care asigură portarea bazei de date de
pe un sistem de calcul pe altul fără modificarea schemei conceptuale şi a programelor.
Autonomia logică presupune posibilitatea modificării schemei conceptuale a bazei (modificare
datorată necesităţii rezolvării unor noi cerinţe informaţionale) fără a rescrie programele de exploatare.
Autonomia logică a datelor este mai greu de realizat decât autonomia fizică, deoarece programele de
exploatare sunt dependente, în foarte mare măsură, de structura logică a datelor pe care le consultă şi
actualizează, în ciuda existenţei dicţionarului de date. Fireşte, un element important îl reprezintă şi
anvergura modificării schemei conceptuale.
Datele stocate într-o BD prezintă, într-o măsură mai mare sau mai mică, următoarele
caracteristici:
• partajabilitate – disponibilitate pentru un mare număr de utilizatori şi aplicaţii;
• persistenţă – existenţă permanentă, din momentul preluării în bază până în momentul
actualizării sau ştergerii;
• securitate – protejarea de accesul neautorizat, atât în ceea ce priveşte citirea şi copierea, cât şi
modificarea şi ştergerea;
Modelul relaţional de organizarea a datelor în bazele de date 7

• validitate – referită şi ca integritate sau corectitudine – priveşte gradul de adecvare dintre


datele din bază şi realitatea, procesele pe care le reflectă aceste date;
• consistenţă – ori de câte ori diverse aspecte ale proceselor sau fenomenelor reale sunt preluate
în bază sub forma a doua sau mai multor entităţi sau atribute, aceste entităţi /atribute trebuie să
fie în concordanţă unele cu celelalte, să respecte relaţiile existente între aspectele proceselor
/fenomenelor reale;
• nonredundanţă - pe cât posibil, o entitate din realitate ar trebui să aibă un singur corespondent
în baza de date;
• independenţă – priveşte autonomia logică şi fizică evocate mai sus.

4.1.3 Modele de organizare a datelor în baze


Nucleul unei baze de date îl reprezintă dicţionarul de date ce conţine structura bazei, structură
care se materializează prin instrucţiuni scrise cu ajutorul unui limbaj de definire a datelor (DDL).
Analiza, proiectarea şi implementarea structurii (schemei) bazei se realizează utilizând un model de
date. Un asemenea model reprezintă un ansamblu de instrumente conceptuale care permit descrierea
datelor, relaţiilor dintre ele, a semanticii lor, ca şi a restricţiilor la care sunt supuse.
Modelul datelor este o reprezentare a obiectelor lumii reale şi a evenimentelor asociate lor.
Este o abstractizare care se concentrează pe aspectele esenţiale ale organizaţiei /aplicaţiei, furnizând
conceptele de bază şi notaţiile care vor permite utilizatorilor bazelor de date să comunice clar şi rapid
informaţiile şi cunoştinţele lor despre datele organizaţiei.
O grupare "tradiţională" a modelelor utilizate în bazele de date delimitează trei categorii:
modele logice bazate pe obiect, modele logice bazate pe înregistrare şi modele fizice. Din punctul
nostru de vedere, interesează numai nivelele conceptual şi extern de abstractizare a datelor; de aceea,
vom prezenta, în linii mari, numai reprezentanţii principali ai primelor două categorii.
Modelul ierarhic. Primele produse-software (Sisteme de Gestiune a Bazelor de Date - SGBD)
lucrau cu baze de date ierarhice. Structura datelor este prezentată sub forma unui arbore, partea
superioară a arborelui fiind rădăcina (arborele este văzut "cu verdele în jos"). Un nod-tată poate avea
mai multe noduri-fii. Un fiu nu poate exista independent de tatăl său. Legătura (reprezentată prin linie)
se face exclusiv între tată şi fii.
Modelul reţea. Este o dezvoltare a modelului ierarhic, prin care se pot reprezenta şi situaţiile
în care un fiu "posedă" mai mulţi taţi. Înregistrările sunt privite în BD ca o colecţie de grafuri.
Modelul relaţional a fost următorul în ordinea cronologică şi rămâne cel care domină copios
piaţa bazelor de date şi la acest moment, motiv pentru care cea mai mare parte a acestui curs îi este
dedicată.
Modelul obiectual. Începând cu anii ’60, în programare şi, ceva mai târziu, în analiză şi
proiectare, orientarea pe obiecte (OO) a avut un succes uriaş, reuşind să depăşească metodologiile
structurate. Pe baza acestui succes, s-a crezut că şi în materie de baze de date, modelul obiectual îl va
surclasa pe cel relaţional. Rezultatele sunt însă deprimante pentru suporterii OO-ului, piaţa SGBD OO
fiind sub 6% din valoarea totală a pieţei bazelor de date.
Modelul relaţional-obiectual. Este un model mai recent ce încearcă să valorifice deopotrivă
atuurile relaţionalului cu orientarea pe obiecte. Deşi privit mai degrabă cu neîncredere în cercurile
8 Instrumente software pentru afaceri

teoreticienilor, acest model se impune încet-încet datorită marilor producători de software dedicat
bazelor de date.

4.2 PREZENTARE GENERALĂ A MODELULUI RELAŢIONAL


Un model de date are trei piloni: componenta structurală, adică modul în care, efectiv, la nivel
logic, datele sunt stocate în bază, componenta de integritate, adică regulile ce pot fi declarate pentru
datele din bază şi o componentă manipulatorie, adică modul în care obţinem informaţii din bazele de
date (ceea ce presupune o serie de operatori aplicabili uneia sau mai multor relaţii).
Deşi puternic contestat, şi cu neajunsurile sale, modelul relaţional de organizare a bazelor de
date rămâne cel mai utilizat. Cu foarte puţine excepţii, toate aplicaţiile software realizate pentru bănci,
buticuri, universităţi (ordinea este, în ciuda aparenţelor, pur întâmplătoare) sunt realizate cu
produse/instrumente ce gestionează baze de date relaţionale.
În acest paragraf vom discuta aspectele structurale ale modelului (paragraful 4.2.2) şi pe cele
de integritate (paragraful 4.3), urmând ca în paragraful 5.4 şi mai ales în capitolul 6 să ne ocupăm de
manipularea datelor, altfel spus, de modalităţile în care “stoarcem” de informaţii baza de date.

4.2.1 Puţină istorie


Modelul relaţional de organizare a datelor s-a conturat în două articole publicate în 1969 şi
1970 de către E.F. Codd, matematician la centrul de cercetări din San Jose (California) al firmei
IBM1. În acel moment, tehnologia bazelor de date era centrată pe modelele ierarhic şi reţea, modele ce
depind într-o mai mare măsură de organizarea internă a datelor pe suportul de stocare. Codd a propus
o structură de date tabelară, independentă de tipul de echipamente şi software de sistem pe care este
implementată, structură "înzestrată" cu o serie de operatori pentru extragerea datelor. Deşi puternic
matematizat, modelul relaţional este relativ uşor de înţeles.
Modelul relaţional al datelor se poate defini printr-o serie de structuri de date (relaţii alcătuite
din tupluri), operaţii aplicate asupra structurilor de date (selecţie, proiecţie, joncţiune etc.) şi reguli de
integritate care să asigure consistenţa datelor (chei primare, restricţii referenţiale s.a.). Modelarea
realităţii se concretizează în tabele de valori numite relaţii, avându-se în vedere că:
• o relaţie are un nume;
• o coloană reprezintă un atribut;
• o linie reprezintă un n-uplet (tuplu) de valori ale celor n atribute din relaţie;
• ordinea liniilor şi coloanelor în cadrul tabelei nu este relevantă pentru conţinutul
informaţional.
Fiecare linie a tabelei reprezintă o entitate sau un fapt al realităţii, în timp ce o coloană
reprezintă o proprietate a acestei entităţi sau fapt. Introducând un plus de rigoare, se cuvine de
remarcat că entitatea poate fi nu numai un obiect concret/proces (o persoană, un lucru oarecare), dar şi
o relaţie între obiecte (persoane, lucruri), cum ar fi: contractele de afaceri, căsătoriile (există totuşi
câteva deosebiri între acestea şi precedentele), structura ierarhică a unei organizaţii etc. În plus, nu e
întotdeauna evident care dintre informaţii sunt entităţi, care atribute şi care asociaţii (relaţii).

1
Extrase din lucrarea [Codd70] se găsesc la adresa http://www.acm.org/classics/nov95/. De asemenea, o
excelentă analiză a articolelor lui Codd este în [Date98].
Modelul relaţional de organizarea a datelor în bazele de date 9

Ansamblul valorilor stocate în tabelele reprezintă conţinutul bazei de date, conţinut ce poate fi
modificat prin operaţiuni de actualizare: introducerea unor linii (tupluri) noi, ştergerea unor linii,
modificarea valorii unor atribute.
Faţă de modelele ierarhice şi reţea, modelul relaţional prezintă câteva avantaje:
• propune structuri de date uşor de utilizat;
• ameliorează independenţa logică şi fizică;
• pune la dispoziţia utilizatorilor limbaje ne-procedurale;
• optimizează accesul la date;
• îmbunătăţeşte integritatea şi confidenţialitatea datelor;
• ia în calcul o largă varietate de aplicaţii;
• abordează metodologic definirea structurii bazei de date.

Modelului relaţional îi este asociată teoria normalizării, care are ca scop prevenirea
comportamentului aberant al relaţiilor în momentul actualizării lor, eliminarea datelor redundante şi
înlesnirea înţelegerii legăturilor semantice dintre date.
Deşi IBM a fost prima care a iniţial un proiect destinat elaborării unui SGBD relaţional
(System/R, începând cu 1974), prima firmă care a lansat primul SGBDR comercial a fost Relational
Software Inc., astăzi Oracle. Infiinţarea firmei a avut loc în 1977, iar lansarea produsului în 1979.
Impunerea pe piaţă a SGBD-urilor grefate pe modelul relaţional a fost mult mai dificilă decât s-ar
putea înţelege astăzi. Abia în deceniul 9, datorită vitezei ameliorate, securităţii sporite şi mai ales
productivităţii dezvoltatorilor de aplicaţii, modelul relaţional a câştigat supremaţia.
Există o largă tipologie a SGBDR-urilor, aşa încât orice categorisire îşi are riscul său. Cele
mai accesibile şi, implicit, cele mai utilizate sunt SGBD-urile dedicate iniţial uzului individual:
Access, Paradox, Visual FoxPro. Astăzi, multe dintre acestea au caracteristici profesionale şi pot fi
folosite la dezvoltarea aplicaţiilor pentru simultan a zeci de utilizatori.
Pentru aplicaţiile complexe din bănci, corporaţii, organizaţii şi instituţii de mari dimensiuni s-
au impus SGBDR-urile de "categoria grea": Oracle, DB2 (IBM), Informix (DB2), Sybase, SQL Server
(Microsoft). Acestea sunt mult mai robuste, mult mai fiabile, dar şi costisitoare.
În ultimul timp şi-au făcut apariţia, ca alternative la marii coloşi, aşa zisele Free-DBMS-uri,
precum PostgreSQL, MySQL, Interbase etc. Acestea rulează, de obicei, pe sisteme de operare de tip
Linux (foarte ieftine) şi se întrevăd ca adversari serioşi ai marilor producători.

4.2.2. Relaţii/tabele, domenii şi atribute


La modul simplist, o bază de date relaţională (BDR) poate fi definită ca un ansamblu de relaţii
(tabele); fiecare tabelă (sau tabel), alcătuită din linii (tupluri), are un nume unic şi este stocată pe
suport extern (de obicei disc). La intersecţia unei linii cu o coloană se găseşte o valoare atomică
(elementară). O relaţie conţine informaţii omogene legate de anumite entităţi, procese, fenomene:
CĂRŢI, STUDENŢI, LOCALITĂŢI, PERSONAL, FACTURI etc. Spre exemplu, în figura 4.4 este
reprezentată tabela CLIENŢI.
10 Instrumente software pentru afaceri

Figura 4.4. Relaţia (tabela) CLIENŢI

În teoria relaţională se foloseşte termenul relaţie. Practica, însă, a consacrat termenul tabelă
(engl. table). Un tuplu sau o linie este o succesiune de valori de diferite tipuri. În general, o linie
regrupează informaţii referitoare la un obiect, eveniment etc., altfel spus, informaţii referitoare la o
entitate: o carte (un titlu sau un exemplar din depozitul unei biblioteci, depinde de circumstanţe), un/o
student(ă), o localitate (oraş sau comună), un angajat al firmei, o factură emisă etc. Figura 4.5 conţine
al doilea tuplu din tabela CLIENŢI, tuplu referitor la forma MODERN SRL. Linia de mai jos este
alcătuită din patru valori ce desemnează: codul, numele, adresa şi codul poştal al localităţii şi adresei
referitoare la clientul MODERN SRL.

Figura 4.5. Un tuplu al tabelei CLIENŢI

Teoretic, orice tuplu reprezintă o relaţie între clase de valori (în cazul nostru, între patru clase
de valori); de aici provine sintagma baze de date relaţionale, în sensul matematic al relaţiei, de
asociere a două sau mai multe elemente. Fireşte, toate tuplurile relaţiei au acelaşi format (structură),
ceea ce înseamnă că în tabela CLIENŢI, din care a fost extrasă linia din figura 4.5, fiecare linie este
constituită dintr-o valoare a codului, o valoare a numelui, o valoare a adresei, şi o valoare a codului
poştal. Ordinea tuplurilor nu prezintă importanţă din punctul de vedere al conţinutul informaţional al
tabelei.
Fiecare atribut este caracterizat printr-un nume şi un domeniu de valori pe care le poate lua.
Domeniul poate fi definit ca ansamblul valorilor acceptate (autorizate) pentru un element component
al relaţiei:
• într-o tabelă destinată datelor generale ale angajaţilor, pentru atributul Sex, domeniul
este alcătuit din două valori: Femeiesc şi Bărbătesc;
• domeniul atributului Judet este alcătuit din numele fiecărui judeţ (plus Bucureşti).
• domeniul unui atribut precum PreţUnitar, care se referă la preţul la care a fost vândut un
produs/serviciu, este cu mult mai larg, fiind alcătuit din orice valoarea cuprinsă între 1
şi 99999999 lei (ceva mai noi).
Modelul relaţional de organizarea a datelor în bazele de date 11

Şi acum, câteva senzaţii tari (urmează un pic de matematică) ! Dacă notăm cu D1 domeniul
atributului CodClient, cu D2 domeniul atributului NumeClient, cu D3 domeniul pentru Adresa, şi cu
D4 domeniul atributul CodPostal, se poate spune că fiecare linie a tabelei CLIENŢI este un tuplu de
patru elemente, iar relaţia în ansamblu corespunde unui subansamblu din ansamblul tuturor tuplurilor
posibile alcătuite din patru elemente, ansamblu care este produsul cartezian al celor patru domenii.
În general, orice relaţie R poate fi definită ca un subansamblu al produsului cartezian de n domenii Di:
R ⊆ D1 x D2 x D3 x ... x Dn ,
n fiind denumit gradul sau ordinul relaţiei. Relaţiile de grad 1 sunt unare, cele de grad 2 - binare, ...,
cele de grad n - n-are. Această definiţie pune în evidenţă aspectul constant al relaţiei, de independenţă
în timp (se spune că în acest caz relaţia este definită ca un predicat).
O a doua definiţie abordează o relaţie R ca un ansamblu de m-uplete (m-tupluri) de
valori: R = { t1, t 2 , ..., t k , ..., t m} , unde t k = (dk1,dk2 , ..., dki ,...,dkn )
în care:
dk1 este o valoare în D1, dk2 este o valoare în D2, … , dkn este o valoare în Dn;
n - reprezintă ordinul lui R;
m - cardinalitatea lui R.

Pentru un (mic) plus de claritate, vezi figura 4.6.

Figura 4.6. Ilustrarea celei de-a doua definiţii a unei relaţii

Reprezentarea sub formă de tabelă, deci ca ansamblu de tupluri, pune în evidenţă aspectul
dinamic, variabil al relaţiei. Abordarea predicativă (prima definiţie) sau ansamblistă (a doua definiţie)
reprezintă un criteriu important de delimitare a limbajelor de interogare a bazelor de date relaţionale.

Reţinem corespondenţa noţiunilor relaţie-tabelă, tuplu-linie şi atribut-coloană.

Numărul de tabele pe care le conţine o bază de date, atributele “adunate” în fiecare tabelă,
domeniul fiecăruia dintre atribute prezintă diferenţe majore de la o bază la alta, chiar dacă uneori
reflectă acelaşi tip de procese. Intrăm astfel în sfera proiectării bazelor de date, a dependenţelor şi
normalizării.
Relaţia CLIENŢI conţine informaţii despre firmele cărora compania noastră le vinde
produsele pe care le producem şi/sau comercializăm. Fiecare linie se referă la un singur client. În
12 Instrumente software pentru afaceri

figura 4.4 pe a treia linie a tabelei apare o valoarea curioasă notată NULL. Valoarea NULL este
considerată o metavaloare şi indică faptul că, în acel loc, informaţia este necunoscută sau inaplicabilă.
Valoarea NULL este diferită, însă de valorile 0 sau spaţiu. Uneori, importanţa sa este, din păcate,
majoră în expresii şi funcţii, după cum ştiu cei cu oarecare experienţă în limbajului SQL.

4.3 RESTRICŢII ALE BAZEI DE DATE


De ce ne interesează restricţiile într-o bază de date? Termenul de restricţie este oarecum
iritant, atât pentru studenţi, cât şi pentru profesori, deoarece semnalează existenţa unor constrângeri
instituite şi oarecum obligatorii, şi, de vreme ce sunt impuse, însemnă că nu sunt prea plăcute (decât,
în cel mai bun caz, pentru cel care le-a instituit). Partea cea mai enervantă este că respectarea
restricţiilor este (supra)vegheată de o anumită autoritate înzestrată cu anumite instrumente de
constrângere, de la bastoane de cauciuc, la creşterea şi scăderea impozitelor, salariilor, banilor de
buzunar etc.
Ei bine, în bazele de date, restricţiile sunt ceva mai acceptabile. Cei care lucrează cu bazele de
date sunt foarte interesaţi în declararea restricţiilor, pentru că, odată definite, de respectarea lor se va
îngriji sistemul de gestiune a bazelor de date (adică programele de lucru cu bazele de date). Esenţial
este că, ajutaţi de restricţii, putem creşte gradul de corectitudine şi de încredere al datelor din bază. În
cele ce urmează vor fi prezentate pe scurt cele mai importante restricţii definibile într-o bază de date
relaţională: restricţia de domeniu, de atomicitate, de unicitate, referenţială şi restricţiile-utilizator.

4.3.1 Restricţia de domeniu


După cum am văzut în paragraful anterior, un atribut este definit printr-un nume şi un
domeniu. Orice valoare a atributului trebuie să se încadreze în domeniul definit. Există mai multe
moduri de percepţie a acestei restricţii.
O parte din informaticieni substituie domeniul tipului atributului: numeric, şir de caractere,
dată calendaristică, logic (boolean) etc. şi, eventual, lungimii (numărul maxim de poziţii/caractere pe
care se poate “întinde” un atribut). După cum se observă, este luat în calcul numai aspectul sintactic al
domeniului. Faptul că indicativul auto al unui judeţ (vezi plăcuţele de înmatriculare) poate fi una din
valorile: IS, TM, B etc. reprezintă o restricţie de comportament sau, mai simplu, o restricţie definită de
utilizator.
Cea de-a doua categorie priveşte domeniul deopotrivă sintactic şi semantic. Astfel, domeniul
sintactic al atributului Jud (indicativul judeţului) este un şir de două caractere, obligatoriu litere (sau o
literă şi un spaţiu, pentru Bucureşti), şi, chiar mai restrictiv, literele sunt obligatoriu majuscule. Din
punct de vedere semantic, indicativul poate lua una din valorile: IS, TM …
Majoritatea SGBD-urilor permit definirea tuturor elementelor ce caracterizează domeniul
(sintactic şi semantic) atributului Jud prin declararea tipului şi lungimii atributului şi prin aşa-numitele
reguli de validare la nivel de câmp (field validation rule). Sunt însă şi produse la care domeniul poate
fi definit explicit, sintactic şi semantic, dându-i-se un nume la care vor fi legate atributele în momentul
creării tabelelor.
Modelul relaţional de organizarea a datelor în bazele de date 13

4.3.2 Atomicitate
Conform teoriei bazelor de date relaţionale, orice atribut al unei tabele oarecare trebuie să fie
atomic, în sensul imposibilităţii descompunerii sale în alte atribute. Implicit, toate domeniile unei baze
de date sunt musai atomice (adică elementare). În aceste condiţii, se spune că baza de date se află în
prima formă normală sau prima formă normalizată (1NF).
Astăzi, atomicitatea valorii atributelor a devenit o ţintă predilectă a “atacurilor duşmănoase” la
adresa modelului relaţional, datorită imposibilităţii înglobării unor structuri de date mai complexe,
specifice unor domenii ca: proiectare asistată de calculator, baze de date multimedia etc. Mulţi autori,
dintre care merită amintiţi cu deosebire Chris J. Date şi Hugh Darwen, se opun ideii de atomicitate
formulată de Codd.
Primele vizate de “stigmatul” neatomicităţii sunt atributele compuse. Un exemplu de atribut
compus (non-atomic) este Adresa. Fiind alcătuită din Stradă, Număr, Bloc, Scară, Etaj, Apartament,
discuţia despre atomicitatea adresei pare de prisos, iar descompunerea sa imperativă. Trebuie însă să
ne raportăm la obiectivele bazei. Fără îndoială că pentru BD a unei filiale CONEL sau
ROMTELECOM, sau pentru poliţie, preluarea separată a fiecărui element constituent al adresei este
foarte importantă. Pentru un importator direct, însă, pentru un mare en-grossist sau pentru o firmă de
producţie lucrurile stau într-o cu totul altă lumină. Partenerii de afaceri ai acestora sunt persoane
juridice, iar adresa interesează numai la nivel general, caz în care atributul Adresa nu este considerat a
fi non-atomic.
Alte exemple de atribute ce pot fi considerate, în funcţie de circumstanţe, simple sau compuse:
DataOperaţiuniiBancare (Data + Ora), BuletinIdentitate (Seria+Număr), NrÎnmatriculareAuto (privit
global, sau pe cele trei componente: număr, judeţ, combinaţie trei de litere).
O relaţie (tabelă) în 1NF nu trebuie să conţină atribute care se repetă ca grupuri (grupuri
repetitive). Într-o altă formulare, toate liniile unei tabele trebuie să conţină acelaşi număr de atribute.
Fiecare celulă a tabelei (intersecţia unei coloane cu o linie), altfel spus, valoarea unui atribut pe o linie
(înregistrare), trebuie să fie atomică.

4.3.3 Nenulitate
Modelul relaţional acceptă ca, atunci când nu se cunoaşte valoarea unui atribut pentru o
anumite entitate, sau când pentru acel obiect, entitate, persoană etc. atributul este inaplicabil, să se
foloseacă (meta)valoare NULL. Celui de-al treilea client din figura 4.4 nu i cunoaşte adresa. Dacă am
avea o tabelă PRODUSE cu atributele CodProdus, DenumireProdus, UM, Culoare, este posibil ca,
pentru anumite sortimente, cum ar tricouri, cămăşi, jachete, atributul să fie important, în timp ce
pentru altele, precum cafea, vodcă, lapte atributul culoare să nu furnizeze nici o informaţie, adică să nu
fie aplicabil. Iar dacă laptele poate fi doar alb, vodca chiar că nu are culoare (sunt foarte mulţi
specialişti în acest domeniu, îi puteţi întreba !).
Într-o bază de date relaţională avem posibilitatea de a le impune unor atribute să aibă
întotdeauna valori specificate, altfel spus, le interzicem valorile nule, în timp cel altor atribute li se pot
permite valori nule. Modul în care se declară şi se afişează o restricţie de nulitate depinde de la SGBD
la SGBD. De exemplu, în Access mecanismul este de tipul celui din figura 4.7. Atributului
NumeClient din tabela CLIENŢI i se interzic valorile nule, prin setarea opţiunii Required pe valoarea
14 Instrumente software pentru afaceri

Yes, în timp ce atributul Adresa din aceeaşi tabelă poate avea valori NULL, Required fiind setat pe
valoarea No.

Figura 4.7. Un atribut “forţat” să nu primească valori NULL şi un altul “relaxat”

Ca regulă, atributele importante, ce ţin de identificarea sau caracterizarea unei entităţi, proces,
fenomen, precum şi cele implicitate în calculul unor informaţii importante, sunt declarate NOT NULL,
iar atributele fără importanţă deosebită pot fi mai relaxate.

4.3.4 Restricţia de unicitate


Într-o relaţie nu pot exista două linii identice (două linii care prezintă aceleaşi valori pentru
toate atributele). Mai mult, majoritatea relaţiilor prezintă un atribut, sau o combinaţie de atribute, care
diferenţiază cu siguranţă un tuplu de toate celelalte tupluri ale relaţiei.
Cheia primară a unei relaţii (tabele) este un atribut sau un grup de atribute care identifică fără
ambiguitate fiecare tuplu (linie) al relaţiei (tabelei). După Codd, există trei restricţii pe care trebuie să
le verifice cheia primară:
• unicitate: o cheie identifică un singur tuplu (linie) al relaţiei.
• compoziţie minimală: atunci când cheia primară este compusă, nici un atribut din cheie
nu poate fi eliminat fără distrugerea unicităţii tuplului în cadrul relaţiei; în cazuri
limită, o cheie poate fi alcătuită din toate atributele relaţiei.
• valori non-nule: valorile atributului (sau ale ansamblului de atribute) ce desemnează
cheia primară sunt întotdeauna specificate, deci ne-nule şi, mai mult, nici un atribut
din compoziţia cheii primare nu poate avea valori nule; această a treia condiţie se mai
numeşte şi restricţie a entităţii.
Domeniul unui atribut care este cheie primară într-o relaţie este denumit domeniu primar.
Dacă într-o relaţie există mai multe combinaţii de atribute care conferă unicitate tuplului, acestea sunt
Modelul relaţional de organizarea a datelor în bazele de date 15

denumite chei candidate. O cheie candidată care nu este identificator primar este referită ca şi cheie
alternativă.
În tabela CLIENŢI cheia primară este simplă - CodClient, CodClient reprezintă un număr unic
asociat fiecărei firme căreia i-am făcut vânzări. Există însă suficiente cazuri în care cheia primară este
compusă din două, trei s.a.m.d. sau, la extrem, toate atributele relaţiei. Să luăm spre analiză o relaţie
PERSONAL care conţine date generale despre angajaţii firmei. Fiecare tuplu al relaţiei se referă la un
angajat, atributele fiind: Nume, Prenume, DataNaşterii, Vechime, SalariuTarifar.
- atributul Nume nu poate fi cheie, deoarece chiar şi într-o întreprindere de talie mijlocie, este
posibil să existe doi angajaţi cu acelaşi nume.
- dacă apariţia a două persoane cu nume identice este posibilă, atunci apariţia a două persoane
cu acelaşi Prenume este probabilă.
- nici unul din aceste atributele DataNaşterii, Vechime, SalariuTarifar nu poate fi "înzestrat"
cu funcţiunea de identificator.
În acest caz, se încearcă gruparea a două, trei, patru s.a.m.d. atribute, până când se obţine
combinaţia care va permite diferenţierea clară a oricărei linii de toate celelalte.
• Combinaţia Nume+Adresă pare, la primele două vederi, a îndeplini "cerinţele" de
identificator. Ar fi totuşi o problemă: dacă în aceeaşi firmă (organizaţie) lucrează
împreună soţul şi soţia ? Ambii au, de obicei, acelaşi nume de familie şi, tot de obicei,
acelaşi domiciliu. Este adevărat, cazul ales nu este prea fericit. Dar este suficient
pentru “compromiterea” combinaţiei.
• Următoarea tentativă este grupul Nume+Prenume+Adresă, combinaţie neoperantă
dacă în organizaţie lucrează tatăl şi un fiu (sau mama şi o fiică) care au aceleaşi nume
şi prenume şi domiciliul comun.
• Ar rămâne de ales una dintre soluţiile (Nume+Prenume+Adresă+Vechime) sau
(Nume+Prenume+Adresa+DataNaşterii).
Oricare din cele două combinaţii prezintă riscul violării restricţiei de entitate, deoarece este
posibil ca, la preluarea unui angajai în bază, să nu i se cunoască adresa sau data naşterii, caz în care
atributul respectiv ar avea valoarea NULL. Dificultăţile de identificare fără ambiguitate a angajaţilor au
determinat firmele ca, la angajare, să aloce fiecărei persoane un număr unic, număr denumit Marcă.
Prin adăugarea acestui atribut la cele existente, pentru relaţia PERSONAL problema cheii primare este
rezolvată mult mai simplu. Actualmente, sarcina este simplificată şi prin utilizarea codului numeric
personal (CNP), combinaţie de 13 cifre care prezintă avantajul că rămâne neschimbată pe tot parcursul
vieţii persoanei.
Revenim la tabela CLIENŢI. Dacă în ţara noastră s-ar respecta regula: nu pot exista două
firme cu aceeaşi denumire, atunci tabela mai are, pe lângă CodClient, o cheie candidat – NumeClient.
Întrucât CodClient a fost preferată drept cheie primară, NumeClient va fi cheie alternativă. În Access
un atribut de tip cheie primară are în dreptul său o cheie (de yală) – vezi figura 4.8. Cheile alternative
sunt declarate prin setarea opţiunii Indexed pe valoarea Yes (NoDuplicates).
16 Instrumente software pentru afaceri

Figura 4.8. O cheie primară şi o cheie alternativă

4.3.5 Restricţia referenţială


O bază de date relaţională este alcătuită din relaţii (tabele) aflate în legătură. Stabilirea
legăturii se bazează pe mecanismul cheii străine şi, implicit, a restricţiei referenţiale. Figura 5.5
prezintă o relaţie în care sunt implicate tabelele FACTURI şi CLIENŢI.

Figura 4.9. O restricţie referenţială între FACTURI (tabelă-copil) şi CLIENŢI (părinte)

Atributul CodClient joacă un rol de “agent de legătură” între tabelele CLIENŢI şi FACTURI.
Pentru relaţia CLIENŢI, atributul CodClient este cheie primară, în timp ce în tabela FACTURI,
CodClient reprezintă coloana de referinţă sau cheia străină, deoarece numai pe baza valorilor sale se
poate face legătura cu relaţia părinte CLIENŢI.
Cheile străine sau coloanele de referinţă sunt deci atribute sau combinaţii de atribute care pun
în legătură linii (tupluri) din relaţii diferite. Tabela în care atributul de legătură este primară se
numeşte tabelă-părinte (în cazul nostru, CLIENŢI), iar cealaltă tabelă-copil.
Modelul relaţional de organizarea a datelor în bazele de date 17

Legat de noţiunea de cheie străină apare conceptul de restricţie referenţială. O restricţie de


integritate referenţială apare atunci când o relaţie face referinţă la o altă relaţie. Când două tabele
(relaţii), T1 şi T2, prezintă atributul sau grupul de atribute notat CH, care, pentru T1, este cheie
primară, iar pentru T2 cheie străină, dacă în T2 se interzice apariţia de valori nenule ale CH care nu
există în nici un tuplu din T1, se spune că între T2 şi T1 s-a instituit o restricţie referenţială.
Instituirea restricţiei referenţiale între tabela CLIENŢI (părinte) şi FACTURI (copil) permite
cunoaşterea, pentru fiecare client, a denumirii localităţii şi a judeţului în care-şi are sediul. Dacă în
FATURI ar exista vreo linie în care valoarea atributului CodClient ar fi, spre exemplu 9988, este clar
că acea linie ar fi orfană (nu ar avea linie corespondentă în tabela părinte CLIENŢI).

Observaţii
1. Pentru mulţi utilizatori şi profesionişti ai bazelor de date, denumirea de "relaţional"
desemnează faptul că o bază de date este alcătuită din tabele puse în legătură prin
intermediul cheilor străine. Aceasta este, de fapt, a doua accepţiune a termenului de BDR,
prima, cea "clasică", având în vedere percepţia fiecărei linii dintr-o tabelă ca o relaţie între
clase de valori.
2. Majoritatea SGBD-urilor prezintă mecanisme de declarare şi gestionare automată a
restricţiilor referenţiale, prin actualizări în cascadă şi interzicerea valorilor care ar încălca
aceste restricţii.
3. Respectarea restricţiilor referenţiale este una din cele mai complicate sarcini pentru
dezvoltatorii de aplicaţii ce utilizează baze de date. Din acest punct de vedere, tentaţia este
de a “sparge” baza de date în cât mai puţine tabele cu putinţă, altfel spus, de a avea relaţii
cât mai “corpolente”. Gradul de fragmentare al bazei ţine de normalizarea bazei de date,
care, ca parte a procesului de proiectare a BD, se bazează pe dependenţele funcţionale,
multivaloare şi de joncţiune între atribute.

4.3.6 Restricţii-utilizator
Restricţiile utilizator mai sunt denumite şi restricţii de comportament sau restricţii ale
organizaţiei. De obicei, aceste restricţii iau forma unor reguli de validare la nivel de atribut, la nivel de
linie/tabelă sau a unor reguli implementate prin declanşatoare (triggere).

Reguli la nivel de atribut


O restricţie la nivel de atribut poate preveni introducerea în baza de date a unor valori din alte
intervale decât cele stabilite, în alte formate decât cele acceptate etc. Forma clasică a unei restricţii la
nivel de atribut este o expresie în care apar constante, funcţii-sistem şi, nu în ultimul rând, atributul
respectiv. La orice editare a atributului cu pricina (declanşată în cazul inserării unei linii în tabela din
care face parte, sau la modificarea sa) expresia este evaluată şi dacă rezultatul evaluării este TRUE
(adevărat), atunci inserarea/modificarea este permisă, iar dacă rezultatul este FALSE, atunci
inserarea/modificarea este blocată.
În partea stângă a figurii 4.10 este ilustrată o regulă de validare conform căreia în tabela
CLIENŢI valorile atributului CodClient trebuie să fie mai mari decât 1000. Rubrica Validation Rule
este cea în care apare expresia-restricţie - [CodClient]>1000 - (observaţi că numele atributului este
scris între paranteze unghiulare), iar în rubrica Validation Text se indică mesajul care va apărea pe
ecran atunci când se încalcă restricţia - Cel mai mic cod de client acceptat este 1001 !.
18 Instrumente software pentru afaceri

Figura 4.10. Două restricţii la nivel de atribut

În dreapta figurii apare o regulă ceva mai impresionantă, prin care literele din valorile
atributului NumeClient sunt obligatoriu majuscule. Expresia este de-a dreptul impresionantă -
StrComp(Left(UCase([NumeClient]),1),Left([NumeClient],1),0) = 0 – şi nu vom strica vraja până în
capitolul următor.

Reguli la nivel de înregistrare


Expresia care defineşte o restricţie la nivel de înregistrare poate conţine două sau mai multe
atribute şi este evaluată la inserarea sau modificarea oricărei linii din tabelă. Tabela FACTURI
conţine, printre altele două atribute “valorice”, unul pentru păstrarea valorii totale (inclusiv TVA)
facturii respective şi un altul care indică “doar” cuantumul TVA colectate pentru factură. Majoritatea
produselor şi serviciilor comercializate la noi în ţară au un procent al taxei pe valoarea adăugată de
19%. Există, însă, şi produse la care procentul poate fi 9% sau chiar scutite de TVA (0%). De aceea,
TVA colectată pentru o factură poate fi egală sau mai mică decât 19% din valoarea fără tva. Să punem
sub formă de formulă: ValoareaTotală = ValoareaFărăTVA + TVA. Dacă factura conţine numai
produse cu 19%: ValoareaTotală = ValoareaFărăTVA + 0.19 * ValoareaFărăTVA, sau ValoareaTotală
= 1.19 * ValoareaFărăTVA. Dar tabela noastră are doar atributele ValoareTotală şi TVAColectată, aşa
că înlocuim ValoareaFărăTVA prin diferenţa celorlalte două. Scriem: ValoareTotală = 1.19 *
(ValoareTotală – TVAColectată), şi după calcule de matematică superioară, TVAColectată * 1.19 =
0.19 * ValoareTotală, altfel spus TVAColectată = ValoareTotală * 0.19 / 1.19.
Prin urmare, regula este TVAColectată <= ValoareTotală * 0.19 / 1.19, iar în Access
declararea sa este ilustrată în figura 4.11.
Modelul relaţional de organizarea a datelor în bazele de date 19

Figura 4.11. O restricţie la nivel de înregistrare

Alte tipuri de restricţii utilizator


Există şi alte tipuri de restricţii a căror validare presupune “citirea” unor date aflate în tabele
diferite. Spre exemplu, se poate institui o regulă care interzice emiterea unei noi facturi (o nouă
vânzare) dacă datoriile firmei client sunt mai mari de 200000 RON, iar directorul acesteia nu este
membru în partidul/partidele de guvernământ. Acestea reclamă întrebuinţarea unor proceduri speciale,
numite declanşatoare (triggere). Curioşii n-au decât să urmeze specializarea Informatică Economică.

4.4 SCHEMA ŞI CONŢINUTUL UNEI BAZE DE DATE RELAŢIONALE


Există două aspecte complementare de abordare a bazelor de date relaţionale: schema
(structura, intensia) şi conţinutul (instanţierea, extensia).
Conţinutul unei relaţii este reprezentat de ansamblul tuplurilor ce o alcătuiesc la un moment
dat. Pe parcursul exploatării bazei, conţinutul poate creşte exponenţial, în funcţie de volumul şi
complexitatea operaţiunilor consemnate.
Schema unei baze de date conţine denumiri ale tabelelor, numele, tipul şi lungimea atributelor,
restricţii de unicitate, de non-nulitate, restricţii la nivel de atribut, linie şi alte eventuale tipuri de
restricţii de comportament, precum şi restricţii referenţiale. La acestea se adaugă cele privind
drepturile utilizatorilor, definiţia şi restricţiile tabelelor virtuale, indecşi etc. Foarte importante în
lumea profesioniştilor dezvoltării de aplicaţii cu bazele de date sunt procedurile stocate – programe de
forma funcţiilor, procedurilor, pachetelor şi mai ales declanşatoarelor (triggerelor) – care, după cum le
spune şi numele sunt memorate în schema bazei de date şi fac parte integrantă din aceasta. Schema
este independentă de timp şi reprezintă componenta permanentă a relaţiilor.

Atenţie ! În literatura de popularizare a bazelor de date (mai ales a Accessului) apar şi o serie
de bazaconii, precum că rapoartele, formularele, meniurile ar fi incluse în schema unei baze de date.
20 Instrumente software pentru afaceri

Nu este adevărat ! În Visual FoxPro, Accesss şi alte SGBD-uri, pentru a gestiona mai uşor o aplicaţie
se creează un project în care sunt incluse bazele de date (tabele, tabele virtuale, proceduri stocate),
interogări, formulare, rapoarte, meniuri etc. Ori, confuzia care se face uneori este între proiect şi bază
de date.

În capitolele care vor urma, va fi utilizată cu precădere o bază de date “martor”, denumită
VÎNZĂRI, cu schema din figura 4.12.

Figura 4.12. Schema simplificată a bazei de date VÎNZĂRI

Conţinutul celor trei tabele, ce vor constitui suportul editărilor şi interogărilor din capitolele
următoare sunt prezentate în figura 4.13.

Figura 4.13. Conţinutul celor trei tabelei ale bazei de date VÎNZĂRI
Capitolul 4
Modelul relaţional de organizare
a bazelor de date

“Când eram tânăr, credeam că banii şi puterea


mă vor face fericit. Aveam dreptate.”
(Bill Gates)
Agenda
• Câte ceva despre baze de date
• Prezentarea generală a modelului
relaţional
• Restricţii ale bazei de date
• Schema şi conţinutul unei baze de date
relaţionale
În fiecare dimineaţă, dacă n-ai chef să te dai jos din pat,
adu-ţi aminte că nu eşti încă printre cei bogaţi care-şi
permit să doarmă cât vor şi-o să vezi ce chef de muncă te
apucă imediat.
(Bill Gates)
4.1. CÂTE CEVA DESPRE BAZE DE DATE

Încă de la începuturile sale, informatica a fost


confruntată cu:
•efectuarea de calcule complexe, ştinţifice;
•stocarea şi gestionarea unui volum de informaţii din
ce în ce mai mare.

Apariţia unor instrumente software dedicate gestiunii


şi prelucrării datelor:
• fişiere;
• baze de date.
”640K de memorie ar trebui să fie suficientă pentru oricine”
(Bill Gates, 1981)
Fişiere independente
(file-based sau flat files)

• fiecare dată (Data1, Data2,... Datan) este descrisă


(nume, tip, lungime) autonom, în toate fişierele în
care apare;
• descrierea fiecărui fişier de date (câmpurile care-l
alcătuiesc, tipul şi lungimea fiecăruia, modul de
organizare (sercvenţial, indexat, relativ etc.)) este
obligatorie în toate programele care îl “citesc” sau
modifică;
• între FIŞIER1, FIŞIER2, ... FIŞIERn nu există nici o
relaţie definită explicit.

“Calculatoarele viitorului ar putea cantari nu mai mult de 1,5 tone.”


Popular Mechanics, 1949
Arhitectura aplicaţiilor de tip fişier
Data 1
Data 2 Raport 1

Data 3
FIŞIER 1 PRELUCRARE 1 Fişier de
Data 4 legături

Data 2
Raport 4
Data 4
FIŞIER 2 PRELUCRARE 2 Raport 3
Data 5
Raport 2
Data 6

Data 1 Raport 5
FIŞIER 3 PRELUCRARE 3
Data 5

Data 7
Data 8
DATE FIŞIERE PRELUCRĂRI IEŞIRI
Dezavantajele organizării datelor după modelul fişierelor
independente

1. Redundanţa şi inconsistenţa datelor;


2. Dificultatea accesului;
3. Izolarea datelor;
4. Complexitatea actualizărilor;
5. Dificultatea creării unui mecanism care să
protejeze pe deplin datele din fişiere de accesul
neautorizat (probleme de securitate);

Acest „telefon” are prea multe neajunsuri pentru a putea fi


considerat în mod serios un dispozitiv de comunicaţie. Acest
aparat nu are nici o valoare pentru noi.
(Memoriu intern al Western Union, 1876)
Dezavantajele organizării datelor după modelul fişierelor
independente

6. Mecanismul de integritate a datelor, deosebit de


complex în mediile de lucru multi-utilizator şi
eterogene;
7. Inabilitatea de a obţine răspunsuri rapide la probleme
ad-hoc simple;
8. Costul ridicat;
9. Inflexibilitatea faţă de schimbările ulterioare;
10. Modelarea inadecvată a lumii reale.

“Cred ca exista o piata mondiala pentru poate cinci calculatoare“


Thomas Watson, presedintele IBM, 1943
Baze de date

O bază de date reprezintă un ansamblu structurat de fişiere, care


grupează datele prelucrate în aplicaţiile informatice ale unei
persoane, grup de persoane, întreprinderi, instituţii etc.

Formal, BD poate fi definită ca:


• o colecţie de date aflate în interdependenţă, împreună cu
descrierea datelor şi a relaţiilor dintre ele,
sau
• o colecţie de date automatizată, partajată, definită riguros
(formalizată) şi controlată la nivel central.

• Faţă de modelul fişierelor independente, noutatea o constituie existenţa


unui fişier de descriere globală a bazei (dicţionarul de date)  asigură
independenţa programelor faţă de date.
Schema de principiu a unei baze de date

B A Z A DE D A T E

Fişier de date 1

Fişier de date 2 Dicţionar


de date

Fişier de date n

Aplicaţia 1 Aplicaţia 2 Aplicaţia 3

"Nu exista vreun motiv pentru care cineva ar vrea un calculator in casa lui."
Ken Olson, presedinte fondator al Digital Equipment Corp., 1977
Cu referire la o BD, trebuie avute în vedere două aspecte
fundamentale:
• schema;
• conţinutul.
• Schema (organizarea sau structura BD) reprezintă un
ansamblu de instrumente pentru descrierea datelor, a
relaţiilor dintre acestea, a semanticii lor şi a restricţiilor la
care sunt supuse.

• Ansamblul informaţiilor stocate la un moment dat în BD


constituie conţinutul (instanţierea sau realizarea)
acesteia.
Conţinutul (volumul) prezintă o evoluţie spectaculoasă în timp, iar
schema unei baze rămâne relativ constantă pe tot parcursul utilizării
acesteia.
Organizarea datelor in BD poate fi analizată din mai
multe puncte de vedere şi pe diferite paliere:
• fizic (intern);
• conceptual (global);
• extern.

"Aceasta cutie muzicala fara fir nu are vreo valoare comeciala


imaginabila. Cine ar plati pentru un mesaj trimis nimanui anume?“
Raspuns la solicitarile pentru a investi in radio, 1920
• Nivelul fizic (intern) - modalitatea efectivă în care
datele sunt "scrise" pe suportul de stocare (disc
magnetic, disc optic, bandă magnetică etc.);

• Nivelul conceptual (global) este primul nivel de


abstractizare a lumii reale observate. Obiectivul acestui
nivel este modelarea realităţii considerate, asigurându-se
independenţa bazei faţă de orice restricţie tehnologică
sau echipament;

• Nivelul extern este ultimul nivel de abstractizare la care


poate fi descrisă o bază de date. Dezideratele acestui
nivel vizează simplificarea interacţiunii utilizatori-BD,
precum şi creşterea securităţii BD.
"Sa foram pentru petrol? Adica sa foram in pamant pentru a gasi
petrol? Esti nebun."
Foratorii pe care Edwin L. Drake a incercat sa ii angajeze pentru a fora
pentru petrol, 1859
Schematizarea unui sistem de lucru cu o BD

Utilizator A1 Utilizator A2 Utilizator B1 Utilizator B2 Utilizator B3

Comenzi Comenzi
Aplicaţie Aplicaţie Aplicaţie
autonome autonome

Schemă externă Imagine A Schemă externă Imagine B


A (nivel extern) B (nivel extern)

Interfaţă A Interfaţă B
dintre nivelele dintre nivelele
global şi extern global şi extern
SISTEM DE
Schema Imagine globală GESTIUNE A
conceptuală BAZEI
(nivel global)
(globală) DE DATE

Interfaţă dintre nivelele


fizic şi global

Definirea structurii
interne de stocare Baza de date memorată pe disc
(Schema internă)
Posibilitatea modificării structurii la un anumit nivel, se numeşte
autonomia datelor stocate în bază şi poate fi: fizică şi logică.

• Autonomia fizică posibilitatea modificării arhitecturii bazei


la nivel intern, fără schimbarea schemei conceptuale şi
rescrierea programelor pentru exploatarea bazei de date

asigură portarea BD de pe un sistem de calcul pe altul fără


modificarea schemei conceptuale şi a programelor.

• Autonomia logică - posibilitatea modificării schemei


conceptuale a bazei fără a rescrie programele de
exploatare.

"Avioanele sunt jucarii interesante dar fara valoare militara."


Ferdinand Foch, profesor de strategie
Datele stocate într-o BD prezintă următoarele caracteristici:

• partajabilitatea – disponibilitate pentru un mare număr


de utilizatori şi aplicaţii;
• persistenţa – existenţă permanentă, din momentul
preluării în bază până în momentul actualizării sau
ştergerii;
• securitatea – protejarea de accesul neautorizat, atât în
ceea ce priveşte citirea şi copierea, cât şi modificarea şi
ştergerea;
• validitatea (referită şi ca integritate sau corectitudine) –
priveşte gradul de adecvare dintre datele din bază şi
realitatea, procesele pe care le reflectă aceste date;
Datele stocate într-o BD prezintă următoarele caracteristici:
• consistenţa – ori de câte ori diverse aspecte ale
proceselor sau fenomenelor reale sunt preluate în bază
sub forma a două sau mai multor entităţi sau atribute,
aceste entităţi /atribute trebuie să fie în concordanţă
unele ce celelalte, să respecte relaţiile existente între
aspectele proceselor /fenomenelor reale;
• nonredundanţa - pe cât posibil, o entitate din realitate
ar trebui să aibă un singur corespondent în baza de
date;
• independenţa – priveşte autonomia logică şi fizică.

"Profesorul Goddard nu cunoaste relatia dintre actiune si


reactiune si nici nevoia de avea ceva mai bun decat un aspirator
impotriva caruia sa reactionezi. Se pare ca ii lipsesc cunostintele
elementare predate zilnic la liceu."
New York Times despre revolutionarele idei ale lui Robert Goddard
in legatura cu rachetele , 1921
Modele de organizare a datelor în BD

• Modelul reprezintă un ansamblu de instrumente conceptuale


care permit descrierea datelor, relaţiilor dintre ele, a semanticii
lor precum şi a restricţiilor la care sunt supuse.

• Modelul datelor este:


– o reprezentare a obiectelor lumii reale şi a evenimentelor
asociate lor;

– o abstractizare care se concentrează pe aspectele esenţiale ale


organizaţiei /aplicaţiei, furnizând conceptele de bază şi notaţiile
care vor permite utilizatorilor BD să comunice clar şi rapid
informaţiile şi cunoştinţele lor despre datele organizaţiei.
"Masini zburatoare mai grele decat aerul sunt imposibile."
Lord Kelvin, presedintele Societatii Regale, 1895
Modele de organizare a datelor în baze

• Modelul ierarhic;
• Modelul reţea;
• Modelul relaţional;
• Modelul obiectual;
• Modelul relaţional-obiectual.

"Am calatorit de-a lungul si de-a latul tarii asteia si am vorbit


cu cei mai buni oameni si pot sa va asigur ca procesarea
datelor este o furie care nu va rezista pana la sfarsitul anului."

Editorul responsabil cu cartile de afaceri la Salonul de Inventii,


1957
PREZENTAREA GENERALĂ A MODELULUI RELAŢIONAL

Un model de date are trei piloni:

• componenta structurală - modul în care, efectiv, la nivel logic,


datele sunt stocate în bază;

• componenta de integritate - regulile ce pot fi declarate pentru


datele din bază;

• componentă manipulatorie - modul în care se obţin informaţii


din BD (ceea ce presupune o serie de operatori aplicabili
uneia sau mai multor relaţii).
Modelul relaţional se poate defini prin:

– structuri de date (relaţii alcătuite din tupluri),

– operaţii aplicate asupra structurilor de date


(selecţie, proiecţie, joncţiune etc.),

– reguli de integritate care să asigure


consistenţa datelor (chei primare, restricţii
referenţiale ş.a.).
• Modelarea realităţii se concretizează în tabele de valori numite
relaţii, avându-se în vedere că:

• o relaţie are un nume;

• o coloană reprezintă un atribut;

• o linie reprezintă un n-uplet (tuplu) de valori ale celor n


atribute din relaţie;

• ordinea liniilor şi coloanelor în cadrul tabelei nu este


relevantă pentru conţinutul informaţional.

• Fiecare linie a tabelei reprezintă o entitate sau un fapt al realităţii, în timp ce


o coloană reprezintă o proprietate a acestei entităţi sau fapt.
Modelul relaţional - Avantaje:

• propune structuri de date uşor de utilizat;

• ameliorează independenţa logică şi fizică;

• pune la dispoziţia utilizatorilor limbaje ne-procedurale;

• optimizează accesul la date;

• îmbunătăţeşte integritatea şi confidenţialitatea datelor;

• ia în calcul o largă varietate de aplicaţii;

• abordează metodologic definirea structurii bazei de date.


Relaţii /tabele, domenii şi atribute
• La modul simplist, o bază de date relaţională (BDR)
poate fi definită ca un ansamblu de relaţii (tabele);
În teoria relaţională se foloseşte termenul relaţie. Practica, însă, a
consacrat termenul tabelă /tabel (engl. table).

• Fiecare tabelă:
– este alcătuită din linii (tupluri),
– are un nume unic,
– este stocată pe suport extern (de obicei disc);
• La intersecţia unei linii cu o coloană se găseşte o
valoare atomică (elementară).
• O relaţie conţine informaţii omogene legate de anumite
entităţi, procese, fenomene.
Relaţia (tabela) CLIENŢI
Relaţii /tabele, domenii şi atribute
• Un tuplu (linie) este o succesiune de valori de diferite tipuri.
• În general, o linie regrupează informaţii referitoare la o
entitate (informaţii referitoare la un obiect, eveniment etc.): o
carte (un titlu sau un exemplar din depozitul unei biblioteci), un
/o student(ă), o localitate (oraş sau comună), un angajat al
firmei, o factură emisă etc.
• Orice tuplu reprezintă o relaţie între clase de valori  sintagma
baze de date relaţionale, în sensul matematic al relaţiei, de
asociere a două sau mai multe elemente.
• Toate tuplurile unei relaţii au acelaşi format (structură),
• Ordinea tuplurilor nu prezintă importanţă din punctul de vedere
al conţinutul informaţional al tabelei.
Relaţii /tabele, domenii şi atribute

• Fiecare atribut este caracterizat printr-un nume şi un


domeniu de valori pe care le poate lua.
• Domeniul poate fi definit ca ansamblul valorilor acceptate
(autorizate) pentru un element component al relaţiei.

• Exemple de domenii:
– Categorii de bursă (S, M, S1, S2)
– Valoare factură (-9999999,9999999)

"Tot ceea ce se poate inventa s-a inventat."


Charles H. Duell, membru al Salonului de Inventii al S.U.A., 1899.
Prima definiţie a unei Relaţii

În general, orice relaţie R poate fi definită ca un


subansamblu al produsului cartezian de n domenii Di:
R  D1 x D 2 x D 3 x ...x D n
• n este denumit gradul sau ordinul relaţiei.
• Relaţiile de grad 1 sunt unare, cele de grad 2 - binare,
..., cele de grad n - n-are.
• Această definiţie pune în evidenţă aspectul constant al
relaţiei, de independenţă în timp (se spune că în acest
caz relaţia este definită ca un predicat).
A doua definiţie a unei Relaţii

• O a doua definiţie abordează o relaţie R ca un


ansamblu de m-uplete (m-tupluri) de valori:

R = { t 1, t 2 , ..., t k , ..., t m}
unde:
t k  (dk1,dk2 , ..., dki ,...,dkn )
în care:
• dk1 este o valoare în D1, dk2 este o valoare în
D2, … , dkn este o valoare în Dn;
• n - reprezintă ordinul lui R;
• m - cardinalitatea lui R.
"Cine dracu' vrea sa auda actorii vorbind?"
(a se citi “Cine oare…”)
H.M. Warner, Warner Brothers, 1927.
RESTRICŢII ALE BAZEI DE DATE

• Pentru păstrarea coerenţei datelor, prevenirea


inconsistenţelor şi reflectarea corectă a fenomenelor şi
proceselor conţinute în BD, se definesc restricţiile, a
căror respectare, după declarare, cade în sarcina SGBD-
ului.

• Restricţiile semnalează existenţa unor constrângeri


instituite şi oarecum obligatorii.

• Prin restricţii, creşte gradul de corectitudine şi de


încredere al datelor din bază.
Cele mai importante restricţii definibile într-o bază de
date relaţională:

• restricţia de domeniu,
• de atomicitate,
• de unicitate,
• referenţială,
• restricţiile utilizator.
Relaţia (tabela) CLIENŢI
Restricţia de domeniu

Restricţia de domeniu se referă la ansamblul valorilor autorizate pentru un atribut.


Domeniul poate fi alcătuit din valori finite (sexul unei persoane, judeţele ţării) sau
infinite (valoarea unei facturi etc.).

Atomicitate

Orice atribut trebuie să fie atomic, în sensul imposibilităţii descompunerii sale în


alte atribute.

Restricţia de unicitate

Într-o relaţie nu pot exista două linii identice (două linii care prezintă
aceleaşi valori pentru toate atributele).
Mai mult, majoritatea relaţiilor prezintă un atribut, sau o combinaţie de
atribute ale căror valori nu se repetă şi care diferenţiază un tuplu de toate
celelalte tupluri ale relaţiei = restricţia de unicitate.
Nenulitate

• Modelul relaţional acceptă ca, atunci când nu se cunoaşte


valoarea unui atribut pentru o entitate, sau când pentru acel
obiect, entitate, persoană etc. atributul este inaplicabil, să se
foloseacă (meta)valoarea NULL.

• Într-o BDR se poate impune ca unele atribute să aibă


întotdeauna valori specificate, altfel spus, li se interzic valorile
nule.

• Ca regulă, atributele importante, ce ţin de identificarea sau


caracterizarea unei entităţi, proces, fenomen, precum şi cele
implicitate în calculul unor informaţii importante, sunt declarate
NOT NULL, iar atributele fără importanţă deosebită pot fi mai
“relaxate”.
Un atribut “forţat” să nu primească valori NULL şi un altul “relaxat”
Restricţia de unicitate

Noţiunile legate de această restricţie sunt:


– chei candidat,
– chei primare,
– chei alternative.
Cheia primară a unei relaţii (tabele) este un atribut sau un
grup de atribute care identifică fără ambiguitate fiecare tuplu
(linie) al relaţiei (tabelei).
După Codd, există trei restricţii pentru cheia primară:

• unicitate: o cheie identifică un singur tuplu (linie) al relaţiei.


• compoziţie minimală: atunci când cheia primară este
compusă, nici un atribut din cheie nu poate fi eliminat fără
distrugerea unicităţii tuplului în cadrul relaţiei; în cazuri limită, o
cheie poate fi alcătuită din toate atributele relaţiei.
• valori non-nule: valorile atributului (sau ale ansamblului de
atribute) ce desemnează cheia primară sunt întotdeauna
specificate, deci ne-nule şi, mai mult, nici un atribut din
compoziţia cheii primare nu poate avea valori nule; această a
treia condiţie se mai numeşte şi restricţie a entităţii.
Relaţia (tabela) CLIENŢI
Restricţia referenţială
• O bază de date relaţională este alcătuită din relaţii (tabele) aflate în
legătură. Stabilirea legăturii se bazează pe mecanismul cheii străine
şi, implicit, a restricţiei referenţiale.

• Cheile străine (coloanele de referinţă) sunt atribute sau combinaţii de


atribute care pun în legătură linii (tupluri) din relaţii diferite.
• Restricţia referenţială se instituie între două tabele, prin intermediul
unui atribut comun (de fapt, numele poate să difere, dar să aibă
aceeaşi seminificaţie)

se interzice apariţia de valori ale cheii străine care să nu se


regăsească în tabela părinte.

• Tabela în care atributul de legătură este primară se numeşte tabelă-


părinte, iar cealaltă tabelă-copil.
O cheie primară şi o cheie alternativă
O restricţie referenţială între FACTURI (tabelă-copil) şi CLIENŢI (părinte)
O restricţie referenţială între FACTURI (tabelă-copil) şi CLIENŢI (părinte)
Restricţii utilizator

• Restricţiile utilizator sunt denumite şi restricţii de


comportament sau restricţii ale organizaţiei sau reguli ale
afacerii.

• De obicei, aceste restricţii iau forma unor:

– reguli de validare la nivel de atribut,

– reguli de validare la nivel de linie /tabelă,

– reguli implementate prin declanşatoare (triggere).


Reguli la nivel de atribut

• O restricţie la nivel de atribut poate preveni introducerea în


baza de date a unor valori din alte intervale decât cele
stabilite, în alte formate decât cele acceptate etc.
• Forma clasică a unei restricţii la nivel de atribut este o
expresie în care apar constante, funcţii sistem şi, nu în
ultimul rând, atributul respectiv.
• La orice editare a atributului respectiv (declanşată în cazul
inserării unei linii în tabela din care face parte, sau la
modificarea sa) expresia este evaluată şi dacă rezultatul
evaluării este TRUE (adevărat), atunci inserarea /modificarea
este permisă, iar dacă rezultatul este FALSE, atunci
inserarea /modificarea este blocată.
Restricţii
Literele din valorile atributului NumeClient sunt obligatoriu majuscule:
la nivel de StrComp(Left(UCase([NumeClient]),1),Left([NumeClient],1),0) = 0.
atribut
Cel mai mic cod de client acceptat este 1001
[CodClient]>1000
Reguli la nivel de înregistrare

• Expresia care defineşte o restricţie la nivel de înregistrare


conţine două sau mai multe atribute şi este evaluată la
inserarea sau modificarea oricărei linii din tabelă.

• Exemplu: TVA colectată pentru o factură poate fi egală sau


este mai mică decât 19% din Valoarea fără TVA.
TVAColectată <= ValoareTotală * 0.19 / 1.19
Restricţie la nivel de înregistrare
SCHEMA ŞI CONŢINUTUL UNEI BAZE DE DATE RELAŢIONALE

Există două aspecte complementare de abordare a bazelor de


date relaţionale: schema (structura, intensia) şi conţinutul
(instanţierea, extensia).

Conţinutul unei relaţii este reprezentat de ansamblul tuplurilor


ce o alcătuiesc la un moment dat. Pe parcursul exploatării
bazei, conţinutul poate creşte exponenţial, în funcţie de volumul
şi complexitatea operaţiunilor consemnate. Este aspectul cel
mai dinamic al unei baze de date.
Schema unei BD conţine:
– denumiri ale tabelelor,
– numele, tipul şi lungimea atributelor,
– restricţii de unicitate, de non-nulitate,
– restricţii la nivel de atribut, linie,
– alte eventuale tipuri de restricţii de comportament,
– restricţii referenţiale.

Există câteva reguli de notaţie a schemei restrânse a unei BD: cheia


primară se subliniază, atributele ce pot avea valori nule se scriu între
paranteze, restricţia referenţială se reprezintă prin săgeţi etc.
Foarte importante în lumea profesioniştilor dezvoltării de
aplicaţii cu BD sunt procedurile stocate – programe de
forma funcţiilor, procedurilor, pachetelor şi mai ales
declanşatoarelor (triggerelor) – care, după cum le spune
şi numele sunt memorate în schema bazei de date şi fac
parte integrantă din aceasta.
Schema este independentă de timp şi reprezintă
componenta permanentă a relaţiilor.
Atenţie !

În literatura de popularizare a BD (mai ales a Accessului) apar


şi o serie de “bazaconii”, precum că rapoartele, formularele,
meniurile ar fi incluse în schema unei baze de date. Nu este
adevărat !

În Visual FoxPro, Accesss şi alte SGBD-uri, pentru a gestiona


mai uşor o aplicaţie se creează un project în care sunt incluse:
• bazele de date (tabele, tabele virtuale, proceduri stocate),
• interogări,
• formulare,
• rapoarte,
• meniuri etc.

Ori, confuzia care se face uneori este între proiect şi bază de


date.
Schema simplificată a bazei de date VÂNZĂRI
(ce va fi folosită pt. exemplele din Capitolele 5 si 6)

You might also like