Title: Syst
1Systèmes de Gestion de Bases de Données Orientés
Objet
- Philippe SALVAN
- psalvan_at_supralog.com
2Plan du Cours
- Généralités
- Historique
- Aspects Bases de Données Aspects Orientés Objet
- Architecture
- Aspects Orientés Objets
- Objet Complexe, Encapsulation, Classes
- Identité d'Objet
- Héritage
- Surcharge, Lien retardé
- Valeurs, Types
- Aspects Base de Données
- Modèle de persistance
- Transactions
- Interrogations
- Optimisations
- ODMG 3.0
3(No Transcript)
4Généralités - Historique
- Besoin dorganiser de manière cohérente des
données permanentes et accessibles par des
utilisateurs concurrents - Gestion de Fichiers ? SGBD Navigationnels ?
SGBD Relationnels ? SGBD Orientés Objets
5Généralités - Historique
6Généralités - Historique
- Limites des SGBDR
- le modèle de données est très pauvre
- la normalisation conduit à un éclatement des
données - intégration de SQL à un langage de
programmation - ensembliste vs procédural
- dysfonctionnement (conversion de types)
7Généralités - Historique
- Objectifs des SGBDOO
- réduire le dysfonctionnement entre langage de
programmation et langage de base de données en
offrant un unique langage de programmation de
base de données - supporter directement les objets arbitrairement
complexes par un modèle objet - partager le code réutilisable au sein du SGBD
8Généralités - Historique
- Définition des SGBDOO
- The Object-Oriented Database System Manifesto
(1989) - Défini par des chercheurs
- Ensemble de règles caractérisant un SGBDOO
obligatoires, facultatives, ouvertes
9Généralités - Historique
- Définition des SGBDOO
- ODMG 1.0 (1993)
- Défini par des éditeurs
- Standard de portabilité des SGBDOO
- ODMG 2.0 (1997)
- Binding langages objet (c, smalltalk, java)
vers SGBDO - ODMG 3.0 (2000)
- Améliorations du binding java ? prémisses de JDO
- Dernière version avant dissolution de lODMG
10Généralités - Aspects Base de Données
- un SGBDOO est un SGBD
- Persistance
- Gestion du disque
- Partage des données (multi-utilisateurs)
- Fiabilité des données
- Sécurité des données
- Interrogation ad hoc
11Généralités - Aspects Orientés Objet
- Un SGBDOO est Orienté Objet
- Objets complexes
- Identité d'objet
- Encapsulation, Classes
- Héritage
- Surcharge, Lien retardé
- Valeurs, Types
- Polymorphisme
12Généralités - Architecture
- Architecture Fonctionnelle
13Généralités - Architecture
- Architecture Opérationnelle
Application
Compilation
Programme utilisateur
Objets
Verrous Journal
Fichiers
Pages
14Généralités - Architecture
- Architecture Client/Serveur
- Serveur d'objets
Objets
Verrous Journal
Application
Objets
Fichiers
Cache de Pages
Application
Objets
15Généralités - Architecture
- Architecture Client/Serveur
- Serveur d'objets
- Fort degré de concurrence (verrouillage et
journalisation au niveau de l'objet) - Possibilité d'exécution de méthodes sur le
serveur
16Généralités - Architecture
- Architecture Client/Serveur
- Serveur de pages
Pages
Verrous Journal
Application
Objets
Cache de Pages
Fichiers
Pages
Application
Objets
Fichiers
Pages
17Généralités - Architecture
- Architecture Client/Serveur
- Serveur de pages
- Utilisation de la puissance de calcul des clients
- Accroît le nombre de connections possibles
- Serveur isolé
- Verrouillage et journalisation par page
18Généralités - Architecture
- Architecture Client/Serveur
- Multi-serveurs
Application
Application
Objets Répartis
Objets Répartis
objets ou pages
Fichiers
Fichiers
Pages
Pages
19Généralités
SYSTEME
VOLUME
DISQUE
BASE
BASE
BASE
BASE
SCHEMA
SCHEMA
BASE
BASE
20Aspects Orientés Objets
- Objet complexe, encapsulation, classe
- OBJET DONNÉES DESCRIPTION
DINTERFACE(STRUCTURES DE DONNÉES
COMPORTEMENTS) - Un objet est lencapsulation, dans une même
entité, de données conformes à une structure de
données et des opérations permettant de manipuler
cette structure de données.
21Aspects Orientés Objets
- Objet complexe, encapsulation, classe
- Vue externe OBJET BOITE NOIRE BOUTONS
- Vue interne OBJET DONNEES MECANIQUE
LIEE AUX BOUTONS
22Aspects Orientés Objets
- Point de vue structurel
- un objet est un type de données qui définit une
structure et lensemble des opérations
applicables à cette structure. - Point de vue conceptuel
- un objet est une unité de connaissance
représentant le prototype dun concept - Point de vue acteur
- un objet est une entité autonome et active.
23Aspects Orientés Objets
- Lencapsulation est le principe qui consiste à
préserver la structure et la mécanique interne
des objets des regards indiscrets pour nen
montrer quune interface choisie - Les propriétés de visibilité permettent de
définir ce qui fera partie de linterface. - Seules les parties publiques (appelées
spécifications ou interfaces) sont accessibles.
24Aspects Orientés Objets
- Une classe est la description abstraite dun
ensemble dobjets partageant les mêmes
caractéristiques. - Elle possède deux composantes
- description des données, appelées attributs
(composante statique) - description des procédures, appelées méthodes
(composante dynamique)
25Aspects Orientés Objets
- Les attributs caractérisent létat des objets
durant lexécution des programmes. - Les méthodes caractérisent les comportements des
objets durant lexécution des programmes. - Tout objet est instance de sa classe.
26Aspects Orientés Objets
- Une méthode est toujours associée à une classe et
se compose de deux parties - sa signature qui indique les structures de
données sur lesquelles elle opère - son corps qui indique la manière dont elle opère
- Une méthode est toujours déclenchée sur un objet
appelé objet receveur et désigné, dans le corps
de la méthode, par la variable self ou this. - Pour instancier une classe, on fait appel à
lopérateur new, prédéfini pour toute classe, qui
réalise lallocation mémoire nécessaire, crée un
objet et déclenche automatiquement
linitialisation de lobjet
27Aspects Orientés Objets
- Identité d objet
- Chaque objet est caractérisé par un identifiant
unique, immuable, géré par le système. - Cet identifiant est un moyen discriminant de
désigner un objet il est indépendant de la
valeur des attributs de l'objet. Deux objets
peuvent coïncider en tout point (selon la
modélisation effectuée) on dit qu'ils sont
égaux.
28Aspects Orientés Objets
- Deux personnes différentes mais de mêmes
caractéristiques (pour le modèle) ! - Exemple deux homonymes, de même prénom et de
même âge
Nom DUPOND Prénom Jean Age 25 Conjoint -
Nom DUPOND Prénom Jean Age 25 Conjoint -
29Aspects Orientés Objets
- L'identité est la relation d'équivalence "avoir
même identificateur que" - L'égalité est la relation d'équivalence "avoir
les mêmes propriétés que".
30Aspects Orientés Objets
- Jean DUPOND (1) se marie avec Jeanne DURANT
- Jean DUPOND (1) le conjoint de Jeanne DURANT sont
deux objets identiques (ou sont un seul objet) - Jean DUPOND (1) et Jean DUPOND (2) ne sont plus
égaux (une de leurs propriétés diffère le
conjoint)
Nom DUPOND Prénom Jean Age 25 Conjoint DURAND
Jeanne
Nom DUPOND Prénom Jean Age 25 Conjoint -
31Aspects Orientés Objets
- IDENTITÉ ! ÉGALITÉ
- Deux objets sont identiques si et seulement si ce
sont le même ! (symbole ) - Deux objets sont égaux si et seulement si leurs
valeurs sont égales.
32Aspects Orientés Objets
- L'identité d'objet permet de
- partager des objets
- de les rendre cycliques
Nom DUPOND Prénom Jean Age 25 Conjoint DURAND
Jeanne
Nom DURAND Prénom Jeanne Age 26 Conjoint DU
POND Jean
33Aspects Orientés Objets
- Héritage
- L'héritage est un mécanisme de transmission des
propriétés d'une classe vers une sous-classe.
C'est une relation entre classes. - Le graphe de cette relation est le graphe
d'héritage. - Une sous-classe possède toutes les propriétés de
sa super-classe mais elle peut en redéfinir
certaines et en posséder d'autres. - La sous-classe est une spécialisation (ou
raffinement) de la super-classe.
34Aspects Orientés Objets
- L héritage a deux objectifs
- l'enrichissement on adjoint, dans la
sous-classe, de nouvelles propriétés à celles
issues de la super-classe - la substitution on redéfinit dans la
sous-classe certaines propriétés issues de la
super-classe. - L'héritage est dit simple si la sous-classe n'a
qu'une super-classe il est dit multiple si la
sous-classe a plusieurs super-classes. - Intérêts de l héritage
- factorisation du code des classes
- structuration hiérarchisée des classes, modularité
35Aspects Orientés Objets
Personne
Employe
Chercheur
Enseignant
Enseignant-Chercheur
36Aspects Orientés Objets
- Surcharge, Lien retardé
- Chaque propriété d'une super-classe peut être
redéfinie dans une sous-classe à condition de
respecter certaines conditions - Pour les attributs les types des attributs de
la sous-classe doivent être des sous-types de
ceux de la super-classe - Pour les méthodes le nombre de paramètres doit
être identique et les types des paramètres et de
la valeur de retour de la méthode dans la
sous-classe doivent être des sous-types de ceux
de la méthode dans la super-classe (covariance)
37Aspects Orientés Objets
- Lorsqu on déclenche une méthode sur un objet, on
ne peut pas nécessairement déterminer, à la
compilation, le code qui sera réellement exécuté. - Lorsque le choix de la méthode à utiliser est
réalisé à la compilation, on parle de lien
statique. - Lorsque le choix de la méthode à utiliser est
réalisé à l'exécution, on parle de lien retardé
ou lien dynamique. - ? Polymorphisme
38Aspects Orientés Objets
- Valeurs, Types
- Une valeur est une donnée organisée selon une
certaine structure appelée type. - Le type définit une structure de données et les
opérations que l'on peut lui appliquer. - Toute valeur est typée et son type est défini
lors de sa déclaration.
39Aspects Orientés Objets
- Les valeurs ne supportent pas le concept
d'identité elles ne peuvent donc être ni
partagées ni cycliques. - On accède à la valeur d'un objet en utilisant
l'opérateur de déréférencement noté .
Nom DUPOND Prénom Jean Age 25 Conjoint DURAND
Jeanne
p Dupond
Dupond
p
40Aspects Orientés Objets
- Les types supportés par le système sont obtenus
par application récursive de constructeurs de
types à des types atomiques. - Constructeurs de types
- tuple() (constructeur n-uplet)
- list() (constructeur de collection ordonnée)
- set() (constructeur de collection non
ordonnée) - unique set() (idem mais sans doublon)
- type() (accès au type d'une classe)
- Types atomiques boolean, char, integer,
real, string, bits, etc.
41Aspects Orientés Objets
- Les types sont organisés selon une relation
d'ordre partiel, défini par les règles suivantes
- il n'existe pas de sous-type d'un type atomique
- tuple(a t1, b t2) est un sous-type de tuple(a
t1) - tuple(a t1) est un sous type de tuple(a t2) si
t1 et un sous type de t2 - list(t1) resp. set(t1), unique set(t1) est un
sous-type de list(t2) resp. set(t2), unique
set(t2) si t1 est un sous type de t2 - De la même manière, les classes sont organisées
selon un ordre partiel, décrit par le graphe
d'héritage. - L'ordre des types et des classes doit être
vérifié par le compilateur.
42Aspects Orientés Objets
- Opérations sur les collections
- Listes
- affectation, comparaison, concaténation, accès
direct, appartenance, extraction de sous-liste,
taille, remplacement, effacement, insertion,
parcours itératif conditionnel - Ensembles, Multi-ensembles
- affectation, comparaison, union, intersection,
différence, appartenance, taille, insertion,
suppression, parcours itératif conditionnel
43Aspects Bases de Données
- Modèle de persistance
- Faculté pour un objet ou une valeur d'exister
au-delà du programme qui l'a créé(e). - Modèle de persistance par attachement
- Tout objet ou valeur référencé(e) par un objet ou
valeur persistant(e) est persistant(e).
44Aspects Bases de Données
- Conséquences du modèle par attachement
- transparent pour le développeur
- ramasse-miettes pour détruire les objets et
valeurs qui ne sont plus référencés par un objet
ou une valeur persistant(e) - nécessité de racines de persistance
45Aspects Bases de Données
- Les racines de persistance sont nommées
explicitement dans le schéma de la base de
données (déclations) - Les racines de persistance peuvent être des
objets et/ou des valeurs, de classes et/ou de
type quelconques.
46Aspects Bases de Données
- Transactions
- C'est un programme d'accès à la base de données
qui vérifie les propriétés d'ACIDité - Atomicité ( tout ou rien )
- Cohérence ( sémantique des objets garantie )
- Isolation ( comme en mono-utilisateur )
- Durabilité ( les effets dune transaction
validée perdurent ) - Délimitées par un début de transaction et un
achèvement (commit/validate ou rollback/abort)
47Aspects Bases de Données
- Interrogation
- Langage OQL (Object Query Language) standardisé
par ODMG 93 - Langage déclaratif, fonctionnel de syntaxe proche
de SQL (Structured Query Language) permettant
l'exécution de requêtes arbitrairement complexes
combinant requêtes élémentaires et requêtes
complexes
48Aspects Bases de Données
- Requêtes élémentaires
- accès aux instances nommées LeDoyen
- envois de messages LeDoyengtage()
- sélection d'un champ LeDoyengtconjoint
- opérations sur les types atomiques et construits
LeDoyengtconjoint-gtage() 1 - construction et instanciationstruct(nom
LeDoyengtnom, age LeDoyengtage())
49Aspects Bases de Données
- Requêtes complexes
- sélection/extraction/jointure select distinct
from where ? le résultat est un multi-ensemble
(bag) ou ensemble (set) - Tri order by ? le résultat est une liste
- Partitionnement group by ? le résultat est un
ensemble de structures
50Aspects Bases de Données
- Entrées dans la base
- Si n désigne un objet ou une valeur nommée alors
l'expression n est une requête qui retourne
l'objet ou la valeur nommé(e) considéré(e) - LeDoyen
51Aspects Bases de Données
- Atomes
- Si a désigne un atome, i.e. une valeur de type
atomique (entier, réel, caractère, chaîne,
booléen) alors l'expression a est une requête
retournant cet atome. - 3, coucou
52Aspects Bases de Données
- Atomes
- On dispose d'autres requêtes propres à chaque
type atomique - nombres opérations arithmétiques (, -, , /),
modulo (mod()), valeur absolue (abs()) - chaînes de caractères concaténation (),
extraction (xi, xij), longueur (count()) - booléens et (and), ou (or), négation 'not())
53Aspects Bases de Données
- Tuples
- Si x désigne une valeur ou un objet de type tuple
alors x.a ou a est un attribut de x est une
requête qui retourne l'attribut a de x. - (LeDoyen).conjoint
- Si x désigne un objet de type tuple alors x-gta ou
a est un attribut de x est une requête qui
retourne l'attribut a de x. - LeDoyengtconjoint
54Aspects Bases de Données
- Listes
- Extraction
- xi d'un élément
- xij, xj, xi d'une sous liste
- Opérations générales
- first(x), last(x)
- min(x), max(x), count(x), sum(x), avg(x)
55Aspects Bases de Données
- Listes
- Opérations particulières
- xy concaténation de listes
- listoset(x) conversion en unique set
- flatten(x)
- si x est une liste de listes, retourne la
concaténation de tous les éléments de x - si x est une liste d'ensembles, retourne l'union
de tous les éléments de x - si x est une liste de unique set, retourne
l'union disjointe de tous les éléments de x
56Aspects Bases de Données
- Ensembles
- Extraction
- element(x) extraction de l'unique élément d'un
singleton - Opérations générales
- min(x), max(x), count(x), sum(x), avg(x)
- Opérations ensemblistes
- x union y (xy), x except y (x-y), x intersect y
(xy)
57Aspects Bases de Données
- Ensembles
- Opérations particulières
- flatten(x)
- si x est un ensemble de listes, retourne l'union
disjointe de tous les éléments membres des listes
de x - si x est un ensemble d'ensembles, retourne
l'union de tous les éléments de x - si x est un ensemble de unique set, retourne
l'union disjointe de tous les éléments de x
58Aspects Bases de Données
- Construction de valeurs
- On dispose des constructeurs habituels permettant
d'obtenir des tuples, des listes et ensembles - tuple() struct(a1 x1, an xn) les attributs
du tuple peuvent être des objets et/ou des
valeurs - list(), list(x1, , xn)les membres de la liste
doivent être de même nature (objet ou valeur) et
doivent avoir un supertype ou une superclasse
commun(e) - set(), set(x1, , xn) idem
59Aspects Bases de Données
- Construction dobjets
- Une requête peut créer un objet
- Personne(nom LeDoyengtnom, age 70)
- Le nom de la fonction est le nom de la classe.
- Les attributs peuvent être initialisés avec les
résultats d'autres requêtes. - Les attributs non cités sont initialisés par
défaut (le constructeur de la classe n'est pas
appelé).
60Aspects Bases de Données
- Envoi de messages
- x-gtm où m est une méthode de la classe (ou d'une
super classe) de x ne prenant aucun paramètre,
retourne le résultat de l'application de la
méthode m à l'objet x - x-gtm(a1, , an) où m est une méthode de la
classe (ou d'une super classe) de x prenant n
paramètres, retourne le résultat de l'application
de la méthode m à l'objet x avec les paramètres
a1, , an.
61Aspects Bases de Données
- Prédicats
- Ce sont des requêtes retournant une valeur
booléenne - q like wild_card_exp possibilité d'utiliser les
caractères génériques ('') - x y (x y) retourne la valeur true si et
seulement si x et y sont deux valeurs égales ou
bien si et seulement si x et y sont deux objets
identiques - x ! y attention, signifie not(x y)
62Aspects Bases de Données
- Prédicats
- x lt y, x lt y, x gt y, x gt y
- x in y retourne la valeur true si et seulement
si la valeur ou l'objet x appartient à la
collection y ou bien si et seulement si le
caractère x appartient à la chaîne y ou bien si
et seulement si x est une sous-chaîne de la
chaîne y.
63Aspects Bases de Données
- Prédicats Quantificateurs
- Universel forall x in y p
- Retourne true si et seulement si tout élément de
la collection y satisfait le prédicat p - select p from p in LesPersonnes where forall x
in p-gtamis x-gtage() lt 18 - Existentiel exists x in y p
- Retourne true si et seulement si il existe un
élément de la collection y qui satisfasse le
prédicat p - select p from p in LesPersonnes where exists x
in p-gtamis x-gtage() lt 18
64Aspects Bases de Données
- Sélection / Extraction / Jointure
- Font appel à un bloc select from where
- select q
- from x1 in f1, , xn in fn
- where p
- où q est une requête impliquant les variables x1,
, xn - où p est un prédicat impliquant les variables x1,
, xn - où fi est une requête impliquant les variables
x1, , xi-1mais pas les variables xi, , xn.
65Aspects Bases de Données
- Sélection / Extraction / Jointure
- La structure du résultat est un bag par défaut.
- On peut éliminer la répétition de valeurs ou
d'objets dans le résultat en utilisant la clause
distinct(la structure du résultat est alors un
unique set) - On peut trier le résultat avec la clause order
by(la structure du résultat est alors une liste) - On peut utiliser la caractère
- select from Person p, Flower f
- le résultat est du type bag(struct(p Person,
fFlower))
66Aspects Bases de Données
- Tri
- y order by f1, , fn
- si y est une collection, retourne la liste
contenant tous les éléments de y, rangés suivant
les clés f1, , fn et, en dernier ressort par
appel à magic() - les clés doivent être de type numérique ou chaîne
de caractères - Select p from p in LesPersonnes order by p-gtnom
asc, p-gtprenom desc
67Aspects Bases de Données
- Partitionnement
- y group by (a1 q1, , an qn)
- Si y est une collection résultat d un select,
l expression retourne une partition de y suivant
les critères q1, , qn. - Le résultat est un ensemble (bag) de n-uplets
dont les attributs sont a1, , an,
partition.partition est du même type que y, et
désigne l ensemble des éléments de y associés à
une valeur de (a1an)
68Aspects Bases de Données
- Partitionnement
- Possibilité dutiliser la clause having
- select p.age, card count(partition)
- from LesPersonnes p
- group by p.age
- having count(partition) lt 50
- Pour réaliser un filtre utilisant une fonction
d agrégation.
69Aspects Bases de Données
- Typage
- On peut sous-typer un élément dans une requête
- select ((Employe) c) from c in
LesPersonneswhere c in LesEmployes - select ((Employe) c)-gtsalary() from c in
LesPersonneswhere (c in LesEmployes)
(c-gtage() gt 25)
70Aspects Bases de Données
- OQL encapsulé dans un programme
- On peut lancer une requête OQL depuis un langage
supportant le binding ODMG - elle sera passée sous forme de chaîne de
caractères, en paramètre à une fonction du type
OQLquery - Exemple en C avec O2
- include "OQL_CC.hxx"
-
- int i, j, c
- d_Bagltd_RefltPersongtgtgroup, result
- ...
- d_OQL_Query query("select x from x in 1 where \
- count(x-gtchildren) gt 2 and x-gtage lt3")
- j40
- i f(j)
- query ltlt group ltlt iltlt j
- c d_oql_execute(query, result)
- if (result.cardinality()) result.insert_element
( new Person)
71Aspects Bases de Données
- Exemple en Java avec O2
- OQLQuery query new OQLQuery
- (select p from Person p where age gt 1)
- query.bind(40)
- Iterator it query.iterate()
- Person p
- while (it.hasNext())
- p (Person) it.next()
- p.display()
-
-
- Note pour obtenir une collection plutôt qu'un
itérateur - DBag bag (DBag) query.execute()
72Aspects Bases de Données
- Axiom
- query_program define_query query
- define_query define identifier as query
73Aspects Bases de Données
- Basic
- query nil
- query true
- query false
- query integer_literal
- query float_literal
- query character_literal
- query string_literal
- query entry_name
- query query_name
- query bind_argument 1
- query from_variable_name
- query (query)
74Aspects Bases de Données
- Simple Expression
- query query query 1
- query query - query
- query query query
- query query / query
- query - query
- query query mod query
- query abs (query)
- query query query
75Aspects Bases de Données
- Comparison
- query query comparison_operator query
- query query like string_literal
- comparison_operator
- comparison_operator !
- comparison_operator gt
- comparison_operator lt
- comparison_operator gt
- comparison_operator lt
- Boolean Expression
- query not query
- query query and query
- query query or query
76Aspects Bases de Données
- Constructor
- query type_name ( query )
- query type_name (identifierquery ,
identifier query) - query struct (identifier query ,
identifier query) - query set ( query , query )
- query bag ( query ,query )
- query list ( query ,query )
- query (query, query , query)
- query list (query .. query)
- query array ( query ,query )
77Aspects Bases de Données
- Accessor
- query query dot attribute_name
- query query dot relationship_name
- query query dot operation_name
- query query dot operation_name( query
,query ) - dot . -gt
- query query
- query query query
- query query queryquery
- query first (query)
- query last (query)
- query function_name( query ,query )
78Aspects Bases de Données
- Collection Expression
- query for all identifier in query query
- query exists identifier in query query
- query exists(query)
- query unique(query)
- query query in query
- query query comparison_operator quantifier
query - quantifier some
- quantifier any
- quantifier all
79Aspects Bases de Données
- query count (query)
- query count ()
- query sum (query)
- query min (query)
- query max (query)
- query avg (query)
- Select Expression
- query select distinct projection_attribute
s - from variable_declaration , variable_declaration
- where query
- group by partition_attributes
- having query
- order by sort_criterion , sort_criterion
80Aspects Bases de Données
- projection_attributes projection ,
projection - projection_attributes
- projection query
- projection identifier query
- projection query as identifier
- variable_declaration query as
identifier - partition_attributes projection ,
projection - sort_criterion query ordering
- ordering asc
- ordering desc
81Aspects Bases de Données
- Set Expression
- query query intersect query
- query query union query
- query query except query
- Conversion
- query listtoset (query)
- query element (query)
- query distinct(e)
- query flatten (query)
- query (class_name) query
82Aspects Bases de Données
- Operator Priorities
- .
- () . -gt
- not - (unary) (unary)
- i n
- / mod intersect
- - union except
- lt gt lt gt lt some lt any lt all (etc ... for all
comparison operators) - ! l i k e
- and exists for all
- or
83Aspects Bases de Données
- ..
- ,
- (identifier) this is the cast operator
- order
- having
- group by
- where
- from
- select
84ODMG 3.0
- Objectifs
- fournir des standards permettant d'écrire des
applications portables, i.e. qui puissent
fonctionner sur un ou plusieurs SGBDO - le schéma, le couplage aux langages de
programmation, la manipulation de données et le
langage de requêtes doivent être standards - si possible, le standard devra faciliter
l'interopérabilité entre SGBDO
85ODMG 3.0
- Les composants majeurs
- Modèle objet
- modèle objet de l'OMG relations
- Langages de spécifications objet
- ODF Object Definition Language IDL relations
- OIF Object Interchange Format échange d'objets
inter bases, support de documentation - Langage de requêtes OQL
- OML Couplage aux langages de programmation (C,
Smalltalk, Java)
86ODMG 3.0
- Modèle objet établit une distinction entre
Litéral et Objet - Litéral
- Types atomiques int, real, string
- Constructeurs de type
- énumération enum
- structures struct, union
- collections génériques set, bag, list, array
- Chaque litéral est caractérisé par sa valeur
- L1 et L2 sont égaux si leurs valeurs sont égales
- Objet
- définition de l interface
- chaque objet est identifié par son identité
- O1 et O2 sont égaux si leurs identifiants sont
égaux
87ODMG 3.0
Built-in Types
Object_type
Literal_type
Atomic_object
Collection_object
Structured_object
Set
Bag
List
Array
Dictionnary
Date
Time
Timestamp
Interval
88ODMG 3.0
- Interface spécification d un type
- super (Héritages simple et multiple)
- extent, clés candidates
- attributs
- attribute lttypegt ltnomattrgt
- associations et associations inverses
- relationship lttypegt ltnomassogt
- inverse ltnom-d-interfacegtltnomassogt
- méthodes
- lttype-retournégt ltnommethgt (lttype-paramêtregt
lttypegt, ) - raise (lttype-d-exceptiongt)
- lttype-paramêtregt in, out, inout
- Classe
- interface une implantation particulière du type
dans un des LMD disponibles
89ODMG 3.0
- Exemple
- interface Employee
- attribute int numemp
- attribute string name
- attribute float basesalary
- attribute Date birthday
- attribute Struct Addr string street, string
city, int zip address - attribute enum TypeEmp worker,manager typeEmp
- attribute Setltstringgt phones
- relationship Dept dept inverse Deptmembers
- float salary()
-
- interface Dept
- attribute string name
- attribute Struct EmployeeAddr address
- relationship SetltEmployeegt members inverse
Employeedept - float totsalary() raise(Uncalculable)
-
90ODMG 3.0
- Modèle objet
- Une base stocke des objets, qui peuvent être
partagés par différents utilisateurs et
applications. Elle repose sur un schéma, défini
en ODL, et contient des instances des types
définis dans ce schéma. - Eléments clés
- Propriétés attributs et relations
- Opérations méthodes. Exceptions.
- Héritage multiple
- Extensions et clés
- Nommage d'objets, durée de vie et identité
- Littéraux atomiques, structurés et ensemblistes
- Classes de collections