les standards des sgbd du futur (survol)

59
Les standards des Les standards des SGBD du Futur SGBD du Futur (survol) (survol) Prof Serge Miranda Prof Serge Miranda Juin 2005 Juin 2005 DATA BASE forum

Upload: brenna

Post on 13-Jan-2016

48 views

Category:

Documents


0 download

DESCRIPTION

DATA BASE forum. Les standards des SGBD du Futur (survol). Prof Serge Miranda Juin 2005. Un peu de PUB…. Plan. Les quadrants de Stonebraker Présentaion de SQL3 et ODMG su un exemple Bilan synthétique. Police. Nom. Adresse. Conducteurs. Accidents. Age. Conducteur. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Les standards des SGBD du Futur (survol)

Les standards des Les standards des SGBD du FuturSGBD du Futur

(survol)(survol)

Prof Serge MirandaProf Serge Miranda

Juin 2005Juin 2005

DATA BASE forum

Page 2: Les standards des SGBD du Futur (survol)

Un peu de PUB…Un peu de PUB…

Page 3: Les standards des SGBD du Futur (survol)

PlanPlan

Les quadrants de Les quadrants de StonebrakerStonebraker

Présentaion de Présentaion de SQL3 et ODMG su SQL3 et ODMG su un exempleun exemple

Bilan synthétiqueBilan synthétique

Page 4: Les standards des SGBD du Futur (survol)

24 ParisPaul

ConducteurAge

45Paul

17Robert

Rapport

134

219

Photo

037

Accident

Table ? Objet ?

Police NomAdresse Conducteurs Accidents

Exemple de table et objet (Oracle)

Page 5: Les standards des SGBD du Futur (survol)

Surfeurs sur la vague OR….

Page 6: Les standards des SGBD du Futur (survol)

Faiblesses du modèle relationnel

• Opérations séparées des données– procédures stockées non intégrées DM– absence d'attributs cachés

• Support de domaines atomiques– 1ère forme normale de Codd– inadapté aux objets complexes

(documents structurés)– introduction des BLOB….

• Mauvais support des applications non gestion :CAO, CFAO, BD Géographiques,BD techniques

Page 7: Les standards des SGBD du Futur (survol)

Langage Prog.OBJET

Modèle Relationnelde Codd (V1)

Modèle OR(Objet- Relationnel)

Modèle OR ?

PropriétésRICE

PropriétésTIPS

Propriétés TIPS + RICE

1- Compatibilité ascendante"Réutiliser et enrichir l'existant" CNAF (4 Dec 1996)2- "Evoluer en douceur vers l'objet"

Page 8: Les standards des SGBD du Futur (survol)

Evolution de l'informatique etOBJET

1965LP OS

1970 LP

IA SGF SGBD

OS : Operating SERVICES ?

Page 9: Les standards des SGBD du Futur (survol)

Evolution de l'informatique

Services OS :

Gestion des ressources physiques

algorithme de pagination Sécurité

Confidentialité d'ACCES Contrôle de Synchronisation (sémaphores,verrouillage, deadlock, ... )

Modélisation : (" processus ") •.... pas de langage de programmation

1970 OS SGBDR SGF

Services SGBD-R ( Propriétés TIPS ): (P) GestionPersistance

LRU ++

(T) Sécurité & Transactionnel

Intégrité

S) Structuration/ Schéma via des modèles de données

• (I) Interface utilisateur Non procédurale(SQL)

Page 10: Les standards des SGBD du Futur (survol)

Evolution de l'informatique et OBJET

198OOS

SGBD-R

SGBD-ROS

LP

IA

1990 OS

Objet LP SGBD-R

IA

Page 11: Les standards des SGBD du Futur (survol)

Evolution de l'informatique

2000 ?" Il est dur de prédire, particulièrement ... le futur " N.Boehr

?

? ?

SERVICES ?

Page 12: Les standards des SGBD du Futur (survol)

Evolution du logiciel et OBJETS

DONNEES TRAITEMENTS

OBJETS

SGBD-R L.P ( SQL ) ( Prog. structurée )

GENIE LOGICIEL

COMMUNICATION

Page 13: Les standards des SGBD du Futur (survol)

Approche Objet et développement d'application

INTERFACE

APPLICATION

SGBD

Approche Objet

IntégrationObjet

DB

PB : " IMPEDANCE MISMATCH «  et productivité du développeur

Page 14: Les standards des SGBD du Futur (survol)

Marché BD et standards ?Marché BD et standards ?(Stonebraker 96 et Gartner)

SGBD- R SGBD-OR

Traitements

SQL

NonSQL

(1) (2)

SGF SGBD- OO(3)

(1) : 8 G$ en 1995 (30 % de croissance)

(3) : 1/100 de (1) en 1995 et 2008

(2) : 1/2 de (3) en 1995 ; 2*(1) en 2008 !

SQL2 SQL3

ODMG

Simples Complexes Données

Page 15: Les standards des SGBD du Futur (survol)

Visions de l'Objet

VISION DOUBLE :

(i) LP : objet "encapsulé”

Opérateurs SPECIFIQUES (classes, propriétés)

héritage (instantiation) Polymorphisme

(ii) BD : objet "structuré”

opérateurs GENERIQUES (algèbre, ...) Persistance Concurrence / reprise sur panne

Dualité des concepts structurels

Page 16: Les standards des SGBD du Futur (survol)

Propriétés RICE d'unSGBD OBJET

(Miranda, 2002) Dunod

(Incrémentales par rapport à un SGBD relationnel)

R (Réutilisabilité) : "Héritage" ou "polymorphisme"

==> Graphe héritageI (Identification système)

C (Constructeurs d'objets complexes) Orthogonalité TUPLE et SET

==> Graphes d'agrégationE ("Encapsulation")

"Messages", "Méthodes", "CLASSES d’Objets »

DEFINITION : Une CLASSE d ’OBJETS - est un (« valeurs potentielles ») - possède un (« valeurs réelles »)

TYPE de DONNEES qui vérifie les propriétés RICE....

Page 17: Les standards des SGBD du Futur (survol)

Définition Classe d’Objets ?

DEFINITION : Une CLASSE d ’OBJETS - est un (« valeurs potentielles ») - possède un (« valeurs réelles »)

TYPE de DONNEES qui vérifie les propriétés RICE....

Page 18: Les standards des SGBD du Futur (survol)

Consortium ODMGConsortium ODMG

Créé en 1991 par Rick Cattell (SUN, Javasoft) comme Créé en 1991 par Rick Cattell (SUN, Javasoft) comme sous groupe de l’ OMG (sous groupe de l’ OMG (Object Management Group) Object Management Group) avec les éditeurs suivants: 02 Tech., Objectivity, Object avec les éditeurs suivants: 02 Tech., Objectivity, Object Design, Ontos, VersantDesign, Ontos, Versant

OMG : CORBA,…OMG : CORBA,…

plus de 50 organisations de l’industrie et de plus de 50 organisations de l’industrie et de l’informatique en 2000l’informatique en 2000

(Lucent, Lockheed, CA, Microsoft, Baan, ...)(Lucent, Lockheed, CA, Microsoft, Baan, ...)

Objectifs:Objectifs: Promouvoir les OO DBMS,Promouvoir les OO DBMS, FUD FUD , au delà des , au delà des

niches et standard avant …SQL3 !niches et standard avant …SQL3 ! Créer un standard pour garantir l’indépendance Créer un standard pour garantir l’indépendance

entre OODBMS (entre OODBMS (Portability)Portability)

Page 19: Les standards des SGBD du Futur (survol)

Historique du standard Historique du standard « 00 »« 00 »

Objectif « portabilité Objectif « portabilité Code »Code » Première réunion à l’initiative de Rick Première réunion à l’initiative de Rick

Catell chez Sun en Sept 91Catell chez Sun en Sept 91 ODMG 1.0 (1993) : 5 EditeursODMG 1.0 (1993) : 5 Editeurs

ODL, OQL, Interface C++, SmalltalkODL, OQL, Interface C++, Smalltalk ODMG 2.0 (1996) : 10 Editeurs (Poet, ODMG 2.0 (1996) : 10 Editeurs (Poet,

Lucent, Windward, American Man, Barry)Lucent, Windward, American Man, Barry) Interface JavaInterface Java (Java Binding) (Java Binding) , , Meta Model, OIFMeta Model, OIF

ODMG 3.0 (2000)ODMG 3.0 (2000) enrichissement interface Javaenrichissement interface Java Accent sur intégration avec OMG et X3H2 ( SQL3)Accent sur intégration avec OMG et X3H2 ( SQL3)

Page 20: Les standards des SGBD du Futur (survol)

Composants du standard ODMG 3.0Composants du standard ODMG 3.0

SGBDOO

OQL OML C++ OML Smalltalk

Adaptation du modèle objet de l'OMGAdaptation du modèle objet de l'OMG Interfaces d'accès à un SGBDOOInterfaces d'accès à un SGBDOO

OML Java

ODL

OIF

Page 21: Les standards des SGBD du Futur (survol)

Composants du Composants du standard standard ODMG 3.0ODMG 3.0

Modèle de données Objet dérivé de Modèle de données Objet dérivé de l’OMGl’OMG

Langages de spécificationsLangages de spécifications ODL : langage de définition d’objetsODL : langage de définition d’objets OIF (OIF (object Interchange Formatobject Interchange Format) : ) :

import/exportimport/export Langage de requête : OQL (avec Langage de requête : OQL (avec

retour sur base SQL)retour sur base SQL) OML (avec Liaisons)OML (avec Liaisons)

C++, SMALLTALK et JAVAC++, SMALLTALK et JAVA

Page 22: Les standards des SGBD du Futur (survol)

Composants du Composants du standard standard ODMG 3.0ODMG 3.0

Modèle de données Objet dérivé de Modèle de données Objet dérivé de l’OMGl’OMG

Langages de spécificationsLangages de spécifications ODL : langage de définition d’objetsODL : langage de définition d’objets OIF (OIF (object Interchange Formatobject Interchange Format) : ) :

import/exportimport/export Langage de requête : OQL (avec Langage de requête : OQL (avec

retour sur base SQL)retour sur base SQL) OML (avec Liaisons)OML (avec Liaisons)

C++, SMALLTALK et JAVAC++, SMALLTALK et JAVA

Page 23: Les standards des SGBD du Futur (survol)

RICE et ODMGRICE et ODMG RR * HERITAGE MULTIPLE (C++)* HERITAGE MULTIPLE (C++) II * OID* OID CC * STRUCTURE* STRUCTURE

* COLLECTIONS : * COLLECTIONS : SET, BAG, LIST, ARRAY, SET, BAG, LIST, ARRAY,

DictionaryDictionary* pointeurs bidirect. * pointeurs bidirect. REFREF et et

INVERSEINVERSE EE * Objets avec méthodes* Objets avec méthodes

Page 24: Les standards des SGBD du Futur (survol)

1. Expression de chemin mono-valuée

- Séquence d'attributs ou associations (« relationship ») mono-valués de la forme X1.X2…Xn telle que chaque Xi à l'exception du dernier contienne une référence à un objet ou un litéral unique sur lequel le suivant s'applique.

- Utilisable en place d'un attribut SQL dans SELECT ou WHERE

2) Collection dépendante

- Collection obtenue à partir d'un objet, soit parce qu'elle est imbriquée dans l'objet ou pointée par l'objet.

- Utilisable dans FROM

OQL (nouveautés « SQL »)

Page 25: Les standards des SGBD du Futur (survol)

Exemple ODLExemple ODL

Liaison C++Liaison C++

CLASS employe { CLASS employe {

E# INT,E# INT,

Nom STRING,Nom STRING,

Adresse ADDRESS <Adresse ADDRESS <autre classeautre classe>>

//méthodes...}//méthodes...}

Page 26: Les standards des SGBD du Futur (survol)

Exemple ODLExemple ODL

CLASS CLASS pilote : employepilote : employe { {Nbre-H-Vol# INT,Nbre-H-Vol# INT,salaire FLOAT,salaire FLOAT,SET REF <vol> assure INVERSE est_assuré_parSET REF <vol> assure INVERSE est_assuré_par//méthodes...}//méthodes...}

CLASS vol {CLASS vol {V# STRING,V# STRING,REF <pilote> est_assuré_par INVERSE assure,REF <pilote> est_assuré_par INVERSE assure,REF <avion> utilise INVERSE est_utilisé_dansREF <avion> utilise INVERSE est_utilisé_dans,.,.VD...}VD...}

Page 27: Les standards des SGBD du Futur (survol)

Exemple ODLExemple ODL

CLASS avion : {CLASS avion : {av# INT,av# INT,

avnom STRING,avnom STRING,

……

SET REF <vol> est_utilisé_dans SET REF <vol> est_utilisé_dans INVERSE utiliseINVERSE utilise

……}}

Page 28: Les standards des SGBD du Futur (survol)

Exemple OQLExemple OQLQuels sont les numéros des vols Quels sont les numéros des vols

assurés par un pilote de nom assurés par un pilote de nom 'Serge' ?'Serge' ?

1) 1) SELECT v.v#SELECT v.v#FROM FROM

v IN volv IN volp IN v.est_assure_parp IN v.est_assure_par

WHERE p.Nom = 'Serge' ;WHERE p.Nom = 'Serge' ;

Page 29: Les standards des SGBD du Futur (survol)

Exemple OQLExemple OQLQuels sont les numéros des vols Quels sont les numéros des vols

assurés par un pilote de nom assurés par un pilote de nom 'Serge' ?'Serge' ? 2 2 Select v.v# Select v.v#

from v IN volfrom v IN volwherewhere

v.est_assure_par.Nomv.est_assure_par.Nom=‘Serge’;=‘Serge’;

<Expression<Expression monovaluée monovaluée X1.X2.X3X1.X2.X3>>

Page 30: Les standards des SGBD du Futur (survol)

Exemple OQLExemple OQL Quels sont les noms des avions conduits Quels sont les noms des avions conduits

par un pilote Niçois ?par un pilote Niçois ?<Parcours d’ associations multivaluées en <Parcours d’ associations multivaluées en

utilisant des collections dépendantes>utilisant des collections dépendantes>1) 1) SELECT SELECT a.avnoma.avnomFROMFROM a in avion a in avion <in COLLECTION<in COLLECTION>>

v in a.est_utilisé_dans v in a.est_utilisé_dans <in COLLECTION><in COLLECTION>

p in v.est_assuré_parp in v.est_assuré_parWHEREWHERE p.adr = ‘ Nice ’ ;p.adr = ‘ Nice ’ ;

Page 31: Les standards des SGBD du Futur (survol)

Exemple OQLExemple OQL Quels sont les noms des avions Quels sont les noms des avions

conduits par un pilote Niçois ?conduits par un pilote Niçois ?<Parcours d’ associations multivaluées en <Parcours d’ associations multivaluées en

utilisant des collections dépendantes>utilisant des collections dépendantes>2)2)SELECT SELECT a.avnoma.avnomFROMFROM a in avion a in avion <in COLLECTION<in COLLECTION>>

v in a.est_utilisé_dans v in a.est_utilisé_dans <in <in COLLECTION>COLLECTION>

WHEREWHERE v.est_assuré_par.adrv.est_assuré_par.adr= ‘Nice’= ‘Nice’ <Expression><Expression>

Page 32: Les standards des SGBD du Futur (survol)

ExemplesExemples

Noms des pilotes Niçois qui Noms des pilotes Niçois qui assurent un vol au départ de Nice assurent un vol au départ de Nice avec un avion localisé à Nice ?avec un avion localisé à Nice ?

Noms des pilotes qui habitent Noms des pilotes qui habitent dans la ville de localisation d’un dans la ville de localisation d’un Airbus ?Airbus ?

Page 33: Les standards des SGBD du Futur (survol)

Exemple quantificateur Exemple quantificateur universeluniversel

Quels sont les noms des pilotes Quels sont les noms des pilotes qui conduisent TOUS les Airbus qui conduisent TOUS les Airbus localisés à Nice ?localisés à Nice ?

Select p.plnomSelect p.plnomFrom p in piloteFrom p in pilote

V in p.assureV in p.assureFor all a in V.utilise : a.avnom For all a in V.utilise : a.avnom

= ‘airbus = ‘airbus ’ ’ and a.loc = ‘Nice’;and a.loc = ‘Nice’;

Page 34: Les standards des SGBD du Futur (survol)

SQL3… SQL3…

(« SQL99 »)(« SQL99 »)

SELECT quelque chose avec image et son FROM quelque part ++ WHERE condition ++

Page 35: Les standards des SGBD du Futur (survol)

Standard SQL(petite Standard SQL(petite histoire)histoire) SEQUEL 1 (1974) de System R d’IBMSEQUEL 1 (1974) de System R d’IBM

SEQUEL 2 (1977)SEQUEL 2 (1977) SQL 1SQL 1 (Ansi : 1986 ; ISO : 1987) : 100 pages puis (Ansi : 1986 ; ISO : 1987) : 100 pages puis

révisions en 1989, révisions en 1989, « SQL89 »« SQL89 »Avec des systèmes de tests et de validation développés par le Avec des systèmes de tests et de validation développés par le

NIST (NIST (National Institute of Standards and Technology) National Institute of Standards and Technology) pour pour éviter problèmes de Codasyléviter problèmes de Codasyl

SQL2SQL2  (1992,   (1992, « SQL92 »)« SQL92 ») par X3H2 : 600 pages avec par X3H2 : 600 pages avec 3 niveaux3 niveaux Niv. 1 : « Entry » (SQL1), 2: « Intermediate » et 3: « Full »Niv. 1 : « Entry » (SQL1), 2: « Intermediate » et 3: « Full »

SQL3SQL3 ( ( Standard Standard en 1999, en 1999, « SQL99 »)« SQL99 ») : 1500 pages : 1500 pages Niveau 1 (SQL2)…Niveau 1 (SQL2)…

SQL4SQL4……

Page 36: Les standards des SGBD du Futur (survol)

Concept OBJET dans Concept OBJET dans SQL3 ?SQL3 ?

Dualité de structures de données SQL3 pourDualité de structures de données SQL3 pour CLASSE D’ CLASSE D’ OBJETSOBJETS

CREATE TABLECREATE TABLECREATE TYPECREATE TYPE

1) « 1) « TABLETABLE », :  », : Create tableCreate table

structure de données de base (structure de données de base (relation NF2 possible)relation NF2 possible) pour le pour le stockage en mémoire persistantestockage en mémoire persistante et la et la manipulation ensembliste manipulation ensembliste avec VALEURS et POINTEURS avec VALEURS et POINTEURS ((double paradigmedouble paradigme !) !)

1.1 1.1 « Table Objet »« Table Objet » possible (clause «  possible (clause « With IdentityWith Identity »)  ») ROWID ROWID Type REF possible Type REF possible

1.2 Table « relationnelle » sinon1.2 Table « relationnelle » sinon

Page 37: Les standards des SGBD du Futur (survol)

Concept OBJET dans Concept OBJET dans SQL3 ?SQL3 ?

2) 2) «  TYPE » : «  TYPE » : Create typeCreate type (classe (classe d’objets)d’objets)

2.1) - (2.1) - (« « VALUE ») ADTVALUE ») ADT Pas d’ OID, valeur pour attribut dans relationPas d’ OID, valeur pour attribut dans relation Types de baseTypes de base

2.2) - (« 2.2) - (« OBJECT ») ADT OBJECT ») ADT (Create (Create type with OID <visible>)type with OID <visible>)

OID pour chaque instance (pas d’ OID par défaut)OID pour chaque instance (pas d’ OID par défaut) Types possibles pour attributs ou autres ADT, variables Types possibles pour attributs ou autres ADT, variables

SQL…SQL… Type REF (avec OID) possible associéType REF (avec OID) possible associé

Page 38: Les standards des SGBD du Futur (survol)

SQL3 SQL3

RR : :

* HERITAGE MULTIPLE hybride* HERITAGE MULTIPLE hybride (clause"(clause"UNDERUNDER" pour les TABLES et " pour les TABLES et

les les TYPES)TYPES)

* * POLYMORPHISMEPOLYMORPHISME (Surcharge) et(Surcharge) etTEMPLATES TEMPLATES (types génériques/ (types génériques/

paramétrés)paramétrés)

Page 39: Les standards des SGBD du Futur (survol)

SQL3 SQL3

II : : (dualité de structure, dualité d’OID) :(dualité de structure, dualité d’OID) :

Pour les tables : "Pour les tables : "ROW IDROW ID"" (explicite-(explicite- ""with with identityidentity") pour ") pour encapsulation de tuple et encapsulation de tuple et type REF type REF

Pour les TYPES : "Pour les TYPES : "Object IDObject ID"" (« (« with with OID visible »OID visible » ) ) pour les classes pour les classes d’objets d’objets

Page 40: Les standards des SGBD du Futur (survol)

SQL3 et RICESQL3 et RICE C : TYPES (ADT) et TABLES

ADT : types de données complexe défini par l'utilisateur :

"OBJECT ADT" (avec OID) : classe d’objets

" VALUE ADT » (sans OID)  : type de baseSupport d’objets complexes (tables ou

ADT) :- Constructeur de Collections : "SET", "LIST", "MULTISET" (agrégation de

tables) - Constructeur tuple/produit cartésien (ROW)

Page 41: Les standards des SGBD du Futur (survol)

SQL3 SQL3

CC : : TYPES (ADT) et TABLESTYPES (ADT) et TABLES

TABLESTABLES avec avec

« « With identity » (ROWID) With identity » (ROWID) : : classe d’objetsclasse d’objets

sans ROWID : table relationnellesans ROWID : table relationnelle

des attributs "des attributs "storedstored" ou "" ou "virtualvirtual" "

("("updatableupdatable", "", "readread--onlyonly", "", "constantconstant")")

Page 42: Les standards des SGBD du Futur (survol)

SQL3 SQL3

E E * * PSMPSM ( (Persistent Stored ModulePersistent Stored Module) : ) : regroupement de routines dans schéma regroupement de routines dans schéma objet/procédures STOCKEESobjet/procédures STOCKEES

* "* "RoutinesRoutines"(SQL ou externe) associées aux "(SQL ou externe) associées aux tables/ADT/base : tables/ADT/base :

-"Functions"("-"Functions"("Actor » , Actor » , « « Constructor Constructor » » ou ou ""destructordestructor")")

-"Procedures" -"Procedures"

* 3 * 3 Niveaux d'encapsulation pour un ADT Niveaux d'encapsulation pour un ADT

Page 43: Les standards des SGBD du Futur (survol)

SQL3 (Définition)SQL3 (Définition)Exemple :Exemple :

Create table AVION <ou CreateType AVION>Create table AVION <ou CreateType AVION>( AV# Integer,( AV# Integer,AVNOM varchar (12),AVNOM varchar (12),AV-PHOTO AV-PHOTO blobblob (600 K), (600 K),CONTRAT CONTRAT clobclob (60K), (60K),REFPILOTE REFPILOTE REFREF PilotePilote <Pilote attitré><Pilote attitré>Private PRIX Decimal (9,2)Private PRIX Decimal (9,2)CAP CAP SETSET Integer, Integer, <ensemble de capacités><ensemble de capacités>LOC LOC SET adresse,SET adresse, <Ensemble d’adresses ; insertion avec SET (ROW(‘..’))><Ensemble d’adresses ; insertion avec SET (ROW(‘..’))>

REVISION boolean)REVISION boolean)Imbrication définition sur ADT (ex Adresse) possible à plusieurs niveauxImbrication définition sur ADT (ex Adresse) possible à plusieurs niveauxAttributs « PRIVATE » non visibles pour l’utilisateur ; « PROTECTED » Attributs « PRIVATE » non visibles pour l’utilisateur ; « PROTECTED »

visibles seulement pour les sous typesvisibles seulement pour les sous types

Page 44: Les standards des SGBD du Futur (survol)

SQL3 (Définition)SQL3 (Définition)

CREATE TABLE VolCREATE TABLE Vol

(Vol# Char(4),(Vol# Char(4),

......

PL# REFERENCE Pilote (PL#) <PL# REFERENCE Pilote (PL#) <clé clé étrangère : valeur clé primaire>étrangère : valeur clé primaire>

REFPIL REF PiloteREFPIL REF Pilote <type REF : <type REF : ROWID>ROWID>

...)...)

Page 45: Les standards des SGBD du Futur (survol)

Nouveautés SQL3Nouveautés SQL3

Trois extensions de SQL2 (pour les tables) :

ROWID, REF, « --> »

1- Identifiant (système) de tuple (ROW ID)

L'opérateur associé de référencement est "&ROW"

En Oracle 9, cet opérateur s’appelle ref

Exemple :

Select ref (p) from pilote p where pnom = ‘serge’ ;

Page 46: Les standards des SGBD du Futur (survol)

SQL3SQL3

2- Type "REF" : les valeurs d'une colonne peuvent être des POINTEURS ("adresses de tuples" /ROWID) d'une autre relation.

Exemple : Dans la table pilote, un attribut "refavion" est introduit pour traduire le lien N:1 entre Pilote et Avion correspondant à "l'avion préféré d'un pilote"

refavion REF (avion_type)

SCOPE FOR refavion IS avion

refavion contient pour un pilote donné, le ROWID de l'avion préféré

Page 47: Les standards des SGBD du Futur (survol)

SQL3SQL3

Type "REF" dans Oracle 9 :

- le type REF est introduit dans les TABLES ou les TYPES (qui peuvent exister avec ou sans OID)

- opérateurs associés : « ref » et « deref »

- OID, ROWID, PKID/PKREF

Note : en dehors du stockage persistant des valeurs de TABLES, aucune différence entre TYPE et CLASSE !

Page 48: Les standards des SGBD du Futur (survol)

SQL3SQL3

3- Opérateur de déréférencement noté "--> »

Exemple : "refavion --> av#, avnom"

forme abrégée pour :

SELECT av#, avnom

FROM avion A

WHERE A.&ROW = refavion ; Dans Oracle 9 :

Informations sur les pilotes assurant un vol au départ de Paris ?

Select deref (REFPIL) from vol where VD= ‘Paris’ ;

Notation ‘.’ possible dans Oracle 9 pour «  »

Page 49: Les standards des SGBD du Futur (survol)

ExempleExemple

pilote (pl#, plnom, adr, refavion )

avion (av#, avnom, cap, loc)

<refavion de type REF : "refavion" contient des valeurs d'adresses de tuples (ROWID) d'avions pour traduire l ’avion préféré d'un pilote>

Page 50: Les standards des SGBD du Futur (survol)

ExempleExemple

Q1 : Quels sont les numéros des avions préférés par les pilotes habitant 'Nice' ?

SELECT p.refavion-->av# <opérateur de déréférencement>FROM pilote pWHERE p.adr = 'Nice' ;

Page 51: Les standards des SGBD du Futur (survol)

Exemple SQL3Exemple SQL3 Nous supposons que chaque avion a un

pilote attitré unique (nous rajoutons l'attribut refpilote dans la relation Avion)

"Quels sont les noms des pilotes qui préfèrent un avion dont le pilote attitré habite Nice ?"

La requête SQL3 s'écrit alors :SELECT p.PlnomFROM Pilote pWHERE p.refavion -->refpilote

-->Adr = 'Nice' ;

Page 52: Les standards des SGBD du Futur (survol)

Double JOIN en SQL3Double JOIN en SQL3

• Attributs de type REF à la place (ou en plus) des clés étrangères : REFpil et REFav dans la relation VOL

• Quels sont les noms des pilotes qui conduisent un Airbus ?

SELECT v.REFpil-->pilnomFROM vol v

WHERE v.REFav-->avnom = ‘ Airbus ’;

Page 53: Les standards des SGBD du Futur (survol)

AUTO JOINTUREAUTO JOINTURE

• Rajout attribut REFavbis (pour avion de rechange) dans la relation avion

• Quels sont les noms des pilotes qui conduisent un avion dont l’avion de rechange est localisé à Nice ?

SELECT v.REFpil plnom

FROM vol v

WHERE v.REFav-->REFavbis-->LOC = ‘ Nice ’ ;

Page 54: Les standards des SGBD du Futur (survol)

Exemple completExemple complet

Pilote (Pilote (PL#,PL#, PLNOM, ADR, PLNOM, ADR, REFAVIONREFAVION))

<REFAVION : Avion préféré d’un pilote><REFAVION : Avion préféré d’un pilote>

Avion (Avion (AV#,AV#, AVNOM, LOC AVNOM, LOC, , REFAVBIS, REFAVBIS, REFPILOTEREFPILOTE) ) <REFPILOTE Pilote attitré <REFPILOTE Pilote attitré d’un avion ; d’un avion ;

REFAVBIS : Référence avion de rechange>REFAVBIS : Référence avion de rechange>

Vol (Vol (Vol#,Vol#, PL#, AV#, PL#, AV#, REFPIL, REFAVREFPIL, REFAV, VD, , VD, VA, HD, HA)VA, HD, HA)

Page 55: Les standards des SGBD du Futur (survol)

Quels sont les noms des pilotes Quels sont les noms des pilotes

préférant un B747 qui préférant un B747 qui conduisent un Airbus dont conduisent un Airbus dont

l’avion de rechange est l’ avion l’avion de rechange est l’ avion attitré de Jean? attitré de Jean? SELECT v.REFPIL SELECT v.REFPIL plnom plnom

FROM FROM vol vvol v

WHERE WHERE

(v.REFAV (v.REFAV Avnom = ‘Airbus’, REFAVBIS Avnom = ‘Airbus’, REFAVBIS REFPILOTE REFPILOTE Plnom = ‘Jean’) Plnom = ‘Jean’)

and and

(v.REFPIL(v.REFPILREFAVIONREFAVION Avnom = ‘B747’) Avnom = ‘B747’) ; ;

Page 56: Les standards des SGBD du Futur (survol)

Type REF et ROWID : Type REF et ROWID : initialisation ?initialisation ?

CREATE TABLE VolCREATE TABLE Vol(Vol# Char(4),(Vol# Char(4),PL# reference PilotePL# reference PiloteREFPIL REF Pilote REFPIL REF Pilote ...)...)

La valeur du lien « REFPIL" est un RowID inaccessible par La valeur du lien « REFPIL" est un RowID inaccessible par l’utilisateur l’utilisateur (accès avec opérateur ref/ deref) (accès avec opérateur ref/ deref) et non plus une et non plus une valeur de clé étrangère (PL#) manipulable par l’utilisateurvaleur de clé étrangère (PL#) manipulable par l’utilisateur

La clé étrangère et le type REF peuvent cohabiter dans une La clé étrangère et le type REF peuvent cohabiter dans une même tablemême table

Le mot clé SCOPE FOR permet de limiter la visibilité des Le mot clé SCOPE FOR permet de limiter la visibilité des références à une table particulière (Alter table vol add (scope références à une table particulière (Alter table vol add (scope for REFPIL is pilote1));for REFPIL is pilote1));

Page 57: Les standards des SGBD du Futur (survol)

Initialisation ROWID ?Initialisation ROWID ?

Insert into VOL Insert into VOL ( IT100, 1, Nice, Paris, 7,8,( IT100, 1, Nice, Paris, 7,8,(Select &ROW (p) From Pilote p where Pnom = (Select &ROW (p) From Pilote p where Pnom = ‘Serge’));‘Serge’));

Rappel : &ROW (ref en Oracle) : « Opérateur de Rappel : &ROW (ref en Oracle) : « Opérateur de référencement » associé à un ROWIDréférencement » associé à un ROWID

Note : En Oracle 9, la clause « returning REF into » permet de récupérer le Note : En Oracle 9, la clause « returning REF into » permet de récupérer le ROWID d’un tupleROWID d’un tuple

Exemple : Exemple : Insert into pilote values (1,Serge, Toulouse, Insert into pilote values (1,Serge, Toulouse, Returning Ref (pilote) into Returning Ref (pilote) into pil-ref)pil-ref)insert into Vol values (IT100, 1, Nice,Paris, 7,8, insert into Vol values (IT100, 1, Nice,Paris, 7,8, pil-refpil-ref))

Page 58: Les standards des SGBD du Futur (survol)

Paradigmes de devt et Paradigmes de devt et SQLSQL

Développement d’application

Paradigme RAT Paradigme SAT (Record at a time) (Set at a

time)

Paradigme POINTEUR Paradigme VALEUR

Pointeur CURSOR

Pointeur ligne ROWID (ref,deref) »

(Modèle Relationnel, SQL2/3)

(C++, CODASYL/DBTG, ODMG…)

Nouveauté SQL2

Nouveauté SQL3

Page 59: Les standards des SGBD du Futur (survol)

Select e.QUESTIONSFrom Etudiants eWhere e.esprit = ‘positif’