Vous êtes sur la page 1sur 52

BDDA.

Chapitre III

Bases de donnés Orientées


objets BDOO
Dr BOUADEM NASSIMA
M1 RN/ASR INFORMATIQUE
2022-2023
CHAPITRE III: BDOO

 Introduction
 BDOO
 SGBDOO
 Modélisation de BDOO par ODMG
Introduction
BDOO

[1]
SGBDO

[2]

[2] [3]
SGBDO

 La persistance des données: un objet continue d’exister après que son


créateur ait cessé d’exister ou que l’emplacement où l’objet a été crée
change,
 Langage de manipulation déclaratif: un langage de manipulation de
données LMD permet d’interroger les objets d’une façon déclarative,
 Optimisation par le SGBD: le SGBDOO permet d’optimiser ses requêtes,
 Intégrité des données: les objets persistants respectent les contraintes
d’intégrité,
 Gestion de transactions: le SGBDOO assure le partage, la gestion de
concurrence et de transaction d’objets avec toute confidentialité, fiabilité
et sécurité
Les éléments d’une BDOO

 OBJET: structure principale d’une BDOO, composé de:


 Identificateur unique OID (Object identifier)
 Ensemble d’attributs: décrivant l’état de l’objet
 Une collection des méthodes: formant le comportement d’un objet
Objet atomique

 Défini par des types littéraux atomiques


 Un littéral est une donnée qui na pas d’identificateur d’objet,
 Les littéraux atomiques sont: Long, Short, Float, Double, Char, String,
Boolean, Enum (énumération)
Objet collection

 Représente des attributs multivalués tels que:


 Set<t>, Bag<t>, List<t>, Array<t>, Dictionary<t,k> avec t,k sont des types
d’objets ou des types littéraux
Objet structrué

 Un objet qui peut utiliser des types littéraux structurés tels que:
 Date, Interval, Time ou une série d’attributs définie par le constructeur
‘’STRUCT’’ comme suit:
Objet structuré

 On peux créer un objet structuré avec TYPEDEF


Exemple
Classe

 Un ensemble d’objets ayant les mêmes états et comportements forme


une classe d’objets, la classe permet de créer des objets appelés souvent
instances

 La création de classe d’objets se fait par la commande suivante:


Exemple
Exemple
Exemple
L’héritage
Exemple
Les constructeurs et les méthodes

 Chaque classe possède au moins une méthode appelée constructeur


permettant de créer des instances des classes,
 Une méthode peut être une procedure ou une fonction
Corps d’une méthode

 Le corps d’une méthode peut contenir des instructions de LPOO, des


requêtes, invocation de méthodes sur d’autres objets
Exemple

 La méthode NouveauChercheur de la classe ‘’Chercheur’’ permet


d’ajouter un nouveau chercheur, VOID NouveauChercheur (Chercheur
C)
 On la définit comme suit:
Polymorphisme

 Permet de surcharger un nom de méthode dans le sens où plusieurs


méthodes ayant le même nom mais de corps et des types d’arguments
différents [4]
L’association ‘’Relationship’’

 Relation binaire nommée sans attribut, avec de cardinalité qui peut être
(1:1), (1:N), (N:M) [5], la définition de relationship se fait comme suit:
Exemple: relationship entre classes
Exemple (suite)
Le lien de composition
Exemple
 Le représentation textuelle du diagramme précédent:
Modélisation de BDOO par ODMG

L’OMG (Object Management Group) propose un standard permettant la portabilité des schémas de base de
données et des programmes développés sur des SGBDOO appelé ODMG (Object Database Management
Group) [5].
L’ODMG dispose un langage graphique pour modéliser les bases de données orientées objet dont:
les classes sont représentées par des rectangles associés avec le nom de collection et la clé de la classe.
Les attributs et les méthodes sont attachés dans les classes par des tirés
Modélisation de BDOO par ODMG
Langage de définition et de
manipulation des BDDOO

 La norme ODMG dispose des langages de définition et de manipulation


des données, les plus importants sont: ODL et OQL
 ODL (Object Definition Language)
 Permet de crèer un schéma ODL décrivant la BDOO par la création des
classes, des interfaces, des objets et l’implémentation des méthodes.
 Permet aussi de compiler le schéma d’objets et de générer les données de
la BDOO
OQL (Object Query Language)

 Ets un langage déclaratif de requêtes proche de SQL mais non compatible


avec SQL[6].
 fournit des primitives de haut niveau qui manipulent les collections et les
types structurés.
 Permet un accès facile au shéma ODL et aux objets via un langage
interactif ou par par integration dans l’un des langages de l’ODMGqui sont:
Java, c++, smalltalk
 Il supportent des opérations d’insertion, de suppression et de mise à jour
via des méthodes définis sur les objets
OQL

 Exemple: on crée un objet persistant nommé de la classe Chercheur :

Name SERIDI= Chercheur; // déclaration d’une variable permanente nommée SERIDI


SERIDI =Chercheur (ID : 12754324, Nom : ‘SERIDI’, Prenom :’Hamid’, Affiliation :
STRUCT(Depart :’Informatique’, Univ :’08 mai 45 Guela’, Lab : ‘LabSTIC Guelma’,
Pays :’Algerie’, BP :401), Rédiger : SET(Article(…..),Article(….))). ;// création d’un objet persistant
OQL

 On peut créer une variable structurée comme affiliation:

Affiliation_Seridi= STRUCT(Depart :’Informatique’, Univ :’08 mai 45 Guela’,


Lab : ‘LabSTIC Guelma’, Pays :’Algerie’, BP :401) ;
OQL

 L’attribut ‘’Rédiger’’ est une relation avec plusieurs objets de type ‘’Article’’
 La définition des valeurs de cet attribut se fait par: (le constructeur)SET, et le
constructeur de la classe référencée Article,
 L’OQL permet d’accéder directement aux données d’une BDOO à partir d’un
objet nommé ou collection d’objets:
 Exemple: SERIDI.Nom, SERIDI.Prenom
 On peut accéder aux attributs structurés on utilisant la notation pointée:
SERIDI.Affiliation.Lab
 L’OQL fournit un appelle direct aux méthodes à travers l’objet nommé, par
exemple: SERIDI.Age()
 OQL permet d’afficher tous les objets d’une collections via son nom, exemple
afficher tous les chercheurs par le nom de la collection: LesChercheurs
OQL

 OQL est comme un langage de programmation OO: posséde des


bibliothèques des classes et méthodes qui se diffrent d’un SGBD à un autre
 Exemple de bibliothèques: les méthodes remove_element(e),
insert_element(e), insert_first_element(e)pour insérer un élément dans un
attribut de type LIST
OQL

 La notation pointée est interdite aux attributs d’une relation, l’accès se fait
via des requêtes OQL.
 Exemple: SERIDI.Rediger.titre n’est pas correcte ça doit être une requête
 OQL peut contenir:
 Des opérateurs ensemblistes: union, intersect, except
 Quantificateurs: for all, exists
 Les fonctions d’agrégation: count(collection), sum(collection), min(collection),
max(collection, min(collection), avg (collection)
 Autres: order by, group, having, define
Requêtes OQL
 Pour accéder aux attributs de type structuré, on utilise la notation pointé:
 Exemple: afficher le nom du laboratoire où le chercheur Hamid SERIDI est
membre:
SELECT C.AFFILIATION.LAB
FROM C IN LesChercheurs
WHERE C.nom=‘SERIDI’ et C.prenom=‘HAMID’
= litéral <String>
 La notation pointillé est interdite pour les attributs de relations: on utilise
une jointure dans la clause FROM,
 Exemple: afficher les titres de sarticles du chercheur Codd Philipe:
SELECT A.titre
FROM C IN LesChercheurs, A IN C.Rédiger
WHERE C.nom=‘CODD’ et C.prenom=‘PHILIP’
= litéral SET <String>
OQL: les requêtes

 On peux nommer une requête on utilisant la commande DEFINE comme


suit:
Exemple

 Nommer une requête qui retourne les chercheurs algériens:

 Sachant qu’on peux utiliser l’opérateur IN dans la clause WHERE (comme


dans SQL)
Les quantificateurs logiques

 On peut utiliser dans une requête OQL les quantificateurs logiques qui
sont:
 EXISTS …… IN ……
 FOR ALL….. IN ……
 Ces opérateurs sont utilisés dans une clause conditionnelle telle que
WHERE
Exemple

 Afficher les titres des articles ayant au moins une section nommée Résumé:
Exemple

 Afficher les chercheurs ayant perçu une prime supérieur à 50000DA


Fonction GROUP BY

 Permet de subdiviser le résultat de requête en groupes appelés PARTITION


selon un certain nombre de critères,
 Le type de résultat d’une requête avec GROUP BY est toujours SET STRUCT
(……)
 Le mot clé PARTITION va être utilisé comme une collection d’objet et il
peut être utilisé dans une clause FROM d’une sous-requête,
EXEMPLE

 Afficher le nom et le nombre de chercheurs par département

 Le résultat
Références

1.
1.

2.
3.
4.
5.
6.
7.

8.

Vous aimerez peut-être aussi