Professional Documents
Culture Documents
Teorie Tia
Teorie Tia
Sumar:
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
foi de calcul
foaia de calcul
curentă
şi graficul. Dacă sunt mai multe produse vom trece la inserarea de linii, respectiv la copierea
formulelor deja introduse.
=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.
Help contextual
Fig. nr. 3.7. Caseta de dialog pentru alegerea formei pentru Office Assistant
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.
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.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
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.)
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.
3. Utilizarea modelului
3.1. Incărcarea produsului-program
P.C.T. 3.2. Incărcarea modelului
3.3. Introducere date de intrare
Copie de Rapoarte
siguranta
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.
Cheltuieli transport ∑ X
Cheltuieli desfacere ∑ X
Total cheltuieli ∑ ∑ ∑ ∑ X
Profit Tv-Tch Tv-Tch Tv-Tch Tv-Tch X
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.
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”)
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.
(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).
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.
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?.
Fig. nr. 3.22. Funcţii statistice pentru bazele de date. Scrierea formulelor
i=1
în care: fi = fluxuri băneşti; r = rata dobânzii; n = număr de fluxuri şi
i = perioade.
Exemple
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?
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.
Î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.
• î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.
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
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
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.
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
toate înregistrările, Top 10 – primele 10 valori, Custom – pentru definirea unui criteriu
specific (vezi fig. nr. 3.37).
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.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.
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
poziţia
cursorului
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
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
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.
B A Z A DE D A T E
Fişier de date 1
Fişier de date n
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.
Comenzi Comenzi
Aplicaţie Aplicaţie Aplicaţie
autonome autonome
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
Definirea structurii
interne de stocare Baza de date memorată pe disc
(Schema internă)
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
teoreticienilor, acest model se impune încet-încet datorită marilor producători de software dedicat
bazelor de date.
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.
Î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.
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.
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.
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.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.
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.
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
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
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).
Î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.
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.
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
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
B A Z A DE D A T E
Fişier de date 1
Fişier de date n
"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.
Comenzi Comenzi
Aplicaţie Aplicaţie Aplicaţie
autonome autonome
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
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ă.
• Modelul ierarhic;
• Modelul reţea;
• Modelul relaţional;
• Modelul obiectual;
• Modelul relaţional-obiectual.
• 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
• Exemple de domenii:
– Categorii de bursă (S, M, S1, S2)
– Valoare factură (-9999999,9999999)
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
• restricţia de domeniu,
• de atomicitate,
• de unicitate,
• referenţială,
• restricţiile utilizator.
Relaţia (tabela) CLIENŢI
Restricţia de domeniu
Atomicitate
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