BAZE DE DARE RELAT ¸ IONALE CU DATE TEMPORALE Coordonator S ¸tiint ¸ific: Lect.Univ.Dr. Dorel S ˘AVULEA Student: Laura-Maria POS ¸IRC ˘A Craiova 2017… [614036]

MINISTERUL EDUCAT ¸ IEI, CERCET ˘ARII S ¸I INOV ˘ARII
UNIVERSITATEA DIN CRAIOV A
FACULTATEA DE S ¸TIINT ¸ E
LUCRARE DE DISERTAT ¸ IE
Coordonator S ¸tiint ¸ific:
Lect.Univ.Dr. Dorel S ˘AVULEA
Student: [anonimizat]-Maria POS ¸IRC ˘A
Craiova
2017

MINISTERUL EDUCAT ¸ IEI, CERCET ˘ARII S ¸I INOV ˘ARII
UNIVERSITATEA DIN CRAIOV A
FACULTATEA DE S ¸TIINT ¸ E
BAZE DE DARE RELAT ¸ IONALE CU DATE
TEMPORALE
Coordonator S ¸tiint ¸ific:
Lect.Univ.Dr. Dorel S ˘AVULEA
Student: [anonimizat]-Maria POS ¸IRC ˘A
Craiova
2017

Cuprins
INTRODUCERE 1
1 CONCEPTE DE BAZ ˘A 5
1.1 PRELIMINARII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 FUNCT ¸ IONALIT ˘AT ¸ ILE UNEI BAZE DE DATE . . . . . . . . . . . . . . 7
1.3 STRUCTURA UNEI BAZE DE DATE . . . . . . . . . . . . . . . . . . . 8
1.4 ENTIT ˘AT ¸ I S ¸I RELAT ¸ II . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5 SISTEME DE GESTIUNE A BAZELOR DE DATE . . . . . . . . . . . . 10
1.6 DATE TEMPORALE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.7 CONSTR ˆANGERI ˆIN BAZELE DE DATE TEMPORALE . . . . . . . . . 13
2 INTERV ALE DE TIMP ALE BAZELOR TEMPORALE 15
2.1 CONSIDERAT ¸ II GENERALE . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 TIPURI DE INTERV ALE . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3 OPERAT ¸ IUNI SCALARE PE INTERV ALE . . . . . . . . . . . . . . . . . 18
2.3.1 OPERATORII ALLEN . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4 OPERATORI DE AGREGARE PE INTERV ALE . . . . . . . . . . . . . . 20
2.5 OPERATORI RELAT ¸ IONALI CARE IMPLIC ˘A INTERV ALE . . . . . . . 21
3 APLICAT ¸ IE 30
3.1 ORACLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.1.1 ARHITECTURA ORACLE . . . . . . . . . . . . . . . . . . . . . 30
3.1.2 ARHITECTURA APLICAT ¸ IILOR . . . . . . . . . . . . . . . . . 33
3.1.3 ELEMENTE DEFINITORII FOLOSITE . . . . . . . . . . . . . . 35
3.1.4 INSTRUCT ¸ IUNI SQL . . . . . . . . . . . . . . . . . . . . . . . . 37
3.1.5 SQL DEVELOPER . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.1.6 MYBATIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.2 JA V A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
i

CUPRINS 1
3.2.1 ARHITECTURA . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.2.2 MODEL-VIEW-CONTROLLER . . . . . . . . . . . . . . . . . . 50
3.2.3 JSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
CONCLUZII 55
BIBLIOGRAFIE 57

INTRODUCERE
Lucrarea de fat ¸ ˘aˆıs ¸i propune s ˘a reliefeze not ¸iuniile din cadrul bazelor de date care au ˆın
prim-plan elemente temporale. Bazele de date temporale sunt foarte importante ˆın cadrul
sistemele informatice deoarece ajut ˘a foarte mult at ˆatˆın filtrarea datelor c ˆat s ¸iˆın asigurarea
unei securit ˘at ¸i sporite.
Modelul de date relat ¸ionale a c ˆas ¸tigat popularitate din cauza simplit ˘at ¸ii sale s ¸i a construct ¸iei
matematice solide. Totus ¸i, modelul de date relat ¸ional nu abordeaz ˘a dimensiunea temporal ˘a
a datelor. Variat ¸ia datelor ˆın timp este tratat ˘aˆın acelas ¸i mod ca s ¸i datele obis ¸nuite. Acest
lucru nu este satisf ˘ac˘ator pentru aplicat ¸iile care necesit ˘a valori de date existente s ¸i /sau date
viitoare – care vor fi tratate de c ˘atre baza de date. De fapt, majoritatea aplicat ¸iilor necesit ˘a
ˆıntr-o oarecare m ˘asur˘a date temporale.
Cele mai multe aplicat ¸ii ale tehnologiei bazei de date au caracter temporal. Exemplele
includ: aplicat ¸ii financiare cum ar fi gestionarea portofoliului, contabilitate s ¸i servicii ban-
care, ˆınregistr ˘ari cu personalul, ˆınregistrarea medical ˘a s ¸i inventarul de management, pro-
gramarea aplicat ¸iilor, cum ar fi rezerv ˘arile aeriene, trenurile s ¸i hotelurile, managementul
proiectelor s ¸i aplicat ¸ii s ¸tiint ¸ifice cum ar fi monitorizarea vremii.
ˆIn momentul ˆın care cerint ¸ele care vin de la beneficiar sunt complete, urm ˘ator pas care
trebuie init ¸iat este schematizarea s ¸i crearea bazei de date. Este un pas foarte important ˆın
ceea ce prives ¸te ciclul de viat ¸ ˘a al unei aplicat ¸ii deoarece implic ˘a un moment T0de la care
programatorii ˆıncep dezvoltarea. Prototipul asignat ciclul de viat ¸ ˘a este considerat un factor
important de succes.
O baz ˘a de date modeleaz ˘a s ¸iˆınregistreaz ˘a informat ¸ii despre o parte a realit ˘at ¸ii, denumit ˘a
realitatea modelat ˘a. Aspectele importante sunt reprezentate ˆın baza de date de o varietate de
structuri care sunt pur s ¸i simplu numite entit ˘at ¸i de baze de date. Termenul fapt ˘a (ˆıntˆamplare)
pentru orice afirmat ¸ie logic ˘a poate fi atribuit ˆın mod semnificativ unei valori de adev ˘ar, fie
adev ˘arat, fie fals s ¸i este ˆın general, asociat cu entit ˘at ¸i de baze de date.
Faptele ˆınregistrate de entit ˘at ¸ile bazei de date prezint ˘a un interes fundamental. Mai
multe aspecte temporale pot fi asociate cu acestea. Cel mai important timp valabil asociat
2

CUPRINS 3
faptei este timpul colectat – eventual, care acoper ˘a trecutul, prezentul s ¸i viitorul. Toate
faptele au un termen valabil prin definit ¸ie. Cu toate acestea, durata valid ˘a a unei fapte nu
poate fi ˆınregistrat ˘a neap ˘aratˆın baza de date, din cauza mai multor motive. De exemplu,
este posibil ca timpul necesar s ˘a nu fie cunoscut sau ˆınregistrarea s ˘a nu fie relevant ˘a pentru
aplicat ¸iile acceptate de baza de date. Dac ˘a o baz ˘a de date modeleaz ˘a diferite lumi posibile,
faptele bazei de date pot avea mai multe vremuri valide, una pentru fiecare astfel de lume.
Auditul la nivel de baze de date este un element foarte cunoscut care trebuie aplicat
pentru a det ¸ine o evident ¸ ˘a a tuturor act ¸iunilor efectuate la nivelul bazei. De asemenea,
auditul este responsabil ˆıntotdeuna de protejarea s ¸i p ˘astrarea confident ¸ialit ˘at ¸ii informat ¸iilor
stocate.
Preocuparea privind politicile s ¸i practicile de confident ¸ialitate a crescut constant odat ˘a
cu utilizarea omniprezent ˘a a bazelor de date ˆınˆıntreprinderi s ¸i pe Internet. Oracle Databa-
se ofer ˘a un mecanism de audit care permite administratorilor de sistem s ˘a implementeze
protect ¸ii sporite, detectarea timpurie a activit ˘at ¸ilor suspecte s ¸i r ˘aspunsurile de securitate
bine definite.
ˆIn momentul actual la nivel de Oracle, monitorizarea permite auditarea selectiv ˘a s ¸i efi-
cient ˘aˆın cadrul bazei de date, utiliz ˆand politici s ¸i condit ¸ii. Noua sintax ˘a bazat ˘a pe politic ˘a
simplific ˘a gestionarea auditului ˆın baza de date s ¸i ofer ˘a posibilitatea de a accelera auditul
ˆın funct ¸ie de condit ¸ii. De exemplu, politicile de audit pot fi configurate pentru a fi auditate
pe baza adreselor IP specifice, a programelor, a perioadelor de timp sau a tipurilor de con-
exiuni, cum ar fi autentificarea proxy. ˆIn plus, schemele specifice pot fi us ¸or exceptate de la
audit c ˆand politica de audit este activat ˘a.
Oracle Database furnizeaz ˘a un suport robust de audit at ˆatˆan enterprise, c ˆat s ¸i ˆın edit ¸ia
standard a bazei de date. Tabelele de audit includ informat ¸ii despre operat ¸iunea care a
fost audiat ˘a, despre utilizatorul care efectueaz ˘a operat ¸ia s ¸i despre data s ¸i ora operat ¸iei.
ˆInregistr ˘arile de audit pot fi stocate ˆın traseul de audit al bazei de date sau ˆın fis ¸ierele
din sistemul de operare. Auditul standard include operat ¸iuni privind privilegiile, schemele,
obiectele s ¸i instruct ¸iunile efectuate.
Aplicat ¸iile software dezvoltate care au o complexitate mai mare, necesit ˘a, de obicei,
mai multe nivele de acces pentru utilizatori. Un factor important ˆın acest proces de creare
de utilizatori este timpul. Trebuie cunoscut ˆın orice momentul nivelul de acces pe care
ˆıl det ¸ine un utilizator care poate avea mai multe nivele de acces pe parcursul activit ˘at ¸ii
ˆıntreprinse la nivel de aplicat ¸ie.
Totodat ˘a, pe l ˆang˘a tabelele propriu-zise cu informat ¸ii prelucrate la nivel de aplicat ¸ie,
mai exist ˘a s ¸i tabele considerate dict ¸ionare. De asemenea, este foarte indicat ˘a folosirea ele-

CUPRINS 4
mentelor temporale deoarece orice dat ˘a din acest dict ¸ionar poate s ˘a fie valabil ˘a doar la un
moment dat s ¸i poate s ˘a expire ˆın orice moment. Datele din dict ¸ionare sunt preluate de obicei
de c˘atre elemente select de pe partea de front-end.
Cea mai cunoscut ˘a utilizare a bazelor de date temporale este ˆın cadrul semn ˘aturilor
digitale ˆın cadrul aplicat ¸iilor web. F ˘ar˘a elemente de timp la nivelul semn ˘aturilor, acestea ar
fi necomplete s ¸i necertificate. Este foarte important acest factor la nivel de semn ˘atur˘a.
ˆIn cadrul capitolul I s ¸i II sunt evident ¸iate not ¸iuniile introductive la nivel de baze de date
temporale. Sunt abordate toate elementele definitorii care au stat la baza cre ˘arii aplicat ¸iei
propriu-zise.
Toate elementele software necesare pe parcursul dezvolt ˘arii sunt punctate ˆın cadrul ca-
pitolul III care pune ˆın evident ¸ ˘a dou ˘a elemente principale ORACLE s ¸i JA V A. Dup ˘a cum
sugereaz ˘a s ¸i capitolul III, prin forma de organizare a cuprinsului, la baz ˘a, a fost dezvoltat ˘a
o aplicat ¸ie Java Enterprise Edition av ˆand o baz ˘a de date Oracle. Pentru partea de persistent ¸ ˘a
la nivel de Java a fost folosit un API de baze de date numit Mybatis care a us ¸urat foarte
mult munca propriu-zis ˘a datorit ˘a elementelor simpliste pe care le det ¸ine.

Capitolul 1
CONCEPTE DE BAZ ˘A
1.1 PRELIMINARII
Un sistem de baze de date este ˆın principiu doar un sistem computerizat de p ˘astrare a
ˆınregistr ˘arilor. Baza de date poate fi privit ˘a ca un mecanism de p ˘astrare electronic care im-
plic˘a un depozit sau un container pentru o colect ¸ie de fis ¸iere de date computerizate. Bazele
de date sunt concepute pentru a manipula cantit ˘at ¸i mari de informat ¸ii prin introducerea,
stocarea, preluarea s ¸i gestionarea acestor informat ¸ii. Bazele de date utilizeaz ˘a un format de
tabel ˘a, Microsoft Access fiind unul dintre cele mai utilizate.
Bazele de date au ˆın component ¸ ˘a rˆanduri s ¸i coloane. Fiecare informat ¸ie este intro-
dus˘aˆıntr-un r ˆand, ceea ce creeaz ˘a oˆınregistrare. Bazele de date sunt utilizate ˆın mod
obis ¸nuit atunci c ˆand se salveaz ˘a adrese sau alte tipuri de liste lungi de informat ¸ii. Odat ˘a
ceˆınregistr ˘arile sunt create ˆın baza de date, ele pot fi sortate s ¸i manipulate ˆıntr-o varietate
de moduri care sunt limitate ˆın principal de software-ul utilizat.
O baz ˘a de date poate cont ¸ine milioane de fapte. Din aceste fapte, sistemul de gestionare
a bazelor de date (DBMS) poate obt ¸ine informat ¸ii sub form ˘a de r ˘aspunsuri la ˆıntreb ˘ari.
Popularitatea bazelor de date ˆın afaceri este un rezultat direct al puterii DBMS-urilor ˆın
obt ¸inerea de informat ¸ii de afaceri valoroase din colect ¸ii mari de date.
Bazele de date sunt oarecum similare cu foile de calcul dar acestea sunt mai puternice
decˆat foile de calcul datorit ˘a capacit ˘at ¸ii lor de a manipula datele.
Sistemele de baze de date pot fi v ˘azute ca mediatori ˆıntre fiint ¸ele umane care doresc
s˘a foloseasc ˘a datele s ¸i dispozitivele fizice pe care le det ¸in. Gestiunea bazelor de date se
bazeaz ˘a pe utilizarea explicit ˘a a sistemelor de fis ¸iere s ¸i a software-ului de aplicat ¸ii perso-
nalizat. Treptat, s-au dezvoltat principii s ¸i mecanisme care i-au izolat pe utilizatorii bazei
de date de detaliile implement ˘arilor fizice. Primul pas important ˆın aceast ˘a direct ¸ie a fost
5

CAPITOLUL 1. CONCEPTE DE BAZ ˘A 6
dezvoltarea unei arhitecturi pe trei nivele. Aceast ˘a arhitectur ˘a separ ˘a funct ¸ionalit ˘at ¸ile bazei
de date ˆın nivel fizic, logic s ¸i extern.
Separarea definit ¸iei logice a datelor, de implementarea lor fizic ˘a este esent ¸ial ˘a pen-
tru domeniul bazelor de date. Una dintre direct ¸iile majore de cercetare ˆın domeniu a fost
dezvoltarea s ¸i studiul modelelor s ¸i interfet ¸elor abstracte, orientate spre om pentru a speci-
fica structura datelor stocate s ¸i pentru a le manipula.
Aceste modele permit utilizatorului s ˘a se concentreze pe o reprezentare logic ˘a a datelor
care seam ˘an˘a cu viziunea sa asupra realit ˘at ¸ii modelate de date mult mai ˆındeaproape dec ˆat
reprezentarea fizic ˘a. Au fost dezvoltate mai multe modele de date logice, inclusiv cele
ierarhice, de ret ¸ea, orientate pe relat ¸ii s ¸i obiect. Acestea includ ˆın primul r ˆand o structur ˘a
de definire a datelor (DDL) pentru specificarea aspectelor structurale ale datelor s ¸i a unui
limbaj de manipulare a datelor (DML) pentru accesarea s ¸i actualizarea acestora. Separarea
logicii de cea fizic ˘a a dus la o cres ¸tere extraordinar ˘a a utilizabilit ˘at ¸ii bazei de date s ¸i a
productivit ˘at ¸ii programatorului.
Un alt beneficiu al acestei separ ˘ari este c ˘a multe aspecte ale implement ˘arii fizice pot fi
modificate f ˘ar˘a a fi nevoie s ˘a se modifice viziunea abstract ˘a a bazei de date. Aceasta reduce
ˆın mod substant ¸ial necesitatea de a schimba programele de aplicat ¸ii existente. Separarea
nivelelor logice s ¸i fizice ale unui sistem de baze de date este denumit ˘a de obicei princi-
piul independent ¸ei datelor. Aceasta este, f ˘ar˘aˆındoial ˘a, cea mai important ˘a distinct ¸ie ˆıntre
sistemele de fis ¸iere s ¸i sistemele de baze de date.
A doua separare ˆın arhitectur ˘a,ˆıntre nivelele externe s ¸i logice, este de asemenea im-
portant ˘a. Permite diferite perspective sau puncte de vedere asupra bazei de date care sunt
adaptate nevoilor specifice. Vizualiz ˘arile ascund informat ¸ii irelevante s ¸i restructureaz ˘a da-
tele care sunt p ˘astrate. O problem ˘a major ˘a legat ˘a de separ ˘arile din arhitectur ˘a este com-
promisul ˆıntre confortul omului s ¸i performant ¸a rezonabil ˘a. De exemplu, separarea dintre
mijloacele logice s ¸i fizice ˆınseamn ˘a c˘a sistemul trebuie s ˘a compileze interog ˘ari s ¸i actua-
liz˘ariˆındreptate spre reprezentarea logic ˘aˆın programe reale.
ˆIntr-adev ˘ar, utilizarea modelului relat ¸ional a devenit larg r ˘aspˆandit ˘a numai atunci c ˆand
tehnicile de optimizare a interog ˘arii au f ˘acut-o fezabil ˘a. Pe m ˘asur˘a ce domeniul optimiz ˘arii
bazelor de date fizice s-a maturizat, modelele logice au devenit din ce ˆın ce mai ˆındep ˘artate
de stocarea fizic ˘a. Dezvolt ˘arile hardware influent ¸eaz ˘a foarte mult domeniul, schimb ˆandˆın
mod constant limitele fezabilit ˘at ¸ii.

CAPITOLUL 1. CONCEPTE DE BAZ ˘A 7
1.2 FUNCT ¸ IONALIT ˘AT ¸ ILE UNEI BAZE DE DATE
Dbms-urile moderne includ o gam ˘a larg ˘a de funct ¸ionalit ˘at ¸i de natura fizic ˘a care ajung s ˘a
fie transpuse ˆın mod abstract. Unele funct ¸ionalit ˘at ¸i, cum ar fi recuperarea bazei de date, pot
fiˆın mare parte ignorate de aproape tot ¸i utilizatorii. Altele sunt prezentate programatorilor
de aplicat ¸ii ˆın moduri abstracte.
Funct ¸ionalit ˘at ¸ile primare ale dbms-urilor sunt urm ˘atoarele:
Managementul stoc ˘arii secundare : Scopul dbms-urilor este de a gestiona cantit ˘at ¸i
mari de date partajate;
Persistent ¸ ˘a: datele trebuie s ˘a fie persistente (adic ˘a ar trebui s ˘a supraviet ¸uiasc ˘a ter-
min˘arii unei anumite aplicat ¸ii ale unei baze de date, astfel ˆıncˆat s˘a poat ˘a fi reutilizat ˘a
mai t ˆarziu);
Controlul concurent ¸ei : datele sunt partajate. Sistemul trebuie s ˘a sprijine accesul
simultan la informat ¸iile partajate ˆıntr-un mediu armonios care controleaz ˘a conflictele
de acces s ¸i prezint ˘a o stare de baz ˘a coerent ˘a pentru fiecare utilizator;
Protect ¸ia datelor : baza de date este o surs ˘a nepret ¸uit ˘a de informat ¸ii care trebuie pro-
tejat˘aˆımpotriva erorilor umane, a programelor de aplicat ¸ii, a es ¸ecurilor pe computer
s ¸i a utiliz ˘arii abuzive a oamenilor;
Interfat ¸a om-mas ¸in ˘a: aceasta implic ˘a o mare varietate de caracteristici, ˆın general
ˆın jurul reprezent ˘arii logice a datelor;
Distribut ¸ie :ˆIn multe aplicat ¸ii, informat ¸iile se g ˘asesc ˆın locat ¸ii distincte. Chiar s ¸i ˆın
cadrul unei ˆıntreprinderi locale, este de as ¸teptat s ˘a se g ˘aseasc ˘a informat ¸ii interdepen-
dente r ˘aspˆandite ˆın mai multe baze de date, fie din motive istorice, fie pentru a p ˘astra
fiecare baz ˘a de date ˆın dimensiune us ¸or de gestionat;
Compilat ¸ie s ¸i optimizare : O sarcin ˘a major ˘a a sistemelor de baze de date este tradu-
cerea cererilor la nivel extern s ¸i logic ˆın programe executabile.

CAPITOLUL 1. CONCEPTE DE BAZ ˘A 8
1.3 STRUCTURA UNEI BAZE DE DATE
O baz ˘a de date este o structur ˘a de ˆınregistr ˘ariˆın bloc care pot fi stocate de ordinul
milioanelor. Acest lucru ar fi util, de exemplu, dac ˘a se dores ¸te ad ˘augarea de coloane noi
sau se dores ¸te aplicarea unui patch de date.
Dac˘a baza de date este relat ¸ional ˘a, atunci se pot face referint ¸e ˆıncrucis ¸ate ˆın tabele
diferite prin chei primare respectiv str ˘aine.
O baz ˘a de date poate efectua calcule agregate complexe pe mai multe tabele. Aceasta
poate impune consecvent ¸ ˘a s ¸i integritate a datelor, ceea ce ˆınseamn ˘a c˘a poate evita duplica-
rea s ¸i asigur ˘a precizia datelor prin design s ¸i o serie de constr ˆangeri.
O baz ˘a de date este alc ˘atuit˘a din tabele care cont ¸in coloane s ¸i r ˆanduri. Datele sunt
separate prin categorii ˆın tabele, pentru a evita duplicarea. De exemplu, o afacere ar putea
avea un tabel pentru angajat ¸i, unul pentru client ¸i s ¸i altul pentru produse.
Fiecare r ˆand dintr-un tabel este numit ˆınregistrare s ¸i fiecare celul ˘a este numit ˘a cˆamp.
Fiecare c ˆamp (sau coloan ˘a) poate fi proiectat s ˘a det ¸in ˘a un anumit tip de date, cum ar fi
un num ˘ar, un text sau o dat ˘a. Acest lucru este impus de o serie de reguli pentru a asigura
corectitudinea s ¸i ˆıncrederea datelor evident ¸iate.
Tabelele dintr-o baz ˘a de date relat ¸ional ˘a sunt legate printr-o cheie. Acest ˘a cheie este
reprezentat ˘a de obicei ˆın tabele printr-un ID care identific ˘a un r ˆand unic.
Fiecare tabel are o coloan ˘a de cheie primar ˘a, iar orice tabel care trebuie s ˘a fac ˘a leg ˘atura
la acel tabel va avea o coloan ˘a de cheie str ˘ain˘a a c˘arei valoare se va potrivi cu cheia primar ˘a
a primului tabel.
O baz ˘a de date va include formulare astfel ˆıncˆat utilizatorii s ˘a poat ˘a introduce sau edita
date. ˆIn plus, va avea posibilitatea de a genera rapoarte din date. Un raport este pur s ¸i simplu
r˘aspunsul la o ˆıntrebare, numit ˘a interogare ˆın baza de date.
De exemplu, se poate interoga baza de date pentru a afla venitul brut al unei companii
pe o anumit ˘a perioad ˘a de timp. Baza de date va ˆıntoarce raportul cu informat ¸iile solicitate.

CAPITOLUL 1. CONCEPTE DE BAZ ˘A 9
1.4 ENTIT ˘AT ¸ I S ¸I RELAT ¸ II
Tipurile de informat ¸ii salvate ˆın baza de date se numesc entit ˘at ¸i. Aceste entit ˘at ¸i exist ˘a
ˆın patru tipuri:
Oameni;
Lucruri;
Evenimente;
Locat ¸ii.
Tot ce se dores ¸te pus ˆıntr-o baz ˘a de date se ˆıncadreaz ˘aˆıntr-una din aceste categorii.
Dac˘a informat ¸iile dorite nu se ˆıncadreaz ˘aˆın aceste categorii, atunci probabil nu exist ˘a o
entitate, ci o proprietate a unei entit ˘at ¸i sau un atribut.
Urm ˘atorul pas este de a determina relat ¸iile dintre entit ˘at ¸i s ¸i de a determina corectitudi-
nea fiec ˘arei relat ¸ii. Relat ¸ia este leg ˘atura dintre entit ˘at ¸i, la fel ca ˆın lumea real ˘a care indic ˘a
modalitatea de corespondent ¸ ˘aˆıntre dou ˘a entit ˘at ¸i.
Cardinalitatea arat ˘a cˆat de mult o parte a relat ¸iei apart ¸ine celeilalte p ˘art ¸i a relat ¸iei. ˆIn
primul r ˆand, trebuie precizat pentru fiecare relat ¸ie, a c ˆat˘a parte dintr-o parte apart ¸ine exact.
ˆIntre entit ˘at ¸i poate exista o dependent ¸ ˘a reciproc ˘a. Aceasta ˆınseamn ˘a c˘a elementul nu poate
exista dac ˘a cel ˘alalt element nu exist ˘a.
Cele mai multe baze de date moderne sunt relat ¸ionale, ceea ce ˆınseamn ˘a c˘a datele sunt
stocate ˆın tabele, const ˆand din r ˆanduri s ¸i coloane, iar datele din tabele diferite sunt legate
de semnificat ¸iile anumitor coloane obis ¸nuite.
Modelul relat ¸ional ca s ¸i orice alt model de date utilizat ˆın proiectarea logic ˘a a bazelor
de date elibereaz ˘a utilizatorul de cunoas ¸terea detaliilor despre structura fizic ˘a s ¸i metodele
de acces la date. ˆIn afar ˘a de aceasta, el are dou ˘a avantaje suplimentare: e simplu s ¸i elegant.
Simplitatea sa const ˘aˆın structurile de date omogene ˆın form ˘a de relat ¸ii tabelare. Iar
elegant ¸a modelului se explic ˘a prin schema sa s ¸tiint ¸ific ˘a. El este riguros din punct de vedere
matematic grat ¸ie faptului c ˘a se bazeaz ˘a pe teoriile matematice ale relat ¸iilor s ¸i pe logica de
ordinul unu.
Modelul relat ¸ional a fost primul exemplu de model de date formal s ¸i a fost propus de
E. Codd ˆın 1970. Prin model datele utilizatorului sunt reprezentate s ¸i manipulate ˆın mod
abstract.

CAPITOLUL 1. CONCEPTE DE BAZ ˘A 10
Unul din avantajele modelului relat ¸ional rezid ˘aˆın omogenitatea lui. Toate datele sunt
structurate ˆın tabele, fiecare linie av ˆand acelas ¸i format. Linia ˆıntr-un tabel reprezint ˘a un
obiect (sau o relat ¸ie dintre obiecte) din lumea ˆınconjur ˘atoare.
1.5 SISTEME DE GESTIUNE A BAZELOR DE DATE
SGBD : reprezint ˘a software-ul care asigur ˘a realizarea urm ˘atoarelor activit ˘at ¸i:
definirea structurii bazei de date;
ˆınc˘arcarea datelor ˆın baza de date;
accesul la date (interogare, actualizare);
ˆıntret ¸inerea bazei de date (colectarea s ¸i refolosirea spat ¸iilor goale, refacerea bazei de
date ˆın cazul unui incident);
reorganizarea bazei de date (restructurarea datelor s ¸i modificarea strategiei de acces);
securitatea datelor.
As ¸adar, sistemul de gestiune al bazei de date apare ca un sistem complex de programe
care asigur ˘a interfat ¸a ˆıntre o baz ˘a de date s ¸i utilizatorii acesteia. Privit ˘aˆıntr-un sens larg,
baza de date implic ˘a patru componente:
date;
hardware;
software;
utilizatori.
Datele sunt memorate folosind tehnici de informat ¸ii iar hardware-ul se compune din
volume de memorie pe care rezid ˘a baza de date, iar software-ul asociat bazei de date se
numes ¸te sistem de gestiune a bazei de date (SGBD). Toate cererile de acces la baza de date
sunt tratate prin intermediul SGBD.

CAPITOLUL 1. CONCEPTE DE BAZ ˘A 11
1.6 DATE TEMPORALE
O baz ˘a de date temporal ˘a este o baz ˘a care cont ¸ine at ˆat date istorice c ˆat s ¸i date curente.
Astfel de baze de date au fost ˆın curs de investigare activ ˘aˆınc˘a de la mijlocul anilor 1970.
Unele dintre aceste investigat ¸ii adopt ˘a pozit ¸ia extrem ˘a ca datele dintr-o astfel de baz ˘a s˘a fie
introduse, niciodat ˘a s ¸terse sau actualizate, ˆın cazul ˆın care baza de date cont ¸ine doar date
istorice. Cealalt ˘a extrem ˘a este o baz ˘a de date instantanee, care cont ¸ine doar date curente, iar
datele sunt s ¸terse sau actualizate atunci c ˆand faptele reprezentate prin aceste date ˆınceteaz ˘a
s˘a mai fie adevarate (cu alte cuvinte, o baz ˘a de date instantanee este doar o baz ˘a de date
ˆınteleas ˘aˆın mod convent ¸ional, ca o baz ˘a de date temporal ˘a).
ˆIntr-o baz ˘a de date instantanee, momentul ˆın care baza de date este interogat ˘a este
momentul actual. Dup ˘a cum o s ˘a se observe, modul ˆın care datele sunt gestionate s ¸i utilizate
ˆıntr-o baz ˘a de date temporal ˘a difer ˘a printr-o varietate de moduri importante, de la modul ˆın
care este gestionat s ¸i p ˆan˘a la modul cum este utilizat ˆıntr-o baz ˘a de date instantanee.
Caracteristica distinctiv ˘a a unei baze de date temporale este, desigur, timpul ˆın sine.
Cercetarea bazei de date temporale a implicat, prin urmare, mai multe investigat ¸ii ˆın natura
timpului ˆın sine. Iat ˘a cˆateva dintre problemelele care au fost explorate:
Fie ca timpul corespunz ˘ator s ˘a aib ˘a un ˆınceput s ¸i /sau un sf ˆarsit;
Fie ca timpul s ˘a fie declarat ca fiind un proces continuu sau s ˘a aib ˘a loc ˆın cuante
discrete;
Caracterizarea conceptului de acum.
Pentru modelarea atributului de timp pot fi identificate trei tipuri de date temporale
fundamentale (Snodgrass, 2000):
Moment: un moment sau punct ˆın timp, c ˆand se ˆıntampl ˘a ceva (de exemplu, 20 iulie
1969, 20:17:40 GMT, c ˆand astronautul Neil Armstrong a pus piciorul pe Luna);
Interval: o durat ˘a nelocalizat ˘aˆın timp (de exemplu, 12 luni, 15 minute, 30 secunde
etc.);
Perioada: o durat ˘a localizat ˘aˆın timp (de exemplu, 1 decembrie 2005 la 31 ianua-
rie 2006). ˆIn acord cu terminologia folosit ˘aˆın (Goralwalla et al., 2001), perioadele
corespund unor date temporale ancorate, ˆın timp ce intervalele sunt date temporale
neancorate.

CAPITOLUL 1. CONCEPTE DE BAZ ˘A 12
Din perspectiva aplicat ¸iilor cu baze de date, este important ˘a distinct ¸ia ˆıntre trei categorii
fundamentale de timp:
Timpul utilizator (user-defined time), reprezent ˆand uzual un moment de timp (point
in time) a c ˘arui semnificat ¸ie este determinat ˘a de utilizator (de exemplu, momentul
cˆand se execut ˘a o aplicat ¸ie).
Perioada de validitate (valid time), desemn ˆand perioada de timp pe parcursul c ˘areia
un fapt este adev ˘aratˆın raport cu situat ¸ia din lumea real ˘a.
Perioada de tranzact ¸ionare (transaction time), desemn ˆand perioada de timp pe par-
cursul c ˘areia un fapt este reflectat informat ¸ional ˆın baza de date.
ˆIn cazul ˆın care datele sunt o reprezentare codificat ˘a a faptelor, atunci datele temporale
sunt o reprezentare codificat ˘a a faptelor marcate temporal. ˆIntr-o baz ˘a de date temporal ˘a,
ˆın conformitate cu interpretarea extrem ˘a a acestui termen, toate datele sunt temporale, ceea
ceˆınseamn ˘a c˘a fiecare fapt ˆınregistrat este marcat temporal.
Rezult ˘a c˘a o relat ¸ie temporal ˘a este una ˆın care fiecare tuplu include cel put ¸in o amprent ˘a
de timp (adic ˘a, titlul include cel put ¸in un atribut de un anumit tip de amprent ˘a de timp). ˆIn
continuare, rezult ˘a c˘a o relat ¸ie variabil ˘a temporal ˘a este una a c ˘arei pozit ¸ie este aceea a unei
relat ¸ii temporale s ¸i (relat ¸ional ˘a) o baz ˘a de date temporal ˘a este una ˆın care toate relat ¸iile
variabile sunt cele temporale.
ˆIn acest capitol, se va lua o baz ˘a de date temporal ˘a care nu se limiteaz ˘a doar la date
temporale.
ˆIn functie de modul de folosire a perioadelor de timp pentru marcare, se disting mai
multe forme de baze de date temporale:
Baze de date istorice (historical database): care memoreaz ˘a datele ˆın raport cu peri-
oada de validitate;
Baze de date tranzact ¸ionale (rollback database): care memoreaz ˘a datele ˆın raport cu
perioada de tranzact ¸ionare;
Baze de date bitemporale (bitemporal database): care memoreaz ˘a datele ˆın raport cu
ambele perioade de timp.
ˆIn raport cu aceast ˘a clasificare, bazele de date non-temporale pot fi considerate ca fiind
doar instantanee (snapshot databases), av ˆand capacitatea s ˘a reflecte o singur ˘a stare a lumii
reale, uzual pe cea mai recent ˘a.

CAPITOLUL 1. CONCEPTE DE BAZ ˘A 13
1.7 CONSTR ˆANGERI ˆIN BAZELE DE DATE TEMPO-
RALE
Tabelul 1 are urm ˘atoarele coloane:
S# care det ¸ine cheia primar ˘a s ¸i face leg ˘atura cu tabelul SP;
SNAME (numele furnizorului);
STATUS (num ˘arul angajat ¸ilor);
CITY (oras ¸ul);
SINCE(data ˆınfiint ¸ ˘arii).
Constr ˆangerea (baz˘a de date instantanee curent ˘a): singurele constr ˆangeri care trebuie
luate ˆın considerare aici sunt constr ˆangerile cheie. ˆIn tabelul anterior sunt evident ¸iate S# s ¸i
S#,P# care sunt chei principale ale lui S s ¸i SP. S# este o cheie str ˘ain˘aˆın SP care face referire
la cheia primar ˘a S. P # ˆın SP constituie, eventual, o cheie str ˘ain˘a care face referire la cheia
primar ˘a a unei variabile relat ¸ionale, P.
S# SNAME STATUS CITY SINCE
S1 Popescu 20 LONDRA d04
S2 Ionescu 10 PARIS d07
S3 Stancu 30 PARIS d03
S4 Badea 20 LONDRA d04
S5 Dragomir 30 ATENA d02
Tabelul 1: S-SINCE

CAPITOLUL 1. CONCEPTE DE BAZ ˘A 14
S# P# SINCE
S1 P1 d04
S1 P2 d05
S1 P3 d09
S1 P4 d05
S1 P5 d04
S1 P6 d06
S2 P1 d08
S2 P2 d09
S3 P2 d08
S4 P2 d06
S4 P4 d04
S4 P5 d05
Tabelul 2: SP-SINCE
CONSTRAINT AUG_SP_TO_S_FK
IS_EMPTY (((S_SINCE RENAME SINCE AS SS) JOIN
(SP_SINCE RENAME SINCE AS SPS)) WHERE SPS < SS);
Interog ˘arile
Consider ˘am doar dou ˘a interog ˘ari:
Interogarea 1: Se ia furnizorul din totalul de furnizori, care este ˆın prezent ˆın m˘asur˘a
s˘a furnizeze o pies ˘a;
SP fS#g
Interogarea 2: Se ia furnizorul din totalul de furnizori, care este ˆın prezent ˆın imposi-
bilitatea de a furniza orice parte.
SfS#gMINUS SP fS#g
Se observ ˘a c˘a Interogarea 1 implic ˘a o proiect ¸ie simpl ˘a s ¸i interogarea 2 implic ˘a diferent ¸a
ˆıntre dou ˘a astfel de proiect ¸ii.

Capitolul 2
INTERV ALE DE TIMP ALE BAZELOR
TEMPORALE
2.1 CONSIDERAT ¸ II GENERALE
ˆIn cele ce urmeaz ˘a, o s ˘a ne concentr ˘am pe dezvoltarea de mult ¸imi de stenografii. Primul
s ¸i cel mai important pas este de a recunoas ¸te necesitatea intervalelor de timp, as ¸a cum sunt
caracterizate ele ca atare, ˆın loc de a le mai trata ca ˆın sect ¸iuniile anterioare unde erau
perechi de valori separate. Ce este mai exact un interval?
Avˆandˆın vedere tabelul anterior, furnizorul S1 a fost ˆın m ˘asur˘a s˘a furnizeze piesa P1
din ziua 4 p ˆan˘aˆın ziua 10. Dar ce ˆınseamn ˘a, de fapt, din ziua a 4-a p ˆan˘aˆın ziua a 10-a?
Este clar c ˘a zilele 5, 6, 7, 8 s ¸i 9 sunt incluse, lucru care nu poate fi la fel de clar s ¸i ˆın
cazul zilelor 4 s ¸i 10. Se dovedes ¸te c ˘a,ˆın momentul c ˆand se precizeaz ˘a un interval av ˆand
o valoare de start s ¸i una de final, aceste dou ˘a valori c ˆateodat ˘a sunt considerate incluse,
cateodat ˘a nu.
Dac˘a intervalul de la ziua 4 la ziua 10 include ziua 4 atunci noi putem afirma c ˘a acest
interval este deschis, ˆın caz contrar acest interval se consider ˘aˆınchis.
Aceast ˘a regul ˘a pentru punctul de ˆınceput al intervalului este aceias ¸i s ¸i pentru punctul
de final al intervalului, consider ˆandu-se ˆınchis ˆın cazul ˆın care ziua 10 nu este inclus ˘aˆın
interval, sau deschis dac ˘a este inclus ˘a valoarea ˆın interval.
Convent ¸ional, pentru a clarifica nedumerirea legat ˘a de punctul de ˆınceput s ¸i final al
intervalului, se vor folosi paranteze ˆınchise s ¸i deschise care s ˘a indice opt ¸iunea. Parantezele
sunt de dou ˘a feluri: drepte s ¸i rotunde.
Cele drepte se vor folosi ˆın cazul ˆın care intervalul este deschis s ¸i cele rotunde ˆın cazul
ˆın care intervalul este ˆınchis.
15

CAPITOLUL 2. INTERV ALE DE TIMP ALE BAZELOR TEMPORALE 16
Cˆateva exemple pentru clarificare:
[ d04, d10 ]
[ d04, d11 )
( d03, d10 ]
( d03, d11 )
Pare destul de ciudat de folosit o parantez ˘a dreapt ˘a s ¸i una rotund ˘aˆın cadrul unui inter-
val. Des ¸i, pare ciudat, aceast ˘a modalitate de reprezentare a unui interval este cea mai des
folosit ˘a. Av ˆandˆın vedere c ˘a intervalele cum ar fi [d04, d10] sunt valori ˆın sensul real, are
sens atunci s ˘a se combine atributele FROM s ¸i TO rezult ˆand SP FROM TOˆıntr-un singur
atribut ale c ˘arui valori sunt extrase din interval.
Un avantaj al acestei idei este faptul c ˘a se evit ˘a necesitatea de a face alegerea arbitrar ˘a,
iar una dintre cele dou ˘a chei candidate S#,FROM s ¸i S#,TO ar trebui s ˘a fie primar ˘a.
Un alt avantaj este acela de a decide dac ˘a intervalele FROM- TO sunt ˆınchise sau des-
chise. Cele patru cazuri de mai sus sunt, de fapt, nis ¸te reprezent ˘ari pentru acelas ¸i interval.
Pe lˆang˘a cele spuse anterior, putem afirma faptul c ˘a cele dou ˘a cuvinte cheie FROM s ¸i TO
pot, de asemenea, s ˘a lipseasc ˘a, s ¸i astfel putem reformula mult mai simplificat expresia.
Baza de date dup ˘a modific ˘arile suportate conform afirmat ¸iilor anteriore va ar ˘ata astfel:
S# SNAME STATUS CITY DURING
S1 Popescu 20 LONDRA [d04, d10]
S2 Ionescu 10 PARIS [d07, d10]
S2 Vaile 10 PARIS [d02, d04]
S3 Stancu 30 PARIS [d03, d10]
S4 Badea 20 LONDRA [d04, d10]
S5 Dragomir 30 ATENA [d02, d10]
Tabelul 1: S DURING

CAPITOLUL 2. INTERV ALE DE TIMP ALE BAZELOR TEMPORALE 17
S# P# DURING
S1 P1 [d04, d10]
S1 P2 [d05, d10]
S1 P3 [d09, d10]
S1 P4 [d05, d10]
S1 P5 [d04, d10]
S1 P6 [d06, d10]
S2 P1 [d02, d04]
S2 P2 [d03, d03]
S2 P1 [d08, d10]
S2 P2 [d09, d10]
S3 P2 [d08, d10]
S4 P2 [d06, d09]
S4 P4 [d04, d08]
S4 P5 [d05, d10]
Tabelul 2: SP DURING
2.2 TIPURI DE INTERV ALE
ˆIn sect ¸iunea anterioar ˘a am discutat foarte intuitiv s ¸i clar despre interval. ˆIn cele ce
urmeaz ˘a,ˆın cadrul sect ¸iunii curente, o s ˘a abord ˘am partea formal ˘a care implic ˘a aceste inter-
vale. Trebuie precizat faptul c ˘aˆın cadrul unui interval, de exemplu, [d04,d10] sunt caracte-
rizate nis ¸te zile. Aceste zile indic ˘a faptul c ˘a datele respective, ˆın interval sunt de tip DATE.
Pe lˆang˘a tipul DATE mai exist ˘a s ¸i tipul datetime, day, hour,month s ¸i millisecond.
Pentru ˆınceput trebuie s ˘a stabilim ce tip de date are intervalul ˆın component ¸ ˘a. Trebuie
s˘a fie identificate ˆın principal valorile care compun mult ¸imea intervalului. Aceste valori
trebuie evaluate s ¸i asimilate unui tip de dat ˘a. Acest lucru poate s ˘a rezulte, ˆın mare parte,
din identificarea operatoriilor aplicat ¸i valorilor. ˆIn al doilea r ˆand trebuie verificat ˘a corecti-
tudinea datelor care constituie intervalul. Dac ˘a valorile vor fi de exemplu, nis ¸te date de tip
DATE atunci, vom determina foarte simplu mult ¸imea valorilor DATE din interval.
Pentru a avea o flexibilitatea ˆın demonstrat ¸ia [d04,d10] , vom considera ca s ¸i convent ¸ie
INTERV AL ca fiind un tip generator (cum este ARRAY ˆın programare) care permite defi-
nirea numeroaselor tipuri de date s ¸i DATE tipul punctului din interval. (deci va ar ˘ata astfel

CAPITOLUL 2. INTERV ALE DE TIMP ALE BAZELOR TEMPORALE 18
INTERV AL(DATE)). Pentru convent ¸ia INTERV AL(PT) , PT reprezint ˘a atˆat tipul punctului
din cadrul intervalului c ˆat s ¸i precizia care implic ˘a punctul de ˆınceput s ¸i sf ˆars ¸it s ¸i valorile
din interval.(Dac ˘a PT ar fi considerat DATE atunci DATE este data implicit ˘a).
Cˆand vorbim de tip s ¸i precizie ne vom concentra atent ¸ia asupra urm ˘atorului exem-
plu pentru a clarifica diferenta: DECLARE X TIMESTAMP(3) si DECLARE Y TIMES-
TAMP(6)
ˆIn aceast ˘a situat ¸ie tipul X s ¸i Y este la fel, totul ce difer ˘a la aceste declarat ¸ii este precizia.
Precizia ˆın cazul de fat ¸ ˘a pentru X ne duce c ˘atre reprezentarea milisecundelor iar reprezen-
tarea Y ca format ˆın microsecunde.
ˆIn urm ˘atoarele fragmente o s ˘a discut ˘am despre propriet ˘at ¸ile care trebuie s ˘a le posede
un tip. Se s ¸tie deja, din sect ¸iuniile anterioare c ˘a un interval este format din dou ˘a puncte,
unul de ˆınceput, altul de sf ˆars ¸it. Aceste dou ˘a puncte ne ajut ˘a s˘a descoperim ce valori det ¸ine
intervalul.
Convent ¸ional vom nota s ca punct de ˆınceput s ¸i e ca punct final, s provenind de la start
ˆın englez ˘a iar e provenind de la end din englez ˘a. Trebuie s ˘a determin ˘am, folosindu-ne de
detaliile care le avem, urm ˘atorul successor al punctului de ˆınceput s ca il vom codifica ca
fiind s +1 s ¸i atfel poate fi atribuit ˘a ca o funct ¸ie succesor utiliz ˆand detaliile anterioare. Funct ¸ia
successor poate fi aplicat ˘a oric ˘arui punct din interval, cu except ¸ia ultimului. Urm ˘atorul
punct care trebuie s ˘a fie cont ¸inut ˆın interval, este s +2, iar la sf ˆars ¸it vom avea parte de s +n,
succesorul lui e.
Consider ˘am PT tipul punctului s ¸i i o valoare a intervalului PT. INTERV AL(PT) det ¸ine
o valoare numit ˘a s ¸i caracterizat ˘a ca fiind scalar ˘a. O alt ˘a remarc ˘a care se poate face asupra
intervalelor, este aceea ca sunt ˆıncapsulate.
2.3 OPERAT ¸ IUNI SCALARE PE INTERV ALE
ˆIn aceast ˘a sect ¸iune vom defini unii operatori scalari utili care se aplic ˘a la valorile unui
interval. Se consider ˘a intervalul de tipul INTERV AL(PT). Fie P o valoare de tip PT. V om
continua s ˘a folosim notat ¸ia p +1, p+2, s ¸i as ¸a mai departe, pentru a desemna succesorul
lui p, succesorul lui p +1, s ¸i as ¸a mai departe (operatorul NEXT).
ˆIn mod similar, vom folosi notat ¸ia p – 1, p – 2, s ¸i as ¸a mai departe, pentru a indica valoarea
a c˘arui succesor este p, valoarea a c ˘arui succesor este p-1, s ¸i as ¸a mai departe (operatorul
PRIOR).
Fiep1s ¸ip2valori ˆın PT. Dac ˘a definim MAX ( p1;p2) pentru a returna p2daca p1<p2

CAPITOLUL 2. INTERV ALE DE TIMP ALE BAZELOR TEMPORALE 19
este adev ˘arat s ¸i p1ˆın caz contrar, s ¸i MIN ( p1;p2) pentru a returna p1ˆın cazul ˆın care p1<p2
este adevarat s ¸i p2altfel.
Atunci i1s˘a fie intervalul [ s1;e1] de tip INTERV AL (PT), astfel ˆıncˆat START ( i1) retur-
neaz ˘as1s ¸i END ( i1) returneaz ˘ae1; vom defini ˆın plus STOP ( i1), care returneaz ˘ae1+1. De
asemenea, fie i2intervalul [ s2;e2], un interval de tip INTERV AL (PT).
2.3.1 OPERATORII ALLEN
Axiom ˘a 1:
Dac˘aI1Before I2s ¸iI2Before I3, atunci I1Before I3.
Dac˘aI1Contains I2s ¸iI2Contains I3, atunci I1Contains I3.
Dac˘aI1Equals I2s ¸iI2Equals I3, then I1Equals I3.
Tranzitivitatea nu este valabil ˘a pentru unele dintre celelalte relat ¸ii temporale, cum ar fi
relat ¸ia Meets.
Cu toate acestea, este posibil s ˘a definim alte reguli valide utiliz ˆand relat ¸iile Meets. De
exemplu, urm ˘atoarea este o alt ˘a regul ˘a valabil ˘a.
Axioma 2 : Daca I1Meets I2andI2Meets I3, atunci I1Before I3. Este un exercit ¸iu
interesant s ˘a gases ¸ti toate regulile valabile pentru intervalul de relat ¸ii al lui Allen.
Exemplu:
Relat ¸ia temporal ˘a a lui Allen:
IGuest During IDatabase
descrie c ˘a va exista un vorbitor invitat ˆın timpul clasei de sisteme de baze de date.
Exist ˘a mai multe sisteme de rat ¸ionament pentru intervale temporale s ¸i acestea servesc
drept baz ˘a pentru sistemele de baze de date temporale.
i1=i2este adev ˘arat dac ˘a s ¸i numai dac ˘as1=s2s ¸ie1=e2sunt ambele adev ˘arate;
i1ˆınainte de i2este adev ˘arat daca s ¸i numai dac ˘ae1<s2este adev ˘arat;
i1ˆıntrunes ¸te i2este adev ˘arat dac ˘a s ¸i numai dac ˘as2=e1+1 este adev ˘arat sau s1=e2+1
este adev ˘arat;
I1suprapune i2dac˘a s ¸i numai dac ˘as1e2s ¸is2e1sunt ambele adev ˘arate.

CAPITOLUL 2. INTERV ALE DE TIMP ALE BAZELOR TEMPORALE 20
2.4 OPERATORI DE AGREGARE PE INTERV ALE
ˆIn cadrul acestei sect ¸iuni, vom introduce doi operatori foarte important ¸i: UNFOLD s ¸i
COALESCE . Fiecare dintre aces ¸ti operatori preia o mult ¸ime de intervale, toate de acelas ¸i
tip cu un singur operand s ¸i care returneaz ˘a o altfel de mult ¸ime. Rezultatul, ˆın ambele cazuri,
poate fi privit ca fiind o form ˘a canonic ˘a pentru mult ¸imea original ˘a.
Discut ¸ia care urmeaz ˘a este menit ˘a s˘a demonstreze ce am afirmat prin observat ¸iile care
o s˘a fie f ˘acute ˆın cele ce urmeaz ˘a. Fie X1s ¸iX2cele dou ˘a mult ¸imi [d01,d01], [d03,d05],
[d04,d06] s ¸i [d01,d01], [d03,d04], [d05,d05], [d05,d06]. Se poate observa foarte simplu
c˘aX1nu este aceeas ¸i mult ¸ime ca s ¸i X2. Este aproape la fel de us ¸or de v ˘azut c ˘a mult ¸imea
tuturor punctelor p, p care este ˆın acelas ¸i interval ca s ¸i X1, are acelas ¸i puncte ca s ¸i mult ¸imea
punctelor p, p care este ˆın acelas ¸i interval ca s ¸i X2(punctele sunt d01,d03,d04,d05 si d06).
Din motive, care vor deveni foarte clare ˆın cele ce urmeaz ˘a, nu vom acorda foarte
mult ˘a important ¸ ˘a mult ¸imiilor de puncte amintite anterior, ci mai degrab ˘aˆın mult ¸imea cores-
punz ˘atoare de intervale unitare (s ˘a numim X3): [d01,d01], [d03,d03], [d04,d04], [d05,d05],
[d06,d06], unde X3este declarat ˘a ca fiind forma desf ˘as ¸urat ˘a (unfolded) a mult ¸imiilor X1s ¸i
X2.ˆIn general, dac ˘a X este o mult ¸ime de intervale de acelas ¸i tip atunci forma desf ˘as ¸urat ˘a a
lui X este mult ¸imea tuturor intervalelor de forma [p,p] unde p este un punct ˆıntr-un anumit
interval X.
Trebuie remarcat faptul c ˘aˆın exemplul anterior X1,X2s ¸iX3difer ˘aˆın ceea ce prives ¸te
cardinalitatea. Se ˆıntˆampl ˘a ca X3(form ˘a desf ˘as ¸urat ˘a), are cea mai mare cardinalitate, dar
este us ¸or de g ˘asit o mult ¸ime X4care are aceias ¸i form ˘a desf ˘as ¸urat ˘a ca s ¸i X1s ¸i care s ˘a aib ˘a o
cardinalitate mai bun ˘a caX3.
De asemenea, este us ¸or de g ˘asit o mult ¸ime mult mai util ˘a,X5care are aceias ¸i form ˘a
desf˘as ¸urat ˘a s ¸i o cardinalitatea minim ˘a: [d01,d01], [d03,d06], iar X5este declarat ˘a a fi forma
fuzionat ˘a(coalesced) a lui X1 (s ¸i de asemenea X2,X3s ¸iX4).
ˆIn general, ˆın cazul ˆın care X este o mult ¸ime de intervale, toate de acelas ¸i tip, atunci
forma fuzionat ˘a a lui X este o mult ¸ime Y de intervale astfel ˆıncˆat X s ¸i Y au aceias ¸i form ˘a
desf˘as ¸urat ˘a s ¸i doi membri distinct ¸i i1s ¸ii2din Y sunt de as ¸a natur ˘aˆıncˆati1fuzionat cu i2
este adev ˘arat˘a. Ret ¸inem faptul c ˘a (as ¸a cum am v ˘azut deja) multe mult ¸imi distincte pot avea
aceias ¸i form ˘a fuzionat ˘a. Ret ¸inem de asemenea c ˘a definit ¸ia formei fuzionate ˆın general se
bazeaz ˘a pe definit ¸ia funct ¸iei successor pentru tipul punctului de baz ˘a.
Putem define acum operatorii monadici UNFOLD s ¸i COALESCE. Fie X o mult ¸ime de
interval de tip INTERV AL(PT). Atunci UNFOLD(X) returneaz ˘a forma desf ˘as ¸urat ˘a a lui X,

CAPITOLUL 2. INTERV ALE DE TIMP ALE BAZELOR TEMPORALE 21
ˆın timp ce COALESCE(X) returneaz ˘a forma fuzionat ˘a a lui X.
2.5 OPERATORI RELAT ¸ IONALI CARE IMPLIC ˘A IN-
TERV ALE
Operatorii scalari pe interval descris ¸i ˆın sect ¸iunea 2.3 sunt, desigur, disponibili pentru a
fi utilizat ¸i ˆın expresiile scalare ˆın cazurile obis ¸nuite ca s ¸i ˆın expresiile relat ¸ionale. Criteriile
care sunt obis ¸nuite la expresiile relat ¸ionale s ¸i scalare sunt reprezentate prin clauzele WHE-
RE de restrict ¸ionare s ¸i clauzele ADD privind EXTEND s ¸i SUMMARIZE. Folosind baza
de date a tabelului 2.1, prin urmare, interogarea de preluare a num ˘arului de furnizori care
sunt disponibili pentru a furniza piesa P2 ˆın ziua a 8-a trebuie exprimat ˘aˆın felul urm ˘ator:
(SP_DURING WHERE P# = P# (P2) AND d08 IN DURING) {S#}
Explicat ¸ie : Consider ˘am restrict ¸ia SP DURING, ca fiind constituit ˘a din tupluri ale ca-
ror valori P# sunt parte a numaruluiP2 s ¸i ale c ˘aror valori cont ¸in punctul d08. Cu ajutorul
afirmat ¸iilor f ˘acute se va proiecta acel rezultat cu atributul num ˘arului furnizorului S#.
Not˘a:ˆIn practic ˘a, expresia d08 aici, ar trebui s ˘a fie ˆınlocuit ˘a cu un literal de tip DAY .
Cu un alt exemplu, urm ˘atoarea expresie ne duce cu g ˆandul la o relat ¸ie care arat ˘a pe-
rechile de furnizori care s-au situat ˆın acelas ¸i oras ¸, ˆın acelas ¸i timp, ˆımpreun ˘a cu oras ¸ele s ¸i
orele ˆın cauz ˘a.
EXTEND
((((S_DURING RENAME S# AS XS#, DURING AS XD)
{XS#, CITY, XD}
JOIN
(S_DURING RENAME S# AS YS#, DURING AS YD)
{YS#, CITY, YD})
WHERE XD OVERLAPS YD)
ADD (XD INTERSECT YD) AS DURING) {XS#, YS#, CITY,DURING}

CAPITOLUL 2. INTERV ALE DE TIMP ALE BAZELOR TEMPORALE 22
Explicat ¸ie : JOIN g ˘ases ¸te perechile de furnizori localizat ¸i ˆın acelas ¸i oras ¸. Clauza WHE-
RE limiteaz ˘a acest rezultat pentru perechile care au fost ˆın acelas ¸i oras ¸, ˆın acelas ¸i timp.
EXTEND.ADD calculeaz ˘a intervalele relevante. Proiect ¸ia final ˘a ne comunic ˘a rezultatul
dorit. Ne ˆıntoarcem acum la interog ˘arile anterioare din sect ¸iunea 2.1. Interogarea preia pe-
rechile s# pentru furnizorii care ˆın cursul unei perioade ne ˆıntrerupte maxime sunt ˆın m˘asur˘a
s˘a furnizeze o pies ˘a.
Interogarea prezentat ˘a anterior a necesitat utilizarea de grupare s ¸i agregare(mai precis,
a implicat o operat ¸iune SUMMARIZE). Probabil nu v-ar surprinde faptul c ˘aˆın aceast ˘a
interogare, de asemenea, este necesar ˘a folosirea anumitor operat ¸ii de grupare s ¸i agregare.
Cu toate acestea, vom aborda problema formularii acestei interogari pe pas ¸i.
Primul pas este:
WITH SP DURINGfS#, DURINGgAS T1 :
Rezultatul generat ˆın cadrul acestui pas arat ˘a astfel:
S# DURING
S1 [d04, d10]
S1 [d05, d10]
S1 [d09, d10]
S1 [d06, d10]
S2 [d02, d04]
S2 [d03, d03]
S2 [d08, d10]
S2 [d09, d10]
S3 [d08, d10]
S4 [d06, d10]
S4 [d04, d08]
S4 [d05, d10]
Ret ¸inem faptul c ˘a aceast ˘a relat ¸ie cont ¸ine informat ¸ii redundante care se exemplific ˘a ast-
fel: ni se spune c ˘a furnizorul S1 a fost ˆın m˘asur˘a s˘a furnizeze ceva ˆın mai put ¸in de 3 zile. Re-
zultatul dorit, elimin ˆand toate aceste redundante, este ˆın mod clar dup ˘a cum urmeaz ˘a(putem
s˘aˆıl denumim RESULT):

CAPITOLUL 2. INTERV ALE DE TIMP ALE BAZELOR TEMPORALE 23
S# DURING
S1 [d04, d10]
S2 [d02, d04]
S2 [d08, d10]
S3 [d08, d10]
S4 [d04, d10]
Consider ˘am rezultatul obt ¸inut ca fiind forma fuzionat ˘a a lui T1 pe timpul transportului.
Ret ¸inem c ˘a timpul acordat pentru un anumit furnizor, ˆın cadrul acestei forme fuzionate nu
exist ˘a explicit ˆın relat ¸ia T1 din care este derivat ˘a forma fuzionat ˘a (se poate lua ca exemplu
furnizorul S4).
Acum, vom ajunge ˆın cele din urm ˘a la un punct ˆın care putem obt ¸ine forma fuzionat ˘a
prin intermediul unei expresii simple a formei:
T1 COALESCE DURING
Totus ¸i, trebuie precizat faptul c ˘a pe lang ˘a cele spuse anterior avem nevoie s ˘a ajungem
la rezultatul dorit cu pas ¸i mici prin construct ¸ie granular ˘a.
Se poate observa foarte clar c ˘a termenul evident ¸iat prin form ˘a fuzionat ˘a folosit ˆın cele
dou˘a paragrafe este folosit cu un alt sens dec ˆat cel folosit ˆın cadrul sect ¸iunii 2.4
Operatorul de fuzionare, descris s ¸i definit ˆın cadrul sect ¸iunii anterioare a preluat o
mult ¸ime de intervale la intrare ca input s ¸i produce o mult ¸ime de intervale ca output. Aici,
cu toate acestea, este vorba despre o alt ˘a versiune, care de fapt, indic ˘a supra ˆınc˘arcarea ope-
ratorului care preia o relat ¸ie cu un singur element ca input s ¸i produce o alt ˘a relat ¸ie tot cu
un singur element ca output, s ¸i sunt acele tupluri care ˆın cadrul relat ¸iilor cont ¸ine intervale
reale.
Aces ¸tia sunt pas ¸i parcurs ¸i care ne conduc spre rezultatul din T1:
WITH ( T1 GROUP ( DURING ) AS X ) AS T2 :
Operatorul GROUP este folosit aici pentru a organiza valorile timpului ˆın ceea ce
prives ¸te S# astfel ˆıncˆat fiecare num ˘ar de furnizor este asociat cu o mult ¸ime de intervale
ˆın loc de un singur interval.

CAPITOLUL 2. INTERV ALE DE TIMP ALE BAZELOR TEMPORALE 24
T2 arat ˘a astfel:
S1DURING
[d04;d010]
[d05;d10]
[d09;d10]
[d06;d10]
S2DURING
[d02;d04]
[d03;d03]
[d08;d10]
[d09;d10]
S3DURING
[d08;d10]
S4DURING
[d06;d10]
[d04;d08]
[d05;d10]
Acum vom aplica o nou ˘a versiune de fuziune asupra relat ¸iilor care au ca atribut ˆın ca-
drul relat ¸iei atributul X de prim rang:
WITH (EXTEND T2 ADD COALESCE (X) AS Y) fALL BUT X gAS T3 :
T3 arat ˘a astfel:
S1DURING
[d04;d010]
S2DURING
[d02;d04]
[d08;d10]
S3DURING
[d08;d10]
S4DURING
[d04;d10]

CAPITOLUL 2. INTERV ALE DE TIMP ALE BAZELOR TEMPORALE 25
ˆIn cele din urm ˘a, o s ˘a folosim UNGROUP:
T3 UNGROUP Y
Aceast ˘a expresie ne conduce c ˘atre rezultatul care ˆıl aminteam anterior, s ¸i anume RE-
SULT. Cu alte cuvinte, av ˆand o privire ampl ˘a asupra tuturor pas ¸ilor parcurs ¸i, putem afirma
faptul c ˘a RESULT este rezultatul evalu ˘arii urm ˘atoarei expresii generale:
WITH SP DURINGfS#, DURINGgAS T1,
(T1 GROUP (DURING) AS X) AS T2,
(EXTEND T2 ADD COALESCE (X) AS Y) fALL BUT XgAS T3 :
T3 UNGROUP Y
Evident c ˘a ar fi de dorit s ˘a se poat ˘a obt ¸ine, de la T1, ˆıntr-o singur ˘a operat ¸ie rezultatul
RESULT. ˆIn cele din urm ˘a, se va crea o nou ˘a relat ¸ie cu operatorul de fuzionare, cu sintaxa
cum urmeaz ˘a:
R COALESCE A : unde R este o expresie relat ¸ional ˘a s ¸i A este un atribut f ˘acˆand parte
din acelas ¸i interval al relat ¸iei rezultate din expresie. Semantica acestui operator este definit ˘a
prin generalizarea grup ˘arii, extinderii, proiect ¸iei s ¸i prin degruparea operat ¸iunilor prin care
se obt ¸ine RESULT din T1.
Not˘a: Trebuie s ˘a remarc ˘am faptul c ˘a fuzionarea R pe A implic ˘a gruparea R de c ˘atre
toate atributele lui R, altele dec ˆat A ( ˆın mod similar, expresia T1 GROUP (DURING) , de
exemplu poate fi citit ˘a ca un grup T1 de S#, S# care este singurul atribut al lui T1 care nu
este ment ¸ionat ˆın clauza GROUP).
Prin punerea tuturor celor enunt ¸ate mai sus, la un loc, putem oferi acum urm ˘atoarea
formulare care implic ˘a interogarea anterioar ˘a:
SPDURING fS#, DURING gCOALESCE DURING
Not˘a: Operat ¸ia general ˘a notat ˘a prin aceast ˘a expresie este un exemplu de ceea ce unii nu-
mesc proiect ¸ie temporal ˘a. Pentru a fi mai explicit ˘a este o proiect ¸ie temporal ˘a a SP DURING
asupra S# s ¸i DURING. Se observ ˘a c˘a proiect ¸ia temporal ˘a nu este exact o proiect ¸ie ca atare,
ci este, mai degrab ˘a, un analog temporal a proiect ¸iei.
Revenind la forma init ¸ial ˘a care presupunea implicarea unei operat ¸ii de relat ¸ie de diferent ¸ ˘a,
putem concluziona ca o proiect ¸ie temporal ˘a necesit ˘a o relat ¸ie de fuziune ˆın timp de diferent ¸ ˘a

CAPITOLUL 2. INTERV ALE DE TIMP ALE BAZELOR TEMPORALE 26
temporal ˘a implic ˘a o relat ¸ie desf ˘as ¸urat ˘a.
Diferent ¸a temporal ˘a implic ˘a doi operanzi de relat ¸ie. Ne concentr ˘am pe cel din st ˆanga
init ¸ial. Dac ˘a vom desf ˘as ¸ura rezultatul proiect ¸iei S DURINGfS#, DURINGgasupra DU-
RING, atunci vom obt ¸ine o relat ¸ie pe care o denumim T1 care arat ˘a de genul:
S# DURING
S1 [d04, d04]
S1 [d05, d05]
S1 [d06, d06]
S1 [d07, d07]
S1 [d08, d08]
S1 [d09, d09]
S1 [d10, d10]
S2 [d07, d07]
S2 [d08, d08]
S2 [d09, d09]
S2 [d10, d10]
S2 [d02, d02]
S2 [d03, d03]
S2 [d04, d04]
S3 [d03, d03]
… ……………
Avˆandˆın vedere datele vizualizate ˆın tabelul:
S# SNAME STATUS CITY DURING
S1 Popescu 20 LONDRA [d04, d10]
S2 Ionescu 10 PARIS [d07, d10]
S2 Vaile 10 PARIS [d02, d04]
S3 Stancu 30 PARIS [d03, d10]
S4 Badea 20 LONDRA [d04, d10]
S5 Dragomir 30 ATENA [d02, d10]
Tabelul: S DURING

CAPITOLUL 2. INTERV ALE DE TIMP ALE BAZELOR TEMPORALE 27
S# P# DURING
S1 P1 [d04, d10]
S1 P2 [d05, d10]
S1 P3 [d09, d10]
S1 P4 [d05, d10]
S1 P5 [d04, d10]
S1 P6 [d06, d10]
S2 P1 [d02, d04]
S2 P2 [d03, d03]
S2 P1 [d08, d10]
S2 P2 [d09, d10]
S3 P2 [d08, d10]
S4 P2 [d06, d09]
S4 P4 [d04, d08]
S4 P5 [d05, d10]
Tabelul: SP DURING
T1 cont ¸ine, de fapt, un total de 23 de tupluri.
Dac˘a definim o versiune a relat ¸iei cu un singur element de desf ˘as ¸urare (analog cu ver-
siunea relat ¸iei de fuziune cu un singur element), putem obt ¸ine T1 astfel:
( EXTEND ( S_DURING { S#, DURING } GROUP ( DURING ) AS X )
ADD UNFOLD ( X ) AS Y ) { ALL BUT X }UNGROUP Y
Dup˘a cum am sugerat deja, putem simplifica lucrurile prin descoperirea unui operator
de relat ¸ie de desf ˘as ¸urare cu sintaxa cum urmeaz ˘a:
R UNFOLD A
Acum, putem scrie astfel:
WITH ( S DURINGfS#, DURINGgUNFOLD DURING ) AS T1 :
Trat˘am s ¸i membrul drept al diferent ¸ei temporale, cum a fost abordat s ¸i membrul st ˆang,
s ¸i anume:
WITH ( SP DURINGfS#, DURINGgUNFOLD DURING ) AS T2 :
Prin aplicarea relat ¸iei de diferent ¸ ˘a regulate, obt ¸inem:

CAPITOLUL 2. INTERV ALE DE TIMP ALE BAZELOR TEMPORALE 28
WITH ( T1 MINUS T2 ) AS T3 ,
unde T3 arat ˘a astfel:
S# DURING
S2 [d07, d07]
S3 [d03, d03]
S3 [d04, d04]
S3 [d05, d05]
S3 [d06, d06]
S3 [d07, d07]
S5 [d02, d02]
S5 [d03, d03]
S5 [d04, d04]
S5 [d05, d05]
S5 [d06, d06]
S5 [d07, d07]
S5 [d08, d08]
S5 [d09, d09]
S5 [d10, d10]
ˆIn final, vom fuziona T3 cu DURING pentru a obt ¸ine rezultatul dorit:
T3 COALESCE DURING
Rezultatul arat ˘a astfel:
S# DURING
S2 [d07, d07]
S3 [d03, d07]
S5 [d02, d10]
O formulare a interog ˘arii ca o singur ˘a expresie nested arat ˘a astfel:
((S_DURING {S#, DURING} UNFOLD DURING)
MINUS
(SP_DURING UNFOLD DURING))
COALESCE DURING
Dup˘a cum deja am ar ˘atat, operat ¸ia principal ˘a care reiese din aceast ˘a expresie este un
exemplu catalogat ca fiind diferent ¸ ˘a temporal ˘a. Mai precis, este o diferent ¸ ˘a temporal ˘a dintre

CAPITOLUL 2. INTERV ALE DE TIMP ALE BAZELOR TEMPORALE 29
proiect ¸iile S DURING s ¸i SP DURING asupra S# s ¸i DURING. Ret ¸inem faptul c ˘a, la fel ca
s ¸i proiect ¸ia temporal ˘a, diferent ¸a temporal ˘a nu este exact o diferent ¸ ˘a ca atare, ci este mai
degrab ˘a o analogie temporal ˘a a diferent ¸ei obis ¸nuite.
Expresia diferent ¸ei temporale, ca cea prezentat ˘a anterior ˆın exemplu, este des utilizat ˘a
ˆın practic ˘a. Pentru a fi mai succint ˘a, se pare c ˘a elementele evident ¸iate merit ˘a captarea ca
o singur ˘a operat ¸ie de secvent ¸ ˘a a c ˘arui desf ˘as ¸urare implic ˘a ambii operanzi, cu b care preia
diferent ¸a, s ¸i c fuzionea as ¸a cum este relatat ˆın urm ˘atorul caz:
R1 I MINUS R2 ON A
R1 si R2 sunt dou ˘a expresii relat ¸ionale ce denot ˘a din relat ¸iile r1 s ¸i r2 de acelas ¸i tip iar
A este un atribut de acelas ¸i tip de interval, comun celor dou ˘a relat ¸ii (prefixul I reprezint ˘a
intervalul). O prescurtare a proiect ¸iei temporale, care nu am mai abordat-o anterior, este
definit ˘a ca fiind echivalent ˘a semantic cu:
((R1 UNFOLD A ) MINUS ( R2 UNFOLD A ) ) COALESCE
Exist ˘a un punct foarte important de performant ¸ ˘a care trebuie realizat ˆın conexiune cu
operatorii, cum ar fi I MINUS. Trebuie precizat faptul c ˘a exist ˘a mult mai multe metode
eficiente dec ˆat cele disponibile. Lu ˆandˆın considerare metoda de desf ˘as ¸urare a ambilor
operanzi s ¸i aplic ˆand diferent ¸a apoi fuziunea vom ajunge la concluzia c ˘a se va consuma
destul loc s ¸i timp, s ¸i, analiz ˆand situat ¸ia de fat ¸ ˘a, putem afirma faptul c ˘a exist ˘a multe alte
metode mai bune.
Consider ˘am urm ˘atoarea expresia cu un grad mai mare de complexitate:
(((R1 UNFOLD A ) WHERE C ) MINUS ( R2 UNFOLD A )) COALESCE A
, unde C este o condit ¸ie arbitrar ˘a.ˆIn cazul ˆın care se poate demonstra c ˘a acest lucru este
logic echivalent cu:
( R1 WHERE C ) I MINUS R2 ON
atunci optimizatorul ar putea realiza ce ne-am propus profit ˆand de avantaje.

Capitolul 3
APLICAT ¸ IE
3.1 ORACLE
3.1.1 ARHITECTURA ORACLE
O baz ˘a de date Oracle este o colect ¸ie de date tratate ca o unitate. Scopul unei baze de
date este de a stoca s ¸i de a prelua informat ¸ii conexe. Un server de baze de date este cheia
pentru rezolvarea problemelor de gestionare a informat ¸iilor. ˆIn general, un server gestio-
neaz ˘aˆın mod fiabil o cantitate mare de date ˆıntr-un mediu cu mai mult ¸i utilizatori, astfel
ˆıncˆat mult ¸i utilizatori s ˘a poat ˘a accesa simultan aceleas ¸i date. Toate acestea sunt realizate ˆın
timp ce ofer ˘a performant ¸e ridicate. Un server de baze de date previne, de asemenea, accesul
neautorizat s ¸i ofer ˘a solut ¸ii eficiente pentru recuperarea defect ¸iunilor.
Oracle Database este prima baz ˘a de date conceput ˘a pentru grid computing enterprise,
cea mai flexibil ˘a s ¸i mai eficient ˘a modalitate de gestionare a informat ¸iilor s ¸i aplicat ¸iilor.
Enterprise grid computing creeaz ˘a baze de stocare mari s ¸i servere modulare s ¸i standard. Cu
aceast ˘a arhitectur ˘a, fiecare sistem nou poate fi rapid rezervat din mult ¸imea de componente.
Nu este nevoie de sarcini, deoarece capacitatea poate fi us ¸or ad ˘augat ˘a sau realocat ˘a din
fondurile de resurse, dup ˘a cum este necesar.
Baza de date are structuri logice s ¸i structuri fizice. Deoarece structurile fizice s ¸i logice
sunt separate, stocarea fizic ˘a a datelor poate fi gestionat ˘a f˘ar˘a a afecta accesul la structurile
logice de stocare.
Grid computing este o nou ˘a arhitectur ˘a IT care produce sisteme de informare a firmelor
mai rezistente s ¸i cu costuri reduse. Cu grid computing, pot fi conectate grupuri de compo-
nente hardware s ¸i software independente, modulare s ¸i reunite la cerere pentru a r ˘aspunde
nevoilor.
30

CAPITOLUL 3. APLICAT ¸ IE 31
Stilul grid de calcul are drept scop rezolvarea unor probleme obis ¸nuite ˆın domeniul IT:
problemele de aplicare care conduc la utilizarea unor resurse hardware dedicate, problema
sistemelor monolitice, greu de suportat s ¸i greu de schimbat, s ¸i problema informat ¸iilor frag-
mentate s ¸i dezintegrate care nu pot fi pe deplin exploatate ˆın ansamblu.
Beneficiile computeriz ˘arii ret ¸elei
ˆIn comparat ¸ie cu alte modele de calcul, sistemele informatice proiectate s ¸i implementate
ˆın stilul ret ¸elei ofer ˘a o calitate superioar ˘a a serviciilor, un cost mai mic s ¸i o flexibilitate mai
mare. Calitatea superioar ˘a a serviciilor rezult ˘a din absent ¸a unui singur punct de es ¸ec, a unei
infrastructuri de securitate robuste s ¸i a unui management centralizat, bazat pe politici.
Costurile mai mici decurg din cres ¸terea utiliz ˘arii resurselor s ¸i reducerea drastic ˘a a cos-
turilor de gestionare s ¸i ˆıntret ¸inere. Mai degrab ˘a dec ˆat s˘a se dedice o mult ¸ime de software s ¸i
hardware pentru o anumit ˘a sarcin ˘a, toate resursele trebuie grupate s ¸i alocate la cerere, eli-
minˆand astfel capacitatea utilizat ˘a s ¸i capacit ˘at ¸ile redundante. Grid computing permite, de
asemenea, utilizarea componentelor hardware individuale mai mici, reduc ˆand astfel costul
fiec˘arei componente individuale s ¸i oferind mai mult ˘a flexibilitate pentru a aloca resurse ˆın
funct ¸ie de necesit ˘at ¸i.
Resurse Grid Computing
Stilul de grid computing al computerelor trateaz ˘a colect ¸ii de resurse IT similare, ex-
ploat ˆandˆın acelas ¸i timp natura distinct ˘a a resurselor individuale. Pentru a aborda simultan
problemele sistemelor monolitice s ¸i ale resurselor fragmentate, grid computing realizeaz ˘a
un echilibru ˆıntre beneficiile managementului global al resurselor s ¸i controlul flexibil al
resurselor independente.
Resursele IT gestionate ˆıntr-o ret ¸ea includ:
Infrastructura: hardware-ul s ¸i software-ul care creeaz ˘a un mediu de stocare a datelor
s ¸i de execut ¸ie a programului;
Aplicat ¸ii: logica programului s ¸i fluxul care definesc procesele;
Informat ¸ii: semnificat ¸ia inerent ˘a a diferitelor tipuri de date.

CAPITOLUL 3. APLICAT ¸ IE 32
Principii fundamentale ale computerelor de grid
Dou˘a principii de baz ˘a disting unic calculul grid de alte stiluri de calcul, cum ar fi
mainframe, client-server sau multi-tier sunt: virtualizarea s ¸i provizionarea.
Cu ajutorul virtualiz ˘arii, resursele individuale sunt grupate ˆımpreun ˘a pe tipuri, apoi
puse la dispozit ¸ia consumatorilor printr-o abstractizare. Virtualizarea ˆınseamn ˘a ruperea
leg˘aturilor greu codate ˆıntre furnizori s ¸i consumatori de resurse s ¸i preg ˘atirea unei resur-
se care s ˘a serveasc ˘a o nevoie special ˘a, f˘ar˘a ca consumatorul s ˘a seˆıngrijeasc ˘a de modul ˆın
care se realizeaz ˘a acest lucru.
Cu provizionare, atunci c ˆand consumatorii solicit ˘a resurse printr-un strat de virtuali-
zare, ˆın spatele scenei, o resurs ˘a specific ˘a este identificat ˘a pentru a ˆındeplini cererea s ¸i
apoi este alocat ˘a consumatorului. Prestarea ˆın cadrul grid computing ˆınseamn ˘a c˘a sistemul
determin ˘a cum s ˘a satisfac ˘a nevoia specific ˘a a consumatorului, optimiz ˆandˆın acelas ¸i timp
funct ¸ionarea sistemului ˆın ansamblu.
Infrastructura Grid Computing
Resursele ret ¸elei de infrastructur ˘a includ resurse hardware precum stocarea, procesoa-
rele, memoria s ¸i ret ¸elele, precum s ¸i software-ul conceput pentru a gestiona acest hardware,
cum ar fi bazele de date, gestionarea stoc ˘arii, gestionarea sistemelor, serverele de aplicat ¸ii
s ¸i sistemele de operare.
Virtualizarea s ¸i furnizarea de resurse de infrastructur ˘aˆınseamn ˘a punerea ˆımpreun ˘a a
resurselor s ¸i alocarea c ˘atre consumatorii adecvat ¸i pe baza politicilor. De exemplu, o politic ˘a
ar putea fi aceea de a dedica suficient ˘a putere de procesare unui server web care s ˘a poat ˘a
furniza ˆıntotdeauna timp de r ˘aspuns secundar. Aceast ˘a regul ˘a ar putea fi ˆındeplinit ˘aˆın mod
diferit de software-ul de furnizare pentru a echilibra cererile tuturor consumatorilor.
R˘aspˆandirea capacit ˘at ¸ii de calcul ˆıntre mai multe computere diferite s ¸i splitarea capa-
cit˘at ¸ii de stocare pe mai multe discuri s ¸i grupuri de disc elimin ˘a punctele de es ¸ec indivi-
duale, astfel ˆıncˆat, dac ˘a o component ˘a individual ˘a es ¸ueaz ˘a, sistemul ˆın ansamblu r ˘amˆane
disponibil.
Infrastructura este dimensiunea computerelor care este cea mai familiar ˘a s ¸i mai us ¸or de
ˆınt ¸eles, dar aceleas ¸i concepte se aplic ˘a aplicat ¸iilor s ¸i informat ¸iilor.
Modurile specifice ˆın care resursele de informat ¸ie, aplicat ¸ie sau infrastructur ˘a sunt vir-
tualizate s ¸i furnizate sunt specifice tipului de resurs ˘a, dar conceptele se aplic ˘a universal.
ˆIn mod similar, beneficiile specifice derivate din grid computing sunt specifice fiec ˘arui tip

CAPITOLUL 3. APLICAT ¸ IE 33
de resurs ˘a, dar toate au caracteristici de calitate mai bun ˘a, costuri mai mici s ¸i flexibilitate
sporit ˘a.
3.1.2 ARHITECTURA APLICAT ¸ IILOR
Multiprocesarea utilizeaz ˘a mai mult de un procesor pentru un set de sarcini conexe.
Procesarea distribuit ˘a reduce sarcina pe un singur procesor, permit ¸ ˆand diferitelor proce-
soare s ˘a se concentreze pe un subset de sarcini conexe, ˆımbun ˘at˘at ¸ind astfel performant ¸a s ¸i
capacit ˘at ¸ile sistemului ˆın ansamblu.
Un sistem de baze de date Oracle poate profita cu us ¸urint ¸ ˘a de procesarea distribuit ˘a
prin utilizarea arhitecturii client-server. ˆIn aceast ˘a arhitectur ˘a, sistemul de baze de date este
ˆımp˘art ¸itˆın dou ˘a p˘art ¸i: front-end sau un client, back-end sau un server.
CLIENTUL
Clientul este o aplicat ¸ie de baze de date care init ¸iaz ˘a o cerere pentru o operat ¸ie care
trebuie efectuat ˘a pe serverul de baze de date. Acesta solicit ˘a, proceseaz ˘a s ¸i prezint ˘a datele
gestionate de server. Stat ¸ia de lucru client poate fi optimizat ˘a pentru activitatea sa.
De exemplu, este posibil s ˘a nu aib ˘a nevoie de o capacitate mare a discului sau ar putea
beneficia de capabilit ˘at ¸i grafice. Adesea, clientul ruleaz ˘a pe un alt computer dec ˆat serverul
bazei de date, ˆın general pe un PC.
SERVER-UL
Serverul ruleaz ˘a software-ul Oracle s ¸i gestioneaz ˘a funct ¸iile necesare pentru accesul la
date partajate. Serverul primes ¸te s ¸i proceseaz ˘a instruct ¸iunile SQL s ¸i PL /SQL care pro-
vin de la aplicat ¸iile client. Computerul care gestioneaz ˘a serverul poate fi optimizat pentru
sarcinile sale. De exemplu, poate avea o capacitate mare de disc s ¸i procesoare rapide.
O arhitectur ˘a multitier are urm ˘atoarele componente:
Un proces client sau init ¸iator care ˆıncepe operat ¸ia corespunz ˘atoare;
Unul sau mai multe servere de aplicat ¸ii care efectueaz ˘a p˘art ¸i ale operat ¸iei. Un server
de aplicat ¸ii ofer ˘a acces la datele pentru client s ¸i efectueaz ˘a o parte din prelucrarea
interog ˘arii, elimin ˆand astfel o parte din sarcin ˘a de la serverul de baz ˘a de date. Acesta

CAPITOLUL 3. APLICAT ¸ IE 34
poate servi ca o interfat ¸ ˘aˆıntre client ¸i s ¸i servere multiple de baze de date, inclusiv prin
furnizarea unui nivel suplimentar de securitate;
Un server de terminare sau baz ˘a de date care stocheaz ˘a majoritatea datelor utilizate
ˆın operat ¸ie.
Arhitectura are la baz ˘a principiul c ˘a indic ˘a faptul c ˘a accesul la date trebuie separat ˆın
mai multe nivele, de obicei trei. Pentru a ˆınt ¸elege de ce accesul la baze de date pe mai multe
nivele este solut ¸ia preferat ˘a pentru majoritatea scenariilor, trebuie s ˘a fie amintite not ¸iunile
care au fost aplicate ˆınainte de accesul la date.
Termenul de aplicat ¸ie de date desktop, face referire ˆın mare parte, cel mai frecvent,
la aplicat ¸iile unui singur utilizator care interact ¸ioneaz ˘a direct cu o baz ˘a de date local ˘a.
Elementul comun al aplicat ¸iilor Desktop s ¸i Client Server a fost c ˘a cea mai mare parte, dac ˘a
nu toate, aplicat ¸iile aveau o logic ˘a business greu de implementat. Baza de date ˆıs ¸i prelua
rolul tradit ¸ional de stocare a datelor.
ˆIn timp ce ˆın teorie arhitectura multi-tier poate consta dintr-un num ˘ar variabil de nive-
luri, cel mai frecvent utilizat scenariu este o solut ¸ie pe trei niveluri, care p ˘astreaz ˘a aproxi-
mativ conceptul de client s ¸i server.
Izolarea clientului de accesul la baza de date ˆınseamn ˘a c˘a aplicat ¸iile client comunic ˘a
direct cu serverul de baze de date s ¸i nu acceseaz ˘a direct tabelele sau datele brute definite ˆın
baza de date sau ˆın bazele de date. Orice acces la date – at ˆat pentru citire, c ˆat s ¸i pentru ma-
nipulare – trece prin serverul de nivel mediu, care det ¸ine controlul deplin asupra accesului
la date.
Punerea ˆın aplicare a logicii business pe nivelul intermediar ˆınseamn ˘a c˘a exist ˘a un loc
central ˆın care aceste reguli sunt puse ˆın aplicare s ¸i pentru c ˘a tot accesul la date trebuie
s˘a treac ˘a prin nivelul intermediar nu exist ˘a nicio modalitate pentru ca aplicat ¸iile client s ˘a
ignore aceste reguli.
Serverul de nivel mediu va fi, de obicei, implementat ˆıntr-o locat ¸ie sigur ˘a, de exemplu,
ca parte a formei de servere care g ˘azduies ¸te s ¸i bazele de date s ¸i expune o interfat ¸ ˘a foarte
limitat ˘a la ret ¸ea care nu ofer ˘a nimic mai mult dec ˆat ceea ce este de nevoie pentru client ¸i.
Se va utiliza un protocol de internet standardizat, cum ar fi HTTP sau Web Services, pentru
a v˘a asigura c ˘a acest acces funct ¸ioneaz ˘a f˘ar˘a probleme ˆınˆıntreaga ret ¸ea global ˘a, dac ˘a este
necesar.
ˆIn comparat ¸ie cu modelul Client Server, aplicat ¸ia client este ˆımp˘art ¸it˘aˆıntr-un thin client
care ofer ˘a tot ceea ce este necesar pentru a furniza o interfat ¸ ˘a utilizator bogat ˘a utilizatorului
final.

CAPITOLUL 3. APLICAT ¸ IE 35
3.1.3 ELEMENTE DEFINITORII FOLOSITE
Componenta software Oracle Database Express Edition este responsabil ˘a pentru cre-
area sau ment ¸inerea componentelor bazei de date a unei aplicat ¸ii care utilizeaz ˘a tehnologia
Oracle.
Dezvoltatorii Oracle Database Express Edition fie dezvolt ˘a aplicat ¸ii, fie convertesc
aplicat ¸ii existente pentru a rula ˆın mediul Oracle Database Express Edition.
Oracle Database Express Edition grupeaz ˘a informat ¸ii legate de structuri logice numite
scheme. Structurile logice sunt numite obiecte schematice. C ˆand un utilizator se conecteaz ˘a
la baza de date furniz ˆand numele de utilizator s ¸i parola, trebuie s ˘a specifice schema s ¸i
s˘a indice dac ˘a este proprietarul acesteia. ˆIn Oracle Database Express Edition, numele de
utilizator s ¸i numele schemei la care se conecteaz ˘a utilizatorul sunt aceleas ¸i.
Cele mai importante obiecte ˆın cadrul schemei unei baze de date sunt:
Tabelele care sunt unit ˘at ¸i de baz ˘a de stocare a datelor ˆın Oracle Database Express
Edition. Tabelele cont ¸in toate datele accesibile utilizatorului. Fiecare tabel cont ¸ine
rˆanduri care reprezint ˘aˆınregistr ˘ari individuale de date. R ˆandurile sunt compuse din
coloane care reprezint ˘a cˆampuri ale ˆınregistr ˘arilor;
Indecs ¸ii care ajut ˘a laˆımbun ˘at˘at ¸irea performant ¸ei recuper ˘arii datelor din tabele. Indecs ¸ii
sunt creat ¸i pe una sau mai multe coloane ale unui tabel s ¸i sunt ˆıntret ¸inut ¸i automat ˆın
baza de date;
Vizualiz ˘arile care combin ˘a informat ¸ii din mai multe tabele diferite ˆıntr-o singur ˘a
prezentare. O vizualizare se poate baza pe informat ¸ii din ambele tabele s ¸i din alte
vizualiz ˘ari;
Secvent ¸ele care se manifest ˘a ca nis ¸te ˆınregistr ˘ari distincte care pot genera o list ˘a
serial ˘a de numere ˆıntregi unice pentru coloanele numerice, fiecare reprezent ˆand ID-
ul unei ˆınregistr ˘ari;
Sinonimele care sunt considerate aliasuri pentru obiectele schematice. Se pot utiliza
sinonime pentru securitate s ¸i comoditate; De exemplu, pentru a ascunde proprietatea
asupra unui obiect sau pentru a simplifica instruct ¸iunile SQL;
Subprogramele stocate care sunt catalogate ca fiind funct ¸ii sau proceduri stocate ˆın
baza de date. Acestea pot fi invocate din aplicat ¸iile client care acceseaz ˘a baza de date;

CAPITOLUL 3. APLICAT ¸ IE 36
Declans ¸atoarele sunt subprograme gestionate automat de c ˘atre baza de date atunci
cˆand evenimentele specificate apar ˆıntr-un anumit tabel. Declans ¸atorii pot restrict ¸iona
accesul la date specifice s ¸i pot efectua ˆınregistr ˘ari;
Pachetele care reprezint ˘a un grup de subprograme asociate, ˆımpreun ˘a cu cursorii s ¸i
variabilele explicite pe care le utilizeaz ˘a, stocate ˆın baz ˘a de date ca unitate, pentru
utilizare continu ˘a. Ca s ¸i subprogramele stocate, subprogramele de pachete pot fi in-
vocate de la aplicat ¸iile client care acceseaz ˘a baza de date.
Accesul la Oracle Database Express Edition se face numai printr-un program client,
cum ar fi SQL Plus sauSQL Developer , care o s ˘a fie abordat ˆıntr-o sect ¸iune ulterioar ˘a
deoarece a fost folosit ˆın cadrul proiectului derulat.
SQL Plus este un instrument de interogare interactiv instalat cu fiecare modul Oracle
Database Express Edition. Are o interfat ¸ ˘a de utilizator de linie de comand ˘a care act ¸ioneaz ˘a
ca s ¸i client atunci c ˆand se conecteaz ˘a la baza de date.
De asemenea, SQL Plus are propriile comenzi s ¸i mediu. ˆIn mediul SQL Plus, se pot
introduce s ¸i executa comenzi SQL Plus, instruct ¸iuni SQL, instruct ¸iuni PL /SQL s ¸i comenzi
ale sistemului de operare pentru a efectua sarcini precum:
Formatarea, efectuarea calculelor, stocarea s ¸i imprimarea rezultatelor interog ˘arilor;
Examinearea tabelelelor s ¸i definit ¸iile obiectului;
Dezvoltarea s ¸i rularea de scripturi batch;
Administrarea bazei de date.
Exist ˘a posibilitatea de utilizare a SQL Plus pentru a genera rapoarte interactive, pentru
a genera rapoarte ca procese lot s ¸i pentru a afis ¸a rezultatele ˆın fis ¸ier text, pe ecran sau ˆın
fis ¸ier HTML pentru navigarea pe Internet.
Limbajul de interogare structurat (SQL) este limbajul bazat pe seturi, cu care toate
programele s ¸i utilizatorii acceseaz ˘a datele din Oracle Database Express Edition. SQL este
un limbaj la nivel declarativ sau nonprocedural care descrie ce trebuie s ˘a realizeze, dar nu
s ¸i cum trebuie s ˘a realizeze acest lucru.
Limbajul procedural SQL este o extensie nativ ˘a a Oracle Database Express Edition la
SQL. Elimin ˘a decalajul dintre controlul declarativ s ¸i imperativ al programului prin ad ˘augarea
de elemente procedurale, cum ar fi controlul condit ¸ionat s ¸i buclele.

CAPITOLUL 3. APLICAT ¸ IE 37
ˆInPL /SQL , se pot declara constantele s ¸i variabilele, procedurile s ¸i funct ¸iile, tipurile s ¸i
variabilele acelor tipuri s ¸i declans ¸atoare. Se pot rezolva except ¸iile s ¸i se pot crea unit ˘at ¸i PL
/SQL proceduri, funct ¸ii, pachete, tipuri s ¸i declans ¸atoare care sunt stocate ˆın baz ˘a de date
pentru reutilizare de c ˘atre aplicat ¸iile care utilizeaz ˘a oricare dintre interfet ¸ele programatice
Oracle Database Express Edition.
Unitatea de baz ˘a a unui program surs ˘a PL /SQL este blocul, care grupeaz ˘a declarat ¸iile
s ¸i declarat ¸iile conexe. Un bloc are o parte declarativ ˘a opt ¸ional ˘a, o parte executabil ˘a necesar ˘a
s ¸i o parte opt ¸ional ˘a de manipulare a except ¸iilor.
Oracle Application Express este un instrument de dezvoltare s ¸i implementare a aplicat ¸iilor
care permite crearea rapid ˘a de aplicat ¸ii web sigure s ¸i scalabile, chiar dac ˘a experient ¸a de pro-
gramare este limitat ˘a. Instrumentul de creare a aplicat ¸iilor ˆıncorporat asambleaz ˘a o interfat ¸ ˘a
HTML sau o aplicat ¸ie complet ˘a care utilizeaz ˘a obiecte de schem ˘a, cum ar fi tabele sau
proceduri stocate, ˆıntr-o colect ¸ie de pagini care sunt legate prin file, butoane sau leg ˘aturi
hipertext.
Oracle Java Database Connectivity (JDBC) este un API care permite Java s ˘a trimit ˘a
instruct ¸iuni SQL la o baz ˘a de date obiect-relat ¸ional ˘a, cum ar fi Oracle Database Express
Edition. Oracle Database Express Edition JDBC ofer ˘a suport complet pentru standardele
JDBC 3.0 s ¸i JDBC RowSet (JSR-114), caching avansat pentru conexiuni XA s ¸i non-XA,
expunerea tipurilor de date SQL s ¸i PL /SQL la Java s ¸i date SQL rapide acces.
Open Database Connectivity (ODBC) este un set de API-uri de acces la baze de date
care se conecteaz ˘a la baza de date, preg ˘atesc s ¸i apoi execut ˘a instruct ¸iuni SQL ˆın baza de da-
te. O aplicat ¸ie care utilizeaz ˘a un driver ODBC poate accesa surse de date neuniforme, cum
ar fi foi de calcul s ¸i fis ¸iere delimitate prin virgul ˘a. Driverul Oracle ODBC se conformeaz ˘a
specificat ¸iilor.
3.1.4 INSTRUCT ¸ IUNI SQL
Limbajul de manipulare a datelor (DML) permite accesul s ¸i manipularea datelor ˆın ta-
bele existente. ˆIn mediul SQL Developer, se poate introduce o instruct ¸iune DML ˆın foaia de
lucru. Alternativ, se pot utiliza cadrul s ¸i instrumentele SQL Developer Connections pentru
a accesa s ¸i a manipula datele.
Pentru a vedea efectul unei instruct ¸iuni DML ˆın SQL Developer, poate fi necesar ˘a doar
selectarea tipul obiectului schematic modificat din cadrul Conexiunii s ¸i apoi printr-un click
pe pictograma Actualizare, trebuie s ˘a se imprime efectul rezultat.

CAPITOLUL 3. APLICAT ¸ IE 38
Efectul unei instruct ¸iuni DML nu este permanent p ˆan˘a cˆand nu se efectueaz ˘a tranzact ¸ia
care o include. O tranzact ¸ie este o secvent ¸ ˘a de instruct ¸iuni SQL pe care Oracle Database
Express Edition le trateaz ˘a ca o unitate (poate fi o singur ˘a instruct ¸iune DML). P ˆan˘a cˆand o
tranzact ¸ie nu este angajat ˘a, ea poate fi revocat ˘a.
Declarat ¸iile DML afecteaz ˘aˆınregistr ˘arile dintr-un tabel. Acestea sunt operat ¸ii de baz ˘a
pe care le efectu ˘am pe date cum ar fi selectarea c ˆatorva ˆınregistr ˘ari dintr-un tabel, intro-
ducerea de noi ˆınregistr ˘ari, s ¸tergerea ˆınregistr ˘arilor inutile s ¸i actualizarea /modificarea
ˆınregistr ˘arilor existente.
Declarat ¸iile DML includ urm ˘atoarele:
SELECT – selectarea ˆınregistr ˘arilor dintr-un tabel
INSERT introducerea de ˆınregistr ˘ari noi
UPDATE – actualizarea /modificarea ˆınregistr ˘arilor existente
DELETE – s ¸tergerea ˆınregistr ˘arilor existente
ˆIn momentul ˆın care un utilizator creaz ˘a, modific ˘a sau elimin ˘a un obiect din baz ˘a de
date, acesta procedeu este denumit limbaj de definit ¸ie a datelor (DDL). Toate declarat ¸iile
DML schimb ˘a date s ¸i trebuie s ˘a fie efectuate ˆınainte ca schimbarea s ˘a devin ˘a permanent ˘a.
Tabelul este blocul de baz ˘a al oric ˘arui sistem de baze de date s ¸i DML este instrumentul
care ajut ˘a la popularea s ¸i gestionarea datele din tabel. Fiecare server de executare paralel ˘a
creeaz ˘a o alt ˘a tranzact ¸ie de proces paralel. Ca rezultat, DML paralel necesit ˘a mai mult de
un segment de retrogradare pentru performant ¸ ˘a.
Cu toate acestea, exist ˘a cˆateva restrict ¸ii, dup ˘a cum se arat ˘a mai jos:
Tranzact ¸ia poate cont ¸ine mai multe instruct ¸iuni Oracle DML paralele care modi-
fic˘a diferite tabele, dar dup ˘a instruct ¸iuni paralele DML care modific ˘a o tabel ˘a, nicio
declarat ¸ie serial ˘a sau paralel ˘a ulterioar ˘a nu poate accesa aceeas ¸i tabel ˘a din acea
tranzact ¸ie;
Operat ¸iile DML paralele nu pot fi efectuate pe tabele cu declans ¸atoare. Declans ¸atoarele
relevante trebuie s ˘a fie dezactivate pentru a efectua operat ¸ii DML pe tabel.
Tranzact ¸ia implicat ˘aˆıntr-o operat ¸ie DML paralel ˘a nu poate fi sau nu poate devini o
tranzact ¸ie distribuit ˘a;
Tabelele grupate nu sunt acceptate.

CAPITOLUL 3. APLICAT ¸ IE 39
-valori vechi : Acestea sunt valorile vechi ale coloanei legate de schimbare. Acestea
sunt valorile coloanelor pentru r ˆandul ˆınainte de modificarea DML. Dac ˘a tipul instruct ¸iunii
DML este UPDATE sau DELETE, aceste valori vechi includ unele sau toate coloanele
din r ˆandul modificat ˆınainte de instruct ¸iunea DML. Dac ˘a tipul de instruct ¸iune DML este
INSERT, nu exist ˘a valori vechi.
-valori noi: Acestea sunt valorile noi ale coloanelor legate de schimbare. Acestea sunt
valorile coloanelor dup ˘a modificarea DML a Oracle. Dac ˘a tipul de instruct ¸iuni DML este
UPDATE sau INSERT, aceste noi valori includ unele sau toate coloanele din r ˆandul mo-
dificat dup ˘a instruct ¸iunile DML. Dac ˘a tipul de instruct ¸iune DML este DELETE, nu exist ˘a
valori noi.
Instruct ¸iunile care creeaz ˘a, modific ˘a s ¸i dau obiecte schem ˘a sunt instruct ¸iunile limbaju-
lui de definit ¸ie a datelor (DDL). ˆInainte s ¸i dup ˘a o declarat ¸ie DDL, Oracle Database Express
Edition emite o instruct ¸iune implicit ˘a COMMIT.
Unele instruct ¸iuni DDL care creeaz ˘a obiecte de schem ˘a au o clauz ˘a opt ¸ional ˘a OR RE-
PLACE, care permite unei instruct ¸iuni s ˘aˆınlocuiasc ˘a un obiect schematic existent cu altul
care are acelas ¸i nume s ¸i acelas ¸i tip. C ˆand SQL Developer genereaz ˘a codul pentru una dintre
aceste instruct ¸iuni, acesta include ˆıntotdeauna clauza OR REPLACE.
Pentru a vedea efectul unei instruct ¸iuni DDL ˆın SQL Developer, este necesar ˘a selectarea
tipului obiectului schematic al obiectului nou creat ˆın cadrul Conexiuni s ¸i apoi se va face
click pe pictograma Actualizare.
Tabelele reprezint ˘a unit ˘at ¸ile de baz ˘a de stocare a datelor ˆın Oracle Database Express
Edition. Tabelele cont ¸in toate datele accesibile utilizatorului. Fiecare tabel cont ¸ine r ˆanduri
care reprezint ˘aˆınregistr ˘ari individuale de date. R ˆandurile sunt compuse din coloane care
reprezint ˘a cˆampurile ˆınregistr ˘arilor.
Limbajul de definit ¸ie a datelor (DDL) are la baz ˘a urm ˘atoarele instruct ¸iuni care sunt
utilizate pentru a defini structura sau schema bazei de date:
CREATE: pentru a crea obiecte ˆın baza de date
ALTER: modific ˘a structura bazei de date
DROP: s ¸terge obiecte din baza de date
TRUNCATE: elimin ˘a toate ˆınregistr ˘arile dintr-un tabel, inclusiv toate spat ¸iile alocate
pentru ˆınregistr ˘ari sunt eliminate
COMMENT: ad ˘augarea comentarii ˆın dict ¸ionarul de date

CAPITOLUL 3. APLICAT ¸ IE 40
RENAME: redenumirea unui obiect
Pe lˆang˘a instruct ¸iunile DML s ¸i DDL mai sunt instruct ¸iuni de control al datelor DCL
care ˆınglobeaz ˘a GRANT s ¸i REVOKE s ¸i instruct ¸iuni de tranzact ¸ie cum ar fi: COMMIT,
SA VEPOINT, ROLLBACK s ¸i SET TRANSACTION.
3.1.5 SQL DEVELOPER
Oracle SQL Developer este IDE-ul bazei de date Oracle. O interfat ¸ ˘a grafic ˘a pentru uti-
lizatori, Oracle SQL Developer permite utilizatorilor de baze de date s ¸i administratorilor
s˘aˆıs ¸i execute sarcinile bazei de date at ˆat prin mai put ¸ine click-uri distant ¸ ˘a cˆat s ¸i prin mai
put ¸ine ap ˘as˘ari de taste. Obiectivul principal al dezvoltatorului SQL este de a ajuta utiliza-
torul final s ˘a economiseasc ˘a timp s ¸i s ˘a maximizeze rentabilitatea investit ¸iei ˆın stivele de
tehnologie Oracle Database. SQL Developer suport ˘a Oracle Database 11g (ceea ce este fo-
losit ˆın cadrul proiectului dezvoltat) s ¸i funct ¸ioneaz ˘a pe Windows 10 unde este instalat ˘a s ¸i
Java.
O conexiune este un obiect SQL Developer care specific ˘a informat ¸iile necesare pentru
conectarea la o baz ˘a de date corespunz ˘atoare ca utilizator specific al acelei baze de date.
Se poate conecta la orice schem ˘a de baze de date Oracle, utiliz ˆand autentificarea standard a
bazei de date Oracle. Dup ˘a conectare, se pot efectua operat ¸iuni pe obiecte din baza de date.
Cˆand se pornes ¸te SQL Developer s ¸i c ˆand se afis ¸eaz ˘a caseta de dialog pentru conexiunile
bazei de date, SQL Developer cites ¸te automat toate conexiunile definite ˆın fis ¸ierul tnsna-
mes.ora din sistem, dac ˘a exist ˘a acest fis ¸ier. ˆIn mod implicit, tnsnames.ora este localizat ˆın
directorul $ORACLE HOME /network /admin.
Se pot crea conexiuni suplimentare (de exemplu, pentru conectarea la aceeas ¸i baz ˘a de
date, dar ca utilizatori diferit ¸i sau pentru conectare la diferite baze de date). Fiecare cone-
xiune la baza de date este listat ˘aˆın ierarhia Navigator de conectare.
Pentru a finaliza cu succes conectarea la Oracle Database Express Edition de la SQL
Developer, un utilizator trebuie s ˘a urmeze urm ˘atorii pas ¸i:
ˆIn primul r ˆand, pentru a rula prima dat ˘a SQL Developer trebuie ca software s ˘a aib ˘a
exact calea c ˘atre jdk care trebuie instalat anterior.
Dup˘a ce interfat ¸a apare, tot ce trebuie s ˘a fac ˘a un utilizator este de a face click pe bu-
tonul care indic ˘a conexiune nou ˘a.ˆIn cadrul ferestrei ap ˘arute trebuie introduse valorile co-
respunz ˘atoare ˆın cˆampurile nume de conectare, nume de utilizator s ¸i parol ˘a. Lˆang˘a cˆampul

CAPITOLUL 3. APLICAT ¸ IE 41
parol ˘a este bifat ˘a caseta de validare salvare parol ˘a.ˆIn mod prestabilit, este deselectat ˘a.
Oracle recomand ˘a acceptarea set ˘arii implicite.
Dup˘a completarea datelor de logare, ˆın cadrul tabului Oracle sunt inserate automat date-
le implicite de logare respectiv conexiune, Basic, Role, implicit, Hostname, localhost; Port,
1521; opt ¸iunea SID, selectat; c ˆamp SID, xe. Toate aceste date sunt necesare s ¸i nu trebuie
modificate doar dac ˘a exist ˘a cazul. Singurul lucru care trebuie executat ˆın acest moment este
act ¸ionarea butonului de Test care verific ˘a funct ¸ionalitatea conexiunii. Dup ˘a ce testul este
cu succes se va face conectarea prin act ¸ionarea butonului Conectare.
De asemenea, se poate crea o nou ˘a conexiune de baz ˘a de date select ˆand o conexiune
existent ˘aˆın acea caset ˘a de dialog, schimb ˆand numele conexiunii, modific ˆand alte atribute
de conectare dup ˘a cum este necesar s ¸i f ˘acˆand click pe Salvare sau Conectare.
Pentru a edita informat ¸iile despre o conexiune de baz ˘a de date existent ˘a, se va face click
pe numele conexiunii ˆın ecranul navigator Conexiuni s ¸i se va selecta opt ¸iunea Propriet ˘at ¸i.
ˆIn acest sens, se vor modifica datele din caseta de dialog despre conexiune, dar nu s ¸i numele
conexiunii.
Pentru a exporta informat ¸ii despre conexiunile de baze de date existente ˆıntr-un fis ¸ier
XML care se poate utiliza mai t ˆarziu pentru importarea conexiunilor, se va face click pe
Conexiuni ˆın ecranul Navigator conexiuni s ¸i se va selecta Export conexiuni.
Pentru a importa conexiuni care au fost exportate anterior, se va face click pe Conexiuni
ˆın ecranul de navigare Connections s ¸i se va selecta Import Connections.

CAPITOLUL 3. APLICAT ¸ IE 42
3.1.6 MYBATIS
MyBatis este un framework open source us ¸or de utilizat. Este o alternativ ˘a la JDBC s ¸i
Hibernate. Automateaz ˘a maparea ˆıntre bazele de date SQL s ¸i obiectele din Java, .NET s ¸i
Ruby on Rails. Map ˘arile sunt decuplate de logica aplicat ¸iei prin ˆınglobarea instruct ¸iunilor
SQL ˆın fis ¸iere de configurare XML.
Framework-ul rezum ˘a aproape toate codurile JDBC s ¸i reduce sarcina de setare ma-
nual˘a a parametrilor s ¸i de recuperare a rezultatelor. Acesta ofer ˘a un API simplu pentru a
interact ¸iona cu baza de date. Ofer ˘a de asemenea suport pentru SQL personalizat, proceduri
stocate s ¸i cartografiere avansat ˘a. Acesta a fost cunoscut anterior ca IBATIS.
O diferent ¸ ˘a semnificativ ˘aˆıntre MyBatis s ¸i alte cadre de persistent ¸ ˘a este faptul c ˘a My-
Batis subliniaz ˘a utilizarea SQL, ˆın timp ce alte cadre, cum ar fi Hibernate, utilizeaz ˘aˆın mod
obis ¸nuit un limbaj de interogare personalizat, s ¸i anume limbajul Hibernate Query Language
(HQL) sau Enterprise JavaBeans Query Language (EJB QL).
MyBatis vine cu urm ˘atoarele caracteristici de design:
Simplitate : MyBatis este considerat unul dintre cele mai simple cadre de persistent ¸ ˘a
disponibile ast ˘azi;
Dezvoltare rapid ˘a: MyBatis face tot ce poate pentru a facilita dezvoltarea hiper-
rapid ˘a;
Portabilitate : MyBatis poate fi implementat pentru aproape orice platform ˘a, cum ar
fi Java, Ruby s ¸i C # pentru Microsoft .NET;
Interfet ¸e independente : MyBatis ofer ˘a interfet ¸e independente de baze de date s ¸i
API-uri care ajut ˘a restul aplicat ¸iei s ˘a r˘amˆan˘a independent de orice resurse legate de
persistent ¸ ˘a;
Open source : MyBatis este un software open source gratuit.
Deoarece aplicat ¸ia implementat ˘a trebuie s ˘a aib ˘a o leg ˘atur˘a cu baza de date, trebu-
ie configurate detaliile bazei de date. Fis ¸ierul de configurat ¸ie este fis ¸ierul utilizat pentru
configurat ¸ia bazat ˘a pe XML.

CAPITOLUL 3. APLICAT ¸ IE 43
Structura tipic ˘a a fis ¸ierului de configurare MyBatis este:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//
EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="jdbcTypeForNull" value="NULL" />
</settings>
<typeAliases>
<typeAlias alias = "Role" type =
"disertatie.model.entity.user.role.Role"/>
<typeAlias alias = "User" type =
"disertatie.model.entity.user.User"/>
</typeAliases>
<mappers>
<mapper resource = "disertatie/persistence/mybatis/xml/RoleMapper.xml"/>
<mapper resource = "disertatie/persistence/mybatis/xml/UserMapper.xml"/>
</mappers
</configuration>
ˆIn cadrul elementului environments, se configureaz ˘a mediul bazei de date pe care uti-
lizatorul ˆıl foloses ¸te ˆın aplicat ¸ie. ˆIn MyBatis, conectarea la mai multe baze de date se face
prin configurarea mai multor elemente environments. Pentru a configura environments, un
utilizator are acces la dou ˘a sub tag-uri, s ¸i anume transactionManager s ¸i dataSource.
MyBatis suport ˘a doi manageri de tranzact ¸ii, s ¸i anume JDBC s ¸i MANAGED.
Dac˘a se foloses ¸te managerul de tranzact ¸ii de tip JDBC, aplicat ¸ia este responsabil ˘a pen-
tru operat ¸iile de gestionare a tranzact ¸iilor, cum ar fi, comiterea, returnarea s ¸i as ¸a mai departe
iar dac ˘a se foloses ¸te managerul de tranzact ¸ii de tipul MANAGED, serverul de aplicat ¸ii este
responsabil pentru gestionarea ciclului de viat ¸ ˘a a conexiunii. Acesta este, ˆın general, utilizat
cu aplicat ¸iile web.

CAPITOLUL 3. APLICAT ¸ IE 44
Datasource tag se utilizeaz ˘a pentru a configura propriet ˘at ¸ile conexiunii bazei de date,
cum ar fi numele-driver, adresa URL, numele de utilizator s ¸i parola bazei de date. Exist ˘a
trei astfel de tipuri care sust ¸in ideea anterioar ˘a:
UNPOOLED : Pentru tipul de date de tip UNPOOLED, MyBatis deschide s ¸i ˆınchide
o conexiune pentru fiecare operat ¸ie de baz ˘a de date. Este un pic mai lent s ¸i ˆın general
folosit pentru aplicat ¸iile simple;
POOLED : Pentru tipul de date POOLED, MyBatis va ment ¸ine un pool de conexiuni
baze de date. S ¸i, pentru fiecare operat ¸ie de baz ˘a de date, MyBatis utilizeaz ˘a una
dintre aceste conexiuni s ¸i le returneaz ˘aˆın mult ¸ime dup ˘a terminarea operat ¸iei. Reduce
conexiunea init ¸ial ˘a s ¸i timpul de autentificare necesar pentru a crea o nou ˘a conexiune;
JNDI : Pentru tipul de date JNDI, MyBatis va primi conexiunea de la sursa de date
JNDI.
Un factor foarte important ˆın folosirea Mybatis ˆıl reprezint ˘a mecanismul prin care nu-
mele absolut al clasei peste tot, se poate ˆınlocui cu typeAliases, un nume mai scurt pentru
un tip Java.
ˆIn cadrul aplicat ¸iei exist ˘a o clas ˘a User aflat ˘aˆın pachetul asociat persistent ¸ei.Pentru a nu
apela de fiecare dat ˘a aceast ˘a clas ˘a cu tot cu calea corespunz ˘atoare, o s ˘a fie vizibil un alias
asociat acesteia.
<typeAliases>
<typeAlias alias = "User" type = "disertatie.entity.user.User"/>
</typeAliases>
Fis ¸ierul XML Mapper este un fis ¸ier important, care cont ¸ine instruct ¸iuni SQL mapate.
Elementul Mapper este utilizat pentru a configura locat ¸ia acestor fis ¸iere xml ale cartogra-
fierelor ˆın fis ¸ierul de configurare MyBatis (acest element cont ¸ine patru atribute, respectiv
resurse, url, clas ˘a s ¸i nume).
De exemplu, numele fis ¸ierului xml mapper este User.xml s ¸i se afl ˘aˆın pachetul numit
mybatis sub forma urm ˘atoare:
<mappers>
<mapper resource = "disetatie/persistence/mybatis/xml/UserMapper.xml"/>
</mappers>

CAPITOLUL 3. APLICAT ¸ IE 45
INSTRUCT ¸ IUNI DE MAPARE
Mapper XML este un fis ¸ier important ˆın MyBatis, care cont ¸ine un set de instruct ¸iuni
pentru a configura diverse instruct ¸iuni SQL cum ar fi selectarea, inserarea, actualizarea s ¸i
s ¸tergerea. Aceste instruct ¸iuni sunt cunoscute sub numele de declarat ¸ii mapate sau declarat ¸ii
SQL mapate.
Toate declarat ¸iile au un id unic. Pentru a executa oricare dintre aceste instruct ¸iuni, trebu-
ie doar s ˘a se transmit ˘a id-ul corespunz ˘ator metodelor din aplicat ¸ia Java. Mapper XML file
ˆımpiedic ˘a sarcina de scriere a instruct ¸iunilor SQL ˆın mod repetat ˆın aplicat ¸ie. ˆIn comparat ¸ie
cu JDBC, aproape 95% din cod este redus utiliz ˆand fis ¸ierul Mapper XML ˆın MyBatis.
Toate aceste instruct ¸iuni mapate SQL se afl ˘aˆın elementul numit ¡mapper¿. Acest ele-
ment cont ¸ine un atribut numit namespace.
<mapper namespace="disertatie.persistence.mybatis.api.UserMapper">
<cache />
<resultMap id="userResultMap" type="User">
<id property="utilizator" column="utilizator" />
<result property="nume" column="nume"/>
<result property="prenume" column="prenume"/>
<result property="parola" column="parola"/>
</resultMap>
<select id="getUserByUsername" resultMap="userResultMap">
SELECT u.utilizator, u.nume, u.prenume, u.parola
FROM laura.UTILIZATOR u
WHERE lower(u.utilizator) = #{username}
</select>
</mapper>
INSERT
ˆIn MyBatis, pentru a introduce valori ˆın tabel, trebuie configurat ˘a interogarea de inse-
rare mapat ˘a. MyBatis ofer ˘a diferite atribute pentru inserarea mapperului, dar ˆın mare parte
un utilizator are nevoie de tipul de id s ¸i parametru.
Id este identificatorul unic utilizat pentru a identifica instruct ¸iunea insert. Pe de alt ˘a par-
te, parametertype este numele clasei sau aliasul parametrului care va fi trecut ˆın instruct ¸iune.

CAPITOLUL 3. APLICAT ¸ IE 46
Mai jos este prezentat un exemplu de inserare a interog ˘arii de mapare.
<insert id="newUser">
{CALL NEW_USER(
#{user. utilizator, mode=IN, jdbcType=VARCHAR},
#{user.nume, mode=IN, jdbcType=VARCHAR},
#{user.prenume, mode=IN, jdbcType=VARCHAR},
#{user.parola, mode=IN, jdbcType=VARCHAR},
#{user.email, mode=IN, jdbcType=VARCHAR})}
</insert>
ˆIn exemplul dat, se foloses ¸te parametrul de tip User (clas ˘a). User este o clas ˘a POJO,
care reprezint ˘a parametrul utilizatorului cu nume, prenume, utilizator, parola s ¸i e-mail.
UPDATE
Pentru a actualiza valorile unei ˆınregistr ˘ari existente utiliz ˆand MyBatis, actualizarea in-
terog ˘arii mapate este configurat ˘a. Atributele interog ˘arii de mapare actualizate sunt aceleas ¸i
ca interogarea de insert de mapare. Urm ˘atorul este exemplul interog ˘arii de actualizare:
<update id="updateEmailUtilizaator">
UPDATE laura.UTILIZATOR u SET
u.email = #{email}
WHERE u.id= #{id}
</update>
Pentru a invoca interogarea de actualizare, se va instant ¸ia clasa User s ¸i se vor seta valo-
rile pentru variabilele care reprezint ˘a coloanele care trebuie actualizate.
DELETE
Pentru a s ¸terge valorile unei ˆınregistr ˘ari existente utiliz ˆand MyBatis, interogarea de
s ¸tergere mapat ˘a este configurat ˘a. Atributele interog ˘arii de s ¸tergere mapate sunt aceleas ¸i ca
s ¸i inserarea s ¸i actualizarea interog ˘arilor mapate. Urm ˘atorul exemplu are la baz ˘a o interogare
de s ¸tergere mapat ˘a astfel:

CAPITOLUL 3. APLICAT ¸ IE 47
<delete id="deleteUtilizator">
DELETE from laura.UTILIZATOR u
WHERE u.id = #{id}
</delete>
SELECT
Pentru a prelua datele, se foloses ¸te instruct ¸iunea select de mapare. Urm ˘atorul exemplu
are la baz ˘a o interogare de selectare pentru a prelua toate ˆınregistr ˘arile dintr-o tabel ˘a.
<select id = "getAll" resultMap = "rezultat">
SELECT * from laura.UTILIZATOR;
</ select>
Cu interogarea de selectare care utilizeaz ˘a metoda selectList () se vor returna datele
ˆınregistr ˘arii selectate sub form ˘a de List ˘a dup ˘a cum se arat ˘a mai jos:
Lista <User> list = session.selectList ("User.getAll");
RESULTMAPS
Acestea sunt cele mai importante s ¸i mai puternice elemente din MyBatis. Rezultatele
instruct ¸iunilor SQL SELECT sunt mapate ˆın obiecte Java (POJO). Odat ˘a ce resultMap este
definit, se pot trimite apeluri de la mai multe instruct ¸iuni SELECT c ˘atre acelas ¸i POJO
pentru mapare. Urm ˘atorul exemplu are la baz ˘a rezultatul interog ˘arii ca implic ˘a Map.
<ResultMap id = "rezultat" tip = "User">
<Result property = "id" coloana = "ID" />
<Result property = "nume" coloana = "NUME" />
<Result property = "prenume" coloana = "PRENUME" />
<Result property = "utilizator" coloana = "UTILIZATOR" />
<Result property = "parola" coloana = "PAROLA" />
<Result property = "email" coloana = "EMAIL" />
</ ResultMap>

CAPITOLUL 3. APLICAT ¸ IE 48
<select id = "getAll" resultMap = "rezultat">
SELECT *from laura.UTILIZATOR;
</ select>
<select id = "getById" parametruType = "int" resultMap = "rezultat">
SELECT *from laura.UTILIZATOR u where u.ID = # {id};
</ select>
3.2 JA V A
ˆIn cele ce urmeaz ˘a o s ˘a fie obordate schematic toate tehnologiile folosite at ˆat pentru
partea de front-end c ˆat s ¸i pentru partea de back-end care au stat la baza proiectului creat.
Toate tehnologiile folosite fac parte din arhitectura de dezvoltare enterprise care au la baz ˘a
framwork-ul Spring.
3.2.1 ARHITECTURA

CAPITOLUL 3. APLICAT ¸ IE 49
Spring framwork are la baz ˘a o arhitectur ˘a stratificat ˘a constituit ˘a din mai multe module.
Toate modulele sunt construite pe partea superioar ˘a a containerului de baz ˘a. Aceste modu-
le ofer ˘a tot ceea ce un dezvoltator ar putea avea nevoie pentru a fi utilizat ˆın dezvoltarea
aplicat ¸iilor enterprise. Framwork-ul este ˆıntotdeauna liber s ˘a aleag ˘a ce caracteristici are ne-
voie s ¸i s ˘a elimine modulele care nu sunt de folos. Arhitectura modular ˘a permite integrarea
cu alte cadre.
Modulul Core ofer ˘a caracteristica de Inject ¸ie a Dependent ¸ei (DI) corespunz ˘atoare framework-
ului Spring. Acest modul cont ¸ine BeanFactory, o implementare a modelului factory care
creeaz ˘a beans conform configurat ¸iilor furnizate de dezvoltator ˆıntr-un fis ¸ier XML.
Modul AOP este un modul de programare orientat pe aspecte care permite dezvoltato-
rilor s ˘a defineasc ˘a interceptoare de metode. Acest modul este configurat astfel ˆıncˆat pasul
de compilare s ˘a fie s ˘arit. Ea vizeaz ˘a gestionarea tranzact ¸iilor declarative, care este mai us ¸or
deˆıntret ¸inut.
Modul DAO ofer ˘a un strat de abstractizare a sarcinii de nivel sc ˘azut de creare a unei
conexiuni, de eliberare a acesteia. De asemenea, ment ¸ine o ierarhie a unor except ¸ii semnifi-
cative, ˆın loc s ˘a arunce coduri de eroare complicate de la furnizori de baze de date specifice.
Utilizeaz ˘a AOP pentru a gestiona tranzact ¸iile. Tranzact ¸iile pot fi, de asemenea, gestionate
programatic.
Modul ORM nu ofer ˘a propria implementare ORM, dar ofer ˘a integrare cu instrumente
de cartografiere populare Object Relational cum ar fi Hibernate, iBATIS SQL Maps, Oracle
TopLink s ¸i JPA.
Modulul JEE ofer ˘a, de asemenea, suport pentru JMX, JCA, EJB s ¸i JMS. ˆIn multe cazuri,
JCA (Java EE Connection API) este asem ˘an˘ator JDBC, cu except ¸ia cazului ˆın care JDBC
se concentreaz ˘a asupra concentr ˘arii bazei de date JCA asupra conect ˘arii la sistemele vechi.
Modulul Web vine cu un cadru MVC care faciliteaz ˘a dezvoltarea de aplicat ¸ii web. Se
integreaz ˘a de asemenea cu cele mai populare cadre MVC precum Struts, Tapestry, JSF,
Wicket.
ˆIn cadrul proiectului s-a folosit pe partea de front-end tehnologia JSP av ˆand la baz ˘a
boostrap. Tot ˆın cadrul JSP s-a folosit s ¸i JSTL care reprezint ˘a JavaServer Pages Standard
Tag Library. Pe partea de back-end sunt evident ¸iate clasele java de tip controller ˆımpreun ˘a
cu clasele POJO s ¸i mybatis pe partea de persistent ¸ ˘a. La baz ˘a acestor mecanisme se afl ˘a
schematic model-view-controller.

CAPITOLUL 3. APLICAT ¸ IE 50
3.2.2 MODEL-VIEW-CONTROLLER
Model-view-controller (MVC) este un model arhitectural software pentru implemen-
tarea interfet ¸elor utilizator pe computere. El ˆımparte o aplicat ¸ie dat ˘aˆın trei p ˘art ¸i inter-
conectate, pentru a separa reprezent ˘arile interne ale informat ¸iilor de modalit ˘at ¸ile ˆın care
informat ¸iile sunt prezentate s ¸i acceptate de la utilizator. Modelul de design MVC decu-
pleaz ˘a aceste componente majore, permit ¸ ˆand reutilizarea eficient ˘a a codurilor s ¸i dezvolta-
rea paralel ˘a.
Folosit ˆın mod tradit ¸ional pentru interfet ¸e grafice desktop (GUI), aceast ˘a arhitectur ˘a a
devenit popular ˘a pentru proiectarea aplicat ¸iilor web s ¸i chiar a client ¸ilor mobili, desktop s ¸i
alt ¸i client ¸i.
MVC este folosit pentru a separa stratul de acces la date, codul logic de enterprise s ¸i
interfat ¸a grafic ˘a de utilizator care trebuie definit ˘a s ¸i proiectat ˘a pentru a permite utilizatorului
s˘a interact ¸ioneze cu aplicat ¸ia. Aceast ˘a aplicat ¸ie are trei p ˘art ¸i:
1.Model : aceast ˘a parte stocheaz ˘a datele aplicat ¸iei, cum ar fi baze de date, date text,
fis ¸iere s ¸i /sau alte resurse web;
2.Vizualizare : aceasta este interfat ¸a grafic ˘a a aplicat ¸iei. Aceasta ar cont ¸ine diferite bu-
toane, casete de text s ¸i alte controale pentru a permite utilizatorului s ˘a interact ¸ioneze
cu aplicat ¸ia pentru a-s ¸i finaliza proiectele ˆın funct ¸ie de tipul de software pe care ˆıl
foloses ¸te;
3.Controler : manevreaz ˘a datele provenite de la utilizatori sau merge la utilizator dintr-
un model.

CAPITOLUL 3. APLICAT ¸ IE 51
3.2.3 JSP
Java Server Pages (JSP) este o tehnologie de programare a serverului care permite crea-
rea unei metode dinamice, independente de platform ˘a, pentru construirea de aplicat ¸ii bazate
pe Web. JSP au acces la ˆıntreaga familie de API-uri Java, inclusiv API-ul JDBC pentru a
accesa bazele de date ale ˆıntreprinderilor.
JSP este o tehnologie pentru dezvoltarea de pagini web care accept ˘a cont ¸inut dinamic.
Acest lucru ˆıi ajut ˘a pe dezvoltatori s ˘a introduc ˘a codul Java ˆın pagini HTML, f ˘acˆand uz de
etichete JSP speciale, dintre care majoritatea ˆıncep cu <% s ¸i se termin ˘a cu % >.
O component ˘a JavaServer Pages este un tip de servlet Java care este conceput pentru
aˆındeplini rolul unei interfet ¸e de utilizator pentru o aplicat ¸ie web Java. Dezvoltatorii web
scriu JSP ca fis ¸iere text care combin ˘a cod HTML sau XHTML, elemente XML s ¸i act ¸iuni s ¸i
comenzi JSP ˆıncorporate.
Utiliz ˆand JSP, se pot colecta informat ¸ii de la utilizatori prin intermediul formularelor
de pagini Web, se pot contoriza ˆınregistr ˘ari dintr-o baz ˘a de date sau o alt ˘a surs ˘a s ¸i se pot
crea pagini web dinamic.
JSP-urile pot fi utilizate ˆın diverse scopuri, cum ar fi recuperarea informat ¸iilor dintr-o
baz˘a de date sau ˆınregistrarea preferint ¸elor utilizatorilor, accesarea componentelor Java-
Beans, trecerea controlului ˆıntre pagini s ¸i partajarea informat ¸iilor ˆıntre solicit ˘ari, pagini s ¸i
as ¸a mai departe.
Paginile JavaServer deservesc adesea acelas ¸i scop ca s ¸i programele implementate uti-
lizˆand Interfat ¸a Comun ˘a Gateway (CGI). Dar JSP ofer ˘a mai multe avantaje ˆın comparat ¸ie
cu CGI. Performant ¸a este semnificativ mai bun ˘a deoarece JSP permite ˆıncorporarea ele-
mentelor dinamice ˆın pagini HTML ˆın loc s ˘a aib ˘a fis ¸iere separate CGI.
JSP sunt ˆıntotdeauna compilate ˆınainte ca acestea s ˘a fie procesate de server, spre de-
osebire de CGI /Perl, care necesit ˘a ca serverul s ˘aˆıncarce un interpret s ¸i scriptul t ¸int ˘a de
fiecare dat ˘a cˆand pagina este solicitat ˘a.
ˆIn cele din urm ˘a, JSP este o parte integrant ˘a a Java EE, o platform ˘a complet ˘a pentru
aplicat ¸iile din clasa enterprise. Aceasta ˆınseamn ˘a c˘a JSP poate juca un rol ˆın cele mai simple
aplicat ¸ii la cele mai complexe s ¸i mai exigente.
Serverul web are nevoie de un motor JSP, adic ˘a un container pentru procesarea pagini-
lor JSP. Containerul JSP este responsabil pentru interceptarea cererilor de pagini JSP. Un
container JSP funct ¸ioneaz ˘aˆımpreun ˘a cu serverul Web pentru a furniza mediul de rulare s ¸i
alte servicii de care JSP are nevoie.

CAPITOLUL 3. APLICAT ¸ IE 52
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!– Page header –>
<div class="page-header">
<div class="page-header-content">
<div class="page-title">
<h4><i class="icon-arrow-left52 position-left"></i>
<span class="text-semibold">Administrare Utilizatori</span></h4>
</div>
</div>
</div>
<!– /page header –>
<!– Content area –>
<div class="content">
<!– Footer –>
<div class="row">
<div class="col-lg-4"></div>
<div class="col-lg-4">
&copy; Disertatie 2017. <a href="#">
Administra?ia preziden?iala by</a> by <a href="#">Laura-Maria Po?irca</a>
</div>
<div class="col-lg-4"></div></div>
<!– /footer –>
</div>
<!– /content area –>
ˆIn momentul de fat ¸ ˘a dup ˘a ce pagina de JSP a fost creat ˘a tot ce trebuie f ˘acut este de a
prelua datele ˆın controller. Dup ˘a ce se va verifica autenticitatea utilizatorului logat, toatele
datele vor fi transmise c ˘atre partea de persistent ¸ ˘a.
package disertatie.controller.view;
import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;

CAPITOLUL 3. APLICAT ¸ IE 53
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import disertatie.model.entity.user.User;
import disertatie.model.resource.annex6.Report;
import disertatie.service.api.AuthenticationService;
import disertatie.service.api.AuthorizationService;
import disertatie.service.api.PaymentRequestService;
@Controller("view")
public class ViewController {
protected final Log logger = LogFactory.getLog(getClass());
@Autowired
private AuthorizationService authorizationService;
@RequestMapping(value = "/widgets/users",
method = RequestMethod.GET)
public String showUsersPage() {
return "widgets/users";
}
Partea de persistent ¸ ˘a care are la baz ˘a Mybatis este structurat ˘a sub forma urm ˘atoare:

CAPITOLUL 3. APLICAT ¸ IE 54
Not ¸iuniile definitorii Mybatis au fost abordate ˆıntr-o sect ¸iune anterioar ˘a, destul de de-
taliat. Toate not ¸iuniile acumulate au la baz ˘a o clas ˘a java denumit ˘a POJO. Plain old Java
object (POJO) ˆın ingineria software este un obiect obis ¸nuit Java nelegat de vreo restrict ¸ie
special ˘a. Termenul POJO a fost notat init ¸ial ca fiind un obiect Java care nu respect ˘a niciunul
dintre cele mai importante modele de obiecte Java, convent ¸ii sau cadre.
ˆIn zilele noastre POJO poate fi folosit s ¸i ca acronim pentru Obiectul simplu obis ¸nuit
JavaScript, caz ˆın care termenul denot ˘a un obiect JavaScript. Fenomenul POJO a c ˆas ¸tigat
cel mai probabil o acceptare pe scar ˘a larg ˘a din cauza necesit ˘at ¸ii unui termen comun s ¸i us ¸or
deˆınt ¸eles, care s ˘a contrasteze cu cadrele complicate ale obiectelor.
package disertatie.model.entity.user;
import java.io.Serializable;
import java.util.List;
import disertatie.model.entity.user.role.Role;
public class User implements Serializable {
private static final long serialVersionUID = -6749079939244320068L;
private String utilizator;
private String nume;
private String prenume;
private String parola;
private List<Role> roles;
public User() {
super();
}
public User(String utilizator, String nume,
String prenume, String parola, List<Role> roles) {
super();
setUtilizator(utilizator);
setNume(nume);
setPrenume(prenume);
setParola(parola);
setRoles(roles);
}
public String getUtilizator() {
return utilizator;
}

CAPITOLUL 3. APLICAT ¸ IE 55
public void setUtilizator(String utilizator) {
this.utilizator = utilizator;
}
public List<Role> getRoles() {
return roles;
}
public void setRoles(List<Role> roles) {
this.roles = roles;
}
public Boolean isInRole(String roleName) {
for (Role role : getRoles()) {
if (role.getNume().equals(roleName)) {
return Boolean.TRUE;
}
}
return Boolean.FALSE;
}
public String getParola() {
return parola;
}
public void setParola(String parola) {
this.parola = parola;
}
public String getNume() {
return nume;
}
public void setNume(String nume) {
this.nume = nume;}
public String getPrenume() {
return prenume;
}
public void setPrenume(String prenume) {
this.prenume = prenume;}
}

CONCLUZII
Des ¸i multe informat ¸ii s ¸i rezultate importante au fost evident ¸iate, multe provoc ˘ariˆın
domeniul cercet ˘arii r ˘amˆanˆınc˘aˆın gestionarea temporal ˘a a bazelor de date. Este nevoie de
o cons ¸tientizare mai veche ˆın mai multe domenii ˆın cadrul bazelor de date temporale. Este
necesar ˘a o cercetare care s ˘a t ¸in˘a seama de realitatea c ˘a majoritatea bazelor de date sunt, de
fapt, baze de date temporare vechi s ¸i c ˘a aplicat ¸iile care ruleaz ˘a pe ele sunt, de fapt, aplicat ¸ii
temporale de baz ˘a de date.
Majoritatea cercet ˘arilor p ˆan˘aˆın prezent au presupus c ˘a aplicat ¸iile vor fi proiectate uti-
lizˆand un nou model temporal de date, implementat utiliz ˆand limbaje noi de interogare
temporal ˘a care ruleaz ˘a pe date DBMS temporale inexistente. Pe termen scurt s ¸i mediu,
aceasta este o ipotez ˘a nerealist ˘a.ˆIntr-adev ˘ar, poate, part ¸ial, din cauza acestui lucru s ¸i ˆın
ciuda nevoii evidente de pe piat ¸ ˘a,ˆınc˘a nu exist ˘a niciun DBMS relat ¸ional comercial relativ
temporal.
Cres ¸terea recent ˘a a arhitecturilor de baze de date, inclusiv a diferitelor tipuri de midd-
leware, determin ˘a necesitatea cres ¸terii gradului de cons ¸tientizare a arhitecturii. Sunt nece-
sare studii care ofer ˘a conceptele, abord ˘arile s ¸i tehnicile necesare pentru dezvoltatorii tert ¸ ˘a
parte pentru a implementa ˆın mod eficient tehnologia bazei de date temporale, exploat ˆand
maxim o infrastructur ˘a arhitectural ˘a disponibil ˘a, precum s ¸i funct ¸ionalitatea deja oferit ˘a de
DBMS-urile existente.
Arhitecturile DBMS temporale rezultate vor oferi o alternativ ˘a extrem de relevant ˘a pen-
tru arhitectura integrat ˘a standard, care este, ˆın general, asumat ˘a. Ca o etap ˘a urm ˘atoare, este
nevoie de cercetare ˆın ceea ce prives ¸te modul de exploatare a progreselor existente s ¸i a no-
ilor performant ¸e de ˆımbun ˘at˘at ¸ire a performant ¸elor, cum ar fi implement ˘arile s ¸i indicatorii
operatorilor temporali algebrici ˆın aceste arhitecturi. ˆIn cele din urm ˘a, abord ˘arile pentru
tranzit ¸ia aplicat ¸iilor mos ¸tenite vor deveni din ce ˆın ce mai c ˘autate, pe m ˘asur˘a ce tehnologia
temporal ˘a se va deplasa de la cercetare la practic ˘a.
Rezultatele privind proiectarea conceptual ˘a a bazelor de date temporale, raportate ˆın
literatura de specialitate, au potent ¸ialul de a g ˘asi aplicat ¸ii ˆın practic ˘a. Atunci c ˆand desig-
56

CAPITOLUL 3. APLICAT ¸ IE 57
nerii de baze de date ˆınt ¸eleg efectiv conceptele de baze de date temporale sunt capabili s ˘a
proiecteze baze de date mai bune utiliz ˆand modelele s ¸i instrumentele existente.
O provocare central ˘a este de a furniza modele conceptuale complete, cu instrumente
de proiectare asociate, care s ˘a acopere toate aspectele legate de proiectarea unei baze de
date temporale. Evaluarea empiric ˘a a acestora de c ˘atre utilizatori reali este necesar ˘a pen-
tru a oferi perspective esent ¸iale. ˆIn ceea ce prives ¸te performant ¸a, sunt necesare mai multe
studii empirice pentru a compara implement ˘arile operatorului temporal algebric s ¸i pentru
a sugera eventuale implement ˘ari mai eficiente. Tehnicile de indexare reprezint ˘a un aspect
important. Des ¸i studiile preliminare de performant ¸ ˘a au fost efectuate pentru tot ¸i sau majo-
ritatea indicilor temporali propusi ˆın mod izolat.
O alt ˘a statistic ˘a util ˘a este num ˘arul de tupluri cu durat ˘a lung ˘a de viat ¸ ˘a, a c ˘aror prezent ¸ ˘a
este r ˘ad˘acina unor structuri de index s ¸i a operatorilor temporali algebrici. O serie de do-
menii de cercetare care sunt fie separate ˆın cadrul bazelor de date temporale, se suprapun
cu acest domeniu, fie iau baze de date temporale ca punct de plecare, de asemenea, repre-
zint˘a provoc ˘ari importante. Des ¸i nu sunt ment ¸ionate ˆın mod exhaustiv, aceste domenii au
rolul de a oferi provoc ˘ari ample cercet ˘atorilor care se ocup ˘a de implementarea eficient ˘a a
funct ¸ionalit ˘at ¸ii avansate a bazelor de date.
Integrarea bazelor de date temporale cu bazele de date spat ¸iale ofer ˘a noi provoc ˘ari
interesante s ¸i promite s ˘a devin ˘a un domeniu de cercetare important ˆın viitor. ˆIn timp ce
extragerea asociat ¸iilor statice dintr-o mult ¸ime de date este un obiectiv important, trebuie s ˘a
se concentreze mai mult pe eforturile asupra asociat ¸iilor care capteaz ˘a comportamente care
variaz ˘aˆın funct ¸ie de timp.
Avˆandˆın vedere faptul c ˘a toate not ¸iuniile despre baze de date temporale, descrise ˆın
cadrul lucr ˘arii au fost asimilate s ¸i aplicate ˆın practic ˘a prin realizarea unei aplicat ¸ii web care
s˘a cont ¸in ˘a elementele prezentate, consider c ˘a efortul depus ˆın cercetarea acestui domeniu
este unul considerabil s ¸i benefic pentru eventuale cercet ˘ariˆın domeniu.

Bibliografie
[1]Martin F. Temporal Patterns,https: //martinfowler.com /eaaDev /timeNarrative.html
2005.
[2]http: //www.datanamic.com /support /lt-dez005-introduction-db-modeling.html .
[3]Goralwalla, I.A., Leontiev, I., zsu, M.T., Szafron, D., Combi, C. Temporal Gra-
nularity: Completing the Puzzle, Journal of Intelligent Information Systems V ol.16,
Nr.1, pag. 41-63.
[4]TimeConsult What are temporal Databases?, www.timeconsult.com /TemporalData
/TemporalDB.html 1998.
[5]P. Atzeni and V . De Antonellis Relational Database Theory, Benjamin /Cummings
Publishing Co., Menlo Park, CA 1993.
[6]Piattini M. and Diaz O Advanced Database Technology and Design Artech House
Boston, London.
[7]M. Velicanu, I. Lungu Sisteme de baze de date teorie ¸ si practic˘ a ed. Petrion, Bucu-
reÅti, 2003.
[8]A. Bara, I. Botha, V . Diaconit ¸a, I. Lungu, A. Velicanu Baze de date. Limbajul
PL /SQL ed. ASE, Bucures ¸ti, 2009.
58

Similar Posts