Vous êtes sur la page 1sur 59

Bases de données avancées

Khalid Nafil
k.nafil@um5s.net.ma
Année universitaire : 2008/09

05/28/2009 Modèle objet 1


Historique de développement
des bases de données (Sgbd)
 Première génération : 1960, modèle réseau
ou hiérarchique (Total, IDMS, IDS 2, IMS 2)
 Deuxième génération : 1970, modèle
relationnel (PostgreSql, Mysql, Oracle,
Informix, Sybase, DB2, Ingres)
 Troisième génération : 1980, modèle
relationnel objet et le modèle objet
 Quatrième génération : support d’Internet,
du Web, des objets multimédias, aide à la
prise de décisions, data mining

05/28/2009 Modèle objet 2


Pourquoi une troisième
génération
 Apparution de nouvelles applications :
CAO, PAO, GL, SIG
 Ce qui induit de nouveaux besoins
 Coût des mémoires secondaires en
baisse
 Le modèle relationnel est incapable de
répondre aux nouvelles exigences

05/28/2009 Modèle objet 3


Limites du modèle relationnel
 Le modèle de données est trop simplifié
 Difficulté de représenter les entités
complexes du monde réel
 Ensemble limité de types de base
 Limitation de la première forme normale
 Incompatibilité de SQL avec les LGP
 D’où besoin de développer un nouveau
modèle

05/28/2009 Modèle objet 4


Besoins des nouvelles
applications
 Puissance de structuration
 Définition de nouveaux types
 Intégration d'un LPG dans un SGBD
 Méthodes de stockage, d'accès
(spatiaux)
 Gestion des transactions (longue)

05/28/2009 Modèle objet 5


Le modèle orienté objet
 Cherche à répondre à ces nouveaux
besoins
 Né de la convergence de deux
domaines :
 Les bases de données
 Les langages de programmation OO

05/28/2009 Modèle objet 6


La programmation
procédurale
 Style de la programmation à la Pascal
 Dichotomie données et traitements
 Conception dirigée par les traitements
 Données = variables typées
 Opérations = procédures paramétrées

05/28/2009 Modèle objet 7


Problèmes liés à la
programmation procédurale
 Comment partager (réutiliser) les structures
de données et les opérations entre les
applications ?
 La cohérence globale des données entre les
applications est-elle assurée ?
 Le sous-programme est-il un élément
suffisant de modularité?
 Peut-on facilement maintenir et/ou étendre de
telles applications ?

05/28/2009 Modèle objet 8


La programmation par objets
 Regrouper les données et les
traitements
 Dirigée par les données

05/28/2009 Modèle objet 9


SGBD OO
 SGBD  LOO
 Persistance  Identité d’objet
 Méthodes de stockage  Encapsulation
 Concurrence et fiabilité  Classe/Type
 Langages de requêtes  Polymorphisme
 Contraintes d’intégrité  Héritage

05/28/2009 Modèle objet 10


Notion d’objet
 Un objet est une abstraction d’une
entité du monde réel
 Un objet est défini par :
 Une structure = ensemble d’attributs
valués
 Un comportement = ensemble d’opérations
(méthodes)

05/28/2009 Modèle objet 11


Exemple d’objet
 Un objet E définissant l’entité employé
peut être représenté ainsi :
E (nom=ali, prénom=hassan,
salaire=10000, afficher(), saisir(),
augmenterSalaire())

05/28/2009 Modèle objet 12


Identité d’objet
 Tout objet possède un identifiant
unique et invariant (OID) qui est
indépendant de sa valeur
 Opérateur d'identité d'objets : ==

deux objets o1 et o2 sont identiques


s'ils ont le même OID

05/28/2009 Modèle objet 13


Opérateur d’égalité d’objets
 Soient o1 et o2 deux objets
 o1= o2 ssi tous les attributs de o1 et o2
ont la même valeur, que ce soient des
attributs valeur ou des attributs
référence

05/28/2009 Modèle objet 14


OID : Modélisation
 Situation 1 : Ali a un fils qui s’appelle
Hassan, Zineb a un fils qui s’appelle
Hassan (le même fils)
 Situation 2 : Ali a un fils qui s’appelle
Hassan, Zineb a un fils qui s’appelle
Hassan (un fils différent)

05/28/2009 Modèle objet 15


Encapsulation des objets
 Les modèles à objets permettent
d’encapsuler les structures des objets
par des opérations (méthodes)
 Le principe d’encapsulation cache les
structures de données et le code des
méthodes en ne laissant visible que les
opérations publiques

05/28/2009 Modèle objet 16


Intérêt de la notion d’objet
 Bonne abstraction des entités du monde réel
 Structure + comportement
 Sécurité des manipulations
 mécanisme d’encapsulation
 Partage des informations
 Concept d’OID
 Modélisation des données complexes
 Graphe de composition des objets

05/28/2009 Modèle objet 17


Interface d’objet
 Ensemble des signatures des
opérations qui sont applicables depuis
l’extérieur sur un objet
 Les opérations invisibles à l’extérieur de
l’objet sont appelés opérations privées

05/28/2009 Modèle objet 18


Le concept de CLASSE
 Définition « usuelle »
 Ensemble des objets possédant même structure
et même comportement
 Exemple : classe Employé
 Les trois aspects d'une classe :
 Description de la structure et du comportement
des objets
==> Intention de la classe c-à-d un Type
 Modèle à partir duquel les objets sont créés
==> mécanisme d'Instanciation
 Ensemble des objets créés
==> Extension de la classe

05/28/2009 Modèle objet 19


Mécanisme d’instanciation
 Un objet est une instance de classe
 Un objet est créé à l'aide d'un opérateur new
automatiquement associé à la classe
 Exemple :
 e : Employé;
 e := new Employé;
 Lien d’instanciation entre e et Employé

05/28/2009 Modèle objet 20


Mécanisme d’instanciation
 Chaque objet de la classe Employé
possède une copie de la structure
décrite dans la classe

 Tous les objets de la classe Employé se


partagent les opérations décrites dans
la classe

05/28/2009 Modèle objet 21


Exemple de classe
classe Employé
publique
Saisie;
Afficher;
AugmenterSalaire (Pourcen : Entier);
privée
attributs
Nom : Chaine;
Adr : Chaine;
Age : Entier;
Sal : Reel;
méthodes
methode AugmenterSalaire (Pourcen : Entier)
Sal := Sal + ( (Sal/100) * Pourcen) );
methode Saisie ... ;
methode Afficher ...;
fclasse Employé;
05/28/2009 Modèle objet 22
Organisation des classes
 Liens de spécialisation/généralisation
 Employé est une généralisation de
Ingénieur et Commercial
 Ingénieur et Commercial sont des
spécialisations de Employé
 un Ingénieur Commercial est à la fois
Ingénieur et Commercial

05/28/2009 Modèle objet 23


Graphe des classes

05/28/2009 Modèle objet 24


Le mécanisme d’héritage
 Terminologie
 Employé est la super-classe de Ingénieur
 Commercial est une sous-classe de Employé
 Héritage simple par spécialisation
 Une sous-classe hérite des propriétés de sa
super-classe (attributs + opérations)
 Une sous-classe peut avoir des propriétés
supplémentaires qui lui sont propres
 Autres formes d'héritage
 Héritage multiple
 Héritage par généralisation

05/28/2009 Modèle objet 25


Redéfinition, Surcharge et
Polymorphisme
 Redéfinition
 Spécification d’une méthode existante dans une
super-classe au niveau d’une sous-classe, avec
une implémentation différente
 Surcharge
 Possibilité de définir plusieurs codes pour une
même opération d’une classe
 Polymorphisme
 Faculté pour une opération d’avoir différentes
signatures avec un code spécifique attaché à
chaque signature
05/28/2009 Modèle objet 26
Intérêt des notions de classe
et d’héritage
 Modularité
 une classe = un module
 Réutilisation
 Attributs et opérations d'une classe héritées dans
ses sous classes
 Eviter la redondance de code
 Construction d'une nouvelle classe de manière
incrémentale
 Modélisation
 Organisation des classes via les liens d’héritage
 Graphe des classes = graphe d’héritage

05/28/2009 Modèle objet 27


Les Collections d’objets
 Container typé désigné par un nom,
contenant des éléments multiples
organisés selon une structure
particulière, auxquels on accède par
des opérations spécifiques au type du
container

05/28/2009 Modèle objet 28


Principales collections
 L’ensemble (Set) : définit des
collections non ordonnées sans doubles
 Le sac (Bag) : définit des collections
non ordonnées avec doubles
 La liste (List) : définit des collections
ordonnées avec doubles
 Le tableau (Array) : définit des
collections ordonnées et indexées

05/28/2009 Modèle objet 29


Collection

05/28/2009 Modèle objet 30


Collections imbriquées
class Phrase {
List <Array <char>> Sequence; };
class Paragraphe {
Phrase Theme;
List <Phrase> Details;
Phrase Conclusion; };
class Texte {
List <Paragraphe*> Contenu; };

05/28/2009 Modèle objet 31


Communication par envoi de
messages
 Les objets communiquent entre eux par
des envois de messages
 Message :
 le nom de l'objet récepteur
 le nom d'une opération connue par l'objet
 les arguments (éventuels) de l'opération

05/28/2009 Modèle objet 32


Schéma de bases de données
à objets
 C’est une description d’une base de
données à objets particulière incluant
les définitions de classes, d’attributs et
d’opérations ainsi que les liens entre
classes

05/28/2009 Modèle objet 33


Exemple de schéma de BOO

05/28/2009 Modèle objet 34


Illustration C++ du schéma
Class Etudiant {
Class caricature {
Cercle* tete, oeild, oeilg;
Figure* nez, bouche;
Void sourire();
Void pleurer();
Graphic Dessiner (int echelle); }
Class Cercle {
Point Centre;
Double Rayon; }
Class Figure {
List
05/28/2009 <Point> Forme; }Modèle objet 35
Le Manifesto de 1989 (13
règles d’or)
OO (1-8), BD (9-13) :
1. objets complexes
2. identité d'objets
3. encapsulation des objets
4. types ou classes
5. héritage via la hiérarchie de classes ou de types
6. surcharge, redéfinition et liaison dynamique
7. langage de programmation
8. extensibilité
9. persistance
10. gestion de la MS
11. gestion de la concurrence
12. reprise après panne
13. langage de requêtes
05/28/2009 Modèle objet 36
Le Manifesto (suite)
 Aspects Optionnels
 héritage multiple
 contrôle de types et inférence de types
 Répartition
 transactions longues et/ou imbriquées
 gestion des versions
 Aspects ouverts
 interfaces avec les LPG
 structures de données
 types génériques
 "tout objet" ou pas
 Aspects non traités
 vues et données dérivées
 Administration de la BD
 contraintes d'intégrité
 évolution de schéma
05/28/2009 Modèle objet 37
Définition de la persistance
 Un objet est persistant ssi :
 Stocké dans la base, sa durée de vie est
supérieure au programme qui le crée
 Un objet est transient ssi :
 Restant en mémoire, sa durée de vie ne
dépasse pas celle du programme qui le
crée

05/28/2009 Modèle objet 38


Gestion de la persistance
 En environnement de programmation :
constructeur et destructeur
 En BDOO, nécessité d’assurer la
persistance des objets sur disque pour
pouvoir les retrouver ultérieurement

05/28/2009 Modèle objet 39


Gestion de la persistance
 Solution :
 Donner un nom à chaque objet persistant
 Fournir une fonction permettant de faire persister
un objet préalablement construit en mémoire
 Signature de la fonction peut être : Oid=Persist
(<nom>,<ref>)
 Ref est la référence en mémoire de l’objet
 Oid est l’identifiant attribué à l’objet dans la base

05/28/2009 Modèle objet 40


Persistance par héritage
 Cache au programmeur les mouvements
d’objets entre la base et la mémoire
 Profiter de l’héritage pour assurer la
persistance automatiquement
 Le système offre une classe racine des
objets persistants, nommée Pobject

05/28/2009 Modèle objet 41


Persistance par héritage

05/28/2009 Modèle objet 42


Persistance par héritage
 La classe Pobjet intègre des appels
aux fonctions persist et unpersist
 Tout objet d’une classe qui hérite de
Pobjet est persistant

05/28/2009 Modèle objet 43


Persistance par référence
 Tout objet peut être une racine de
persistance à condition d’être déclaré
comme tel
 Tout objet pointé par un objet persistant
est persistant

05/28/2009 Modèle objet 44


Exemple de déclaration
 employe * emp=new persistant employe(“toto”)
 Persistant int x; //permet de rendre x persistant

05/28/2009 Modèle objet 45


Persistance par référence
(catalogue)

05/28/2009 Modèle objet 46


Algèbre pour objets
complexes
 Les algèbres pour objets complexes
résultent d’extensions de l’algèbre
relationnelle aux objets complexes

05/28/2009 Modèle objet 47


Expressions de chemins et de
méthodes
 Besoin d’appliquer des opérations sur
les objets
 Besoin de référencer les identifiants
 Deux types d’expressions valuables
 Expression de chemin
 Expression de méthodes

05/28/2009 Modèle objet 48


Expression de chemin
 C’est une séquence d’attributs de la
forme A1.A2…An tel que :
 Chaque attribut Ai de la classe Ci référence
un objet de la classe Ci+1 dont le suivant
est membre, à l’exception du dernier
 Exemple : Represente.Tete.centre.x est
une expression de chemins

05/28/2009 Modèle objet 49


Expression de méthodes
 C’est une séquence d’appels de
méthodes de la forme M1.M2…Mn avec
d’éventuels paramètres pour certaines
méthodes Mi de la forme Mi(P1,P2,
…,Pj)

05/28/2009 Modèle objet 50


Groupage et Dégroupage des
Relations

05/28/2009 Modèle objet 51


Groupage
 Opération qui consiste à transformer
une relation en créant pour chaque
valeur des attributs de groupement un
ensemble de valeurs des attributs
groupés

05/28/2009 Modèle objet 52


Groupage : exemple

Pièce Type Numéro


A 1
A 7
B 3
B 8
C 2

05/28/2009 Modèle objet 53


Groupage : exemple

Pièce Type {Numéro}


A {1,7}
B {3,8}
C 2

05/28/2009 Modèle objet 54


Dégroupage
 Opération qui consiste à transformer
une relation à attributs groupés en
relation plate, en créant pour cela un
tuple pour chaque valeur du groupe en
dupliquant les valeurs des autres
attributs

05/28/2009 Modèle objet 55


Algèbre d’Encore
 Proche de l’algèbre relationnelle
 Supporte les types abstraits et les
identifiants d’objets
 Les opérations accèdent des collections
typées d’objets en invoquant l’interface
publique du type

05/28/2009 Modèle objet 56


Opérations de l’algèbre
d’Encore
 Sélection d’objets
 Image d’une collection
 Projetion d’une collection
 Groupage et dégroupage d’une
collection
 Aplatissage d’une collection
 Jointure de collections

05/28/2009 Modèle objet 57


Algèbre Lora
 Opérations de recherche
 Opérations ensemblistes
 Opérations de mise à jour
 Opérations de groupe
 Arbres d’opérations algébriques

05/28/2009 Modèle objet 58


Conclusion

05/28/2009 Modèle objet 59