04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99)...

124
03/07/22 02:25 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 Introduction à SQL3 (SQL99) (SQL99) Professeur Serge Miranda [email protected] Master2 « MBDS » www.mbds-fr.org SELECT quelque chose avec image FROM quelque part ++ WHERE condition ++

Transcript of 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99)...

Page 1: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58Copyright Serge MIRANDA, "Objets et

BD" (Part IV) 1

Introduction à SQL3 Introduction à SQL3 (SQL99)(SQL99)

Professeur Serge Miranda

[email protected]

Master2 « MBDS »

www.mbds-fr.org

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

Page 2: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58Copyright Serge MIRANDA, "Objets et

BD" (Part IV) 2

ContenuContenuI I Présentation des Présentation des principales principales caractéristiques de SQL3 caractéristiques de SQL3

niveaux 2 et 3 niveaux 2 et 3 (définition, (définition, manipulation, contrôle, manipulation, contrôle, développement)développement)

II II Présentation critique Présentation critique du du double paradigme : double paradigme : valeur valeur etet pointeurpointeur (type REF) dans (type REF) dans SQL3SQL3

Page 3: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 3Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Standard SQL?Standard SQL? ANSIANSI (American National Standard Institute) (American National Standard Institute)

X3H2X3H2 database language committe database language committe (X3 division (X3 division ANSI pour Syst. de Traitement Information) : ANSI pour Syst. de Traitement Information) : définition SQL3 de 1991 à 1999 avec 28 membres définition SQL3 de 1991 à 1999 avec 28 membres votants : votants : http://www.ansi.orghttp://www.ansi.org

ISO : ISO : International Standard OrganizationInternational Standard Organization comprenant ANSI, AFNOR (France)… et comprenant ANSI, AFNOR (France)… et NIST (http://www.ncsl.nist.gov)NIST (http://www.ncsl.nist.gov)

4 phases4 phases Working draft (WD)Working draft (WD) Committee draft (CD) pour révision ouverte (1/96)Committee draft (CD) pour révision ouverte (1/96) Draft international standard (DIS) (12/98)Draft international standard (DIS) (12/98) International standard (7/99)International standard (7/99)

Page 4: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 4Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

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 5: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 5Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Standard SQL3Standard SQL3

Part1 : Part1 : FrameworkFramework Part2 : Part2 : FoundationFoundation (noyau avec « TDA »)(noyau avec « TDA ») Part3 : SQL/CLI (Part3 : SQL/CLI (interface d’appel clientinterface d’appel client)) Part4 : SQL/PSM (Part4 : SQL/PSM (lang. procédures lang. procédures

stockéesstockées)) Part5 : SQL/BindingsPart5 : SQL/Bindings Part6 : SQL/XA (Part6 : SQL/XA (moniteur TPmoniteur TP)) Part7 : SQL/TemporalPart7 : SQL/Temporal

Page 6: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 6Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Rappels : Principales Rappels : Principales nouveautés SQL2nouveautés SQL2 + d’  « orthogonalité » (EX: Tables dérivées dans + d’  « orthogonalité » (EX: Tables dérivées dans

from..)from..) + de types : varchar, bit, character sets, date, time, + de types : varchar, bit, character sets, date, time,

intervalinterval + d’opérateurs :Union , Cross et Natural JOIN …+ d’opérateurs :Union , Cross et Natural JOIN …

Difference Difference (EXCEPT)(EXCEPT) et Intersection et Intersection (INTERSECT)(INTERSECT) Prédicats MATCH, BETWEEN, LIKE (Exemple : ..Where Prédicats MATCH, BETWEEN, LIKE (Exemple : ..Where

AVNOM Like ‘Airbus%’) …AVNOM Like ‘Airbus%’) … Apparition partielle des domaines : Apparition partielle des domaines : create DOMAINScreate DOMAINS NULLNULL + Définition relationnelle :Clé primaire et intégrité + Définition relationnelle :Clé primaire et intégrité

référentielleréférentielle Niveaux d’isolation pour transactions, CASE…Niveaux d’isolation pour transactions, CASE…

Page 7: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 7Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Modèle « OR » ?Modèle « OR » ? Extensions Extensions RICE RICE du modèle relationnel :du modèle relationnel :

- RREUTILISATION (EUTILISATION (Héritage, polymorphisme)Héritage, polymorphisme)- IIDENTITE DENTITE et référenceset références- CCOMPLEXITEOMPLEXITE des Objets des Objets (Collections et (Collections et

produit)produit)- EENCAPSULATIONNCAPSULATION (types et fonctions (types et fonctions

utilisateur)utilisateur)

Page 8: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 8Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

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’ OBJETS : « TABLES » (Relations) CLASSE D’ OBJETS : « TABLES » (Relations) et « TYPES » (Domaines) : et « TYPES » (Domaines) :

CREATE TABLECREATE TABLECREATE TYPECREATE TYPE

Note : un concept de trop (!) ou préparer Date et Note : un concept de trop (!) ou préparer Date et SQL4 ? + possibilité de travailler…proprement ! SQL4 ? + possibilité de travailler…proprement ! Persistance Persistance automatiqueautomatique avec TABLE ! avec TABLE !

Page 9: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 9Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Classe OBJET dans SQL3 Classe OBJET dans SQL3 avec TABLEavec TABLE

1) « 1) « TABLETABLE » :  » : Create tableCreate tablestructure de données de base (structure de données de base (relation NF2 relation NF2

possible)possible) pour le pour le stockage en mémoire stockage en mémoire persistantepersistante et la manipulation ensembliste et la manipulation ensembliste avec avec VALEURS et POINTEURS (VALEURS et POINTEURS (double paradigmedouble paradigme !) !)

2 types de TABLE :2 types de TABLE :- - « Table Objet »« Table Objet » possible ( possible (clause «CREATE clause «CREATE

TABLE … TABLE … With IdentityWith Identity »)  ») ROWID ROWID Type REF possible Type REF possible

- Table « relationnelle » sinon- Table « relationnelle » sinon

Page 10: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 10Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Classe OBJET dans SQL3 Classe OBJET dans SQL3 avec TYPEavec TYPE

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

2 types de …TYPE : 2 types de …TYPE : - (- (« « VALUE ») ADTVALUE ») ADT

Pas d’ OID, valeur pour attribut dans relationPas d’ OID, valeur pour attribut dans relation Types de baseTypes de base

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

OID pour chaque instanceOID pour chaque instance (pas d’ OID par défaut) (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 11: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 11Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 SQL3

RR : :

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

et les et les TYPES)TYPES)

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

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

Page 12: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 12Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

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 13: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 13Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 SQL3 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 base

Support d’objets complexes (tables ou ADT) :

- Constructeur de Collections : "SET", "LIST", "MULTISET" (agrégation de tables) - Constructeur tuple/produit cartésien (ROW)

Page 14: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 14Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 SQL3

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

TABLESTABLES avec avec

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

- sans ROWID : table relationnelle- sans ROWID : table relationnelle

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

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

Page 15: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 15Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

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 (idem C++)(idem C++) ("("PrivatePrivate","","ProtectedProtected« (sous type), « (sous type), ""PublicPublic") ")

Page 16: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 16Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 ?SQL3 ?

Un langage de définition de types/tablesUn langage de définition de types/tables Un langage de programmation (objets)Un langage de programmation (objets) Un langage de requêtes (OR)Un langage de requêtes (OR) Un langage de communicationUn langage de communication Un langage temporelUn langage temporel

Page 17: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 17Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Exemple SQL3 (Exemple Définition)Définition)DEUX possibilités pour une entité conceptuelle DEUX possibilités pour une entité conceptuelle

/CLASSE OBJET : /CLASSE OBJET : tabletable ou ou typetype (ADT) (ADT) ayant ayant chacune un OID système possiblechacune un OID système possible

1- CREATE TABLE1- CREATE TABLE Exemple :Exemple :

Create Table PersonneCreate Table Personne(Nom char (20),(Nom char (20),Sexe char (1),Sexe char (1),Age integerAge integerConjoint REF Conjoint REF Personne WITH IDENTITYPersonne WITH IDENTITY))

notes : notes : - WITH IDENTITY (- WITH IDENTITY ( ROWID ) : Des Routines peuvent être ROWID ) : Des Routines peuvent être associées aux tables pour implanter des opérations encapsulant associées aux tables pour implanter des opérations encapsulant les lignes + type REF possible sur la table Personne les lignes + type REF possible sur la table Personne

Page 18: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 18Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Exemple)SQL3 (Exemple)2-2- CREATE <OBJECT> TYPE (With CREATE <OBJECT> TYPE (With

OID…)OID…)Exemple:Exemple:

Create TYPE personne_type Create TYPE personne_type with OIDwith OID(nom varchar not null,(nom varchar not null,sexe constant,sexe constant,age virtual...age virtual...date-naissance date,date-naissance date,

ACTOR FUNCTION age ACTOR FUNCTION age (:P personne_type) return real ...(:P personne_type) return real ...DESTRUCTOR FUNCTION enlever_personne..; DESTRUCTOR FUNCTION enlever_personne..; End function)End function)

Page 19: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 19Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Exemple)SQL3 (Exemple)

(suite create personne_type )(suite create personne_type )CREATE TABLE PersonnesCREATE TABLE Personnes(donnees_personne : personne_type)(donnees_personne : personne_type)

La seule façon qu'une instance de TDA soit La seule façon qu'une instance de TDA soit stockée de manière persistante dans la BD, stockée de manière persistante dans la BD, c’ c’ est de la stocker comme valeur de colonne est de la stocker comme valeur de colonne d'une tabled'une table

(seule différence importante entre TABLE OBJET (seule différence importante entre TABLE OBJET et ADT OBJET !)et ADT OBJET !)

Page 20: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 20Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Exemple)SQL3 (Exemple) A partir d’ A partir d’ Oracle 9 Oracle 9

- - TABLE « OBJET » :TABLE « OBJET » : Create table T of type Create table T of type tt

Exemple : Exemple : Create type personne_type as object (P#,…)Create type personne_type as object (P#,…)  Create table personnes of type personne_type Create table personnes of type personne_type (avec OID, faisant de la table une table objet)(avec OID, faisant de la table une table objet)

- distinction OID (16 Octets, immuable, non indexable) - distinction OID (16 Octets, immuable, non indexable) et ROWID (10 octets, non immuable, indexable)et ROWID (10 octets, non immuable, indexable)- PKOID (pseudo OID sur les vues : « Primary key - PKOID (pseudo OID sur les vues : « Primary key OID »)/PKREF : une vue peut servir à créer un OID sur OID »)/PKREF : une vue peut servir à créer un OID sur une table relationnelle (vision objet..de TABLES)une table relationnelle (vision objet..de TABLES)

Page 21: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 21Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Exemple) : SQL3 (Exemple) : héritagehéritage

3- 3- <à partir de -1- Create Table <à partir de -1- Create Table Personne>Personne>

CREATE TABLE Pilote CREATE TABLE Pilote UNDERUNDER PersonnePersonne

(NbreHeures integer)(NbreHeures integer)

<<UNDER pour héritage structurel et UNDER pour héritage structurel et opérationnelopérationnel>>

Page 22: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 22Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Exemple) : type SQL3 (Exemple) : type REFREF

CREATE TABLE VolCREATE TABLE Vol(Vol# Char(4),(Vol# Char(4),PL# REFERENCE Pilote (PL#) PL# REFERENCE Pilote (PL#) <<clé étrangère : clé étrangère : valeur clé primaire avec manipulation valeur clé primaire avec manipulation relationnelle>relationnelle>REFPIL REF PiloteREFPIL REF Pilote <type REF : ROWID, <type REF : ROWID, pointeur ligne avec opérateurs spécifiques!>pointeur ligne avec opérateurs spécifiques!>...)...) La valeur de l’attribut REFPIL est un RowID/La valeur de l’attribut REFPIL est un RowID/pointeur-pointeur-

ligneligne et non plus une et non plus une valeur valeur de clé primaire ; de clé primaire ; opérateur opérateur DEREFDEREF associé aux pointeurs (pas SQL !) associé aux pointeurs (pas SQL !)

La clé étrangère et le type REF peuvent cohabiter dans La clé étrangère et le type REF peuvent cohabiter dans une même table (cf Oracle 9)une même table (cf Oracle 9)

Page 23: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 23Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Exemple 2D )SQL3 (Exemple 2D )

CREATE (OBJECT) TYPE RECTANGLE CREATE (OBJECT) TYPE RECTANGLE

with OID (x1, y1, x2, y2 real)with OID (x1, y1, x2, y2 real)

Actor functionActor function MAKE_RECT... MAKE_RECT...

return RECTANGLE ;return RECTANGLE ;

<<Point dans rectangle ?>Point dans rectangle ?>

Actor functionActor function IS_IN (x,y real, R IS_IN (x,y real, R RECTANGLE) if (R.x1<=x and x<=R.x2) and RECTANGLE) if (R.x1<=x and x<=R.x2) and (R.y1<=y and y<=R.y2) then return TRUE (R.y1<=y and y<=R.y2) then return TRUE else FALSE ;else FALSE ;

Page 24: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 24Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Exemple 2D )SQL3 (Exemple 2D )

<côté dans rectangle ?><côté dans rectangle ?>

Actor functionActor function ONE_SIDE_IS_IN (R0, ONE_SIDE_IS_IN (R0, R RECTANGLE) if (IS_IN (R.x1, R RECTANGLE) if (IS_IN (R.x1, R.y1, R0) or IS_IN(R.x2, R.y1, R0) or R.y1, R0) or IS_IN(R.x2, R.y1, R0) or IS_IN (R.x2, R.y2, R0) or IS_IN IS_IN (R.x2, R.y2, R0) or IS_IN (R.x1, R.y2, R0) )(R.x1, R.y2, R0) )

then return TRUE else FALSE;then return TRUE else FALSE;

Page 25: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 25Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 DéfinitionSQL3 Définition(Exemple 2D-suite)(Exemple 2D-suite)

<intersection non vide de deux <intersection non vide de deux rectangles ?>rectangles ?>

Actor functionActor function OVERLAP (R1, R2 OVERLAP (R1, R2 RECTANGLE) if ONE_SIDE_IS_IN (R1 RECTANGLE) if ONE_SIDE_IS_IN (R1 R2) then return TRUE else if R2) then return TRUE else if ONE_SIDE_IS_IN (R2,R1) then return ONE_SIDE_IS_IN (R2,R1) then return TRUE else return FALSE;TRUE else return FALSE;

Page 26: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 26Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 Manipulation SQL3 Manipulation (Exemple 2D-suite)(Exemple 2D-suite)

Create table RECTANGLES Create table RECTANGLES (datarectangle RECTANGLE)(datarectangle RECTANGLE)

requête SQL3requête SQL3

SELECT *SELECT *FROM RECTANGLES RFROM RECTANGLES RWHERE OVERLAP (R, WHERE OVERLAP (R,

MAKE_RECT (0,1,0,1)) = TRUE ;MAKE_RECT (0,1,0,1)) = TRUE ;

Note : comparez avec Date98Note : comparez avec Date98

Page 27: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 27Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 SQL3 (Présentation des (Présentation des

nouveautés, Niveaux 2 et nouveautés, Niveaux 2 et 3) 3)

Définition

Manipulation

Contrôle

Développement/Programmation

Page 28: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 28Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : Types SQL3 (Définition) : Types de basede base

Types de BaseTypes de Base NOMBRES : NOMBRES :

• Integer, Smallint, Numeric, Numeric (P) Integer, Smallint, Numeric, Numeric (P) et Numeric (P,S), Decimal (P) et Decimal et Numeric (P,S), Decimal (P) et Decimal (P,S)(P,S) (Precision, Scale)(Precision, Scale)

• Real, Double Precision et FloatReal, Double Precision et Float Chaînes de caractères : Chaînes de caractères : Character, character Character, character

varying, national charactervarying, national character Chaîne de bits : Chaîne de bits : Bit, Bit VaryingBit, Bit Varying DateDate : date, time, timestamp et : date, time, timestamp et Intervalle temporelIntervalle temporel

: Interval day/month/year: Interval day/month/year IndéfiniIndéfini (NULL) (NULL) et logiqueet logique (boolean) (boolean)

Page 29: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 29Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : SQL3 (Définition) : Nouveaux typesNouveaux types

Enumération, Enumération,

booléenbooléen, ,

Character LOB Character LOB (CLOB)(CLOB) , binary LOB , binary LOB (BLOB)(BLOB) , ,

Constructeur tuple/produit cartésienConstructeur tuple/produit cartésien : row : row, ,

Constructeur de collection : Constructeur de collection : set, multiset et set, multiset et listlist, ,

Distinct (ud) typesDistinct (ud) types Create Create distinct typedistinct type monnaieeuro as integer (9) monnaieeuro as integer (9) Create Create distinct typedistinct type monnaieusa as integer (9) monnaieusa as integer (9)

Page 30: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 30Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) SQL3 (Définition) Constructeur ROW Constructeur ROW (produit cartésien)(produit cartésien)

Constructeur Constructeur ROW (expression)ROW (expression) soit au niveau des domaines soit directement au soit au niveau des domaines soit directement au niveau des attributs d’une table ou d’un typeniveau des attributs d’une table ou d’un type

Create domainCreate domain adresse adresse ROW ROW (numero.., rue.., ville,.. (numero.., rue.., ville,.. Zip..)Zip..)

Create ROW typeCreate ROW type adresse (numero, rue, ville, zip) adresse (numero, rue, ville, zip) Create table/type Pilote Create table/type Pilote

(…, (…,

Adresse ROW( numero varchar (3), rue Adresse ROW( numero varchar (3), rue varchar (12),..)varchar (12),..)

ROW à utiliser dans INSERT avec opérateur « .. » pour ROW à utiliser dans INSERT avec opérateur « .. » pour accès à sous partie (Note : « . » dans Oracle 9)accès à sous partie (Note : « . » dans Oracle 9)

ROW permet d’avoir des tables imbriquées dans des tables ROW permet d’avoir des tables imbriquées dans des tables (NF2) (NF2) idem attribut de type table/ADTidem attribut de type table/ADT

Page 31: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 31Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : ADTSQL3 (Définition) : ADT

Rappel : ADT (Rappel : ADT (type de données  type de données  « abstrait »/Abstract data type« abstrait »/Abstract data type))

1- Déclaration (attributs, méthodes) : « type specification » avec 1- Déclaration (attributs, méthodes) : « type specification » avec « member » pour méthodes dans Oracle 9« member » pour méthodes dans Oracle 9

2- Implantation (méthodes) :  « type body » dans Oracle 2- Implantation (méthodes) :  « type body » dans Oracle

Concept de classe d’objets avec le concept d’ ADTConcept de classe d’objets avec le concept d’ ADT avec OID avec OID (create type with OID(create type with OID ) ) qui comprend 2 parties visibles :qui comprend 2 parties visibles :

Les spécifications des attributsLes spécifications des attributsles méthodes/routines associéesles méthodes/routines associées (base, type ou table) : (base, type ou table) : « functions »« functions » (Actor/ Constructor/ Destructor) (Actor/ Constructor/ Destructor) ou « procedures »ou « procedures »

Page 32: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 32Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : ADTSQL3 (Définition) : ADT

• CREATE TYPE <nom ADT> <corps de l’ADT>• <corps de l’ADT>

– <OID option> ::= WITH OID (VISIBLE)

– <subtype clause> ::= UNDER <supertype clause>

• possibilité d’héritage multiple avec résolution explicite

– <member list>

• <column definition> : attributs publics ou privés

• <function declaration> : opérations publiques

• <operator name list> : opérateurs surchargés

• <equals clause>, <less-than clause> : définition des ordres

• <cast clause> : fonction de conversion de types

Page 33: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 33Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : ADT SQL3 (Définition) : ADT et CONSTRUCTORet CONSTRUCTORCréation instance de TDACréation instance de TDA par une fonction par une fonction

CONSTRUCTORCONSTRUCTOR Exemple pour TDA Adresse :Exemple pour TDA Adresse :

CONSTRUCTOR FUNCTION adresse-t () RETURNS adresse-tCONSTRUCTOR FUNCTION adresse-t () RETURNS adresse-tDeclare : a adresse-tDeclare : a adresse-tBeginBegin

New : a ;New : a ;Set : a.numero = null ;Set : a.numero = null ;Set : a.ville = null ;Set : a.ville = null ;……return a ;return a ;

END;END;END FunctionEND Function

<<CONSTRUCTOR : Fonction spéciale ayant le même nom que le CONSTRUCTOR : Fonction spéciale ayant le même nom que le type>type>

Page 34: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 34Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : ADT SQL3 (Définition) : ADT et CONSTRUCTORet CONSTRUCTOR

Exemple : Exemple :

Create table pilote of type pilote-tCreate table pilote of type pilote-t

Insert into pilote values Insert into pilote values

((pilote-t (pilote-t (1, Serge, 1, Serge, adresse-tadresse-t (MBDS, Sophia, 06 (MBDS, Sophia, 06 060606))060606))

Update pilote p set p.adresse = adresse-t (MBDS, Update pilote p set p.adresse = adresse-t (MBDS, Sophia Antipolis, 0606060606) where p.nom = Sophia Antipolis, 0606060606) where p.nom = ‘Serge’ ;‘Serge’ ;

Page 35: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 35Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : ADT SQL3 (Définition) : ADT et fonctionset fonctions

Suppression instance d’un TDASuppression instance d’un TDA par fonction par fonction DESTRUCTORDESTRUCTOR

Exemple : Exemple :

DESTRUCTOR FUNCTION sup-adresse (:a adresse) DESTRUCTOR FUNCTION sup-adresse (:a adresse) RETURNS adresseRETURNS adresse

BEGIN Destroy : a ; Return : a; END; BEGIN Destroy : a ; Return : a; END; END FunctionEND Function

Page 36: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 36Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : ADTSQL3 (Définition) : ADT Accès aux attributs d’un TDA :Accès aux attributs d’un TDA :

fonctions OBSERVER (lecture) , MUTATOR (mise à jour)fonctions OBSERVER (lecture) , MUTATOR (mise à jour)

<génération automatique fonction OBSERVER par déclaration de <génération automatique fonction OBSERVER par déclaration de variable>variable>

Exemple : Exemple : Declare a adresseDeclare a adresse Declare V varcharDeclare V varchar (12) (12)V =V = villeville (a) ; <fonction OBSERVER « ville »> (a) ; <fonction OBSERVER « ville »><mutator> : ville (a, ‘Valbonne’) ;<mutator> : ville (a, ‘Valbonne’) ;Note : ces fonctions sont généralement intégrées dans SQL3 (Update..)Note : ces fonctions sont généralement intégrées dans SQL3 (Update..)

Tout attribut « A1 du type t du TDA nomADT » a une fonction Tout attribut « A1 du type t du TDA nomADT » a une fonction OBSERVER implicite : «  (Function) A1 (arg1/nomADT) Returns OBSERVER implicite : «  (Function) A1 (arg1/nomADT) Returns t »t »

Page 37: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 37Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : ADTSQL3 (Définition) : ADT Accès aux attributs d’un TDA :Accès aux attributs d’un TDA :

Notation « .. » du type : <(nom variable Notation « .. » du type : <(nom variable ADT)..Fonction>ADT)..Fonction>

Exemples : Exemples : - a..villea..ville pour invoquer la fonction ville du TDA Adresse pour invoquer la fonction ville du TDA Adresse

- Pour un TDA Pilote (variable P) ayant un attribut Pour un TDA Pilote (variable P) ayant un attribut « domicile » défini sur le TDA « Adresse », on peut « domicile » défini sur le TDA « Adresse », on peut écrire avec les déclarations ci écrire avec les déclarations ci dessus : dessus :

((set ) v= P..domicile..villeset ) v= P..domicile..ville

Page 38: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 38Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : ADTSQL3 (Définition) : ADT Fonction CAST sur TDA Fonction CAST sur TDA pour modifier typepour modifier type

Exemple: Exemple:

WHERE VOL..HA>>WHERE VOL..HA>>

(CAST (VOL..HD AS Date) + 4 Hours)(CAST (VOL..HD AS Date) + 4 Hours)

Page 39: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 39Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : ADTSQL3 (Définition) : ADT

Utilisation d’un ADT ?Utilisation d’un ADT ? Type d’un Attribut d’un autre ADTType d’un Attribut d’un autre ADT

Exemple :Exemple :

remplacer le type DECIMAL du champ SALAIRE par un remplacer le type DECIMAL du champ SALAIRE par un

TDA SALAIRE pour des raisons de sécurité..TDA SALAIRE pour des raisons de sécurité..

Sous –type d’un autre ADT (Clause Sous –type d’un autre ADT (Clause UNDERUNDER) )

Exemple : Create type pilote under employeExemple : Create type pilote under employe

Types d’un paramètre dans une routine Types d’un paramètre dans une routine Exemple : Create function salaire (p pilote) returns Decimal Exemple : Create function salaire (p pilote) returns Decimal

(6,2) Return(..) ;(6,2) Return(..) ;

Page 40: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 40Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : ADTSQL3 (Définition) : ADT

Utilisation d’un ADT ?Utilisation d’un ADT ?

Type de variable SQL Type de variable SQL Exemple : declare vp pilote puis Select * Into vp From Pilote Exemple : declare vp pilote puis Select * Into vp From Pilote

Where..Where.. Type source d’un type Type source d’un type DISTINCTDISTINCT

Type d’un Type d’un attribut attribut d’une table ou d’un d’une table ou d’un domainedomaine ( (sémantique additionnelle avec contraintes sémantique additionnelle avec contraintes Check )Check )

Exemple : Create domain Paris-adresse as adresse Check (value Exemple : Create domain Paris-adresse as adresse Check (value

(a.ville) = ‘Paris’(a.ville) = ‘Paris’) ) default null;default null;

Page 41: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 41Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : SQL3 (Définition) : DéclencheurDéclencheur

Définition de déclencheur : Définition de déclencheur : CREATE TRIGGER BEFORE/AFTER CREATE TRIGGER BEFORE/AFTER

<événement> of <Att> on <Table> <événement> of <Att> on <Table> REFERENCING OLD/NEW as <x> REFERENCING OLD/NEW as <x> <action><action> « BEFORE/AFTER  : possibilité de déclencher « BEFORE/AFTER  : possibilité de déclencher

avant ou après l'événementavant ou après l'événement <événement> = INSERT, UPDATE, DELETE<événement> = INSERT, UPDATE, DELETE possibilité de référencer les valeurs avant ou après possibilité de référencer les valeurs avant ou après

mise à jour (« REFERENCING OLD/NEW as »)mise à jour (« REFERENCING OLD/NEW as ») <action> = opération sur table (INSERT..) avec <action> = opération sur table (INSERT..) avec

condition possible (« WHEN » « WHERE »)condition possible (« WHEN » « WHERE »)

Page 42: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 42Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : SQL3 (Définition) : Déclencheur (Déclencheur (triggertrigger))

Exemple1Exemple1 : :PILOTE (ID int, salaire float)PILOTE (ID int, salaire float)CUMUL (ID int, Augmentation float)CUMUL (ID int, Augmentation float)Définition d’un déclencheur après toute mise à jour du Définition d’un déclencheur après toute mise à jour du

champ « salaire » de PILOTE qui met à jour l’attribut champ « salaire » de PILOTE qui met à jour l’attribut « augmentation » de la relation CUMUL« augmentation » de la relation CUMUL

CREATE TRIGGER AFTER UPDATE OF salaire ON CREATE TRIGGER AFTER UPDATE OF salaire ON pilotepilote

REFERENCING OLD AS ancien_salaire, NEW AS REFERENCING OLD AS ancien_salaire, NEW AS nouveau_salairenouveau_salaire

UPDATE CUMUL SET Augmentation = Augmentation UPDATE CUMUL SET Augmentation = Augmentation + nouveau_salaire - ancien_salaire WHERE ID = + nouveau_salaire - ancien_salaire WHERE ID = pilote.IDpilote.ID

Page 43: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 43Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : SQL3 (Définition) : Déclencheur (Déclencheur (triggertrigger))

EXEMPLE 2 : EXEMPLE 2 : Définition d’un déclencheur après Définition d’un déclencheur après toute mise à jour de l’attribut HA de Vol avec mise à toute mise à jour de l’attribut HA de Vol avec mise à jour de la vue VOLINDIRECT…jour de la vue VOLINDIRECT…

Create Trigger T1 after update of HA on Create Trigger T1 after update of HA on VolVol

Referencing old as ancienneHA new as Referencing old as ancienneHA new as nouvelleHAnouvelleHA

Update volindirect set ….(nouvelleHA- Update volindirect set ….(nouvelleHA- ancienneHA)… ;ancienneHA)… ;

Page 44: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:58 44Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : SQL3 (Définition) : TABLESTABLES

CREATE TABLECREATE TABLE avec clauses avec clauses withwith identityidentity (( RowID et Type REF dessus), RowID et Type REF dessus), on commiton commit, , global/local/temporaryglobal/local/temporary, , le type le type REF et les Objets lignes (RowID)REF et les Objets lignes (RowID), , les collections pour les attributs multivalués les collections pour les attributs multivalués ((peut être dans SQL4peut être dans SQL4)) (ARRAY, SET, MULTISET et LIST),(ARRAY, SET, MULTISET et LIST), constant/updatableconstant/updatable clauses clauses underunder (héritage) (héritage) with , with , constructeur de table avec constructeur de table avec VALUES (expression)VALUES (expression)

Page 45: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 45Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : type SQL3 (Définition) : type REFREF

Type REF Type REF pour localiser une pour localiser une instance de TDA ou un tuple via leur instance de TDA ou un tuple via leur ROWID (type et table « objets »)ROWID (type et table « objets »)

- - valeur de Référence obtenue par l’ valeur de Référence obtenue par l’ opérateur de référencement REF opérateur de référencement REF (« («  », « . » dans Oracle) », « . » dans Oracle)

Page 46: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 46Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : SQL3 (Définition) : TABLESTABLES

Une TABLE peut avoir des attributsUne TABLE peut avoir des attributs … … définis sur un TDAdéfinis sur un TDA Complexes : Multivalués (SET, LIST) ou produit (ROW)Complexes : Multivalués (SET, LIST) ou produit (ROW) de type REFde type REF

SOUS-TABLE : Une TABLE peut être obtenue SOUS-TABLE : Une TABLE peut être obtenue par héritage ( héritage multiple)par héritage ( héritage multiple)

EX : Create type PILOTE_EN_FORMATION under EX : Create type PILOTE_EN_FORMATION under PILOTE, FORMATION (..)PILOTE, FORMATION (..)

Note : le sous type Pilote_en_formation hérite des Note : le sous type Pilote_en_formation hérite des attributs de Pilote et de Formation (création attributs de Pilote et de Formation (création automatique type ROW de Pilote)automatique type ROW de Pilote)

Page 47: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 47Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : SQL3 (Définition) : TABLESTABLES

• Possibilité d'utiliser un type prédéfini pour la table (Vision tabulaire d’une classe ; persistance des objets d’une classe)EX : CREATE TABLE pilotes OF t-pilote ;

• Possibilité de définir un nouveau type– Le type est celui des tuples de la tableEX : CREATE TABLE Constructeurs OF NEW TYPE Constructeur (nom VARCHAR, total MONEY) ;

Page 48: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 48Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : SQL3 (Définition) : TABLESTABLES

Intégrité de domaineIntégrité de domaine (NULL, NOT NULL, Check) (NULL, NOT NULL, Check)

Intégrité référentielleIntégrité référentielle- Restrict, Cascade, Set Null, Set Default +- Restrict, Cascade, Set Null, Set Default +- « - « NO ACTIONNO ACTION » :  » : Idem Restrict mais test à la fin du Idem Restrict mais test à la fin du

module SQLmodule SQL

Tables de base et temporairesTables de base et temporairesCREATE TABLECREATE TABLE

Persistante (table de base) : Persistante (table de base) : Create/drop TableCreate/drop Table Global temporary : Global temporary : une référence dans SQL crée une une référence dans SQL crée une

instance distincte; dans session SQL ayant plusieurs instance distincte; dans session SQL ayant plusieurs modules, transactions…modules, transactions…

Local temporaryLocal temporary

Page 49: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 49Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Définition) : SQL3 (Définition) : TABLESTABLES

Les instances d’un TDA deviennent persistantes par association Les instances d’un TDA deviennent persistantes par association avec une table de base avec une table de base (en attendant idem «(en attendant idem « table temporaire ») table temporaire »)Exemple : Exemple : Create type Pilotedessai (..)Create type Pilotedessai (..)Create table Pilote ( pil Pilotedessai, salaire Decimal (6,2), ..)Create table Pilote ( pil Pilotedessai, salaire Decimal (6,2), ..)

Création instance par :Création instance par :Declare : p Pilotedessai ; Declare : p Pilotedessai ; BeginBegin

new : pnew : pset : p.numero = ‘100’set : p.numero = ‘100’set : p.nom = ‘paul’set : p.nom = ‘paul’… … Return :p; Return :p;

ENDEND

Page 50: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 50Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

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 REF PiloteREF Pilote <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 adresseSET adresse,, <Ensemble d’adresses ; insertion avec SET (ROW(‘..’))><Ensemble d’adresses ; insertion avec SET (ROW(‘..’))>

REVISION boolean REVISION boolean with identitywith identity))Exercice : « Représenter en schéma ODMG cette table SQL3 (With Exercice : « Représenter en schéma ODMG cette table SQL3 (With

Identitry dans AVIONpermet de représenter le pointeur INVERSE)Identitry dans AVIONpermet de représenter le pointeur INVERSE)

Page 51: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 51Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

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 52: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 52Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Manipulation) : SQL3 (Manipulation) : Accès TDA Accès TDA

Exemple :Exemple : Quels sont les numéros d’avion qui sont en Quels sont les numéros d’avion qui sont en

révision avec leur contrat et leurs villes de révision avec leur contrat et leurs villes de localisation ?localisation ?

Select AV#, CONTRAT, Select AV#, CONTRAT, LOC..VILLELOC..VILLE From AVION From AVION Where REVISION = true ;Where REVISION = true ;

Rappel : Notation « .. » utilisée aussi pour Rappel : Notation « .. » utilisée aussi pour obtenir le champ/fonction d’ un ADT obtenir le champ/fonction d’ un ADT

Page 53: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 53Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Manipulation) : SQL3 (Manipulation) : Accès TDA Accès TDA

Exemples avec ADT PiloteExemples avec ADT Pilote : :

Pilotes habitant Nice ?Pilotes habitant Nice ?

SelectSelect * * From From Pilote P Pilote P WhereWhere P..ADR..villeP..ADR..ville = = ‘Nice’;‘Nice’;

UpdateUpdate pilote pilote SetSet pilote..adr..ville = ville pilote..adr..ville = ville (‘Toulouse’)(‘Toulouse’)

WhereWhere pil# = ‘100’ ; pil# = ‘100’ ;

Page 54: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 54Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Manipulation) : SQL3 (Manipulation) : JOINJOIN

Clause Clause fromfrom avec produit cartésien (Jointure avec produit cartésien (Jointure CROSSCROSS ) et orthogonalité ) et orthogonalitéEX : EX : Select * Select * From (Select * From (((T1 Union T2) INTERSECT T3) EXCEPT T4))From (Select * From (((T1 Union T2) INTERSECT T3) EXCEPT T4))

Join NATURAL sur attributs ayant le même nomJoin NATURAL sur attributs ayant le même nom

Jointure (T1 Jointure (T1 joinjoin T2) avec clauses T2) avec clauses using foreign using foreign keykey, , using primary keyusing primary key, , using constraint using constraint et et recursive unionrecursive union

Quantificateurs EXISTENTIEL et UNIVERSELQuantificateurs EXISTENTIEL et UNIVERSEL : : for for some/allsome/all table-res (condition) table-res (condition)

Page 55: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 55Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

ExemplesExemples

Page 56: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 56Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Manipulation) : SQL3 (Manipulation) : RécursionRécursion

Requêtes récursivesRequêtes récursives pour parcours hiérarchique avec pour parcours hiérarchique avec possibilités de limiter la profondeurpossibilités de limiter la profondeur (et les cycles avec la (et les cycles avec la clause clause CYCLE) avec type de recherche comme DEPTH FIRSTCYCLE) avec type de recherche comme DEPTH FIRST ou ou BREADTH FIRST BREADTH FIRST

EX : EX : Sélectionner tous les vols indirects au départ de NiceSélectionner tous les vols indirects au départ de NiceCreate view Create view RECURSIVERECURSIVE Vol-IND (VD, VA) AS Vol-IND (VD, VA) AS

(Select VD, VA(Select VD, VAfrom Volfrom VolunionunionSelect IN.VD, OUT.VASelect IN.VD, OUT.VAFrom Vol IN, Vol OUTFrom Vol IN, Vol OUTWhere IN.VA = OUT.VD and IN.HA < OUT.HD Where IN.VA = OUT.VD and IN.HA < OUT.HD

and and IN.Connections <3 )ou IN.Connections <3 )ou Search Breadth First by VD set …)Search Breadth First by VD set …)

Select * From VOL-IND Where VD = ‘Nice’;Select * From VOL-IND Where VD = ‘Nice’;

Page 57: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 57Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Manipulation) : appel de fonctions et opérateurs

• Appel de fonctions

EX : Selectionner les pilotes qui habitent à moins de 1 KM de Jean ?

SELECT r.nom

FROM pilote j, pilote r

WHERE j.nom = 'Jean' and distance(j.adr,r.adr) < 1;

Page 58: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 58Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Manipulation) : appel de fonctions et opérateurs

• Appel d'opérateurs :

EX : Sélectionner les noms des avions localisés à Nice avec leurs photos (zoom de 50%) ?

SELECT a.avnom, Zoom (a.photo, 50)

FROM avion a

WHERE a.loc..ville = « Nice » ;

Page 59: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 59Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Contrôle) : SQL3 (Contrôle) : TRANSACTIONSTRANSACTIONS

Début et fin explicites pour transactions : Début et fin explicites pour transactions : START/COMMITSTART/COMMIT TRANSACTION TRANSACTION avecavec ISOLATION LEVEL (Read uncommitted, ISOLATION LEVEL (Read uncommitted, read committed, repeatable read, read committed, repeatable read, serializable) serializable) et 2 modes d’accèset 2 modes d’accès (read only, (read only, read write)read write)

SET LOCAL TRANSACTION SET LOCAL TRANSACTION (pour (pour transactions répartiestransactions réparties))

SET CONSTRAINTS (deferred, immediate)SET CONSTRAINTS (deferred, immediate) transactions en mode asynchrone avec transactions en mode asynchrone avec

asyncasync, , savepointsavepoint, , rollback to savepointrollback to savepoint .. .. Spécification SQL/XA défini par X/OpenSpécification SQL/XA défini par X/Open

Page 60: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 60Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Contrôle) : SQL3 (Contrôle) : Sécurité des donnéesSécurité des données- create assertion- create assertion avec clauses avec clauses afterafter et et

beforebefore- intégrité référentielleintégrité référentielle (restrict…) (restrict…)- définition de rôlesdéfinition de rôles (create role) avec (create role) avec

GRANT/REVOKE possiblesGRANT/REVOKE possibles- PrivilegesPrivileges : Select, Delete, Update, Insert, : Select, Delete, Update, Insert,

References References (vues(vues), Usage ), Usage (modif. Schéma),(modif. Schéma), Trigger, Under, Execute, ALLTrigger, Under, Execute, ALL

Page 61: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 61Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Manipulation) : SQL3 (Manipulation) : Langage HOTELangage HOTE

Langage hôte intégré « complet » : Langage hôte intégré « complet » : - Contrôle de boucle avecContrôle de boucle avec WHILE, IF THEN WHILE, IF THEN

ELSE, REPEAT, FOR et LOOP (LEAVE), ELSE, REPEAT, FOR et LOOP (LEAVE), CASECASE

- - déclaration de variables et assignationsdéclaration de variables et assignations- « Routines » définies dans le langage hôte : « Routines » définies dans le langage hôte :

« « FunctionsFunctions » ou « » ou « Procédures Procédures » :  » :

SPECIFIC FUNCTION/ SPECIFIC FUNCTION/ PROCEDURE PROCEDURE

- Récursion linéaire possible entre procédures- Récursion linéaire possible entre procédures

Page 62: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 62Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Manipulation) : SQL3 (Manipulation) : Langage HOTELangage HOTE

Exemple : Envois de mails aux étudiants du Master Miage Exemple : Envois de mails aux étudiants du Master Miage et du Master MBDS sur le programme de DB Forumet du Master MBDS sur le programme de DB Forum

IF (Select Diplome From Etudiants Where Club= « DB IF (Select Diplome From Etudiants Where Club= « DB Forum ») Forum »)

= MBDS= MBDSThen insert into send_mail (Master…)Then insert into send_mail (Master…)Elseif (Select Diplôme…) Elseif (Select Diplôme…)

= MIAGE= MIAGEThen Insert into send_mail (Master..)Then Insert into send_mail (Master..)

CASECASEWhen ‘valeur1’ Then..When ‘valeur1’ Then..When ‘valeur2’ ThenWhen ‘valeur2’ ThenElse <SQL> End CaseElse <SQL> End Case

Page 63: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 63Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Manipulation) : SQL3 (Manipulation) : langage hôtelangage hôte

Langage d’Exception vis à vis du codeLangage d’Exception vis à vis du code SQLSTATE SQLSTATE avec :avec :

- 3 possibilités- 3 possibilités d’exécution : d’exécution :

CONTINUE, EXIT et UNDO CONTINUE, EXIT et UNDO

- la définition de conditions - la définition de conditions d’exception avecd’exception avec SIGNAL/RESIGNALSIGNAL/RESIGNAL

Possibilité de structuration en MODULES :Possibilité de structuration en MODULES :

« modules » :« modules » :{procedures}{procedures}

Page 64: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 64Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Manipulation) : SQL3 (Manipulation) : SQL3 PSMSQL3 PSM

Langage de programmation de procédures : Langage de programmation de procédures : « « Procédures stockéesProcédures stockées » » de SQL3 pour de SQL3 pour ADT en plus des fonctions et des procédures : ADT en plus des fonctions et des procédures : PSMPSM : « Persistent Stored Modules » : « Persistent Stored Modules »

• déclaration de variables et Assignation

• conditions CASE, IF

• boucles LOOP, FOR

• exceptions SIGNAL, RESIGNAL

• possibilité de procédures et fonctions externes et de structuration en modules

Page 65: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 65Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 (Manipulation) : SQL3 (Manipulation) : SQL3 PSMSQL3 PSM

Procédures stockéesProcédures stockées de SQL3 PSM de SQL3 PSM - Fonctions (monovaluées) : « actor » ou - Fonctions (monovaluées) : « actor » ou

« destructor »« destructor » - Procédures qui ne retournent pas de valeurs- Procédures qui ne retournent pas de valeurs - PSM qui peut contenir des fonctions et des - PSM qui peut contenir des fonctions et des procéduresprocédures

ExempleExempleCreate moduleCreate module actions_pilote actions_piloteProcedure Affectation (..) Begin.. EndProcedure Affectation (..) Begin.. EndProcedure Vacances (…) Begin…EndProcedure Vacances (…) Begin…EndProcedure Formation (…) Begin… EndProcedure Formation (…) Begin… End

Appel de procédure par CALL Appel de procédure par CALL EXEC SQL EXEC SQL CALL CALL actions_pilotes.affectation (‘IT100’, ‘Paris’,actions_pilotes.affectation (‘IT100’, ‘Paris’, ‘Nice’,..)‘Nice’,..)

Page 66: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59Copyright Serge MIRANDA, "Objets et

BD" (Part IV) 66

II Présentation II Présentation critique du critique du

double double paradigme : paradigme :

valeur valeur et et pointeurpointeur (type (type

REF) dans SQL3 !REF) dans SQL3 !

Page 67: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 67Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

SQL3 et 3ième Manifeste SQL3 et 3ième Manifeste de Date (96,99)de Date (96,99)

" " It seems clear It seems clear that the correct mapping of that the correct mapping of

encapsulated objects encapsulated objects into the relational data model into the relational data model

is that classes of objects is that classes of objects correspond to correspond to

DOMAINS (not to rows) « DOMAINS (not to rows) « DON CHAMBERLIN, DON CHAMBERLIN, membre SQL3 , IBM, Avril 97membre SQL3 , IBM, Avril 97

(InfoDB, Vol 10, numéro 6, p.25)(InfoDB, Vol 10, numéro 6, p.25)

Page 68: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 68Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Modèle OR de Date

Modèle V1 de T. Codd Modèle OR de C.Date

Structure Opérateurs Structures Opérateurs de données de données

RELATIONS SQL2 RELATIONSSQL3

DOMAINES / CLASSES (D) Signature RICE dans « domaines » Opérateurs spécifiques Hiérarchie de Domaines.. dans SELECT ou

WHERE

Page 69: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 69Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Rappels programmation : VALEURS vs VARIABLES vs POINTEURS

• VALEUR ? « constante non modifiable (au sens philosophique) »

• VARIABLE ?  Toute variable possède un NOM, une VALEUR et une ADR mémoire ;

VARIABLE := ( NOM, VALEUR, ADR)

• POINTEUR ? type de variable qui contient l’ ADR d’une autre variable comme valeur (« indirection »)

Page 70: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 70Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Retour sur le modèle Relationnel : TABLES vs RELVARS

1-Relations/TABLES (« valeurs ») vs Relations/VARIABLES ( « RELVARS » )

(DATE95, 99) « RELATION » : double signification :

« variable » et « valeur » ! :1-"En-tête"(ensemble de paires <noms de colonne, noms de domaines>)

<--> PREDICAT : le « RELVAR/RELATION » 2-"Corps" (ensemble de tuples de valeurs pas de pointeurs, conformes à l'en tête)

<-->TABLE DE VALEURS avec une volatilité importante : la « TABLE/RELATION »

Page 71: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 71Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Retour sur le modèle Relationnel

"Declare N Integer" ?N est une variable entière dont les valeurs sont des entiers "CREATE TABLE T " ?T est une variable relation (RELVAR) dont les valeurs sont des tables (tuples) (TABLES/RELATIONS)

Page 72: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 72Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Retour sur le modèle relationnel DOMAINES

2- "DOMAINES" !• "DOMAINE" (CODD70) : TYPE de données

("sémantique") défini par le système ou par l'utilisateur

==> opérateurs pouvant être associés

ENCAPSULATION de facto

==> TYPAGE « FORT » (toute valeur possède un

domaine/type)

Page 73: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 73Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Retour sur le modèle relationnel « DOMAINES »

NOTEs : 1) Aucune restriction sur les valeurs des Domaines dans leur définition

(==> domaines de graphes de sons, videos,..) !Exemple : Domaine des buts (séquences Vidéo) des meilleurs joueurs de football du monde (avec typologie

forte)2) Aucune interdiction d’associer un ensemble

d’opérateurs spécifiques3 ) Aucune interdiction de construire une

hiérarchie de domainesDOMAINES = Naturellement, Classes d' OBJETS dans la

terminologie OO ! ( Propriétés RICE au niveau des domaines)

Page 74: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 74Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

1) Ni les « TABLES » ni les « RELVARS » ne peuvent remplacer/Emuler le concept de « DOMAINES »

2) « Domaine » : seul niveau d’abstraction SEMANTIQUE incontournable entre les « valeurs » et les « relations » candidat NATUREL au support de CLASSES d’ OBJETS (propriété RICE)

« RELATIONS » (TABLES ou RELVARS) vs « DOMAINES »

Page 75: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

Double CONSTAT !Double CONSTAT !

• Les RelationsLes Relations/TABLES /TABLES ne sont pas desne sont pas des « Domaines » !« Domaines » !

• Les RelationsLes Relations/RELVARS /RELVARS ne sont pas des ne sont pas des « Domaines » !« Domaines » !

11/04/23 03:59 75Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Page 76: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 76Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Retour sur le modèle RelationnelTABLES vs DOMAINES

3- RELATIONS/TABLES et DOMAINES : DISTINCTS

Domaine : valeurs potentielles (" type") vs

Relation /table (Attributs): valeurs réelles

Les RELATIONS/TABLES sont

dépendantes du temps vs

les valeurs de DOMAINE sont "éternelles"

Page 77: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 77Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Retour sur le modèle RelationnelTABLES vs DOMAINES

domaines statiques vs relations/Tables dynamiques

Une « relation/table » A un type (le RELVAR)

alors qu'un « domaine » EST un type

Page 78: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 78Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Retour sur le modèle RelationnelRELVAR vs DOMAINES

Un domaine comprend des valeurs de complexité arbitraire

alors qu'un RELVAR contient des tuplesEX : Domaine DVille contient la valeur " Paris "

alors que le Relvar RVille contient le tuple <Dville : PARIS>

Un RELVAR n'encapsule pas des valeurs à la différence des domaines

Page 79: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 79Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Retour sur le modèle Relationnel RELVAR vs DOMAINES

4- Les RELVARS ne sont pas candidats naturels à être des CLASSES d'OBJETS

Exemple de RICE au niveau des RELVARS :

CREATE TABLE PERSONNE

(SS# CHAR(9),

DATE-NAISS DATE,

ADDRESSE CHAR (50));

Page 80: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 80Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Retour sur le modèle Relationnel(con't)

CREATE TABLE EMP UNDER PERSONNE

( ENOM CHAR(20),

SAL NUMERIC,

LOISIRS SET_OF (LOISIR)

TRAVAILLE_POUR (COMPAGNIE)

METHODES

RETRAITE (..): NUMERIC ;

Page 81: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 81Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Retour sur le modèle Relationnel(con't)

CREATE TABLE LOISIR

(NOM...…);

CREATE TABLE COMPAGNIE

(NOM CHAR(20),

LOCATION CHAR (12));

Page 82: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 82Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Besoins d'extensions

du Langage de requête

- expression de chemin

EX.: EMP.TRAVAILLE_POUR.LOCATION

- expression imbriquée

EX.: EMP.LOISIRS.NOM

Page 83: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 83Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Retour sur le modèle Relationnel(con't)

- Opérateurs de comparaison de relations

EX.: SUBSET,..

- Opérateurs de cheminement dans un graphe

- Appel de méthodes dans les expressions

Page 84: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 84Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Retour sur le modèle Relationnel(con't)

PROBLEMES ?

- Certaines colonnes ont des vrais TYPES de DONNEES (CHAR(20) : valeurs potentielles..) d'autres non, valeurs réelles (COMPAGNIE…)

- Classe RELVAR avec des variables PUBLIC sans nécessairement des méthodes (l'inverse dans les classes « pures » OO )

-

Page 85: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 85Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Retour sur le modèle Relationnel(con't)

Table incorrecte d’un point de vue structure informatique (cf 3NF) et mauvaise structure sémantique

- les objets lignes peuvent... contenir d'autres objets (EX.: les objets EMP contiennent des objets COMPAGNIE) en fait des POINTEURS vers ces objets (==> anomalie de mise à jour des lignes )

- Mise à jour des objets contenus : cascade ?

Page 86: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 86Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Retour sur le modèle Relationnel(con't)

- PB : une "relation" contient non seulement des valeurs mais des ...POINTEURS

==> ré-interprétation de l'ALGEBRE pour des objets imbriqués !

- héritage des méthodes pour les relations dérivées via les opérateurs de l'algèbre ? (EX: PROJ (SALAIRE, COMPAGNIE) avec RETRAITE ?)

Où sont les domaines ?

Page 87: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 87Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Type REF (Rappels)

VALEURS vs VARIABLES ?(cf PB Relation/TABLES vs Relations/RELVAR)

VARIABLE := (NOM, V, ADR)

VALEURS vs POINTEURS ?(Modèle Relationnel vs Modèle de Données Codasyl/OO)

VALEUR : éternelle !(EX: "Amour") vs

VARIABLE : modifiable et dépendante du temps

Page 88: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 88Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Type REF(con't)

Les Variables ont des adresses (pas les valeurs) :

TYPE « ADRESSE » avec 2 opérateurs de base :

* Référencement/adressage ("referencing") : vadr

en C : ptr = &v; (avec char v; et char *ptr ; alors v=6; ou *ptr=6;)

en PL/1 DECLARE N INTEGERDECLARE P POINTERP= ADDR (N)

* Déréférencement ("dereferencing") : adrven C : *A ; en PL/1 : A--> V

Page 89: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 89Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Etude du Type REF de SQL3

Trois extensions de SQL2 (pour les tables) :

ROWID, type 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 90: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 90Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Type REF de SQL3

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 91: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 91Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Type REF de SQL3

Type "REF" dès 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 92: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 92Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Type REF de SQL3

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 :

….Where ref (A) = refavion ;

Notation ‘.’ possible dans Oracle 9 pour «  »

Page 93: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 93Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Exemples avec type de données REF de SQL3

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 94: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 94Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Exemples avec type de données REF de SQL3

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 p

WHERE p.adr = 'Nice' ;

Page 95: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 95Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Exemples avec type de données REF de SQL3

Q2 (symétrique) : Quels sont les noms des pilotes préférant des Airbus A300 ?

SELECT p.plnom

FROM pilote p

WHERE p.refavion--> avnom='A300';

Page 96: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 96Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Exemple de jointure externe avec "-->"

Q : "pour chaque pilote habitant Nice, donner le nom du pilote avec le numéro et le nom de l ’avion préféré (pour ceux qui en ont un) "

Page 97: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 97Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Exemple de jointure externe avec "-->"

SELECT p.Plnom,

p.refavion-->(Av#, Avnom)

FROM Pilote p

WHERE p.Adr = 'Nice' ;

Page 98: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 98Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Exemple1

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

FROM Pilote p

WHERE p.refavion -->refpilote

-->Adr = 'Nice' ;

Page 99: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 99Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Exemple double jointure

• 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 100: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 100Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Exemple autojointure

• 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 101: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 101Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Exemple en SQL2

En SQL2, en remplaçant refavion et refpilote par des clés étrangères AV# et PL#et refavbis par RA :

SELECT P.PNOM

FROM Pilote P, Avion A1 A2 , Vol V

WHERE P.PL#= V.PL# AND

V.AV#= A1.AV# AND

A1.RA= A2.AV# AND

A2.Loc= 'Nice' ;

Page 102: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 102Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

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é d’un <REFPILOTE Pilote attitré d’un avion ; 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, VA, , VD, VA, HD, HA)HD, HA)

Quels sont les noms des pilotes préférant un Quels sont les noms des pilotes préférant un B747 qui conduisent un Airbus dont l’avion B747 qui conduisent un Airbus dont l’avion de rechange est l’ avion attitré de Jean? de rechange est l’ avion attitré de Jean?

Page 103: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 103Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

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

préférant un B747 qui conduisent préférant un B747 qui conduisent un Airbus dont l’avion de un Airbus dont l’avion de

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

FROM FROM vol vvol v

WHERE WHERE

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

and and

((v.REFPILv.REFPILREFAVIONREFAVION Avnom = ‘B747’)Avnom = ‘B747’) ; ;Traitez la en partie avec jointure de Traitez la en partie avec jointure de

SQL2SQL2

Page 104: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 104Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Exemple (bis) Exemple (bis)

ouou

SELECT SELECT

v.REFpil v.REFpil plnom ?, refavionplnom ?, refavion AVNOM = AVNOM = ‘B747’‘B747’

FROM FROM vol vvol v

WHERE v.REFav WHERE v.REFav Avnom – ‘Airbus’ and Avnom – ‘Airbus’ and REFavbis REFavbis Refpilote Refpilote Plnom = ‘Jean’ ; Plnom = ‘Jean’ ;

Page 105: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 105Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Exemple + complet !Exemple + complet !

Pilote (Pilote (PL#,PL#, PLNOM, ADR, PLNOM, ADR, REFAVION, REFAVION, REFCOPILREFCOPIL))

<REFAVION : Avion préféré d’un pilote><REFAVION : Avion préféré d’un pilote><<REFCOPIL : REFCOPIL : Référence Copilote>Référence Copilote>Avion (Avion (AV#,AV#, AVNOM, LOC AVNOM, LOC, REFAVBIS, , REFAVBIS,

REFPILOTEREFPILOTE) ) <REFPILOTE Pilote attitré d’un <REFPILOTE Pilote attitré d’un avion ; 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, VA, , VD, VA, HD, HA)HD, HA)

FORMATION (FORMATION (PL#,PL#, REFPILFREFPILF, , AVNOMAVNOM, DATE), DATE)

Page 106: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 106Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Question avec le MAX de Question avec le MAX de

Nom des pilotes qui préfèrent un Nom des pilotes qui préfèrent un avion dont l’avion de rechange est avion dont l’avion de rechange est localisé à Nice et dont le pilote attitré localisé à Nice et dont le pilote attitré a un copilote habitant Nice qui a reçu a un copilote habitant Nice qui a reçu en 2000 une formation pour conduire en 2000 une formation pour conduire un A300 qui est l’avion préféré dont le un A300 qui est l’avion préféré dont le pilote attitré est un pilote Parisien ?pilote attitré est un pilote Parisien ?

Inventer une Requête utilisant 4 Fois Inventer une Requête utilisant 4 Fois de suite la navigation de suite la navigation ? ?

Page 107: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 107Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Q 4 Q 4 ??

Select refPilSelect refPilNomNom

From volFrom vol

Where Where refAvrefAvrefPiloterefPiloterefAvionrefAvionrefAVbisrefAVbis

AVNom=‘Airbus’;AVNom=‘Airbus’;

En FR ?En FR ?

Page 108: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 108Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Réponse ?Réponse ?

Select P.PLNOMSelect P.PLNOM

From Pilote P , Formation FFrom Pilote P , Formation F

WhereWhere

P.refavionP.refavion refavbis refavbis A.loc = « ‘Nice A.loc = « ‘Nice », Refpilote», Refpilote refcopil refcopil Adr = « Nice Adr = « Nice »»

P.PlP.Pl## = F.PL = F.PL## And F.date= « 2000 » And F.date= « 2000 » and F.Avnom= « A300 », and F.Avnom= « A300 », RefavionRefavionRefpiloteRefpilote Adr = ‘Paris » Adr = ‘Paris »

Page 109: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 109Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

ExerciceExercice

Porter le schéma SQL3 précédent en Porter le schéma SQL3 précédent en schéma ODMG et répondez à une schéma ODMG et répondez à une requête mettant en jeu 4 « requête mettant en jeu 4 « » » Commentez les principales différences Commentez les principales différences

entre les 2 approchesentre les 2 approches

Page 110: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 110Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Exemple 2(donné par Don Chamberlin d’ IBM du

comité SQL3 dans Info DB correspondant à un exemple classique)

La relation Employe contient les attributs Salaire et REFdept (de type REF sur Departement)

La relation Departement contient l'attribut REFmngr (de type REF sur Employe)

Page 111: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 111Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Exemple 2

Q : noms et salaires des employés gagnant plus que leur managers ?

SELECT E.NOM, E.SALAIRE

FROM EMP E

WHERE E.Salaire > E.REFdept --> REFmngr-->Salaire ;

Page 112: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 112Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Exemple 2

en SQL2 (en remplaçant les types REF par des clés étrangères) :

SELECT E.Nom, E.Salaire

FROM Employe E, Employe F,

Departement D

WHERE E.D# = D.D# AND

D.Manager = F.Emp# AND

E.Salaire>F.Salaire ;

Page 113: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 113Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Discussion sur le type REF

1- Nature d'un résultat de projection sur le type REF?

SELECT refavion

FROM pilote p

WHERE p.pnom = 'serge' ;

Page 114: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 114Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Discussion sur le type REF

2- l'attribut de type REF contient des "adresses de variables lignes (POINTEURS) " !

Seul le concept de « variable relation » (RELVAR) existe dans le modèle relationnel !

3- Distinction entre le type REF et le concept de "clé

étrangère" de SQL2 ?- CE : Valeurs de CP vs Attribut REF : valeurs de

ROWID- manipulation différente !

Note : les valeurs de ROWID peuvent ne pas (encore) ou ne plus exister (« dangling references »)

Page 115: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 115Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

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 et non plus une valeur de clé étrangère (PL#) manipulable par une valeur de clé étrangère (PL#) manipulable par l’utilisateurl’utilisateur

La clé étrangère et le type REF peuvent cohabiter dans La clé étrangère et le type REF peuvent cohabiter dans une même tableune mê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 références à une table particulière (Alter table vol add (scope for REFPIL is pilote1));(scope for REFPIL is pilote1));

Page 116: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 116Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Initialisation ROWID ?Initialisation ROWID ?

Insert into VOL Insert into VOL ( IT100, 1, Nice, Paris, 7,8,( IT100, 1, Nice, Paris, 7,8,(Select (Select &ROW (p)&ROW (p) From Pilote p where p.nom From Pilote p where p.nom = ‘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 « Note : En Oracle 9, la clause « returning REF intoreturning REF into » permet de récupérer  » permet de récupérer le ROWID d’un tuplele ROWID d’un tuple

Exemple : Exemple : Insert into pilote values (1,Serge, Toulouse, Insert into pilote values (1,Serge, Toulouse, Returning Ref (pilote) Returning Ref (pilote) into pil-ref)into 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 117: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 117Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Initialisation ROWID ?Initialisation ROWID ?

Retour du RAT (« Retour du RAT (« Record at-a-time ») dans Record at-a-time ») dans lele SAT («  SAT (« Set at-a-timeSet at-a-time ») ! ») !

« Chasser le RAT dans SQL2 , il revient au « Chasser le RAT dans SQL2 , il revient au galop avec le type REF dans SQL3 ! »galop avec le type REF dans SQL3 ! »

Un lien multivalué (1:N ou N:M ) se traduit par un type REF Un lien multivalué (1:N ou N:M ) se traduit par un type REF permettant d’avoir des jointures « cablées » au niveau permettant d’avoir des jointures « cablées » au niveau TABLE ou TYPETABLE ou TYPE

La gestion d’initialisation et de manipulation des pointeurs La gestion d’initialisation et de manipulation des pointeurs associés est affaire de développeurs RATassociés est affaire de développeurs RAT

Page 118: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 118Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Remarques sur le type REF de SQL3 et le pointeur REF de l'ODMG

Dans ODMG, REF est un pointeur persistant qui enrichit le concept de pointeur C++ avec son pointeur symétrique INVERSE;

Dans SQL3

1- REF est un pointeur entre variables lignes

2- REF permet de simplifier des requêtes complexes (en SQL2 ) mettant en jeu des auto jointures et des jointures externes exploitant l’opérateur de déréférencement

Page 119: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 119Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Remarques sur le type REF de SQL3 et le pointeur REF de l'ODMG

Dans SQL3 deux paradigmes cohabitent dans la TABLE :

- « valeur » (algèbre/SQL)

- « pointeur » (Opérateurs REF/ DEREF)

Pourquoi ne pas avoir clairement séparé les deux mondes (cf Manifeste de Date?)

Note : « Spéciation » en biologie avec une vie faite de paliers…

COHERENCE? COMPLETUDE ? FERMETURE?

SQL3 (comme SQL2) n’est pas un bon standard

(qui évolue…)!

Page 120: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 120Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Remarques sur les TIPS des Bases de Données

Structures de données

• VALEURS vs

• POINTEURS (variables)

Opérateurs associés

• ALGEBRE vs

• Opérateurs REF et DEREF

Page 121: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 121Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Remarques sur les paradigmes de développement et SQL

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 122: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 122Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Remarques sur les paradigmes de développement et SQL

Développement d’application

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

time)

Paradigme OAT (Object at a time)

Pointeur CURSOR

Pointeur ligne ROWID (ref,deref) »

Nouveauté SQL2

Nouveauté SQL3

Page 123: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 123Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

Remarques sur les architectures « n-tier » Applications réparties sur

Architectures « n-tier »

Approche «  COMPOSANTS » Approche « SERVICES WEB »

Standards : CORBA, COM+, RMI

Sstandards : CORBA, COM+, RMI Sstandards : SOAP, UDDI, WSDL

Couplage Middleware LACHE

Couplage Middleware

FORT

Environnements HOMOGENES

Environnements HETEROGENES

Page 124: 04/05/2014 07:01 Copyright Serge MIRANDA, "Objets et BD" (Part IV) 1 Introduction à SQL3 (SQL99) Professeur Serge Miranda Serge.miranda@unice.fr Master2.

11/04/23 03:59 124Copyright Serge MIRANDA, "Objets et

BD" (Part IV)

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