SGBD et Objet

publicité
Les bases de données et l’objet
INT
Plan du document
 Atouts et limites du relationnel
 Définition d’un objet
 Modèle objet pur
 Règles d'or d'un SGBDO
 Atouts et limites d'un SGBDO
 Modèle objet-relationnel
 Propriétés RICE
Bases de Données
2
Atouts du relationnel
 Très bon support théorique
 Simplicité des concepts basés sur des
ensembles
 Modèle de données (externe, logique,
physique)
 LDD et LMD
Bases de Données
3
Atouts d'un SGBD(R)
 Persistance : les données survivent aux programmes
 Taille : accès efficace aux grandes quantités de données :
gestion des tampons, index, optimisation des requêtes
 Performances sur le transactionnel (OLTP)
 Standard industrie :



SQL2 : indépendance des applications
architecture client-serveur
optimisation de requêtes
 Sécurité
 Transactions
 Architecture client-serveur
Bases de Données
4
Limite du relationnel (2)
 Modèle plat : pas de données complexes
 Difficile d ’exprimer des choses structurées



nbre relations
Difficile de naviguer dans la structure



Jointure
-> inadaptés aux application navigationnelles (réseaux, CAO)
Pas de types nouveaux


1FN
volumineux ou/et multimedia
Non intégration des opérations
 SQL déclaratif, simple
 Langage non complet


 interfaçage avec un langage de programmation
impedance mismatch
Bases de Données
5
Définition d’un objet
 Pas de définition universelle de l’objet
 OMG

Chose identifiable
 Ferber

Entité informatique complète identifiable
caractérisée pas son état et un ensemble de méthodes
Bases de Données
6
Définition d'un objet (2)
 Associe traitements (méthodes) et données dans
Messages
Interface
une même entité.
 L'interface est le seul moyen d'accéder à l'objet,
par l'envoi de messages.
Méthode
Objet
Méthode
Méthode
Données
Méthode
Méthode
Bases de Données
7
Identité d’objet
 Chaque objet a une identité indépendante de sa





valeur.
On peut mettre à jour la valeur sans changer
l'identité.
Identité et égalité (surface ou profondeur?) sont
deux concepts différents.
Les objets peuvent être partagés.
Les objets peuvent être cycliques.
Les identificateurs ne sont pas accessibles aux
utilisateurs.
Bases de Données
8
Exemple
VolAF417/15mars95
tarif
VolUTA75/16mars95
places_dispo
1000
inscrits
inscrits
places_dispo
23
15
*
Dupont
ref reservations
*
tarif
Blanc
*
André
ref reservations
900
Martin
ref reservations
*
*
Bases de Données
ref reservations
*
9
Modèle objet pur
 Premier SGBD objet : 1983 (Gemstone)
 Approche : étendre le langage de programmation
objet aux fonctions de SGBD
 Persistance


orthogonale au type
langages : C++, smalltalk, Java/OQL
 Produits
 O2, ObjectStore, Ontos, Objectivity, Jasmine, Versant
 Niches technologiques
 réseau, CAO, SIG, Gestion de données Techniques
 pas de transactionnel lourd
Bases de Données
10
Règles d'or d'un SGBD Objet
Pour être qualifié d'objet, un SGBD doit respecter treize règles [Soutou99]
1.
Données persistantes

2.
Grande quantité de données

3.
Transactions et privilèges
Partages de données

5.
Techniques de regroupement physique, d'indexation, d'optimisation de
requêtes et de gestion de cache
Fiabilité des données

4.
Les données persistantes et non persistantes (temporaires) sont
manipulées de la même façon par un programme
multi-utilisateur  mécanismes de verrous
Facilité d'interrogation



Langage de requêtes.
Le résultat d'une requête n'est pas forcément un objet d'une classe
existante.
Le langage offre en outre la puissance d'un langage de programmation
11
Bases de Données
Règles d'or d'un SGBD Objet
1.
Encapsulation

2.
Objets composites

3.

Accès aux objets directement ou par des liens inter-objets via les OID
Objets partagés
Classes, types et méthodes


5.
Les structures de données à définir et à manipuler peuvent être
complexes
Identificateur d'objet

4.
Les données sont accessibles par des méthodes à différents degrés
(visibilité)
Types abstraits de données
Concepts de classes et de méthodes de l'approche objet
Héritage
Bases de Données
12
Règles d'or d'un SGBD Objet
1.
Surcharge et liaison dynamique

2.
Langage de programmation complet

3.
Les méthodes peuvent être surchargées. La liaison dynamique est
la capacité d'établir la correspondance entre le nom d'une
méthode et son implantation lors de l'exécution et non lors de la
compilation
Le système dispose d'un langage de programmation qui ne
nécessite pas d'opérateur externe pour écrire une application
Extensibilité

Le système autorise l'ajout dynamique de nouveaux types
abstraits de donnée, de nouvelles classes, de nouvelles méthodes,
etc.
Bases de Données
13
SGBDO ++
 Héritage multiple
 Gestion des versions
 CI
 Vues
 Evolution de schéma
 Persistance dynamique
Bases de Données
14
Atouts de la technologie objet
dans les bases de données
 Origine dans les langage de programmation objet
 Objectif principal de l'approche objet : augmenter
le niveau d'abstraction.
 Objet dans les SGBD : combiner les avantages



fichiers (simplicité et rapidité d'accès),
bases hiérarchiques ou réseaux (navigation entre objets)
bases relationnelles (langage de requêtes)
 Réduction des différences
 entre le langage de programmation et la BD,
 entre le monde à modéliser et le modèle de données
d'autre part
15
Bases de Données
Limites de la technologie objet
dans les bases de données
 Manque de théorie dans la conception d'un
schéma. Modèle de données :
 complexe
 manque
de maturité
 Tenue de charge des moteurs lorsque le
nombre d'utilisateurs concurrents augmente
d'une manière importante
Bases de Données
16
SGBD objet-relationnel
 Un SGBD objet-relationnel doit selon
Stonebraker prendre en compte les quatre
mécanismes suivants
 L'extension
des types de données
 Les objets complexes (en terme de structures de
données)
 L'héritage
 Les systèmes de règles
Bases de Données
17
Propriétés RICE
 Réutilisation
 finalité du paradigme objet
 héritage, généralité, composition, polymorphisme
 Identité
 identifier un objet de manière unique
 Complexité
 définition d ’objets complexes et/ou fortement
structurés
 Encapsulation
 boîte noire avec des méthodes de manipulation
Bases de Données
18
RICE/BDO/BDOR
BDO
BDOR
Réutilisation
Héritage multiple
Identité
OID
Héritage ?
Polymorphisme (surcharge) et
TEMPLATE(généricité)
ROW ID
Complexité
Collections (SET, BAG, LIST,
ARRAY)
Pointeurs REF et INVERSE
Attributs SET_VALUE et
GET_VALUE
Méthodes
Encapsulation
ADT
Collections (SET, LIST, MULTISET)
Opérateurs VALUE, REF et DEREF
FUNCTION et PROCEDURE associées à
ADT
Niveau d’encapsulation (public,
protected, private)
Bases de Données
19
Conclusion
 SQL3 et OQL se rapprochent
 SQL3 évolue vers SQL4
Bases de Données
20
Deux approches en BD
Smalltalk, C++, ...
Codd (69)
OODBMS
SQL
SQL2
ODMG 93
ODMG II
(97)
CA-Jasmine,
ObjectStore, O2
Versant, POET, ...
SQL3
SQL4
Convergence ?
Bases de Données
Oracle, Informix,
Sybase, IBM, DB2,
CA-OpenIngres
21
Les manifestos
 Codd, 1969
 Modèle relationnel
 Codd, 1990
 Modèle relationnel V2
 Atkinson et al. 1989
 The object-oriented Database System Manifesto
 Stonebraker et al. 1990
 Third generation Database System Manifesto
 Darwen et Date, 1995
 The third Manifesto
Bases de Données
22
Bibliographie
 Mokrane Boutzeghoub, Georges Gardarin, Patrick
Valduriez, "Les Objets", Eyrolles, 1998, 450
pages;
 R. Cattell, "Bases de données orientées objets",
Thomson Publishing, 1997, 395pages;
 Georges Gardarin, "Bases de données objet &
relationnel", Eyrolles, 1999, 780 pages.
Bases de Données
23
Bases de données objetrelationnel
Oracle 8
INT
Le modèle de données
 Le modèle de données objet-relationnel est une extension
du modèle de données relationnel
 Une des principales extensions consiste à manipuler des
structures de données complexes incluant


Des pointeurs (facilitent la navigation)
Des tables imbriquées (permettent de s'affranchir de la règle de la
première forme normale)
 Les objets sont stockés dans des tables objets-
relationnelles qui présentent des caractéristiques
semblables au modèle de données NF2 (Non First Normal
Form)
Une table au modèle NF2 peut contenir un attribut
qui est composé d'une liste de valeurs
Bases de Données
25
Exemple
Bases de Données
26
Exemple
Bases de Données
27
Oracle8 et l'objet-relationnel
 Oracle 8 est le premier serveur objet-relationnel d'Oracle
 Un des objetifs d'Oracle est de disposer de produits
permettant le développement du commerce électronique
basé sur un mécanisme transactionnel
 L'architecture d'Oracle est un montage trois tiers



Le client (navigateur Internet)
Le serveur applicatif (exécutable)
Le serveur de base de données
 Oracle ne met pas encore en oeuvre le mécanisme
d'héritage dans la version 8.0.x
Bases de Données
28
La programmation OO avec Oracle
 Dans PL/SQL la programmation orientée-objet est
basée sur des types objets (object types).
 Ces types objets fournissent
1) des modèles abstraits pour des objets du monde réel
2) l'encapsulation ("boîte noire").
 Pour utiliser un type objet dans un programme, il
suffit de connaître ce qu'il fait et non comment il
le fait.
Bases de Données
29
Le Type Objet
Un type objet est un type de données composé défini par
l'utilisateur, qui encapsule une structure de données ainsi
que les fonctions et procédures nécessaires à la
manipulation des données.
Les variables qui forment la structure de données sont
appelées des attributs et les fonctions/procédures qui
caractérisent le comportement du type objet sont les
méthodes.
Un objet a donc des attributs et un comportement.
Bases de Données
30
L'encapsulation des données
Les attributs et les méthodes sont encapsulées dans un type
objet.
La structure de données formée par les attributs est
publique. Toutefois, une programmation "stricte" ne devrait
pas directement manipuler les attributs mais appeler les
méthodes proposées.
Oracle prévoit la possibilité de définir une structure de
données dite privée, dont les attributs sont accessibles
uniquement via les méthodes.
Bases de Données
31
L'instance
Lorsque qu'une structure de données est remplie avec des
valeurs, une instance est crée.
Autant d'instances désirées peuvent être crées, souvent
appelées objets.
Bases de Données
32
La structure d'un type-objet
Un type-objet est formé de 2 parties:
1) une spécification
L'interface déclarant la structure de données (l'ensemble des attributs) ainsi que les
opérations (méthodes) associées à la manipulation de ces données.
2) un corps (body)
Il définit complètement les méthodes, et ainsi implémente la spécification.
Spécification
Déclaration des attributs
Interface publique
Spécification des méthodes
Corps
Implémentation privée
Corps des méthodes
Bases de Données
33
Remarques
 La notion d'encapsulation est déjà très forte dans PL/SQL grâce au
paradigme du package.
 Le paradigme du package permet de protéger les spécifications des
procédures. En effet, le corps d’une procédure peut être modifié tout en
conservant son en-tête, ainsi le programmeur n’a nul besoin de se
préoccuper de mettre à jour ses anciens programmes.
 On perçoit une analogie très forte entre le type objet et le package, non
seulement au niveau conceptuel mais également au niveau de la structure.
Bases de Données
34
La spécification d'un type objet
 Dans la spécification d'un type objet, tous les attributs doivent être
déclarés AVANT les méthodes
 Si la spécification d'un type objet déclare uniquement des attributs, le
corps du type objet est inutile.
 Il n'est pas possible de déclarer des attributs dans le corps d'un type
objet.
 Dans la spécification d'un type objet, il est possible de déclarer des
attributs et des méthodes, mais impossible de déclarer des constantes,
exceptions, curseurs ou types.
 Il est nécessaire de déclarer au moins un attribut (max. 1'000) dans un
type objet; les méthodes sont optionnelles.
Bases de Données
35
Les attributs
 Un attribut est déclaré avec un nom (unique dans le type objet) et un
type de données.
 Tous les types de données Oracle sont possibles à l'exception de:
LONG, LONG RAW, NCHAR, NCLOB, NVARCHAR2, MLSLABEL, ROWID,
BINARY_INTEGER, BOOLEAN, PLS_INTEGER, RECORD, REF CURSOR,
%TYPE, %ROWTYPE, et les types définis à l'intérieur d'un package PL/SQL.
 Un attribut ne peut pas être initialisé (pas de clause DEFAULT).
 La contrainte NOT NULL ne peut pas être imposée.
 La structure de données peut devenir très complexe. Par exemple, le
type de données d'un attribut peut être un autre type objet (appelé
"nested object type").
Bases de Données
36
Les méthodes
 Une méthodes est un sous-programme déclaré dans la spécification
d'un type objet par le mot-clé MEMBER.
 La méthode ne peut pas avoir le même nom que le type objet ni
qu'aucun des attributs.
 Une méthode se réfère aux attributs ou à d'autres méthodes du type
objet sans préfixe.
Bases de Données
37
Le paramètre SELF
 Toute méthode d'un type objet accepte une instance de ce type comme
premier paramètre (SELF).
 Ce paramètre peut être implicitement ou explicitement déclaré.
 Lorsque SELF n'est pas explicitement déclaré, son mode par défaut est

IN pour une fonction
 IN OUT pour une procédure.
 Dans le corps d'une méthode, SELF se réfère à l'objet appelant la
méthode.
 Le préfixe SELF n'est pas obligatoire lors de l'utilisation d'un attribut par
une méthode.
Bases de Données
38
La méthode CONSTRUCTOR
 Chaque objet est pourvu d'une méthode de construction appelée
CONSTRUCTOR, définie par le système avec le même nom que le type
objet.
 Une méthode de construction est une fonction utilisée pour initialiser et
retourner une instance de ce type objet.
 Le type des paramètres ainsi que leur ordre sont identiques à ceux des
attributs du type objet.
Bases de Données
39
La définition d'un type objet
CREATE [OR REPLACE] TYPE type_name AS OBJECT
(
att_name datatype [, att_name datatype] …
[ MEMBER {procedure_spec | function_spec}
[, MEMBER {procedure_spec | function_spec}] ] … );
[CREATE [OR REPLACE] TYPE BODY type_name AS
MEMBER {procedure_spec | function_spec};
[, MEMBER {procedure_spec | function_spec}; ] …
END ; ]
Bases de Données
40
Exemple
CREATE TYPE Nbre_rationnel AS OBJECT
(
Numerateur
INTEGER,
Denominateur
INTEGER,
MEMBER FUNCTION plus (x Nbre_rationnel) RETURN Nbre_rationnel,
MEMBER FUNCTION moins (x Nbre_rationnel) RETURN Nbre_rationnel,
MEMBER FUNCTION fois (x Nbre_rationnel) RETURN Nbre_rationnel );
CREATE TYPE BODY Nbre_rationnel AS
MEMBER FUNCTION plus (x Nbre_rationnel) RETURN Nbre_rationnel IS
r Nbre_rationnel;
BEGIN
-- retourne la somme de SELF et x
-- appel du CONSTRUCTOR
r:= Nbre_rationnel (numerateur * x.denominateur + x.numerateur * denominateur, denominateur * x. denominateur );
RETURN r;
END plus;
…
END;
Bases de Données
41
Les objets
Une fois un type objet défini et inséré au schéma, il peut être
utilisé pour déclarer des objets dans n'importe quel bloc
PL/SQL, sous-programme, ou package.
Bases de Données
42
La déclaration d'un objet
Les types objets peuvent être utilisés partout où un type prédéclaré tel que
CHAR ou NUMBER le serait.
Exemple:
DECLARE
r Nbre_rationnel;
BEGIN
-- appel de la méthode CONSTRUCTOR
r:= Nbre_rationnel (6,7);
DBMS_OUTPUT.PUT_LINE (r.numerateur);
…
Bases de Données
43
Initialisation d'un objet
 Tant qu'un objet n'a pas encore été initialisé par l'appel du
CONSTRUCTOR de son type objet, l'objet est atomiquement
nul.
 Un objet nul n'est jamais égal à un autre objet. Le fait de
comparer un objet NULL avec n'importe quel autre objet donne
toujours la valeur NULL.
Bases de Données
44
L'accès aux attributs
L'accès à un attribut peut se faire simplement par référence à son nom.
Pour accéder ou modifier la valeur d'un attribut, la notion pointée est
utilisée.
Exemple:
r.denominateur
r.numerateur
Les noms des attributs peuvent être enchaînés, ce qui permet d'accéder aux
attributs d'un "nested object type".
Bases de Données
45
Le partage d'objets
Le partage d'objets a deux avantages:
1) les données ne sont pas répliquées inutilement
2) lorsqu'un objet partagé est modifié, ce changement est effectué une seule fois et
n'importe quel référant a accès aux nouvelles valeurs.
Le mot-clé REF sert à déclarer les références. Il contient un pointeur sur un objet.
Exemple:
CREATE TYPE T_Ligne AS OBJECT
( Quantite
NUMBER,
Montant
NUMBER(10,2),
ProduitCommande REF T_Produit,
MEMBER PROCEDURE CalculMontant );
Bases de Données
46
La manipulation des objets
 Les types objets peuvent être utilisés dans les instructions SQL CREATE
TABLE pour spécifier le type de données d'une colonne.
 Dès qu'une table est créée, les instructions SQL sont utilisées pour insérer un
objet, sélectionner des attributs ou des méthodes et mettre à jour son état.
Exemple:
CREATE TABLE Nombre (nr Nbre_rationnel,…)
-- insère 3/7
INSERT INTO Nombre (nr) VALUES (Nbre_rationnel (3,7))
-- retourne 3
SELECT n.nr.numerateur INTO Mon_nombre FROM Nombre n WHERE …
-- modifie le numérateur à 10 et le dénominateur à 7 (3/7 +1= 10/7)
UPDATE Nombre n SET n.nr=n.nr.plus(Nbre_rationnel(1,1)) WHERE ...
Remarque:
Un alias est nécessaire lorsqu'un attribut ou une méthode est référencé.
Bases de Données
47
La table objet
 Une table stockant des objets de type objet sont appelées des tables objets.
 Chaque colonne dans un enregistrement correspont à un attribut du type
objet.
Exemple:
CREATE TABLE Nombre OF Nbre_rationnel;
Remarque:
Chaque enregistrement dans une table objet a un OID (object identifier), qui
identifie uniquement l'objet stocké dans une enregistrement et sert comme
référence à l'objet.
Bases de Données
48
L'accès aux objets référencés
La navigation à travers à un objet référencé dans une
instruction procédurale PL/SQL n'est pas possible.
Il est impératif de passer par l'opérateur DEREF dans
une instruction SQL. (DEREF-"déréférence":
lorsqu'un pointeur est "déréférencé", la valeur de
l'objet pointé est retourné)
L'opérateur DEREF prend comme paramètre une
référence à un objet, puis retourne la valeur de l'objet.
Bases de Données
49
Exemple
Considérons le type objet suivant:
CREATE TYPE T_Commande AS OBJECT
(
DateCommande DATE,
Rabais
NUMBER,
MontantTotal
NUMBER(10,2),
Emetteur
REF T_Client,
Lignes
T_lignes,
MEMBER FUNCTION Destinataire RETURN T_Client,
);
La requête suivante "déréférence" la référence à un objet de type
T_Client
UnClient T_CLient;
BEGIN
SELECT DEREF(Emetteur) INTO UnClient FROM …;
Bases de Données
50
Traduction d'un diagramme de
classe UML
Editeurs
Editeur
Livre
{UNIQUE : nomEditeur}
nomEditeur : String
1
ville : String
{UNIQUE : ISBN}
1..n ISBN : String
titre : String
anneeParution: TypeDonneesAnnee
nblivres() : number
<<datatype>>
TypeDonneesAnnee
{Integer > 0}
Bases de Données
52
Traduction des classes
type
utilisateu
r
CREATE OR REPLACE TYPE TypeDonnéesAnnée AS OBJECT
(valeurAnnee INTEGER)
/
CREATE OR REPLACE TYPE EditeurType AS OBJECT
Intention
(nomEditeur
VARCHAR(20),
ville
VARCHAR(20),
)
CREATE TYPE LivreType AS OBJECT
(ISBN
CHAR(13),
titre
VARCHAR(50),
anneeParution
TypeDonneesAnnée,
table d'objets
editeur
REF EditeurType
)
contiendra
/
extension
CREATE TABLE Editeur OF EditeurType
(PRIMARY KEY(nomEditeur))
/
contrainte
CREATE TABLE Livre OF LivreType
définie
(PRIMARY KEY(ISBN),
dans table
CONSTRAINT anneeSup0 CHECK(anneeParution.valeurAnnee > 0),
CONSTRAINT referenceTableEditeur editeur SCOPE IS Editeur)
Bases de Données
53
Traduction des associations
CREATE TYPE LivreType AS OBJECT
(ISBN
CHAR(13),
titre
VARCHAR(50),
annéeParution
TypeDonnéesAnnée,
éditeur
REF EditeurType
)
qui existe …
CREATE TABLE Livre OF LivreType
(PRIMARY KEY(ISBN),
CONSTRAINT annéeSup0 CHECK(annéeParution.valeurAnnée >
0),
CONSTRAINT referenceTableEditeur éditeur SCOPE IS
Editeur)
 Intégrité référentielle : suppression d'objet référencé autorisée
Bases de Données
54
Circularité des références
CREATE OR REPLACE TYPE EditeurType
CREATE TYPE LivreType AS OBJECT
(ISBN
CHAR(13),
titre
VARCHAR(50),
annéeParution
TypeDonnéesAnnée,
éditeur
REF EditeurType)
CREATE OR REPLACE TYPE LivreRefType AS OBJECT
(livreRef
REF
LivreType)
CREATE TYPE tableRefLivresType AS TABLE OF LivreRefType
CREATE OR REPLACE TYPE EditeurType AS OBJECT
(nomEditeur
VARCHAR(20),
ville
VARCHAR(20),
lesLivres
tableRefLivresType)
CREATE TABLE Editeur OF EditeurType
(PRIMARY KEY(nomEditeur))
NESTED TABLE lesLivres STORE AS tableLesLivres
CREATE TABLE Livre OF LivreType
(PRIMARY KEY(ISBN),
CONSTRAINT annéeSup0 CHECK(annéeParution.valeurAnnée > 0),
CONSTRAINT referenceTableEditeur éditeur SCOPE IS Editeur)
Bases de Données
55
Traduction des associations (2)
CREATE TYPE LivreRefType AS OBJECT
(livreRef
REF
LivreType)
/
CREATE TYPE tableRefLivresType AS
TABLE OF LivreRefType
/
CREATE TYPE EditeurType AS OBJECT
(nomEditeur
VARCHAR(20),
ville
VARCHAR(20),
lesLivres
tableRefLivresType
)
/
CREATE TABLE Editeur OF EditeurType
(PRIMARY KEY(nomEditeur))
NESTED TABLE lesLivres STORE AS tableLesLivres
/
Bases de Données
56
Traduction des méthodes
create or replace type editeurType as object
(nomEditeur
VARCHAR(20),
ville
VARCHAR(20),
MEMBER FUNCTION nbLivres RETURN NUMBER,
PRAGMA RESTRICT_REFERENCES(nbLivres, WNDS) )
create or replace type body EditeurType as
MEMBER FUNCTION nbLivres RETURN NUMBER IS
nb NUMBER;
BEGIN
SELECT COUNT(*) INTO nb FROM Livre l WHERE l.editeur = SELF;
RETURN nb;
END nbLivres;
END;
SELECT e.nbLivres() FROM Editeur e WHERE e.nomEditeur ='Addison-Wesley'
Bases de Données
57
Manipulation des tables
imbriquées
 Opérateur d'applatissement THE
SELECT livres.livreref.ISBN, livres.livreref.titre
FROM THE(
SELECT e.lesLivres
FROM Editeur e
WHERE nomEditeur = 'Addison-Wesley') livres
Bases de Données
58
Manipulation des tables
imbriquées
 Opérateur d'applatissement THE avec INSERT
INSERT INTO Editeur values ('Loze-Dion', 'Longueil', tableRefLivresType())
INSERT INTO Editeur VALUES ('Addison-Wesley', 'Reading,
MA',tableRefLivresType())
-- Insertion de livres
INSERT INTO Livre
SELECT '0-201-12227-8', 'Automatic Text Processing',
TypeDonnéesAnnée(1989), REF(e)
FROM Editeur e WHERE nomEditeur = 'Addison-Wesley'
INSERT INTO THE
(SELECT e.lesLivres FROM Editeur e
WHERE e.nomEditeur = 'Addison-Wesley')
SELECT REF(l) FROM Livre l
WHERE l.ISBN = '0-201-12227-8'
Bases de Données
59
Alors …
Objet ou relationnel ?
Relationnel vs. objet: le modèle relationnel
POUR
CONTRE
 Le modèle relationnel est
 Le modèle relationnel ne
adapté à un grand nombre
d'applications (de gestion par
exemple), qui utilisent des types
simples de données.
 Le modèle relationnel est basé
sur une théorie "scientifique" et
a été mis à l'épreuve ces 15
dernières années:

travaux de Codd;
 ...
permet pas de représenter
certaines entités complexes du
monde réel.
 Les jointures peuvent être des
opérations relativement lourdes.
 ...
 Le modèle relationnel est facile
à comprendre.
Bases de Données
61
Relationnel vs. objet: le modèle objet
POUR
CONTRE
 Les objets permettent de
 Les SGBDO posent un
représenter [plus]
naturellement des entités
du monde réel:

certain nombre de
problèmes:

objets complexes.

 Les objets offrent une

plus grande souplesse
pour gérer les structures
de données complexes
(multimedia, CAO,
AGL, etc.)
gestion des objets en
mémoire et dans la base;
performance d'accès aux
objets;
concurrence d'accès aux
objets.
 ...
Bases de Données
62
Evolution des SGBD
Relationnelobjet
Relationnel
Relationnel-objet
Relationnel
Objet
Objet
Nouveau
paradigme
temps
Bases de Données
63
Relationnel, objet, ou objetrelationnel?
Complexité
des requêtes
Relationnel
Relationnel
Georges Gardarin, "Bases de données objet & relationnel",
Eyrolles, 1999
Objetrelationnel
Objet
Bases de Données
Complexité
des données
64
Téléchargement