Documente Academic
Documente Profesional
Documente Cultură
Științifice
Curs
Mastere:
Se observă cât de
complexă şi ineficientă
este o astfel de
interogare, care s-ar
putea rezolva elegant
prin operaţa de
comparaţie a două
obiecte în modelul
obiect-orientat
class Punct {
int x; Atribute
int y;
public:
Punct(int a, int b); Prototipuri
int getX(); metode publice
int getY(); Mesaje
Structura
Interfaţa
void setX(int a);
void setY(int a);
void translatie(int a, int b); Comportarea
};
Punct::Punct(int a,int b){x=a;y=b;}
int Punct::getX(){return x;} Implementarea
int Punct::getY(){return y;} metodelor
void Punct::setX(int a){x=a;}
void Punct::setY(int b){y=b;}
Prof. Felicia Ionescu Baze de date obiect-orientate 5
Ascunderea implementării
Încapsularea datelor permite ascunderea implementării:
datele membre (atributele) să fie date private, inaccesibile din afara clasei
ele pot fi accesate numai prin intermediul medodelor publice ale interfeţei
Funcţiile publice (interfaţa) unei clase sunt:
constructori (ex. Punct)
funcţii de acces la date: selectori (ex. getX), modificatori (ex. setX)
funcţii de execuţie specifice (business logic) – logica aplicaţiilor (ex. translatie)
Un obiect este o instanţă a unei clase și are:
indentificator unic (nume, referință)
o stare valorile variabilelor sale
o comportare funcţiile pe care le poate executa (definite în clasa sa)
obiect
interfata
clasa
1 N ANGAJAT M N PROIECT
SECTIE
1
d
DEPENDENT
SECRETARA TEHNICIAN INGINER
ANGAJAT
SECTIE PROIECT
Nume
Număr 1 1..* Prenume 1..* 1..* Denumire
Denumire DataNasterii DataInceperii
Buget Adresa Buget
Salariul
1
{disjoint}
1..*
DEPENDENT SECRETARA TEHNICIAN INGINER
Nume VitezaRedactare Specialitatea Specialitatea
Varsta
GradRudenie
O colecţie (DataTableCollection) de
DataSet
obiecte DataTable, fiecare
reprezentând un tabel din baza de
date
1 1 O colecţie (DataRelationCollection)
DataRelationCollection DataTableCollection de obiecte DataRelation, fiecare
reprezentând o asociere între două
tabele ale bazei de date
0...* 1...*
DataRelation DataTable
1 1 1
DataRowCollection DataCollumnCollection ConstraintCollection
<<interface>>
Object
<<interface>> <<interface>>
Iterator Collection
ObjectStore (http://www.objectstore.com)
Versiunea actuală ObjectStore 2013 oferă binding pentru C++ si Java, în
sisteme de operare Windows 7 și Linux (RedHat); indicată pentru:
Aplicații de timp real
Prelucrarea volumelor mari de date (big data)
Column object of
the defined type
…………………………………………………………………….....
Trecut Prezent
Aplicatie Aplicatie
Aplicatie
GIS
Proprietary Middleware Open Server de
API Spatial API harta
Fisiere proprii
Baza de
SGBD date
traditional spatiala
Middleware Platforma
Standalone
propriu Internet
(b)
(a)
getAllAttributes( ) setAudioDuration( )
getAttribute( ) setCompressionType( )
getAudioDuration( ) setDescription( )
getCompressionType( ) setEncoding( )
getContentLength( ) setFormat( )
getContentInLob( ) setKnownAttributes( )
getDescription( ) setNumberOfChannels( )
getEncoding( ) setSampleSize( )
getFormat( ) setSamplingRate( )
getNumberOfChannels( )
getSampleSize( )
getSamplingRate( )
Pe lângă acestea, mai există:
metode de import a conţinutului media (import(), importFrom())
metoda de verificare a proprietăţilor obiectului (checkProperties())
metoda de prelucrare (processAudioCommand())
Operaţii Complexitate
ASG’1 ASG’2
Site 1 Site 2
ASG’1= RESP = ‘Manager’(ASG1) ASG’2= RESP = ‘Manager’(ASG2)
Strategia A - exploatează faptul că cele două tabele sunt fragmentate în acelaşi mod
Costul de execuţie estimat: 460 operații
Site 5
UPDATE scott.dept@hq.us.acme.com
SET loc = 'REDWOOD SHORES'
WHERE deptno = 10;
UPDATE scott.emp
SET deptno = 11
WHERE deptno = 10;
UPDATE scott.bldg@maint.us.acme.com
SET room = 1225
WHERE room = 1163;
COMMIT;
(a) (b)
În ODW se foloseşte
preponderent:
Schema stea pentru
proiectarea logică a
depozitului
Implementarea relaţională
a schemei stea
Schema stea
conţine:
CUBE – SALES
Dimensiunile:
PRODUCTS
PROMOTIONS
CUSTOMERS
CHANNELS
TIMES
Observatii: tabelul PRODUCTS este nenormalizat – prezintă redundanţe, dar interogarile sunt mai rapide
Denumirile coloanelor difera pt. ca s-a folosit deploymentul existent din exemplele Oracle (schema sh)
555 1 0 0 0 0
556 0 1 0 0 0
557 0 0 1 0 0
558 0 0 0 1 0
559 0 1 0 0 0
560 0 1 0 0 0
561 0 1 0 0 0
562 1 0 0 0 0
563 0 1 0 0 0
564 0 0 1 0 0