Vous êtes sur la page 1sur 115

SGBD OO

Rachid OULAD HAJ THAMI

PARTIE I : SGBD OO
CONCEPTS FONDAMENTAUX

DESA InfoTelecom

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


Ouvrages de Rfrence
Introduction aux bases de donnes, Chris J. Date, Vuillebert, 6me
Edition, 1998.

Bases de donnes objet et relationnel, G. Gardarin, Eyrolles, 1999

Les objets, M. Bouzeghoub, G. Gardarin, P. Valduriez, Eyrolles, 1998

Objet-relationnel sous Oracle8, C. Soutou, Eyrolles, 1999

WWW. OMG.ORG

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


Plan
I. Introduction : pourquoi les SGBDOO
II. Dfinitions des SGBDOO
III. Exemple de BDOO avec ObjectStore
IV. Le relationnel tendu
V. Manipulation du relationnel tendu: Oracle (TP)
VI. Conclusion

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


I. Introduction : pourquoi les SGBD OO

Insuffisance du modle relationnel


Pauvret des structures de donnes (tuple, table, integer, )
Faible capture de la smantique (intgrit rfrentielle)
Incompltude du SQL
Problme SQL/langage de programmation

Nouveaux besoins
Nouveaux types de donnes (image, dessin, vido..)
Nouvelles applications (bd multimdia)

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Dfinitions des SGBD OO
II.1. Aspect Bases de Donnes
II.2. Aspect Orient Objet
II.3. Les rgles facultatives
II.4. Les rgles ouvertes

www.OMG.org

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Dfinitions des SGBD OO

II.2. Aspect Orient Objet II.1. Aspect Bases de Donnes


Identit d objet Persistance
Objet complexe Gestion de mmoires
Encapsulation Langage de requtes
Type ou Classe Multi-utilisateurs
Hritage Fiabilit
Surcharge et rsolution Scurit
tardive
Compltude
Extensibilit

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Dfinitions des SGBD OO
II.3. Les rgles facultatives II.4. Les rgles ouvertes
Hritage multiple Modle de calcul
Gnricit Modle de persistance
Vrification de type Uniformit
Distribution Nommage
Transaction de conception
Versions

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Dfinitions des SGBD OO

ASPECT BASES DE DONNEES

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Dfinitions des SGBD OO

II.1. Aspect Bases de Donnes


Persistance
Gestion de mmoires
Langage de requtes
Multi-utilisateurs
Fiabilit
Scurit

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.1 Aspect Bases de donnes /
Persistance de donnes

Persistance des donnes

Les donnes survivent l excution de programmes

Toutes les donnes de la base de donnes persistent tout moment

Ce n est pas la mme chose que la gestion du disque

la persistance est systmatique (tout persiste)

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.1 Aspect Bases de donnes / Gestion
de disque

Gestion de disque

Les donnes sont volumineuses


Un mcanisme de mmoire virtuelle n est pas suffisant
Les SGBD sont en gnral limits par les entres/sorties
les SGBD ont besoins de techniques spcifiques pour avoir de bonnes
performances:
gestion de tampons
regroupement des donnes sur le disque
index
optimisation de requtes

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.1 Aspect Bases de donnes / Partage
de donnes

Partage des donnes

Les donnes sont partages


Notion de transaction (begin, abort, commit): unit de cohrence
Notion de cohrence collective: srialisabilit
Support pour la srialisabilit des transactions: verrouillage deux
phases, estampillage, etc.
Contrle de concurrence sur:
la base de donnes
le schma
les index

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.1 Aspect Bases de donnes / Fiabilit
des donnes

Fiabilit des donnes

Les donnes sont chres et stratgiques: elles doivent tre fiable


Atomicit des transaction: une transaction est soit compltement
effectue soit pas du tout
Points de reprise et retours en arrire
Rsistance aux pannes
en cas de panne mmoire: retour aux dernires transactions
valides ou au dernier point de reprise
en cas de panne disque: restauration d une sauvegarde et
droulement du journal.

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.1 Aspect Bases de donnes / Scurit
des donnes

Scurit des donnes

Tous les utilisateurs ne peuvent pas tout faire sur toutes les donnes
Notion de groupe d utilisateurs
Notion d autorisation (lecture, criture, excution)
Granularit des autorisations:
base de donnes,
relation,
nuplet,
attributs,
etc..
Accorder et supprimer les droits

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.1 Aspect Bases de donnes / Langage
de requtes AD HOC

Langage de requtes AD HOC

Les requtes sont simples (pas besoin d crire un programme)


les requtes sont dclaratives
les requtes sont optimises avant leur excution
les langages de requtes doivent tre gnriques: on doit pouvoir les
utiliser sur toutes les bases de donnes
les langages de requtes ne sont pas complet dans le sens de la
machine de Turing
l tat de l art: SQL et QBE

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Dfinitions des SGBD OO

ASPECT ORIENTE-OBJET

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Dfinitions des SGBD OO

II.2. Aspect Orient Objet


Identit d objet
Objet complexe
Encapsulation
Type ou Classe
Hritage
Surcharge et rsolution
tardive
Compltude
Extensibilit

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet

Identit d objet

Objet avec identit

Partage d objet

Cycle entre objet

Comparaison d objets

Identit d objet: conclusion

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet
Problme???

Comment reconnatre les objets dune faon


unique est sr???

IL FAUT
La valeur de lobjet?
AUTRE CHOSE

Ladresse physique de lobjet?


LIDENTITE DE LOBJET Disque Dur
Notion de cl
Les objets sont permanents dans la BD
Cest le SGBD qui gre les objets dans la BD

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet

Chaque objet a une identit indpendante de sa valeur

Identit et galit sont deux concepts diffrents

Les objets peuvent tre partags

On peut mettre jour la valeur d un objet sans changer son


identit

Les objets peuvent tre reprsents par un graphe de composition

Le graphe peut comporter des cycles

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet

Oid (Object Identifier) gr par le SGBDOO


Unique
Permanent
Immuable

Objet = (Oid, valeur)


123XDTE453652CSDRE SGBDOO

Valeur

Dveloppeur
BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI
II.2 Aspect Orient-objet / Identit
d objet
O1
Consquence: deux visions
A O1 : new A, a: x
b : OID(O2)
Class A (a : type1, B O2 : new B
b : B) O1.a:=x;
rfrence
Class B (c : type2, O1.b:=B;
d : type3)

O2

SGBD OO
Dveloppeur
BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI
II.2 Aspect Orient-objet / Identit
d objet
O1
Consquence: deux visions
ITE
a: x
O1.a
GRb : OID(O2)
Class A (a : type1, TE
b : B) O1.b IN
D
E L E rfrence
Class B (c : type2,
IT N E L
d : type3) A TI
TR EN
O N E R
E C E F O2
D R
A S
P
SGBD OO
Dveloppeur
BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI
II.2 Aspect Orient-objet / Identit
d objet
A: 1 A: 2
R1 A B C B:b1 B:b2
C:c1 C:c2
1 b1 c1 A: 3
B:b3
2 b2 c2 C:c3
3 b3 c4
R1 D A E
11 1 e1 D: 11
22 1 e2 A:
E:e1
33 3 e4
D: 22 D: 33
A: A:
E:e2 E:e4

Modle relationnel: systme valeur Modle objet: systme objet

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet

Consquences:
Test didentit ==
Test dgalit de surface =
Test dgalit profonde =* (deep equality) (galit arborescente)

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet
O1
Class A (a : entier, b : B)
Class B (c : entier, d : entier) a: 10
b : OID(O3)
A O1 : new A; O2.a:=10; O2
A O2 : new A;
O1.b:=O4; a: 10
B O3 : new B;
b : OID(O4)
B O4 : new B;
O3=O4?
O3.c:=100; a:100
O3==O4? b:1000
O3.d:=1000;
O4.c:=100; O1=O2? O3
O4.d:=1000; a:100
O1.a:=10; O1*=O2? b:1000
O1.b:=O3; O4

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet
O1
Class A (a : entier, b : B)
Class B (c : entier, d : entier) a: 10
b : OID(O3)
A O1 : new A; O2.a:=10; O2
A O2 : new A;
O1.b:=O3; a: 10
B O3 : new B;
b : OID(O3)
B O4 : new B;
O1=O2?
O3.c:=100; a:100
O3.d:=1000; b:1000
O1*=O2?
O1.a:=10; O3
O1.b:=O3;

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet
O1
Class A (a : entier, b : entier)
a: 10
b : 100
A O1 : new A;
A O2;
O1.a:=10; O2
O1.b:=100; a: 10
O2:=copy(O1) b : 100

O2==O1? FAUX
O2=O1? VRAI

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet

Rgle fondamentale:

dans une base de donnes objet,

un objet nest jamais copi ou


dupliqu. Il occupe un espace
physique unique.

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet
Rgle fondamentale:

dans une base de donnes objet,

Vous pouvez insrer 17OOO objets de


mme valeur.
Pour le SGBDOO, il sagit de 17000
objets diffrents.

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet

Safir Rabat
Safir

tuple tuple Maroc 2

Set tuple 400

31

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet
Class C_Hotelt Class C_Ville
Type ( Type (
nom : string, nom : string,
adresse : tuple( ville : C_Ville, position : string, )
pays: string); photo : image)
Chambre: set(tuple ( Method
type_chambre : integer, Public afficher,
prix : integer, Public population : integer,
numero : integer)) End;
Method
public reserver(new : C_Hotel),
public afficher
End;
C_Hotel Safir=new C_Hotel;
Safirnom=safir;

Safirville=Rabat;
BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI
II.2 Aspect Orient-objet / Identit
d objet
Safir Hassan
HotelDeRemplacement

tuple tuple

Directeur Directeur

Untel

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet
Class C_Hotelt Class C_Personne
Type ( Type (
nom : string, nom : string,
Directeur : C_Personne; . )
HotelDeRemplacement : C_Hotel Method
.. .
) End;
Method
.
End;
C_Hotel Safir=new C_Hotel;
C_Hotel Hassan=new C_Hotel;
Safirnom=safir;
SafirHotelDeRemplacement=Hassan;
HassanHotelDeRemplacement=Safir;
SafirDirecteur:=Untel;
HassanDirecteur=Untel;
BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI
II.2 Aspect Orient-objet / Identit
d objet
Safir Hassan
HotelDeRemplacement

tuple tuple
Set

Directeur Directeur

Untel

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet
Class C_Hotelt Class C_Personne
Type ( Type (
nom : string, nom : string,
Directeur : C_Personne; HotelGrs : set(C_Hotel))
HotelDeRemplacement : C_Hotel Method
.. .
) End;
Method
.
End;
C_Hotel Safir=new C_Hotel; UntelHotelGrs+=Set(Safir);
C_Hotel Hassan=new C_Hotel; UntelHotelGrs+=Set(Hassan);
Safirnom=safir;
SafirHotelDeRemplacement=Hassan;
HassanHotelDeRemplacement=Safir;
SafirDirecteur=Untel;
HassanDirecteur=Untel;

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet
55

tuple Set
1000

2 Maroc tuple tuple

Hassan
Hassan
Rabat
Safir

Safir

tuple tuple Maroc 2


Safirville=Rabat;

Set tuple 400 Hassanville=Rabat;

31

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet

Epouse

X Y
Epoux Enfant
Enfant
Enfant
Enfant Pre
Mre Mre
Pre
Pre Mre
Z T
W

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet

Epouse
X Y
Epoux Enfant
Enfant
Enfant
Enfant Pre
Mre Mre
Pre
Pre Mre

Z W T

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet
Class C_Personne
Type (
nom : string,
Sexe : string;
Pere : C_Personne,
Mere : C-personne,
Conjoint : C_Personne,
Enfants : List(C_Personne)
)
Method
public reserver(new : C_Hotel),
public afficher
End;
BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI
II.2 Aspect Orient-objet / Identit
d objet
C_Personne Toto=New C_Personne; C_Personne Tata=New C_Personne;

Totonom=Toto; Totonom=Tata;
Totonom=M; Totonom=F;
TotoPere=Nil; TotoPere=Nil;
TotoMere=Nil; TotoMere=Nil;
Totoconjoint=Nil; Totoconjoint=Nil;
TotoEnfants=set(); TotoEnfants=set();

Totoconjoint=TATA;
Nom: Toto Nom: Tata
Tataconjoint=TOTO; Conjoint: Conjoint:

TOTO TATA
BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI
II.2 Aspect Orient-objet / Identit
d objet
9 mois aprs!!!!!! Nom: titi TITI
C_Personne TITI=New C_Personne; Sexe:M
TITInom=Titi; Pere:
TITIsexe=M;
Mere:
TITIPere=TOTO;
TITIMere=TATA;

TOTOEnfant=Set(TITI);
Nom: Toto Nom: Tata
Conjoint: Conjoint:
TATAEnfant=Set(TITI);
Enfant: set( ) Enfant: set( )

TOTO TATA
BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI
II.2 Aspect Orient-objet / Identit
d objet
Et on peut naviguer!!! Nom: titi TITI
Sexe:M
TITIPere Pere:
TITIPereConjoint Mere:
TITIMere
TITIMereconjoint;

TOTOEnfantTITI;
Nom: Toto Nom: Tata
TOTOEnfantTITIMere; Conjoint: Conjoint:
Enfant: set( ) Enfant: set( )
TATAEnfantTITIPere;
TOTO TATA
BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI
II.2 Aspect Orient-objet / Identit
d objet
Possibilit de modliser deux situations:
Toto a une fille nomme Titi
Tata a une fille nomme Titi

Toto Tata Toto Tata

Enfant Enfant Enfant Enfant

Titi
Titi Titi

Situation 1: il sagit de mme enfant Situation 2: il sagit dun enfant diffrent

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet
Possibilit de modliser deux situations:
Toto a une fille nomme Titi dune aventure antrieure
Tata a une fille nomme Titi dune aventure antrieure
Toto et Tata ont une fille en commun qui sappelle Titi

Toto Tata

Enfant Enfant Enfant

Titi Titi Titi

Sagit-il de mme enfant: TotoEnfant==tataEnfant; ??????????????

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Identit
d objet
Conclusion

Reprsentation directe du monde rel

Partage dobjets: conomise de lespace, vite les effets de bord


des mises jour

Gestion directe de lintgrit rfrentielle

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Dfinitions des SGBD OO

II.2. Aspect Orient Objet


Identit d objet
Objet complexe
Encapsulation
Type ou Classe
Hritage
Surcharge et rsolution
tardive
Compltude
Extensibilit

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Objets
complexes

Les objets complexes sont construits partir d objets atomiques


et des constructeurs

Les objets atomiques sont les entiers, les rels, les boolens, les
chanes de caractres.

Les constructeurs sont le n-uplet (tuple), l ensemble (set), la liste


(list) et le tableau (array, vecteur).

L utilisation des constructeurs est indpendante du type des


objets

L utilisation des constructeurs peut tre rcursive

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Objets
complexes
TUPLE : syntaxe

TUPLE( A1: type1,


A2 : type2,
..,
Ai : typei,
..,
An : typen
)

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Objets
complexes
TUPLE : exemple O2
Class Personne type
Tuple ( nom : string,
prenom : string,
photo : Bitmap,
date_naissance : Date,
adresse : tuple ( ville : Ville,
rue : string) )
Method
Public w_date_naissance(d: Date) : Personne,
Public r_date_naissance : Date,
Public age : integer,
Public w_adresse(d : tuple(ville : Ville, rue : String)) :
Personne,
Public r_adresse : tuple(ville : Ville, rue : String),
Private w_ville ( c : Ville),
;
End;
BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI
II.2 Aspect Orient-objet / Objets
complexes
TUPLE : exemple ObjectStore/JAVA

class Personne
{
float CIN;
String nom;
String prenom;
float dateNaiss;
String adr;
String sexe;
String situation;
Personne conjoint;
.
}

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Objets
complexes
LISTE : exemple

Une liste est une collection ordonne d'objets d'une mme


classe ou de valeurs du mme type.

Les lments d'une liste sont accessibles directement par


leur rang.

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Objets
complexes
LISTE : exemple O2 List( , , , )

List(integer); List(5,7,9);

List(C_Personne)

Class C_Personne
Type (
nom : string,
Sexe : string; For (m in TotoEnfants {
Pere : C_Personne, if (mnom=Titi) { existe=true; break; };
Mere : C-personne,
Conjoint : C_Personne,
Enfants : List(C_Personne)
)
BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI
II.2 Aspect Orient-objet / Objets
complexes
LISTE : exemple ObjectStore/JAVA
OSHashListList( , , , )
class Personne
{
float CIN;
String nom;
String prenom;
OSHashList enfants;
.
}

Iterator all ; //dclaration dun ittrateur pour parcourir une collection


For (all=this.enfants.iterator() ; all.hasNext() ;) //parcour de la collection
{age+=((Personne)all.next()).Getage() ; } ; //traitement

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Objets
complexes
Fatmi
Brini
Kador
Rabat

tuple tuple
Maroc

Leila
List
Boutaina
Fouad

Farida
Set
Rachid
BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI
Objets complexes/Reprsentation des
associations

Reprsentation des associations

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


Objets complexes/Reprsentation des
associations
Soient deux classes X et Y
Diffrentes types dassociations possibles

Une associations entre X et Y peut tre vue comme deux fonctions inverses f et g

f
X Y

g
x f(x) Y avec card(f(x)) 1

g(y) X avec card(g(y)) 1 y

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


Objets complexes/Reprsentation des
associations
Card(f(x))=1 fonction monovalue (associations 1-1)

Card(f(x)) >1 fonction multivalue (associations 1-n)

f f f
X g Y X g Y X g Y

Cas 1 Cas 2 Cas 3

Diffrents cas possibles

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


Objets complexes/Reprsentation des
associations
f
Cas 1 Xg Y
Implmentation

Class X type tuple (., f: Y, ) end;


Class Y type tuple (., g: X, ) end;

Exemple 1:

Un pays na quune ville qui est sa capitale et une ville ne se trouve que dans
Un seul pays!!!
Class Pays type tuple (., capitale : Ville, ) end;

Class Ville type tuple (., pays : Pays, ) end;

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


Objets complexes/Reprsentation des
associations
Exemple 2:

Une personne a un et un seul conjoint !!! Ici les deux classes X et Y sont les mmes

Class Personne type tuple (., conjoint : Personne, ) end;

Exemple 3:

Dans le cas particulier ou Y est classe prdfinie, il nest pas possible dappliquer le
cas gnral!!!!

Class Personne type tuple (., date_naissance : Date, ) end;

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


Objets complexes/Reprsentation des
associations
f
Cas 2 Xg Y
Implmentation 1:

Class X type tuple (., f: set(Y), ) end;


Class Y type tuple (., g: X, ) end;

Implmentation 2:

Class X type tuple (., f: list(Y), ) end;


Class Y type tuple (., g: X, ) end;

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


Objets complexes/Reprsentation des
associations
Exemple 1:
Class Pays type tuple (., villes : set(Ville), ) end; // pas dordre entre les villes
Class Ville type tuple (., pays : Pays, ) end;

Exemple 2:
Class Personne type tuple ( .,
enfants : list(Personne), // ordre entre les enfants
mre : Personne, //une seule mre
) end;

Exemple 3:
Y est une classe prdfinie

Class Personne type tuple (, prenoms : list(String), ) end;


//ordre entre les prnoms
BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI
Objets complexes/Reprsentation des
associations
f
Cas 3 Xg Y
Implmentation 1:

Class X type tuple (., f: set(Y), ) end;


Class Y type tuple (., g: set(X), ) end;

Implmentation 2:

Class X type tuple (., f: list(Y), ) end;


Class Y type tuple (., g: list(X), ) end;

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


Objets complexes/Reprsentation des
associations
Exemple 1:
Class Client type tuple (., pays_visits : list(Pays), ) end;
Class Pays type tuple (., visiteurs : list(Client), ) end;

Exemple 2:
Class Client type tuple ( .,
pays_visits : list( tuple ( anne : integer,
pays_visits : list (Pays),
) end;
Class Pays type tuple (., visiteurs : list(Client), ) end;

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Objets
complexes

Dpartement membres Employ


nom Nom
Adresse
Directeur

Emploi emploi
Nom
salaire

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Objets
complexes

Dpartement(Ndep, nom, directeur)


Employ(Nemploy, nom, adresse, Ndep, Nemploi)
Emploi(Nemploi, nom, salaire)

Quel est le salaire des directeurs des dpartements commerciaux??

Select emploi.salaire
From dpartement, employ, salaire
Where dpartement = commercial
and employ.Nemloy =dpartement.directeur
and emploi.Nemploi = Employ.Nemploi

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Objets
complexes
nom

Dpartement

tuple Directeur nom

Set Employ tuple adresse


nom

Objet Dpartement
Emploi tuple salaire
Objet Employ

Objet Emploi

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Objets
complexes
Class C_Dpartement Class C_Emploi
Type (nom : string, Type (nom : string,
directeur : C_Employ; salaire : real)
employes: list(C_employe)) Method
Mthod .. ..
End; End;
Name Les_dpartements=set(C_Dpartement)
Class C_Employ
Type (
nom : string, Quel est le salaire des directeurs des
adresse : string, dpartements commerciaux??
dpartement : C_Dpartement,
Select d->directeur->emploi->salaire
emploi : C_emploi)
From d in les_dpartements
Method
Where d->nom= commercial ;
End;

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Objets
complexes
Les_Dpartements

tuple tuple
Set Set Tech
Vente directeur directeur

Les_Employs

Farid tuple tuple

xxxx

Les_Emplois
Objet Dpartement
tuple
Objet Employ
com 100
Objet Emploi

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Objets
complexes

Reprsentation directe des objets du monde rel

vite les jointures pour recomposer les objets complexes partir


des tuples.

Une base de donnes objets est un ensemble de collections


d objets en rseaux

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Dfinitions des SGBD OO

II.2. Aspect Orient Objet


Identit d objet
Objet complexe
Encapsulation
Type ou Classe
Hritage
Surcharge et rsolution
tardive
Compltude
Extensibilit

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Encapsulation
Les utilisateurs des objets ne doivent rien savoir de l implmentation des objets

Seul l interface est visible

DONNEES

Interface METHODES

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Encapsulation
Intrt de l encapsulation

Modularit: l objet est une bote noire,

Lorsque l implmentation d un objet change, seule l application doit tre


re-compile

La gestion et l volution d une application sont donc moins chres

Inconvnient: l encapsulation interdit un accs gnrique aux donnes


(il faut utiliser toujours le mme langage.

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Encapsulation
La communication entre les objets se fait par envoi de message

Appliquer une mthode un objet c est envoyer un message l objet

Seul l objet sait comment ragir au message

Exemple:

Afficher(Kador)
Afficher(Kador->salaire)
Afficher(Kador->photo)

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Encapsulation
Vision langage de programmation

Un objet est une spcification et une implmentation

la spcification est l ensemble des oprations que l on peut appliquer l objet

l implmentation est la structure de donnes physiques reprsentant la mmoire


de l objet est les procdures qui ralisent les oprations

le programmeur de l objet voit la fois la structure de donnes et les oprations


l utilisateur, le client, ne voit que l interface (les oprations)

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Encapsulation
Vision base de donnes

Un objet encapsule la notion de donnes et de comportement

les donnes sont la mmoire de l objet

les oprations sont associes l objet et peuvent lui tre appliques

Si on veut accder aux donnes sans utiliser les oprations de l objet:


mettre les donnes dans l interface
associer des oprations lecture/criture chaque donne

Rgle: dans une BD les donnes doivent tre totalement encapsules

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Dfinitions des SGBD OO

II.2. Aspect Orient Objet


Identit d objet
Objet complexe
Encapsulation
Type ou Classe
Hritage
Surcharge et rsolution
tardive
Compltude
Extensibilit

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Type ou
classe
Question d ordre philosophique!!

Une classe est-elle un type?


Une classe est-elle un schma?
Une classe est-elle un objet?
Comment voit-on la classe au niveau du:
langage de programmation
Interface
Systme

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Type ou
classe
Objet ?
Objet individuel (identificateur, valeur)
Regroupement d objets de mme type

Une classe d objets est l ensemble des instances d un type d objets

Par rapport au vocabulaire Bases de Donnes

TYPE = SCHEMA, STRUCTURE, MODELE,


CLASSE =ENSEMBLE, RELATION,...

Remarque: le vocabulaire est changeant!!!!

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Type ou
classe

Un type/classe dcrit les proprits communes d un ensemble d objets

proprits structurelles (parties donnes)


proprits de comportements (partie mthodes)

Un type/classe a donc deux parties:

spcification (ensemble de mthodes)


implmentation (structure de donnes et implmentation des mthodes)

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Type ou
classe
Class C_Employ
Class C_Dpartement
Type (
Type (nom : string,
nom : string,
directeur : C_Employ)
adresse : string,
Method
emploi : C_emploi)
public embaucher(new : C_Employ),
photo : image,
public afficher
Method
End;
Public augmente_salaire(montant: real):C_Employ,
Public afficher,
Public salaire: real,
End;

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Type ou
classe

La seule faon d oprer sur un objet de la classe C est de lui appliquer l une des
mthodes de la classe C

Une classe peut avoir des mthodes prives et des mthodes publiques

Une mthode prive n est applicable que par des objets de la classe C

Une mthode publique est applicable par n importe quel objet (client)

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Type ou
classe
Modlisation des liens entre classes

Composition,

Association (Relation): set, list, vecteur, array

Hritage simple ou multiple

La valeur d un objet rfrenc dans un autre objet est soit:

NUL
OID de l objet rfrenc

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Type ou
classe

Abstraction des informations et de leur reprsentation

mode de description de la structure des donnes (schma de la base de donnes)

mcanisme de vrification de la justesse des programmes

outil d optimisation du code et de la reprsentation des donnes

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Dfinitions des SGBD OO

II.2. Aspect Orient Objet


Identit d objet
Objet complexe
Encapsulation
Type ou Classe
Hritage
Surcharge et rsolution
tardive
Compltude
Extensibilit

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Hritage

ETRE VIVANT

HUMAIN ANIMAL

HOMME FEMME DOMESTIQUE SAUVAGE

HERITAGE = DONNEES + METHODES

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Dfinitions des SGBD OO

II.2. Aspect Orient Objet


Identit d objet
Objet complexe
Encapsulation
Type ou Classe
Hritage
Surcharge et rsolution
tardive
Compltude
Extensibilit

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Surcharge et
rsolution tardive
Exemple

Trois types/classes: Carte, Htel, Formulaire


Trois mthode d affichage: AfficherCarte, AfficherHtel, et AfficherFormulaire

Utilisation:

for each x in X do
case of type(x)
Carte : AfficherCarte(x);
Htel : AfficherHtel(x);
Formulaire : AfficherFormulaire (x);
end_case;

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Surcharge et
rsolution tardive
Solution
ObjetAffichable

Carte Htel Formulaire

Afficher Afficher Afficher


( P1) ( P2) ( P3)

Utilisation:

for each x in X do afficher(x);

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Surcharge et
rsolution tardive
TECHNIQUE:

HERITAGE

+
TYPAGE DYNAMIQUE OU RESOLTUTION TRADIVE

Attention: tous les langages ne permettent le typage dynamique

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Dfinitions des SGBD OO

II.2. Aspect Orient Objet


Identit d objet
Objet complexe
Encapsulation
Type ou Classe
Hritage
Surcharge et rsolution
tardive
Compltude
Extensibilit

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Compltude
Toute application doit pouvoir s crire sans utiliser un langage de programmation

Ceci est vrai pour tous les langages de programmation: ils sont complets dans le
sens de la machine de Turing

SQL n est complet dans le sens de la machine de Turing

La compltude permet d viter le dysfonctionnement entre le langage de requte


et le langage de dveloppement d applications

OQL s intgre parfaitement dans un langage de programmation OO

OQL n est pas ncessaire dans un SGBDOO

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Dfinitions des SGBD OO

II.2. Aspect Orient Objet


Identit d objet
Objet complexe
Encapsulation
Type ou Classe
Hritage
Surcharge et rsolution
tardive
Compltude
Extensibilit

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II.2 Aspect Orient-objet / Extensibilit
Le systme est livr avec un ensemble de classes et de types prdfinis. Ces
classes peuvent tre:
gnriques
spcialises pour un domaine

Le programmeur peut tendre cet ensemble, soit:


soit en en dfinissant de nouvelles
soit en en spcialisant des existantes

Pour le programmeur il n y a pas de diffrence entre les classes prdfinis et les


siennes

Perspective: composants logiciels

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Dfinitions des SGBD OO/Rgles
facultatives
II.3. Les rgles facultatives
Hritage multiple
Gnricit
Vrification de type
Distribution
Transaction de conception
Versions

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Rgles facultatives/ Hritage multiple
Personne

Employ tudiant

Chercheur

Doctorant

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Rgles facultatives/Gnricit
II.3. Les rgles facultatives
Hritage multiple
Gnricit
Vrification de type
Distribution
Transaction de conception
Versions

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Rgles facultatives/Gnricit

Polymorphisme de type T: Abstraite

Exemple: Pile dentiers et de rels

P: Pile dlments de type T


Entier Rel Chane
Empiler->P(X:T)
Dpiler->P(X:T)
Afficher->P;

Principe et technique:

HERITAGE + SURDEFINITION + TYPAGE DYNAMIQUE

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Rgles facultatives/Vrification de
type
II.3. Les rgles facultatives
Hritage multiple
Gnricit
Vrification de type
Distribution
Transaction de conception
Versions

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Rgles facultatives/ Vrification de
type
Vrification de type: vrifier que lon fait les bonnes oprations sue les bons objets
Mohamed + 265
HotelSafir->parler

Infrence de type: dduire le type dune expression


Longueur ( concat ( toto + tata ) ) + 45

Les erreurs de typage:


mauvaise affectation dune valeur une variable ou application dune
mauvaise mthode un objet.
peuvent tre dtectes la compilation ou lexcution

Typage sr: si le programme passe la compilation alors pas derreur dexcution

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Rgles facultatives/ Vrification de
type

Typage fort ou sr:

Augmente la fiabilit des programmes


Augmente la productivit

Typage faible ou absence de typage

Plus de souplesse
Permet de manipuler des types lexcution

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Rgles facultatives/Distribution
II.3. Les rgles facultatives
Les objets de la mme base de
Hritage multiple donnes sont distribus
Gnricit (rpartis) sur plusieurs sites ou
machines
Vrification de type
Distribution
Transaction de conception Exemple:
Versions le SGBDOO Versant

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Rgles facultatives/Transaction de
conception
II.3. Les rgles facultatives
Transactions de conception ou
Hritage multiple Embots
Gnricit
Transactions longues
Vrification de type
Distribution A1
Transaction de conception
Versions A11 A2

A111 A112
Transaction imbrique typique

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Rgles facultatives/Version
II.3. Les rgles facultatives
Hritage multiple
Gnricit
Vrification de type
Distribution
Transaction de conception
Versions

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Rgles facultatives/Version
Un objet et ses versions V.1
historiques

Versions drives ou alternatives


V.2
Rvisions, Configurations

Changement de valeurs,
V.3a V.3b
Changement de type/classe,

Versions dinstances et de schma


V.4
Problme complexes si objets
Complexe

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Rgles ouvertes/Uniformit du
modle de calcul
II.4. Les rgles ouvertes Langage: traite-on une classe
Modle de calcul Comme un objet?
Modle de persistance
Uniformit Interface: voit-on une classe
comme un objet?
Nommage

Systme: reprsente-t-on une


classe comme un objet?

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Rgles ouvertes/Modle de
persistance
II.4. Les rgles ouvertes
Modle de calcul
Modle de persistance
Uniformit
Nommage

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Rgles ouvertes/Modle de
persistance
Rappel Qualits de la persistance

Dans les LPO: les objets sont Pour le mme type on peut avoir des
Temporaires tant quils ne sont Instances persistantes ou pas
pas crits explicitement dans des
fichiers Les oprations sappliquent aux
objets persistants ou temporaires
Dans un SGBD
Les donnes persistent Le statut persistant/temporaire peut
automatiquement tre chang

Un objet persistant ne peut


rfrencer un objet temporaire

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Rgles ouvertes/Modle de
persistance
Techniques de persistance Persistance de classe

Nouvelles approches (SGBDOO) Une classe dclare persistante alors


Persistance la demande toutes ses instances sont persistantes
Persistance indpendante
du type Les objets temporaires doivent tre
explicitement supprims
Diffrents modle de persistance
Au niveau de lobjet ou de la Lintgrit rfrentielle nest pas
Classe Garantie
Statique ou dynamique
Exemple
Create persistent class Personne
Type tuple( nom : string,
voiture : Vhicule)

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Rgles ouvertes/Modle de
persistance
Persistance de lobjet Personne perso = new Personne;
Vhicule BMW = new Vhicule;
La sauvegarde est explicite par
commande ou mthode Perso->nom=Farid ;

Lintgrit rfrentielle nest pas Perso->voiture=BMW;


garantie
Put_object(perso);, //persistant
Exemple (O2)
class Personne
Farid
Type tuple( nom : string,
Voiture BMW
voiture : Vhicule)

persistance temporaire

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Rgles ouvertes/Modle de
persistance
Persistance de lobjet: OMG Personne perso = new persistent Personne;
Vhicule BMW = new Vhicule;
Lobjet est cre comme persistant
ou temporaire Perso->nom=Farid ;

Pas dintgrit rfrentielle Perso->voiture=BMW;

Exemple (OMG)
class Personne
Type tuple( nom : string,
Farid
voiture : Vhicule)
Voiture BMW

persistance temporaire

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


II. Rgles ouvertes/Modle de
persistance
Persistance par racine de Personne perso = new Personne;
persistance Vhicule BMW = new Vhicule;
Perso->nom=Farid ;
Tout objet connect directement ou Perso->voiture=BMW;
par transitivit une racine de
persistance est persistant If ( newperso (perso->nom))
les_persos+=set(perso)
La racine de persistance est cre Else (erreur: existe dj);
par nommage
Racine de persistance
Exemple (O2)
class Personne Farid
Type tuple( nom : string, Voiture BMW
voiture : Vhicule)
Name les_persos=set(personne), persistance persistance

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


CONCLUSION
SGBDOO:
Capture aise de la smantique
Le dveloppeur est trs sollicit

SGBDR
Capture faiblement la smantique
Facilit de mise en uvre
Le dveloppeur nest pas trs sollicit

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


CONCLUSION
Vous connaissez les bases de donnes?
Vous connaissez la programmation objet?

Alors

Vous serez faire les bases de donnes objet!!!!

BDOO=programmation objet + persistance

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI


ANNEXE

BASES DE DONNEES ORINTEES OBJETS Rachid OULAD HAJ THAMI

Vous aimerez peut-être aussi