Bases de Données Avancées

Dimension: px
Commencer à balayer dès la page:

Download "Bases de Données Avancées"

Transcription

1 1/187 Bases de Données Avancées UML et SQL 2/3 Thierry Hamon Bureau H202 - Institut Galilée Tél. : Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR Léonard de Vinci 74, rue Marcel Cachin, F Bobigny cedex Tél. : , Fax. : [email protected] INFO2 BDA

2 2/187 Introduction Plan De UML à SQL 2/3, Objet-Relationnel, Orienté-Objet Introduction De UML à SQL2 (du conceptuel au relationnel étendu objet-relationnel) De UML à SQL3 (du conceptuel à l orienté objet) Conclusion

3 3/187 Introduction Conception, Développement, Utilisation, Administration 1 Etape conceptuelle : Conception et Modélisation de bases de données 2 Etape logique : Implantation d une base de données 3 Etape physique : 4 Logiciels (SGBD, Interfaces,...) & Matériels

4 4/187 Introduction Modélisation de Bases de Données Phase d analyse : définition d un schéma conceptuel Schéma Conceptuel de Données (SCD) : selon le formalisme utilisé, Formalisme EA, ER ensemble d Entités et d Associations ou ensemble de Classes Formalisme UML :

5 5/187 Introduction Modélisation de Bases de Données Différents formalismes de modélisation de schémas conceptuels de BD : Formalisme EA, ER, EER Modèle Entité-Association (Entity-Relationship Model) Modèle Entité-Association Etendu (Extended Entity-Relationship Model Formalisme UML (Unified Modelling Language)

6 6/187 Introduction Modèle Entité-Association Rappel Entité : tout concept concret ou abstrait individualisable Classe ou type d entités : regroupement d entités de même nature (niveau générique) Association : relation liant plusieurs entités Classe ou type d associations) : regroupement d associations présentant les mêmes caractéristiques

7 7/187 Introduction Modèle entité-association étendu Modèle entité-association : jeu de concept réduit mais suffisant pour la modélisation de problèmes simples (ou peu complexes) Modèle Entité-association étendu : Modélisation plus précise et plus expressive de problèmes complexes et de grande taille Introduction de mécanismes d abstraction de classification d héritage d agrégation

8 8/187 Mécanismes d abstraction Types faibles Type d entités ou d associations faibles : existence d une instance subordonnée à l existence d un autre type d entité ou d association

9 9/187 Mécanismes d abstraction Classification Regroupement d entités dans des classes en fonction de propriétés communes Possibilité de classer un objet dans plusieurs classes Exemple : Livre électronique : fichier électronique, et livre Autocar : véhicule de transport en commun, véhicule à moteur à explosion

10 10/187 Mécanismes d abstraction Héritage Spécialisation - Généralisation Un type d entité A est une spécialisation d un autre type d entité B si chaque entité de A est une entité de B Une seule entité (au plus) de B est associé à une entité de A

11 11/187 Mécanismes d abstraction Agrégation Description de types d entités complexes Un type d associations entre types d entités est considéré comme un nouveau type d entités

12 12/187 Mécanismes d abstraction Modélisation de Bases de Données Les deux formalismes E/R et UML sont très proches / équivalents Entité/Association UML Entité Objet Type d entité Classe Relation Objet Type d association Classe Attribut/Propriété Propriété Rôle / Label Rôle Méthode Domaine Contrainte de domaine Clé Contrainte de clé Contrainte Contrainte Cardinalité Multiplicité/Cardinalité 0,1 1,1 0,n 1,n a,b a,a * 1..* a..b a Diagramme E/A Diagramme de Classe UML

13 13/187 Traduction EA vers SQL De EA à SQL Objectifs : Implantation d un schéma conceptuel (SCD) dans un BD relationnelle Exploitation du SCD par le SGBD et les modules de programmation Transformation dans un schéma relationnel : Schéma Logique de Données (SLD)

14 14/187 Traduction EA vers SQL De EA à SQL Exemple de schéma conceptuel EA (SCD)

15 15/187 Traduction EA vers SQL De EA à SQL Exemple de schéma logique (schéma 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 )

16 16/187 Traduction EA vers SQL Règles de passage du modèle Entité-Association au modèle Relationnel Tout type d entité E est traduit en une relation R La clé primaire de R est l identifiant de E Les attributs de R sont ceux de E. Tout type d association est traduit : en une clé étrangère dans une relation existante si la cardinalité est du type 1,1 ou 0,1 en une nouvelle relation si aucune cardinalité 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 interprétation de la cardinalité minimale égale à 0.

17 17/187 Traduction UML vers SQL De UML à SQL Traduction des associations binaires Traduction des associations binaires récursives Traduction des associations n-aires (n > 2) Traduction des associations d héritage Traduction des contraintes d héritage Traduction des associations d agrégation Traduction des contraintes d intégrité fonctionnelles (contraintes : Partition, Exclusion, Totalité, Simultanéité, Inclusion)

18 18/187 Traduction UML vers SQL Intégrité des données (1) Les SGBD prennent en compte l intégrité des données définies via la déclaration de contraintes (constraints) la programmation de fonctions (functions) de procédures (procedures) cataloguées de paquetages (packages) de déclencheurs (triggers) Le principe étant d assurer la cohérence de la base après chaque mise à jour par les commandes insert, update ou delete

19 19/187 Traduction UML vers SQL Intégrité des données (2) Notation utilisée concernant les noms des contraintes : la contrainte clé primaire d une table se nomme pk table la contrainte clé étrangère d une table se nomme fk table1 colonne table2 la contrainte de validité d une colonne se nomme ck table colonne la contrainte de type non nulle sur une colonne se nomme nn table colonne la contrainte de type unique sur une colonne se nomme unique table colonne

20 20/187 Traduction UML vers SQL 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 é par au p l u s un é t u d i a n t create table STAGE ( NUMEROS number ( 7 ), NOMENTREPRISE varchar ( 4 0 ), TELENT varchar ( 1 5 ), ADRENT varchar ( 5 0 ), c o n s t r a i n t PK STAGE primary key (NUMEROS) ) ;

21 21/187 Traduction UML vers SQL Traduction des associations binaires (2) Association du type 1-1 REM Un é 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 e a t e t a b l e ETUDIANT ( NUMEROE 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 char ( 1 ), NUMEROS number ( 7 ), c o n s t r a i n t PK ETUDIANT p r i m a r y 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) ) ;

22 22/187 Traduction UML vers SQL 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 é d e r p l u s i e u r s v o i t u r e s create table PERSONNE ( NUMEROP number ( 7 ), NOM varchar ( 1 0 ), PRENOM varchar ( 1 0 ), DATENAISSANCE date, SEXE char ( 1 ), c o n s t r a i n t PK PERSONNE primary key (NUMEROP) ) ;

23 23/187 Traduction UML vers SQL 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 é d é e par une p e r s o n n e c r e a t e t a b l e VOITURE ( NUMIMMAT v a r c h a r ( 1 5 ), MARQUE v a r c h a r ( 2 0 ), TYPE v a r c h a r ( 3 0 ), NUMEROP number ( 7 ), c o n s t r a i n t PK VOITURE p r i m a r y 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 ) ) ;

24 24/187 Traduction UML vers SQL Traduction des associations binaires (1) Association du type N-N REM Une p e r s o n n e peut c r é e r p l u s i e u r s e n t r e p r i s e s c r e a t e t a b l e PERSONNE ( NUMEROP number ( 7 ), NOMP v a r c h a r ( 1 0 ), PRENOM v a r c h a r ( 1 0 ), DATENAISSANCE date, SEXE char ( 1 ), c o n s t r a i n t PK PERSONNE p r i m a r y key (NUMEROP) ) ;

25 25/187 Traduction UML vers SQL 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 ê t r e c r é é e REM par une ou p l u s i e u r s p e r s o n n e s create table ENTREPRISE ( NSIRET varchar ( 2 0 ), NOME varchar ( 2 0 ), STATUTJUR varchar ( 1 0 ), c o n s t r a i n t PK ENTREPRISE primary key (NSIRET) ) ;

26 26/187 Traduction UML vers SQL Traduction des associations binaires (3) Association du type N-N create table CREER ( NUMEROP number ( 7 ), NSIRET varchar ( 2 0 ), DATECREATION date, c o n s t r a i n t PK CREER primary key (NUMEROP, NSIRET ), c o n s t r a i n t FK CREER 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 FK CREER NSIRET ENTREPRISE f o r e i g n key ( NSIRET ) r e f e r e n c e s ENTREPRISE(NSIRET) ) ; La cardinalité minimale de l association créer pourra être testée par l intermédiaire d une procédure PL/SQL

27 27/187 Traduction UML vers SQL Traduction des associations binaires (1) Association du type Réflexif/Récursif, UML EA c r e a t e t a b l e PERSONNES ( NUMERO number ( 7 ), NOM v a r c h a r ( 1 5 ), PRENOM v a r c h a 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 p r i m a r y 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 ) ) ) ;

28 28/187 Traduction UML vers SQL Traduction des associations binaires (2) Association du type Réflexif/Récursif, UML EA c r e a t e t a b l e PRODUITS ( NUMERO number ( 3 ), NOM v a r c h a r ( 1 5 ), QSTOCK number ( 5 ), c o n s t r a i n t PK PRODUITS p r i m a r y key (NUMERO), c o n s t r a i n t CK QSTOCK PRODUITS check (QSTOCK >= 0) ) ;

29 29/187 Traduction UML vers SQL Traduction des associations binaires (3) Association du type Réflexif/Récursif, UML EA c r e a t e t a b l e NOMENCLATURE ( COMPOSER number ( 3 ), COMPOSANT number ( 3 ), QFABR number ( 5 ), c o n s t r a i n t PK NOMENCLATURE p r i m a r y 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) ) ;

30 30/187 Traduction UML vers SQL Traduction des associations d héritage Traduction des contraintes d héritage Gestion du personnel dans une université

31 31/187 Traduction UML vers SQL Associations d héritage dans UML (1) Recensement des différents cas d héritage en fonction des instances Modélisation des différents héritages, dans le formalisme UML, à l aide des contraintes partition exclusion totalité

32 32/187 Traduction UML vers SQL Associations d héritage dans UML (2) Expression des cas d héritage à l aide de couverture disjonction d instances dans une population donnée Quatre type de contraintes sont recensés : partition totalité exclusion absence de contrainte

33 33/187 Traduction UML vers SQL Contraintes d héritages PARTITION et TOTALITE Disjonction & Couverture Partition Non-Disjonction & Couverture Totalité

34 34/187 Traduction UML vers SQL Contraintes d héritages EXCLUSION et ABSENCE DE CONTRAINTE Disjonction & Non-Couverture Exclusion Non-Disjonction & Non-Couverture Absence de contrainte

35 35/187 Traduction UML vers SQL Exemple (1) Gestion du personnel dans une université Couverture + Disjonction Partition Personnel (P) est égal à l Union de Enseignant (EC) et de BIATOS (B) et l Intersection de EC et de B est Vide Couverture + Non-Disjonction Totalité Personnel (P) est égal à l Union de Enseignant (EC) et de BIATOS (B) et l Intersection de EC et de B n est pas Vide

36 36/187 Traduction UML vers SQL Exemple (2) Gestion du personnel dans une université Non-Couverture + Disjonction Exclusion L Union de Enseignant (EC) et de BIATOS (B) est incluse dans 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 incluse dans P et l Intersection de EC et de B n est pas Vide

37 37/187 Traduction UML vers SQL Transformation des associations d héritage Traduction d une association d héritage en fonction des contraintes de l association d héritage 3 familles de décomposition : Décomposition par distinction Décomposition descendante (push-down) Décomposition ascendante (push-up)

38 8/187 Traduction UML vers SQL Décomposition par distinction Transformation de chaque sous-classe en une relation Migration de la clé primaire de la sur-classe dans la ou les relations issues des sous-classes La clé primaire de la sur-classe devient à la fois clé primaire et clé étrangère Distinction PERSONNEL( Numéro, Nom, Prénom, DateNaissance, Sexe ) ENSEIGNANT( Numéro, Echelon, I n d i c e, S p é c i a l i t é ) BIATOS( Numéro, DateEmbauche, S e r v i c e )

39 39/187 Traduction UML vers SQL Décomposition descendante Deux cas possibles selon la contrainte d héritage : Contrainte de totalité ou de partition sur l association : Possibilité de ne pas traduire la relation issue de la sur-classe Migration de tous les attributs dans la ou les relations issues de la ou des sous-classes Sinon : Migration de tous les attributs dans la ou les relations issues de la ou des sous-classes Duplication des données

40 0/187 Traduction UML vers SQL Décomposition descendante Exemple Contrainte de partition : Aucun personnel ne peut être à la fois enseignant et BIATOS Il n existe pas non plus un personnel n étant ni enseignant ni biatos. Descendante ENSEIGNANT( Numéro, Nom, Prénom, DateNaissance, Sexe, Echelon, I n d i c e, S p é c i a l i t é ) BIATOS( Numéro, Nom, Prénom, DateNaissance, Sexe, DateEmbauche, S e r v i c e )

41 1/187 Traduction UML vers SQL Décomposition ascendante Suppression de la ou les relations issues de la ou des sous-classes Migration des attributs dans la relation issue de la sur-classe Exemple : (absence de contrainte) Ascendante PERSONNEL( Numéro, Nom, Prénom, DateNaissance, Sexe, Echelon, I n d i c e, S p é c i a l i t é, DateEmbauche, S e r v i c e )

42 42/187 Traduction UML vers SQL Transformation des associations d héritage multiple Mêmes règles ; plusieurs possibilités Exemple : (décomposition ascendante) Contrainte d exclusion sur enseignant et BIATOS PERSONNEL( Numéro, Nom, Prénom, DateNaissance, Sexe ) ENSEIGNANT ( Numéro, Echelon, I n d i c e, S p é c i a l i t é, DateDébutStage, DateFinStage ) BIATOS( Numéro, DateEmbauche, S e r v i c e, DateDébutStage, DateFinStage )

43 43/187 Transformation des associations d héritage en SQL 2 Transformation des associations d héritage en SQL 2 Exemple Gestion du personnel dans une université

44 4/187 Transformation des associations d héritage en SQL 2 Transformation des associations d héritage Décomposition par distinction Distinction PERSONNEL( Numéro, Nom, Prénom, DateNaissance, Sexe ) REM Un p e r s o n n e l à l U n i v e r s i t é ENSEIGNANT( Numéro, Echelon, I n d i c e, S p é c i a l i t é ) BIATOS( Numéro, DateEmbauche, S e r v i c 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 ) ) ) ;

45 45/187 Transformation des associations d héritage en SQL 2 Transformation des associations d héritage Décomposition par distinction REM P e r s o n n e l e n s e i g n a n t c r e a t e t a b l e ENSEIGNANT ( NUMERO number ( 7 ), ECHELON number ( 2 ), INDICE number ( 5 ), SPECIALITE v a r c h a r ( 2 0 ), c o n s t r a i n t PK ENSEIGNANT p r i m a r y 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 e a t e t a b l e BIATOS ( NUMERO number ( 7 ), DATEEMBAUCHE date, SERVICE v a r c h a r ( 2 0 ), c o n s t r a i n t PK BIATOS p r i m a r y 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 ) ;

46 6/187 Transformation des associations d héritage en SQL 2 Transformation des associations d héritage Décomposition descendante Descendante REM P e r s o n n e l e n s e i g n a n t ENSEIGNANT( Numéro, Nom, Prénom, DateNaissance, Sexe, Echelon, Indice, S p é c i a l i t é ) BIATOS( Numéro, Nom, Prénom, DateNaissance, Sexe, DateEmbauche, S e r v i c e ) c r e a t e t a b l e ENSEIGNANT ( 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 char ( 1 ), ECHELON number ( 2 ), INDICE number ( 5 ), SPECIALITE v a r c h a 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 p r i m a r y key (NUMERO) ) ;

47 6/187 Transformation des associations d héritage en SQL 2 Transformation des associations d héritage Décomposition descendante REM P e r s o n n e l BIATOS Descendante ENSEIGNANT( Numéro, Nom, Prénom, DateNaissance, Sexe, Echelon, Indice, S p é c i a l i t é ) BIATOS( Numéro, Nom, Prénom, DateNaissance, Sexe, DateEmbauche, S e r v i c e ) c r e a t e t a b l e BIATOS ( 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 char ( 1 ), DATEEMBAUCHE date, SERVICE v a r c h a 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 p r i m a r y key (NUMERO) ) ;

48 7/187 Transformation des associations d héritage en SQL 2 Transformation des associations d héritage Décomposition ascendante Ascendante PERSONNEL( Numéro, Nom, Prénom, DateNaissance, Sexe, Echelon, I n d i c e, S p é c i a l i t é, DateEmbauche, S e r v i c e ) REM P e r s o n n e l 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 char ( 1 ), ECHELON number ( 2 ), INDICE number ( 5 ), SPECIALITE v a r c h a r ( 2 0 ), DATEEMBAUCHE date, SERVICE v a r c h a 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 p r i m a r y key (NUMERO) ) ;

49 8/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition par distinction Contraintes d héritage : Contrainte de partition Contrainte de totalité Contrainte d exclusion Sans Contrainte (Contrainte A) Il n existe pas de personnel à la fois enseignant et BIATOS (Contrainte B) Il n existe pas de personnel ni enseignant ni BIATOS

50 49/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition par distinction Implémentation de la contrainte A : 2 déclencheurs REM D é c l e n c h e u r s u r ENSEIGNANT c r e a t e or r e p l a c e t r i g g e r TRIG ENSEIGNANT b e f o r e i n s e r t or update o f NUMERO on ENSEIGNANT f o r each row d e c l a r e num number ; b e g i n s e l e c t NUMERO INTO num from 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 é j à BIATOS!!! ) ; e x c e p t i o n when n o d a t a f o u n d then n u l l ; end ; /

51 50/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition par distinction REM D é c l e n c h e u r s u r BIATOS c r e a t e or r e p l a c e t r i g g e r TRIG BIATOS b e f o r e i n s e r t or update o f NUMERO on BIATOS f o r each row d e c l a r e num number ; b e g i n s e l e c t NUMERO INTO num from 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 é j à e n s e i g n a n t!!! ) ; e x c e p t i o n when n o d a t a f o u n d then n u l l ; end ; /

52 51/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition par distinction Implémentation de la contrainte B : procédures cataloguées (Insertion, Suppression) déclencheurs (Modification) REM Ajout d un E n s e i g n a n t c r e a t e o r r e p l a c e p r o c e d u r e AJOUT ENSIGNANT (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 s b 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 ; /

53 52/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition par distinction REM Ajout d un BIATOS c r e a t e o r 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 s b 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 ; /

54 53/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition 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 o r r e p l a c e p r o c e d u r e SUPPR ENSIGNANT (NUM number ) i s b 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 s b 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 ; /

55 54/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition par distinction REM D é c l e n c h e u r pour l a r é p e r c u s s i o n de l a m o d i f i c a t i o n du numéro du PERSONNEL v e r s ENSIGNANT e t BIATOS c r e a t e or r e p l a c e t r i g g e r TRIG ENSBIATOS b e f o r e update o f NUMERO on PERSONNEL f o r each row b e g i n b e g i n update ENSEIGNANT s e t NUMERO = : new.numero where NUMERO = : o l d.numero; e x c e p t i o n when n o d a t a f o u n d then n u l l ; end ; update BIATOS s e t NUMERO = : new.numero where NUMERO = : o l d.numero; e x c e p t i o n when n o d a t a f o u n d then n u l l ; end ; /

56 55/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Utilisation REM I n s e r t i o n s des données s o u s SQLPLUS REM Lancement des p r o c é 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 s from d u a l ; PAUSE execute AJOUT ENSIGNANT ( 1, TRAIFOR, Clément, , M, 6, 780, BD ) ; execute AJOUT ENSIGNANT ( 2, TRAIFOR, C l é m e n t i n e, , F, 6, 780, IA ) ; execute AJOUT BIATOS ( 3, FAITOUT, A l e x, , M, , Commercial ) ; 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

57 56/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition par distinction Contrainte de totalité Contraintes d héritage : (Contrainte B) Il n existe pas de personnel ni enseignant ni BIATOS (Contrainte C) Il peut exister un personnel à la fois enseignant et BIATOS Implémentation : Contrainte B : voir ci-dessus Contrainte C : équivaut à ne pas programmer la contrainte A précédente Pas de mise en œuvre les déclencheurs des tables ENSEIGNANT et BIATOS : TRIG_ENSEIGNANT, TRIG_BIATOS

58 57/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition par distinction Contrainte d exclusion Contraintes d héritage : (Contrainte A) Il n existe pas de personnel à la fois enseignant et BIATOS (Contrainte D) Il peut exister un personnel ni enseignant ni BIATOS Implémentation : Contrainte A: voir ci-dessus Contrainte D : équivaut à ne pas programmer la contrainte B précédente pas de mise en œuvre les quatre procédures (ajout et suppression) et le déclencheur TRIG_ENSBIATOS

59 58/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition par distinction Sans Contrainte Aucune contrainte n est à programmer!

60 9/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition descendante Descendante ENSEIGNANT( Numéro, Nom, Prénom, DateNaissance, Sexe, Echelon, Indice, S p é c i a l i t é ) BIATOS( Numéro, Nom, Prénom, DateNaissance, Sexe, DateEmbauche, S e r v i c e ) Contrainte de partition? aucun personnel ne peut être à la fois enseignant et iatos et il n existe pas non plus un personnel n étant ni enseignant ni iatos Contrainte de totalité? Contrainte d exclusion? il faudrait la table personnel pour les personnels non enseignant et non BIATOS Sans contrainte!

61 0/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition ascendante Contraintes d héritage : Contrainte de partition Contrainte de totalité Contrainte d exclusion Sans Contrainte (Contrainte A) Il n existe pas de personnel à la fois enseignant et BIATOS (Contrainte B) Il n existe pas de personnel ni enseignant ni BIATOS

62 61/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition ascendante Implémentation des contraintes A et B : au niveau de la table personnel à l aide des contraintes de type CHECK Contrainte A : Vérifier que les colonnes ECHELON, INDICE, SPECIALITE, DATEEMBAUCHE et SERVICE ne soient pas toutes initialisées Contrainte B : Vérifier que les colonnes ECHELON, INDICE, SPECIALITE, DATEEMBAUCHE et SERVICE ne soient pas toutes nulles

63 62/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition ascendante REM CONTRAINTE A a l t e r t a b l e PERSONNEL add 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 PERSONNEL add 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 ) ) ;

64 63/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition ascendante Contrainte de totalité Contraintes d héritage : (Contrainte B) Il n existe pas de personnel ni enseignant ni BIATOS (Contrainte C) Il peut exister un personnel à la fois enseignant et BIATOS

65 64/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition ascendante Contrainte de totalité Contrainte B : voir ci-dessus Contrainte C : Suppression ou désactiver la contrainte A précédente (DROP CONSTRAINT ou DISABLE CONSTRAINT) DROP CONSTRAINT : en cas de réactivation de la contrainte, il est nécessaire de la recréer (ADD CONSTRAINT) DISABLE CONSTRAINT : en cas de réactivation de la contrainte, il faut simplement la réactiver avec la requête ENABLE CONSTRAINT

66 65/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition ascendante Contrainte de totalité REM La c o n t r a i n t e C r e v i e n t à f a i r e l a REM D é 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 PERSONNEL d i s a b l e c o n s t r a i n t CK CONTRAINTE A ;

67 66/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition ascendante Contrainte d exclusion Contrainte d héritage : Contrainte A Réactivation de la contrainte A en supprimant au préalable les tuples ne répondant pas à cette contrainte Non-contrainte B Désactivation de la contrainte B

68 67/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition ascendante Contrainte d exclusion REM R é 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 PERSONNEL e n a b l e c o n s t r a i n t CK CONTRAINTE A ; REM D é s a c t i v a t i o n de l a CONTRAINTE B a 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 ;

69 68/187 Transformation des associations d héritage en SQL 2 Traduction des contraintes d héritage Décomposition ascendante Sans Contrainte Aucune contrainte de type CHECK n est à programmer!

70 69/187 Transformation des associations d héritage en SQL 2 Conclusion / Bilan Aucune des solutions ne constitue la panacée. Il faut mesurer les performances des requêtes. Voir aussi le type de requêtes

71 70/187 Transformation des associations d héritage en SQL 2 Transformation des associations d héritage en SQL 3 Héritage de types Existe depuis la version 9.1 d Oracle (novembre 2001) Uniquement héritage de type Pas d héritage multiple Un type peut hériter d un seul autre type (sur-type) Un sur-type peut permettre de définir plusieurs sous-types Chaque sous-type est spécialisé par rapport au sur-type qui est dit plus général Mécanisme d héritage automatiquement répercuté au niveau des tables objet à par du moment où les types définissant les tables sont issus eux-mêmes d une hiérarchie d héritage Héritage de tables?

72 71/187 Transformation des associations d héritage en SQL 2 Héritage de types Définition d un personnel à l Université C r é a t i o n du t y p e de l a sur c l a s s e c r e a t e t y p e PERSONNEL TYPE AS OBJECT ( 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 char ( 1 ) ) NOT FINAL / peut i n c l u r e des s o u s c l a s s e s / /

73 72/187 Transformation des associations d héritage en SQL 2 Héritage de types Définition d un enseignant C r é a t i o n du t y p e de l a sous c l a s s e c r e a t e t y p e ENSEIGNANT TYPE UNDER PERSONNEL TYPE ( ECHELON number ( 2 ), INDICE number ( 5 ), SPECIALITE v a r c h a r ( 2 0 ) ) FINAL /

74 73/187 Transformation des associations d héritage en SQL 2 Création des tables objet et contraintes Ci-dessous : Création de tables objet en fonctions des types précédemment définis Aucune directive ne précise l héritage : il est induit par la hiérarchie de type existante P e r s o n n e l de l u n i v e r s i t é c r e a t e t a b l e PERSONNEL OF PERSONNEL TYPE ( 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 ) ) ) ; P e r s o n n e l e n s e i g n a n t c r e a t e t a b l e ENSEIGNANT OF ENSEIGNANT TYPE ; IMPORTANT : les contraintes ne sont définies que dans la table personnel

75 74/187 Transformation des associations d héritage en SQL 2 Création des tables objet et contraintes Illustration NB : Les contraintes ne sont définies que dans la table personnel On hérite d un type Insertion des données dans la table personnel : i n s e r t i n t o p e r s o n n e l v a l u e s ( 1, B, F, , M ) ; i n s e r t i n t o p e r s o n n e l v a l u e s ( 1, B, F, , M ) ; ERREUR à 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 M

76 75/187 Transformation des associations d héritage en SQL 2 Création des tables objet et contraintes Illustration NB : Les contraintes ne sont définies que dans la table personnel On hérite d un type Insertion des données dans la table enseignant : i n s e r t i n t o e n s e i g n a n t v a l u e s ( 7, B, F, , M, 2, 780, BD ) ; 1 l i g n e c r i n s e r t i n t o e n s e i g n a n t v a l u e s ( 7, B, F, , M, 2, 780, BD ) ; 1 l i g n e c i n s e r t i n t o e n s e i g n a n t v a l u e s ( 8, B, D, , M, 2, 780, BD ) ; 1 l i g n e c 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 M BD 7 B F M BD 8 B D M BD

77 76/187 Transformation des associations d héritage en SQL 2 Création des tables objet et contraintes (2) Ci-dessous : Création des tables objet en fonctions des types précédemment définis Définition 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 é c r e a t e t a b l e PERSONNEL OF PERSONNEL TYPE ( 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 ) ) ) ; P e r s o n n e l e n s e i g n a n t

78 77/187 Transformation des associations d héritage en SQL 3 Transformation des associations d héritage en SQL 3 c r e a t e t a b l e ENSEIGNANT OF ENSEIGNANT TYPE ( c o n s t r a i n t PK ENSEIGNANT p r i m a r y key (NUMERO), c o n s t r a i n t CK SEXE ENSEIGNANT check (SEXE i n ( M, F ) ) ) ; ATTENTION : Définition des contraintes, aussi dans la table enseignant Héritage d un type

79 78/187 Transformation des associations d héritage en SQL 3 Création des tables objet et contraintes (2) illustrations Les contraintes doivent être définies aussi dans la table enseignant : héritage d un type SQL> i n s e r t i n t o e n s e i g n a n t v a l u e s ( 7, B, F, , M, 2, 780, BD ) ; 1 l i g SQL> i n s e r t i n t o e n s e i g n a n t v a l u e s ( 7, B, F, , M, 2, 780, BD ) ; i n s e r t i n t o e n s e i g n a n t v a l u e s ( 7, B, F, , M, 2, 780, BD ) ERREUR à 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 v a l u e s ( 8, B, D, , M, 2, 780, BD ) ; 1 l i g SQL> i n s e r t i n t o e n s e i g n a n t v a l u e s ( 9, B, D, , K, 2, 780, BD ) ; i n s e r t i n t o e n s e i g n a n t v a l u e s ( 9, B, D, , K, 2, 780, BD ) ERREUR à 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 é 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 M BD 8 B D M BD

80 79/187 Transformation des associations d héritage en SQL 3 Transformation des associations d héritage en SQL 3 Héritage de tables : À venir REM Un p e r s o n n e l à l U n i v e r s i t é 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 ) ) ) ;

81 80/187 Transformation des associations d héritage en SQL 3 Transformation des associations d héritage en SQL 3 Héritage de tables : À venir REM P e r s o n n e l e n s e i g n a n t c r e a t e t a b l e ENSEIGNANT under PERSONNEL ( ECHELON number ( 2 ), INDICE number ( 5 ), SPECIALITE v a r c h a r ( 2 0 ) ) ; REM P e r s o n n e l b i a t o s c r e a t e t a b l e BIATOS under PERSONNEL ( DATEEMBAUCHE date, SERVICE v a r c h a r ( 2 0 ) ) ;

82 81/187 Transformation des associations d héritage en SQL 3 Traduction des associations d agrégation

83 82/187 Transformation des associations d héritage en SQL 3 Traduction des associations d agrégation REM Un co p r o p r i é t a i r e peut p o s s é d e r p l u s i e u r s immeubles c r e a t e t a b l e COPROPRIETAIRE ( NUMCO number ( 7 ), NOMCO v a r c h a r ( 1 0 ), TELCO v a r c h a r ( 1 5 ), ADRCO v a r c h a r ( 5 0 ), c o n s t r a i n t PK COPROPRIETAIRE p r i m a r y key (NUMCO) ) ; REM Un immeuble d o i t ê t r e p o s s é d é par un ou REM p l u s i e u r s c o p r o p r i é t a i r e s c r e a t e t a b l e IMMEUBLE ( NUMIMM number ( 7 ), ADRIMM v a r c h a r ( 5 0 ), c o n s t r a i n t PK IMMEUBLE p r i m a r y key (NUMIMM) ) ;

84 83/187 Transformation des associations d héritage en SQL 3 Traduction des associations d agrégation c r e a t e t a b l e DEPENSE ( NUMCO number ( 7 ), NUMIMM number ( 7 ), DATEDEP date, MTTDEP number ( 1 0, 2 ), LIBDEP v a r c h a r ( 5 0 ), c o n s t r a i n t PK DEPENSE p r i m a r y 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 d e 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 d e l e t e cascade ) ; La cardinalité minimale de l association dépenser pourra être testée par l intermédiaire d une procédure PL/SQL

85 84/187 Transformation des associations d héritage en SQL 3 Traduction des contraintes d intégrité fonctionnelles Contraintes : Partition, Exclusion, Totalité, Simultanéité, Inclusion... Toutes les contraintes peuvent être définies ou programmées via : la déclaration de contraintes (constraints) la programmation de fonctions (functions) procédures (procedures) paquetages (packages) déclencheurs (triggers) en PL/SQL ou avec un langages hôtes tels que le C, C++, Java

86 85/187 Transformation des associations d héritage en SQL 3 Contrainte d inclusion c r e a t e t a b l e STAGE ( NUMEROS number ( 7 ), NOMENTREPRISE v a r c h a r ( 4 0 ), TELENT v a r c h a r ( 1 5 ), ADRENT v a r c h a r ( 5 0 ), c o n s t r a i n t PK STAGE p r i m a r y key (NUMEROS) ) ;

87 86/187 Transformation des associations d héritage en SQL 3 Contrainte d inclusion Une table par classe c r e a t e t a b l e ETUDIANT ( NUMEROE 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 char ( 1 ), NUMEROS number ( 7 ), c o n s t r a i n t PK ETUDIANT p r i m a r y 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 ) ) ) ;

88 87/187 Transformation des associations d héritage en SQL 3 Contrainte d inclusion c r e a t e ( t a b l e VOEUX NUMEROE number ( 7 ), NUMEROS number ( 7 ), c o n s t r a i n t PK VOEUX p r i m a r y 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 add c o n s t r a i n t FK EFFECTUER INCLUSION VOEUX f o r e i g n key (NUMEROE,NUMEROS) referencesvoeux (NUMEROE,NUMEROS) ;

89 88/187 Transformation des associations d héritage en SQL 3 Contrainte d inclusion Contrainte d inclusion : Le logiciel doit être installé sur un serveur du département qui a acheté le programme. Un logiciel L acheté par le département D est installé sur un serveur S, destiné entre autres, à ce département

90 89/187 Transformation des associations d héritage en SQL 3 Contrainte d inclusion Une table par Classe c r e a t e t a b l e DEPARTEMENT ( NUMDEP number ( 7 ), NOMDEP v a r c h a r ( 1 0 ), SPECIALITE v a r c h a r ( 2 0 ), c o n s t r a i n t PK DEPARTEMENT p r i m a r y key (NUMDEP) ) ; c r e a t e t a b l e LOGICIEL ( NUMLOG number ( 7 ), NOMLOG v a r c h a r ( 1 0 ), VERSIONLOG v a r c h a r ( 1 0 ), c o n s t r a i n t PK LOGICIEL p r i m a r y key (NUMLOG) ) ;

91 90/187 Transformation des associations d héritage en SQL 3 Contrainte d inclusion Une table par Classe c r e a t e t a b l e SERVEUR ( NUMSERV number ( 7 ), NOMSERV v a r c h a r ( 1 0 ), TYPESERV v a r c h a r ( 1 0 ), c o n s t r a i n t PK SERVEUR p r i m a r y key (NUMSERV) ) ;

92 91/187 Transformation des associations d héritage en SQL 3 Contrainte d inclusion Une table par Association ou par Classe-Association c r e a t e t a b l e ACHETER ( NUMDEP number ( 7 ), NUMLOG number ( 7 ), DATEACHAT date, c o n s t r a i n t PK ACHETER p r i m a r y 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 e a t e t a b l e UTILISER ( NUMDEP number ( 7 ), NUMSERV number ( 7 ), c o n s t r a i n t PK UTILISER p r i m a r y 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) ) ;

93 92/187 Transformation des associations d héritage en SQL 3 Contrainte d inclusion Une table par Association ou par Classe-Association c r e a t e t a b l e INSTALLER ( NUMLOG number ( 7 ), NUMSERV number ( 7 ), c o n s t r a i n t PK INSTALLER p r i m a r y 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) ) ;

94 Transformation des associations d héritage en SQL 3 93/187 Contrainte d Inclusion Déclencheur Un logiciel L acheté par le département D est installé sur un serveur S, destiné entre autres, à ce département c r e a t e 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 n b e f o r e i n s e r t on INSTALLER f o r each row d e c l a r e LOGIC 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, SERV from ACHETER, UTILISER where ACHETER.NUMDEP = UTILISER.NUMDEP and ACHETER.NUMLOG = : new.numlog and UTILISER.NUMSERV = : new.numserv; e x c e p t i o n when n o d a t a f o u n d then r 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 ê t r e i n s t a l l é s u r un s e r v e u r du département a c h e t e u r ) ; end ; /

95 94/187 Programmation Objet SQL 3 Programmation Objet SQL 3 Objet-relationnel Objet Passage UML Objet / Objet relationnel

96 95/187 Programmation Objet SQL 3 Schéma relationnel / SQL2 Schéma 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 )

97 96/187 Programmation Objet SQL 3 SQL2 : Schéma relationnel / SQL2 c r e a t e t a b 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 p r i m a r y key (NUM COURS) ) ; c r e a t e t a b 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 p r i m a r y key (NUM PROF) ) ; c r e a t e t a b 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 p r i m a r y key (NUM COURS, NUM PROF) ) ;

98 97/187 Programmation Objet SQL 3 Schéma relationnel / SQL2 a l t e r t a b l e CHARGE add 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 CHARGE add 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 ) ;

99 98/187 Programmation Objet SQL 3 Schéma relationnel-objet / SQL3 Schéma relationnel-objet COURS ( NUM COURS, NOMC, NBHEURES, ANNEE ) PROFESSEURS ( NUM PROF, NOMP, SPECIALITE, DATE ENTREE, DER PROM, SALAIRE BASE, SALAIRE ACTUEL, EnsembleDe (COURS) )

100 99/187 Programmation Objet SQL 3 SQL3 : Schéma relationnel-objet / SQL3 c r e a t e 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 v a r c h a r 2 ( 2 0 ), n b h e u r e s number ( 2 ), annee number ( 1 ) ) / c r e a t e t y p e l e s c o u r s t y p e as t a b l e o f c o u r s t y p e / c r e a t e 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 v a r c h a r 2 ( 2 5 ), s p e c i a l i t e v a r c h a r 2 ( 2 0 ), c o u r s l e s c o u r s t y p e... ) / c r e a t e t a b 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 ( p r i m a r y 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 /

101 100/187 Types Types Objet Type de données Principaux type de données Oracle :

102 101/187 Types Types Objet Persistance Sous Oracle, 3 catégories d objets : Objets colonne (column objects) : stockés en tant que colonne structurée dans une table relationnelle ; Objets ligne (row objects) : stockés en tant que ligne d une table objet. possèdent un identificateur unique appelé OID (Object Identifier) peuvent être indexés et partitionnés Objets non persistants : non stockés ni dans une colonne d une table relationnelle ni dans une ligne d une table objet Ces objets n existent que durant l exécution d un programme PL/SQL

103 102/187 Types Types Objet Définition de chaque objet à partir d un type décrivant une structure de données se positionnant dans une hiérarchie d héritage des méthodes Utilisation d un type : Construire d autres types Définir une ou plusieurs tables objet Définir une colonne d une table relationnelle Construire des vues objet

104 103/187 Types Types Objet Création d un type Création CREATE [OR REPLACE TYPE] schéma. nomtype [ AS OBJECT UNDER schéma. nomsurtype ] ( REM d é f i n i t i o n de l a s t r u c t u r e c o l o n n e 1 type1, c o l o n n e 2 type2,..., REM d é f i n i t i o n du comportement méthode1 ( p a r a m è t r e s 1 ), méthode2 ( p a r a m è t r e s 2 )... ) [ [ NOT] INSTANCIABLE ] REM p o s i t i o n n e m e n t dans l e graphe d h é r i t a g e [ [ NOT] FINAL ] /

105 104/187 Types Création d un type Directive FINAL Directives FINAL et NOT FINAL : positionnement d un type dans le graphe d héritage Directive NOT final : à appliquer aux types génériques Par défaut, tout type est FINAL Un type FINAL ne peut servir à définir des sous-types

106 105/187 Types Création d un type Directive 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 AS OBJECT UNDER P e r s o n n e l t ( E c h e lon NUMBER, i n d i c e NUMBER) FINAL

107 106/187 Types Création d un type Directive INSTANTIABLE Directives INSTANTIABLE et NOT INSTANTIABLE : capacité d instancitation d un type Tous les types créés sont par défaut INSTANTIABLE NOT INSTANCIABLE : similaire à la notion de classe abstraite Chaque type possède un constructeur permettant de créer des objets (persistants ou non) à l aide de la commande NEW ou au sein d un commande INSERT un constructeur (par défaut) et plusieurs dans le cas de surcharge Un type NOT INSTANCIABLE ne peut pas être FINAL Un sous-type NOT INSTANCIABLE peut hériter d un type INSTANCIABLE

108 107/187 Types Création d un type Directive 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 AS OBJECT UNDER P e r s o n n e l t ( E c h e lon NUMBER, i n d i c e NUMBER) INSTANTIABLE FINAL /

109 108/187 Types Types Objet Suppression d un type DROP TYPE nomtype [ FORCE VALIDATE ] ; Directives : FORCE : suppression du type même s il y a des objets de ce type dans une base Oracle marque les colonnes dépendant de ce type, UNUSED, et elles deviennent inaccessibles (non recommandé) VALIDATE : Vérification si les instances du type à supprimer peuvent être substitués par un sur-type. Exemple : DROP TYPE P e r s o n n e l t FORCE

110 109/187 Types Spécification de l objet Types Objet Création d un type CREATE 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;

111 110/187 Types Types Objet Création d un type Définition des méthodes associées à l objet CREATE TYPE BODY Bank Account AS MEMBER PROCEDURE open ( amount IN REAL) I S BEGIN open a ccount w i t h i n i t i a l d e p o s i t IF NOT amount > 0 THEN RAISE 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 ;

112 111/187 Types Types Objet Création d un type MEMBER PROCEDURE v e r i f y a c c t (num IN INTEGER) I S BEGIN check f o r wrong account number o r c l o s e d account IF ( num <> acct number ) THEN RAISE APPLICATION ERROR( 20105, wrong number ) ; ELSIF ( s t a t u s = c l o s e d ) THEN RAISE 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 S BEGIN 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;

113 112/187 Types Types Objet Extraction de la description d un type Définition de nouvelles vues du DD pour prendre en compte les types Exemple : c r e a t e t y p e emp type as o b j e c t ( n i n s e e v a r c h a r 2 ( 1 3 ), age number, nom v a r c h a r 2 ( 3 0 ) ) / Description de la structure du 1er niveau d un type : SQL> DESC emp type

114 113/187 Types Types Objet Extraction 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 manière générale : USER_TYPES des attributs des types : USER_TYPE_ATTRS des méthodes des types : USER_TYPE_METHODS des versions des types : USER_TYPE_VERSIONS

115 114/187 Types Table : MAGASINS2 SQL2 c r e a t e t a b 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 p r i m a r y key (NUMMAG) ) ; Passage à l objet Tables relationnelles Table : CLIENTS2 SQL2 c r e a t e t a b 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 p r i m a r y key (NUMCLI ) ) ; i n s e r t i n t o MAGASINS2 v a l u e s ( 1, FB, , 13, Avenue de l a p a i x, 75015, P a r i s, France ) ; NUMMAG NOMMAG TELMAG ADRNU ADRRUEMAG ADRCP ADRVILLEMA ADRPAYSMAG 1 FB Avenue de l a paix Paris France 2 FB Avenue de l a l i b e r t é Nice France 3 FB Avenue des Amis 6050 B r u x e l l e s Belgique 4 FB Avenue du s o l e i l 1001 Tunis Tunisie NUMCLI NOMCLI TELCLI ADRNU ADRRUECLI ADRCP ADRVILLECL ADRPAYSCLI 1 TRAIFOR Avenue de l a paix Paris France 2 CLEMENT Avenue de l a paix Paris France 3 SOUCY Route de l a corniche 4001 Sousse Tunisie

116 115/187 Tables Objet Tables Objet Création d un type TAD Première extension du modèle relationnel : Types Abstraits de Données (TAD) TAD (contexte BD) : Nouveau type d attribut défini par l utilisateur Enrichissement de la collection existante de types disponibles par défaut (number, date, char, varchar...) Structure de données partagée Utilisation du type dans une ou plusieurs tables Participation à la composition d un ou plusieurs autres types Remarques : Un TAD inclut des méthodes qui sont des procédures ou des fonctions Elles permettent de manipuler les objets du type abstrait

117 116/187 Tables Objet Tables Objet Création d un type exemple de TAD c r e a t e 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 e a t e 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 e a t e 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 ) /

118 117/187 Tables Objet Tables Objet Création d une table Exemples c r e a t e t a b l e MAGASINS3 OF MAG TYPE ( c o n s t r a i n t PK MAGASINS3 primary key (NUMMAG) ) ; c r e a t e t a b l e CLIENTS3 OF CLI TYPE ( c o n s t r a i n t PK CLIENTS3 primary key (NUMCLI) ) ;

119 118/187 Tables Objet Tables Objet Création 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 être déclarées au niveau de la table objet Accès à la description des types à partir du Dictionnaire de Données : SQL > s e l e c t table 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 ;

120 119/187 Tables Objet Tables Objet Création/description d une table Exemples SQL> desc c l i e n t s 2 Nom 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 3 Nom NULL? Type NUMCLI NOT NULL NUMBER( 3 8 ) NOMCLI CHAR( 3 0 ) TELCLI CHAR( 1 5 ) ADRCLI ADRESSE TYPE

121 120/187 Tables Objet Tables Objet Object identifier (OID) OID basés sur la clé primaire : Utilisation de l option primary key Exemple : c r e a t e t a b l e CLIENTS3 OF CLI TYPE ( c o n s t r a i n t PK CLIENTS3 p r i m a r y key (NUMCLI) ) o b j e c t i d e n t i f i e r i s p r i m a r y key ; Index sur OID : c r e a t e t a b l e CLIENTS3 OF CLI TYPE ( c o n s t r a i n t PK CLIENTS3 p r i m a r y 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 e a t e t a b l e CLIENTS3 OF CLI TYPE ( c o n s t r a i n t PK CLIENTS3 p r i m a r y 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 ( 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 m a x e x t e n ts 50) ) ;

122 121/187 Tables Objet Tables Objet Instanciation - exemples Insertion d une ligne (ou plutôt d un objet) : i n s e r t i n t o MAGASINS3 v a l u e s (MAG TYPE( 1, FB, , 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 v a l u e s (MAG TYPE( 2, FB, , ADRESSE TYPE( 20, Avenue de l a l i b e r t é, 06100, Nice, France ) ) ) ; i n s e r t i n t o MAGASINS3 v a l u e s (MAG TYPE( 3, FB, , 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 v a l u e s (MAG TYPE( 4, FB, , 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 magasins3 ; NUMMAG NOMMAG TELMAG ADRMAG(ADRNUM, ADRRUE, ADRCP, ADRVILLE, ADRPAYS) 1 FB ADRESSE TYPE( 13, Avenue de l a paix, 75015, P a r i s, France ) 2 FB ADRESSE TYPE( 20, Avenue de l a l i b e r t é, 06100, Nice, France ) 3 FB 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 ADRESSE TYPE( 10, Avenue du s o l e i l, 1001, Tunis, T u n i s i e )

123 122/187 Tables Objet Tables Objet Instanciation - exemples i n s e r t i n t o CLIENTS3 v a l u e s ( CLI TYPE ( 1, TRAIFOR, , 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 v a l u e s ( CLI TYPE ( 2, CLEMENT, , 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 v a l u e s ( CLI TYPE ( 3, SOUCY, , 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> S e l e c t from c l i e n t s 3 ; NUMCLI NOMCLI TELCLI ADRCLI (ADRNUM, ADRRUE, ADRCP, ADRVILLE, ADRPAYS) 1 TRAIFOR ADRESSE TYPE( 13, Avenue de l a p a i x, 75015, P a r i s, France ) 2 CLEMENT ADRESSE TYPE( 17, Avenue de l a p a i x, 75015, P a r i s, France ) 3 SOUCY ADRESSE TYPE( 77, Route de l a c o r n i c h e, 4001, Sousse, T u n i s i e )

124 123/187 Tables Objet Tables Objet Instanciation Table objet-relationnelle : Table dépendante d un type Enregistrements (lignes) dans cette table considérés comme des objets car ils possèdent 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 ADRESSE TYPE( 13, Avenue de l a p a i x, 75015, P a r i s, France ) 2 CLEMENT ADRESSE TYPE( 17, Avenue de l a p a i x, 75015, P a r i s, France ) 3 SOUCY ADRESSE TYPE( 77, Route de l a c o r n i c h e, 4001, Sousse, T u n i s i e )

125 124/187 Tables Objet Tables Objet Instanciation Renvoi des OID des objets de la table : SQL> SELECT REF( c ) FROM c l i e n t s 3 c ; REF(C) E9E229206EDF47DF C4BBD571C4EB9AF259F2F42BC E8898C4859AF0F3D48FA EB9AF259F2F42BC C2C F AAC9E254EB9AF259F2F42BC813E

126 125/187 Tables Objet Tables Objet Mises à jour Modifications/Suppressions de lignes ou d objets Mise à jour d une colonne standard update c l i e n t s 3 s e t NOMCLI = CBON where NUMCLI=2; Modification d une colonne appartenant à un type imbriqué update c l i e n t s 3 c s e t c. ADRCLI. ADRVILLE = MAVILLE where c. NUMCLI=2; Suppression d objet d e l e t e from c l i e n t s 3 where n u m c l i = 3 ; d e l e t e from c l i e n t s 3 c where upper ( c. ADRCLI. ADRPAYS) = FRANCE ;

127 126/187 Tables Objet Tables Objet Interrogations Utilisation de colonnes standards s e l e c t numcli, n o m c l i from c l i e n t s 3 ; NUMCLI NOMCLI 1 TRAIFOR 2 CLEMENT 3 SOUCY Utilisation d une colonne appartenant à un type imbriqué s e l e c t numcli, nomcli, c. ADRCLI.ADRPAYS from c l i e n t s 3 c ; NUMCLI NOMCLI ADRCLI. ADRPAYS 1 TRAIFOR France 2 CLEMENT France 3 SOUCY T u n i s i e

128 127/187 Tables Objet Tables Objet Interrogations avec formatage c o l nom format A10 c o l l o c format A15 s 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 c from c l i e n t s 3 c ; CLI NOM LOC 1 TRAIFOR P a r i s France 2 CLEMENT P a r i s France 3 SOUCY Sousse T u n i s i e

129 128/187 Tables Objet Tables Objet Interrogations avec contraintes SQL> c o l c. ADRCLI. ADRPAYS format A10 SQL> c o l c. ADRCLI. ADRVILLE format A10 SQL> s e l e c t numcli, nomcli, c. ADRCLI. ADRPAYS, 2 c. ADRCLI. ADRVILLE from c l i e n t s 3 c 3 WHERE upper ( c. ADRCLI. ADRVILLE ) l i k e P% ; NUMCLI NOMCLI ADRCLI. ADRPAYS ADRCLI. ADRVILLE 1 TRAIFOR France P a r i s 2 CLEMENT France P a r i s

130 129/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Table imbriquée (NESTED TABLE) : collection non ordonnée et non limitée d éléments de même type Exemple : table Departement NumDep Budget Employés NInsee Nom Age 1 table contenant une colonne (table) : Association du type 1-N??? 1 ou plusieurs tables : Association du type N-N

131 130/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Création c r e a t e t y p e emp type as o b j e c t ( n i n s e e v a r c h a r 2 ( 1 3 ), age number, nom v a r c h a r 2 ( 3 0 ) ) / c r e a t e t y p e emps type as t a b l e o f emp type / c r e a t e 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 v a r c h a r 2 ( 1 1 ), budget number, employes emps type ) / c r e a t e t a b l e departement o f d e p a r t e m e n t t y p e ( p r i m a r y key ( numdep ) ) n e s t e d t a b l e employes s t o r e as tabemp / clause NESTED TABLE : définition d une table imbriquée clause STORE AS : nommage de la structure interne qui stocke les enregistrements de cette table imbriquée

132 131/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Exemple c r e a t e t y p e emp type as o b j e c t ( n i n s e e v a r c h a r 2 ( 1 3 ), age number, nom v a r c h a r 2 ( 3 0 ) ) / c r e a t e t y p e emps type as t a b l e o f emp type / c r e a t e 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 v a r c h a r 2 ( 1 1 ), budget number, employes emps type ) / c r e a t e t a b l e departement o f d e p a r t e m e n t t y p e ( p r i m a r y key ( numdep ) ) n e s t e d t a b l e employes s t o r e as tabemp /

133 132/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Exemple SQL> desc departement Nom NULL? Type NUMDEP NOT NULL VARCHAR2( 1 1 ) BUDGET NUMBER EMPLOYES EMPS TYPE SQL> desc emps type emps type TABLE OF EMP TYPE Nom NULL? Type NINSEE VARCHAR2( 1 3 ) AGE NUMBER NOM VARCHAR2( 3 0 )

134 133/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Insertion Insertion des données dans une table imbriquée i n s e r t i n t o departement v a l u e s ( D1, , emps type ( ) ) ; i n s e r t i n t o departement v a l u e s ( D2, , emps type ( ) ) ; SQL> s e l e c t from departement ; NUMDEP BUDGET EMPLOYES( NINSEE, AGE, NOM) D EMPS TYPE ( ) D EMPS TYPE ( )

135 134/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Insertion Attention : dans l exemple suivant, la table vide est non initialisée i n s e r t i n t o departement ( numdep, budget ) v a l u e s ( D3, ) ; SQL> s e l e c t from departement ; NUMDEP BUDGET EMPLOYES( NINSEE, AGE, NOM) D EMPS TYPE ( ) D EMPS TYPE ( ) D

136 135/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Insertion Insertion des données dans une table imbriquée i n s e r t i n t o departement v a l u e s ( D4, , 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 ) ) ) ;

137 136/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Insertion SQL> s e l e c t from departement ; NUMDEP BUDGET EMPLOYES( NINSEE, AGE, NOM) D EMPS TYPE ( ) D EMPS TYPE ( ) D D 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 types de la NESTED TABLE stocke un objet dans la table initialise la table imbriquée associée avec des enregistrements

138 137/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Insertion Insertion des données dans une table imbriquée i n s e r t i n t o departement v a l u e s ( D5, , 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) D EMPS TYPE ( ) D EMPS TYPE ( ) D D 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 ) ) D EMPS TYPE(EMP TYPE( N5, 25, B i b i ), EMP TYPE( N8, 28, F i f i ) )

139 138/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Insertion avec THE Insertion avec THE dans une table imbriquée (D1 et D2 étaient initialisés à vides) i n s e r t i n t o THE ( s e l e c t d. employes from departement d where d. numdep = D1 ) v a l u e s ( N1, 21, CLEMENT ) ; i n s e r t i n t o THE ( s e l e c t d. employes from departement d where d. numdep = D2 ) v a l u e s ( N2, 22, CLEMENTINE ) ;

140 139/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Insertion avec THE SQL> s e l e c t from departement ; NUMDEP BUDGET EMPLOYES( NINSEE, AGE, NOM) D EMPS TYPE(EMP TYPE( N1, 21, CLEMENT ) ) D EMPS TYPE(EMP TYPE( N2, 22, CLEMENTINE ) ) D D 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 THE (SELECT...) : stockage d un enregistrement dans la table imbriquée désignée par THE SELECT après le THE : Retourne un seul objet, ce qui permet de sélectionner la table imbriquée associée

141 140/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Insertion avec THE Insertion avec THE dans une table imbriquée (D3 n était pas initialisé à vide) Insertion d un employé dans le département D3 alors que celui-ci n a pas été initialisé i n s e r t i n t o THE ( s e l e c t d. employes from departement d where d. numdep = D3 ) v a l u e s ( N3, 23, NE MARCHE PAS ) ;

142 141/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Insertion avec THE SQL> i n s e r t i n t o t h e ( s e l e c t d. employes from departement d 2 where d. numdep = D3 ) v a l u e s ( N3, 23, NEMARCHEPAS ) ; i n s e r t i n t o t h e ( s e l e c t d. employes from departement d where d. numdep = D3 ) ERREUR à l a l i g n e 1 : ORA 22908: r é f é r e n c e à une v a l e u r de t a b l e NULL Explications : 1 Le département D3 est bien un objet de la table Département 2 mais il ne possède pas de table imbriquée 3 car celle-ci n a pas été créée lors de l insertion. Il faut détruire l objet D3 puis le recréer!

143 142/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Modification Mise à jour de la table principale update departement d s e t d. budget = d. budget 1. 5 where d. budget <= ; SQL> s e l e c t from departement ; NUMDEP BUDGET EMPLOYES( NINSEE, AGE, NOM) D EMPS TYPE(EMP TYPE( N1, 21, CLEMENT ) ) D EMPS TYPE(EMP TYPE( N2, 22, CLEMENTINE ) ) D D 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 ) ) D EMPS TYPE(EMP TYPE( N5, 25, B i b i ), EMP TYPE( N8, 28, F i f i ) )

144 143/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Modification (suite) Mise à jour de la table principale selon un prédicat dans la table imbriquée update departement d s e t d. budget = d. budget where e x i s t s ( s e l e c t from t h e ( s e l e c t dt. employes from departement dt where dt. numdep = d. numdep ) nt where nt. age < 25 ) ; Description : Requête qui retourne les employés de chaque département s e l e c t dt. employes from departement dt where dt. numdep = d. numdep Condition sur un attribut de la table imbriquée : where nt. age < 25 Alias de la table imbriquée : nt

145 144/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Modification (suite) Mise à jour de la table principale selon un prédicat dans la table imbriquée

146 145/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Modification (suite) SQL> s e l e c t from departement ; NUMDEP BUDGET EMPLOYES( NINSEE, AGE, NOM) D EMPS TYPE(EMP TYPE( N1, 21, CLEMENT ) ) D EMPS TYPE(EMP TYPE( N2, 22, CLEMENTINE ) ) D D 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 ) ) D EMPS TYPE(EMP TYPE( N5, 25, B i b i ), EMP TYPE( N8, 28, F i f i ) )

147 146/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Modification Mise à jour de la table principale selon un prédicat dans la table imbriquée update departement d s e t d. budget = d. budget where e x i s t s ( s e l e c t from t h e ( s e l e c t dt. employes from departement dt where dt. numdep = d. numdep ) nt where nt. age > 25 ) ;

148 147/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Modification SQL> s e l e c t from departement ; NUMDEP BUDGET EMPLOYES( NINSEE, AGE, NOM) D EMPS TYPE(EMP TYPE( N1, 21, CLEMENT ) ) D EMPS TYPE(EMP TYPE( N2, 22, CLEMENTINE ) ) D D 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 ) ) D EMPS TYPE(EMP TYPE( N5, 25, B i b i ), EMP TYPE( N8, 28, F i f i ) ) Remarque : les mêmes employés sont dans deux départements

149 148/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Modification Mise à jour dans la table imbriquée update t h e ( s e l e c t d. employes from departement d where d. numdep = D2 ) nt s e t nt. age = 44 where nt. n i n s e e = N2 ;

150 149/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Modification SQL> s e l e c t from departement ; NUMDEP BUDGET EMPLOYES( NINSEE, AGE, NOM) D EMPS TYPE(EMP TYPE( N1, 21, CLEMENT ) ) D EMPS TYPE(EMP TYPE( N2, 44, CLEMENTINE ) ) D D 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 ) ) D 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 enregistrements de différentes tables imbriquées avec une seule commande UPDATE!

151 150/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Suppression Suppression dans la table principale d e l e t e from departement where numdep = D3 ; SQL> s e l e c t from departement ; NUMDEP BUDGET EMPLOYES( NINSEE, AGE, NOM) D EMPS TYPE(EMP TYPE( N1, 21, CLEMENT ) ) D EMPS TYPE(EMP TYPE( N2, 44, CLEMENTINE ) ) D 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 ) ) D EMPS TYPE(EMP TYPE( N5, 25, B i b i ), EMP TYPE( N8, 28, F i f i ) )

152 151/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Suppression Suppression à partir d une valeur de la table imbriquée Elimination des départements qui emploient une personne dont le nom est fifi d e l e t e from departement d where e x i s t s ( s e l e c t from t h e ( s e l e c t dt. employes from departement dt where dt. numdep = d. numdep ) nt where upper ( nt. nom) l i k e %F I F I% ) ;

153 152/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Suppression SQL> s e l e c t from departement ; NUMDEP BUDGET EMPLOYES( NINSEE, AGE, NOM) D EMPS TYPE(EMP TYPE( N1, 21, CLEMENT ) ) D EMPS TYPE(EMP TYPE( N2, 44, CLEMENTINE ) )

154 153/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Suppression Suppression d une table imbriquée Elimination des départements qui emploient une personne dont le nom est fifi d e l e t e t h e ( s e l e c t dt. employes from departement dt where dt. numdep = D1 ) nt where nt. nom = CLEMENT ; SQL> s e l e c t from departement ; NUMDEP BUDGET EMPLOYES( NINSEE, AGE, NOM) D D EMPS TYPE(EMP TYPE( N2, 44, CLEMENTINE ) )

155 154/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Interrogation Quels sont les numéros et les noms des employés du département D4? SQL> s e l e c t from departement ; NUMDEP BUDGET EMPLOYES( NINSEE, AGE, NOM) D EMPS TYPE(EMP TYPE( N1, 21, CLEMENT ) ) D EMPS TYPE(EMP TYPE( N2, 44, CLEMENTINE ) ) D 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 ) ) D EMPS TYPE(EMP TYPE( N5, 25, B i b i ), EMP TYPE( N8, 28, F i f i ) )

156 155/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Interrogation s e l e c t nt. n i n s e e, nt. nom from t h e ( s e l e c t dt. employes from departement dt where dt. numdep = D4 ) nt ; NINSEE NOM N5 B i b i N6 C i c i N7 D i d i N8 F i f i

157 156/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Interrogation Quels sont les numéros et les noms des employés du département D4 qui ont moins de 26 ans? SQL> s e l e c t from departement ; NUMDEP BUDGET EMPLOYES( NINSEE, AGE, NOM) D EMPS TYPE(EMP TYPE( N1, 21, CLEMENT ) ) D EMPS TYPE(EMP TYPE( N2, 44, CLEMENTINE ) ) D 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 ) ) D EMPS TYPE(EMP TYPE( N5, 25, B i b i ), EMP TYPE( N8, 28, F i f i ) )

158 157/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Interrogation s e l e c t nt. n i n s e e, nt. nom from t h e ( s e l e c t dt. employes from departement dt where dt. numdep = D4 ) nt where nt. age < 2 6 ; NINSEE NOM N5 B i b i

159 158/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Interrogation Requête : Quel est le nombre d employés du département D4? SQL> s e l e c t from departement ; NUMDEP BUDGET EMPLOYES( NINSEE, AGE, NOM) D EMPS TYPE(EMP TYPE( N1, 21, CLEMENT ) ) D EMPS TYPE(EMP TYPE( N2, 44, CLEMENTINE ) ) D 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 ) ) D EMPS TYPE(EMP TYPE( N5, 25, B i b i ), EMP TYPE( N8, 28, F i f i ) )

160 159/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Interrogation s e l e c t COUNT( ) Nombre d employés from t h e ( s e l e c t dt. employes from departement dt where dt. numdep = D4 ) nt ; Nombre d employés 4

161 160/187 Tables imbriquées Tables imbriquées (NESTED TABLE) Interrogation Quels sont les numéros et les noms des employés des départements D1 et D2? SQL> s e l e c t from departement ; NUMDEP BUDGET EMPLOYES( NINSEE, AGE, NOM) D EMPS TYPE(EMP TYPE( N1, 21, CLEMENT ) ) D EMPS TYPE(EMP TYPE( N2, 44, CLEMENTINE ) ) D 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 ) ) D EMPS TYPE(EMP TYPE( N5, 25, B i b i ), EMP TYPE( N8, 28, F i f i ) )

162 161/187 Tables imbriquées Tables imbriquées (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 t h e ( s e l e c t dt. employes from departement dt where dt. numdep = D1 ) nt union s e l e c t nt. n i n s e e, nt. nom from t h e ( s e l e c t dt. employes from departement dt where dt. numdep = D2 ) nt ; NINSEE NOM N1 CLEMENT N2 CLEMENTINE

163 162/187 Tables imbriquées Plusieurs Tables imbriquées Création Regroupement des tables imbriquées Professeurs et Formations dans la table Cours NumC Titre Professeurs Formations Nom Spécialité Filière Horaire c r e a t e t y p e p r o f t y p e as o b j e c t (nom v a r c h a r 2 ( 3 0 ), s p e c i a l i t e v a r c h a r 2 ( 3 0 ) ) / c r e a t e t y p e p r o f s t y p e as t a b l e o f p r o f t y p e / c r e a t e 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 v a r c h a r 2 ( 3 0 ), h o r a i r e number ( 5 ) ) / c r e a t e t y p e f o r m a t i o n s t y p e as t a b l e o f f o r m a t i o n t y p e /

164 163/187 Tables imbriquées Plusieurs Tables imbriquées Création c r e a t e t y p e p r o f t y p e as o b j e c t (nom v a r c h a r 2 ( 3 0 ), s p e c i a l i t e v a r c h a r 2 ( 3 0 ) ) / c r e a t e t y p e p r o f s t y p e as t a b l e o f p r o f t y p e / c r e a t e 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 v a r c h a r 2 ( 3 0 ), h o r a i r e number ( 5 ) ) / c r e a t e t y p e f o r m a t i o n s t y p e as t a b l e o f f o r m a t i o n t y p e / c r e a t e t y p e c o u r s t y p e as o b j e c t ( numc v a r c h a r 2 ( 5 ), t i t r e v a r c h a r 2 ( 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 e a t e t a b 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 p r i m a r y 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 ;

165 164/187 Tables imbriquées Plusieurs Tables imbriquées Insertion Insertion d un objet dans la table Cours, sans le lier à des professeurs ou à des formations i n s e r t i n t o c o u r s v a l u e s ( BD, Bases de Données, 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 Données PROFS TYPE ( ) FORMATIONS TYPE( )

166 165/187 Tables imbriquées Plusieurs Tables imbriquées Insertion Insertion, avec VALUES, dans 2 tables imbriquées : i n s e r t i n t o c o u r s v a 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émence, 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, ), f o r m a t i o n t y p e ( DESS EID, ), f o r m a t i o n t y p e ( DEA AIOC, 200) ) ) ;

167 166/187 Tables imbriquées Plusieurs Tables imbriquées Insertion s e l e c t from c o u r s ; NUMC TITRE PROFESSEURS(NOM, SPECIALITE ) FORMATIONS( FILIERE, HORAI BD Bases de Données PROFS TYPE ( ) FORMATIONS TYPE( ) DW Data WareHouse PROFS TYPE( FORMATIONS TYPE( PROF TYPE( Clémence, BD ), FORMATION TYPE( Master PROF TYPE( Adam, BD ) ) FORMATION TYPE( Master FORMATION TYPE( Master

168 167/187 Tables imbriquées Plusieurs Tables imbriquées Insertion Insertion, avec VALUES, dans 2 tables imbriquées i n s e r t i n t o c o u r s v a l u e s ( BDA, Bases de Données Avancées, p r o f s t y p e ( p r o f t y p e ( Clémence, 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, ), f o r m a t i o n t y p e ( Master 2R, 200) ) ) ;

169 168/187 Tables imbriquées Cours Plusieurs Tables imbriquées Insertion NumC Titre Professeurs Formations Nom Spécialité Filière Horaire BD Bases de données DW DataWareHouse Clémence BD Master Adam BD Master 2P 200 Master 2R 200 BDA Bases de données avancés Clémence BD Master 2P Traifor BD Master 2R Le Bon BD L affichage SQL+ est très mauvais... s e l e c t from c o u r s ; NUMC TITRE PROFESSEURS(NOM, SPECIALITE ) FORMATIONS( FILIERE, HORAIRE) BD Bases de Données PROFS TYPE ( ) FORMATIONS TYPE( ) DW Data WareHouse PROFS TYPE(PROF TYPE( Clémence, BD ), PROF TYPE( Adam, BD ) ) FORMATIONS TYPE(FORMATION TYPE( M FORMATION TYPE( Master 2P, 200), FORMATION TYPE( Master 2R, 200)) BDA Bases de Données Avancées PROFS TYPE(PROF TYPE( Clémence, BD ), PROF TYPE( T r a i f PROF TYPE( Le Bon, BD ) ) FORMATIONS TYPE(FORMATION TYPE( M FORMATION TYPE( Master 2R, 200))

170 169/187 Tables imbriquées Plusieurs Tables imbriquées Insertion Insertion, avec THE et VALUES, dans 2 tables imbriquées Enregistrement des données : les professeurs Traifor et Parisi enseignent les BD i n s e r t i n t o t h 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 c where numc = BD ) v a l u e s ( T r a i f o r, S I ) ; i n s e r t i n t o t h 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 c where numc = BD ) v a 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 Formations Nom Spécialité Filière Horaire BD Bases de données Traifor SI Parisi DM DW DataWareHouse Clémence BD Master Adam BD Master 2P 200 Master 2R 200 BDA Bases de données avancés Clémence BD Master 2P Traifor BD Master 2R Le Bon BD

171 170/187 Tables imbriquées Plusieurs Tables imbriquées Insertion Insertion, avec THE et VALUES, dans 2 tables imbriquées Le cours BD : appartient au cursus INFO1 requiert un volume horaire de 70 heures i n s e r t i n t o t h 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 numc = BD ) v a l u e s ( INFO1, 7 0 ) ; s e l e c t from c o u r s ; NumC Titre Professeurs Formations Nom Spécialité Filière Horaire BD Bases de données Traifor SI INFO1 70 Parisi DM DW DataWareHouse Clémence BD Master Adam BD Master 2P 200 Master 2R 200 BDA Bases de données avancés Clémence BD Master 2P Traifor BD Master 2R Le Bon BD

172 171/187 Tables imbriquées Plusieurs Tables imbriquées Insertion Insertion, avec THE et SELECT, dans 2 tables imbriquées Le cours BD doit être enseigné désormais dans toutes les filières concernées par la matière DW à condition que celle-ci aient un volume de moins de 150 heures i n s e r t i n t o t h 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 = 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 e from t h 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 f where n e s t e d f. h o r a i r e < ;

173 172/187 Tables imbriquées Plusieurs Tables imbriquées Insertion s e l e c t from c o u r s ; NumC Titre Professeurs Formations Nom Spécialité Filière Horaire BD Bases de données Traifor SI INFO1 70 Parisi DM Master 1 DW DataWareHouse Clémence BD Master Adam BD Master 2P 200 Master 2R 200 BDA Bases de données avancés Clémence BD Master 2P Traifor BD Master 2R Le Bon BD

174 173/187 Tables imbriquées Plusieurs Tables imbriquées Modification Exemple Dans la matière Data WareHouse, le professeur Adam est remplacé par le professeur Saitout et que les horaires pour le Master 2P augmentent de 30% update t h 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 c where 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 h 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. 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. 3 where n e s t e d f r m. f i l i e r e l i k e Master 2P% ;

175 174/187 Tables imbriquées Plusieurs Tables imbriquées Modification NumC Titre Professeurs Formations Nom Spécialité Filière Horaire BD Bases de données Traifor SI INFO1 70 Parisi DM Master 1 DW DataWareHouse Clémence BD Master Saitou BD Master 2P 290 Master 2R 200 BDA Bases de données avancés Clémence BD Master 2P Traifor BD Master 2R Le Bon BD

176 175/187 Tables imbriquées Plusieurs Tables imbriquées Modification Exemple Explications : Modification à l aide de la commande UPDATE d un ou plusieurs attributs dans une des deux tables imbriquées de la table cours Modification d un professeurs et une formation dans le cadre d une matière donnée : 2 requêtes UPDATE distinctes (car les 2 tables imbriquées sont concernées) Nécessite de recourir à un alias pour identifier l objet dans la table imbriquée

177 176/187 Tables imbriquées Plusieurs Tables imbriquées Modification Pour la matière DW, remplacement de la filière Master1 par la filière MASTER 2 et enregistrement d un volume horaire de 150 heures update t h 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. 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 where n e s t e d f r m. f i l i e r e = Master1 ; update t h 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. 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. 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 ;

178 177/187 Tables imbriquées Plusieurs Tables imbriquées Modification NumC Titre Professeurs Formations Nom Spécialité Filière Horaire BD Bases de données Traifor SI INFO1 70 Parisi DM Master 1 DW DataWareHouse Clémence BD MASTER Saitou BD Master 2P 290 Master 2R 200 BDA Bases de données avancés Clémence BD Master 2P Traifor BD Master 2R Le Bon BD

179 178/187 Tables imbriquées Plusieurs Tables imbriquées Suppression Suppression dans 2 tables imbriquées Le professeur Parisi n enseigne plus la matière BD. Enregistrement de cette information d e l e t e t h 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 c where c. numc = BD ) nt where nt. nom = P a r i s i ; NumC Titre Professeurs Formations Nom Spécialité Filière Horaire BD Bases de données Traifor SI INFO1 70 Master 1 DW DataWareHouse Clémence BD MASTER Saitou BD Master 2P 290 Master 2R 200 BDA Bases de données avancés Clémence BD Master 2P Traifor BD Master 2R Le Bon BD

180 179/187 Tables imbriquées Plusieurs Tables imbriquées Suppression Suppression dans 2 tables imbriquées La filière Master1 n inclut plus la matière BD dans son cursus. Enregistrement de cette information d e l e t e t h 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 = BD ) nt where nt. f i l i e r e = Master1 ; NumC Titre Professeurs Formations Nom Spécialité Filière Horaire BD Bases de données Traifor SI INFO1 70 DW DataWareHouse Clémence BD MASTER Saitou BD Master 2P 290 Master 2R 200 BDA Bases de données avancés Clémence BD Master 2P Traifor BD Master 2R Le Bon BD

181 180/187 Tables imbriquées Plusieurs niveaux d imbrication NumC Titre Professeurs Formations Nom Spécialité Filière Horaire Dates Jour BD Bases de données Traifor SI INFO1 70 DW DataWareHouse Clémence BD MASTER Saitou BD Master 2P 290 Master 2R 200 BDA Bases de données avancés Clémence BD Master 2P Traifor BD Master 2R Le Bon BD Oracle 8 ne permet pas d implanter plusieurs niveaux d imbrication dans une table objet-relationnelle?? dans oracle 9i et/ou 10g??

182 181/187 Tableaux pré-dimensionnés Tableaux pré-dimensionnés (VARRAY) VARRAY (Varrying ARRAY ) : collection ordonnée et limitée d éléments de même type Si le nombre d éléments maximum contenus dans une table imbriquées est connu a priori possibilité d utiliser un tableau de type VARRAY à la place d une table imbriquée Exemple : stockage de 3 numéros de téléphone maximum par professeur Professeurs : NumP NomP Adresse Téléphones AdrNum AdrRue AdrVille AdrCP NumTel

183 182/187 Tableaux pré-dimensionnés Tableaux de taille pré-dimensionnée (VARRAY) Exemple Stockage de 3 numéros de téléphone maximum par professeur Création c r e a t e t y p e A A d r e s s e t y p e as o b j e c t (AdrNum v a r c h a r 2 ( 1 0 ), AdrNom v a r c h a r 2 ( 3 0 ), A d r V i l l e v a r c h a r 2 ( 2 0 ), AdrCP v a r c h a r 2 ( 5 ) ) / c r e a t e t y p e t e l t y p e as o b j e c t ( NumTel v a r c h a r 2 ( 2 0 ) ) / c r e a t e 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 e a t e 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 v a r c h a r 2 ( 5 ), nomp v a r c h a r 2 ( 2 0 ), A d r e s s e A A d r e s s e t y p e, T e l e p h o n e s t e l s t y p e ) / c r e a t e t a b 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 p r i m a r y key (nump ) ) ;

184 183/187 Tableaux pré-dimensionnés Tableaux de taille pré-dimensionnée (VARRAY) Insertion : INSERT avec VALUES Stockage de 3 objets de type Professeur avec respectivement aucun, trois et deux numéros de téléphone (enregistrements du VARRAY) i n s e r t i n t o p r o f e s s e u r s v a l u e s ( P1, Clémence, A A d r e s s e t y p e ( 7, Avenue de l a Paix, P a r i s, ), 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 v a 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 é, P a r i s, ), t e l s t y p e ( t e l t y p e ( ), t e l t y p e ( ), t e l 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 v a 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 é, P a r i s, ), t e l s t y p e ( t e l t y p e ( ), t e l t y p e ( ), NULL ) ) ;

185 184/187 Tableaux pré-dimensionnés Tableaux de taille pré-dimensionnée (VARRAY) NumP NomP Adresse Téléphones AdrNum AdrRue AdrVille AdrCP NumTel P1 Clémence 77 Avenue de la paix Paris NULL NULL NULL P2 Adam 7 Rue de la liberté Paris P3 Saitou 1 Rue de la liberté Paris NULL

186 185/187 Tableaux pré-dimensionnés Tableaux de taille pré-dimensionnée (VARRAY) Insertion : INSERT dans un VARRAY avec PL/SQL Avec les tableaux VARRAY, l opérateur THE n est pas opérationnel (Version 8 d oracle (à vérifier sur les V9 et V10g) Pour manipuler les tableaux, il est nécessaire d utiliser un programme PL/SQL DECLARE n 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 ( ), t e l t y p e ( ), t e l t y p e ( ) ) ; BEGIN update p r o f e s s e u r s s e t t e l e p h o n e s = n e w t e l s where nump = P1 ; END; /

187 186/187 Tableaux pré-dimensionnés Tableaux de taille pré-dimensionnée (VARRAY) NumP NomP Adresse Téléphones AdrNum AdrRue AdrVille AdrCP NumTel P1 Clémence 77 Avenue de la paix Paris P2 Adam 7 Rue de la liberté Paris P3 Saitou 1 Rue de la liberté Paris NULL Remarque : Insérer un seul numéro de téléphone pour le professeur P1 et le placer au 2ème rang dans le tableau telephones Rédaction 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 ( ), NULL ) ;

188 187/187 Tableaux pré-dimensionnés Conclusion Comparaison entre NESTED TABLE et VARRAY A vérifier selon les versions d Oracle Possibilité de définir un index dans un NESTED TABLE Le nombre d éléments n est pas limité dans une table imbriquée Pas de possibilité de définir d index dans un VARRAY Le nombre d éléments est limité dans une tableau pré-dimensionné Possibilité d accéder directement aux enregistrements stockés dans les deux 2 structures de données fonctions : EXISTS, FIRST, LAST, etc. Performances? : NestedTable > Varray

Bases de Données Avancées

Bases de Données Avancées 1/62 Bases de Données Avancées Introduction & Rappel Conception et Modélisation Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR

Plus en détail

TP Contraintes - Triggers

TP Contraintes - Triggers TP Contraintes - Triggers 1. Préambule Oracle est accessible sur le serveur Venus et vous êtes autorisés à accéder à une instance licence. Vous utiliserez l interface d accés SQL*Plus qui permet l exécution

Plus en détail

Bases de Données relationnelles et leurs systèmes de Gestion

Bases de Données relationnelles et leurs systèmes de Gestion III.1- Définition de schémas Bases de Données relationnelles et leurs systèmes de Gestion RAPPELS Contraintes d intégrité sous Oracle Notion de vue Typage des attributs Contrainte d intégrité Intra-relation

Plus en détail

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS 1. Introduction Nous allons aborder la notion de surcouche procédurale au sein des SGBDS relationnels tels que Oracle (PLSQL)

Plus en détail

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

UML et les Bases de Données

UML et les Bases de Données CNAM UML et les Bases de Données UML et les Bases de Données. Diagramme de classes / diagramme d objets (UML)...2.. Premier niveau de modélisation des données d une application...2.2. Les éléments de modélisation...2.2..

Plus en détail

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES? BASE DE DONNÉES OBJET Virginie Sans [email protected] A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès

Plus en détail

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes. Les Triggers SQL Didier DONSEZ Université de Valenciennes Institut des Sciences et Techniques de Valenciennes [email protected] 1 Sommaire Motivations Trigger Ordre Trigger Ligne Condition Trigger

Plus en détail

Devoir Data WareHouse

Devoir Data WareHouse Université Paris XIII Institut Galilée Master 2-EID BENSI Ahmed CHARIFOU Evelyne Devoir Data WareHouse Optimisation, Transformation et Mise à jour utilisées par un ETL Mr R. NEFOUSSI Année 2007-2008 FICHE

Plus en détail

Bases de données relationnelles

Bases de données relationnelles Bases de données relationnelles Système de Gestion de Bases de Données Une base de données est un ensemble de données mémorisé par un ordinateur, organisé selon un modèle et accessible à de nombreuses

Plus en détail

CREATION WEB DYNAMIQUE

CREATION WEB DYNAMIQUE CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de

Plus en détail

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Le langage SQL pour Oracle - partie 1 : SQL comme LDD Le langage SQL pour Oracle - partie 1 : SQL comme LDD 1 SQL : Introduction SQL : Structured Query Langage langage de gestion de bases de donn ees relationnelles pour Définir les données (LDD) interroger

Plus en détail

Cours Bases de données 2ème année IUT

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours Bilan : Des vues à PL/SQL corrigé Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Cas exemple 2 Les tables... 3 Vues et index 4 Privilèges 5 Fonctions

Plus en détail

I4 : Bases de Données

I4 : Bases de Données I4 : Bases de Données Passage de UML au modèle relationnel Georges LOUIS Département Réseaux et Télécommunications Université de La Rochelle Module I4 2008-2009 1 G.Louis Sommaire 1 Des classes aux tables

Plus en détail

Auto-évaluation Oracle: cours de base

Auto-évaluation Oracle: cours de base Auto-évaluation Oracle: cours de base Document: F0475Test.fm 14/01/2008 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION ORACLE: COURS DE

Plus en détail

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

Chapitre 5 LE MODELE ENTITE - ASSOCIATION Chapitre 5 LE MODELE ENTITE - ASSOCIATION 1 Introduction Conception d une base de données Domaine d application complexe : description abstraite des concepts indépendamment de leur implémentation sous

Plus en détail

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES? BASE DE DONNÉES OBJET Virginie Sans [email protected] A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès

Plus en détail

Bases de données avancées

Bases de données avancées Bases de données avancées Jean-Yves Antoine LI - Université François Rabelais de Tours [email protected] UFR Sciences et Techniques IUP SIR Blois Master 1 Bases de Données avancées IUP Blois,

Plus en détail

Le Langage De Description De Données(LDD)

Le Langage De Description De Données(LDD) Base de données Le Langage De Description De Données(LDD) Créer des tables Décrire les différents types de données utilisables pour les définitions de colonne Modifier la définition des tables Supprimer,

Plus en détail

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres. INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES Durée : 1h30 Date : 17/05/2006 Coordonnateurs : Amel Bouzeghoub et Bruno Defude Documents autorisés : ceux distribués en cours Avertissements

Plus en détail

Modélisation de bases de données : Le modèle relationnel

Modélisation de bases de données : Le modèle relationnel Modélisation de bases de données : Le modèle relationnel Rappel chapitre 1 C est quoi un modèle? Type de modèle : Modèle hiérarchique Modèle réseau Modèle objet Modèle relationnel Cours BD Dr REZEG K 1

Plus en détail

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées ANNEE 2014 / 2015 Désignation de l enseignement : Bases de données Nom du document : TP SQL sous PostgreSQL Rédacteur :

Plus en détail

Hala Skaf-Molli. Nancy-Université [email protected] 14 mai 2007

Hala Skaf-Molli. Nancy-Université skaf@loria.fr 14 mai 2007 Bases de données avancées Hala Skaf-Molli Maître de Conférence Nancy-Université [email protected] 14 mai 2007 1 Introduction Dans ce cours, nous allons étudier les bases de données Orienté objets, bases de

Plus en détail

Corrigés détaillés des exercices

Corrigés détaillés des exercices Corrigés détaillés des exercices Diagramme des tables objet La figure suivante vous aidera dans la compréhension des manipulations des objets de la base. Client_type Client num nom adresse {telephone_vry}

Plus en détail

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition

Plus en détail

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications P.-A. Sunier, HEG-Arc Neuchâtel avec le concours de J. Greub [email protected] http://lgl.isnetne.ch/

Plus en détail

Intégrité sémantique dans les bases de données relationnelles

Intégrité sémantique dans les bases de données relationnelles Intégrité sémantique dans les bases de données relationnelles 1 - Intégrité sémantique Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU Ecole Polytechnique Universitaire de Marseille Fev. 2013

Plus en détail

Langage SQL : créer et interroger une base

Langage SQL : créer et interroger une base Langage SQL : créer et interroger une base Dans ce chapitre, nous revenons sur les principales requêtes de création de table et d accès aux données. Nous verrons aussi quelques fonctions d agrégation (MAX,

Plus en détail

Information utiles. [email protected]. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/

Information utiles. cinzia.digiusto@gmail.com. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/ Systèmes de gestion de bases de données Introduction Université d Evry Val d Essonne, IBISC utiles email : [email protected] webpage : http://www.ibisc.univ-evry.fr/ digiusto/ Google+ : https://plus.google.com/u/0/b/103572780965897723237/

Plus en détail

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions Exemple accessible via une interface Web Une base de données consultable en ligne : Bases de données et systèmes de gestion de bases de données The Trans-atlantic slave trade database: http://www.slavevoyages.org/tast/index.faces

Plus en détail

Application web de gestion de comptes en banques

Application web de gestion de comptes en banques Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion

Plus en détail

Bases de données et sites WEB

Bases de données et sites WEB Bases de données et sites WEB Cours2 : Sécurité et contrôles d accès Anne Doucet 1 Authentification Autorisation Privilèges Rôles Profils Limitations de ressources Plan Audit Contrôle d accès via les vues

Plus en détail

Gestion de base de données

Gestion de base de données Université Libre de Bruxelles Faculté de Philosophie et Lettres Département des Sciences de l Information et de la Communication Gestion de base de données Projet : Take Off ASBL Cours de M. A. Clève STIC-B-505

Plus en détail

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry Cours 3 Développement d une application BD 1 Plan du cours Gestion de la sécurité des données Optimisation des schémas de bases via la dénormalisation Utilisation de vues Placement du code applicatif dans

Plus en détail

Rappel sur les bases de données

Rappel sur les bases de données Rappel sur les bases de données 1) Généralités 1.1 Base de données et système de gestion de base de donnés: définitions Une base de données est un ensemble de données stockées de manière structurée permettant

Plus en détail

Bases de Données Avancées

Bases de Données Avancées 1/26 Bases de Données Avancées DataWareHouse Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR Léonard de Vinci 74, rue Marcel Cachin,

Plus en détail

Historisation des données

Historisation des données Historisation des données Partie 1 : mode colonne par Frédéric Brouard, alias SQLpro MVP SQL Server Expert langage SQL, SGBDR, modélisation de données Auteur de : SQLpro http://sqlpro.developpez.com/ "SQL",

Plus en détail

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF 2008-2009

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF 2008-2009 TD : Requêtes SQL (BDR.TD2-1) INSA 3IF 2008-2009 Loïc Maisonnasse 1 Objectif Ce TD a pour objectif de vous familiariser avec le langage de requêtes SQL. Et de vous apprendre à écrire des requêtes SQL pour

Plus en détail

Modèle Entité/Association

Modèle Entité/Association Base de données Modèle Entité/Association L3 Informatique Antoine Spicher [email protected] Contexte du cours Organisation du cours 1 ère partie (C. D.) Modèle et algèbre relationnel Langage SQL

Plus en détail

1 Introduction et installation

1 Introduction et installation TP d introduction aux bases de données 1 TP d introduction aux bases de données Le but de ce TP est d apprendre à manipuler des bases de données. Dans le cadre du programme d informatique pour tous, on

Plus en détail

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

Intégrité des données

Intégrité des données . Contraintes d intégrité : Définition et objectif Intégrité des données Définition des contraintes Vérification des contraintes Contrainte d'intégrité : propriété sémantique que doivent respecter les

Plus en détail

Bases de Données Avancées

Bases de Données Avancées 1/116 Bases de Données Avancées Implantation d une BD Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR Léonard de Vinci 74, rue

Plus en détail

Introduction au Système de Gestion de Base de Données et aux Base de Données

Introduction au Système de Gestion de Base de Données et aux Base de Données Introduction au Système de Gestion de Base de Données et aux Base de Données Formation «Gestion des données scientifiques : stockage et consultation en utilisant des bases de données» 24 au 27 /06/08 Dernière

Plus en détail

Olivier Mondet http://unidentified-one.net

Olivier Mondet http://unidentified-one.net T-GSI Ch.4 Le Langage SQL LDD, LCD Cet exercice guidé reprend le plan suivis lors de l intervention de formation faite pour l académie de Versailles. L objectif principal visait en la présentation du langage

Plus en détail

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL) Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL) Un modèle de données définit un mode de représentation de l information selon trois composantes : 1. Des structures de données. 2. Des contraintes qui permettent

Plus en détail

Conception des bases de données : Modèle Entité-Association

Conception des bases de données : Modèle Entité-Association Conception des bases de données : Modèle Entité-Association La modélisation d un problème, c est-à-dire le passage du monde réel à sa représentation informatique, se définit en plusieurs étapes pour parvenir

Plus en détail

Les bases de données

Les bases de données Les bases de données Introduction aux fonctions de tableur et logiciels ou langages spécialisés (MS-Access, Base, SQL ) Yves Roggeman Boulevard du Triomphe CP 212 B-1050 Bruxelles (Belgium) Idée intuitive

Plus en détail

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données II Objets avancés dans les bases de données OBJECTIFS 2.1. NOTIONS 2.1.1.

Plus en détail

Création et Gestion des tables

Création et Gestion des tables Création et Gestion des tables Version 1.0 Z Grégory CASANOVA 2 Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les tables... 5 3.1 Les types de données... 5 3.1.1 Les types de données Sql Server... 5

Plus en détail

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Partie 0 : Gestion des tablespace et des utilisateurs... 3 Sommaire Partie 0 : Gestion des tablespace et des utilisateurs... 3 1- Créer deux TableSpaces votre_nom-tbs et Votre_nom-TempTBS :... 3 2. Créer un utilisateur qui porte votre nom :... 3 3. Attribuer à

Plus en détail

UML (Diagramme de classes) Unified Modeling Language

UML (Diagramme de classes) Unified Modeling Language UML (Diagramme de classes) Unified Modeling Language Sommaire Introduction Objectifs Diagramme de classes Classe (Nom, attribut, opération) Visibilité et portée des constituants d une classe Association

Plus en détail

CATALOGUE FORMATIONS 2015. DOMAINE Bases de données

CATALOGUE FORMATIONS 2015. DOMAINE Bases de données DOMAINE Bases de données Version 1.0 - Octobre 2014 1, 2, 3 juin 2015 1, 2, 3 octobre 2015 CATALOGUE Analyse et conception d une base de données Elaboration de fiches de collecte de données Techniques

Plus en détail

Bases de données avancées Introduction

Bases de données avancées Introduction Bases de données avancées Introduction Dan VODISLAV Université de Cergy-Pontoise Master Informatique M1 Cours BDA Plan Objectifs et contenu du cours Rappels BD relationnelles Bibliographie Cours BDA (UCP/M1)

Plus en détail

Bases de données. Chapitre 1. Introduction

Bases de données. Chapitre 1. Introduction Références : Bases de données Pierre Wolper Email : [email protected] URL : http : //www.montefiore.ulg.ac.be/~pw/ http : //www.montefiore.ulg.ac.be/ ~pw/cours/bd.html Henry F. Korth, Abraham Silberschatz,

Plus en détail

Notes de cours : bases de données distribuées et repliquées

Notes de cours : bases de données distribuées et repliquées Notes de cours : bases de données distribuées et repliquées Loïc Paulevé, Nassim Hadj-Rabia (2009), Pierre Levasseur (2008) Licence professionnelle SIL de Nantes, 2009, version 1 Ces notes ont été élaborées

Plus en détail

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN Département Informatique Laboratoires de bases de données Laboratoire n 6 Programmation SQL par Danièle BAYERS et Louis SWINNEN Ce document est disponible sous licence Creative Commons indiquant qu il

Plus en détail

TP3 : Creation de tables 1 seance

TP3 : Creation de tables 1 seance Universite de Versailles IUT de Velizy - Algorithmique 2005/2006 TP3 : Creation de tables 1 seance Objectif : Creation et modication de tables dans une base de donnees. Avant de commencer ce TP, terminer

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

16H Cours / 18H TD / 20H TP

16H Cours / 18H TD / 20H TP INTRODUCTION AUX BASES DE DONNEES 16H Cours / 18H TD / 20H TP 1. INTRODUCTION Des Fichiers aux Bases de Données 2. SYSTEME DE GESTION DE BASE DE DONNEES 2.1. INTRODUCTION AUX SYSTEMES DE GESTION DE BASES

Plus en détail

Quelques aspects du Relationnel-Objet du SGBD Oracle

Quelques aspects du Relationnel-Objet du SGBD Oracle Département informatique de l IUT (de l université) de Bordeaux Cours de Bases de Données : présentation partielle d un SGBD RO 12 août 2015 Olivier Guibert Quelques aspects du Relationnel-Objet du SGBD

Plus en détail

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

Modélisation des données

Modélisation des données Modélisation des données Le modèle Entité/Association Le MCD ou modèle Entité/Association est un modèle chargé de représenter sous forme graphique les informations manipulées par le système (l entreprise)

Plus en détail

Génie Logiciel avec Ada. 4 février 2013

Génie Logiciel avec Ada. 4 février 2013 Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre

Plus en détail

SQL Historique 1982 1986 1992

SQL Historique 1982 1986 1992 SQL Historique 1950-1960: gestion par simple fichier texte 1960: COBOL (début de notion de base de données) 1968: premier produit de sgbdr structuré (IBM -> IDMS) 1970-74: élaboration de l'outil d'analyse

Plus en détail

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel 31071 Toulouse Cedex 7

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel 31071 Toulouse Cedex 7 Bases de données Yamine AIT AMEUR INPT-ENSEEIHT DIMA 2 Rue Charles Camichel 31071 Toulouse Cedex 7 Première partie Introduction 1 Généralités et notions de base Première partie Introduction 1 Généralités

Plus en détail

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Cours Base de données relationnelles. M. Boughanem, IUP STRI Cours Base de données relationnelles 1 Plan 1. Notions de base 2. Modèle relationnel 3. SQL 2 Notions de base (1) Définition intuitive : une base de données est un ensemble d informations, (fichiers),

Plus en détail

Bases de Données Avancées PL/SQL

Bases de Données Avancées PL/SQL 1/170 Bases de Données Avancées Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR Léonard de Vinci 74, rue Marcel Cachin, F-93017

Plus en détail

Le langage SQL (première partie) c Olivier Caron

Le langage SQL (première partie) c Olivier Caron Le langage SQL (première partie) 1 Plan Le S.G.B.D. postgres Le langage SQL Langage de manipulation de données Langage de requêtes 2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley)

Plus en détail

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 ORACLE 10G DISTRIBUTION ET REPLICATION Distribution de données avec Oracle G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 1 Plan 12. Distribution de données 12.1 Génération des architectures C/S et Oracle

Plus en détail

PHP 5. La base de données MySql. A. Belaïd 1

PHP 5. La base de données MySql. A. Belaïd 1 PHP 5 La base de données MySql A. Belaïd 1 Base de données C est quoi une base de données? Une base de données contient une ou plusieurs tables, chaque table ayant un ou plusieurs enregistrements Exemple

Plus en détail

Introduction au PL/SQL Oracle. Alexandre Meslé

Introduction au PL/SQL Oracle. Alexandre Meslé Introduction au PLSQL Oracle Alexandre Meslé 17 octobre 2011 Table des matières 1 Notes de cours 3 1.1 Introduction au PLSQL............................................ 3 1.1.1 PLSQL.................................................

Plus en détail

SQL sous SqlServer OLIVIER D. DEHECQ Olivier http://www.entraide-info.fr 0

SQL sous SqlServer OLIVIER D. DEHECQ Olivier http://www.entraide-info.fr 0 2013 SQL sous SqlServer OLIVIER D. DEHECQ Olivier http://www.entraide-info.fr 0 Table des matières Signalétique... 2 1 Les bases du SQL... 3 2 SQL server... 6 2 Références des exercices...21 DEHECQ Olivier

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

1 Position du problème

1 Position du problème Licence Science et Technologies - INF245 Examen session 1 - mai 2012 Durée : 2 heures Documents non autorisés Le barème est donné à titre indicatif 1 Position du problème Le Club Universitaire de Vélo

Plus en détail

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste Christian Soutou Avec la participation d Olivier Teste SQL pour Oracle 4 e édition Groupe eyrolles, 2004, 2005, 2008, 2010, is BN : 978-2-212-12794-2 Partie III SQL avancé La table suivante organisée en

Plus en détail

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle Ce projet comporte trois parties sur les thèmes suivants : création de base de donnée, requêtes SQL, mise en œuvre

Plus en détail

Chapitre 1 Généralités sur les bases de données

Chapitre 1 Généralités sur les bases de données Chapitre 1 Généralités sur les bases de données I. Définition d un SGBD Une base de données, généralement appelée BD est un ensemble structuré et organisé permettant le stockage de grandes quantités d'informations

Plus en détail

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles) SGBDR Systèmes de Gestion de Bases de Données (Relationnelles) Plan Approches Les tâches du SGBD Les transactions Approche 1 Systèmes traditionnels basés sur des fichiers Application 1 Gestion clients

Plus en détail

Vincent Augusto 2010-2011

Vincent Augusto 2010-2011 le des Systèmes Vincent Augusto École Nationale Supérieure des Mines de Saint-Étienne 2010-2011 Un 1/73 le des Un 2/73 1 2 3 4 le 5 6 7 8 Un le des Un 3/73 Contenu du cours : Techniques pour l analyse

Plus en détail

Bases de données relationnelles & SQL

Bases de données relationnelles & SQL Bases de données relationnelles & SQL Objectifs Appréhender les concepts du modèle relationnel. Etre capable de concevoir un schéma relationnel. Etre capable de créer une base de données relationnelle

Plus en détail

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD Plan Bases de Données L3 Info Céline Rouveirol 2010-2011 Bases de Données 1 / 77 Sources des transparents Bases de Données 2 / 77 Bases de SQL - M.P. Dorville/F. Goasdoué, LRI, Université Paris Sud - V.

Plus en détail

Université de Bangui. Modélisons en UML

Université de Bangui. Modélisons en UML Université de Bangui CRM Modélisons en UML Ce cours a été possible grâce à l initiative d Apollinaire MOLAYE qui m a contacté pour vous faire bénéficier de mes connaissances en nouvelles technologies et

Plus en détail

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre Bases de Données Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre Synthèse : conception de BD langage de modélisation famille de SGBD SGBD Analyse du

Plus en détail

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Chapitre VIII. Les bases de données. Orientées Objet. Motivation Chapitre VIII Motivation Le modèle relationnel connaît un très grand succès et s avère très adéquat pour les applications traditionnelles des bases de données (gestion) Les bases de données Orientées Objet

Plus en détail

Le Langage SQL version Oracle

Le Langage SQL version Oracle Université de Manouba École Supérieure d Économie Numérique Département des Technologies des Systèmes d Information Le Langage SQL version Oracle Document version 1.1 Mohamed Anis BACH TOBJI [email protected]

Plus en détail

BASES DE DONNEES TP POSTGRESQL

BASES DE DONNEES TP POSTGRESQL 2003-2004 Université Paris Dauphine IUP Génie Mathématique et Informatique IUP 2 ème année et Formation Continue BASES DE DONNEES TP POSTGRESQL Maude Manouvrier La reproduction de ce document par tout

Plus en détail

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013 NFA 008 Introduction à NoSQL et MongoDB 25/05/2013 1 NoSQL, c'est à dire? Les bases de données NoSQL restent des bases de données mais on met l'accent sur L'aspect NON-relationnel L'architecture distribuée

Plus en détail

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Gestion des transactions et accès concurrents dans les bases de données relationnelles Gestion des transactions et accès concurrents dans les bases de données relationnelles Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU) Ecole Polytechnique Universitaire de Marseille Fev.

Plus en détail

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public.

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public. DEVAKI NEXTOBJET 1 Présentation...2 Installation...3 Prérequis...3 Windows...3 Linux...3 Exécution...4 Concevoir une BDD avec Devaki NextObject...5 Nouveau MCD...5 Configurer la connexion à la base de

Plus en détail

Du 10 Fév. au 14 Mars 2014

Du 10 Fév. au 14 Mars 2014 Interconnexion des Sites - Design et Implémentation des Réseaux informatiques - Sécurité et Audit des systèmes - IT CATALOGUE DE FORMATION SIS 2014 1 FORMATION ORACLE 10G 11G 10 FEV 2014 DOUALA CAMEROUN

Plus en détail

NF26 Data warehouse et Outils Décisionnels Printemps 2010

NF26 Data warehouse et Outils Décisionnels Printemps 2010 NF26 Data warehouse et Outils Décisionnels Printemps 2010 Rapport Modélisation Datamart VU Xuan Truong LAURENS Francis Analyse des données Avant de proposer un modèle dimensionnel, une analyse exhaustive

Plus en détail

ISC21-1 --- Système d Information Architecture et Administration d un SGBD Compléments SQL

ISC21-1 --- Système d Information Architecture et Administration d un SGBD Compléments SQL ISC21-1 --- Système d Information Architecture et Administration d un SGBD Compléments SQL Jean-Marie Pécatte [email protected] 16 novembre 2006 ISIS - Jean-Marie PECATTE 1 Valeur de clé

Plus en détail

Compétences Business Objects - 2014

Compétences Business Objects - 2014 Compétences Business Objects - 2014 «Mars-Juin 2014. Réf : Version 1 Page 1 sur 34 Sommaire CONTEXTE DE LA REMISE A NIVEAU EN AUTOFORMATION... 3 1. MODELISATION... 4 1.1 DESCRIPTION FONCTIONNEL DE L'APPLICATION

Plus en détail

Programmation d application Bases de données avec Java

Programmation d application Bases de données avec Java Plan du document Programmation d application Bases de données avec Java INT Problématique slide 3 Correspondance diagramme de classe slide 4 UML vers schéma relationnel Programmation BD avec JDBC slide

Plus en détail

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007 Bases de Données Réparties Concepts et Techniques Matthieu Exbrayat ULP Strasbourg - Décembre 2007 1 Définition Une base de données répartie (distribuée) est une base de données logique dont les données

Plus en détail

CHAPITRE 1 ARCHITECTURE

CHAPITRE 1 ARCHITECTURE 07/04/2014 Université des sciences et de la Technologie Houari Boumediene USTHB Alger Département d Informatique ADMINISTRATION ET TUNING DE BASES DE DONNÉES CHAPITRE 1 ARCHITECTURE RESPONSABLE DR K. BOUKHALFA

Plus en détail

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige.

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige. : JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL

Plus en détail