194
Bases de Donn´ ees Avanc´ ees UML et SQL 2/3 Thierry Hamon Bureau H202 Institut Galil´ ee - Universit´ e Paris 13 & LIMSI-CNRS [email protected] https://perso.limsi.fr/hamon/Teaching/P13/BDA-INFO2-2018-2019/ INFO2 – BDA 1/193

Bases de Donn ees Avanc ees - LIMSI

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Bases de Donn ees Avanc ees - LIMSI

Bases de Donnees AvanceesUML et SQL 2/3

Thierry Hamon

Bureau H202Institut Galilee - Universite Paris 13

&LIMSI-CNRS

[email protected]

https://perso.limsi.fr/hamon/Teaching/P13/BDA-INFO2-2018-2019/

INFO2 – BDA

1/193

Page 2: Bases de Donn ees Avanc ees - LIMSI

PlanDe UML a SQL 2/3, Objet-Relationnel, Oriente-Objet

Introduction

De UML a SQL2(du conceptuel au relationnel etendu – objet-relationnel)

De UML a SQL3(du conceptuel a l’oriente objet)

Conclusion

2/193

Page 3: Bases de Donn ees Avanc ees - LIMSI

Conception, Developpement, Utilisation, Administration

1 Etape conceptuelle : Conception et Modelisation de bases dedonnees

2 Etape logique : Implantation d’une base de donnees

3 Etape physique :

4 Logiciels (SGBD, Interfaces, ...) & Materiels

3/193

Page 4: Bases de Donn ees Avanc ees - LIMSI

Modelisation de Bases de DonneesPhase d’analyse : definition d’un schema conceptuelSchema Conceptuel de Donnees (SCD) : selon le formalismeutilise,

ensemble d’Entites et d’Associationsouensemble de Classes

Formalisme EA, ER

Formalisme UML :

4/193

Page 5: Bases de Donn ees Avanc ees - LIMSI

Modelisation de Bases de Donnees

Differents formalismes de modelisation de schemas conceptuels deBD :

Formalisme EA, ER, EER

Modele Entite-Association (Entity-Relationship Model)Modele Entite-Association Etendu (ExtendedEntity-Relationship Model

Formalisme UML (Unified Modelling Language)

5/193

Page 6: Bases de Donn ees Avanc ees - LIMSI

Modele Entite-AssociationRappel

Entite : tout concept concret ou abstrait individualisable

Classe ou type d’entites : regroupement d’entites de memenature (niveau generique)

Association : relation liant plusieurs entites

Classe ou type d’associations) : regroupement d’associationspresentant les memes caracteristiques

6/193

Page 7: Bases de Donn ees Avanc ees - LIMSI

Modele entite-association etendu

Modele entite-association : jeu de concept reduit maissuffisant pour la modelisation de problemes simples (ou peucomplexes)

Modele Entite-association etendu : Modelisation plus preciseet plus expressive de problemes complexes et de grande taille

Introduction de mecanismes d’abstraction

de classificationd’heritaged’agregation

7/193

Page 8: Bases de Donn ees Avanc ees - LIMSI

Types faibles

Type d’entites ou d’associations faibles :

existence d’une instance subordonnee a l’existence d’un autretype d’entite ou d’association

8/193

Page 9: Bases de Donn ees Avanc ees - LIMSI

Classification

Regroupement d’entites dans des classes en fonction deproprietes communes

Possibilite de classer un objet dans plusieurs classes

Exemple :

Livre electronique : fichier electronique, et livre

Autocar : vehicule de transport en commun, vehicule amoteur a explosion

9/193

Page 10: Bases de Donn ees Avanc ees - LIMSI

HeritageSpecialisation - Generalisation

Un type d’ entite A est une specialisation d’un autre type d’entiteB si

chaque entite de A est une entite de BUne seule entite (au plus) de B est associe a une entite de A

10/193

Page 11: Bases de Donn ees Avanc ees - LIMSI

Agregation

Description de types d’entites complexesUn type d’associations entre types d’entites est considere commeun nouveau type d’entites

11/193

Page 12: Bases de Donn ees Avanc ees - LIMSI

Modelisation de Bases de DonneesLes deux formalismes E/R et UML sont tres proches /� equivalents �

Entite/Association → UMLEntite ObjetType d’entite ClasseRelation ObjetType d’association ClasseAttribut/Propriete ProprieteRole / Label Role

Methode

Domaine Contrainte de domaineCle Contrainte de cleContrainte ContrainteCardinalite Multiplicite/Cardinalite0,1 1,1 0,n 1,n a,b a,a 0..1 1 0..* 1..* a..b a

Diagramme E/A Diagramme de Classe UML

12/193

Page 13: Bases de Donn ees Avanc ees - LIMSI

De EA a SQL

Objectifs :

Implantation d’un schema conceptuel (SCD) dans un BDrelationnelle

Exploitation du SCD par le SGBD et les modules deprogrammation

→ Transformation dans un schema relationnel : Schema Logiquede Donnees (SLD)

13/193

Page 14: Bases de Donn ees Avanc ees - LIMSI

De EA a SQLExemple de schema conceptuel EA (SCD)

14/193

Page 15: Bases de Donn ees Avanc ees - LIMSI

De EA a SQLExemple de schema logique (schema relationnel) SLD

R1 ENT 2 ( B1 , B2 , B3 )R2 ENT 1 ( A1 , A2 , B1 ∗)R3 ENT 3 ( C1 , C2 )R4 ENT 4 ( D1 )R5 ASSOC 6 ( B1∗ , C1∗ , D1∗ , X1 )

15/193

Page 16: Bases de Donn ees Avanc ees - LIMSI

Regles de passagedu modele Entite-Association au modele Relationnel

Tout type d’entite E est traduit en une relation R

La cle primaire de R est l’identifiant de ELes attributs de R sont ceux de E.

Tout type d’association est traduit :

en une cle etrangere dans une relation existante si lacardinalite est du type 1,1 ou 0,1

en une nouvelle relation si aucune cardinalite n’est du type 1,1

ou 0,1 (elles sont toutes du type 0,n ou 1,n)

Plusieurs algorithmes sont possibles selon l’interpretation de lacardinalite minimale egale a 0.

16/193

Page 17: Bases de Donn ees Avanc ees - LIMSI

De UML a SQL

Traduction des associations binaires

Traduction des associations binaires recursives

Traduction des associations n-aires (n > 2)

Traduction des associations d’heritage

Traduction des contraintes d’heritage

Traduction des associations d’agregation

Traduction des contraintes d’integrite fonctionnelles(contraintes : Partition, Exclusion, Totalite, Simultaneite,Inclusion)

17/193

Page 18: Bases de Donn ees Avanc ees - LIMSI

Integrite des donnees (1)

Les SGBD prennent en compte l’integrite des donnees definies via

la declaration de contraintes (constraints)

la programmation de

fonctions (functions)de procedures (procedures) catalogueesde paquetages (packages)de declencheurs (triggers)

Le principe etant d’assurer la coherence de la base apres chaquemise a jour par les commandes insert, update ou delete

18/193

Page 19: Bases de Donn ees Avanc ees - LIMSI

Integrite des donnees (2)

Notation utilisee concernant les noms des contraintes :

la contrainte cle primaire d’une table se nomme pk table

la contrainte cle etrangere d’une table se nommefk table1 colonne table2

la contrainte de validite d’une colonne se nommeck table colonne

la contrainte de type non nulle sur une colonne se nommenn table colonne

la contrainte de type unique sur une colonne se nommeunique table colonne

19/193

Page 20: Bases de Donn ees Avanc ees - LIMSI

Traduction des associations binaires (1)Association du type 1-1

REM ∗∗∗ Un s t a g e e s t e f f e c t u e par au p l u s un e t u d i a n t

create tab l e STAGE( NUMEROS number ( 7 ) ,

NOMENTREPRISE varchar ( 4 0 ) ,TELENT varchar ( 1 5 ) ,ADRENT varchar ( 5 0 ) ,con s t r a i n t PK STAGE primary key (NUMEROS)

) ;

20/193

Page 21: Bases de Donn ees Avanc ees - LIMSI

Traduction des associations binaires (2)Association du type 1-1

REM ∗∗∗ Un e t u d i a n t e f f e c t u e o b l i g a t o i r e m e n t un s t a g e unique

c r ea te t ab l e ETUDIANT( NUMEROE number ( 7 ) ,

NOM va rcha r ( 1 0 ) ,PRENOM va rcha r ( 1 0 ) ,DATENAISSANCE date ,SEXE char ( 1 ) ,NUMEROS number ( 7 ) ,c o n s t r a i n t PK ETUDIANT pr imary key (NUMEROE) ,c o n s t r a i n t FK ETUDIANT NUMEROS STAGE f o r e i g n key (NUMEROS)

r e f e r e n c e s STAGE(NUMEROS) ,c o n s t r a i n t CK ETUDIANT SEXE check (SEXE i n ( ’M’ , ’ F ’ ) ) ,

−−c o n s t r a i n t NN ETUDIANT NUMEROS check (NUMEROS i s not n u l l ) ,c o n s t r a i n t UNIQUE ETUDIANT NUMEROS unique (NUMEROS)

) ;

21/193

Page 22: Bases de Donn ees Avanc ees - LIMSI

Traduction des associations binaires (1)Association du type 1-N

REM ∗∗∗ Une p e r s o n n e peut p o s s e d e r p l u s i e u r s v o i t u r e s

c r ea te t ab l e PERSONNE(

NUMEROP number ( 7 ) ,NOM va rcha r ( 1 0 ) ,PRENOM va rcha r ( 1 0 ) ,DATENAISSANCE date ,SEXE char ( 1 ) ,c o n s t r a i n t PK PERSONNE pr imary key (NUMEROP)

) ;

22/193

Page 23: Bases de Donn ees Avanc ees - LIMSI

Traduction des associations binaires (2)Association du type 1-N

REM ∗∗∗ Une v o i t u r e e s t o b l i g a t o i r e m e n t p o s s e d e e par une p e r s o n n e unique

c r ea te t ab l e VOITURE(

NUMIMMAT va rcha r ( 1 5 ) ,MARQUE va rcha r ( 2 0 ) ,TYPE va rcha r ( 3 0 ) ,NUMEROP number ( 7 ) ,c o n s t r a i n t PK VOITURE pr imary key (NUMIMMAT) ,c o n s t r a i n t FK VOITURE NUMEROP PERSONNE f o r e i g n key (NUMEROP)

r e f e r e n c e s PERSONNE(NUMEROP) ,

−−c o n s t r a i n t NN VOITURE NUMEROP check (NUMEROP i s not n u l l )

) ;

23/193

Page 24: Bases de Donn ees Avanc ees - LIMSI

Traduction des associations binaires (1)Association du type N-N

REM ∗∗∗ Une p e r s o n n e peut c r e e r p l u s i e u r s e n t r e p r i s e s

c r ea te t ab l e PERSONNE(

NUMEROP number ( 7 ) ,NOMP va rcha r ( 1 0 ) ,PRENOM va rcha r ( 1 0 ) ,DATENAISSANCE date ,SEXE char ( 1 ) ,c o n s t r a i n t PK PERSONNE pr imary key (NUMEROP)

) ;

24/193

Page 25: Bases de Donn ees Avanc ees - LIMSI

Traduction des associations binaires (2)Association du type N-N

REM ∗∗∗ Une e n t r e p r i s e d o i t e t r e c r e e eREM par une ou p l u s i e u r s p e r s o n n e s

create tab le ENTREPRISE(

NSIRET varchar ( 2 0 ) ,NOME varchar ( 2 0 ) ,STATUTJUR varchar ( 1 0 ) ,const ra in t PK ENTREPRISE primary key ( NSIRET )

) ;

25/193

Page 26: Bases de Donn ees Avanc ees - LIMSI

Traduction des associations binaires (3)Association du type N-N

create tab l e CREER(

NUMEROP number ( 7 ) ,NSIRET varchar ( 2 0 ) ,DATECREATION date ,con s t r a i n t PK CREER primary key (NUMEROP, NSIRET ) ,con s t r a i n t FK CREER NUMEROP PERSONNE

f o r e i gn key (NUMEROP)r e f e r e n c e s PERSONNE(NUMEROP) ,

con s t r a i n t FK CREER NSIRET ENTREPRISEf o r e i gn key ( NSIRET )r e f e r e n c e s ENTREPRISE( NSIRET )

) ;

La cardinalite minimale de l’association creer pourra etre testee parl’intermediaire d’une procedure PL/SQL

26/193

Page 27: Bases de Donn ees Avanc ees - LIMSI

Traduction des associations binaires (1)Association du type Reflexif/Recursif, UML ∼ EA

c r ea te t ab l e PERSONNES(

NUMERO number ( 7 ) , NOM va rcha r ( 1 5 ) , PRENOM va rcha r ( 1 5 ) ,DATENAISSANCE date , SEXE char ( 1 ) , PERE number ( 7 ) ,MERE number ( 7 ) ,c o n s t r a i n t PK PERSONNES pr imary key (NUMERO) ,c o n s t r a i n t FK PERSONNES PERE PERSONNES f o r e i g n key (PERE)

r e f e r e n c e s PERSONNES,c o n s t r a i n t FK PERSONNES MERE PERSONNES f o r e i g n key (MERE)

r e f e r e n c e s PERSONNES,c o n s t r a i n t CK SEXE PERSONNES check (SEXE i n ( ’M’ , ’ F ’ ) )

) ;

27/193

Page 28: Bases de Donn ees Avanc ees - LIMSI

Traduction des associations binaires (2)Association du type Reflexif/Recursif, UML ∼ EA

c r ea te t ab l e PRODUITS(

NUMERO number ( 3 ) , NOM va rcha r ( 1 5 ) , QSTOCK number ( 5 ) ,c o n s t r a i n t PK PRODUITS pr imary key (NUMERO) ,c o n s t r a i n t CK QSTOCK PRODUITS check (QSTOCK >= 0)

) ;

28/193

Page 29: Bases de Donn ees Avanc ees - LIMSI

Traduction des associations binaires (3)Association du type Reflexif/Recursif, UML ∼ EA

c r ea te t ab l e NOMENCLATURE(

COMPOSER number ( 3 ) , COMPOSANT number ( 3 ) , QFABR number ( 5 ) ,c o n s t r a i n t PK NOMENCLATURE pr imary key (COMPOSER, COMPOSANT) ,c o n s t r a i n t FK NOMENCL COMPOSER PRODUITS f o r e i g n key (COMPOSER)

r e f e r e n c e s PRODUITS ,c o n s t r a i n t FK NOMENCL COMPOSANT PRODUITS f o r e i g n key (COMPOSANT)

r e f e r e n c e s PRODUITS ,c o n s t r a i n t CK QFABR NOMENCLATURE check (QFABR >= 0)

) ;

→ Definition de requetes recursives

29/193

Page 30: Bases de Donn ees Avanc ees - LIMSI

Traduction des associations d’heritageTraduction des contraintes d’heritage

Gestion du personnel dans une universite

30/193

Page 31: Bases de Donn ees Avanc ees - LIMSI

Associations d’heritage dans UML (1)

Recensement des differents cas d’heritage en fonction desinstances

Modelisation des differents heritages, dans le formalismeUML, a l’aide des contraintes

partitionexclusiontotalite

31/193

Page 32: Bases de Donn ees Avanc ees - LIMSI

Associations d’heritage dans UML (2)

Expression des cas d’heritage a l’aide de

couverture

disjonction

d’instances dans une population donnee

Quatre type de contraintes sont recenses :

partition

totalite

exclusion

absence de contrainte

32/193

Page 33: Bases de Donn ees Avanc ees - LIMSI

Contraintes d’heritages PARTITION et TOTALITE

Disjonction & Couverture → Partition

Non-Disjonction & Couverture → Totalite

33/193

Page 34: Bases de Donn ees Avanc ees - LIMSI

Contraintes d’heritages EXCLUSION et ABSENCE DE

CONTRAINTE

Disjonction & Non-Couverture → ExclusionNon-Disjonction & Non-Couverture → Absence de contrainte

34/193

Page 35: Bases de Donn ees Avanc ees - LIMSI

Exemple (1)Gestion du personnel dans une universite

Couverture + Disjonction → Partition

Personnel (P) est egal a l’Union de Enseignant (EC) et deBIATOS (B) et l’Intersection de EC et de B est Vide

Couverture + Non-Disjonction → Totalite

Personnel (P) est egal a l’Union de Enseignant (EC) et deBIATOS (B) et l’Intersection de EC et de B n’est pas Vide

35/193

Page 36: Bases de Donn ees Avanc ees - LIMSI

Exemple (2)Gestion du personnel dans une universite

Non-Couverture + Disjonction → Exclusion

L’Union de Enseignant (EC) et de BIATOS (B) est inclusedans P et l’Intersection de EC et de B est Vide

Non-Couverture + Non-Disjonction → Absence de contraintes

L’Union de Enseignant (EC) et de BIATOS (B) est inclusedans P et l’Intersection de EC et de B n’est pas Vide

36/193

Page 37: Bases de Donn ees Avanc ees - LIMSI

Transformation des associations d’heritage

Traduction d’une association d’heritage en fonction des contraintesde l’association d’heritage→ 3 familles de decomposition :

Decomposition par distinction

Decomposition descendante (push-down)

Decomposition ascendante (push-up)

37/193

Page 38: Bases de Donn ees Avanc ees - LIMSI

Decomposition par distinction

Transformation de chaque sous-classe en une relation

Migration de la cle primaire de la sur-classe dans la ou lesrelations issues des sous-classes

La cle primaire de la sur-classe devient a la fois cle primaire etcle etrangere

DistinctionPERSONNEL( Numero , Nom, Prenom ,

DateNaissance , Sexe )

ENSEIGNANT( Numero∗ ,Echelon ,I n d i c e , S p e c i a l i t e )

BIATOS( Numero∗ , DateEmbauche ,S e r v i c e )

38/193

Page 39: Bases de Donn ees Avanc ees - LIMSI

Decomposition descendante

Deux cas possibles selon la contrainte d’heritage :

Contrainte de totalite ou de partition sur l’association :Possibilite de ne pas traduire la relation issue de la sur-classe→ Migration de tous les attributs dans la ou les relationsissues de la ou des sous-classes

Sinon : Migration de tous les attributs dans la ou les relationsissues de la ou des sous-classes→ Duplication des donnees

39/193

Page 40: Bases de Donn ees Avanc ees - LIMSI

Decomposition descendanteExemple

Contrainte de partition :

Aucun personnel ne peut etre a la fois enseignant et BIATOS

Il n’existe pas non plus un personnel n’etant ni enseignant nibiatos.

DescendanteENSEIGNANT( Numero ,

Nom, Prenom , DateNaissance ,Sexe , Echelon , I n d i c e ,S p e c i a l i t e )

BIATOS( Numero , Nom, Prenom ,DateNaissance , Sexe ,DateEmbauche , S e r v i c e )

40/193

Page 41: Bases de Donn ees Avanc ees - LIMSI

Decomposition ascendante

Suppression de la ou les relations issues de la ou dessous-classes

Migration des attributs dans la relation issue de la sur-classe

Exemple : (absence de contrainte)Ascendante

PERSONNEL( Numero , Nom, Prenom ,DateNaissance , Sexe ,Echelon , I n d i c e ,S p e c i a l i t e ,DateEmbauche , S e r v i c e )

41/193

Page 42: Bases de Donn ees Avanc ees - LIMSI

Transformation des associations d’heritage multiple

Memes regles ; plusieurs possibilitesExemple : (decomposition ascendante)Contrainte d’exclusion sur enseignant et BIATOS

PERSONNEL( Numero , Nom, Prenom ,DateNaissance , Sexe )

ENSEIGNANT ( Numero∗ ,Echelon , I n d i c e , S p e c i a l i t e ,DateDebutStage , DateF inStage )

BIATOS( Numero∗ , DateEmbauche ,S e r v i c e ,

DateDebutStage , DateF inStage )

42/193

Page 43: Bases de Donn ees Avanc ees - LIMSI

Transformation des associations d’heritage en SQL 2Exemple

Gestion du personnel dans une universite

43/193

Page 44: Bases de Donn ees Avanc ees - LIMSI

Transformation des associations d’heritageDecomposition par distinction

DistinctionPERSONNEL( Numero , Nom, Prenom ,

DateNaissance , Sexe )

ENSEIGNANT( Numero∗ ,Echelon ,I n d i c e , S p e c i a l i t e )

BIATOS( Numero∗ , DateEmbauche ,S e r v i c e )

REM ∗∗∗ Un p e r s o n n e l a l ’ U n i v e r s i t e

c r e a t e t a b l e PERSONNEL( NUMERO number ( 7 ) ,

NOM v a r c h a r ( 1 0 ) ,PRENOM v a r c h a r ( 1 0 ) ,DATENAISSANCE date ,SEXE c h a r ( 1 ) ,c o n s t r a i n t PK PERSONNEL p r i m a r y key (NUMERO) ,c o n s t r a i n t CK SEXE PERSONNEL check (SEXE i n ( ’M’ , ’ F ’ ) )

) ;

44/193

Page 45: Bases de Donn ees Avanc ees - LIMSI

Transformation des associations d’heritageDecomposition par distinction

REM ∗∗∗ P e r s o n n e l e n s e i g n a n t

c r ea te t ab l e ENSEIGNANT( NUMERO number ( 7 ) , ECHELON number ( 2 ) ,

INDICE number ( 5 ) , SPECIALITE va rcha r ( 2 0 ) ,c o n s t r a i n t PK ENSEIGNANT pr imary key (NUMERO) ,c o n s t r a i n t FK ENS PERS f o r e i g n key (NUMERO)

r e f e r e n c e s PERSONNEL) ;

REM ∗∗∗ P e r s o n n e l BIATOS ( Ing , Adm, Tech , Ouv , S e r v )

c r ea te t ab l e BIATOS( NUMERO number ( 7 ) , DATEEMBAUCHE date ,

SERVICE va rcha r ( 2 0 ) ,c o n s t r a i n t PK BIATOS pr imary key (NUMERO) ,c o n s t r a i n t FK BIATOS PERS f o r e i g n key (NUMERO)

r e f e r e n c e s PERSONNEL) ;

45/193

Page 46: Bases de Donn ees Avanc ees - LIMSI

Transformation des associations d’heritageDecomposition descendante

DescendanteENSEIGNANT( Numero ,

Nom, Prenom , DateNaissance ,Sexe , Echelon , I n d i c e ,S p e c i a l i t e )

BIATOS( Numero , Nom, Prenom ,DateNaissance , Sexe ,DateEmbauche , S e r v i c e )

REM ∗∗∗ P e r s o n n e l e n s e i g n a n t

c r ea te t ab l e ENSEIGNANT( NUMERO number ( 7 ) , NOM va rcha r ( 1 0 ) ,

PRENOM va rcha r ( 1 0 ) , DATENAISSANCE date ,SEXE char ( 1 ) , ECHELON number ( 2 ) ,INDICE number ( 5 ) , SPECIALITE va rcha r ( 2 0 ) ,c o n s t r a i n t CK SEXE ENSEIGNANT check

(SEXE i n ( ’M’ , ’ F ’ ) )c o n s t r a i n t PK ENSEIGNANT pr imary key (NUMERO)

) ;

46/193

Page 47: Bases de Donn ees Avanc ees - LIMSI

Transformation des associations d’heritageDecomposition descendante

DescendanteENSEIGNANT( Numero ,

Nom, Prenom , DateNaissance ,Sexe , Echelon , I n d i c e ,S p e c i a l i t e )

BIATOS( Numero , Nom, Prenom ,DateNaissance , Sexe ,DateEmbauche , S e r v i c e )

REM ∗∗∗ P e r s o n n e l BIATOS

c r ea te t ab l e BIATOS( NUMERO number ( 7 ) , NOM va rcha r ( 1 0 ) , PRENOM va rcha r ( 1 0 ) ,

DATENAISSANCE date , SEXE char ( 1 ) , DATEEMBAUCHE date ,SERVICE va rcha r ( 2 0 ) ,c o n s t r a i n t CK SEXE BIATOS check (SEXE i n ( ’M’ , ’ F ’ ) )c o n s t r a i n t PK BIATOS pr imary key (NUMERO)

) ;

46/193

Page 48: Bases de Donn ees Avanc ees - LIMSI

Transformation des associations d’heritageDecomposition ascendante

AscendantePERSONNEL( Numero , Nom, Prenom ,

DateNaissance , Sexe ,Echelon , I n d i c e ,S p e c i a l i t e ,DateEmbauche , S e r v i c e )

REM ∗∗∗ P e r s o n n e l

c r ea te t ab l e PERSONNEL( NUMERO number ( 7 ) , NOM va rcha r ( 1 0 ) , PRENOM va rcha r ( 1 0 ) ,

DATENAISSANCE date , SEXE char ( 1 ) , ECHELON number ( 2 ) ,INDICE number ( 5 ) , SPECIALITE va rcha r ( 2 0 ) ,DATEEMBAUCHE date , SERVICE va rcha r ( 2 0 ) ,c o n s t r a i n t CK SEXE PERSONNEL check (SEXE i n ( ’M’ , ’ F ’ ) )c o n s t r a i n t PK PERSONNEL pr imary key (NUMERO)

) ;

47/193

Page 49: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition par distinction

→ Contrainte de partition

Contrainte de totalite

Contrainte d’exclusion

Sans ContrainteContraintes d’heritage :

(Contrainte A) Il n’existe pas de personnel a la fois enseignantet BIATOS

(Contrainte B) Il n’existe pas de personnel ni enseignant niBIATOS

48/193

Page 50: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition par distinction

Implementation de la contrainte A : 2 declencheurs

REM ∗∗∗ D e c l e n c h e u r s u r ENSEIGNANT

c r ea te or r e p l a c e t r i g g e r TRIG ENSEIGNANTb e f o r e i n s e r t or update o f NUMERO on ENSEIGNANTf o r each rowd e c l a r e

num number ;b e g i n

s e l e c t NUMERO INTO numfrom BIATOS where NUMERO = : new .NUMERO;r a i s e a p p l i c a t i o n e r r o r (−20001 , ’ Le p e r s o n n e l ’ | |

t o c h a r (num ) | | ’ e s t d e j a BIATOS ! ! ! ’ ) ;except i on

when n o d a t a f o u n d then n u l l ;end ;/

49/193

Page 51: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition par distinction

REM ∗∗∗ D e c l e n c h e u r s u r BIATOS

c r ea te or r e p l a c e t r i g g e r TRIG BIATOSb e f o r e i n s e r t or update o f NUMERO on BIATOSf o r each rowd e c l a r e

num number ;b e g i n

s e l e c t NUMERO INTO numfrom ENSEIGNANT where NUMERO = : new .NUMERO;r a i s e a p p l i c a t i o n e r r o r (−20001 , ’ Le p e r s o n n e l ’ | |

t o c h a r (num ) | | ’ e s t d e j a e n s e i g n a n t ! ! ! ’ ) ;except i on

when n o d a t a f o u n d then n u l l ;end ;/

50/193

Page 52: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition par distinction

Implementation de la contrainte B :

procedures cataloguees (Insertion, Suppression)

declencheurs (Modification)

REM ∗∗∗ Ajout d ’ un E n s e i g n a n t

c r e a t e or r e p l a c e p r o c e d u r e AJOUT ENSEIGNANT(NUM number , NOM v a r c h a r , PREN v a r c h a r , DNAIS date ,

SEXE v a r c h a r , ECHEL number , IND number , SPEC v a r c h a r ) i sb e g i n

i n s e r t i n t o PERSONNEL v a l u e s (NUM, NOM, PREN, DNAIS , SEXE ) ;i n s e r t i n t o ENSEIGNANT v a l u e s

(NUM, ECHEL , IND , SPEC ) ;end ;/

51/193

Page 53: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition par distinction

REM ∗∗∗ Ajout d ’ un BIATOS

c r e a t e or r e p l a c e p r o c e d u r e AJOUT BIATOS(NUM number , NOM v a r c h a r , PREN v a r c h a r , DNAIS date ,

SEXE v a r c h a r , DEMB date , SERV v a r c h a r ) i sb e g i n

i n s e r t i n t o PERSONNEL v a l u e s (NUM, NOM, PREN, DNAIS , SEXE ) ;i n s e r t i n t o BIATOS v a l u e s (NUM, DEMB, SERV ) ;

end ;/

52/193

Page 54: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition par distinction

REM ∗∗∗ S u p p r e s s i o n d ’ un E n s e i g n a n t

c r e a t e or r e p l a c e p r o c e d u r e SUPPR ENSEIGNANT(NUM number ) i sb e g i n

d e l e t e from ENSEIGNANT where NUMERO = num ;d e l e t e from PERSONNEL where NUMERO = num ;

end ;/

REM ∗∗∗ S u p p r e s s i o n d ’ un BIATOS

c r e a t e or r e p l a c e p r o c e d u r e SUPPR BIATOS(NUM number ) i sb e g i n

d e l e t e from BIATOS where NUMERO = num ;d e l e t e from PERSONNEL where NUMERO = num ;

end ;/

53/193

Page 55: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition par distinction

REM ∗∗∗ D e c l e n c h e u r pour l a r e p e r c u s s i o n de l a m o d i f i c a t i o nREM ∗∗∗ du numero du PERSONNEL v e r s ENSEIGNANT e t BIATOS

c r ea te or r e p l a c e t r i g g e r TRIG ENSBIATOSb e f o r e update o f NUMERO on PERSONNELf o r each rowb e g i n

b e g i nupdate ENSEIGNANTs e t NUMERO = : new .NUMEROwhere NUMERO = : o l d .NUMERO;

except i onwhen n o d a t a f o u n d then n u l l ;

end ;update BIATOS

s e t NUMERO = : new .NUMEROwhere NUMERO = : o l d .NUMERO;

except i onwhen n o d a t a f o u n d then n u l l ;

end ;/

54/193

Page 56: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageUtilisation

REM ∗∗∗∗∗∗ I n s e r t i o n s des donn ees s o u s SQLPLUSREM ∗∗∗∗∗∗ Lancement des p r o c e d u r e s

s e l e c t ’ I n s e r t i o n d e s d o n n e e s ’ from d u a l ;PAUSE

execute AJOUT ENSEIGNANT ( 1 , ’TRAIFOR ’ , ’ Cl ement ’ ,’ 17−09−1958 ’ , ’M’ , 6 , 780 , ’BD ’ ) ;

execute AJOUT ENSEIGNANT ( 2 , ’TRAIFOR ’ , ’ C l e m e n t i n e ’ ,’ 22−11−1969 ’ , ’ F ’ , 6 , 780 , ’ IA ’ ) ;

execute AJOUT BIATOS ( 3 , ’FAITOUT ’ , ’ A lex ’ ,’ 16−10−1960 ’ , ’M’ , ’ 01−01−2002 ’ , ’ Commercia l ’ ) ;

PAUSE

s e l e c t ∗ from PERSONNEL ;s e l e c t ∗ from ENSEIGNANT ;s e l e c t ∗ from BIATOS ;PAUSE

55/193

Page 57: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition par distinction

→ Contrainte de totalite

Contraintes d’heritage :

(Contrainte B) Il n’existe pas de personnel ni enseignant ni BIATOS

(Contrainte C) Il peut exister un personnel a la fois enseignant etBIATOS

Implementation :

Contrainte B : voir ci-dessus

Contrainte C : equivaut a ne pas programmer la contrainte Aprecedente

⇒ Pas de mise en œuvre les declencheurs des tables ENSEIGNANT etBIATOS : TRIG_ENSEIGNANT, TRIG_BIATOS

56/193

Page 58: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition par distinction

→ Contrainte d’exclusion

Contraintes d’heritage :

(Contrainte A) Il n’existe pas de personnel a la fois enseignant etBIATOS

(Contrainte D) Il peut exister un personnel ni enseignant ni BIATOS

Implementation :

Contrainte A: voir ci-dessus

Contrainte D : equivaut a ne pas programmer la contrainte Bprecedente

⇒pas de mise en œuvre les quatre procedures (ajout et suppression)et le declencheur TRIG_ENSBIATOS

57/193

Page 59: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition par distinction

→ Sans Contrainte

Aucune contrainte n’est a programmer !

58/193

Page 60: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition descendante

DescendanteENSEIGNANT( Numero ,

Nom, Prenom , DateNaissance ,Sexe , Echelon , I n d i c e ,S p e c i a l i t e )

BIATOS( Numero , Nom, Prenom ,DateNaissance , Sexe ,DateEmbauche , S e r v i c e )

Contrainte de partition ? → aucun personnel ne peut etre a lafois enseignant et iatos et il n’existe pas non plus un personneln’etant ni enseignant ni iatos

Contrainte de totalite ?

Contrainte d’exclusion ? → il faudrait la table personnel pourles personnels non enseignant et non BIATOS

Sans contrainte !

59/193

Page 61: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition ascendante

→ Contrainte de partition

Contrainte de totalite

Contrainte d’exclusion

Sans Contrainte

Contraintes d’heritage :

(Contrainte A) Il n’existe pas de personnel a la fois enseignantet BIATOS

(Contrainte B) Il n’existe pas de personnel ni enseignant niBIATOS

60/193

Page 62: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition ascendante

Implementation des contraintes A et B :

au niveau de la table personnel

a l’aide des contraintes de type CHECK

Contrainte A :Verifier que les colonnes ECHELON, INDICE, SPECIALITE,DATEEMBAUCHE et SERVICE ne soient pas toutes initialisees

Contrainte B :Verifier que les colonnes ECHELON, INDICE, SPECIALITE,DATEEMBAUCHE et SERVICE ne soient pas toutes nulles

61/193

Page 63: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition ascendante

REM ∗∗∗∗ CONTRAINTE A

a l t e r t a b l e PERSONNELadd c o n s t r a i n t CK CONTRAINTE A

check ((ECHELON i s n u l l and INDICE i s n u l l and

SPECIALITE i s n u l l )or (DATEEMBAUCHE i s n u l l and SERVICE i s n u l l )

) ;

REM ∗∗∗∗ CONTRAINTE B

a l t e r t a b l e PERSONNELadd c o n s t r a i n t CK CONTRAINTE B

check ((ECHELON i s not n u l l or INDICE i s not n u l l or

SPECIALITE i s not n u l l )or (DATEEMBAUCHE i s not n u l l or SERVICE i s not n u l l )

) ;

62/193

Page 64: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition ascendante

→ Contrainte de totaliteContraintes d’heritage :

(Contrainte B) Il n’existe pas de personnel ni enseignant niBIATOS

(Contrainte C) Il peut exister un personnel a la fois enseignantet BIATOS

63/193

Page 65: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition ascendante

→ Contrainte de totalite

Contrainte B : voir ci-dessus

Contrainte C : Suppression ou desactiver la contrainte Aprecedente (DROP CONSTRAINT ouDISABLE CONSTRAINT)

DROP CONSTRAINT : en cas de reactivation de lacontrainte, il est necessaire de la recreer(ADD CONSTRAINT)DISABLE CONSTRAINT : en cas de reactivation de lacontrainte, il faut simplement la reactiver avec la requeteENABLE CONSTRAINT

64/193

Page 66: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition ascendante

→ Contrainte de totalite

REM La c o n t r a i n t e C r e v i e n t a f a i r e l aREM D e s a c t i v a t i o n de l a CONTRAINTE A

a l t e r t a b l e PERSONNELd i s a b l e c o n s t r a i n t CK CONTRAINTE A ;

65/193

Page 67: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition ascendante

→ Contrainte d’exclusion

Contrainte d’heritage :

Contrainte A→ Reactivation de la contrainte A en supprimantau prealable les tuples ne repondant pas a cette contrainte

Non-contrainte B → Desactivation de la contrainte B

66/193

Page 68: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition ascendante

→ Contrainte d’exclusion

REM ∗∗∗∗∗ R e a c t i v a t i o n de l a CONTRAINTE Aa l t e r t a b l e PERSONNEL

e n a b l e c o n s t r a i n t CK CONTRAINTE A ;

REM ∗∗∗∗∗ D e s a c t i v a t i o n de l a CONTRAINTE Ba l t e r t a b l e PERSONNEL

d i s a b l e c o n s t r a i n t CK CONTRAINTE B ;

67/193

Page 69: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’heritageDecomposition ascendante

→ Sans Contrainte

Aucune contrainte de type CHECK n’est a programmer !

68/193

Page 70: Bases de Donn ees Avanc ees - LIMSI

Recursivite

Sous Oracle,

possibilite de representation et de manipulation

de donnees ayant une structure de donnees recursive (arbre)

par une representation tabulaire et avec la commande SQL :

SELECT . . . FROM . . .WHERE . . .CONNECT BY PRIOR c o l o n n e o p e r a t e u r c o l o n n e[CONNECT BY c o l o n n e o p e r a t e u r PRIOR c o l o n n e ]START WITH . . .LEVEL . . .

69/193

Page 71: Bases de Donn ees Avanc ees - LIMSI

Exemples de parcours destructure de donnees de type recursif

Structures de donnees recursives de type ArbresExemples :

Arbre Genealogique

Nomenclature d’un produit (Compose, Composant)

Oracle offre la commande CONNECT BY

SELECT . . . FROM . . .WHERE . . .CONNECT BY PRIOR c o l o n n e o p e r a t e u r c o l o n n eCONNECT BY c o l o n n e o p e r a t e u r PRIOR c o l o n n e

START WITHLEVEL

70/193

Page 72: Bases de Donn ees Avanc ees - LIMSI

Structures hierarchiques, arborescentesArbre Genealogique

Oracle permet la representation et la manipulation des donneesayant une structure arborescente par le modele relationnel

c r ea te t ab l e PERSONNES (NUMERO number ( 7 ) , NOM va rcha r ( 1 5 ) , PRENOM va rcha r ( 1 5 ) ,DATENAISSANCE date , SEXE char ( 1 ) , PERE number ( 7 ) , MERE number ( 7 ) ,c o n s t r a i n t PK PERSONNES pr imary key (NUMERO) ,c o n s t r a i n t FK PERSONNES PERE PERSONNES f o r e i g n key (PERE) r e f e r e n c e s PERSONNES,c o n s t r a i n t FK PERSONNES MERE PERSONNES f o r e i g n key (MERE) r e f e r e n c e s PERSONNES,c o n s t r a i n t CK SEXE PERSONNES check (SEXE i n ( ’M’ , ’ F ’ ) ) ) ;

71/193

Page 73: Bases de Donn ees Avanc ees - LIMSI

Exemple de requete recursive

Recherche des ancetres d’une personne

s e l e c t d i s t i n c t NUMERO, NOM, PRENOM,DATENAISSANCE from PERSONNES

connect by p r i o r PERE=NUMERO orp r i o r MERE=NUMERO

s t a r t w i t h NUMERO=&num ;

72/193

Page 74: Bases de Donn ees Avanc ees - LIMSI

Conclusion / Bilan

Aucune des solutions ne constitue la panacee.

Il faut mesurer les performances des requetes.

Voir aussi le type de requetes

73/193

Page 75: Bases de Donn ees Avanc ees - LIMSI

Transformation des associations d’heritage en SQL 3

Heritage de types

Existe depuis la version 9.1 d’Oracle (novembre 2001)Uniquement heritage de typePas d’heritage multiple

Un type peut heriter d’un seul autre type (sur-type)Un sur-type peut permettre de definir plusieurs sous-typesChaque sous-type est specialise par rapport au sur-type qui estdit plus general

Mecanisme d’heritage automatiquement repercute au niveaudes tables objet a par du moment ou les types definissant lestables sont issus eux-memes d’une hierarchie d’heritage

Heritage de tables ?

74/193

Page 76: Bases de Donn ees Avanc ees - LIMSI

Heritage de types

Definition d’un personnel a l’Universite

−−− ∗∗∗ C r e a t i o n du t y p e de l a sur−c l a s s ec r ea te t y p e PERSONNEL TYPE AS OBJECT(

NUMERO number ( 7 ) ,NOM va rcha r ( 1 0 ) ,PRENOM va rcha r ( 1 0 ) ,DATENAISSANCE date ,SEXE char ( 1 )

)NOT FINAL /∗ peut i n c l u r e des s o u s c l a s s e s ∗//

75/193

Page 77: Bases de Donn ees Avanc ees - LIMSI

Heritage de types

Definition d’un enseignant

−−− ∗∗∗ C r e a t i o n du t y p e de l a sous−c l a s s ec r ea te t y p e ENSEIGNANT TYPE UNDER PERSONNEL TYPE(

ECHELON number ( 2 ) ,INDICE number ( 5 ) ,SPECIALITE va rcha r ( 2 0 )

)FINAL/

76/193

Page 78: Bases de Donn ees Avanc ees - LIMSI

Creation des tables objet et contraintes

Creation de tables objet en fonctions des types precedemmentdefinis

Aucune directive ne precise l’heritage : il est induit par lahierarchie de type existante

−−− ∗∗∗ P e r s o n n e l de l ’ u n i v e r s i t ec r ea te t ab l e PERSONNEL OF PERSONNEL TYPE(

c o n s t r a i n t PK PERSONNEL pr imary key (NUMERO) ,c o n s t r a i n t CK SEXE PERSONNEL check (SEXE i n ( ’M’ , ’ F ’ ) )

) ;−−− ∗∗∗ P e r s o n n e l e n s e i g n a n tc r ea te t ab l e ENSEIGNANT OF ENSEIGNANT TYPE ;

IMPORTANT : les contraintes ne sont definies que dans la tablepersonnel

77/193

Page 79: Bases de Donn ees Avanc ees - LIMSI

Creation des tables objet et contraintesIllustration

NB : Les contraintes ne sont definies que dans la table personnel

→ On herite d’un type

Insertion des donnees dans la table personnel :

i n s e r t i n t o p e r s o n n e l va l u e s ( 1 , ’B ’ , ’ F ’ , ’ 17−09−2004 ’ , ’M’ ) ;i n s e r t i n t o p e r s o n n e l va l u e s ( 1 , ’B ’ , ’ F ’ , ’ 17−09−2004 ’ , ’M’ ) ;∗ERREUR a l a l i g n e 1 :

ORA−00001: v i o l a t i o n de c o n t r a i n t e unique (FB . PK PERSONNEL)

s e l e c t ∗ from p e r s o n n e l ;NUMERO NOM PRENOM DATENAISSA S−−−−−−−−−− −−−−−−−−−− −−−−−−−−−− −−−−−−−−−− −

1 B F 17−09−2004 M

78/193

Page 80: Bases de Donn ees Avanc ees - LIMSI

Creation des tables objet et contraintesIllustration

NB : Les contraintes ne sont definies que dans la table personnel

→ On herite d’un type

Insertion des donnees dans la table enseignant :

i n s e r t i n t o e n s e i g n a n t va l u e s ( 7 , ’B ’ , ’ F ’ , ’ 17−09−2004 ’ , ’M’ , 2 , 780 , ’BD ’ ) ; 1 l i g n e c r e e e .i n s e r t i n t o e n s e i g n a n t va l u e s ( 7 , ’B ’ , ’ F ’ , ’ 17−09−2004 ’ , ’M’ , 2 , 780 , ’BD ’ ) ; 1 l i g n e c r e e e . ! ! !i n s e r t i n t o e n s e i g n a n t va l u e s ( 8 , ’B ’ , ’D ’ , ’ 17−10−2004 ’ , ’M’ , 2 , 780 , ’BD ’ ) ; 1 l i g n e c r e e e .

s e l e c t ∗ from e n s e i g n a n t ;

NUMERO NOM PRENO DATENAISSA S ECHELON INDICE SPECIALITE−−−−−−−−−−−−−−−−−−−−−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

7 B F 17−09−2004 M 2 780 BD7 B F 17−09−2004 M 2 780 BD8 B D 17−10−2004 M 2 780 BD

79/193

Page 81: Bases de Donn ees Avanc ees - LIMSI

Creation des tables objet et contraintes (2)

Ci-dessous :

Creation des tables objet en fonctions des typesprecedemment definis

Definition des contraintes au niveau des tables

−−− ∗∗∗ P e r s o n n e l de l ’ u n i v e r s i t ec r ea te t ab l e PERSONNEL OF PERSONNEL TYPE(

c o n s t r a i n t PK PERSONNEL pr imary key (NUMERO) ,c o n s t r a i n t CK SEXE PERSONNEL check (SEXE i n ( ’M’ , ’ F ’ ) )

) ;−−− ∗∗∗ P e r s o n n e l e n s e i g n a n t

80/193

Page 82: Bases de Donn ees Avanc ees - LIMSI

Transformation des associations d’heritage en SQL 3

c r ea te t ab l e ENSEIGNANT OF ENSEIGNANT TYPE(

c o n s t r a i n t PK ENSEIGNANT pr imary key (NUMERO) ,c o n s t r a i n t CK SEXE ENSEIGNANT check (SEXE i n ( ’M’ , ’ F ’ ) )

) ;

ATTENTION :

Definition des contraintes, aussi dans la table enseignant

Heritage d’un type

81/193

Page 83: Bases de Donn ees Avanc ees - LIMSI

Creation des tables objet et contraintes (2)illustrations

Les contraintes doivent etre definies aussi dans la tableenseignant : heritage d’un type

SQL> i n s e r t i n t o e n s e i g n a n t va l u e s ( 7 , ’B ’ , ’ F ’ , ’ 17−09−2004 ’ , ’M’ , 2 , 780 , ’BD ’ ) ; 1 l i g n e c r e e e .SQL> i n s e r t i n t o e n s e i g n a n t va l u e s ( 7 , ’B ’ , ’ F ’ , ’ 17−09−2004 ’ , ’M’ , 2 , 780 , ’BD ’ ) ;i n s e r t i n t o e n s e i g n a n t va l u e s ( 7 , ’B ’ , ’ F ’ , ’ 17−09−2004 ’ , ’M’ , 2 , 780 , ’BD ’ )∗ ERREUR a l a l i g n e 1 : ORA−00001: v i o l a t i o n de c o n t r a i n t e unique (FB . PK ENSEIGNANT)

SQL> i n s e r t i n t o e n s e i g n a n t va l u e s ( 8 , ’B ’ , ’D ’ , ’ 17−10−2004 ’ , ’M’ , 2 , 780 , ’BD ’ ) ; 1 l i g n e c r e e e .SQL> i n s e r t i n t o e n s e i g n a n t va l u e s ( 9 , ’B ’ , ’D ’ , ’ 17−10−2004 ’ , ’K ’ , 2 , 780 , ’BD ’ ) ;i n s e r t i n t o e n s e i g n a n t va l u e s ( 9 , ’B ’ , ’D ’ , ’ 17−10−2004 ’ , ’K ’ , 2 , 780 , ’BD ’ )∗ ERREUR a l a l i g n e 1 : ORA−02290: v i o l a t i o n de c o n t r a i n t e s (FB . CK SEXE ENSEIGNANT)

de v e r i f i c a t i o n

SQL> s e l e c t ∗ from e n s e i g n a n t ;NUMERO NOM PRENO DATENAISSA S ECHELON INDICE SPECIALITE−−−−−−−−−−−−−−−−−−−−−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

7 B F 17−09−2004 M 2 780 BD8 B D 17−10−2004 M 2 780 BD

82/193

Page 84: Bases de Donn ees Avanc ees - LIMSI

Transformation des associations d’heritage en SQL 3Heritage de tables : A venir

REM ∗∗∗ Un p e r s o n n e l a l ’ U n i v e r s i t ec r e a t e t a b l e PERSONNEL(

NUMERO number ( 7 ) , NOM v a r c h a r ( 1 0 ) ,PRENOM v a r c h a r ( 1 0 ) , DATENAISSANCE date ,SEXE c h a r ( 1 ) ,c o n s t r a i n t PK PERSONNEL p r i m a r y key (NUMERO) ,c o n s t r a i n t CK SEXE PERSONNEL check (SEXE i n ( ’M’ , ’ F ’ ) )

) ;

83/193

Page 85: Bases de Donn ees Avanc ees - LIMSI

Transformation des associations d’heritage en SQL 3Heritage de tables : A venir

REM ∗∗∗ P e r s o n n e l e n s e i g n a n tc r ea te t ab l e ENSEIGNANT under PERSONNEL(

ECHELON number ( 2 ) ,INDICE number ( 5 ) ,SPECIALITE va rcha r ( 2 0 )

) ;

REM ∗∗∗ P e r s o n n e l b i a t o sc r ea te t ab l e BIATOS under PERSONNEL(

DATEEMBAUCHE date ,SERVICE va rcha r ( 2 0 )

) ;

84/193

Page 86: Bases de Donn ees Avanc ees - LIMSI

Traduction des associations d’agregation

85/193

Page 87: Bases de Donn ees Avanc ees - LIMSI

Traduction des associations d’agregationREM ∗∗∗ Un co−p r o p r i e t a i r e peut p o s s e d e r p l u s i e u r s immeublesc r ea te t ab l e COPROPRIETAIRE(

NUMCO number ( 7 ) ,NOMCO va rcha r ( 1 0 ) ,TELCO va rcha r ( 1 5 ) ,ADRCO va rcha r ( 5 0 ) ,c o n s t r a i n t PK COPROPRIETAIRE pr imary key (NUMCO)

) ;

REM ∗∗∗ Un immeuble d o i t e t r e p o s s e d e par un ouREM p l u s i e u r s c o p r o p r i e t a i r e sc r ea te t ab l e IMMEUBLE(

NUMIMM number ( 7 ) ,ADRIMM va rcha r ( 5 0 ) ,c o n s t r a i n t PK IMMEUBLE pr imary key (NUMIMM)

) ;

86/193

Page 88: Bases de Donn ees Avanc ees - LIMSI

Traduction des associations d’agregation

c r ea te t ab l e DEPENSE(

NUMCO number ( 7 ) ,NUMIMM number ( 7 ) ,DATEDEP date ,MTTDEP number ( 1 0 , 2 ) ,LIBDEP va rcha r ( 5 0 ) ,c o n s t r a i n t PK DEPENSE pr imary key (NUMCO,NUMIMM) ,c o n s t r a i n t FK DEPENSE NUMCO COPROPR f o r e i g n key (NUMCO)

r e f e r e n c e s COPROPRIETAIRE(NUMCO) on de l e t e cascade ,c o n s t r a i n t FK DEPENSE NUMIMM IMMEUBLE f o r e i g n key (NUMIMM)

r e f e r e n c e s IMMEUBLE(NUMIMM ) on de l e t e cascade) ;

→ La cardinalite minimale de l’association depenser pourra etretestee par l’intermediaire d’une procedure PL/SQL

87/193

Page 89: Bases de Donn ees Avanc ees - LIMSI

Traduction des contraintes d’integrite fonctionnelles

Contraintes : Partition, Exclusion, Totalite, Simultaneite, Inclusion...Toutes les contraintes peuvent etre definies ou programmees via :

la declaration de contraintes (constraints)

la programmation de

fonctions (functions)procedures (procedures)paquetages (packages)declencheurs (triggers)

en PL/SQL ou avec un langage hote tel que le C, C++, Java

88/193

Page 90: Bases de Donn ees Avanc ees - LIMSI

Contrainte d’inclusion

c r ea te t ab l e STAGE(

NUMEROS number ( 7 ) ,NOMENTREPRISE va rcha r ( 4 0 ) ,TELENT va rcha r ( 1 5 ) ,ADRENT va rcha r ( 5 0 ) ,c o n s t r a i n t PK STAGE pr imary key (NUMEROS)

) ;

89/193

Page 91: Bases de Donn ees Avanc ees - LIMSI

Contrainte d’inclusionUne table par classe

c r ea te t ab l e ETUDIANT(

NUMEROE number ( 7 ) ,NOM va rcha r ( 1 0 ) ,PRENOM va rcha r ( 1 0 ) ,DATENAISSANCE date ,SEXE char ( 1 ) ,NUMEROS number ( 7 ) ,c o n s t r a i n t PK ETUDIANT pr imary key (NUMEROE) ,c o n s t r a i n t FK ETUDIANT NUMEROS STAGE f o r e i g n key (NUMEROS)

r e f e r e n c e s STAGE(NUMEROS) ,c o n s t r a i n t CK ETUDIANT SEXE check (SEXE i n ( ’M’ , ’ F ’ ) )

) ;

90/193

Page 92: Bases de Donn ees Avanc ees - LIMSI

Contrainte d’inclusion

c r ea te t ab l e VOEUX(

NUMEROE number ( 7 ) ,NUMEROS number ( 7 ) ,c o n s t r a i n t PK VOEUX pr imary key (NUMEROE,NUMEROS) ,c o n s t r a i n t FK VOEUX NUMEROE ETUDIANT f o r e i g n key (NUMEROE)

r e f e r e n c e s ETUDIANT (NUMEROE) ,c o n s t r a i n t FK VOEUX NUMEROS STAGE f o r e i g n key (NUMEROS)

r e f e r e n c e s STAGE(NUMEROS)) ;

a l t e r t a b l e ETUDIANT addc o n s t r a i n t FK EFFECTUER INCLUSION VOEUXf o r e i g n key (NUMEROE,NUMEROS)referencesVOEUX (NUMEROE,NUMEROS) ;

91/193

Page 93: Bases de Donn ees Avanc ees - LIMSI

Contrainte d’inclusionContrainte d’inclusion : Le logiciel doit etre installe sur un serveurdu departement qui a achete le programme.

Un logiciel L achete par le departement D est installe sur unserveur S, destine entre autres, a ce departement

92/193

Page 94: Bases de Donn ees Avanc ees - LIMSI

Contrainte d’inclusionUne table par Classe

c r ea te t ab l e DEPARTEMENT(

NUMDEP number ( 7 ) ,NOMDEP va rcha r ( 1 0 ) ,SPECIALITE va rcha r ( 2 0 ) ,c o n s t r a i n t PK DEPARTEMENT pr imary key (NUMDEP)

) ;

c r ea te t ab l e LOGICIEL(

NUMLOG number ( 7 ) ,NOMLOG va rcha r ( 1 0 ) ,VERSIONLOG va rcha r ( 1 0 ) ,c o n s t r a i n t PK LOGICIEL pr imary key (NUMLOG)

) ;

93/193

Page 95: Bases de Donn ees Avanc ees - LIMSI

Contrainte d’inclusionUne table par Classe

c r ea te t ab l e SERVEUR(

NUMSERV number ( 7 ) ,NOMSERV va rcha r ( 1 0 ) ,TYPESERV va rcha r ( 1 0 ) ,c o n s t r a i n t PK SERVEUR pr imary key (NUMSERV)

) ;

94/193

Page 96: Bases de Donn ees Avanc ees - LIMSI

Contrainte d’inclusionUne table par Association ou par Classe-Association

c r ea te t ab l e ACHETER (NUMDEP number ( 7 ) , NUMLOG number ( 7 ) , DATEACHAT date ,c o n s t r a i n t PK ACHETER pr imary key (NUMDEP,NUMLOG) ,c o n s t r a i n t FK ACHETER NUMDEP DEPARTEMENT

f o r e i g n key (NUMDEP) r e f e r e n c e s DEPARTEMENT(NUMDEP) ,c o n s t r a i n t FK ACHETER NUMLOG LOGICIEL

f o r e i g n key (NUMLOG) r e f e r e n c e s LOGICIEL (NUMLOG)) ;

c r ea te t ab l e UTILISER (NUMDEP number ( 7 ) , NUMSERV number ( 7 ) ,c o n s t r a i n t PK UTILISER pr imary key (NUMDEP,NUMSERV) ,c o n s t r a i n t FK UTILISER NUMDEP DEPARTEMENT

f o r e i g n key (NUMDEP) r e f e r e n c e s DEPARTEMENT(NUMDEP) ,c o n s t r a i n t FK UTILISER NUMSERV SERVEUR

f o r e i g n key (NUMSERV) r e f e r e n c e s SERVEUR(NUMSERV)) ;

95/193

Page 97: Bases de Donn ees Avanc ees - LIMSI

Contrainte d’inclusionUne table par Association ou par Classe-Association

c r ea te t ab l e INSTALLER (NUMLOG number ( 7 ) , NUMSERV number ( 7 ) ,c o n s t r a i n t PK INSTALLER pr imary key (NUMLOG,NUMSERV) ,c o n s t r a i n t FK INSTALLER NUMLOG LOGICIEL

f o r e i g n key (NUMLOG) r e f e r e n c e s LOGICIEL (NUMLOG) ,c o n s t r a i n t FK INSTALLER NUMSERV SERVEUR

f o r e i g n key (NUMSERV) r e f e r e n c e s ERVEUR(NUMSERV) ) ;

96/193

Page 98: Bases de Donn ees Avanc ees - LIMSI

Contrainte d’InclusionDeclencheur

Un logiciel L achete par le departement D est installe sur un serveur S, destine entre

autres, a ce departement

c r ea te or r e p l a c e t r i g g e r t r i g c o n t r a i n t e i n c l u s i o nb e f o r e i n s e r t on INSTALLERf o r each rowd e c l a r eLOGIC number ( 7 ) ;SERV number ( 7 ) ;b e g i n

s e l e c t ACHETER.NUMLOG, UTILISER .NUMSERV i n t o LOGIC , SERVfrom ACHETER, UTILISERwhere ACHETER.NUMDEP = UTILISER .NUMDEP and

ACHETER.NUMLOG = : new .NUMLOG andUTILISER .NUMSERV = : new .NUMSERV;

except i onwhen n o d a t a f o u n d thenr a i s e a p p l i c a t i o n e r r o r (−20100 ,

’ Le l o g i c i e l d o i t e t r e i n s t a l l e s u run s e r v e u r du d epar tement a c h e t e u r ’ ) ;

end ;/

97/193

Page 99: Bases de Donn ees Avanc ees - LIMSI

Programmation Objet – SQL 3

Objet-relationnel – Objet

Passage UML → Objet / Objet relationnel

98/193

Page 100: Bases de Donn ees Avanc ees - LIMSI

Schema relationnel / SQL2

Schema relationnel :

COURS ( NUM COURS, NOMC, NBHEURES, ANNEE )

PROFESSEURS ( NUM PROF, NOMP, SPECIALITE , DATE ENTREE ,DER PROM, SALAIRE BASE , SALAIRE ACTUEL

)

CHARGE( NUM PROF∗ , NUM COURS∗ )

99/193

Page 101: Bases de Donn ees Avanc ees - LIMSI

Schema relationnel / SQL2SQL2 :c r ea te t ab l e COURS( NUM COURS NUMBER( 2 ) NOT NULL ,

NOMC VARCHAR( 2 0 ) NOT NULL ,NBHEURES NUMBER( 2 ) ,ANNE NUMBER( 1 ) ,c o n s t r a i n t PK COURS pr imary key (NUM COURS)

) ;

c r ea te t ab l e PROFESSEURS( NUM PROF NUMBER( 4 ) NOT NULL ,

NOMP VARCHAR2( 2 5 ) NOT NULL ,SPECIALITE VARCHAR2( 2 0 ) ,DATE ENTREE DATE,DER PROM DATE,SALAIRE BASE NUMBER,SALAIRE ACTUEL NUMBER,c o n s t r a i n t PK PROFESSEURS pr imary key (NUM PROF)

) ;

c r ea te t ab l e CHARGE( NUM PROF NUMBER( 4 ) NOT NULL ,

NUM COURS NUMBER( 4 ) NOT NULL ,c o n s t r a i n t PK CHARGE pr imary key (NUM COURS,

NUM PROF)) ;

100/193

Page 102: Bases de Donn ees Avanc ees - LIMSI

Schema relationnel / SQL2

a l t e r t a b l e CHARGEadd c o n s t r a i n t FK CHARGE COURS

f o r e i g n key (NUM COURS)r e f e r e n c e s COURS (NUM COURS ) ;

a l t e r t a b l e CHARGEadd c o n s t r a i n t FK CHARGE PROFESSEUR

f o r e i g n key (NUM PROF)r e f e r e n c e s PROFESSEURS (NUM PROF ) ;

101/193

Page 103: Bases de Donn ees Avanc ees - LIMSI

Schema relationnel-objet / SQL3

Schema relationnel-objet

COURS ( NUM COURS, NOMC, NBHEURES, ANNEE )

PROFESSEURS (NUM PROF, NOMP, SPECIALITE , DATE ENTREE ,DER PROM, SALAIRE BASE , SALAIRE ACTUEL ,EnsembleDe (COURS)

)

102/193

Page 104: Bases de Donn ees Avanc ees - LIMSI

Schema relationnel-objet / SQL3SQL3 :c r ea te t y p e c o u r s t y p e as o b j e c t( num cours number ( 2 ) , nomc va rcha r2 ( 2 0 ) ,

n b h e u r e s number ( 2 ) , annee number ( 1 ) )/

c r ea te t y p e l e s c o u r s t y p e as t ab l e o f c o u r s t y p e/

c r ea te t y p e p r o f e s s e u r t y p e as o b j e c t( num prof number ( 4 ) , nom va rcha r2 ( 2 5 ) ,

s p e c i a l i t e va rcha r2 ( 2 0 ) , c o u r s l e s c o u r s t y p e . . . )/

c r ea te t ab l e p r o f e s s e u r o f p r o f e s s e u r t y p e( pr imary key ( num prof ) )n e s t e d t a b l e c o u r s s t o r e as tabemp/

103/193

Page 105: Bases de Donn ees Avanc ees - LIMSI

Types ObjetType de donnees

Principaux type de donnees Oracle :

104/193

Page 106: Bases de Donn ees Avanc ees - LIMSI

Types ObjetPersistance

Sous Oracle, 3 categories d’objets :

Objets colonne (column objects) : stockes en tant quecolonne structuree dans une table relationnelle ;Objets ligne (row objects) : stockes en tant que ligne d’unetable objet.

possedent un identificateur unique appele OID (ObjectIdentifier)peuvent etre indexes et partitionnes

Objets non persistants : non stockes

ni dans une colonne d’une table relationnelleni dans une ligne d’une table objet

Ces objets n’existent que durant l’execution d’un programmePL/SQL

105/193

Page 107: Bases de Donn ees Avanc ees - LIMSI

Types Objet

Definition de chaque objet a partir d’un type decrivant

une structure de donnees se positionnant dans une hierarchied’heritagedes methodes

Utilisation d’un type :

Construire d’autres typesDefinir une ou plusieurs tables objetDefinir une colonne d’une table relationnelleConstruire des vues objet

106/193

Page 108: Bases de Donn ees Avanc ees - LIMSI

Types ObjetCreation d’un type

Creation

CREATE [OR REPLACE TYPE] schema . nomType[AS OBJECT | UNDER schema . nomSurType ]

(REM ∗∗∗ d e f i n i t i o n de l a s t r u c t u r ec o l o n n e 1 type1 , c o l o n n e 2 type2 , . . . ,

REM ∗∗∗ d e f i n i t i o n du comportementmethode1 ( p a r a m e t r e s 1 ) , methode2 ( p a r a m e t r e s 2 ) . . .

)[ [NOT] INSTANTIABLE ]

REM ∗∗∗ p o s i t i o n n e m e n t dans l e graphe d ’ h e r i t a g e[ [ NOT] FINAL ]/

107/193

Page 109: Bases de Donn ees Avanc ees - LIMSI

Creation d’un typeDirective FINAL

Directives FINAL et NOT FINAL : positionnement d’un typedans le graphe d’heritage

Directive NOT final : a appliquer aux types generiques

Par defaut, tout type est FINALUn type FINAL ne peut servir a definir des sous-types

108/193

Page 110: Bases de Donn ees Avanc ees - LIMSI

Creation d’un typeDirective FINAL – Exemples

CREATE TYPE a d r e s s e t AS OBJECT (nrue NUMBER( 3 ) , r u e VARCHAR( 4 0 ) , v i l l e VARCHAR( 3 0 )

/

CREATE TYPE P e r s o n n e l t AS OBJECT(nom VARCHAR ( 1 0 ) , prenom VARCHAR( 1 0 ) , a d r e s s e a d r e s s e t ) )NOT FINAL

/

CREATE TYPE E n s e i g n a n t t UNDER P e r s o n n e l t (Eche lon NUMBER, i n d i c e NUMBER)FINAL

109/193

Page 111: Bases de Donn ees Avanc ees - LIMSI

Creation d’un typeDirective INSTANTIABLE

Directives INSTANTIABLE et NOT INSTANTIABLE : capacited’instancitation d’un typeTous les types crees sont par defaut INSTANTIABLENOT INSTANTIABLE : similaire a la notion de classe abstraiteChaque type possede

un constructeur permettant de creer des objets (persistants ounon) a l’aide de la commande NEW ou au sein d’un commandeINSERT

un constructeur (par defaut) et plusieurs dans le cas desurcharge

Un type NOT INSTANTIABLE ne peut pas etre FINAL

Un sous-type NOT INSTANTIABLE peut heriter d’un typeINSTANTIABLE

110/193

Page 112: Bases de Donn ees Avanc ees - LIMSI

Creation d’un typeDirective INSTANTIABLE -- Exemples

CREATE TYPE P e r s o n n e l t AS OBJECT(nom VARCHAR ( 1 0 ) , prenom VARCHAR( 1 0 ) , a d r e s s e a d r e s s e t ) )NOT INSTANTIABLE NOT FINAL

/

CREATE TYPE E n s e i g n a n t t UNDER P e r s o n n e l t (Eche lon NUMBER, i n d i c e NUMBER)INSTANTIABLE FINAL

/

111/193

Page 113: Bases de Donn ees Avanc ees - LIMSI

Types ObjetSuppression d’un type

DROP TYPE nomType [ FORCE | VALIDATE ] ;

Directives :

FORCE : suppression du type meme s’il y a des objets de cetype dans une baseOracle marque les colonnes dependant de ce type, UNUSED, etelles deviennent inaccessibles (non recommande)

VALIDATE : Verification si les instances du type a supprimerpeuvent etre substitues par un sur-type.

Exemple :

DROP TYPE P e r s o n n e l t FORCE

112/193

Page 114: Bases de Donn ees Avanc ees - LIMSI

Types ObjetCreation d’un type

Specification de l’objetCREATE TYPE Bank Account AS OBJECT (

acct number INTEGER ( 5 ) ,b a l a n c e REAL ,s t a t u s VARCHAR2( 1 0 ) ,

MEMBER PROCEDURE open( amount IN REAL ) ,

MEMBER PROCEDURE v e r i f y a c c t(num IN INTEGER ) ,

MEMBER PROCEDURE c l o s e(num IN INTEGER , amount OUT REAL)

) ;

CREATE TYPE BODY Bank Account AS. . .

END ;

113/193

Page 115: Bases de Donn ees Avanc ees - LIMSI

Types ObjetCreation d’un type

Definition des methodes associees a l’objet

CREATE TYPE BODY Bank Account AS

MEMBER PROCEDURE open ( amount IN REAL) I SBEGIN −− open account w i t h i n i t i a l d e p o s i t

IF NOT amount > 0 THENRAISE APPLICATION ERROR(−20104 , ’ bad amount ’ ) ;

END IF ;−− SELECT a c c t s e q u e n c e . NEXTVAL INTO acct number FROM d u a l ;s t a t u s := ’ open ’ ;b a l a n c e := amount ;

END open ;

114/193

Page 116: Bases de Donn ees Avanc ees - LIMSI

Types ObjetCreation d’un type

MEMBER PROCEDURE v e r i f y a c c t (num IN INTEGER) I SBEGIN −− check f o r wrong account number o r c l o s e d account

IF (num <> acct number ) THENRAISE APPLICATION ERROR(−20105 , ’ wrong number ’ ) ;

ELSIF ( s t a t u s = ’ c l o s e d ’ ) THENRAISE APPLICATION ERROR(−20106 , ’ account c l o s e d ’ ) ;

END IF ;END v e r i f y a c c t ;

MEMBER PROCEDURE c l o s e (num IN INTEGER , amount OUT REAL) I SBEGIN −− c l o s e account and r e t u r n b a l a n c e

v e r i f y a c c t (num ) ;s t a t u s := ’ c l o s e d ’ ;amount := b a l a n c e ;

END c l o s e ;END ;

115/193

Page 117: Bases de Donn ees Avanc ees - LIMSI

Types ObjetExtraction de la description d’un type

Definition de nouvelles vues du DD pour prendre en compte lestypesExemple :

c r ea te t y p e emp type as o b j e c t ( n i n s e e va rcha r2 ( 1 3 ) ,age number , nom va rcha r2 ( 3 0 ) )

/

Description de la structure du 1er niveau d’un type :

SQL> DESC emp type

116/193

Page 118: Bases de Donn ees Avanc ees - LIMSI

Types ObjetExtraction de la description d’un type

Exemples de vues : (USER_..., DBA_..., ALL_...)

Description :

des collections : USER_COLL_TYPES

des index sur les types : USER_INDEXTYPES

des types d’une maniere generale : USER_TYPES

des attributs des types : USER_TYPE_ATTRS

des methodes des types : USER_TYPE_METHODS

des versions des types : USER_TYPE_VERSIONS

117/193

Page 119: Bases de Donn ees Avanc ees - LIMSI

Passage a l’objetTables relationnelles

−− Table : MAGASINS2 SQL2c r ea te t ab l e MAGASINS2( NUMMAG INTEGER ,

NOMMAG CHAR( 3 0 ) ,TELMAG CHAR( 1 5 ) ,ADRNUMMAG VARCHAR2( 1 0 ) ,ADRRUEMAG VARCHAR2( 5 0 ) ,ADRCPMAG VARCHAR2( 1 0 ) ,ADRVILLEMAG VARCHAR2( 5 0 ) ,ADRPAYSMAG VARCHAR2( 5 0 ) ,c o n s t r a i n t PK MAGASINS2

pr imary key (NUMMAG) ) ;

−− Table : CLIENTS2 SQL2c r ea te t ab l e CLIENTS2( NUMCLI INTEGER ,

NOMCLI CHAR( 2 0 ) ,TELCLI CHAR( 1 5 ) ,ADRNUMCLI VARCHAR2( 1 0 ) ,ADRRUECLI VARCHAR2( 5 0 ) ,ADRCPCLI VARCHAR2( 1 0 ) ,ADRVILLECLI VARCHAR2( 5 0 ) ,ADRPAYSCLI VARCHAR2( 5 0 ) ,c o n s t r a i n t PK CLIENTS2

pr imary key (NUMCLI ) ) ;

i n s e r t i n t o MAGASINS2 va l u e s ( 1 , ’FB ’ , ’ 0145454545 ’ , ’ 13 ’ , ’ Avenue de l a p a i x ’ ,’ 75015 ’ , ’ P a r i s ’ , ’ France ’ ) ;

NUMMAG NOMMAG TELMAG ADRNU ADRRUEMAG ADRCP ADRVILLEMA ADRPAYSMAG1 FB 0145454545 13 Avenue de l a p a i x 75015 P a r i s France2 FB 0155555555 20 Avenue de l a l i b e r t e 06100 Nice France3 FB 0155555555 10 Avenue des Amis 6050 B r u x e l l e s B e l g i q u e4 FB 71226002 10 Avenue du s o l e i l 1001 Tunis T u n i s i e

NUMCLI NOMCLI TELCLI ADRNU ADRRUECLI ADRCP ADRVILLECL ADRPAYSCLI1 TRAIFOR 0645454545 13 Avenue de l a p a i x 75015 P a r i s France2 CLEMENT 0607080910 17 Avenue de l a p a i x 75015 P a r i s France3 SOUCY 98980307 77 Route de l a c o r n i c h e 4001 Sousse T u n i s i e

118/193

Page 120: Bases de Donn ees Avanc ees - LIMSI

Tables ObjetCreation d’un type – TAD

Premiere extension du modele relationnel : Types Abstraits de Donnees(TAD)TAD (contexte BD) :

Nouveau type d’attribut defini par l’utilisateur

Enrichissement de la collection existante de types disponibles par defaut(number, date, char, varchar ...)

Structure de donnees partagee

Utilisation du type dans une ou plusieurs tablesParticipation a la composition d’un ou plusieurs autres types

Remarques :

Un TAD inclut des methodes qui sont des procedures ou des fonctions

Elles permettent de manipuler les objets du type abstrait

119/193

Page 121: Bases de Donn ees Avanc ees - LIMSI

Tables ObjetCreation d’un type – exemple de TAD

c r ea te t y p e ADRESSE TYPE as o b j e c t( ADRNUM VARCHAR2( 1 0 ) ,

ADRRUE VARCHAR2( 5 0 ) ,ADRCP VARCHAR2( 1 0 ) ,ADRVILLE VARCHAR2( 5 0 ) ,ADRPAYS VARCHAR2( 5 0 ) )

/

c r ea te t y p e MAG TYPE as o b j e c t( NUMMAG INTEGER ,

NOMMAG CHAR( 3 0 ) ,TELMAG CHAR( 1 5 ) ,ADRMAG ADRESSE TYPE )

/

c r ea te t y p e CLI TYPE as o b j e c t( NUMCLI INTEGER ,

NOMCLI CHAR( 3 0 ) ,TELCLI CHAR( 1 5 ) ,ADRCLI ADRESSE TYPE )

/

120/193

Page 122: Bases de Donn ees Avanc ees - LIMSI

Tables ObjetCreation d’une table – Exemples

create tab l e MAGASINS3 OF MAG TYPE( con s t r a i n t PK MAGASINS3 primary key (NUMMAG) ) ;

create tab l e CLIENTS3 OF CLI TYPE( con s t r a i n t PK CLIENTS3 primary key (NUMCLI) ) ;

121/193

Page 123: Bases de Donn ees Avanc ees - LIMSI

Tables ObjetCreation d’un type

Remarques :

Un type ne peut pas contenir de contraintes (NOT NULL,CHECK, UNIQUE, DEFAULT, PRIMARY KEY, FOREIGN KEY, etc.).

Les contraintes doivent etre declarees au niveau de la tableobjet

Acces a la description des types a partir du Dictionnaire deDonnees :

SQL > s e l e c t tab le name , o b j e c t i d t y p e , t a b l e t y p e o w n e r ,t a b l e t y p e from u s e r o b j e c t t a b l e s ;

122/193

Page 124: Bases de Donn ees Avanc ees - LIMSI

Tables ObjetCreation/description d’une table Exemples

SQL> desc c l i e n t s 2Nom NULL ? Type−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− −−−−−−−− −−−−−−−−−−−−−−−−−−−−−NUMCLI NOT NULL NUMBER( 3 8 )NOMCLI CHAR( 2 0 )TELCLI CHAR( 1 5 )ADRNUMCLI VARCHAR2( 1 0 )ADRRUECLI VARCHAR2( 5 0 )ADRCPCLI VARCHAR2( 1 0 )ADRVILLECLI VARCHAR2( 5 0 )ADRPAYSCLI VARCHAR2( 5 0 )

SQL> desc c l i e n t s 3Nom NULL ? Type−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− −−−−−−−− −−−−−−−−−−−−−−−−−−−−−NUMCLI NOT NULL NUMBER( 3 8 )NOMCLI CHAR( 3 0 )TELCLI CHAR( 1 5 )ADRCLI ADRESSE TYPE

123/193

Page 125: Bases de Donn ees Avanc ees - LIMSI

Tables ObjetObject identifier (OID)

OID bases sur la cle primaire : Utilisation de l’option primarykeyc r ea te t ab l e CLIENTS3 OF CLI TYPE

( c o n s t r a i n t PK CLIENTS3 pr imary key (NUMCLI) )o b j e c t i d e n t i f i e r i s pr imary key ;

Index sur OID :c r ea te t ab l e CLIENTS3 OF CLI TYPE

( c o n s t r a i n t PK CLIENTS3 pr imary key (NUMCLI) )o b j e c t i d e n t i f i e r i s system g e n e r a t e d OIDINDEX n d x c l i e n t s 3 ;

c r ea te t ab l e CLIENTS3 OF CLI TYPE( c o n s t r a i n t PK CLIENTS3 pr imary key (NUMCLI) )o b j e c t i d e n t i f i e r i s system g e n e r a t e dOIDINDEX n d x c l i e n t s 3 ( s t o r a g e ( i n i t i a l 100K next 50 k

m i n e x t e n t s 1 maxextents 50)) ;

124/193

Page 126: Bases de Donn ees Avanc ees - LIMSI

Tables ObjetInstanciation - exemples

Insertion d’une � ligne � (ou plutot d’un objet) :

i n s e r t i n t o MAGASINS3 va l u e s (MAG TYPE( 1 , ’FB ’ , ’ 0145454545 ’ ,ADRESSE TYPE( ’ 13 ’ , ’ Avenue de l a p a i x ’ , ’ 75015 ’ , ’ P a r i s ’ , ’ France ’ ) ) ) ;

i n s e r t i n t o MAGASINS3 va l u e s (MAG TYPE( 2 , ’FB ’ , ’ 0155555555 ’ ,ADRESSE TYPE( ’ 20 ’ , ’ Avenue de l a l i b e r t e ’ , ’ 06100 ’ , ’ N ice ’ , ’ France ’ ) ) ) ;

i n s e r t i n t o MAGASINS3 va l u e s (MAG TYPE( 3 , ’FB ’ , ’ 0155555555 ’ ,ADRESSE TYPE( ’ 10 ’ , ’ Avenue des Amis ’ , ’ 6050 ’ , ’ B r u x e l l e s ’ , ’ B e l g i q u e ’ ) ) ) ;

i n s e r t i n t o MAGASINS3 va l u e s (MAG TYPE( 4 , ’FB ’ , ’ 71226002 ’ ,ADRESSE TYPE( ’ 10 ’ , ’ Avenue du s o l e i l ’ , ’ 1001 ’ , ’ Tunis ’ , ’ T u n i s i e ’ ) ) ) ;

SQL> s e l e c t ∗ from magas ins3 ;NUMMAG NOMMAG TELMAG ADRMAG(ADRNUM, ADRRUE, ADRCP, ADRVILLE , ADRPAYS)

1 FB 0145454545 ADRESSE TYPE( ’ 13 ’ , ’ Avenue de l a p a i x ’ ,’ 75015 ’ , ’ P a r i s ’ , ’ France ’ )

2 FB 0155555555 ADRESSE TYPE( ’ 20 ’ , ’ Avenue de l a l i b e r t e ’ ,’ 06100 ’ , ’ N ice ’ , ’ France ’ )

3 FB 0155555555 ADRESSE TYPE( ’ 10 ’ , ’ Avenue des Amis ’ ,’ 6050 ’ , ’ B r u x e l l e s ’ , ’ B e l g i q u e ’ )

4 FB 71226002 ADRESSE TYPE( ’ 10 ’ , ’ Avenue du s o l e i l ’ ,’ 1001 ’ , ’ Tunis ’ , ’ T u n i s i e ’ )

125/193

Page 127: Bases de Donn ees Avanc ees - LIMSI

Tables ObjetInstanciation - exemples

i n s e r t i n t o CLIENTS3 va l u e s ( CLI TYPE ( 1 , ’TRAIFOR ’ , ’ 0645454545 ’ ,ADRESSE TYPE( ’ 13 ’ , ’ Avenue de l a p a i x ’ , ’ 75015 ’ , ’ P a r i s ’ , ’ France ’ ) ) ) ;

i n s e r t i n t o CLIENTS3 va l u e s ( CLI TYPE ( 2 , ’CLEMENT ’ , ’ 0607080910 ’ ,ADRESSE TYPE( ’ 17 ’ , ’ Avenue de l a p a i x ’ , ’ 75015 ’ , ’ P a r i s ’ , ’ France ’ ) ) ) ;

i n s e r t i n t o CLIENTS3 va l u e s ( CLI TYPE ( 3 , ’SOUCY ’ , ’ 98980307 ’ ,ADRESSE TYPE( ’ 77 ’ , ’ Route de l a c o r n i c h e ’ , ’ 4001 ’ , ’ Sousse ’ , ’ T u n i s i e ’ ) ) ) ;

SQL> Se l e c t ∗ from c l i e n t s 3 ;NUMCLI NOMCLI TELCLI ADRCLI (ADRNUM, ADRRUE, ADRCP, ADRVILLE , ADRPAYS)

1 TRAIFOR 0645454545 ADRESSE TYPE( ’ 13 ’ , ’ Avenue de l a p a i x ’ , ’ 75015 ’ ,’ P a r i s ’ , ’ France ’ )

2 CLEMENT 0607080910 ADRESSE TYPE( ’ 17 ’ , ’ Avenue de l a p a i x ’ , ’ 75015 ’ ,’ P a r i s ’ , ’ France ’ )

3 SOUCY 98980307 ADRESSE TYPE( ’ 77 ’ , ’ Route de l a c o r n i c h e ’ , ’ 4001 ’ ,’ Sousse ’ , ’ T u n i s i e ’ )

126/193

Page 128: Bases de Donn ees Avanc ees - LIMSI

Tables ObjetInstanciation

Table objet-relationnelle :

Table dependante d’un type

Enregistrements (lignes) dans cette table consideres commedes objets car ils possedent tous un OID (Object Identifier)unique

SQL> SELECT ∗ FROM c l i e n t s 3 ;NUMCLI NOMCLI TELCLI ADRCLI (ADRNUM, ADRRUE, ADRCP, ADRVILLE , ADRPAYS)

1 TRAIFOR 0645454545 ADRESSE TYPE( ’ 13 ’ , ’ Avenue de l a p a i x ’ , ’ 75015 ’ ,’ P a r i s ’ , ’ France ’ )

2 CLEMENT 0607080910 ADRESSE TYPE( ’ 17 ’ , ’ Avenue de l a p a i x ’ , ’ 75015 ’ ,’ P a r i s ’ , ’ France ’ )

3 SOUCY 98980307 ADRESSE TYPE( ’ 77 ’ , ’ Route de l a c o r n i c h e ’ , ’ 4001 ’ ,’ Sousse ’ , ’ T u n i s i e ’ )

127/193

Page 129: Bases de Donn ees Avanc ees - LIMSI

Tables ObjetInstanciation

Renvoi des OID des objets de la table :

SQL> SELECT REF( c ) FROM c l i e n t s 3 c ;

REF(C)−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−0000280209 E9E229206EDF47DF9996946C4BBD571C4EB9AF259F2F42BC813E18E51603C0D40240014600000000280209550141 E8898C4859AF0F3D48FA3041944EB9AF259F2F42BC813E18E51603C0D40240014600010000280209 C2C96804847047F6856499690AAC9E254EB9AF259F2F42BC813E18E51603C0D4024001460002

128/193

Page 130: Bases de Donn ees Avanc ees - LIMSI

Tables ObjetMises a jour

Modifications/Suppressions de �lignes� ou d’objets

Mise a jour d’une colonne standard

update c l i e n t s 3s e t NOMCLI = ’CBON ’ where NUMCLI=2;

Modification d’une colonne appartenant a un type imbrique

update c l i e n t s 3 cs e t c . ADRCLI . ADRVILLE = ’MAVILLE ’ where c . NUMCLI=2;

Suppression d’objet

de l e t e from c l i e n t s 3where n u m c l i = 3 ;

de l e t e from c l i e n t s 3 cwhere upper ( c . ADRCLI .ADRPAYS) = ’FRANCE ’ ;

129/193

Page 131: Bases de Donn ees Avanc ees - LIMSI

Tables ObjetInterrogations

Utilisation de colonnes standards

s e l e c t numcl i , n o m c l i from c l i e n t s 3 ;NUMCLI NOMCLI

−−−−−−−−−− −−−−−−−−−−1 TRAIFOR2 CLEMENT3 SOUCY

Utilisation d’une colonne appartenant a un type imbrique

s e l e c t numcl i , nomcl i , c . ADRCLI .ADRPAYSfrom c l i e n t s 3 c ;

NUMCLI NOMCLI ADRCLI .ADRPAYS−−−−−−−−−− −−−−−−−−−− −−−−−−−−−−−−−−−−−−

1 TRAIFOR France2 CLEMENT France3 SOUCY T u n i s i e

130/193

Page 132: Bases de Donn ees Avanc ees - LIMSI

Tables ObjetInterrogations

avec formatage

c o l nom format A10c o l l o c fo rmat A15s e l e c t n u m c l i as c l i , n o m c l i as nom ,

c . ADRCLI . ADRVILLE | | ’ ’ | | c . ADRCLI .ADRPAYS as l o cfrom c l i e n t s 3 c ;

CLI NOM LOC−−−−−−−−−− −−−−−−−−−− −−−−−−−−−−−−−−−

1 TRAIFOR P a r i s France2 CLEMENT P a r i s France3 SOUCY Sousse T u n i s i e

131/193

Page 133: Bases de Donn ees Avanc ees - LIMSI

Tables ObjetInterrogations

avec contraintes

SQL> c o l c . ADRCLI .ADRPAYS format A10SQL> c o l c . ADRCLI . ADRVILLE format A10SQL> s e l e c t numcl i , nomcl i , c . ADRCLI . ADRPAYS,

2 c . ADRCLI . ADRVILLE from c l i e n t s 3 c3 WHERE upper ( c . ADRCLI . ADRVILLE ) l i k e ’P%’ ;

NUMCLI NOMCLI ADRCLI .ADRPAYS ADRCLI . ADRVILLE−−−−−−−−−− −−−−−−−−−− −−−−−−−−−−−−−−− −−−−−−−−−−−−−−−

1 TRAIFOR France P a r i s2 CLEMENT France P a r i s

132/193

Page 134: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees(NESTED TABLE)

Table imbriquee (NESTED TABLE) : collection non ordonnee et nonlimitee d’elements de meme typeExemple : table Departement

NumDep Budget EmployesNInsee Nom Age

1 table contenant une colonne (table) :Association du type 1-N

??? 1 ou plusieurs tables : Association du type N-N

133/193

Page 135: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Creation

c r ea te t y p e emp type as o b j e c t( n i n s e e va rcha r2 ( 1 3 ) , age number , nom va rcha r2 ( 3 0 ) )

/

c r ea te t y p e emps type as t ab l e o f emp type/c r ea te t y p e d e p a r t e m e n t t y p e as o b j e c t

( numdep va rcha r2 ( 1 1 ) , budget number ,employes emps type )

/c r ea te t ab l e departement o f d e p a r t e m e n t t y p e

( pr imary key ( numdep ) )n e s t e d t a b l e employes s t o r e as tabemp

/

clause NESTED TABLE : definition d’une table imbriqueeclause STORE AS : nommage de la structure interne qui stocke les�enregistrements� de cette table imbriquee

134/193

Page 136: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Exemple

c r ea te t y p e emp type as o b j e c t ( n i n s e e va rcha r2 ( 1 3 ) ,age number , nom va rcha r2 ( 3 0 ) )

/c r ea te t y p e emps type as t ab l e o f emp type/c r ea te t y p e d e p a r t e m e n t t y p e as o b j e c t ( numdep va rcha r2 ( 1 1 ) ,

budget number , employes emps type )/c r ea te t ab l e departement o f d e p a r t e m e n t t y p e

( pr imary key ( numdep ) )n e s t e d t a b l e employes s t o r e as tabemp

/

135/193

Page 137: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Exemple

SQL> desc departementNom NULL ? Type−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−NUMDEP NOT NULL VARCHAR2( 1 1 )BUDGET NUMBEREMPLOYES EMPS TYPE

SQL> desc emps typeemps type TABLE OF EMP TYPENom NULL ? Type−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−NINSEE VARCHAR2( 1 3 )AGE NUMBERNOM VARCHAR2( 3 0 )

136/193

Page 138: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Insertion

Insertion des donnees dans une table imbriquee

i n s e r t i n t o departement va l u e s ( ’D1 ’ , 100000 , emps type ( ) ) ;i n s e r t i n t o departement va l u e s ( ’D2 ’ , 200000 , emps type ( ) ) ;

SQL> s e l e c t ∗ from departement ;NUMDEP BUDGET EMPLOYES( NINSEE , AGE, NOM)−−−−−−−−−−− −−−−−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−D1 100000 EMPS TYPE( )D2 200000 EMPS TYPE( )

137/193

Page 139: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Insertion

Attention : dans l’exemple suivant, la table vide est noninitialisee

i n s e r t i n t o departement ( numdep , budget )va l u e s ( ’D3 ’ , 3 0 0 0 0 0 ) ;

SQL> s e l e c t ∗ from departement ;NUMDEP BUDGET EMPLOYES( NINSEE , AGE, NOM)−−−−−−−−−−− −−−−−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−D1 100000 EMPS TYPE( )D2 200000 EMPS TYPE( )D3 300000

138/193

Page 140: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Insertion

Insertion des donnees dans une table imbriquee

i n s e r t i n t o departement va l u e s ( ’D4 ’ , 400000 ,emps type ( emp type ( ’N5 ’ , 25 , ’ B i b i ’ ) ,

emp type ( ’N6 ’ , 26 , ’ C i c i ’ ) ,emp type ( ’N7 ’ , 27 , ’ D i d i ’ ) ,emp type ( ’N8 ’ , 28 , ’ F i f i ’ ) ) ) ;

139/193

Page 141: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Insertion

SQL> s e l e c t ∗ from departement ;NUMDEP BUDGET EMPLOYES( NINSEE , AGE, NOM)−−−−−−−−−−− −−−−−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−D1 100000 EMPS TYPE( )D2 200000 EMPS TYPE( )D3 300000D4 400000 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,

EMP TYPE( ’N6 ’ , 26 , ’ C i c i ’ ) ,EMP TYPE( ’N7 ’ , 27 , ’ D i d i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

Remarque : Commande INSERT avec les constructeurs des typesde la NESTED TABLE

stocke un objet dans la tableinitialise la table imbriquee associee avec des enregistrements

140/193

Page 142: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Insertion

Insertion des donnees dans une table imbriqueei n s e r t i n t o departement va l u e s ( ’D5 ’ , 400000 ,

emps type ( emp type ( ’N5 ’ , 25 , ’ B i b i ’ ) ,emp type ( ’N8 ’ , 28 , ’ F i f i ’ ) ) ) ;

SQL> s e l e c t ∗ from departement ;NUMDEP BUDGET EMPLOYES( NINSEE , AGE, NOM)−−−−−−−−−−− −−−−−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−D1 100000 EMPS TYPE( )D2 200000 EMPS TYPE( )D3 300000D4 400000 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,

EMP TYPE( ’N6 ’ , 26 , ’ C i c i ’ ) ,EMP TYPE( ’N7 ’ , 27 , ’ D i d i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

D5 400000 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

141/193

Page 143: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Insertion avec l’operateur TABLE

Insertion avec l’operateur TABLE dans une table imbriquee(D1 et D2 etaient initialises a vides)

i n s e r t i n t o TABLE ( s e l e c t d . employes from departement dwhere d . numdep = ’D1 ’ )

va l u e s ( ’N1 ’ , 21 , ’CLEMENT ’ ) ;i n s e r t i n t o TABLE ( s e l e c t d . employes from departement d

where d . numdep = ’D2 ’ )va l u e s ( ’N2 ’ , 22 , ’CLEMENTINE ’ ) ;

NB : l’operateur THE est obsolete et a ete remplace par l’operateurTABLE

142/193

Page 144: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Insertion avec l’operateur TABLE

SQL> s e l e c t ∗ from departement ;NUMDEP BUDGET EMPLOYES( NINSEE , AGE, NOM)−−−−−−−− −−−−−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−D1 100000 EMPS TYPE(EMP TYPE( ’N1 ’ , 21 , ’CLEMENT ’ ) )D2 200000 EMPS TYPE(EMP TYPE( ’N2 ’ , 22 , ’CLEMENTINE ’ ) )D3 300000D4 400000 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,

EMP TYPE( ’N6 ’ , 26 , ’ C i c i ’ ) ,EMP TYPE( ’N7 ’ , 27 , ’ D i d i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

Remarques :

Commande INSERT INTO TABLE (SELECT ...) : stockage d’unenregistrement dans la table imbriquee designee par TABLE

SELECT apres le TABLE : Retourne un seul objet, ce qui permet deselectionner la table imbriquee associee

143/193

Page 145: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Insertion avec l’operateur TABLE

Insertion avec l’operateur TABLE dans une table imbriquee

(D3 n’etait pas initialise a vide)Insertion d’un employe dans le departement D3alors que celui-ci n’a pas ete initialise

i n s e r t i n t o TABLE ( s e l e c t d . employes from departement dwhere d . numdep = ’D3 ’ )va l u e s ( ’N3 ’ , 23 , ’NE MARCHE PAS ’ ) ;

144/193

Page 146: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Insertion avec l’operateur TABLE

SQL> i n s e r t i n t o t ab l e ( s e l e c t d . employes from departement d2 where d . numdep = ’D3 ’ ) va l u e s ( ’N3 ’ , 23 , ’NEMARCHEPAS ’ ) ;

i n s e r t i n t o t ab l e ( s e l e c t d . employes from departement dwhere d . numdep = ’D3 ’ )

∗ERREUR a l a l i g n e 1 :ORA−22908: r e f e r e n c e a une v a l e u r de t a b l e NULL

Explications :

1 Le departement D3 est bien un objet de la table Departement

2 mais il ne possede pas de table imbriquee

3 car celle-ci n’a pas ete creee lors de l’insertion.

Il faut detruire l’objet D3 puis le recreer !

145/193

Page 147: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Modification

Mise a jour de la table principaleupdate departement d

s e t d . budget = d . budget ∗ 1 . 5where d . budget <= 200000 ;

SQL> s e l e c t ∗ from departement ;NUMDEP BUDGET EMPLOYES( NINSEE , AGE, NOM)−−−−−−−− −−−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−D1 150000 EMPS TYPE(EMP TYPE( ’N1 ’ , 21 , ’CLEMENT ’ ) )D2 300000 EMPS TYPE(EMP TYPE( ’N2 ’ , 22 , ’CLEMENTINE ’ ) )D3 300000D4 400000 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,

EMP TYPE( ’N6 ’ , 26 , ’ C i c i ’ ) ,EMP TYPE( ’N7 ’ , 27 , ’ D i d i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

D5 400000 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

146/193

Page 148: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Modification (suite)

Mise a jour de la table principale selon un predicat dans latable imbriqueeupdate departement d s e t d . budget = d . budget + 777

where e x i s t s ( s e l e c t ∗ fromtab l e ( s e l e c t dt . employes from departement dt

where dt . numdep =d . numdep ) nt

where nt . age < 25 ) ;

Description :

Requete qui retourne les employes de chaque departement

s e l e c t dt . employes from departement dtwhere dt . numdep = d . numdep

Condition sur un attribut de la table imbriquee :

where nt . age < 25

Alias de la table imbriquee : nt

147/193

Page 149: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Modification (suite)

Mise a jour de la table principale selon un predicat dans latable imbriquee

148/193

Page 150: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Modification (suite)

SQL> s e l e c t ∗ from departement ;NUMDEP BUDGET EMPLOYES( NINSEE , AGE, NOM)−−−−−−− −−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−D1 150777 EMPS TYPE(EMP TYPE( ’N1 ’ , 21 , ’CLEMENT ’ ) )D2 300777 EMPS TYPE(EMP TYPE( ’N2 ’ , 22 , ’CLEMENTINE ’ ) )D3 300000D4 400000 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,

EMP TYPE( ’N6 ’ , 26 , ’ C i c i ’ ) ,EMP TYPE( ’N7 ’ , 27 , ’ D i d i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

D5 400000 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

149/193

Page 151: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Modification

Mise a jour de la table principale selon un predicat dans latable imbriquee

update departement d s e t d . budget = d . budget + 999where e x i s t s

( s e l e c t ∗ from tab l e( s e l e c t dt . employes from departement dt

where dt . numdep = d . numdep ) ntwhere nt . age > 25 ) ;

150/193

Page 152: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Modification

SQL> s e l e c t ∗ from departement ;NUMDEP BUDGET EMPLOYES( NINSEE , AGE, NOM)−−−−−−− −−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−D1 150777 EMPS TYPE(EMP TYPE( ’N1 ’ , 21 , ’CLEMENT ’ ) )D2 300777 EMPS TYPE(EMP TYPE( ’N2 ’ , 22 , ’CLEMENTINE ’ ) )D3 300000D4 400999 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,

EMP TYPE( ’N6 ’ , 26 , ’ C i c i ’ ) ,EMP TYPE( ’N7 ’ , 27 , ’ D i d i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

D5 400999 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

Remarque : les memes employes sont dans deux departements

151/193

Page 153: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Modification

Mise a jour dans la table imbriquee

updatet ab l e ( s e l e c t d . employes from departement d

where d . numdep = ’D2 ’ ) nts e t nt . age = 44

where nt . n i n s e e = ’N2 ’ ;

152/193

Page 154: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Modification

SQL> s e l e c t ∗ from departement ;NUMDEP BUDGET EMPLOYES( NINSEE , AGE, NOM)−−−−−−− −−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−D1 150777 EMPS TYPE(EMP TYPE( ’N1 ’ , 21 , ’CLEMENT ’ ) )D2 300777 EMPS TYPE(EMP TYPE( ’N2 ’ , 44 , ’CLEMENTINE ’ ) )D3 300000D4 400999 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,

EMP TYPE( ’N6 ’ , 26 , ’ C i c i ’ ) ,EMP TYPE( ’N7 ’ , 27 , ’ D i d i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

D5 400999 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

Remarque : Il est impossible de modifier plusieurs enregistrementsde differentes tables imbriquees avec une seule commandeUPDATE !

153/193

Page 155: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Suppression

Suppression dans la table principale

de l e t e from departementwhere numdep = ’D3 ’ ;

SQL> s e l e c t ∗ from departement ;NUMDEP BUDGET EMPLOYES( NINSEE , AGE, NOM)−−−−−−− −−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−D1 150777 EMPS TYPE(EMP TYPE( ’N1 ’ , 21 , ’CLEMENT ’ ) )D2 300777 EMPS TYPE(EMP TYPE( ’N2 ’ , 44 , ’CLEMENTINE ’ ) )D4 400999 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,

EMP TYPE( ’N6 ’ , 26 , ’ C i c i ’ ) ,EMP TYPE( ’N7 ’ , 27 , ’ D i d i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

D5 400999 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

154/193

Page 156: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Suppression

Suppression a partir d’une valeur de la table imbriqueeElimination des departements qui emploient une personnedont le nom est FIFI

de l e t e from departement dwhere e x i s t s ( s e l e c t ∗ fromtab l e ( s e l e c t dt . employes from departement dt

where dt . numdep = d . numdep ) ntwhere upper ( nt . nom) l i k e ’%F I F I%’ ) ;

155/193

Page 157: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Suppression

SQL> s e l e c t ∗ from departement ;NUMDEP BUDGET EMPLOYES( NINSEE , AGE, NOM)−−−−−−− −−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−D1 150777 EMPS TYPE(EMP TYPE( ’N1 ’ , 21 , ’CLEMENT ’ ) )D2 300777 EMPS TYPE(EMP TYPE( ’N2 ’ , 44 , ’CLEMENTINE ’ ) )

156/193

Page 158: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Suppression

Suppression d’une table imbriqueeElimination des departements qui emploient une personnedont le nom est CLEMENT

de l e t e t ab l e ( s e l e c t dt . employesfrom departement dt where dt . numdep = ’D1 ’ ) ntwhere nt . nom = ’CLEMENT ’ ;

SQL> s e l e c t ∗ from departement ;NUMDEP BUDGET EMPLOYES( NINSEE , AGE, NOM)−−−−−−− −−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−D1 150777D2 300777 EMPS TYPE(EMP TYPE( ’N2 ’ , 44 , ’CLEMENTINE ’ ) )

157/193

Page 159: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Interrogation

Quels sont les numeros et les noms des employes dudepartement D4 ?

SQL> s e l e c t ∗ from departement ;NUMDEP BUDGET EMPLOYES( NINSEE , AGE, NOM)−−−−−−− −−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−D1 150777 EMPS TYPE(EMP TYPE( ’N1 ’ , 21 , ’CLEMENT ’ ) )D2 300777 EMPS TYPE(EMP TYPE( ’N2 ’ , 44 , ’CLEMENTINE ’ ) )D4 400999 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,

EMP TYPE( ’N6 ’ , 26 , ’ C i c i ’ ) ,EMP TYPE( ’N7 ’ , 27 , ’ D i d i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

D5 400999 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

158/193

Page 160: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Interrogation

s e l e c t nt . n i n s e e , nt . nomfrom tab l e ( s e l e c t dt . employes from departement dtwhere dt . numdep = ’D4 ’ ) nt ;

NINSEE NOM−−−−−−−−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−N5 B i b iN6 C i c iN7 D i d iN8 F i f i

159/193

Page 161: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Interrogation

Quels sont les numeros et les noms des employes dudepartement D4 qui ont moins de 26 ans ?

SQL> s e l e c t ∗ from departement ;NUMDEP BUDGET EMPLOYES( NINSEE , AGE, NOM)−−−−−−− −−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−D1 150777 EMPS TYPE(EMP TYPE( ’N1 ’ , 21 , ’CLEMENT ’ ) )D2 300777 EMPS TYPE(EMP TYPE( ’N2 ’ , 44 , ’CLEMENTINE ’ ) )D4 400999 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,

EMP TYPE( ’N6 ’ , 26 , ’ C i c i ’ ) ,EMP TYPE( ’N7 ’ , 27 , ’ D i d i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

D5 400999 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

160/193

Page 162: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Interrogation

s e l e c t nt . n i n s e e , nt . nomfrom tab l e ( s e l e c t dt . employes from departement dtwhere dt . numdep = ’D4 ’ ) nt where nt . age < 2 6 ;

NINSEE NOM−−−−−−−−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−N5 B i b i

161/193

Page 163: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Interrogation

Requete : Quel est le nombre d’employes du departementD4 ?

SQL> s e l e c t ∗ from departement ;NUMDEP BUDGET EMPLOYES( NINSEE , AGE, NOM)−−−−−−− −−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−D1 150777 EMPS TYPE(EMP TYPE( ’N1 ’ , 21 , ’CLEMENT ’ ) )D2 300777 EMPS TYPE(EMP TYPE( ’N2 ’ , 44 , ’CLEMENTINE ’ ) )D4 400999 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,

EMP TYPE( ’N6 ’ , 26 , ’ C i c i ’ ) ,EMP TYPE( ’N7 ’ , 27 , ’ D i d i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

D5 400999 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

162/193

Page 164: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Interrogation

s e l e c t COUNT(∗ ) ”Nombre d ’ employ e s ”from tab l e ( s e l e c t dt . employes from departement dtwhere dt . numdep = ’D4 ’ ) nt ;

Nombre d ’ employ e s−−−−−−−−−−−−−−−−−

4

163/193

Page 165: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Interrogation

Quels sont les numeros et les noms des employes desdepartements D1 et D2 ?

SQL> s e l e c t ∗ from departement ;NUMDEP BUDGET EMPLOYES( NINSEE , AGE, NOM)−−−−−−− −−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−D1 150777 EMPS TYPE(EMP TYPE( ’N1 ’ , 21 , ’CLEMENT ’ ) )D2 300777 EMPS TYPE(EMP TYPE( ’N2 ’ , 44 , ’CLEMENTINE ’ ) )D4 400999 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,

EMP TYPE( ’N6 ’ , 26 , ’ C i c i ’ ) ,EMP TYPE( ’N7 ’ , 27 , ’ D i d i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

D5 400999 EMPS TYPE(EMP TYPE( ’N5 ’ , 25 , ’ B i b i ’ ) ,EMP TYPE( ’N8 ’ , 28 , ’ F i f i ’ ) )

164/193

Page 166: Bases de Donn ees Avanc ees - LIMSI

Tables imbriquees (NESTED TABLE)Interrogation

s e l e c t s e l e c t nt . n i n s e e , nt . nom from tab l e( s e l e c t dt . employes from departement dt

where dt . numdep = ’D1 ’ ) ntunions e l e c t nt . n i n s e e , nt . nom from tab l e

( s e l e c t dt . employes from departement dtwhere dt . numdep = ’D2 ’ ) nt ;

NINSEE NOM−−−−−−−−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−N1 CLEMENTN2 CLEMENTINE

165/193

Page 167: Bases de Donn ees Avanc ees - LIMSI

Plusieurs Tables imbriqueesCreation

Regroupement des tables imbriquees Professeurs et Formations dans la

table Cours

NumC Titre Professeurs FormationsNom Specialite Filiere Horaire

c r ea te t y p e p r o f t y p e as o b j e c t(nom va rcha r2 ( 3 0 ) , s p e c i a l i t e va rcha r2 ( 3 0 ) )

/c r ea te t y p e p r o f s t y p e as t ab l e o f p r o f t y p e/c r ea te t y p e f o r m a t i o n t y p e as o b j e c t

( f i l i e r e va rcha r2 ( 3 0 ) , h o r a i r e number ( 5 ) )/c r ea te t y p e f o r m a t i o n s t y p e as t ab l e o f f o r m a t i o n t y p e/

166/193

Page 168: Bases de Donn ees Avanc ees - LIMSI

Plusieurs Tables imbriqueesCreation

c r ea te t y p e p r o f t y p e as o b j e c t(nom va rcha r2 ( 3 0 ) , s p e c i a l i t e va rcha r2 ( 3 0 ) )

/c r ea te t y p e p r o f s t y p e as t ab l e o f p r o f t y p e/c r ea te t y p e f o r m a t i o n t y p e as o b j e c t

( f i l i e r e va rcha r2 ( 3 0 ) , h o r a i r e number ( 5 ) )/c r ea te t y p e f o r m a t i o n s t y p e as t ab l e o f f o r m a t i o n t y p e/c r ea te t y p e c o u r s t y p e as o b j e c t

( numc va rcha r2 ( 5 ) , t i t r e va rcha r2 ( 1 5 ) ,p r o f e s s e u r s p r o f s t y p e , f o r m a t i o n s f o r m a t i o n s t y p e )

/c r ea te t ab l e c o u r s o f c o u r s t y p e

( c o n s t r a i n t p k c o u r s pr imary key ( numc ) )n e s t e d t a b l e p r o f e s s e u r s s t o r e as t a b p r o f s ,n e s t e d t a b l e f o r m a t i o n s s t o r e as t a b f o r m a t i o n s ;

167/193

Page 169: Bases de Donn ees Avanc ees - LIMSI

Plusieurs Tables imbriqueesInsertion

Insertion d’un objet dans la table Cours, sans le lier a desprofesseurs ou a des formations

i n s e r t i n t o c o u r s va l u e s ( ’BD ’ , ’ Bases de Donnees ’ ,p r o f s t y p e ( ) , f o r m a t i o n s t y p e ( ) ) ;

s e l e c t ∗ from c o u r s ;

NUMC TITRE PROFESSEURS(NOM, SPECIALITE ) FORMATIONS( FILIERE , HORAIRE)−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−BD Bases de Donnees PROFS TYPE ( ) FORMATIONS TYPE( )

168/193

Page 170: Bases de Donn ees Avanc ees - LIMSI

Plusieurs Tables imbriqueesInsertion

Insertion, avec VALUES, dans 2 tables imbriquees :

i n s e r t i n t o c o u r s va l u e s ( ’DW’ , ’ Data WareHouse ’ ,

p r o f s t y p e ( p r o f t y p e ( ’ Cl emence ’ , ’BD ’ ) ,p r o f t y p e ( ’Adam ’ , ’BD ’ ) ) ,

f o r m a t i o n s t y p e ( f o r m a t i o n t y p e ( ’ Master1 ’ , 1 00 ) ,f o r m a t i o n t y p e ( ’DESS EID ’ , 20 0) ,f o r m a t i o n t y p e ( ’DEA AIOC ’ , 200) ) ) ;

169/193

Page 171: Bases de Donn ees Avanc ees - LIMSI

Plusieurs Tables imbriqueesInsertion

s e l e c t ∗ from c o u r s ;

NUMC TITRE PROFESSEURS(NOM, SPECIALITE ) FORMATIONS( FILIERE , HORAIRE)−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−BD Bases de Donnees PROFS TYPE ( ) FORMATIONS TYPE( )DW Data WareHouse PROFS TYPE( FORMATIONS TYPE(

PROF TYPE( ’ Cl emence ’ , ’BD ’ ) , FORMATION TYPE( ’ Master1 ’ , 10 0) ,PROF TYPE( ’Adam ’ , ’BD ’ ) ) FORMATION TYPE( ’ Master 2P ’ , 20 0) ,

FORMATION TYPE( ’ Master 2R ’ , 2 0 0 ) )

170/193

Page 172: Bases de Donn ees Avanc ees - LIMSI

Plusieurs Tables imbriqueesInsertion

Insertion, avec VALUES, dans 2 tables imbriquees

i n s e r t i n t o c o u r s va l u e s ( ’BDA ’ ,’ Bases de Donnees Avanc ees ’ ,

p r o f s t y p e ( p r o f t y p e ( ’ Cl emence ’ , ’BD ’ ) ,p r o f t y p e ( ’ T r a i f o r ’ , ’BD ’ ) ,p r o f t y p e ( ’ Le Bon ’ , ’BD ’ ) ) ,

f o r m a t i o n s t y p e (f o r m a t i o n t y p e ( ’ Master 2P ’ , 2 00 ) ,f o r m a t i o n t y p e ( ’ Master 2R ’ , 200) ) ) ;

171/193

Page 173: Bases de Donn ees Avanc ees - LIMSI

Plusieurs Tables imbriqueesInsertion

CoursNumC Titre Professeurs Formations

Nom Specialite Filiere HoraireBD Bases de donneesDW DataWareHouse Clemence BD Master 1 100

Adam BD Master 2P 200Master 2R 200

BDA Bases de donnees avances Clemence BD Master 2P 200Traifor BD Master 2R 200Le Bon BD

L’affichage SQL+ est tres mauvais ...s e l e c t ∗ from c o u r s ;

NUMC TITRE PROFESSEURS(NOM, SPECIALITE ) FORMATIONS( FILIERE , HORAIRE)BD Bases de Donnees PROFS TYPE ( ) FORMATIONS TYPE( )DW Data WareHouse PROFS TYPE(PROF TYPE( ’ Cl emence ’ , ’BD ’ ) , PROF TYPE( ’Adam ’ , ’BD ’ ) )

FORMATIONS TYPE(FORMATION TYPE( ’ Master1 ’ , 10 0) ,FORMATION TYPE( ’ Master 2P ’ , 20 0) , FORMATION TYPE( ’ Master 2R ’ , 2 0 0 ) )BDA Bases de Donnees Avanc ees PROFS TYPE(PROF TYPE( ’ Cl emence ’ , ’BD ’ ) , PROF TYPE( ’ T r a i f o r ’ , ’BD ’ ) ,

PROF TYPE( ’ Le Bon ’ , ’BD ’ ) )FORMATIONS TYPE(FORMATION TYPE( ’ Master 2P ’ , 20 0) ,

FORMATION TYPE( ’ Master 2R ’ , 2 0 0 ) )

172/193

Page 174: Bases de Donn ees Avanc ees - LIMSI

Plusieurs Tables imbriqueesInsertion

Insertion, avec TABLE et VALUES, dans 2 tables imbriqueesEnregistrement des donnees : les professeurs Traifor et Parisi enseignentles BD

i n s e r t i n t o t ab l e ( s e l e c t c . p r o f e s s e u r s from c o u r s cwhere numc = ’BD ’ ) va l u e s ( ’ T r a i f o r ’ , ’ S I ’ ) ;

i n s e r t i n t o t ab l e ( s e l e c t c . p r o f e s s e u r s from c o u r s cwhere numc = ’BD ’ ) va l u e s ( ’ P a r i s i ’ , ’DM’ ) ;

s e l e c t ∗ from c o u r s ;

NumC Titre Professeurs FormationsNom Specialite Filiere Horaire

BD Bases de donnees Traifor SIParisi DM

DW DataWareHouse Clemence BD Master 1 100Adam BD Master 2P 200

Master 2R 200BDA Bases de donnees avances Clemence BD Master 2P 200

Traifor BD Master 2R 200Le Bon BD

173/193

Page 175: Bases de Donn ees Avanc ees - LIMSI

Plusieurs Tables imbriqueesInsertion

Insertion, avec TABLE et VALUES, dans 2 tables imbriqueesLe cours BD :

appartient au cursus INFO1

requiert un volume horaire de 70 heures

i n s e r t i n t o t ab l e ( s e l e c t c . f o r m a t i o n s from c o u r s cwhere numc = ’BD ’ ) va l u e s ( ’ INFO1 ’ , 7 0 ) ;

s e l e c t ∗ from c o u r s ;

NumC Titre Professeurs FormationsNom Specialite Filiere Horaire

BD Bases de donnees Traifor SI INFO1 70Parisi DM

DW DataWareHouse Clemence BD Master 1 100Adam BD Master 2P 200

Master 2R 200BDA Bases de donnees avances Clemence BD Master 2P 200

Traifor BD Master 2R 200Le Bon BD

174/193

Page 176: Bases de Donn ees Avanc ees - LIMSI

Plusieurs Tables imbriqueesInsertion

Insertion , avec TABLE et SELECT, dans 2 tables imbriquees

Le cours BD doit etre enseigne desormais dans toutes les filieresconcernees par la matiere DW a condition que celle-ci aient unvolume de moins de 150 heures

i n s e r t i n t o t ab l e ( s e l e c t c . f o r m a t i o n s from c o u r s cwhere c . numc = ’BD ’ )

s e l e c t n e s t e d f . f i l i e r e , n e s t e d f . h o r a i r efrom tab l e ( s e l e c t c . f o r m a t i o n s from c o u r s c

where c . numc = ’DW’ ) n e s t e d fwhere n e s t e d f . h o r a i r e < 1 5 0 ;

175/193

Page 177: Bases de Donn ees Avanc ees - LIMSI

Plusieurs Tables imbriqueesInsertion

s e l e c t ∗ from c o u r s ;

NumC Titre Professeurs FormationsNom Specialite Filiere Horaire

BD Bases de donnees Traifor SI INFO1 70Parisi DM Master 1

DW DataWareHouse Clemence BD Master 1 100Adam BD Master 2P 200

Master 2R 200BDA Bases de donnees avances Clemence BD Master 2P 200

Traifor BD Master 2R 200Le Bon BD

176/193

Page 178: Bases de Donn ees Avanc ees - LIMSI

Plusieurs Tables imbriqueesModification – Exemple

Dans la matiere Data WareHouse, le professeur Adam est remplacepar le professeur Saitout et que les horaires pour le Master 2Paugmentent de 30%

update t ab l e ( s e l e c t c . p r o f e s s e u r s from c o u r s cwhere c . t i t r e = ’ Data WareHouse ’ ) n e s t e d p r f

s e t n e s t e d p r f . nom = ’ S a i t o u ’ where n e s t e d p r f . nom = ’Adam ’ ;

update t ab l e ( s e l e c t c . f o r m a t i o n s from c o u r s cwhere c . t i t r e = ’ Data WareHouse ’ ) n e s t e d f r m

s e t n e s t e d f r m . h o r a i r e = h o r a i r e ∗ 1 . 3where n e s t e d f r m . f i l i e r e l i k e ’ Master 2P%’ ;

177/193

Page 179: Bases de Donn ees Avanc ees - LIMSI

Plusieurs Tables imbriqueesModification

NumC Titre Professeurs FormationsNom Specialite Filiere Horaire

BD Bases de donnees Traifor SI INFO1 70Parisi DM Master 1

DW DataWareHouse Clemence BD Master 1 100Saitou BD Master 2P 260

Master 2R 200BDA Bases de donnees avances Clemence BD Master 2P 200

Traifor BD Master 2R 200Le Bon BD

178/193

Page 180: Bases de Donn ees Avanc ees - LIMSI

Plusieurs Tables imbriqueesModification – Exemple

Explications :

Modification a l’aide de la commande UPDATE d’un ouplusieurs attributs dans une des deux tables imbriquees de latable cours

Modification d’un professeurs et une formation dans le cadred’une matiere donnee : 2 requetes UPDATE distinctes(car les 2 tables imbriquees sont concernees)

Necessite de recourir a un alias pour identifier l’objet dans latable imbriquee

179/193

Page 181: Bases de Donn ees Avanc ees - LIMSI

Plusieurs Tables imbriqueesModification

Pour la matiere DW, remplacement de la filiere Master1 par lafiliere MASTER 2 et enregistrement d’un volume horaire de 150heures

update t ab l e ( s e l e c t c . f o r m a t i o n s from c o u r s cwhere c . t i t r e = ’ Data WareHouse ’ ) n e s t e d f r m

s e t n e s t e d f r m . h o r a i r e = 150 , n e s t e d f r m . f i l i e r e = ’MASTER 2 ’where n e s t e d f r m . f i l i e r e = ’ Master1 ’ ;

180/193

Page 182: Bases de Donn ees Avanc ees - LIMSI

Plusieurs Tables imbriqueesModification

NumC Titre Professeurs FormationsNom Specialite Filiere Horaire

BD Bases de donnees Traifor SI INFO1 70Parisi DM Master 1

DW DataWareHouse Clemence BD MASTER 2 150Saitou BD Master 2P 260

Master 2R 200BDA Bases de donnees avances Clemence BD Master 2P 200

Traifor BD Master 2R 200Le Bon BD

181/193

Page 183: Bases de Donn ees Avanc ees - LIMSI

Plusieurs Tables imbriqueesSuppression

Suppression dans 2 tables imbriqueesLe professeur Parisi n’enseigne plus la matiere BD. Enregistrementde cette information

de l e t e t ab l e ( s e l e c t c . p r o f e s s e u r sfrom c o u r s c where c . numc = ’BD ’ ) ntwhere nt . nom = ’ P a r i s i ’ ;

NumC Titre Professeurs FormationsNom Specialite Filiere Horaire

BD Bases de donnees Traifor SI INFO1 70Master 1

DW DataWareHouse Clemence BD MASTER 2 100Saitou BD Master 2P 260

Master 2R 200BDA Bases de donnees avances Clemence BD Master 2P 200

Traifor BD Master 2R 200Le Bon BD

182/193

Page 184: Bases de Donn ees Avanc ees - LIMSI

Plusieurs Tables imbriqueesSuppression

Suppression dans 2 tables imbriqueesLa filiere Master1 n’inclut plus la matiere BD dans son cursus.Enregistrement de cette information

de l e t e t ab l e ( s e l e c t c . f o r m a t i o n sfrom c o u r s c where c . numc = ’BD ’ ) ntwhere nt . f i l i e r e = ’ Master1 ’ ;

NumC Titre Professeurs FormationsNom Specialite Filiere Horaire

BD Bases de donnees Traifor SI INFO1 70

DW DataWareHouse Clemence BD MASTER 2 100Saitou BD Master 2P 260

Master 2R 200BDA Bases de donnees avances Clemence BD Master 2P 200

Traifor BD Master 2R 200Le Bon BD

183/193

Page 185: Bases de Donn ees Avanc ees - LIMSI

Plusieurs niveaux d’imbrication

NumC Titre Professeurs FormationsNom Specialite Filiere Horaire Dates

JourBD Bases de donnees Traifor SI INFO1 70

DW DataWareHouse Clemence BD MASTER 2 100Saitou BD Master 2P 260

Master 2R 200BDA Bases de donnees avances Clemence BD Master 2P 200

Traifor BD Master 2R 200Le Bon BD

Oracle 8 ne permet pas d’implanter plusieurs niveaux d’imbricationdans une table objet-relationnelle?? dans oracle 9i et/ou 10g ??

184/193

Page 186: Bases de Donn ees Avanc ees - LIMSI

Tableaux pre-dimensionnes (VARRAY)VARRAY (Varrying ARRAY ) : collection ordonnee et limiteed’elements de meme typeSi le nombre d’elements maximum contenus dans une tableimbriquees est connu a prioripossibilite d’utiliser un tableau de type VARRAY a la placed’une table imbriqueeExemple : stockage de 3 numeros de telephone maximum parprofesseur

Professeurs :NumP NomP Adresse Telephones

AdrNum AdrRue AdrVille AdrCP NumTel

185/193

Page 187: Bases de Donn ees Avanc ees - LIMSI

Tableaux de taille pre-dimensionnee (VARRAY)Exemple

Stockage de 3 numeros de telephone maximum par professeur

Creation

c r ea te t y p e A A d r e s s e t y p e as o b j e c t(AdrNum va rcha r2 ( 1 0 ) , AdrNom va rcha r2 ( 3 0 ) ,

A d r V i l l e va rcha r2 ( 2 0 ) , AdrCP va rcha r2 ( 5 ) )/c r ea te t y p e t e l t y p e as o b j e c t ( NumTel va rcha r2 ( 2 0 ) )/

c r ea te t y p e t e l s t y p e as v a r r a y ( 3 ) o f t e l t y p e/

c r ea te t y p e p r o f e s s e u r t y p e as o b j e c t(nump va rcha r2 ( 5 ) , nomp va rcha r2 ( 2 0 ) ,

A d r e s s e A A d r e s s e t y p e , T e le p h o ne s t e l s t y p e )/c r ea te t ab l e p r o f e s s e u r s o f p r o f e s s e u r t y p e

( c o n s t r a i n t p k p r o f e s s e u r s pr imary key (nump ) ) ;

186/193

Page 188: Bases de Donn ees Avanc ees - LIMSI

Tableaux de taille pre-dimensionnee (VARRAY)Insertion : INSERT avec VALUES

Stockage de 3 objets de type Professeur avec respectivement aucun,trois et deux numeros de telephone (enregistrements du VARRAY)

i n s e r t i n t o p r o f e s s e u r s va l u e s ( ’ P1 ’ , ’ Cl emence ’ ,A A d r e s s e t y p e ( 7 , ’ Avenue de l a Pa ix ’ , ’ P a r i s ’ , ’ 75009 ’ ) ,t e l s t y p e ( ) ) ;

i n s e r t i n t o p r o f e s s e u r s va l u e s ( ’ P2 ’ , ’Adam ’ ,A A d r e s s e t y p e ( 7 7 , ’ Rue de l a l i b e r t e ’ , ’ P a r i s ’ , ’ 75015 ’ ) ,t e l s t y p e ( t e l t y p e ( ’ 01 53 80 07 99 ’ ) ,

t e l t y p e ( ’ 06 14 56 07 06 ’ ) ,t e l t y p e ( ’ 01 49 40 07 40 ’ ) ) ) ;

i n s e r t i n t o p r o f e s s e u r s va l u e s ( ’ P3 ’ , ’ S a i t o u ’ ,A A d r e s s e t y p e ( 1 , ’ Rue de l a l i b e r t e ’ , ’ P a r i s ’ , ’ 75015 ’ ) ,t e l s t y p e ( t e l t y p e ( ’ 01 53 80 53 80 ’ ) ,t e l t y p e ( ’ 06 14 56 14 77 ’ ) , NULL ) ) ;

187/193

Page 189: Bases de Donn ees Avanc ees - LIMSI

Tableaux de taille pre-dimensionnee (VARRAY)

NumP NomP Adresse TelephonesAdrNum AdrRue AdrVille AdrCP NumTel

P1 Clemence 77 Avenue de la paix Paris 75009 NULLNULLNULL

P2 Adam 7 Rue de la liberte Paris 75015 01 53 80 07 9906 14 56 07 0601 49 40 07 40

P3 Saitou 1 Rue de la liberte Paris 75015 01 53 80 53 8006 14 56 14 77

NULL

188/193

Page 190: Bases de Donn ees Avanc ees - LIMSI

Tableaux de taille pre-dimensionnee (VARRAY)

Insertion : INSERT dans un VARRAY avec PL/SQL

Avec les tableaux VARRAY, l’operateur TABLE n’est pasoperationnel (Version 8 d’oracle – a verifier sur les V9 et V10g)Pour manipuler les tableaux, il est necessaire d’utiliser unprogramme PL/SQL

DECLAREn e w t e l s t e l s t y p e := t e l s t y p e ( t e l t y p e ( ’ 01 55 55 55 55 ’ ) ,

t e l t y p e ( ’ 06 06 98 98 98 ’ ) ,t e l t y p e ( ’ 01 40 40 40 40 ’ ) ) ;

BEGINupdate p r o f e s s e u r ss e t t e l e p h o n e s = n e w t e l swhere nump = ’ P1 ’ ;

END ;/

189/193

Page 191: Bases de Donn ees Avanc ees - LIMSI

Tableaux de taille pre-dimensionnee (VARRAY)NumP NomP Adresse Telephones

AdrNum AdrRue AdrVille AdrCP NumTelP1 Clemence 77 Avenue de la paix Paris 75009 01 55 55 55 55

06 06 98 98 9801 40 40 40 40

P2 Adam 7 Rue de la liberte Paris 75015 01 53 80 07 9906 14 56 07 0601 49 40 07 40

P3 Saitou 1 Rue de la liberte Paris 75015 01 53 80 53 8006 14 56 14 77

NULL

Remarque :

Inserer un seul numero de telephone pour le professeur P1 etle placer au 2eme rang dans le tableau telephonesRedaction ci-dessous de l’instruction d’affectation :

n e w t e l s t e l s t y p e := t e l s t y p e (NULL ,t e l t y p e ( ’ 06 06 98 98 98 ’ ) , NULL ) ;

190/193

Page 192: Bases de Donn ees Avanc ees - LIMSI

ConclusionComparaison entre NESTED TABLE et VARRAY

A verifier selon les versions d’Oracle

Possibilite de definir un index dans un NESTED TABLE

Le nombre d’elements n’est pas limite dans une tableimbriquee

Pas de possibilite de definir d’index dans un VARRAY

Le nombre d’elements est limite dans une tableaupre-dimensionne

Possibilite d’acceder directement aux enregistrements stockesdans les deux structures de donneesfonctions : EXISTS, FIRST, LAST, etc.

Performances ? : NestedTable > Varray

191/193

Page 193: Bases de Donn ees Avanc ees - LIMSI

Bilan

192/193

Page 194: Bases de Donn ees Avanc ees - LIMSI

To be continued...

193/193