Les bases de données et l’objet

64
Les bases de données et l’objet INT

description

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. Atouts du relationnel. Très bon support théorique - PowerPoint PPT Presentation

Transcript of Les bases de données et l’objet

Page 1: Les bases de données et l’objet

Les bases de données et l’objet

INT

Page 2: Les bases de données et l’objet

Bases de Données 2

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

Page 3: Les bases de données et l’objet

Bases de Données 3

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

Page 4: Les bases de données et l’objet

Bases de Données 4

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

Page 5: Les bases de données et l’objet

Bases de Données 5

Limite du relationnel (2)

Modèle plat : pas de données complexes Difficile d ’exprimer des choses structurées

1FN nbre relations Difficile de naviguer dans la structure

Jointure -> inadaptés aux application navigationnelles (réseaux, CAO)

Pas de types nouveaux 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

Page 6: Les bases de données et l’objet

Bases de Données 6

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

Page 7: Les bases de données et l’objet

Bases de Données 7

Définition d'un objet (2) Associe traitements (méthodes) et données dans une même entité. L'interface est le seul moyen d'accéder à l'objet, par l'envoi de messages.

"Abstraction informatique d'une entité du monde réel caractérisée par une identité, un état et un comportement." [Gardarin, "Bases de Données objets & relationnel", Eyrolles, 1999]

MéthodeMéthode

MéthodeMéthode

MéthodeMéthodeInte

rfac

e

MéthodeMéthode

MéthodeMéthode

DonnéesDonnées

Objet

Messages

Page 8: Les bases de données et l’objet

Bases de Données 8

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.

Page 9: Les bases de données et l’objet

Bases de Données 9

Exemple VolAF417/15mars95

tarif places_dispoinscrits

VolUTA75/16mars95

inscrits places_dispotarif

Dupont Blanc André Martin

1000 23 15 900

ref reservations ref reservations ref reservations ref reservations

Page 10: Les bases de données et l’objet

Bases de Données 10

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

Page 11: Les bases de données et l’objet

Bases de Données 11

Règles d'or d'un SGBD ObjetPour être qualifié d'objet, un SGBD doit respecter treize règles [Soutou99]1. Données persistantes

Les données persistantes et non persistantes (temporaires) sont manipulées de la même façon par un programme

2. Grande quantité de données Techniques de regroupement physique, d'indexation, d'optimisation de requêtes et

de gestion de cache

3. Fiabilité des données Transactions et privilèges

4. Partages de données multi-utilisateur mécanismes de verrous

5. 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

Page 12: Les bases de données et l’objet

Bases de Données 12

Règles d'or d'un SGBD Objet1. Encapsulation

Les données sont accessibles par des méthodes à différents degrés (visibilité)

2. Objets composites Les structures de données à définir et à manipuler peuvent être

complexes

3. Identificateur d'objet Accès aux objets directement ou par des liens inter-objets via les OID Objets partagés

4. Classes, types et méthodes Types abstraits de données Concepts de classes et de méthodes de l'approche objet

5. Héritage

Page 13: Les bases de données et l’objet

Bases de Données 13

Règles d'or d'un SGBD Objet

1. Surcharge et liaison dynamique 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

2. Langage de programmation complet Le système dispose d'un langage de programmation qui ne

nécessite pas d'opérateur externe pour écrire une application

3. Extensibilité Le système autorise l'ajout dynamique de nouveaux types

abstraits de donnée, de nouvelles classes, de nouvelles méthodes, etc.

Page 14: Les bases de données et l’objet

Bases de Données 14

SGBDO ++

Héritage multiple Gestion des versions CI Vues Evolution de schéma Persistance dynamique

Page 15: Les bases de données et l’objet

Bases de Données 15

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

Page 16: Les bases de données et l’objet

Bases de Données 16

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

Page 17: Les bases de données et l’objet

Bases de Données 17

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

Page 18: Les bases de données et l’objet

Bases de Données 18

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

Page 19: Les bases de données et l’objet

Bases de Données 19

RICE/BDO/BDOR

BDO BDOR

Réutilisation Héritage multiple Héritage ? Polymorphisme (surcharge) et TEMPLATE(généricité)

Identité OID ROW ID

Complexité Collections (SET, BAG, LIST, ARRAY) Pointeurs REF et INVERSE

ADT Collections (SET, LIST, MULTISET) Opérateurs VALUE, REF et DEREF

Encapsulation Attributs SET_VALUE et GET_VALUE Méthodes

FUNCTION et PROCEDURE associées à ADT Niveau d’encapsulation (public, protected, private)

Page 20: Les bases de données et l’objet

Bases de Données 20

Conclusion

SQL3 et OQL se rapprochent SQL3 évolue vers SQL4

Page 21: Les bases de données et l’objet

Bases de Données 21

Deux approches en BD

Smalltalk, C++, ...

OODBMS

ODMG 93

ODMG II(97)

Codd (69)

SQL

SQL2

SQL3

SQL4

Convergence ?

CA-Jasmine,ObjectStore, O2Versant, POET, ...

Oracle, Informix, Sybase, IBM, DB2, CA-OpenIngres

Page 22: Les bases de données et l’objet

Bases de Données 22

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

Page 23: Les bases de données et l’objet

Bases de Données 23

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.

Page 24: Les bases de données et l’objet

Bases de données objet-relationnel

Oracle 8

INT

Page 25: Les bases de données et l’objet

Bases de Données 25

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

Page 26: Les bases de données et l’objet

Bases de Données 26

Exemple

Page 27: Les bases de données et l’objet

Bases de Données 27

Exemple

Page 28: Les bases de données et l’objet

Bases de Données 28

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

Page 29: Les bases de données et l’objet

Bases de Données 29

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 fournissent1) 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.

Page 30: Les bases de données et l’objet

Bases de Données 30

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.

Page 31: Les bases de données et l’objet

Bases de Données 31

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.

Page 32: Les bases de données et l’objet

Bases de Données 32

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.

Page 33: Les bases de données et l’objet

Bases de Données 33

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

Spécification des méthodes

Corps

Corps des méthodes

Interface publique

Implémentation privée

Page 34: Les bases de données et l’objet

Bases de Données 34

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.

Page 35: Les bases de données et l’objet

Bases de Données 35

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.

Page 36: Les bases de données et l’objet

Bases de Données 36

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").

Page 37: Les bases de données et l’objet

Bases de Données 37

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.

Page 38: Les bases de données et l’objet

Bases de Données 38

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.

Page 39: Les bases de données et l’objet

Bases de Données 39

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.

Page 40: Les bases de données et l’objet

Bases de Données 40

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 ; ]

Page 41: Les bases de données et l’objet

Bases de Données 41

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 ISr Nbre_rationnel;BEGIN

-- retourne la somme de SELF et x-- appel du CONSTRUCTORr:= Nbre_rationnel (numerateur * x.denominateur + x.numerateur * denominateur, denominateur * x. denominateur );RETURN r;

END plus;…

END;

Page 42: Les bases de données et l’objet

Bases de Données 42

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.

Page 43: Les bases de données et l’objet

Bases de Données 43

La déclaration d'un objetLes 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);

Page 44: Les bases de données et l’objet

Bases de Données 44

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.

Page 45: Les bases de données et l’objet

Bases de Données 45

L'accès aux attributsL'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.denominateurr.numerateur

Les noms des attributs peuvent être enchaînés, ce qui permet d'accéder aux attributs d'un "nested object type".

Page 46: Les bases de données et l’objet

Bases de Données 46

Le partage d'objetsLe partage d'objets a deux avantages:

1) les données ne sont pas répliquées inutilement2) 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 );

Page 47: Les bases de données et l’objet

Bases de Données 47

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/7INSERT INTO Nombre (nr) VALUES (Nbre_rationnel (3,7))-- retourne 3SELECT 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é.

Page 48: Les bases de données et l’objet

Bases de Données 48

La table objetUne 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.

Page 49: Les bases de données et l’objet

Bases de Données 49

L'accès aux objets référencésLa 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.

Page 50: Les bases de données et l’objet

Bases de Données 50

ExempleConsidé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_ClientUnClient T_CLient;

BEGINSELECT DEREF(Emetteur) INTO UnClient FROM …;

Page 51: Les bases de données et l’objet

Traduction d'un diagramme de classe UML

Page 52: Les bases de données et l’objet

Bases de Données 52

Editeurs

Editeur

{UNIQUE : nomEditeur}nomEditeur : Stringville : String

Livre

{UNIQUE : ISBN}ISBN : Stringtitre : StringanneeParution: TypeDonneesAnnee

1 1..n

<<datatype>>TypeDonneesAnnee

{Integer > 0}

nblivres() : number

Page 53: Les bases de données et l’objet

Bases de Données 53

Traduction des classesCREATE OR REPLACE TYPE TypeDonnéesAnnée AS OBJECT

(valeurAnnee INTEGER)/CREATE OR REPLACE TYPE EditeurType AS OBJECT(nomEditeur VARCHAR(20), ville VARCHAR(20),)CREATE TYPE LivreType AS OBJECT(ISBN CHAR(13), titre VARCHAR(50), anneeParution TypeDonneesAnnée, editeur REF EditeurType)/CREATE TABLE Editeur OF EditeurType(PRIMARY KEY(nomEditeur))/CREATE TABLE Livre OF LivreType(PRIMARY KEY(ISBN),CONSTRAINT anneeSup0 CHECK(anneeParution.valeurAnnee > 0),CONSTRAINT referenceTableEditeur editeur SCOPE IS Editeur)

Intention

table d'objetscontiendra extension

contrainte définie

dans table

type utilisateu

r

Page 54: Les bases de données et l’objet

Bases de Données 54

Traduction des associationsCREATE 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

Page 55: Les bases de données et l’objet

Bases de Données 55

Circularité des référencesCREATE OR REPLACE TYPE EditeurTypeCREATE 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 LivreRefTypeCREATE 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 tableLesLivresCREATE TABLE Livre OF LivreType(PRIMARY KEY(ISBN),CONSTRAINT annéeSup0 CHECK(annéeParution.valeurAnnée > 0),CONSTRAINT referenceTableEditeur éditeur SCOPE IS Editeur)

Page 56: Les bases de données et l’objet

Bases de Données 56

Traduction des associations (2)CREATE TYPE LivreRefType AS OBJECT(livreRefREF LivreType)/CREATE TYPE tableRefLivresType ASTABLE 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/

Page 57: Les bases de données et l’objet

Bases de Données 57

Traduction des méthodescreate 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 asMEMBER 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'

Page 58: Les bases de données et l’objet

Bases de Données 58

Manipulation des tables imbriquées Opérateur d'applatissement THESELECT livres.livreref.ISBN, livres.livreref.titre

FROM THE(

SELECT e.lesLivres

FROM Editeur e

WHERE nomEditeur = 'Addison-Wesley') livres

Page 59: Les bases de données et l’objet

Bases de Données 59

Manipulation des tables imbriquées Opérateur d'applatissement THE avec INSERTINSERT INTO Editeur values ('Loze-Dion', 'Longueil', tableRefLivresType())INSERT INTO Editeur VALUES ('Addison-Wesley', 'Reading,

MA',tableRefLivresType())-- Insertion de livresINSERT INTO LivreSELECT '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'

Page 60: Les bases de données et l’objet

Alors …

Objet ou relationnel ?

Page 61: Les bases de données et l’objet

Bases de Données 61

Relationnel vs. objet: le modèle relationnel

Le modèle relationnel est 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; ...

Le modèle relationnel est facile à comprendre.

...

Le modèle relationnel ne permet pas de représenter certaines entités complexes du monde réel.

Les jointures peuvent être des opérations relativement lourdes.

...

POUR CONTRE

Page 62: Les bases de données et l’objet

Bases de Données 62

Relationnel vs. objet: le modèle objet

Les objets permettent de représenter [plus] naturellement des entités du monde réel: objets complexes.

Les objets offrent une plus grande souplesse pour gérer les structures de données complexes (multimedia, CAO, AGL, etc.)

Les SGBDO posent un certain nombre de problèmes: gestion des objets en

mémoire et dans la base; performance d'accès aux

objets; concurrence d'accès aux

objets.

...

POUR CONTRE

Page 63: Les bases de données et l’objet

Bases de Données 63

Evolution des SGBD

RelationnelRelationnel

ObjetObjet

temps

Relationnel-objet

Relationnel-objet

?Objet

Relationnel-objet

Relationnel

Nouveauparadigme

Page 64: Les bases de données et l’objet

Bases de Données 64

Relationnel, objet, ou objet-relationnel?

Complexitédes données

Complexitédes requêtes

RelationnelRelationnel

Objet-relationnel

Objet-relationnelRelationnelRelationnel

ObjetObjet

Georges Gardarin, "Bases de données objet & relationnel", Eyrolles, 1999