Académique Documents
Professionnel Documents
Culture Documents
une introduction
Objectif
Présenter les techniques objet-
relationnel proposées par Oracle 10i.
Seulement Oracle 10i.
L’exposé n’est pas exhaustif.
Au préalable, quelques remarques.
2
Modèle O-R : quel niveau ?
Modèle objet-relationnel au même titre
que le modèle relationnel.
Niveau logique/physique (et non pas
conceptuel, comme un modèle de
classes UML)
Correspond à l’introduction de concepts
des bases de données objets dans le
modèle relationnel.
3
Bases de données objet
Concept de SGBDO précisé au tout
début des années 90.
Un SGBDO doit pouvoir supporter des
fonctionnalités d’un SGBD et des
fonctionnalités « objet ».
ODMG pour la normalisation (ODL,
OQL, OML…)
Noms de SGBDO : O2, ObjectStore, …
4
Fonctionnalités SBGD (obligatoires)
Persistance des objets : tout objet doit
pouvoir persister sur le disque au delà du
programme qui le crée.
Concurrence d’accès : la base d’objets doit
pouvoir être partagée par différentes
transactions qui la consultent et la modifient.
Fiabilité des objets : restauration de l’objet
dans l’état précédent la panne.
Facilité d’interrogation : possibilité de
retrouver un objet « facilement »
5
Fonctionnalités objet (obligatoires)
Support d’objets atomiques et complexes
Identifiant d’objets : chaque objet a un
identifiant unique.
Héritage simple : possibilité d’exprimer la
spécialisation d’une classe et l’héritage.
Polymorphisme : code d’une méthode choisi
en fonction de ses paramètres instanciés.
6
Objet-relationnel
Le modèle : permet de conserver la
compatibilité avec le modèle relationnel tout
en utilisant des concepts « objet » ;
Un SGBD O-R permet d’utiliser des techniques
objet en même temps que des techniques
purement relationnelles.
Norme SQL3 : extension de SQL2 pour
prendre en compte le modèle objet-
relationnel ; tous les SGBD O-R ne sont pas
conformes SQL3.
7
O-R : concepts de base
Type de données utilisateur : type de
données définissable par l’utilisateur. Ce
dernier peut définir les attributs et les
méthodes associées au type.
Collections : types de données
permettant de supporter des attributs
multi-valués et de les organiser suivant
le type de collection.
8
Objet-relationnel : les concepts
Identificateur d’objet (OID), référence :
Type de données particulier, permettant
de mémoriser l’adresse invariante d’un
objet (pour référencer l’objet)
Héritage de type : forme d’héritage
permettant de définir un sous-type d’un
type existant, avec héritage de la
structure et des opérations (under).
9
Oracle 8i et l’objet-relationnel
Définition de type
Table objet-relationnelle et référence
Collections :
tables imbriquées
tableaux
Méthodes associées à un type.
(pas d’héritage dans la version 8)
10
Définition d’un type
Syntaxe
create [or replace] type <nom_type>
as object
(<attr> <type> [,<attr> <type>]*);
<type> : type standard ou un type « objet ».
Exemple
création d’un type tadresse, puis d’un type
tlabo.
11
Utilisation
Création de tables :
utilisé comme un autre type.
Insertion de lignes :
dans la clause « values », le nom du type doit
précéder les valeurs
<nom_type>(val1, … valn)
Sélection/Modification de lignes :
il faut préfixer par le nom de la colonne, pour
obtenir la valeur d’un attribut d’un objet.
12
Exemple
13
Table objet-relationnelle
La table est définie à partir d’un type unique.
Les colonnes de la table correspondent aux
attributs définis dans le type.
Caractéristique majeure (par rapport à une
table relationnelle) : chaque tuple est
considéré comme un objet.
Chaque tuple possède un identificateur
d’objet (OID). Il peut donc être référencé par
d’autres objets de la base via la clause REF.
14
Table 0-R : utilité
Les tuples d’une table R2 peuvent être
référencés directement (pointeur) par
les tuples d’une table R1.
15
Table O-R : définition
Syntaxe :
create table <nom_table> of
<nom_type>
Exemple : table O-R « Labos ».
Définition d’un type tlabo.
Définition de la table Labos à partir de
tlabo.
16
Référence (pointeur)
Les références permettent de
représenter les liaisons entre les objets.
Déclaration :
<nom_attr> REF <nom_type>
19
Insertion de lignes
Utilisation de la fonction REF() qui
renvoie l’OID de l’objet référencé. On
recherche dans la table liée l’OID du
tuple que l’on veut référencer.
Exemple : insertion du robot Toc créé
au labo de nom SRI.
20
Suppression de lignes
Dans une table liée on peut supprimer
un tuple référencé par une table maître
« sans que cela pose problème ».
-> Ce qui n'est pas géré par le SGBD doit
l'être par le programmeur
21
Collections : utilité
La table que l’on veut implémenter n’est
pas en 1e forme normale.
Pour un tuple donné, un attribut peut
prendre plusieurs valeurs ; il est multi-
valué.
Exemple : Associer à un labo l’ensemble
des robots qui lui appartiennent, à un
robot l’ensemble de ses résultats.
22
Collections : mise en oeuvre
Deux cas :
L’attribut est composé d’un seul
élément
Utilisation d’un tableau
L’attribut est composé de plusieurs
éléments
Utilisation d’une table imbriquée.
23
Table imbriquée
nomr labo résultats cat poids
Tom nomc sess pts léger 50
Vers la table
superc 3 140
labos
cnul 4 100
… … …
24
Table imbriquée : définition
Définition relative au type de la table
imbriquée
create type <nom_type_table> as table of
<nom_type>
Définition de la table principale
create table <nom_table_pri> (<attr>
<nom_ty>, …, <attri> <nom_type_table>,
<liste_contraintes>)
nested table <attri> strore as <tab_interne>;
25
Table imbriquée : définition
<attri> est un attribut de type table.
<tab-interne> est le nom de la structure
interne qui stocke les enregistrements de la
table imbriquée.
C’est le SGBD qui maintient
(automatiquement) des pointeurs entre les
deux tables.
Exemple : définitions pour les tables
précédentes.
26
Table imbriquée : utilisation
Insertion dans la table principale
insert into <nom_table_pri> values (v1, …,
<nom_type_table>(
<nom_type> (…),
<nom_type> (…),…
<nom_type> (…) ) );
30
Tableau : utilisation
Ajout de lignes dans la table principale
se fait comme précédemment (en
utilisant le nom du type pour donner la
valeur de la collection)
Sélection classique ok
Pour manipuler un élément du tableau
ou le sélectionner, il faut utiliser un
programme PL/SQL.
31
Modèle Obj-Rel : notations
Types
Collection
<nom_type> {<nom_type'>}
Pointeur
<nom_type> @<nom_type'>
Type structuré
Relations
table relationnelle
<nom_rel>(<nom_attr1> <nom_type1>, ...
<nom_attrj> <nom_typej>)
table objet_relationnelle
<nom_rel><nom_type>O
33