Bases de données
objet-relationnelles
Si le modèle logique relationnel a prouvé sa
puissance et sa fiabilité au cours des 20
dernières années, les nouveaux besoins de
l'informatique industrielle ont vu l'émergence
de structures de données complexes mal
adaptées à une gestion relationnelle.
Bases de données
objet-relationnelles
La naissance du courant orienté objet et des
langages associées (Java et C++ par exemple) ont
donc également investi le champ des SGBD afin de
proposer des solutions pour étendre les concepts
du relationnel et ainsi mieux répondre aux
nouveaux besoins de modélisation.
Les SGBDR : Avantages et Faiblesses
Avantages
Basé sur une théorie rigoureuse et des principes simples, assurant l'indépendance entre
programmes et données. Les SGBDR sont les plus utilisés, connus et maîtrisés.
Utilisation du SQL pour une implémentation standard, avec des outils performants de
gestion de requêtes, d'administration et d'optimisation. Bien implanté dans le monde
professionnel.
Les SGBDR : Avantages et Faiblesses
Faiblesses
Non support de domaines composés et non intégration des opérations (la partie
dynamique). Le mapping MCD vers MLD entraîne une perte de sémantique.
La manipulation de structures relationnelles par des langages objets entraîne un
décalage entre les structures de données pour le stockage et les structures de
données pour le traitement.
La 1FN est inappropriée à la modélisation d'objets complexes.
Les SGBD Orienté Objet
(SGBDOO)
1 Objectifs 2 Fonctionnalités
Offrir aux langages de Offrir aux BD des types de
programmation orientés données complexes et
objets des modalités de extensibles, permettant la
stockage permanent et de représentation de structures
partage entre plusieurs complexes et/ou à taille
utilisateurs. variable.
3 Support
Fournir un ensemble de fonctionnalités OO (Support d'objets
atomiques et complexes, Identité d'objets, Héritage simple et
polymorphisme).
Avantages des SGBDOO
Suppression des clés
artificielles
Schéma plus facile à
appréhender, héritage pour L'identification des objets
mieux structurer, création de permet de supprimer les clés
types et intégration de artificielles souvent introduites
méthodes pour une pour atteindre la 3NF et donc
représentation plus directe du de simplifier le schéma.
domaine.
Principes d'encapsulation
Les principes d'encapsulation et d'abstraction du modèle orienté
objet permettent de mieux séparer les BD de leurs applications
(notion d'interface).
Inconvénients des SGBDOO
persistance et de la coexistence des objets en mémoire
Le problème de compatibilité avec les SGBDR classiques,
L’interdépendance forte des objets entre eux
La complexité des systèmes
Pourquoi ne pas passer directement du SGBDR vers SGBD OO ?
Facilité et efficacité Contraintes d'intégrité Nombreuses bases relationnelles
Le relationnel a ses avantages, en Ce modèle facilite la spécification Pour cette raison, il existe de très
particulier sa grande facilité et des contraintes d'intégrité sans nombreuses bases relationnelles
efficacité pour effectuer des programmation car il est basé sur en fonctionnement. D'autre part,
recherches complexes dans des une théorie solide et des normes les SGBDO manquent de
grandes bases de données. reconnues. normalisation pour et s'appuient
sur beaucoup de solutions
propriétaires.
Les SGBDRO : Une Approche Progressive
Les SGBDRO sont nés du double constat de la puissance nouvelle
promise par les SGBDOO et de l'insuffisance de leur réalité pour
répondre aux exigences de l'industrie des BD classiques. Leur
approche est plutôt d'introduire dans les SGBDR, les concepts
apportés par les SGBDOO plutôt que de concevoir de nouveaux
systèmes.
Les SGBDRO : Une Approche Progressive
Cette approche intègre des éléments de structure complexe dans une
relation de type NF2 (NFNF Non First Normal Form) et pourra contenir un
attribut composé d'une liste de valeurs ou de plusieurs attributs.
Dans ce contexte, les SGBDRO peuvent gérer des données complexes,
rapprocher le modèle logique du modèle conceptuel et réduire les pertes
de performance liées à la normalisation et aux jointures.
Modèles NF2 et Extension du LDD
Extension du LDD
L'extension du LDD pour
définir des types structurés
engendre la modification
des opérateurs de base
2 comme la restriction, la
Modèles NF2 projection et la jointure.
L'introduction de modèles
1
NF2 permet de se libérer
de la 1ère Forme Normale Nécessité de modifier le
afin d'avoir la possibilité de noyau
définir des attributs comme L'extension des systèmes
des listes de valeurs. relationnels nécessitent de
3
modifier le noyau de base
du SGBD pour supporter
l'intégration des objets
complexes et leurs
manipulations.
Types Personnalisés et Héritage
Types personnalisés
Postgre nous permet de créer nos propres types pour se rapprocher des
données qui sont manipulé par les langages de programmation orienté objet.
Composite Enum Range shell.
Héritage
L'héritage est un concept issu des bases de données orientées objet. Il ouvre de
nouvelles possibilités intéressantes en conception de bases de données.
Exemple
Soit deux tables : une table villes et une table capitales. Les capitales étant
également des villes, il est intéressant d'avoir la possibilité d'afficher
implicitement les capitales lorsque les villes sont listées.
SGBDRO
• Gérer des données complexes (temps, multimédia, types
utilisateurs, etc.)
• Rapprocher le modèle logique du modèle conceptuel
• Réduire les pertes de performance liées à la normalisation
et aux jointures.
SGBDRO
Les types personnalisés
(Postgre)
CREATE TYPE
composite
enum
range (intervalle)
shell
TYPE Composite
CREATE TYPE CREATE TABLE disponible (
element_inventaire AS ( element element_inventaire,
nom text, nombre integer
id_fournisseur integer, );
prix numeric
);
INSERT INTO disponible VALUES (ROW('fuzzy dice', 42, 1.99), 1000);
TYPE Composite
CREATE TYPE CREATE TABLE disponible (
element_inventaire AS ( element element_inventaire,
nom text, nombre integer
id_fournisseur integer, );
prix numeric
);
CREATE FUNCTION prix_extension(element_inventaire, integer) RETURNS
numeric
AS 'SELECT $[Link] * $2' LANGUAGE SQL;
SELECT prix_extension(element, 10) FROM disponible;
TYPE Composite
Accès au TYPE Composite
SELECT (element).nom FROM disponible WHERE (element).prix > 9.99;
SELECT ([Link]).nom FROM disponible
WHERE ([Link]).prix > 9.99;
TYPE Enum
CREATE TYPE humeur AS ENUM ('triste', 'ok', 'heureux');
CREATE TABLE personne (
nom text,
humeur_actuelle humeur
INSERT INTO personne VALUES (‘Kada', 'heureux');
SELECT * FROM personne WHERE humeur_actuelle = 'heureux';
name | humeur_actuelle
--------+-----------------
Kada | heureux
TYPE Enum
Tri
L'ordre des valeurs dans un type enum correspond à l'ordre dans lequel les valeurs
sont créées lors de la déclaration du type. Tous les opérateurs de comparaison et les
fonctions d'agrégats relatives peuvent être utilisés avec des types enum
INSERT INTO personne VALUES ('Larry', 'triste');
INSERT INTO personne VALUES ('Curly', 'ok');
SELECT * FROM personne WHERE humeur_actuelle > 'triste';
nom | humeur_actuelle
-------+-----------------
Moe | heureux
Curly | ok
TYPE Enum
Tri
SELECT * FROM personne WHERE humeur_actuelle > 'triste'
ORDER BY humeur_actuelle;
nom | humeur_actuelle
-------+--------------
Curly | ok
Moe | heureux
SELECT nom FROM personne WHERE humeur_actuelle =
(SELECT MIN(humeur_actuelle) FROM personne);
nom
-------
Larry
Héritage
L'héritage est un concept issu des bases de données orientées objet. Il ouvre de
nouvelles possibilités intéressantes en conception de bases de données.
Exemple
CREATE TABLE villes (
population real,
elevation int -- (en pied)
);
CREATE TABLE capitales (
etat char(2) UNIQUE NOT NULL
) INHERITS (villes);
Héritage
L'héritage est un concept issu des bases de données orientées objet. Il ouvre de
nouvelles possibilités intéressantes en conception de bases de données.
Exemple
SELECT nom, elevation FROM villes SELECT nom, elevation
WHERE elevation > 500; FROM ONLY villes
ce qui renvoie : WHERE elevation > 500;
Nom | elevation
-------------+----------- nom | elevation
Las Vegas| 2174 -----------+-----------
Mariposa | 1953 Las Vegas 2174
Madison | 845 Mariposa | 1953
Abstract Data Types - ADT
(Oracle)
• OBJECT :
permet de créer des valeurs structurées sous forme des couples <valeur, OID> dont la valeur est une
données et l’OID désigne l’identificateur d’objet
• VARRAY:
ou tableau dynamique, permet de définir des collections de taille limitée de données ordonnées,
indexées avec les doubles
• NESTED TABLE :
correspond à des collections non ordonnées et non limitées en taille avec des doubles
• REF:
Il permet de référencer une ou plusieurs instances d’un type objet afin de réduire les jointures entre tables
Abstract Data Types – ADT
Object
Super type
Sous type
Abstract Data Types – ADT
VARARRAY
• Taille fixe
• Utile pour stocker un nombre limité d’elements
• Plus rapide pour les petites listes
• Indexé de 1 à N, toujours contigue
• Ne peut pas etre manipulé comme table relationnel
Abstract Data Types – ADT
NESTED TABLE
• Taille dynamique
• Utile pour stocker un nombre limité d’elements
• Plus rapide pour les petites listes
• Peut contenir des trous (effets de suppression)
• Peut etre manipulé avec Table dans SQL
Abstract Data Types – ADT
VARARRAY
CREATE [OR REPLACE] TYPE <nom-type1> AS VARRAY (nb-max)
création de type Prenoms de chaîne de caractères
-- Définition d'un type VARRAY pour les matières principales (max 3 matières)
CREATE OR REPLACE TYPE t_varray_matieres AS VARRAY(3) OF VARCHAR2(50);
-- Définition d'un type NESTED TABLE pour les professeurs
CREATE OR REPLACE TYPE t_nested_professeurs AS TABLE OF VARCHAR2(100);
CREATE TABLE dept_varnested (
id NUMBER PRIMARY KEY,
nom VARCHAR2(50),
matieres_principales t_varray_matieres, -- VARRAY
professeurs t_nested_professeurs -- NESTED TABLE
) NESTED TABLE professeurs STORE AS professeurs_table;
-- Insertion d'un département avec VARRAY (matières) et NESTED TABLE (professeurs)
INSERT INTO dept_varnested VALUES (
1,
‘Informatique',
t_varray_matieres('SQL', 'PLSQL'),
t_nested_professeurs('Dr. KHELIFI', 'Mme. KHELIFA', 'M. KADRI')
);
--Afficher tous les départements avec leurs matières et professeurs
SELECT * FROM dept_varnested;
--Afficher les matières principales d’un département (VARRAY)
SELECT id, nom, matieres_principales FROM dept_varnested;
--Afficher les professeurs (NESTED TABLE) sous forme de table
relationnelle
SELECT
[Link], [Link], p.COLUMN_VALUE AS professeur
FROM dept_varnested d,
TABLE([Link]) p;
Abstract Data Types – ADT
VARARRAY
CREATE TYPE nom_type1 AS TABLE OF nom_type2
Abstract Data Types – ADT
REF
Conclusion
Les SGBDRO représentent une évolution naturelle des
SGBDR, intégrant les avantages des SGBDOO tout en
conservant la robustesse et la fiabilité des systèmes
relationnels existants.
Cette approche permet de gérer des données
complexes, de rapprocher le modèle logique du
modèle conceptuel et de réduire les pertes de
performance liées à la normalisation et aux jointures.
En fin de compte, les SGBDRO offrent une solution
pragmatique pour répondre aux besoins croissants de
l'informatique industrielle, en tirant parti des meilleures
pratiques des deux mondes.