You are on page 1of 195

NF17

Conception de bases de donnes I

Version 11.01 Cours (Fondamentaux)

STPHANE CROZAT

Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/

Publie le 17 fvrier 2011

Table des matires

Introduction I - Prsentation des bases de donnes

9 11

A. BD et SGBD : vue d'ensemble....................................................................................................................11


1. Qu'est ce qu'une BD ?................................................................................................................................................................11 2. Qu'est ce qu'un SGBD ?.............................................................................................................................................................12 3. Pourquoi des SGBD ?................................................................................................................................................................12 4. Caractristiques des SGBD.......................................................................................................................................................13

B. Notions gnrales pour les bases de donnes..............................................................................................13


1. Notion de donnes......................................................................................................................................................................14 2. Notion de modle de donnes.....................................................................................................................................................14 3. Notion de schma de donnes....................................................................................................................................................15 4. Notion de langage de donnes...................................................................................................................................................16 5. Notion d'administration de donnes..........................................................................................................................................17

C. Les mthodes de conception de bases de donnes......................................................................................17


1. Mthodologie de conception d'une base de donnes.................................................................................................................18 2. La mthode MERISE et le modle E-A......................................................................................................................................19 3. Le langage de modlisation UML..............................................................................................................................................19 4. lments pour l'analyse de l'existant et des besoins..................................................................................................................19 5. Le MCD......................................................................................................................................................................................21 6. Le MLD......................................................................................................................................................................................21

D. En rsum : Conception de bases de donnes.............................................................................................21

II - Le niveau conceptuel : la modlisation des bases de donnes

23

A. Bases du diagramme de classes UML.........................................................................................................23


1. Prsentation d'UML...................................................................................................................................................................23 2. Classes.......................................................................................................................................................................................24 3. Attributs......................................................................................................................................................................................25 4. Mthodes....................................................................................................................................................................................25 5. Associations...............................................................................................................................................................................26 6. Cardinalit.................................................................................................................................................................................27 7. Hritage.....................................................................................................................................................................................27 8. Exemple : Des voitures et des conducteurs................................................................................................................................29

B. Diagramme de classes UML avanc...........................................................................................................29


1. Explicitation des associations....................................................................................................................................................29 2. Classe d'association...................................................................................................................................................................30 3. Associations ternaires................................................................................................................................................................32 4. Composition...............................................................................................................................................................................32 5. Agrgation..................................................................................................................................................................................33 6. Classes abstraites.......................................................................................................................................................................34 7. Contraintes.................................................................................................................................................................................35 8. Contraintes sur les associations................................................................................................................................................37 9. Paquetages.................................................................................................................................................................................38 10. Strotype.................................................................................................................................................................................39

C. Le modle E-A.............................................................................................................................................40
1. Le modle E-A en bref................................................................................................................................................................40 2. Entit..........................................................................................................................................................................................40 3. Association.................................................................................................................................................................................41 4. Cardinalit d'une association....................................................................................................................................................41

S. Crozat - UTC

5. Modle E-A tendu.....................................................................................................................................................................42 6. Entit de type faible....................................................................................................................................................................43 7. Illustration d'entits faibles........................................................................................................................................................44

D. En rsum : Schma conceptuel..................................................................................................................44 E. Bibliographie commente sur la modlisation UML...................................................................................45

III - Le niveau logique : la modlisation relationnelle

47

A. Description du modle relationnel.............................................................................................................. 47


1. Le niveau logique.......................................................................................................................................................................47 2. Le modle relationnel.................................................................................................................................................................48 3. Domaine.....................................................................................................................................................................................48 4. Produit cartsien........................................................................................................................................................................48 5. Relation......................................................................................................................................................................................49 6. Attribut et enregistrement..........................................................................................................................................................49 7. La relation Vol...........................................................................................................................................................................50 8. Cl..............................................................................................................................................................................................50 9. Cl artificielle............................................................................................................................................................................51 10. Lien entre relations..................................................................................................................................................................52 11. clatement des relations pour viter la redondance...............................................................................................................52 12. Cl trangre............................................................................................................................................................................54 13. Schma relationnel...................................................................................................................................................................54 14. Exemple de schma relationnel simple pour la gographie....................................................................................................55

B. Le passage UML vers Relationnel...............................................................................................................56


1. Transformation des classes........................................................................................................................................................56 2. Transformation des associations...............................................................................................................................................56 3. Remarques concernant la transformation des associations 1:1................................................................................................57 4. Transformation des attributs et mthodes..................................................................................................................................58 5. Transformation des classes d'association..................................................................................................................................58 6. Transformation des compositions..............................................................................................................................................59 7. Transformation de la relation d'hritage...................................................................................................................................59 8. Transformation de la relation d'hritage par rfrence............................................................................................................61 9. Transformation de la relation d'hritage par les classes filles..................................................................................................61 10. Transformation de la relation d'hritage par la classe mre..................................................................................................62 11. Exemple de transformation d'une relation d'hritage..............................................................................................................63 12. Hritage et cl primaire...........................................................................................................................................................66 13. Liste des contraintes.................................................................................................................................................................66 14. Correspondance entre UML et relationnel..............................................................................................................................67

C. Le passage E-A vers Relationnel.................................................................................................................67


1. Transformation des entits.........................................................................................................................................................67 2. Transformation des associations...............................................................................................................................................67 3. Transformation de la relation d'hritage...................................................................................................................................68 4. Exemple de passage E-A vers relationnel..................................................................................................................................69 5. Comparaison des modles E-A, UML et relationnel.................................................................................................................70

D. Algbre relationnelle...................................................................................................................................70
1. Concepts manipulatoires............................................................................................................................................................70 2. Oprateurs ensemblistes............................................................................................................................................................71 3. Projection...................................................................................................................................................................................72 4. Restriction..................................................................................................................................................................................72 5. Produit.......................................................................................................................................................................................73 6. Jointure......................................................................................................................................................................................74 7. Jointure naturelle.......................................................................................................................................................................74 8. Jointure externe..........................................................................................................................................................................74 9. Division......................................................................................................................................................................................75 10. Proposition de notations..........................................................................................................................................................76 11. Exercice de synthse : Oprateurs de base et additionnels.....................................................................................................77

E. En rsum : Schma relationnel...................................................................................................................77 F. Bibliographie commente sur le modle relationnel....................................................................................77

IV - Le langage SQL

79

A. Qu'appelle-t-on SQL?..................................................................................................................................79 B. Le Langage de Dfinition de Donnes de SQL...........................................................................................80


1. Types de donnes.......................................................................................................................................................................80 2. Cration de tables......................................................................................................................................................................81

S. Crozat - UTC

3. Contraintes d'intgrit...............................................................................................................................................................82 4. Exemple de contraintes d'intgrit.............................................................................................................................................83 5. Cration de vues.........................................................................................................................................................................84 6. Suppression d'objets...................................................................................................................................................................85 7. Modification de tables................................................................................................................................................................85 8. Exemple de modifications de tables...........................................................................................................................................86

C. Gestion avec le Langage de Manipulation de Donnes de SQL.................................................................87


1. Insertion de donnes..................................................................................................................................................................87 2. Mise jour de donnes..............................................................................................................................................................88 3. Suppression de donnes.............................................................................................................................................................88

D. Questions avec le Langage de Manipulation de Donnes de SQL..............................................................88


1. Slection.....................................................................................................................................................................................89 2. Oprateurs de comparaisons et oprateurs logiques................................................................................................................90 3. Expression du produit cartsien................................................................................................................................................91 4. Expression d'une projection.......................................................................................................................................................91 5. Expression d'une restriction.......................................................................................................................................................92 6. Expression d'une jointure...........................................................................................................................................................92 7. Expression d'une jointure externe..............................................................................................................................................94 8. Oprateurs ensemblistes............................................................................................................................................................96 9. Tri...............................................................................................................................................................................................97 10. Fonctions de calcul..................................................................................................................................................................97 11. Agrgats...................................................................................................................................................................................98

E. Instructions avances pour le LMD de SQL................................................................................................99


1. Requtes imbriques..................................................................................................................................................................99 2. Sous-requte d'existence IN.......................................................................................................................................................99 3. Sous-requte d'existence EXISTS.............................................................................................................................................100 4. Sous-requte de comparaison ALL..........................................................................................................................................101 5. Sous-requte de comparaison ANY..........................................................................................................................................101 6. Raffinement de questions dans la clause FROM.....................................................................................................................102

F. Le Langage de Contrle de Donnes de SQL............................................................................................102


1. Attribution de droits.................................................................................................................................................................103 2. Rvocation de droits.................................................................................................................................................................104 3. Cration d'utilisateurs..............................................................................................................................................................104

G. En rsum : SQL....................................................................................................................................... 104 H. Bibliographie commente sur le SQL.......................................................................................................105

V - La thorie de la normalisation relationnelle

107

A. Les dpendances fonctionnelles................................................................................................................107


1. Exercice introductif : Redondance...........................................................................................................................................107 2. Les problmes soulevs par une mauvaise modlisation.........................................................................................................108 3. Principes de la normalisation..................................................................................................................................................109 4. Dpendance fonctionnelle........................................................................................................................................................109 5. Les axiomes d'Armstrong.........................................................................................................................................................110 6. Autres proprits dduites des axiomes d'Armstrong..............................................................................................................110 7. DF lmentaire........................................................................................................................................................................111 8. Notion de fermeture transitive des DFE..................................................................................................................................111 9. Notion de couverture minimale des DFE.................................................................................................................................111 10. Notion de graphe des DFE.....................................................................................................................................................112 11. Dfinition formelle d'une cl..................................................................................................................................................112

B. Les formes normales..................................................................................................................................113


1. Principe de la dcomposition...................................................................................................................................................113 2. Formes normales......................................................................................................................................................................114 3. Premire forme normale..........................................................................................................................................................114 4. Deuxime forme normale.........................................................................................................................................................115 5. Troisime forme normale.........................................................................................................................................................115 6. Forme normale de Boyce-Codd...............................................................................................................................................116

C. Bibliographie commente sur la normalisation.........................................................................................117

VI - Technologie Web, PHP et Java

119

A. Architecture 3-tier..................................................................................................................................... 119


1. Notions d'achitecture client-serveur........................................................................................................................................119 2. Notions d'architecture 3-tier....................................................................................................................................................121 3. Notions de serveur Web...........................................................................................................................................................122

S. Crozat - UTC

4. Architecture Web......................................................................................................................................................................123

B. Rappels HTML..........................................................................................................................................123
1. Formulaires HTML..................................................................................................................................................................123

C. Introduction PHP.................................................................................................................................... 124


1. Prsentation de PHP................................................................................................................................................................124 2. Principes de PHP.....................................................................................................................................................................125 3. Syntaxe PHP............................................................................................................................................................................125 4. Variables en PHP.....................................................................................................................................................................126 5. Structures de contrle en PHP.................................................................................................................................................126 6. Boucles en PHP.......................................................................................................................................................................127 7. Fonctions en PHP....................................................................................................................................................................127 8. Objets en PHP..........................................................................................................................................................................127 9. Envoi de texte au navigateur....................................................................................................................................................128 10. Formulaires HTML et PHP...................................................................................................................................................128

D. PHP et BD.................................................................................................................................................129
1. Interfaage avec PostgreSQL..................................................................................................................................................129 2. Interfaage PHP avec MySQL.................................................................................................................................................130 3. Interfaage PHP avec Oracle..................................................................................................................................................130 4. Architecture PHP/Oracle.........................................................................................................................................................132

E. Java et BD (JDBC).................................................................................................................................... 133


1. JDBC........................................................................................................................................................................................133 2. Structure globale d'un appel BD depuis Java..........................................................................................................................133 3. Syntaxe d'un appel BD depuis Java.........................................................................................................................................134 4. Exemple : Insertion et slection dans Oracle depuis Java......................................................................................................134 5. Espace de requte prpar.......................................................................................................................................................135 6. Exemple : Insertion en utilisant un espace prpar dans Oracle............................................................................................135 7. Appel Oracle PL/SQL..............................................................................................................................................................136 8. Insertion en utilisant un appel Oracle PL/SQL.......................................................................................................................137

F. Introduction aux servlets............................................................................................................................137


1. Prsentation des servlets..........................................................................................................................................................137 2. Implmenter une servlet...........................................................................................................................................................138 3. Quelques mthodes de la classe HttpServlet............................................................................................................................138 4. Formulaires HTML et servlet (HttpServletRequest)................................................................................................................138 5. Cration de la rponse (HttpServletResponse)........................................................................................................................139 6. Cycle de vie d'une servlet.........................................................................................................................................................139

G. Servlets et BD............................................................................................................................................139
1. Exemple d'appel SQL depuis une servlet sous Oracle.............................................................................................................139 2. Exemple d'appel Oracle PL/SQL depuis une servlet...............................................................................................................140 3. Architecture servlet/Oracle......................................................................................................................................................141

H. Bibliographie commente sur les architectures Web, PHP et Java...........................................................142

VII - Technologie Access

143

A. Gnralits.................................................................................................................................................143
1. Prsentation d'Access...............................................................................................................................................................143 2. Avantages et inconvnient d'Access.........................................................................................................................................145 3. Sparation base de donnes et application..............................................................................................................................145

B. Cration de schma relationnel sous Access.............................................................................................146


1. LDD et cration de tables sous Access....................................................................................................................................146 2. Domaines et types de donnes sous Access.............................................................................................................................146 3. Contraintes...............................................................................................................................................................................147 4. Vues et "requtes" LDD...........................................................................................................................................................148

C. Le langage de requtes sous Access..........................................................................................................149


1. Questions QBE.........................................................................................................................................................................149 2. Questions SQL..........................................................................................................................................................................150 3. Manipulation des donnes en QBE..........................................................................................................................................151 4. Clause GROUP BY en QBE.....................................................................................................................................................151

D. Cration d'application Access (formulaires et macros).............................................................................152


1. Formulaire lis une table......................................................................................................................................................152 2. Formulaires indpendants.......................................................................................................................................................153 3. Contrles listes.........................................................................................................................................................................154 4. Macros.....................................................................................................................................................................................155

S. Crozat - UTC

E. Modules de programmation VBA sous Access.........................................................................................156


1. Structure d'un programme VBA...............................................................................................................................................156 2. Fonctions connatre..............................................................................................................................................................157 3. Objets VBA pour accder la BD...........................................................................................................................................157 4. Exemple : Normaliser des chanes de caractres....................................................................................................................157 5. Exemple : Accder un fichier externe...................................................................................................................................158 6. Exemple : Parcourir une table ou une requte stocke...........................................................................................................158 7. Exemple : Parcourir une table passe en paramtre...............................................................................................................158 8. Exemple : Parcourir une table et grer les erreurs.................................................................................................................159 9. Exemple : Excuter une requte...............................................................................................................................................159 10. Exemple : Crer un schma de BD et initialiser les donnes................................................................................................159 11. Aide et dboguage..................................................................................................................................................................160

F. Autres aspects............................................................................................................................................ 160


1. Gestion des droits.....................................................................................................................................................................160 2. Run-time...................................................................................................................................................................................160

G. En rsum : Access....................................................................................................................................160 H. Bibliographie commente sur Access....................................................................................................... 160 I. Questions-rponses sur Access...................................................................................................................161

VIII - Ouvrage de rfrence conseill Questions de synthse Solution des exercices rdactionnels Glossaire Signification des abrviations Bibliographie Index

163 165 185 187 189 191 193

S. Crozat - UTC

Introduction
Les BD sont nes vers la fin des annes 1960 pour combler les limites des systmes de fichiers. Les BD relationnelles, issues de la recherche de Codd, sont celles qui ont connu le plus grand essor depuis plus de 20 ans, et qui reste encore aujourd'hui les plus utilises. Le langage SQL est une couche technologique, idalement indpendante des implmentations des SGBDR, qui permet de crer et manipuler des BD relationnelles. Les usages de BD se sont aujourd'hui gnraliss pour entrer dans tous les secteurs de l'entreprise, depuis les "petites" BD utilises par quelques personnes dans un service pour des besoins de gestion de donnes locales, jusqu'aux "grosses" BD qui grent de faon centralise des donnes partages par tous les acteurs de l'entreprise. Paralllement l'accroissement de l'utilisation du numrique comme outil de manipulation de toutes donnes (bureautique, informatique applicative, etc.) et comme outil d'extension des moyens de communication (rseaux) d'une part et les volutions technologiques (puissance des PC, Internet, etc.) d'autre part ont la fois rendu indispensable et complexifi la problmatique des BD. Les consquences de cette gnralisation et de cette diversification des usages se retrouvent dans l'mergence de solutions conceptuelles et technologiques nouvelles et sans cesse renouveles.

S. Crozat - UTC

Prsentation des bases de donnes


I-

I
11 17 37 56

BD et SGBD : vue d'ensemble Notions gnrales pour les bases de donnes Les mthodes de conception de bases de donnes En rsum : Conception de bases de donnes

Les BD ont t cres pour faciliter la gestion qualitative et quantitative des donnes informatiques. Les SGBD sont des applications informatiques permettant de crer et de grer des BD (comme Oracle ou MySQL par exemple). Les BD relationnelles sont les plus rpandues et l'on utilise des SGBDR pour les implmenter. Le langage SQL est le langage commun tous les SGBDR, ce qui permet de concevoir des BD relativement indpendamment des systmes utiliss.

A. BD et SGBD : vue d'ensemble


Objectifs
Comprendre l'intrt des BD. Comprendre ce qu'est un SGBD.

1. Qu'est ce qu'une BD ?
Dfinition : Base de donnes
Une BD est un ensemble volumineux, structur et minimalement redondant de donnes, relies entre elles, stockes sur supports numriques centraliss ou distribus, servant pour les besoins d'une ou plusieurs applications, interrogeables et modifiables par un ou plusieurs utilisateurs travaillant potentiellement en parallle.

Exemple : Compagnie arienne


Une BD de gestion de l'activit d'une compagnie arienne concernant les voyageurs, les vols, les avions, le personnel, les rservations, etc. Une telle BD pourrait permettre la gestion des rservations, des disponibilits des avions en fonction des vols effectuer, des affectation des personnels volants, etc.

S. Crozat - UTC

11

Prsentation des bases de donnes

2. Qu'est ce qu'un SGBD ?


Dfinition : Systme de Gestion de Bases de Donnes
Un SGBD est un logiciel qui prend en charge la structuration, le stockage, la mise jour et la maintenance d'une base de donnes. Il est l'unique interface entre les informaticiens et les donnes (dfinition des schmas, programmation des applications), ainsi qu'entre les utilisateurs et les donnes (consultation et mise jour).

Exemple : Exemples de SGBD


Oracle est un SGBD relationnel (et Relationnel-Objet dans ses dernires versions) trs reconnu pour les applications professionnelles. MySQL est un SGBD relationnel libre (licence GPL et commerciale), simple d'accs et trs utilis pour la ralisation de sites Web dynamiques. Depuis la version 4 MySQL implmente la plupart des fonctions attendues d'un SGBD relationnel. PosgreSQL est un SGBD relationnel et relationnel-objet trs puissant qui offre une alternative open-source aux solutions commerciales comme Oracle ou IBM. Access est un SGBD relationnel Microsoft, qui offre une interface conviviale permettant de concevoir rapidement des applications de petite envergure ou de raliser des prototypes moindre frais.

3. Pourquoi des SGBD ?


a) Jadis...
Avant l'avnement des SGBD, chaque application informatique dans l'entreprise impliquait sa propre quipe de dveloppement, ses propres supports physiques, ses propres fichiers, ses propres normes, ses propres langages, etc.

b) Consquences...
L'existence conjointe et croissante de ces applications indpendantes a des effets ngatifs, tels que : La multiplication des tches de saisie, de dveloppement et de support informatique La redondance anarchique des informations dans les fichiers L'incohrence des versions simultanes de fichiers La non-portabilit des traitements en raison des diffrences dans les formats et langages. La multiplication des cots de dveloppement et de maintenance des applications.

c) Problmes...
Les consquences prcdemment cites se rpercutent sur l'entreprise en gnrant des problmes humains et matriels. Cots en personnels qualifis et en formations Remise des pouvoirs de dcision entre les mains de spcialistes informatiques Tout changement matriel ou logiciel a un impact sur les applications Tout changement de la structure des donnes ncessite de modifier les programmes

d) Or...
En ralit les applications ne sont jamais totalement disjointes, des donnes similaires (le coeur de l'information d'entreprise) sont toujours la base des traitements. On peut citer typiquement : Les donnes comptables Les donnes clients et fournisseurs Les donnes relatives la gestion des stocks

12

S. Crozat - UTC

Prsentation des bases de donnes

Les donnes relatives aux livraisons Les donnes marketting et commerciales Les donnes relatives au personnel etc.

4. Caractristiques des SGBD


La conception d'un systme d'information pour tre rationnelle l'chelle d'une entreprise se doit d'adopter un certain nombre de principes, tels que : Une description des donnes indpendante des traitements Une maintenance de la cohrence de donnes Le recours des langages non procduraux, interactifs et structurants Dans ce cadre les SGBD se fixent les objectifs suivants : Indpendance physique des donnes Le changement des modalits de stockage de l'information (optimisation, rorganisation, segmentation, etc.) n'implique pas de changements des programmes. Indpendance logique des donnes L'volution de la structure d'une partie des donnes n'influe pas sur l'ensemble des donnes. Manipulation des donnes par des non-informaticiens L'utilisateur n'a pas savoir comment l'information est stocke et calcule par la machine, mais juste pouvoir la rechercher et la mettre jour travers des IHM ou des langages assertionnels simples. Administration facilite des donnes Le SGBD fournit un ensemble d'outils (dictionnaire de donnes, audit, tuning, statistiques, etc.) pour amliorer les performance et optimiser les stockages. Optimisation de l'accs aux donnes Les temps de rponse et de dbits globaux sont optimiss en fonctions des questions poses la BD. Contrle de cohrence (intgrit smantique) des donnes Le SGBD doit assurer tout instant que les donnes respectent les rgles d'intgrit qui leurs sont imposes. Partageabilit des donnes Les donnes sont simultanment consultables et modifiables. Scurit des donnes La confidentialit des donnes est assure par des systmes d'authentification, de droits d'accs, de cryptage des mots de passe, etc. Sret des donnes La persistance des donnes, mme en cas de panne, est assure, grce typiquement des sauvegardes et des journaux qui gardent une trace persistante des oprations effectues.

B. Notions gnrales pour les bases de donnes


Objectifs
Connatre les diffrences entre modle conceptuel, modle logique et implmentation physique. Comprendre l'importance de la modlisation conceptuelle.

S. Crozat - UTC

13

Prsentation des bases de donnes

1. Notion de donnes
Dfinition : Donnes
Elment effectif, rel, correspondant une type de donnes. Synonymes : Occurence, Instance

Exemple : Donnes

L'entier 486 Le vhicule (460HP59, Renault, Megane, Jaune)

Dfinition : Type de donnes


Ensemble d'objets qui possdent des caractristiques similaires et manipulables par des oprations identiques. Synonymes : Classe

Exemple : Type de donnes


Entier = { 0, 1, 2, ... , N } Vhicule = (immatriculation, marque, type, couleur)

2. Notion de modle de donnes


Dfinition : Modle de donnes
Ensemble de concepts et de rgles de composition de ces concepts permettant de dcrire des donnes (cf. Bases de donnes : objet et relationnel [Gardarin99]). Un modle est souvent reprsent au moyen d'un formalisme graphique permettant de dcrire les donnes (ou plus prcisment les types de donnes) et les relations entre les donnes. On distingue trois niveaux de modlisation pour les bases de donnes : Le modle conceptuel Il permet de dcrire le rel selon une approche ontologique, sans prendre en compte les contraintes techniques. Le modle logique Il permet de dcrire une solution, en prenant une orientation informatique gnrale (type de SGBD typiquement), mais indpendamment de choix d'implmentation prcis. Le modle physique Il correspond aux choix techniques, en terme de SGBD choisi et de sa mise en uvre (programmation, optimisation, etc.).

Exemple : Exemple de formalisme de modlisation conceptuelle


Le modle Entit-Association (cf. The entity-Relationsheep Model - Towards a Unified View of Data [Chen76]) a t le plus rpendu dans le cadre de la conception de bases de donnes. Le modle UML, qui se gnralise pour la conception en informatique, se fonde sur une approche objet.

Exemple : Exemple de formalisme de modlisation logique


Le modle relationnel est le modle dominant. Le modle relationnel-objet (adaptation des modles relationnel et objet au cadre des SGBD) est actuellement en pleine croissance. Le modle objet "pur" reste majoritairement au stade exprimental et de la recherche. Des modles plus anciens (hirarchique, rseau, etc.) ne sont plus gure utiliss aujourd'hui.

14

S. Crozat - UTC

Prsentation des bases de donnes

3. Notion de schma de donnes


Dfinition : Schma de donnes
Description, au moyen d'un langage formel, d'un ensemble de donnes dans le contexte d'une BD. Un schma permet de dcrire la structure d'une base de donnes, en dcrivant l'ensemble des types de donnes de la base. L'occurence d'une base de donnes est constitue de l'ensemble des donnes correspondant aux types du schma de la base.

Exemple : Schma de base de donnes


Etudiant (NumEtud, nom, ville) Module(NumMod, titre) Inscription(NumEtud, NumMod, date)

Exemple : Instance de base de donnes


Etudiant (172, 'Dupont', 'Lille') Etudiant (173, 'Durand', 'Paris') Etudiant (174, 'Martin', 'Orlans') Module(1, 'SGBD') Module(1, 'Systmes d'exploitation') Inscription(172, 1, 2002) Inscription(172, 2, 2002) Inscription(173, 1, 2001) Inscription(174, 2, 2002) On distingue trois niveaux d'abstraction de schmas : Le niveau conceptuel Il permet de dcrire les entits et les associations du monde rel. Il s'agit du schma global de la base de donnes, il en propose une vue canonique. Le niveau conceptuel correspond au modle conceptuel. Le niveau externe Il permet de dcrire les entits et les associations du monde rel, mais vues d'un utilisateur ou d'un groupe d'utilisateurs particuliers (on parle d'ailleurs galement de "vue" pour un shma externe). Il s'agit d'une restriction du schma conceptuel oriente vers un usage prcis. Il existe gnralement plusieurs schmas externes pour un mme schma conceptuel. Le niveau externe correspond un sous ensemble du modle conceptuel restreint aux points de vue de certains utilisateurs. Le niveau interne Il correspond l'implmentation physique des entits et associations dans les fichiers de la base. Le niveau interne correspond aux modles logiques et physiques.

Remarque : ANSI/X3/SPARC
Les trois niveaux, conceptuel, externe et interne, sont les trois niveaux distingus par le groupe de normalisation ANSI/X3/SPARC en 1975.

S. Crozat - UTC

15

Prsentation des bases de donnes

Les trois niveaux de schma selon ANSI/X3/SPARC

4. Notion de langage de donnes


Dfinition : Langage de donnes
Langage informatique permettant de dcrire et de manipuler les schmas d'une BD d'une une manire assimilable par la machine. Synonymes : Langage orient donnes

Exemple : SQL
SQL est le langage orient donnes consacr aux SGBD relationnels et relationnels-objet. Un langage de donnes peut tre dcompos en trois sous langages : Le Langage de Dfinition de Donnes Le LDD permet d'implmenter le schma conceptuel (notion de table en SQL) et les schmas externes (notion de vue en SQL). Le Langage de Contrle de Donnes Le LCD permet d'implmenter les droits que les utilisateurs ont sur les donnes et participe donc la dfinition des schmas externes. Le Langage de Manipulation de Donnes Le LMD permet l'interrogation et la mise jour des donnes. C'est la partie du langage

16

S. Crozat - UTC

Prsentation des bases de donnes

indispensable pour exploiter la BD et raliser les applications.

Exemple : Dfinition de donnes en SQL


CREATE TABLE Etudiant ( NumEtu : integer, Nom : string, Ville : string) Cette instruction permet de crer une relation "Etudiant" comportant les proprits "NumEtu", "Nom" et "Ville".

Exemple : Contrle de donnes en SQL


GRANT ALL PRIVILEGES ON Etudiant FOR 'Utilisateur' Cette instruction permet de donner tous les droits l'utilisateur "Utilisateur" sur la relation "Etudiant".

Exemple : Manipulation de donnes en SQL


SELECT Nom FROM Etudiant WHERE Ville = 'Compigne' Cette instruction permet de rechercher les noms de tous les tudiants habitant la ville de Compigne.

5. Notion d'administration de donnes


Dfinition : Administrateur
Personne ou groupe de personnes responsables de la dfinition des diffrents niveaux de schma. On distingue un type d'administrateur par niveau de schma : L'administrateur entreprise est en charge de la gestion du schma conceptuel et des rgles de contrle des donnes. L'administrateur de donnes est en charge de la gestion des schmas externes et de leur correspondance avec le schma conceptuel. L'administrateur base de donnes est en charge de la gestion du schma interne et de sa correspondance avec le schma conceptuel.

Dfinition : Dictionnaire des donnes


Le dictionnaire de donnes d'un SGBD contient les informations relatives aux schmas et aux droits de toutes les bases de donnes existantes au sein de ce SGBD. Il s'agit d'un outil fondamental pour les administrateurs. Les dictionnaires de donnes sont gnralement implments sous la forme d'une base de donnes particulire du SGBD, ce qui permet de grer les donnes relatives aux bases de donnes de la mme faon que les autres donnes de l'entreprise (i.e. dans une base de donnes). Synonymes : Catalogue des donnes, Mtabase

C. Les mthodes de conception de bases de donnes


Objectifs
Connatre la mthodologie de conception d'une BD.

S. Crozat - UTC

17

Prsentation des bases de donnes

1. Mthodologie de conception d'une base de donnes


Mthode : tapes de la conception d'une base de donnes
1. Analyse de la situation existante et des besoins 2. Cration d'une srie de modles conceptuels (canonique et vues externes) qui permettent de reprsenter tous les aspects importants du problme 3. Traduction des modles conceptuels en modle logique et optimisation (normalisation) de ce modle logique 4. Implmentation d'une base de donnes dans un SGBD, partir du modle logique

Domaine problme pos

Reprsenter

Modle Conceptuel

Traduire

BD solution propose

Implmenter

Modle Logique
Graphique 1 Processus de conception d'une base de donnes

Conseil : L'importance de l'tape d'analyse


La premire tape de la conception repose sur l'analyse de l'existant et des besoins. De la qualit de la ralisation de cette premire tape dpendra ensuite la pertinence de la base de donnes par rapports aux usages. Cette premire tape est donc essentielle et doit tre mene avec soins. Si la premire tape est fondamentale dans le processus de conception, elle est aussi la plus dlicate. En effet, tandis que des formalismes puissants existent pour la modlisation conceptuelle puis pour la modlisation logique, la perception de l'existant et des besoins reste une tape qui repose essentiellement sur l'expertise d'analyse de l'ingnieur.

Conseil : L'importance de l'tape de modlisation conceptuelle


Etant donne une analyse des besoins correctement ralise, la seconde tape consiste la traduire selon un modle conceptuel. Le modle conceptuel tant formel, il va permettre de passer d'une spcification en langage naturel, et donc soumise interprtation, une spcification non ambige. Le recours aux formalismes de modlisation tels que E-A ou UML est donc une aide fondamentale pour parvenir une reprsentation qui ne sera plus lie l'interprtation du lecteur. La traduction d'un cahier des charges spcifiant l'existant et les besoins en modle conceptuel reste nanmoins une tape dlicate, qui va conditionner ensuite l'ensemble de l'implmentation informatique. En effet les tape suivantes sont plus mcaniques, dans la mesure o un modle logique est dduit de faon systmatique du modle conceptuel et que l'implmentation logicielle est galement ralise par traduction directe du modle logique.

Remarque : Les tapes de traduction logique et d'implmentation


Des logiciels spcialiss (Sybase PowerDesigner [w_sybase] pour la modlisation E-A ou Objecteering software [w_objecteering] pour la modlisation UML) sont capables partir d'un modle conceptuel d'appliquer des algorithmes de traduction qui permettent d'obtenir directement le modle logique, puis les instructions pour la cration de la base de donnes dans un langage orient donnes tel que SQL.

18

S. Crozat - UTC

Prsentation des bases de donnes

L'existence de tels algorithmes de traduction montre que les tapes de traduction logique et d'implmentation sont moins complexes que les prcdentes, car plus systmatiques. Nanmoins ces tapes exigent tout de mme des comptences techniques pour optimiser les modles logiques (normalisation), puis les implmentations en fonction d'un contexte de mise en oeuvre matriel, logiciel et humain.

2. La mthode MERISE et le modle E-A


MERISE est une mthode d'analyse informatique particulirement adapte la conception de bases de donnes.

L'analyse selon MERISE La mthode MERISE a pour fondement le modle E-A, qui a fait son succs. Les principales caractristiques du modle E-A sont : Une reprsentation graphique simple et naturelle Une puissance d'expression leve pour un nombre de symboles raisonnables Une lecture accessible tous et donc un bon outil de dialogue entre les acteurs techniques et non techniques Une formalisation non ambige et donc un bon outil de spcification dtaille

3. Le langage de modlisation UML


UML est un autre langage de modlisation, plus rcent et couvrant un spectre plus large que les bases de donnes. En tant que standard de l'OMG et en tant que outil trs utilis pour la programmation oriente objet, il est amen supplanter petit petit la modlisation E-A.

4. lments pour l'analyse de l'existant et des besoins


La phase d'analyse de l'existant et des besoins est une phase essentielle et complexe. Elle doit aboutir des spcifications gnrales qui dcrivent en langage naturel les donnes manipules, et les traitements effectuer sur ces donnes.
S. Crozat - UTC

19

Prsentation des bases de donnes

On se propose de donner une liste non exhaustive d'actions mener pour rdiger de telles spcifications.

Mthode : L'analyse de documents existants


La conception d'une base de donnes s'inscrit gnralement au sein d'usages existants. Ces usages sont gnralement, au moins en partie, instruments travers des documents lectroniques ou non (papier typiquement). Il est fondamental d'analyser ces documents et de recenser les donnes qu'ils manipulent.

Exemple : Exemples de document existants


Fichiers papiers de stockage des donnes (personnel, produits, etc.) Formulaires papiers d'enregistrement des donnes (fiche d'identification d'un salari, fiche de description d'un produit, bon de commande, etc.) Documents lectroniques de type traitement de texte (lettres, mailing, procdures, etc.) Documents lectroniques de type tableurs (bilans, statistiques, calculs, etc.) Bases de donnes existantes, remplacer ou avec lesquelles s'accorder (gestion des salaires, de la production, etc.) Intranet d'entreprise (information, tlchargement de documents, etc.) etc.

Mthode : Le recueil d'expertise mtier


Les donnes que la base va devoir manipuler sont toujours relatives aux mtiers de l'entreprise, et il existe des experts qui pratiquent ces mtiers. Le dialogue avec ces experts est une source importante d'informations. Il permet galement de fixer la terminologie du domaine.

Exemple : Exemples d'experts consulter


Praticiens (secrtaires, ouvrier, contrleurs, etc.) Cadres (responsables de service, contre-matres, etc.) Experts externes (clients, fournisseurs, etc.) etc.

Mthode : Le dialogue avec les usagers


La base de donnes concerne des utilisateurs cibles, c'est dire ceux qui produiront et consommeront effectivement les donnes de la base. Il est ncessaire de dialoguer avec ces utilisateurs, qui sont les dtenteurs des connaissances relatives aux besoins rels, lis leur ralit actuelle (aspects de l'organisation fonctionnant correctement ou dfaillants) et la ralit souhaite (volutions, lacunes, etc.).

Exemple : Exemples d'utilisateurs


Personnes qui vont effectuer les saisies d'information ( partir de quelles sources ? Quelle est leur responsabilit ? etc.) Personnes qui vont consulter les informations saisies (pour quel usage ? pour quel destinataire ? etc.) Personnes qui vont mettre jour les informations (pour quelles raisons ? comment le processus est enclench ? etc.) etc.

Mthode : L'tude des autres systmes informatiques existants


la base de donnes va gnralement (et en fait quasi systmatiquement aujourd'hui) s'insrer parmi un ensemble d'autres logiciels informatiques travaillant sur les donnes de l'entreprise. Il est important d'analyser ces systmes, afin de mieux comprendre les mcanismes existants, leurs forces et leurs lacunes, et de prparer l'intgration de la base avec ces autres systmes. Une partie de ces systmes seront d'ailleurs souvent galement des utilisateurs de la base de donnes, tandis que la base de donnes sera elle mme utilisatrice d'autre systmes.

20

S. Crozat - UTC

Prsentation des bases de donnes

Exemple : Exemples d'autres systmes coexistants

Autres bases de donnes (les donnes sont elle disjointes ou partiellement communes avec celles de la base concevoir ? quelles sont les technologies logicielles sur lesquelles reposent ces BD ? etc.) Systmes de fichiers classiques (certains fichiers ont-ils vocations tre supplants par la base ? tre gnrs par la base ? alimenter la base ? etc.) Applications (ces applications ont elles besoins de donnes de la base ? peuvent-elles lui en fournir ? etc.) etc.

5. Le MCD
Dfinition : MCD
Le MCD est l'lment le plus connu de MERISE et certainement le plus utile. Il permet d'tablir une reprsentation claire des donnes du SI et dfinit les dpendances des donnes entre elles.

Exemple
Le modle E-A est un formalisme de MCD, le diagramme de classe UML en est un autre.

Remarque
Un MCD est indpendant de l'tat de l'art technologique. A ce titre il peut donc tre mis en oeuvre dans n'importe quel environnement logiciel et matriel, et il devra tre traduit pour mener une implmentation effective.

6. Le MLD
Introduction
On ne sait pas implmenter directement un modle conceptuel de donnes dans une machine et il existe diffrentes sortes de SGBD qui ont chacun leur propre modle : SGF (qui ne sont pas vraiment des SGBD), SGBD hirarchiques (organiss selon une arborescence), SGBD rseau (encore appels CODASYL), SGBDR, SGBDOO, SGBDRO, etc.

Dfinition : MLD
Un MLD est une reprsentation du systme tel qu'il sera implment dans un ordinateur.

Exemple
Le modle relationnel est un formalisme de MLD.

Remarque
Il ne faut pas confondre le MLD (relationnel par exemple) avec le MCD (E-A par exemple). Il ne faut pas confondre le MLD avec son implmentation logicielle en machine (avec Oracle par exemple)

D. En rsum : Conception de bases de donnes


Conception

Modle Conceptuel Schma conceptuel canonique et schmas externes Exemples

S. Crozat - UTC

21

Prsentation des bases de donnes

E-A UML Modle Logique Schma interne indpendant d'un SGBD Exemples Relationnel Objet Relationnel-Objet Rseau Hirarchique Modle Physique Schma interne pour un SGBD particulier Exemples Oracle MySQL PostgreSQL DB2 Access SQLServer

* * *

Les SGBD assurent la gestion efficace et structure des donnes partages. Leur conception repose sur une approche trois niveaux : conceptuel et externe, logique, physique.

22

S. Crozat - UTC

Le niveau conceptuel : la modlisation des bases de donnes


II -

II

Bases du diagramme de classes UML Diagramme de classes UML avanc Le modle E-A En rsum : Schma conceptuel Bibliographie commente sur la modlisation UML

59 89 128 154 154

La modlisation est l'tape fondatrice du processus de conception de BD. Elle consiste abstraire le problme rel pos pour en faire une reformulation qui trouvera une solution dans le cadre technologique d'un SGBD. Aprs avoir rappel succinctement les fondements et objectifs des SGBD, ce chapitre proposera les outils mthodologiques ncessaires la modlisation, travers les formalismes E-A et UML.

A. Bases du diagramme de classes UML


Objectifs
Savoir-faire un modle conceptuel. Savoir interprter un modle conceptuel.

Si le modle dominant en conception de bases de donnes a longtemps t le modle E-A, le modle UML se gnralise de plus en plus. Nous ne donnons ici qu'une introduction au diagramme de classes (parmi l'ensemble des outils d'UML), limit aux aspects particulirement utiliss en modlisation de bases de donnes.

1. Prsentation d'UML
UML est un langage de reprsentation destin en particulier la modlisation objet. UML est devenu une norme OMG en 1997. UML propose un formalisme qui impose de "penser objet" et permet de rester indpendant d'un langage de programmation donn. Pour ce faire, UML normalise les concepts de l'objet (numration et dfinition exhaustive des concepts) ainsi que leur notation graphique. Il peut donc tre utilis comme un moyen de communication entre les tapes de spcification conceptuelle et les tapes de spcifications techniques.

S. Crozat - UTC

23

Le niveau conceptuel : la modlisation des bases de donnes

Dans le domaine des bases de donnes, UML peut tre utilis la place du modle E-A pour modliser le domaine. De la mme faon, un schma conceptuel UML peut alors tre traduit en schma logique (relationnel ou relationnel-objet typiquement).

2. Classes
Dfinition : Classe
Une classe est un type abstrait caractris par des proprits (attributs et mthodes) communes un ensemble d'objets et permettant de crer des instances de ces objets, ayant ces proprits.

Syntaxe

Reprsentation UML d'une classe

Exemple : La classe Voiture

Exemple de classe reprsente en UML

Exemple : Une instance de la classe Voiture


L'objet V1 est une instance de la classe Voiture. V1 : Voiture Marque : 'Citron' Type : 'ZX' Portes : 5 Puissance : 6 Kilomtrage : 300000

Remarque : Cl
Le reprage des cls n'est pas systmatique en UML (la dfinition des cls se fera alors au niveau logique). On conseillera nanmoins de les reprsenter (en les soulignant dans le dessin). On vitera par contre d'ajouter des cls artificielles lorsqu'aucune cl n'est vidente.

Remarque
La modlisation sous forme de diagramme de classes est une modlisation statique, qui met en exergue la structure d'un modle, mais ne rend pas compte de son volution temporelle. UML propose d'autres types de diagrammes pour traiter, notamment, de ces aspects.

24

S. Crozat - UTC

Le niveau conceptuel : la modlisation des bases de donnes

3. Attributs
Dfinition : Attribut
Un attribut est une information lmentaire qui caractrise une classe et dont la valeur dpend de l'objet instanci.

Remarque

Un attribut est typ : Le domaine des valeurs que peut prendre l'attribut est fix a priori. Un attribut peut tre multivalu : Il peut prendre plusieurs valeurs distinctes dans son domaine. Un attribut peut tre driv : Sa valeur alors est une fonction sur d'autres attributs de la classe (il peut donc aussi tre reprsent comme une mthode, et c'est en gnral prfrable). Un attribut peut tre compos : Il joue alors le rle d'un groupe d'attributs (par exemple une adresse peut tre un attribut compos des attributs numro, type de voie, nom de la voie). Cette notion renvoie la notion de variable de type Record dans les langages de programmation classiques.

Syntaxe
attribut:type attribut_multivalu[nbMinValeurs..nbMaxValeurs]:type /attribut_driv:type attribut_compos - sous-attribut1:type - sous-attribut2:type - ...

Exemple : La classe Personne

Reprsentation d'attributs en UML Dans cet exemple, les attributs Nom, Prnom sont de type string, l'un de 20 caractres et l'autre de 10, tandis que DateNaissance est de type date et Age de type integer. Prnom est un attribut multivalu, ici une personne peut avoir de 1 3 prnoms. Age est un attribut driv, il peut tre calcul par une fonction sur DateNaissance.

4. Mthodes
Dfinition : Mthode
Une mthode (ou opration) est une fonction associe une classe d'objet qui permet d'agir sur les objets de la classe ou qui permet ces objets de renvoyer des valeurs (calcules en fonction de paramtres).

S. Crozat - UTC

25

Le niveau conceptuel : la modlisation des bases de donnes

Syntaxe
methode(paramtres):type

Remarque : Mthodes et modlisation de BD


Pour la modlisation des bases de donnes, les mthodes sont surtout utilises pour reprsenter des donnes calcules ( l'instar des attributs drives) ou pour mettre en exergue des fonctions importantes du systme cible. Seules les mthodes les plus importantes sont reprsentes, l'approche est moins systmatique qu'en modlisation objet par exemple.

Remarque : Mthodes, relationnel, relationnel-objet


Lors de la transformation du modle conceptuel UML en modle logique relationnel, les mthodes ne seront pas implmentes . Leur reprage au niveau conceptuel sert donc surtout d'aide-mmoire pour l'implmentation au niveau applicatif. Au contraire, un modle logique relationnel-objet permettra l'implmentation de mthodes associes des tables. Leur reprage au niveau conceptuel est donc encore plus important.

5. Associations
Dfinition : Association
Une association est une relation logique entre deux classes (association binaire) ou plus (association naire) qui dfinit un ensemble de liens entre les objets de ces classes. Une association est nomme, gnralement par un verbe. Une association peut avoir des proprits ( l'instar d'une classe). Une association dfinit le nombre minimum et maximum d'instances autorise dans la relation (on parle de cardinalit).

Syntaxe

Notation de l'association en UML

Remarque
Une association est gnralement bidirectionnelle (c'est dire qu'elle peut se lire dans les deux sens). Les associations qui ne respectent pas cette proprit sont dites unidirectionnelles ou navigation restreinte.

Exemple : L'association Conduit

Reprsentation d'association en UML L'association Conduit entre les classes Conducteur et Voiture exprime que les conducteurs conduisent des voitures.

26

S. Crozat - UTC

Le niveau conceptuel : la modlisation des bases de donnes

6. Cardinalit
Dfinition : Cardinalit d'une association
La cardinalit d'une association permet de reprsenter le nombre minimum et maximum d'instances qui sont autorises participer la relation. La cardinalit est dfinie pour les deux sens de la relation.

Syntaxe
Si mina (resp. maxa) est le nombre minimum (resp. maximum) d'instances de la classe A autorises participer l'association, on note sur la relation, ct de la classe A : mina..maxa. Si le nombre maximum est indtermin, on note n ou *.

Attention
La notation de la cardinalit en UML est oppose celle adopt en E-A. En UML on note gauche (resp. droite) le nombre d'instances de la classe de gauche (resp. de droite) autorises dans l'association. En EA, on note gauche (resp. droite) le nombre d'instances de la classe de droite (resp. de gauche) autorises dans l'association.

Remarque
Les cardinalit les plus courantes sont : 0..1 (optionnel) 1..1 ou 1 (un) 0..n ou 0..* ou * (plusieurs) 1..n ou 1..* (obligatoire)

Exemple : La cardinalit de l'association Possde

Reprsentation de cardinalit en UML Ici un conducteur peut possder plusieurs voitures (y compris aucune) et une voiture n'est possde que par un seul conducteur.

7. Hritage
Dfinition : Hritage
L'hritage est l'association entre deux classes permettant d'exprimer que l'une est plus gnrale que l'autre. L'hritage implique une transmission automatique des proprits (attributs et mthodes) d'une classe A une classe A'. Dire que A' hrite de A quivaut dire que A' est une sous-classe de A. On peut galement dire que A est une gnralisation de A' et que A' est une spcialisation de A.

S. Crozat - UTC

27

Le niveau conceptuel : la modlisation des bases de donnes

Syntaxe

Notation de l'hritage en UML

Remarque
L'hritage permet de reprsenter la relation "est-un" entre deux objets.

Remarque
Outre qu'il permet de reprsenter une relation courante dans le monde rel, l'hritage a un avantage pratique, celui de factoriser la dfinition de proprits identiques pour des classes proches.

Exemple : La classe Conducteur

Reprsentation d'hritage en UML Dans cet exemple la classe Conducteur hrite de la classe Personne, ce qui signifie qu'un objet de la classe conducteur aura les attributs de la classe Conducteur (TypePermis et DatePermis) mais aussi ceux de la classe Personne (Nom, Prnom, DateNaissance et Age). Si la classe Personne avait des mthodes, la classe Conducteur en hriterait de la mme faon.

28

S. Crozat - UTC

Le niveau conceptuel : la modlisation des bases de donnes

8. Exemple : Des voitures et des conducteurs


Exemple

Exemple trs simple de diagramme de classes Les relations de ce diagramme expriment que les conducteurs sont des personnes qui ont un permis ; que toute voiture est possde par une unique personne (qui peut en possder plusieurs) ; que les voitures peuvent tre conduites par des conducteurs et que les conducteurs peuvent conduire plusieurs voitures.

Remarque
Les mots cls in, out et in/out devant un paramtre de mthode permettent de spcifier si le paramtre est une donne d'entre, de sortie, ou bien les deux.

Remarque
Le but d'une modlisation UML n'est pas de reprsenter la ralit dans l'absolu, mais plutt de proposer une vision d'une situation rduite aux lments ncessaires pour rpondre au problme pos. Donc une modlisation s'inscrit toujours dans un contexte, et en cela l'exemple prcdent reste limit car son contexte d'application est indfini.

B. Diagramme de classes UML avanc


Objectifs
Matriser le diagramme de classe UML dans le cas de la conception de BD.

Les lments de modlisation suivant compltent les notations basiques du diagramme de classe : classe, attribut, association, cardinalit et hritage.

1. Explicitation des associations

S. Crozat - UTC

29

Le niveau conceptuel : la modlisation des bases de donnes

Syntaxe

: Sens de lecture

Il est possible d'ajouter le sens de lecture du verbe caractrisant l'association sur un diagramme de classe UML, afin d'en faciliter la lecture. On ajoute pour cela un signe < ou > (ou un triangle noir) ct du nom de l'association

Syntaxe

: Rle

Il est possible de prciser le rle jou par une ou plusieurs des classes composant une association afin d'en faciliter la comprhension. On ajoute pour cela ce rle ct de la classe concerne (parfois dans un petit encadr coll au trait de l'association.

Exemple

Rle et sens de lecture sur une association

Remarque : Associations rflexives


L'explicitation des associations est particulirement utile dans le cas des associations rflexives.

2. Classe d'association
Dfinition : Classe d'association
On utilise la notation des classes d'association lorsque l'on souhaite ajouter des proprits une association.

30

S. Crozat - UTC

Le niveau conceptuel : la modlisation des bases de donnes

Syntaxe

: Notation d'une classe d'association en UML

Notation d'une classe d'association en UML

Exemple : Exemple de classe d'association

Emplois

S. Crozat - UTC

31

Le niveau conceptuel : la modlisation des bases de donnes

3. Associations ternaires
Syntaxe

Notation d'une association ternaire

Conseil : Ne pas abuser des associations ternaires


Il est toujours possible de rcrire une association ternaire avec trois associations binaires, en transformant l'association en classe.

Conseil : Pas de degr suprieur 4


En pratique on n'utilise jamais en UML d'association de degr suprieur 3.

4. Composition
Dfinition : Association de composition
On appelle composition une association particulire qui possde les proprits suivantes : La composition associe une classe composite et des classes parties, tel que tout objet partie appartient un et un seul objet composite. C'est donc une association 1:N. La composition n'est pas partageable, donc un objet partie ne peut appartenir qu' un seul objet composite la fois. Le cycle de vie des objets parties est li celui de l'objet composite, donc un objet partie disparat quand l'objet composite auquel il est associ disparait.

Remarque
La composition est une association particulire.

32

S. Crozat - UTC

Le niveau conceptuel : la modlisation des bases de donnes

Syntaxe

: Notation d'une composition en UML

Notation d'une composition en UML

Attention : Composition et cardinalit


La cardinalit ct composite est toujours de exactement 1. Ct partie la cardinalit est libre, elle peut tre 0..1, 1, * ou bien 1..*.

Exemple : Exemple de composition

Un livre On voit bien ici qu'un chapitre n'a de sens que faisant partie d'un livre, qu'il ne peut exister dans deux livres diffrents et que si le livre n'existe plus, les chapitres le composant non plus.

Remarque : Composition et entits faibles


La composition permet d'exprimer une association analogue celle qui relie une entit faible une entit identifiante en modlisation E-A. L'entit de type faible correspond un objet partie et l'entit identifiante un objet composite.

5. Agrgation
Dfinition
L'agrgation est une association particulire utilise pour prciser une relation tout/partie (ou ensemble/lment). On parle d'association mrologique.

S. Crozat - UTC

33

Le niveau conceptuel : la modlisation des bases de donnes

Syntaxe

: Notation d'une agrgation en UML

Association d'agrgation

Remarque
La cardinalit, peut tre exprime librement, en particulier les instances de la classe lment peuvent tre associes plusieurs instances de la classe Ensemble, et mme de plusieurs classes. Il n'y a pas la relation de dpendance forte exprime par la composition.

Attention
L'agrgation se comporte en tout point comme une association classique, elle ajoute simplement une terminologie un peu plus prcise via la notion de tout/partie.

6. Classes abstraites
Dfinition : Classe abstraite
Une classe abstraite est une classe non instanciable. Elle exprime donc une gnralisation abstraite, qui ne correspond aucun objet existant du monde.

Attention : Classe abstraite et hritage


Une classe abstraite est toujours hrite. En effet sa fonction tant de gnraliser, elle n'a de sens que si des classes en hritent. Une classe abstraite peut tre hrite par d'autres classes abstraites, mais en fin de chane des classes non abstraites doivent tre prsentes pour que la gnralisation ait un sens.

Syntaxe

: Notation d'une classe abstraite en UML

On note les classes abstraites en italique.

Notation d'une classe abstraite en UML

34

S. Crozat - UTC

Le niveau conceptuel : la modlisation des bases de donnes

Exemple : Exemple de classe abstraite

Des chiens et des hommes Dans la reprsentation prcdente on a pos que les hommes, les femmes et les chiens taient des objets instanciables, gnraliss respectivement par les classes mammifre et humain, et mammifre. Selon cette reprsentation, il ne peut donc exister de mammifres qui ne soient ni des hommes, ni des femmes ni des chiens, ni d'humains qui ne soient ni des hommes ni des femmes.

7. Contraintes
Ajout de contraintes dynamiques sur le diagramme de classe
Il est possible en UML d'exprimer des contraintes dynamiques sur le diagramme de classe, par annotation de ce dernier.

S. Crozat - UTC

35

Le niveau conceptuel : la modlisation des bases de donnes

Syntaxe

: Notation de contraintes

Notation contraintes en UML

Exemple : Exemple de contraintes

Commandes

Mthode : Expressions formelles ou texte libre ?


Il est possible d'exprimer les contraintes en texte libre ou bien en utilisant des expressions formelles. On privilgiera la solution qui offre le meilleur compromis entre facilit d'interprtation et non ambigut. La combinaison des deux est galement possible si ncessaire.

36

S. Crozat - UTC

Le niveau conceptuel : la modlisation des bases de donnes

Mthode : Quelles contraintes exprimer ?


En pratique il existe souvent de trs nombreuses contraintes, dont certaines sont videntes, ou encore secondaires. Or l'expression de toutes ces contraintes sur un diagramme UML conduirait diminuer considrablement la lisibilit du schma sans apporter d'information ncessaire la comprhension. En consquence on ne reprsentera sur le diagramme que les contraintes les plus essentielles. Notons que lors de l'implmentation toutes les contraintes devront bien entendu tre exprimes. Si l'on souhaite prparer ce travail, il est conseill, lors de la modlisation logique, de recenser de faon exhaustive dans un tableau toutes les contraintes implmenter.

8. Contraintes sur les associations


Concernant les associations, il existe une liste de contraintes exprimes de faon standard.

Syntaxe

Notation des contraintes sur les associations

Dfinition : Inclusion
Si l'association inclue est instancie, l'autre doit l'tre aussi (la contrainte d'inclusion a un sens, reprsent par une flche).

Syntaxe
{IN}, galement note {Subset} ou {I}.

Dfinition : Et (galit, simultanit)


Si une association est instancie, l'autre doit l'tre aussi (quivalent une double inclusion).

Syntaxe
{AND}, galement note {=} ou {S} pour simultanit.

Dfinition : Exclusion
Les deux associations ne peuvent tre instancis en mme temps.

Syntaxe
{X}

Dfinition : Ou inclusif (couverture, totalit)


Au moins une des deux relations doit tre instancie.

Syntaxe
{OR}, galement not {T} pour totalit.

S. Crozat - UTC

37

Le niveau conceptuel : la modlisation des bases de donnes

Dfinition : Ou exclusif (partition)


Une exactement des deux relations doit tre instancie.

Syntaxe
{XOR}, galement note {+} ou {XT} ou {Partition}.

9. Paquetages
Dfinition : Package
Les paquetages (plus communment appels package) sont des lments servant organiser un modle. Ils sont particulirement utile ds que le modle comporte de nombreuses classes et que celles-ci peuvent tre tries selon plusieurs aspects structurants.

Syntaxe

Syntaxe des paquetages

Exemple

Exemple d'utilisation des packages

Mthode
On reprsente chaque classe au sein d'un package. Il est alors possible de faire une prsentation globale du modle (tous les packages), partielle (1 package) ou centre sur un package : l'on reprsente alors le package avec ses classes, ainsi que toutes les classes lies des autres packages.

38

S. Crozat - UTC

Le niveau conceptuel : la modlisation des bases de donnes

Prsentation partielle du modle centre sur un package

10. Strotype
Dfinition : Strotype UML
Un strotype UML est une syntaxe permettant d'ajouter de la smantique la modlisation des classes. Il permet de dfinir des types de classe, afin de regrouper conceptuellement un ensemble de classes ( l'instar d'une classe qui permet de regrouper conceptuellement un ensemble d'objets). C'est une mcanique de mta-modlisation : elle permet d'tendre le mta-modle UML, c'est dire le modle conceptuel du modle conceptuel.

Dfinition : Mta-modle
Un mta-modle est le modle d'un modle. Par exemple le mta-modle UML comprend les concepts de classe, attribut, association, cardinalit, composition, agrgation, contraintes, annotations, ... On mobilise ces concepts (on les instancie) pour exprimer un modle particulier suivant le formalisme UML. Les strotypes permettent donc d'ajouter au mta-modle UML standard, celui que tout le monde utilise, des concepts locaux pour enrichir le langage de modlisation que l'on utilise pour raliser des modles.

Syntaxe

Syntaxe d'un strotype en UML

Conseil : Strotypes spcifiques et strotypes standard


Un strotype spcifique enrichit le mta-modle UML, mais selon une smantique qui est propre celui qui l'a pos, non standard donc. La consquence est que pour un tiers, l'interprtation du strotype n'est plus normalise, et sera potentiellement plus facilement errone. Il convient donc de ne pas abuser de cette mcanique. Deux ou trois strotypes spcifiques, correctement dfinis, sont faciles transmettre, plusieurs dizaines reprsenteraient un nouveau langage complet apprendre pour le lecteur du modle. Il existe des strotypes fournit en standard par UML, ou communment utiliss par les modlisateurs. L'avantage est qu'il seront compris plus largement, au mme titre que le reste du mta-modle (ils ont une valeur de standard).

S. Crozat - UTC

39

Le niveau conceptuel : la modlisation des bases de donnes

C. Le modle E-A
Objectifs
Savoir-faire un modle E-A tendu. Savoir interprter un modle E-A tendu.

1. Le modle E-A en bref


Le modle E-A (ou E-R en anglais) permet la modlisation conceptuelle de donnes. Il correspond au niveau conceptuel de la mthode MERISE (mthode d'analyse informatique), le MCD (cf. Mthode MERISE Tome 1 : Principes et outils [Tardieu83], Mthode MERISE Tome 2 : Dmarche et pratiques [Tardieu85]). La conception E-A est issue des travaux de Chen [Chen76] et se fonde sur deux concepts principaux et un troisime sous-jacent : l'entit, l'association et l'attribut ou proprit.

2. Entit
Dfinition : Entit
Une entit est un objet du monde rel avec une existence indpendante. Une entit (ou type dentit) est une chose (concrte ou abstraite) qui existe et est distinguable des autres entits. L'occurrence dune entit est un lment particulier correspondant lentit et associ un lment du rel. Chaque entit a des proprits (ou attributs) qui la dcrivent. Chaque attribut est associ un domaine de valeur. Une occurence a des valeurs pour chacun de ses attributs, dans le domaine correspondant.

Syntaxe

Notation MERISE de l'entit

Notation Chen de l'entit

Remarque

Un attribut est atomique, c'est dire qu'il ne peut prendre qu'une seule valeur pour une occurence. Un attribut est lmentaire, c'est dire qu'il ne peut tre exprim par (ou driv) d'autres attributs. Un attribut qui identifie de faon unique une occurence est appel attribut cl.

40

S. Crozat - UTC

Le niveau conceptuel : la modlisation des bases de donnes

3. Association
Dfinition : Association
Une association (ou type dassociation) reprsente un lien quelconque entre diffrentes entits. Une occurrence dune association est un lment particulier de lassociation constitu dune et une seule occurrence des objets participants lassociation. On peut dfinir des attributs sur les associations. Le degr d'une association est le nombre d'entits y participant (on parlera notamment d'association binaire lorsque deux entits sont concernes).

Syntaxe

Notation MERISE de l'association

Notation Chen de l'association

Remarque
On peut avoir plusieurs associations diffrentes dfinies sur les mmes entits.

4. Cardinalit d'une association


Dfinition : Cardinalit d'une association binaire
Pour les associations binaires la cardinalit minimale (resp. maximale) d'une association est le nombre minimum (resp. maximum) d'occurrences de l'entit d'arrive associes une occurrence de l'entit de dpart.

Syntaxe

Notation de la cardinalit

Exemple

Livre-Auteur Le diagramme E-A prcdent exprime qu'un auteur peut avoir crit plusieurs livres (mais au moins un), et

S. Crozat - UTC

41

Le niveau conceptuel : la modlisation des bases de donnes

que tout livre ne peut avoir t crit que par un et un seul auteur.

Remarque : Trois grands types de cardinalit


Il existe trois grands types de cardinalit : Les associations 1:N (qui incluent les association 0,1:N) Les associations N:M Les associations 1:1 (qui incluent les association 0,1:1) Les autres associations peuvent toujours tre ramenes des associations N:M (dans le cas gnral) ou plusieurs associations 1:N (cas des associations 2:N ou 3:N par exemple).

5. Modle E-A tendu


Introduction
On peut tendre le modle E-A "classique" de faon accroitre son pouvoir de reprsentation. Cette extension du modle E-A permet de favoriser la dimension conceptuelle et de s'approcher des reprsentations objet, telles que UML.

a) Attributs composites
Un attribut peut tre compos hirarchiquement de plusieurs autres attributs.

Exemple
Un attribut Adresse est compos des attributs Numro, Rue, No_Appartement, Ville, Code_Postal, Pays.

Remarque
Le domaine d'un attribut composite n'est donc plus un domaine simple (entier, caractres, etc.).

b) Attributs multivalus
Tout attribut peut tre monovalu ou multivalu.

Exemple
Les ges des enfants dun employ.

Remarque
Un attribut multivalu n'est donc plus atomique.

c) Attributs driv
La valeur d'un attribut peut tre drive d'une ou plusieurs autres valeurs d'attributs.

Exemple
L'ge d'une personne peut tre driv de la date du jour et de celle de sa naissance.

Remarque
Un attribut driv n'est donc plus lmentaire.

d) Sous-type d'entit
Une entit peut-tre dfinie comme sous-type d'une entit plus gnrale.

42

S. Crozat - UTC

Le niveau conceptuel : la modlisation des bases de donnes

Exemple
Les entits Cadre et Technicien sont des sous-types de l'entit Employ.

Remarque
La notion de sous-type est quivalente la notion d'hritage en modlisation objet.

6. Entit de type faible


Certaines entits dites "faibles" n'existent qu'en rfrence d'autres entits dites "identifiantes". L'entit identifiante est appel "identifiant tranger" et l'association qui les unit "association identifiante".

Dfinition : Entit de type faible


Une entit de type faible, galement appele entit non identifie, possde une cl locale (appele identifiant relatif) qui permet d'identifier une de ses occurrences parmi l'ensemble des occurrences associes une occurrence de l'entit identifiante. La cl complte d'une entit faible est la concatnation de la cl de l'entit identifiante et de sa cl locale.

Exemple

Association identifiante L'entit Tche est compltement dpendante de l'entit Projet et sa cl locale (No_tche) n'est pas suffisante l'identifier de faon absolue.

Attention
Le reprage des entits de type faible est trs important dans le processus de modlisation, il permet de rflchir la meilleure faon d'identifier de faon unique les entits et donc de trouver les meilleures cls. Notons de plus que le reprage d'entits faibles aura une influence importante sur le modle relationnel rsultant.

S. Crozat - UTC

43

Le niveau conceptuel : la modlisation des bases de donnes

7. Illustration d'entits faibles


Exemple

Villes Dans le schma ci-avant, on remarque que l'entit "ville" est faible par rapport l'entit "dpartement", qui est faible par rapport "rgion", qui est faible par rapport "pays". Cela signifie que la cl de ville, son nom, est une cl locale et donc que l'on considre qu'il ne peut pas y avoir deux villes diffrentes avec le mme nom, dans un mme dpartement. Il est par contre possible de rencontrer deux villes diffrentes avec le mme nom, dans deux dpartements diffrents. De la mme faon chaque dpartement possde un nom qui l'identifie de faon unique dans une rgion, et chaque rgion possde un nom qui l'identifie de faon unique dans un pays. Si les entits n'taient pas faibles, l'unicit d'un nom de ville serait valable pour l'ensemble du modle, et donc, concrtement, cela signifierai qu'il ne peut exister deux villes avec le mme nom au monde (ni deux dpartements, ni deux rgions).

Remarque
Notons pour terminer que, puisque "pays" n'est pas une entit faible, sa cl "nom" est bien unique pour l'ensemble du modle, et donc cela signifie qu'il ne peut exister deux pays avec le mme nom au monde.

D. En rsum : Schma conceptuel


Schma conceptuel
Un schma conceptuel peut tre reprsent sous forme de modle E-A ou sous forme de diagramme de classe UML. Entit ou Classe Proprit ou Attribut Typ Multi-valu Compos Driv Mthode Paramtres Valeur de retour

44

S. Crozat - UTC

Le niveau conceptuel : la modlisation des bases de donnes

Association Association Verbe Cardinalit Hritage Hritage d'attributs Hritage de mthodes Composition (ou entit faible) Cardinalit

E. Bibliographie commente sur la modlisation UML


Complment : Outils de modlisation UML
Il existe de nombreux outils de modlisation UML. On pourra citer : Dia [w_dia] : logiciel Open Source et multi-plateformes facile d'usage (qui marche nanmoins mieux sur Linux que sur Windows). Objecteering [w_objecteering] (version gratuite). voir galement en Open Source : ArgoUML1 ou EclipseUML.2 (non test par l'auteur).

Complment : Modlisation UML


UML2 en action [Roques04] Pour un aperu plus dtaill des possibilits d'expression du diagramme de classe UML, lire le chapitre 7 : Dveloppement du modle statique (pages 133 163). On pourra notamment y trouver : L'association d'agrgation Les proprits d'association L'expression de rles dans les associations Les attributs de classe Les qualificatifs Les oprations (ou mthodes) Le chapitre donne de plus des conseils mthodologiques pour la conception (voir en particulier la synthse page 163). On pourra galement y trouver : Des principes de choix de modlisation entre attributs et classes et sur la segmentation des classes Des principes de slection des attributs (redondance avec les associations, avec les classes, etc.) Des principes de slection des associations Des principes de choix de cardinalit (notamment pour la gestion d'historisation) Des principes de slection des relations de gnralisation (hritage) Des principes d'introduction de mtaclasses (type)s

Complment : Rfrence UML en ligne


UML en Franais [w_uml.free.fr] Une trs bonne rfrence en ligne sur la modlisation UML, avec des cours, des liens vers la norme, etc. Le contenu dpasse trs largement l'usage d'UML pour la modlisation de BD (et ne fait d'ailleurs pas de rfrence prcise ce sous-ensemble particulier). On pourra consulter en particulier le chapitre sur les diagrammes de classe : http://uml.free.fr/cours/ip14.html
1 - http://argouml.tigris.org/ 2 - http://www.eclipsedownload.com/ S. Crozat - UTC

45

Le niveau conceptuel : la modlisation des bases de donnes

Complment : Tutoriel sur la modlisation UML.


UML en 5 tapes [w_journaldunet.com(1)] On consultera en particulier le tutoriel sur les diagrammes http://developpeur.journaldunet.com/tutoriel/cpt/010607cpt_umlintro.shtml de classe :

Complment : Conseils
Cinq petits conseils pour un schma UML efficace [w_journaldunet.com(2)]

Complment : Pratique
UML2 par la pratique [Roques09] (chapitre 3) Des explications, exemples et tudes de cas.

46

S. Crozat - UTC

Le niveau logique : la modlisation relationnelle


III -

III

Description du modle relationnel Le passage UML vers Relationnel Le passage E-A vers Relationnel Algbre relationnelle En rsum : Schma relationnel Bibliographie commente sur le modle relationnel

163 206 259 270 304 305

Le modle relationnel est aux fondements des SGBDR. Il a t - et continue d'tre - le modle thorique dominant pour la reprsentation logique des BD. Le modle relationnel permet de reformuler le modle conceptuel dans un formalisme beaucoup plus proche de l'implmentation informatique, bien que encore indpendant d'une solution technologique particulire. Le modle relationnel, et en particulier l'algbre relationnelle qui lui est associe, est aussi le fondement thorique du langage standard SQL, qui est utilis pour manipuler les donnes stockes dans une BD.

A. Description du modle relationnel


Objectifs
Connatre les fondements thoriques du modle relationnel. Comprendre le principe d'clatement des relations et de non-redondance.

1. Le niveau logique
Le niveau logique est le lien entre le niveau conceptuel et l'implmentation effective de l'application. Le modle conceptuel tant un modle formel, le modle logique a pour vocation d'tre galement un modle formel, mais spcifiant non plus la ralit existante ou recherche comme le modle conceptuel, mais les donnes telles qu'elles vont exister dans l'application informatique. Pour assumer cette fonction, le modle relationnel [Codd70] s'est impos en raction aux insuffisances des modles prcdents, les modles hirarchique et rseau, et de part la puissance de ses fondements mathmatiques. Encore aujourd'hui dominant le modle relationnel est un fondement indispensable la conception de bases de donnes. De plus le modle mergeant actuellement est le modle relationnel-objet, et ce dernier est bien une extension du modle relationnel qui le renforce et s'y appuie.

S. Crozat - UTC

47

Le niveau logique : la modlisation relationnelle

2. Le modle relationnel
Introduction
Le modle relationnel a t introduit par Codd [Codd70], en 1970 au laboratoire de recherche d'IBM de San Jos. Il s'agit d'un modle simple et puissant la base de la majorit des bases de donnes aujourd'hui.

Dfinition : Modle relationnel


Ensemble de concepts pour formaliser logiquement la description d'articles de fichiers plats, indpendamment de la faon dont ils sont physiquement stocks dans une mmoire numrique. Le modle relationnel inclut des concepts pour la description de donnes, ainsi que des concepts pour la manipulation de donnes. Les objectifs du modle relationnel, formuls par Codd, sont les suivants : Assurer l'indpendance des applications et de la reprsentation interne des donnes Grer les problmes de cohrence et de redondance des donnes Utiliser des langages de donnes bass sur des thories solides

Remarque : Extension du modle relationnel


Le modle relationnel est un standard, normalis par l'ISO travers son langage, le SQL. Il se veut nanmoins ds l'origine extensible, pour permettre de grer des donnes plus complexes que les donnes tabulaires. Le modle relationnel-objet est n de cette extension.

3. Domaine
Dfinition : Domaine
Ensemble, caractris par un nom, dans lequel des donnes peuvent prendre leurs valeurs.

Remarque
Un domaine peut-tre dfini en intension (c'est dire en dfinissant les proprits caractristiques des valeurs du domaine) ou en extension (c'est dire en numrant toutes les valeurs du domaine)

Exemple : Domaines dfinis en intention


Entier Rel Boolen Chane de caractres Montaire : rel avec deux chiffres aprs la virgule Date : chane de 10 caractres comprenant des chiffres et des tirets selon le patron "00-00-0000" Salaire : Montaire compris entre 15.000 et 100.000

Exemple : Domaines dfinis en extension


Couleur : {Bleu, Vert, Rouge, Jaune, Blanc, Noir} SGBD : {Hirarchique, Rseau, Relationnel, Objet, Relationnel-Objet}

4. Produit cartsien
Dfinition : Produit cartsien
Le produit cartsien, not "X", des domaines D1, D2, ... , Dn, not "D1 X D2 X ... X Dn" est l'ensemble des tuples (ou n-uplets ou vecteurs) <V1,V2,...,Vn> tel que Vi est une valeur de Di et tel que toutes les combinaisons de valeurs possibles sont exprimes.

48

S. Crozat - UTC

Le niveau logique : la modlisation relationnelle

Exemple
D1 = {A, B, C} D2 = {1, 2, 3} D1 X D2 = {<A,1>, <A,2>, <A,3>, <B,1>, <B,2>, <B,3>, <C,1>, <C,2>, <C,3>,}

5. Relation
Dfinition : Relation
Une relation sur les domaines D1, D2, ..., Dn est un sous-ensemble du produit cartsien "D1 X D2 X ... X Dn". Une relation est caractrise par un nom. Synonymes : Table, tableau

Syntaxe
On peut reprsenter la relation R sur les domaine D1, ... , Dn par une table comportant une colonne pour chaque domaine et une ligne pour chaque tuple de la relation.
D1 V1 ... V1 ... ... ... ... Vn ... Vn Dn

Tableau 1 Relation R

Remarque
Une relation est toujours dfinie en extension, par l'numration des tuples la composant.

6. Attribut et enregistrement
Dfinition : Attribut
On appelle attribut d'une relation, une colonne de cette relation. Un attribut est caractris par un nom et un domaine dans lequel il prend ses valeurs. Synonymes : Champs, Proprit, Colonne

Dfinition : Enregistrement
On appelle enregistrement d'une relation, une ligne de cette relation. Un enregistrement prend une valeur pour chaque attribut de la relation. Synonymes : Tuple, N-uplet, Vecteur, Ligne

Exemple
A 1 1 2 1 2 2 B

Tableau 2 Relation R La relation R comporte les deux attributs A et B et les trois enregistrements <1,1>, <1,2> et <2,2>

S. Crozat - UTC

49

Le niveau logique : la modlisation relationnelle

Remarque : Attribut, domaine, ordre


Un attribut se distingue d'un domaine car il peut ne comporter que certaines valeurs de ce domaine. Les colonnes de la relation ne sont pas ordonnes et elles ne sont donc repres que par le nom de l'attribut.

Remarque : Valeur nulle


Un enregistrement peut ne pas avoir de valeur pour certains attributs de la relation, parce que cette valeur est inconnue ou inapplicable, sa valeur est alors "null".

7. La relation Vol
Exemple
Numero AF3245 AF6767 KLM234 Compagnie AirFrance AirFrance KML 747 A320 727 Avion Dpart Paris Paris Paris Arrive OulanBator Toulouse Amsterdam Date 01082002 30072002 31072002

Tableau 3 Relation Vol

8. Cl
Dfinition : Cl
Une cl est un groupe d'attributs minimum qui dtermine un tuple unique dans une relation. Toute relation doit comporter au moins une cl, ce qui implique qu'une relation ne peut contenir deux tuples identiques.

Attention : Attributs de cls toujours valus


Afin d'tre dterminants pour l'identification d'un enregistrement, tous les attributs d'une cl doivent tre valus, c'est dire qu'aucun ne peut avoir de valeur "null".

Dfinition : Cl primaire
Si plusieurs cls existent dans une relation, on en choisit une parmi celles-ci. Cette cl est appele cl primaire. La cl primaire est gnralement choisie de faon ce qu'elle soit la plus simple, c'est dire portant sur le moins d'attributs et sur les attributs de domaine les plus basiques (entiers ou chanes courtes typiquement).

Dfinition : Cls candidates


On appelle cls candidates l'ensemble des cls d'une relation qui n'ont pas t choisies comme cl primaire (elles taient candidates cette fonction).

Remarque : Dtermination d'une cl


Dfinir un groupe d'attributs comme tant une cl ncessite une rflexion smantique sur les donnes composant ces attributs, afin de s'assurer de leur unicit.

Exemple

L'attribut numro de scurit sociale d'une relation personne est une bonne cl car son unicit est assure smantiquement. Le groupe d'attributs nom, prnom d'une relation personne est en gnral une mauvaise cl, car les homonymes existent.
S. Crozat - UTC

50

Le niveau logique : la modlisation relationnelle

9. Cl artificielle
Dfinition : Cl artificielle
S'il est impossible de trouver une cl primaire, ou que les cls candidates sont trop complexes, il est possible de faire appel une cl artificielle. Une cl artificielle est un attribut supplmentaire ajout au schma de la relation, qui n'est li aucune signification, et qui sert uniquement identifier de faon unique les enregistrements et/ou simplifier les rfrences de cls trangres.

Dfinition : Cl signifiante
Une cl est signifiante si elle n'est pas artificielle.

Remarque : Cl artificielle et niveau logique


Au niveau du modle logique, il faut viter la simplicit consistant identifier toutes les relations avec des cls artificielles, et ne rserver cet usage qu'aux cas particuliers.

Remarque : Cl artificielle et niveau physique, volutivit, maintenance et performance


Au niveau de l'implmentation physique par contre, il est courant que des cls artificielles soient utilises de faon systmatique. Du point de vue de l'volutivit de la BD, il existe toujours un risque qu'une cl non-artificielle perde sa proprit d'unicit ou de non-nullit. Du point de vue de la maintenance de la BD, il existe toujours un risque qu'une cl non-artificielle voit sa valeur modifie et dans ce cas, la rpercution de ce changement pour mettre jour toutes les rfrences peut poser problme. Du point de vue de la performance de la BD, les cls non-artificielles ne sont pas en gnral optimises en terme de type et de taille, et donc peuvent limiter les performances dans le cadre des jointures. Prcisons nanmoins qu'inversement les cls artificielles ont pour consquence de systmatiser des jointures qui auraient pu tre vites avec des cls primaires signifiantes.

Exemple : Problme d'volutivit pos par une cl signifiante


Soit le numro de scurit sociale la cl primaire d'une table d'une BD franaise, elle ne permettra pas d'entrer un individu non-franais issu d'un pays ne disposant pas d'un tel numro.

Exemple : Problme de maintenance pos par une cl signifiante


Soit le numro de scurit sociale la cl primaire d'une table d'une BD centrale dont les donnes sont exploites par d'autres tables d'autres BD qui viennent "piocher" dans cette BD pour leurs propres usages, sans que la BD centrale ne connaisse ses "clients". Soit une erreur dans la saisie d'un numro de scurit sociale dans la BD centrale, si ce numro est corrig, il faudrait (ce qui n'est pas possible dans notre cas) imprativement en avertir toutes les bases utilisatrices pour qu'elles mettent jour leurs rfrences.

Exemple : Problme de performance pos par une cl signifiante


Soit le numro de scurit sociale la cl primaire d'une table comptant un million d'enregistrements, ce numro est gnralement un nombre 13 chiffres ou une chane 13 caractres, ce qui dans les deux cas est suprieur au nombre 7 chiffres suffisant pour identifier tous les individus de la BD. Les performances seront donc toujours moins bonnes, lors des jointures, si une cl prend deux fois plus de place en mmoire que son optimum. Mais ajoutons que cette perte de performance n'a pas toujours de consquence sur la ralit perceptible par les utilisateurs de la BD. Inversement, soit une cl artificielle la cl primaire d'une table T1, par ailleurs rfrence par une autre table T2. Soit le numro de scurit sociale un attribut cl de T1. Si l'on veut par requte disposer des informations de T2 ainsi que du numro de scurit sociale de T1, alors il faudra faire une jointure, tandis que si ce numro signifiant avait t choisi comme cl primaire, cela n'aurait pas t ncessaire.

S. Crozat - UTC

51

Le niveau logique : la modlisation relationnelle

10. Lien entre relations


Le modle relationnel a pour objectif la structuration de donnes selon des relations. L'enjeu est de parvenir traduire un modle conceptuel en modle logique relationnel. Typiquement si le formalisme conceptuel utilis est le modle E-A, il faudra pouvoir traduire les entits et les associations en relations. Afin que la reprsentation des donnes ne soit pas redondante, il est ncessaire que les donnes soit rparties dans de multiples relations et non regroupes dans une seule. Or un modle conceptuel informe sur les liens entre les entits et associations, cela est traduit graphiquement par les lignes qui les relient. Il est donc fondamental que le modle relationnel puisse galement maintenir cette information, savoir les liens entre les donnes rparties dans les relations. Afin de reprsenter des liens entre relations dans un modle relationnel, la seule solution est de stocker l'information dans une relation, et donc que certains attributs d'une relation servent pointer sur d'autres relations.

Mthode : Lien
Le lien entre deux tuples A=>B de deux relations diffrentes est matrialisable par une rfrence depuis l'un des tuples, A, la cl primaire de l'autre tuple, B.

Exemple

Principe des liens entre relations L'attribut "Attribut2" de la relation "Relation1" rfrence l'attribut "Attribut1" de la relation "Relation2" ("Attribut1" est la cl primaire de "Relation2").

Remarque : Direction du lien


Dans un modle relationnel, un lien est toujours unidirectionnel.

11. clatement des relations pour viter la redondance


a) Relation redondante
Numero
1010 1011 1012 1013

Date
01012001 02012001 03012001 03012001

Gare1
Paris Paris Paris Lyon

Gare2
Lyon Limoges Madrid Limoges

Train
TGV TER TGV TER

Vitesse
450 200 450 200

Nom
Dupont Durand Dupont Dupont

Prnom
Jolle JeanPierre Jolle JeanPierre

Tableau 4 Relation VoyageEnTrain

Dans la reprsentation prcdente, les voyages en train sont reprsents dans une unique relation, qui contient des informations relatives au voyage lui mme (numro, date, dpart, arrive), mais aussi au train utilis pour le voyage (type de train et vitesse maximale), et au conducteur du train (nom et prnom). Cette reprsentation, bien que trs simplifie par rapport la ralit (on imagine facilement plusieurs dizaines d'attibuts possibles) est redondante. En effet chaque fois qu'un voyage mobilisera un train TGV, la vitesse maximale de 450 km/h devra aussi tre rappele. De mme pour chaque conducteur, il faudra rappeler le nom et le prnom. Cette redondance pose un certain nombre de problmes : Incohrence

52

S. Crozat - UTC

Le niveau logique : la modlisation relationnelle

Imaginons qu'une faute de saisie se glisse dans l'orthographe du nom de Dupont (un "d" la place du "t") pour le voyage 1010, il sera impossible de savoir que c'est la mme personne qui conduit le train pour le voyage 1012 (car Jolle Dupond peut exister et tre conductrice de train). Mise jour Imaginons que Jolle Dupont se marie et change de nom, il faudra changer cette information pour tous les voyages auxquels participe cette conductrice. Ceci est galement un risque d'erreur, qui renvoie au risque d'incohrence prcdemment mis en exergue. Perte d'information Imaginons que temporairement plus aucun voyage n'existe pour des TGV. Tous les enregistrements portant sur les TGV disparaitront. On perdra alors l'information comme quoi la vitesse d'un TGV est de 450 km/h, car cette information n'existera plus dans la base. Or l'information intrinsque au TGV, qui est sa vitesse maximale, n'est pas lie un voyage en particulier, et donc il est dommage de ne pas conserver cette information indpendamment du fait que les TGV sont ou non utiliss un instant t. Dpendance des insertions Imaginons que nous souhaitions reprsenter dans la base de donnes un nouveau conducteur, qui n'est encore affect aucun voyage. Il est impossible d'ajouter une telle information, car l'insertion d'une personne est dpendant de l'insertion d'un tuple complet portant galement sur un voyage. Il est videmment trs mauvais d'imaginer des solutions de contournement, telles que par exemple un tuple avec des valeurs nulles sur toutes les proprits sauf les nom et prnom.

b) Relation clate
Le bon usage du modle relationnel consiste donc clater les informations dans de multiples relations, afin de ne pas conserver de redondance. Dans le cas prcdent, on prfrera donc un dcoupage de la relation VoyageEnTrain en trois relations, Voyage, Modele et Conducteur, chacune reprsentant des informations correspondant des objets diffrents (notons l'ajout d'une cl artificielle numro pour la nouvelle relation conducteur, non identifiable de faon unique par les attributs nom et prnom).
Numero 1010 1011 1012 1013 Date 01012001 02012001 03012001 03012001 Paris Paris Paris Lyon Gare1 Lyon Limoges Madrid Limoges Gare2

Tableau 5 Relation Voyage


Modele TGV TER 450 200 Vitesse

Tableau 6 Relation Modele


Numero 1 2 Dupont Durand Nom Jolle JeanPierre Prnom

Tableau 7 Relation Conducteur

c) Relation clate avec liens


Dans cette reprsentation clate des donnes prcdemment regroupes dans la mme relation, on a perdu des informations importantes, relatives aux liens entre les voyages, les modles de train et les conducteurs. En effet on ne sait plus que le voyage numro 1010 s'effectue sur un TGV avec la conductrice Jolle Dupont. Il est indispensable, pour conserver l'ensemble des informations, de
S. Crozat - UTC

53

Le niveau logique : la modlisation relationnelle

matrialiser nouveau ces liens, en ajoutant des rfrences dans la relation Voyage, aux tuples de Modele et Conducteur.
Numero 1010 1011 1012 1013 Date 01012001 02012001 03012001 03012001 Gare1 Paris Paris Paris Lyon Gare2 Lyon Limoges Madrid Limoges Modele TGV TER TGV TER 1 2 1 2 Conducteur

Tableau 8 Relation Voyage

12. Cl trangre
Dfinition : Cl trangre
Groupe d'attributs d'une relation R1 devant apparatre comme cl dans une autre relation R2 afin de matrialiser un lien entre les tuples de R1 et les tuples de R2. La cl trangre d'un tuple rfrence la cl primaire d'un autre tuple.

Dfinition : Contrainte d'intgrit rfrentielle


Une cl trangre respecte la contrainte d'intgrit rfrentielle si sa valeur est effectivement existante dans la cl primaire d'un tuple de la relation rfrence, ou si sa valeur est "null". Une cl trangre qui ne respecte pas la contrainte d'intgrit rfrentielle exprime un lien vers un tuple qui n'existe pas et donc n'est pas cohrente.

Remarque : Suppression et mise jour en cascade


Pour que la cohrence soit conserve, lors de la suppression d'un tuple rfrenc par d'autres tuples, les tuples rfrenants doivent galement tre supprims. Sinon leur cl trangre pointerait vers des tuples qui n'existent plus et la contrainte d'intgrit rfrentielle ne serait plus respecte. Afin de maintenir la cohrence, il faut donc procder une suppression en cascade (sachant que les tuples rfrenant peuvent galement tre rfrencs par ailleurs). La problmatique est la mme lors d'une mise jour de la cl primaire d'un tuple : il faut alors mettre jour toutes les cls trangres rfrenant ce tuple. Notons que certains SGBD peuvent se charger automatiquement de ces suppressions et mises jour en cascade.

13. Schma relationnel


Dfinition : Schma d'une relation
Le schma d'une relation dfinit cette relation par intension. Il est compos du nom de la relation, de la liste de ses attributs avec les domaines respectifs dans lesquels ils prennent leurs valeurs, de la cl primaire, et des cls trangres.

Dfinition : Schma relationnel d'une base de donne


Le schma relationnelle d'une BD est la dfinition en intention de cette BD (par opposition l'instance de la BD qui est une extension de la BD). Il est compos de l'ensemble des schmas de chaque relation de la BD.

Syntaxe

: Relation

Relation (Attribut1:Domaine1, Attribut2:Domaine2, ... , AttributN:DomaineN)

54

S. Crozat - UTC

Le niveau logique : la modlisation relationnelle

La relation "Relation" contient N attributs chacun dfini sur son domaine.

Syntaxe

: Cl primaire

Relation (#Attribut1:Domaine1, ... , #AttributM:DomaineM, ... , AttributN:DomaineN) La cl de la relation "Relation" est compose des attributs "Attribut1" "AttributM" (attribut prcds de # ou bien souligns) En gnral on note la cl primaire en premier dans la relation.

Syntaxe

: Cl trangre

Relation1 (..., AttributM=>Relation2, ... , AttributN=>Relation2) La relation "Relation1" comporte une cl trangre (compose des attributs "AttributM" "AttributN") rfrenant la cl primaire de "Relation2". Bien sr il peut exister plusieurs cls trangres vers plusieurs relations distinctes. Une cl trangre et sa cl primaire rfrence sont toujours composes du mme nombre d'attributs. Il n'est pas ncessaire de prciser les domaines des attributs appartenant la cl trangre car ce sont forcment les mmes que ceux de la cl primaire rfrence. Il n'est pas non plus en gnral ncessaire de prciser dans le schma relationnel quels attributs de la cl trangre rfrencent quels attributs de la cl primaire (cela est gnralement vident) mais il est possible de la faire on notant "Attribut=>Relation.Attribut". En gnral on note les cls trangres en dernier dans la relation, sauf pour les cls trangres qui font partie de la cl primaire (cls identifiantes).

Attention : Cls candidates


On ne reprsente pas, en gnral, sur le schma relationnel les cls candidates afin de ne pas alourdir la notation. On recommande nanmoins de dresser la liste des cls candidates (non choisies comme cls primaires) en annotation du schma relationnel afin d'en conserver la mmoire. On peut nanmoins noter les cls candidates en les soulignant en pointill.

14. Exemple de schma relationnel simple pour la gographie


Exemple
Personne (#Numero:Entier, Nom:Chane, Prnom:Chane, LieuNaissance=>Ville) Pays (#Nom:Chane, Population:Entier, Superficie:Rel, Dirigeant=>Personne) Rgion (#Pays=>Pays, #Nom:Chane, Superficie, Dirigeant=>Personne) Ville (#CodePostal:CP, Nom:Chane, Pays=>Rgion.Pays, Rgion=>Rgion.Nom, Dirigeant=>Personne) Le schma relationnel prcdent dcrit : Des personnes Elles sont identifies par un numro qui est en fait une cl artificielle. En effet, mme une cl compose de tous les attributs (Nom, Prnom, LieuNaissance) laisse une possibilit de doublons (homonymes ns dans la mme ville). La cl trangre LieuNaissance fait rfrence la relation Ville, et plus prcisment sa cl primaire CodePostal, ce qui est est laiss implicite car vident. Des pays Ils sont identifis par leur nom, puisque deux pays ne peuvent avoir le mme nom.

S. Crozat - UTC

55

Le niveau logique : la modlisation relationnelle

Les pays sont dirigs par des personnes, et ce lien est matrialis par la cl trangre Dirigeant. Des rgions Elles font partie d'un pays et ont un nom. Deux rgions de pays diffrents pouvant avoir le mme nom, il faut utiliser une cl primaire compose la fois du nom de la rgion et du nom du pays, qui est une cl trangre (le nom est appel cl locale car il n'est pas suffisant pour identifier un tuple de la relation Rgion, et la cl trangre vers la relation Pays est appele cl identifiante). Des villes Elles sont identifi par un code postal qui est unique dans le monde (en utilisant le prfixe de pays de type "F-60200"). Ce code postal pour domaine CP qui est une chane compose d'une ou deux lettres, d'un tiret, puis d'une srie de chiffres. Le lien d'appartenance entre une ville et une rgion est matrialis par la cl trangre compose des deux attributs Pays et Rgion. Cette cl rfrence la cl primaire de la relation Rgion, galement compose de deux attributs. Pour clairement expliciter les rfrences (bien que smantiquement la dnomination des attributs ne laisse pas de place au doute) on utilise la syntaxe Rgion.Pays et Rgion.Nom.

B. Le passage UML vers Relationnel


Objectifs
Savoir-faire le passage d'un schma conceptuel UML un schma relationnel. Connatre les choix possibles pour les cas dlicats (hritage, relation 1:1, etc.) et savoir-faire les bons choix.

Afin de pouvoir implmenter une base de donnes, il faut pouvoir traduire le modle conceptuel en modle logique. Cela signifie qu'il faut pouvoir convertir un modle UML en modle relationnel. Les modles conceptuels sont suffisamment formels pour ce passage soit systmatis.

1. Transformation des classes


Mthode : Classe
Pour chaque classe C non abstraite, on cre une relation R dont le schma est celui de la classe. La cl primaire de R est une des cls de C.

Remarque
Les classes abstraites sont ignores ce stade, et n'tant pas instanciables, ne donnent gnralement pas lieu la cration de relation.

2. Transformation des associations


Mthode : Association 1:N
Pour chaque association binaire A de type 1:N (le cas chant 0,1:N) entre les classes S et T (reprsents par les relations RS et RT respectivement) on inclut dans la dfinition de RT comme cl trangre la cl de RS.

Mthode : Association M:N et associations de degr suprieur 2


Pour chaque association binaire A de type M:N ou pour chaque association A de degr suprieur 2, on

56

S. Crozat - UTC

Le niveau logique : la modlisation relationnelle

cre une nouvelle relation RA pour reprsenter A. On met dans RA comme cl trangre, les cls de toutes les relations correspondant aux classes participant A et dont la concatnation formera sa cl.

Mthode : Association 1:1


Pour chaque association binaire A de type 1,1:1,1 ou 1,1:1,0 entre les classes S et T (reprsents par les relations RS et RT respectivement) on substitut dans la dfinition de RS l'ventuelle cl primaire (si RS tait identifie) par la cl primaire de RT qui est galement dfinie comme cl trangre vers RT. Notons que dans le cas d'une association 1,1:1,1 RT peut-tre choisi la place de RS pour accueillir la cl trangre. Pour chaque association binaire A de type 0,1:0,1 entre les classes S et T (reprsents par les relations RS et RT respectivement) on inclut dans la dfinition de RS comme cl trangre la cl de RT. La cl trangre vers RT incluse dans RS est galement dfinie comme tant unique, afin d'assurer la cardinalit maximum de 1. Notons qu'il n'tait pas possible dans ce cas 0,1:0,1 que la cl trangre vers RT incluse dans RS soit galement la cl primaire, car la cardinalit de 0 supposerait que la cl primaire puisse tre "null", ce qui est illgal pour une cl.

Mthode : Cardinalit minimale 0 ou 1


Selon que la cardinalit minimale est 0 ou 1 (ou plus) du ct de la relation rfrenante on ajoutera ou non une contrainte de non nullit sur la cl trangre. Selon que la cardinalit minimale est 0 ou 1 (ou plus) du ct de la relation rfrence on ajoutera ou non une contrainte d'existence de tuples rfrenant pour chaque tuple de la relation rfrence.

Rappel : Agrgation
Les association de type agrgation se traite de la mme faon.

3. Remarques concernant la transformation des associations 1:1


Remarque : Choix de la relation rfrenante pour la traduction de l'association 1:1
La traduction d'une association 1:1 ou 0..1:0..1 conduit devoir faire un choix entre les deux classes composant l'association, afin de dterminer laquelle est rfrence de laquelle est rfrenante. Ce choix peut-tre arbitraire, mais peut galement tre clair par la smantique des relations, et l'on choisira alors celle qui est de plus faible importance du point de vue de la modlisation pour rfrencer (et donc intgrer la cl trangre).

Exemple : Exemple de choix de la relation rfrenante pour une relation 1:1


Soit deux classes, "homme" et "femme" et une association "mariage" de cardinalit 1:1 (hommes et femmes sont donc obligatoirement maris) unissant ces deux classes. Les classes "homme" et "femme" sont identifies par un attribut "nom". S'il serait plus galant de choisir "femme" comme classe principale, il sera dans la pratique plus opportun de choisir "homme", car le "nom" de la classe "homme" sera effectivement une proprit pertinente pour la classe "femme" et donc aura plus de sens en tant que cl primaire et en tant que cl trangre (dans le cas inverse, la cl de l'homme serait le nom de sa femme, ce qui ne correspond pas la ralit administrative du mariage). On choisira donc plutt la reprsentation : homme (#nom) femme (#nomMariage=>homme, nomJeuneFille) avec nomJeuneFille cl Si l'association avait t de cardinalit 0..1:0..1 (certains hommes et femmes ne sont pas maris), le mme choix se serait impos et l'on aurait abouti au rsultat suivant: homme (#nom) femme (#nomJeuneFille, nomMariage=>homme) avec nomMariage unique

S. Crozat - UTC

57

Le niveau logique : la modlisation relationnelle

Remarque : Fusion des relations dans le cas de la traduction de l'association 1:1


Il est possible, dans le cas d'une association 1:1 de dcider de fusionner les deux relations en une seule. La relation rsultante est alors compose de l'ensemble des attributs de chacune des deux relations, en choisissant l'une des deux cls de l'une des deux relations pour identifier la nouvelle relation. Ce choix sera conduit par une apprciation du rapport entre : La complexit introduite par le fait d'avoir deux relations l ou une suffit, La pertinence de la sparation des deux relations d'un point de vue smantique, Les pertes de performance dues l'clatement des relations, Les pertes de performance dues au fait d'avoir une grande relation, Les questions de scurit et de suret factorises ou non au niveau des deux relations, etc. Dans le doute il est prfrable d'adopter l'approche systmatique consistant sparer les deux relations.

4. Transformation des attributs et mthodes


Mthode : Attributs simples
Pour chaque attribut lmentaire et monovalu A d'une classe E (idem pour les associations), on cre un attribut correspondant A sur la relation RE correspondant E.

Mthode : Attributs composites


Pour chaque attribut composite C, comprenant N sous-attributs, d'une classe E (idem pour les associations), on cre N attributs correspondants C sur la relation RE correspondant E.

Mthode : Attributs multivalus


Pour chaque attribut multivalu M d'une classe E (idem pour les associations), on cre une nouvelle relation RM qui comprend un attribut monovalu correspondant M plus la cl de RE (relation reprsentant E). La cl de RM est la concatnation des deux attributs.

Mthode : Attributs drivs et mthodes


On ne reprsente pas en gnral les attributs drivs ni les mthodes dans le modle relationnel, ils seront calculs dynamiquement soit par des procdures internes la BD (procdures stockes), soit par des procdures au niveau applicatif. On peut nanmoins dcider (pour des raisons de performance essentiellement) de reprsenter l'attribut driv ou la mthode comme s'il s'agissait d'un attribut simple, mais il sera ncessaire dans ce cas d'ajouter des mcanismes de validation de contraintes dynamiques (avec des triggers par exemple) pour assurer que la valeur stocke volue en mme temps que les attributs sur lesquels le calcul driv porte. Notons qu'introduire un attribut driv ou un rsultat de mthode dans le modle relationnel quivaut introduire de la redondance, ce qui est en grnal dconseill, et ce qui doit tre dans tous les cas contrl.

5. Transformation des classes d'association


Mthode : Classe d'association 1:N
Les attributs de la classe d'association sont ajouts la relation issue de la classe ct N.

Mthode : Classe d'association N:M


Les attributs de la classe d'association sont ajouts la relation issue de l'association N:M. Si la classe d'association possde une cl, celle-ci est concatne aux cls trangres composant dj la cl primaire de la relation d'association.

58

S. Crozat - UTC

Le niveau logique : la modlisation relationnelle

Mthode : Classe d'association 1:1


Les attributs de la classe d'association sont ajouts la relation qui a t choisie pour recevoir la cl trangre. Bien entendu si les deux classes ont t fusionnes en une seule relation, les attributs sont ajoute celle-ci.

6. Transformation des compositions


Remarque
Une composition est transforme comme une association 1:N, mais on ajoute la cl de la classe partie (dite cl locale) la cl trangre vers la classe composite.

Mthode : Compositions
Soit la composition entre la classe composite C et la classe partie P (reprsents par les relations RC et RP respectivement) on inclut dans la dfinition de RP comme cl trangre la cl de RC. La cl de RP est redfinie comme la concatnation de la cl de P (cl locale) avec la cl trangre vers RC.

Remarque : Composition et entits faibles en E-A


Une composition est transforme selon les mmes principes qu'une entit faible en E-A.

7. Transformation de la relation d'hritage


Le modle relationnel ne permet pas de reprsenter directement une relation d'hritage, puisque que seuls les concepts de relation et de rfrence existent dans le modle. Il faut donc appauvrir le modle conceptuel pour qu'il puisse tre reprsent selon un schma relationnel. Trois solutions existent pour transformer une relation d'hritage : Reprsenter l'hritage par une rfrence entre la classe mre et la classe fille. Reprsenter uniquement les classes filles par des relations. Reprsenter uniquement la classe mre par une relation.

Mthode : Choisir le bon mode de transformation d'une relation d'hritage


La difficult consiste donc pour chaque relation d'hritage choisir le bon mode de transformation, sachant que chaque solution possde ses avantages et ses inconvnients.

S. Crozat - UTC

59

Le niveau logique : la modlisation relationnelle

Modedetrans formation

Limite

Casd'usage

Exemple

Vue

Parrfrence

EtudiantetEm ployehritentde Personne(un Adapttousles tudiantpeut tre Lourdeurliela casd'hritageni employetles ncessitdere exclusif,nicom propritsdes prsenterles pletpar tudiantsetdes donnesdes ticulirementad employssont classesfillessur aptlorsquela diffrentes,de deuxrelations classemren'est plusdesper pasabstraite. sonnespeuvent existerquine sontniemploy s nitudiants). Hommeet Femmehritent dePersonne(un tupledeHomme Adaptl'hrit Redondancelie nepeutpastre ageexclusifpar l'existancesim untuplede ticulirementad ultanedetuples FemmeetPer aptlorsquela dansplusieurs sonneestab classemreest classesfilles straite,iln'existe abstraite. pasdePersonne quinesoitniun Homme,niune Femme).

Unevuedoit tre crepour chaqueclasse fille(ralisantla jointureavecla classemre).

Parlesclasses filles

Unevuedoit tre crepourunir lestuplesdes classesfilleset retrouverla classemre.

Parlaclasse mre

ResponsableetS alarihritent deEmploy (un Nullitsys responsableest tmatiquepour salarietaucun Unevuedoit tre lesattributsd'une Adaptl'hrit attributn'estsp crepour classe agecompletpar cifiqueniRe chaqueclasse fillen'existantpas ticulirementad sponsable,ni fille(ralisantla pouruneautre aptlorsquela Salari,deplusil restrictionetla classefille(et classemren'est existedesstagi projectiondepuis pourlaclasse pasabstraite. airesparexemple larelationunique mresicelleci cre). quisontjuste n'estpasab employs,mais straite) nonsalariset nonrespons ables) Tableau 9 Avantages et inconvnients de chaque transformation

60

S. Crozat - UTC

Le niveau logique : la modlisation relationnelle

Modede transform ation Par rfrence Parles classes filles Parla classe mre

Classe mreab straite

Classe mrenon abstraite

Hritage exclusif

Hritage nonex clusif

Hritage complet

Hritage presque complet

Hritage noncom plet

+ =

+ +

= + +

= =

= +

= = =

= =

Tableau 10 Choix de la bonne transformation

8. Transformation de la relation d'hritage par rfrence


Mthode : Hritage reprsent par une rfrence
1. Chaque classe, mre ou fille, est reprsente par une relation. 2. La cl primaire de la classe mre est utilise pour identifier chacune de ses classes filles : cette cl tant pour chaque classe fille la fois la cl primaire et une cl trangre vers la classe mre. 3. Une vue est cre pour chaque classe fille en ralisant une jointure sur la classe mre.

Remarque

Si une classe fille a une cl primaire dfinie dans le modle conceptuel, cette cl n'est pas retenue pour tre la cl primaire dans le modle relationnel, tant donn que c'est la cl trangre rfrence la classe mre qui est retenue. La cardinalit d'un lien entre une classe fille et une classe mre est (1,1):(0,1) : En effet toute instance fille rfrence obligatoirement une et une seule instance mre (pas d'hritage multiple) et toute instance mre est rfrence une ou zro fois (zro fois si un objet peut tre directement du type de la classe mre) par chaque insatnce fille .

Exemple : Hritage reprsent par une rfrence


Soit la classe A avec la cl K et les attributs A1 et A2. Soit la classe B, classe fille de A, comprenant la cl K' et les attributs B1 et B2. Le modle relationnel correspondant selon cette transformation est : A (#K, A1, A2) B (#K=>A, K', B1, B2) vB = Jointure (A, B, A.K=B.K)

Attention : Classe mre non abstraite


Cette solution est particulirement adapte lorsque la classe mre n'est pas abstraite, car cela en autorise l'instanciation sans aucun bruit dans la relation li aux classes filles. Par contre si la classe mre est abstraite il faut introduire une contrainte dynamique complexe pour imposer la prsence d'un tuple rfrenant dans une des classes filles. Ainsi dans l'exemple prcdent, un A peut tre instanci en toute indpendance par rapport la relation B.

9. Transformation de la relation d'hritage par les classes filles


Mthode : Hritage absorb par les classes filles
1. Chaque classe fille est reprsent par une relation, la classe mre n'est pas reprsente (si elle est bien abstraite). 2. Tous les attributs de la classe mre sont rpts au niveau de chaque classe fille.
S. Crozat - UTC

61

Le niveau logique : la modlisation relationnelle

3. La cl primaire de la classe mre est utilise pour identifier chacune de ses classes filles. 4. Une vue est cre pour reprsenter la classe mre (par union des tuples des classes filles).

Remarque

Si une classe fille a une cl primaire au niveau du MCD, cette cl n'est pas retenue, et c'est bien la cl hrite de la classe mre qui devient la cl primaire (mais la cl est bien entendu maintenue comme cl candidate).

Exemple : Hritage absorb par les classes filles


Soit la classe abstraite A avec la cl K et les attributs A1 et A2. Soit la classe B, classe fille de A avec les attributs B1 et B2. Soit la classe C, classe fille de A avec les attributs C1 et C2 Le modle relationnel correspondant selon cette transformation est : B (#K, A1, A2, B1, B2) C (#K, A1, A2, C1, C2) vA = Union (Projection (B, K, A1, A2), Projection (C, K, A1, A2)) Si A n'avait pas t abstraite elle aurait donn naissance une relation A possdant les attributs A1 et A2 et qui n'aurait alors contenu que les tuples qui ne sont ni des B ni des C.

Attention : Hritage exclusif


Cette solution est optimum dans le cas d'un hritage exclusif, c'est dire si aucun objet d'une classe fille n'appartient aussi une autre classe fille. Dans le cas contraire, le problme est que des redondances vont tre introduites puisqu'un mme tuple devra tre rpt pour chaque classe fille laquelle il appartient.

Attention : Classe mre abstraite


Cette solution est adapte lorsque la classe mre est abstraite, car elle permet de ne pas matrialiser cette classe mre par une relation. En revanche dans le cas o la classe mre n'est pas abstraite, la solution introduit de la redondance, car toutes les instances d'une classe fille doivent galement tre copies dans la classe mre.

10. Transformation de la relation d'hritage par la classe mre


Mthode : Hritage absorb par la classe mre
1. La classe mre est reprsente par une relation, mais ses classes filles ne sont pas reprsentes par des relations. 2. Tous les attributs de chaque classe fille sont rintgrs au niveau de la classe mre. 3. La cl primaire de la classe mre est utilise pour identifier la relation. 4. Un attribut supplmentaire, dit de discrimination, est ajout la classe mre, afin de distinguer les tuples des diffrentes classes filles : Cet attribut est de type numration et a pour valeurs possibles les noms des diffrents classes filles. Afin de grer l'hritage non exclusif (un objet peut tre de plusieurs classes filles la fois), le domaine de l'attribut de discrimination, peut tre tendu des combinaisons de noms des diffrents classes filles. Si la classe mre n'est pas abstraite, une valeur supplmentaire est ajoute au domaine (ou bien l'on peut autoriser la valeur null qui dsignera alors un objet de la classe mre). 5. Chaque classe fille est reprsente par une vue qui slectionne les tuples de la classe mre qui appartiennent la classe fille et les projette sur les attributs de la classe fille.

Remarque

Si une classe fille a une cl primaire propre, cette cl sera rintgre la classe mre, au mme titre qu'un autre attribut, mais bien entendu n'officiera pas en tant que cl primaire (et en gnral pas non plus en tant que cl candidate car elle pourra contenir des valeurs nulles).

62

S. Crozat - UTC

Le niveau logique : la modlisation relationnelle

Exemple : Hritage absorb par la classe mre


Soit la classe A avec la cl K et les attributs A1 et A2. Soit la classe B, classe fille de A avec les attributs B1 et B2. Soit la classe C, classe fille de A avec les attributs C1 et C2 Le modle relationnel correspondant selon cette transformation est : A (#K, A1, A2, B1, B2, C1, C2, D:{'B','C','BC'}) vB = Projection (Restriction (A, D='B' ou 'BC'), K, A1, A2, B1, B2) vC = Projection (Restriction (A, D='C' ou 'BC'), K, A1, A2, C1, C2) Si l'on pose que A n'est pas abstraite, alors un tuple sera un A s'il a la valeur null pour sa proprit D. Si l'on pose que A est abstraite, on ajoutera la contrainte NOT NULL la proprit D.

Remarque : Classe mre non abstraite


Cette solution est particulirement adapte lorsque la classe mre n'est pas abstraite, car cela en autorise l'instanciation naturellement, en ne renseignant pas l'attribut de discrimination. Lorsque la classe mre est abstraite il est moins naturel de disposer d'une table associe cette classe (et l'on pensera ajouter la contrainte NOT NULL sur l'attribut de discrimination).

Conseil : Hritage complet


Cette solution est optimum dans le cas d'un hritage complet, c'est dire si les classes filles ne dfinissent pas d'attributs autre que ceux hrits. Dans le cas contraire cela engendre des valeurs null. En pratique l'hritage complet est rare, mais nombre d'hritages le sont presque et pourront alors tre raisonnablement grs selon cette approche, a fortiori si la classe mre n'est pas abstraite.

Attention
Afin de dterminer si un hritage est complet ou non, il faut surtout regarder les associations portant sur les classes filles, ce sont elles qui poseront le plus de problme un fois en relationnel ( cause de l'intgrit rfrentielle).

Conseil : Autre reprsentation de la discrimination


Si l'hritage concerne un nombre lev de classes filles et qu'il est principalement non exclusif alors le domaine de l'attribut de discrimination peut impliquer une combinatoire importante de valeurs. Pour contourner cette lourdeur il est possible d'utiliser, en remplacement, un attribut de domaine boolen pour chaque classe fille spcifiant si un tuple est un objet de cette classe. Dans cette configuration la classe mre sera logiquement considre comme non abstraite et un objet appartiendra la classe mre si tous ses attributs de discrimination valent "faux". Seule une contrainte dynamique permettra de dfinir la classe mre comme abstraite, en prcisant que les attributs de discrimination ne peuvent tre tous "faux".

11. Exemple de transformation d'une relation d'hritage

S. Crozat - UTC

63

Le niveau logique : la modlisation relationnelle

Exemple
Soit le modle UML suivant :

Reprsentation de documents Il existe trois faons de traduire la relation d'hritage : par rfrence, par absorption par les classes filles, par absorption par la classe mre.

Remarque : Type d'hritage


Si une thse peut galement tre un livre (c'est le cas si une thse peut-tre publie comme un livre par exemple), alors l'hritage n'est pas exclusif puisque un mme document peut tre une thse et un livre. L'hritage n'est pas non plus complet, puisque l'on observe que les thses et les livres ont des attributs qui ne sont pas communs (la discipline pour la thse et l'diteur pour le livre). Mais l'on peut considrer qu' il est presque complet, car il n'y a qu'un attribut par classe fille de diffrence. On pourrait chercher appliquer le cas gnral (ni exclusif, ni complet) et appliquer une traduction de l'hritage par rfrence. Nanmoins, comme la classe mre abstraite, l'hritage par rfrence est un mauvais choix. La meilleure solution est donc ici un hritage par la classe mre . Observons nanmoins les avantages et inconvnients que chacun des trois choix porterait.

a) Hritage reprsent par une rfrence


Document(#Titre:Chane, Auteur:Chane) These(#Titre=>Document, Discipline:Chane) Livre(#Titre=>Document, Editeur:Chane) vThese = Jointure (Document, These, Document.Titre=These.Titre) vLivre = Jointure (Document, Livre, Document.Titre=Livre.Titre)

Remarque : Avantages du choix


Il n'y a ni redondance ni valeur nulle inutile dans les relations These et Livre.

Remarque : Inconvnient du choix


Il est relativement lourd de devoir crer un tuple dans Document pour chaque tuple dans These ou Livre, alors que la relation Document ce porte que l'information concernant l'auteur, juste pour assurer les cas, par ailleurs plutt rare dans la ralit, o les thses sont publies sous forme de livres. De plus la classe Document tant abstraite, il ne devra jamais y avoir de tuple dans document qui n'a pas de tuple correspondant dans Livre ou These. Ceci n'est pas contrlable directement en relationnel et devra donc tre vrifi au niveau applicatif (ou bien la classe ne devra plus tre considre comme abstraite).

64

S. Crozat - UTC

Le niveau logique : la modlisation relationnelle

b) Hritage absorb par les classes filles


These(#Titre, Discipline:Chane, Auteur:Chane) Livre(#Titre, Editeur:Chane, Auteur:Chane) vDocument = Union (Projection (These, Titre, Auteur), Projection (Livre, Titre, Auteur))

Remarque : Avantages du choix


Il est plus simple que le prcdent, puisque la reprsentation d'une thse ou d'un livre ne ncessite plus que d'ajouter un seul tuple. Il vite donc les cls trangres, toujours plus dlicates grer d'un point de vue applicatif.

Remarque : Inconvnient du choix


Lorsqu'une thse est publie sous la forme d'un livre, alors une information sera duplique (l'auteur), ce qui introduit de la redondance. Si une telle redondance peut-tre tolre pour des raisons de simplification ou de performance (si on considre que le cas est rare par exemple et donc que l'hritage est "presque" exclusif), il sera nanmoins ncessaire d'assurer son contrle par un moyen supplmentaire. Dans le cas gnral, il n'est pas souhaitable de tolrer une telle redondance.

c) Hritage absorb par la classe mre


Document(#Titre, Discipline:Chane, Editeur:Chane, Auteur:Chane, Type:{These|Livre|These+Livre}) vThese = Projection (Restriction (Document, Type='These' ou 'These+Livre'), Titre, Discipline, Auteur) vLivre = Projection (Restriction (Document, Type='Livre' ou 'These+Livre'), Titre, Editeur, Auteur)

Remarque : Avantages du choix


Il est plus simple que le premier, puisque la reprsentation d'une thse ou d'un livre ne ncessite plus que d'ajouter un seul tuple. Il vite donc les cls trangres, et il n'introduit pas de redondance.

Remarque : Inconvnient du choix


Puisqu'il est rare que les thses soient publies sous forme de livre alors les tuples de la relation Document contiendront la plupart du temps une valeur nulle soit pour l'diteur soit pour la discipline. Cette introduction de valeurs nulles est moins problmatique que l'introduction de redondance observe dans le cas prcdent, aussi elle peut-tre plus facilement tolre. On considre alors que l'hritage est "presque" complet, puisque seuls deux attributs sont distingus.

d) En conclusion
Conseil
L'hritage est toujours dlicat traduire en relationnel, ce qui est dommage car son pouvoir de reprsentation conceptuel est fort. Un conseil pour assumer une gestion correcte de la traduction de la relation d'hritage serait d'appliquer la lettre les rgles de transformation, ce qui conduira le plus souvent l'algorithme suivant : SI classe mre abstraite ALORS SI hritage exclusif ALORS par les classes filles SINON SI hritage presque complet ALORS par la classe mre SINON problme (aucune bonne solution, chercher la moins mauvaise) SINON SI hritage complet ALORS hritage par la classe mre

S. Crozat - UTC

65

Le niveau logique : la modlisation relationnelle

SINON hritage par rfrence

Attention : Penser aux vues !


Il est important de bien penser ajouter les vues permettant de retrouver le schma initialement recherch.

12. Hritage et cl primaire


Attention
Dans tous les cas, notamment en cas d'hritage plusieurs niveaux, c'est la cl primaire de la classe la plus gnrale qui est retenue pour identifier les classes filles hritant directement ou indirectement de cette classe.

Exemple
Ainsi si C hrite de B qui hrite de A, c'est la cl de A qui permettra d'identifier les classes A, B et C, et ce quelque soit le mode de transformation retenu.

13. Liste des contraintes


Mthode : Contraintes exprimes sur le diagramme
Les contraintes exprimes sur le diagrammes sont reportes dans un tableau qui accompagnera le modle logique.

Mthode : Extension des contraintes exprimes


On s'attachera lors de la modlisation logique exprimer l'ensemble des contraintes dynamiques pesant sur le modle, mme celles qui ont t considres comme secondaires ou videntes lors de la modlisation conceptuelle.

66

S. Crozat - UTC

Le niveau logique : la modlisation relationnelle

14. Correspondance entre UML et relationnel


ModleUML Classeinstanciable Classeabstraite Objet Attributsimple Attributcomposite Attributmultivalu Attributdriv Mthode Association1:N AssociationN:M Associationdedegr3ousuprieur Composition Classed'association Occurenced'uneassociation Hritage Relation Rien Nuplet Attributatomique Ensembled'attributs Relation Procdurestock eoucontraintedynamique Procdurestock e Attributs Relation Relation Attributs Attributs Nuplet Vues Modlerelationnel

Tableau 11 Passsage UML vers Relationnel

C. Le passage E-A vers Relationnel

Le passage E-A vers relationnel est trs similaire au passage UML vers relationnel. Les rgles dcrites ciaprs sont donc complter avec celles prescrites dans la partie prcdente.

1. Transformation des entits


Mthode : Entit identifie
Pour chaque entit (identifie) E, on cre une relation R dont le schma est celui de l'entit. La cl primaire de R est une des cls de E.

Mthode : Entit non identifie


Pour chaque entit non identifie I ayant un identifiant tranger E, on cre une relation R qui comprend tous les attributs de I, ainsi que les attributs cls de la relation correspondant E. La cl de R est la concatnation de la cl locale de I et de la cl de E.

2. Transformation des associations


Mthode : Association 1:N
Pour chaque association binaire A de type 1:N (le cas chant 0,1:N) entre les entits S et T (reprsents par les relations RS et RT respectivement) on inclut dans la dfinition de RT comme cl trangre la cl de RS ainsi que tous les attributs simples de A.

S. Crozat - UTC

67

Le niveau logique : la modlisation relationnelle

Mthode : Association M:N et associations de degr suprieur 2


Pour chaque association binaire A de type M:N ou pour chaque association A de degr suprieur 2, on cre une nouvelle relation RA pour reprsenter A. On met dans RA comme cl trangre, les cls de toutes les relations correspondant aux entits participant A et dont la concatnation formera sa cl. On ajoute galement RA (et ventuellement dans sa cl pour les attributs cls) les attributs dfinis sur A.

Mthode : Association 1:1


Pour chaque association binaire A de type 1,1:1,1 ou 1,1:1,0 entre les entits S et T (reprsentes par les relations RS et RT respectivement) on substitut dans la dfinition de RS l'ventuelle cl primaire (si RS tait identifie) par la cl primaire de RT qui est galement dfinie comme cl trangre vers RT. On ajoute galement RS l'ensemble des attributs de A. Notons que dans le cas d'une association 1,1:1,1 RT peut-tre choisie la place de RS pour accueillir la cl trangre. Pour chaque association binaire A de type 0,1:0,1 entre les entits S et T (reprsentes par les relations RS et RT respectivement) on inclut dans la dfinition de RS comme cl trangre la cl de RT ainsi que tous les attributs simples de A. La cl trangre vers RT incluse dans RS est galement dfinie comme tant unique, afin d'assurer la cardinalit maximum de 1. Notons qu'il n'tait pas possible dans ce cas 0,1:0,1 que la cl trangre vers RT incluse dans RS soit galement la cl primaire, car la cardinalit de 0 supposerait que la cl primaire puisse tre "null", ce qui est illgal pour une cl.

Remarque : Cardinalit minimale 0 ou 1


Selon que la cardinalit minimale est 0 ou 1 (ou plus) du ct de la relation rfrenante on ajoutera ou non une contrainte de non nullit sur la cl trangre. Selon que la cardinalit minimale est 0 ou 1 (ou plus) du ct de la relation rfrence on ajoutera ou non une contrainte d'existence de tuples rfrenant pour chaque tuple de la relation rfrence.

3. Transformation de la relation d'hritage


Comme en UML, trois solutions existent pour transformer une relation d'hritage exprime en E-A : par rfrence, par absorption par les sous-types d'entit, par absorption par l'entit gnrale.

Attention : Les entits non finales sont abstraites


En modlisation E-A on considrera toujours que les entits non finales (c'est dire qui sont hrites par d'autres entits) sont abstraites. Une entit abstraite est une entit qui ne peut pas tre instancie. Donc si E2 hrite de E1 (et que E2 est finale c'est dire qu'aucune classe n'hrite de E2), il existera des objets de E2, mais pas des objets de E1. Si l'on veut disposer d'objets de E1, il suffit de crer une classe E1' qui hrite de E1 sans apporter de proprit supplmentaire. En modlisation UML on pourra diffrencier les classes abstraites des classes instanciables.

68

S. Crozat - UTC

Le niveau logique : la modlisation relationnelle

4. Exemple de passage E-A vers relationnel


Exemple

Transformation avec une relation 1:N

Exemple

Transformation avec une relation M:N

S. Crozat - UTC

69

Le niveau logique : la modlisation relationnelle

5. Comparaison des modles E-A, UML et relationnel


ModleEA Entit Occurenced'uneentit Attributsimple Attributcomposite Attributmultivalu Attributdriv Entitfaible Association1:N AssociationN:M Associationdedegr3ou suprieur Occurenced'uneassociation Hritage Classe Objet Attributsimple Attributcomposite Attributmultivalu Attributdriv Mthode Association1:N AssociationN:M Associationdedegr3ou suprieur Occurenced'uneassociation Hritage ModleUML Nuplet Attributatomique Ensembled'attributs Relation Procdurestock eoucon traintedynamique Proc durestocke Relation Attributs Relation Relation Nuplet Vue Modlerelationnel Relation

Tableau 12 Passage E-A et UML vers Relationnel

D. Algbre relationnelle
Objectifs
Connatre les oprateurs relationnels. Matriser l'algbre relationnelle.

1. Concepts manipulatoires
La reprsentation d'information sous forme relationnelle est intressante car les fondements mathmatiques du relationnel, outre qu'ils permettent une modlisation logique simple et puissante, fournissent galement un ensemble de concepts pour manipuler formellement l'information ainsi modlise. Ainsi une algbre relationnelle, sous forme d'un ensemble d'oprations formelles, permet d'exprimer des questions, ou requtes, poses une reprsentation relationnelle, sous forme d'expressions algbriques. L'algbre relationnelle est compose par les cinq oprateurs de base et les trois oprateurs additionnels suivants : Oprateurs de base Union Diffrence Projection Restriction Produit cartsien Oprateurs additionels Intersection

70

S. Crozat - UTC

Le niveau logique : la modlisation relationnelle

Jointure Division

Remarque : Algbre relationnelle et SQL


Les questions formules en algbre relationnelle sont la base du langage SQL, qui est un langage informatique d'expressions permettant d'interroger une base de donnes relationnelle.

Remarque : Algbre relationnelle et objet


L'algbre relationnelle est tendue une algbre permettant de manipuler des objets autres, et a priori plus complexes, que des relations. Cette algbre tendue permet l'interrogation d'informations modlises sous forme relationnelle-objet.

2. Oprateurs ensemblistes
Attention
Les oprateurs ensemblistes sont des relations binaires (c'est dire entre deux relations) portant sur des relations de mme schma.

Dfinition : Union
L'union de deux relations R1 et R2 de mme schma produit une relation R3 de mme schma constitue de l'ensemble des tuples appartenant R1 et/ou R2.

Dfinition : Diffrence
La diffrence entre deux relations R1 et R2 de mme schma produit une relation R3 de mme schma constitue de l'ensemble des tuples de R1 n'appartenant pas R2. Notons que la diffrence entre R1 et R2 n'est pas gale la diffrence entre R2 et R1.

Dfinition : Intersection
L'intersection de deux relations R1 et R2 de mme schma produit une relation R3 de mme schma constitue de l'ensemble des tuples appartenant la fois R1 et R2. Notons que l'intersection n'est pas une opration de base, car elle est quivalent deux oprations de diffrence successives.

Exemple
Soit les deux relations suivantes : Homme (Nom, Prnom, Age) Femme (Nom, Prnom, Age) Soit les tuples suivants pour ces deux relations respectivement : (Dupont, Pierre, 20) (Durand, Jean, 30) (Martin, Isabelle, 20) (Tintin, Hlne, 30) Soit l'opration suivante : R = Union (Homme, Femme) On obtient alors la relation R compose des tuples suivants : (Dupont, Pierre, 20) (Durand, Jean, 30)

S. Crozat - UTC

71

Le niveau logique : la modlisation relationnelle

(Martin, Isabelle, 20) (Tintin, Hlne, 30) La diffrence entre Homme et Femme (respectivement entre Femme et Homme) renvoie la relation Homme (respectivement Femme), car aucun tuple n'est commun aux deux relations. L'intersection entre Homme est Femme est vide, pour la mme raison.

Remarque : Union externe


Il est possible de dfinir une opration d'union externe, qui permet de raliser l'union de deux relations de schma diffrent, en ramenant les relations aux mmes schmas, et en les compltant avec des valeurs nulles.

3. Projection
Dfinition : Projection
La projection est une opration unaire (c'est dire portant sur une seule relation). La projection de R1 sur une partie de ses attributs {A1, A2, ...} produit une relation R2 dont le schma est restreint aux attributs mentionns en oprande, comportant les mmes tuples que R1, et dont les doublons sont limins.

Remarque : Elimination des doublons


Aprs suppression d'une partie des attributs du schma, la relation peut comporter des doublons. Etant donn que l'on ne pourrait plus identifier ces doublons les uns par rapport aux autres, la seule solution sense est donc de considrer que deux doublons sont quivalents, et donc de n'en garder qu'un seul dans la relation rsultante.

Exemple
Soit la relation suivante : Personne (Nom, Prnom, Age) Soit les tuples suivants : (Dupont, Pierre, 20) (Durand, Jean, 30) Soit l'opration suivante : R = Projection (Personne, Nom, Age) On obtient alors la relation R compose des tuples suivants : (Dupont, 20) (Durand, 30)

4. Restriction
Dfinition : Restriction
La restriction est une opration unaire (c'est dire portant sur une seule relation). La restriction de R1, tant donne une condition C, produit une relation R2 de mme schma que R1 et dont les tuples sont les tuples de R1 vrifiant la condition C.

72

S. Crozat - UTC

Le niveau logique : la modlisation relationnelle

Exemple
Soit la relation suivante : Personne (Nom, Prnom, Age) Soit les tuples suivants : (Dupont, Pierre, 20) (Durand, Jean, 30) Soit l'opration suivante : R = Restriction (Personne, Age>25) On obtient alors la relation R compose de l'unique tuple restant suivant : (Durand, Jean, 30)

5. Produit
Dfinition : Produit cartsien
Le produit cartsien est une opration binaire (c'est dire portant sur deux relations). Le produit de R1 par R2 (quivalent au produit de R2 par R1) produit une relation R3 ayant pour schma la juxtaposition de ceux des relations R1 et R2 et pour tuples l'ensemble des combinaisons possibles entre les tuples de R1 et ceux de R2. Synonymes : Produit

Remarque
Le nombre de tuples rsultant du produit de R1 par R2 est gal au nombre de tuples de R1 multipli par le nombre de tuples de R2.

Exemple
Soit les deux relations suivantes : Homme (Nom, Prnom, Age) Femme (Nom, Prnom, Age) Soit les tuples suivants pour ces deux relations respectivement : (Dupont, Pierre, 20) (Durand, Jean, 30) (Martin, Isabelle, 15) (Tintin, Hlne, 40) Soit l'opration suivante : R = Produit (Homme, Femme) On obtient alors la relation R compose des tuples suivants : (Dupont, (Durand, (Dupont, (Durand, Pierre, 20, Martin, Isabelle, 15) Jean, 30, Martin, Isabelle, 15) Pierre, 20, Tintin, Hlne, 40) Jean, 30, Tintin, Hlne, 40)

S. Crozat - UTC

73

Le niveau logique : la modlisation relationnelle

6. Jointure
Dfinition : Jointure
La jointure est une opration binaire (c'est dire portant sur deux relations). La jointure de R1 et R2, tant donn une condition C portant sur des attributs de R1 et de R2, de mme domaine, produit une relation R3 ayant pour schma la juxtaposition de ceux des relations R1 et R2 et pour tuples l'ensemble de ceux obtenus par concatnation des tuples de R1 et de R2, et qui vrifient la condition C.

Exemple
Soit les deux relations suivantes : Homme (Nom, Prnom, Age) Enfant (Nom, Prnom, Age) Soit les tuples suivants pour ces deux relations respectivement : (Dupont, Pierre, 20) (Durand, Jean, 30) (Dupont, Georges, 1) (Dupont, Jacques, 3) Soit l'opration suivante : R = Jointure (Homme, Enfant, Homme.Nom=Enfant.Nom) On obtient alors la relation R compose des tuples suivants : (Dupont, Pierre, 20, Dupont, Georges, 1) (Dupont, Pierre, 20, Dupont, Jacques, 3)

Remarque : Opration additionnelle


La jointure n'est pas une opration de base, elle peut tre rcrite en combinant le produit et la restriction.

7. Jointure naturelle
Dfinition : Jointure naturelle
La jointure naturelle entre R1 et R2 est une jointure pour laquelle la condition est l'galit entre les attributs de mme nom de R1 et de R2. Il est donc inutile de spcifier la condition dans une jointure naturelle, elle reste toujours implicite.

Exemple
Soit deux relations R1 (A, B, C) et R2 (A, D), l'opration Jointure(R1,R2,R1.A=R2.A) est quivalente l'opration JointureNaturelle(R1,R2).

Remarque
Pour appliquer une jointure naturelle, il faut que les deux relations oprandes aient au moins un attribut ayant le mme nom en commun.

8. Jointure externe
Introduction
La jointure est une opration qui entrane la perte de certains tuples : ceux qui appartiennent une des deux relations oprandes et qui n'ont pas de correspondance dans l'autre relation. Il est ncessaire dans

74

S. Crozat - UTC

Le niveau logique : la modlisation relationnelle

certains cas de palier cette lacune, et l'on introduit pour cela la notion de jointure externe.

Dfinition : Jointure externe


La jointure externe entre R1 et R2 est une jointure qui produit une relation R3 laquelle on ajoute les tuples de R1 et de R2 exclus par la jointure, en compltant avec des valeurs nulles pour les attributs de l'autre relation.

Dfinition : Jointure externe gauche


La jointure externe gauche entre R1 et R2 est une jointure externe pour laquelle on ajoute seulement les tuples de R1 (c'est dire la relation de gauche) ayant t exclus. Synonymes : Jointure gauche

Dfinition : Jointure externe droite


La jointure externe droite entre R1 et R2 est une jointure externe pour laquelle on ajoute seulement les tuples de R2 (c'est dire la relation de droite) ayant t exclus. Bien entendu une jointure externe droite peut tre rcrite par une jointure externe gauche (et rciproquement) en substituant les relations oprandes R1 et R2. Synonymes : Jointure droite

Exemple
Soit les deux relations suivantes : Homme (Nom, Prnom, Age) Enfant (Nom, Prnom, Age) Soit les tuples suivants pour ces deux relations respectivement : (Dupont, Pierre, 20) (Durand, Jean, 30) (Dupont, Georges, 1) (Martin, Isabelle, 15) Soit l'opration suivante : R = JointureExterne (Homme, Enfant, Homme.Nom=Enfant.Nom) On obtient alors la relation R compose des tuples suivants : (Dupont, Pierre, 20, Dupont, Georges, 1) (Durand, Jean, 30, Null, Null, Null) (Null, Null, Null, Martin, Isabelle, 15) Une jointure externe gauche n'aurait renvoy que les deux premiers tuples et une jointure externe droite n'aurait renvoye que le premier et le troisime tuple.

9. Division
Dfinition : Division
La division est une opration binaire (c'est dire portant sur deux relations). La division de R1 par R2, sachant que R1 et R2 ont au moins un attribut commun (c'est dire de mme nom et de mme domaine), produit une relation R3 qui comporte les attributs appartenant R1 mais n'appartenant pas R2 et l'ensemble des tuples qui concatns ceux de R2 donnent toujours un tuple de R1.

S. Crozat - UTC

75

Le niveau logique : la modlisation relationnelle

Exemple
Soit les deux relations suivantes : Homme (Nom, Prnom, Mtier) Mtier (Metier) Soit les tuples suivants pour ces deux relations respectivement : (Dupont, Pierre, Ingnieur) (Dupont, Pierre, Professeur) (Durand, Jean, Ingnieur) (Ingnieur) (Professeur) Soit l'opration suivante : R = Division (Homme, Mtier) On obtient alors la relation R compose des tuples suivants : (Dupont, Pierre)

Remarque : Rponse aux questions : Pour tous les ...


La division permet de rpondre aux questions du type : "Donnez toutes les personnes qui pratiquent tous les mtiers de la relation mtier".

Remarque : Opration additionnelle


La division n'est pas une opration de base, elle peut tre rcrite en combinant le produit, la restriction et la diffrence.

10. Proposition de notations


Introduction
Il existe plusieurs syntaxes pour crire des oprations d'algbre relationnelle, certaines inspires de l'algbre classiques, d'autres reposant sur des notations graphiques. Nous proposons une notation fonctionnelle qui a le mrite d'tre facile crire et d'tre lisible. Si cette notation peut parfois perdre en simplicit, lorsqu'elle concerne un nombre lev d'oprateurs, il est possible de dcomposer une opration complique afin de l'allger.

Syntaxe
R R R R R R R R R R R R = = = = = = = = = = = = Union (R1, R2) Diffrence (R1, R2) Intersection (R1, R2) Projection (R1, A1, A2, ...) Restriction (R1, condition) Produit (R1, R2) Jointure (R1, R2, condition) JointureNaturelle (R1, R2) JointureExterne (R1, R2, condition) JointureGauche (R1, R2, condition) JointureDroite (R1, R2, condition) Division (R1, R2)

76

S. Crozat - UTC

Le niveau logique : la modlisation relationnelle

Exemple : Notation synthtique


R = Projection( Restriction(R1, A1=1 AND A2=2), A3)

Exemple : Notation dcompose


R' = Restriction(R1, A1=1 AND A2=2) R = Projection (R', A3)

11. Exercice de synthse : Oprateurs de base et additionnels


Rcrivez les oprateurs additionnels suivants, partir d'oprateurs de base : Question 1
[Solution n1 p 185]

Rcrivez Intersection partir de Diffrence Question 2


[Solution n2 p 185]

Rcrivez Jointure partir de Produit et Restriction Question 3


[Solution n3 p 185]

Rcrivez Division partir de Produit, Restriction et Difference

E. En rsum : Schma relationnel


Schma relationnel
Un schma relationnel permet une formalisation d'un modle logique. Relation ou table Sous-ensemble d'un produit cartsien Attribut ou colonne Prend ses valeurs dans un domaine Enregistrement ou ligne Pose une valeur (y compris la valeur "null") pour chaque attribut Cl Groupe d'attributs ayant un rle d'identification au sein d'un enregistrement Cl candidate Identifie de faon unique un enregistrement Cl primaire Cl candidate choisie pour reprsenter un enregistrement pour sa facilit d'usage Cl trangre Rfrence la cl primaire d'un tuple d'une autre relation pour exprimer un lien

F. Bibliographie commente sur le modle relationnel


Complment : Synthses
SQL2 SQL3, applications Oracle [Delmal01] Une dfinition synthtique et efficace du domaine relationnel : relation, domaine, attribut, cl, intgrit, oprateurs (Premier chapitre).

S. Crozat - UTC

77

IV -

Le langage SQL
Qu'appelle-t-on SQL? Le Langage de Dfinition de Donnes de SQL Gestion avec le Langage de Manipulation de Donnes de SQL

IV
307 311 325 334 383 402 412 412

Questions avec le Langage de Manipulation de Donnes de SQL Instructions avances pour le LMD de SQL Le Langage de Contrle de Donnes de SQL En rsum : SQL Bibliographie commente sur le SQL

SQL est un langage standardis, implment par tous les SGBDR, qui permet, indpendamment de la plate-forme technologique et de faon dclarative, de dfinir le modle de donnes, de le contrler et enfin de le manipuler.

A. Qu'appelle-t-on SQL?
Dfinition : SQL
SQL (pour langage de requtes structur) est un langage dclaratif destin la manipulation de bases de donnes au sein des SGBD et plus particulirement des SGBDR. SQL est un langage dclaratif, il n'est donc pas a proprement parl un langage de programmation, mais plutt une interface standard pour accder aux bases de donnes. Il est compos de trois sous ensembles : Le Langage de Dfinition de Donnes (LDD, ou en anglais DDL Data Definition Language) pour crer et supprimer des objets dans la base de donnes (tables, contraintes d'intgrit, vues, etc.). Le Langage de Contrle de Donnes (LCD, ou en anglais DCL, Data Control Language) pour grer les droits sur les objets de la base (cration des utilisateurs et affectation de leurs droits). Le Langage de Manipulation de Donnes (LMD, ou en anglais DML, Data Manipulation Language) pour la recherche, l'insertion, la mise jour et la suppression de donnes. Le LMD est bas sur les oprateurs relationnels, auxquels sont ajouts des fonctions de calcul d'agrgats et des instructions pour raliser les oprations d'insertion, mise jour et suppression.

Complment : Origine du SQL


Le modle relationnel a t invent par E.F. Codd (Directeur de recherche du centre IBM de San Jos) en 1970, suite quoi de nombreux langages ont fait leur apparition : IBM Sequel (Structured English Query Language) en 1977 IBM Sequel/2 IBM System/R
S. Crozat - UTC

79

Le langage SQL

IBM DB2 Ce sont ces langages qui ont donn naissance au standard SQL, normalis en 1986 au tats-Unis par l'ANSI pour donner SQL/86 (puis au niveau international par l'ISO en 1987).

Complment : Versions de SQL


SQL-86 (ou SQL-87) : Version d'origine SQL-89 (ou SQL-1) : Amliorations mineures SQL-92 (ou SQL-2) : Extensions fonctionnelles majeures (types de donnes, oprations relationnelles, instruction LDD, transactions, etc. SQL-99 (ou SQL-3) : Introduction du PSM (couche procdurale sous forme de procdure stockes) et du RO SQL-2003 : Extensions XML SQL-2006 : Amliorations mineures (pour XML notamment) SQl-2008 : Amliorations mineures (pour le RO notamment)

Remarque : Version SQL et implmentations SGBD


Selon leur niveau d'implmentation de SQL, les SGBD acceptent ou non certaines fonctions. Certains SGBD ayant entam certaines implmentations avant leur standardisation dfinitive, ces implmentations peuvent diffrer de la norme.

B. Le Langage de Dfinition de Donnes de SQL


Objectifs
Matriser les bases du SQL pour crer et modifier des tables et des vues,

Le LDD permet de crer les objets composant une BD de faon dclarative. Il permet notamment la dfinition des schmas des relations, la dfinition des contraintes d'intgrit, la dfinition de vues relationnelles.

1. Types de donnes
Introduction
Un attribut d'une relation est dfini pour un certain domaine. On peut galement dire qu'il est d'un type particulier. Les types de donnes disponibles en SQL varient d'un SGBD l'autre, on peut nanmoins citer un certain nombre de types standards que l'on retrouve dans tous les SGBD.

Les types numriques

Les nombres entiers INTEGER(X), o X est optionnel et dsigne le nombre de chiffres maximum pouvant composer le nombre. Il existe galement un certain nombre de variantes permettant de dfinir des entiers plus ou moins volumineux, tels que TINYINT, SMALLINT ou LONGINT. Les nombres dcimaux DECIMAL(X,Y), o X et Y sont optionnels et dsignent respectivement le nombre de chiffres maximum pouvant composer le nombre avant et aprs la virgule. NUMERIC est galement utilis de faon quivalente. Les nombres virgule flottante REAL(X,Y), avec X et Y optionnels et dfinissant le nombre de chiffres avant et aprs la

80

S. Crozat - UTC

Le langage SQL

virgule. Il existe galement un certain nombre de variantes permettant de dfinir une prcision plus grande, telles que DOUBLE.

Les types chane de caractres


On distingue principalement les types CHAR(X) et VARCHAR(X), o X et obligatoire et dsigne la longueur de la chane. CHAR dfinit des chanes de longueur fixe (complte droites par des espaces, si la longeur est infrieure X) et VARCHAR des chanes de longueurs variables. CHAR et VARCHAR sont gnralement limits 255 caractres. La plupart des SGBD proposent des types, tels que TEXT ou CLOB (Character Long Object), pour reprsenter des chanes de caractres longues, jusqu' 65000 caractres par exemple.

Les types date


Les types date dont introduits avec la norme SQL2. On distingue le type DATE qui reprsente une date selon un format de type "AAAA-MM-JJ" et le types DATETIME qui reprsente une date avec un horaire, dans un format tel que "AAAA-MM-JJ HH:MM:SS". Il existe galement des restrictions de ces types, tels que YEAR, TIME, etc.

Les autres types


En fonction du SGBD, il peut exister de nombreux autres types. On peut citer par exemple les types montaires pour reprsenter des dcimaux associs une monnaie, les types ENUM pour reprsenter des numrations, les types BLOB (pour Binary Long Oject) pour reprsenter des donnes binaires tels que des documents multimdia (images bitmap, vido, etc.).

La valeur NULL
L'absence de valeur, reprsente par la valeur NULL, est une information fondamentale en SQL, qu'il ne faut pas confondre avec la chane espace de caractre o bien la valeur 0. Il ne s'agit pas d'un type proprement parler, mais d'une valeur possible dans tous les types. Par dfaut en SQL NULL fait partie du domaine, il faut l'exclure explicitement par la clause NOT NULL aprs la dfinition de type, si on ne le souhaite pas.

2. Cration de tables
Introduction
La cration de table est le fondement de la cration d'une base de donnes en SQL.

Dfinition : Cration de table


La cration de table est la dfinition d'un schma de relation en intension, par la spcification de tous les attributs le composant avec leurs domaines respectifs.

Syntaxe
CREATE TABLE <nom de table> ( <nom colonne1> <type colonne1> [NOT NULL], <nom colonne2> <type colonne2> [NOT NULL], ... <nom colonneN> <type colonneN> [NOT NULL] );

Exemple
CREATE TABLE Personne ( Nom VARCHAR(25) NOT NULL, Prenom VARCHAR(25), Age INTEGER(3)

S. Crozat - UTC

81

Le langage SQL

);

Attention : Contrainte d'intgrit


La dfinition des types n'est pas suffisante pour dfinir un schma relationnel, il faut lui adjoindre la dfinition de contraintes d'intgrit, qui permette de poser les notions de cl, d'intgrit rfrentielle, de restriction de domaines, etc.

3. Contraintes d'intgrit
Dfinition : Contraintes d'intgrit
Une contrainte d'intgrit est une rgle qui dfinit la cohrence d'une donne ou d'un ensemble de donnes de la BD. Il existe deux types de contraintes : sur une colonne unique, ou sur une table lorsque la contrainte porte sur une ou plusieurs colonnes. Les contraintes sont dfinies au moment de la cration des tables. Les contraintes d'intgrit sur une colonne sont : PRIMARY KEY : dfinit l'attribut comme la cl primaire UNIQUE : interdit que deux tuples de la relation aient la mme valeur pour l'attribut. REFERENCES <nom table> (<nom colonnes>) : contrle l'intgrit rfrentielle entre l'attribut et la table et ses colonnes spcifies CHECK (<condition>) : contrle la validit de la valeur de l'attribut spcifi dans la condition dans le cadre d'une restriction de domaine Les contraintes d'intgrit sur une table sont : PRIMARY KEY (<liste d'attibuts>) : dfinit les attributs de la liste comme la cl primaire UNIQUE (<liste d'attibuts>) : interdit que deux tuples de la relation aient les mmes valeurs pour l'ensemble des attributs de la liste. FOREIGN KEY (<liste d'attibuts>) REFERENCES <nom table>(<nom colonnes>) : contrle l'intgrit rfrentielle entre les attributs de la liste et la table et ses colonnes spcifies CHECK (<condition>) : contrle la validit de la valeur des attributs spcifis dans la condition dans le cadre d'une restriction de domaine

Syntaxe
CREATE TABLE <nom de table> ( <nom colonne1> <type colonne1> [NOT NULL] <contraintes colonne1>, <nom colonne2> <type colonne2> [NOT NULL] <contraintes colonne2>, ... <nom colonneN> <type colonneN> [NOT NULL] <contraintes colonneN>, <contraintes de table> );

Exemple
CREATE TABLE Personne ( NSS CHAR(13) PRIMARY KEY, Nom VARCHAR(25) NOT NULL, Prenom VARCHAR(25) NOT NULL, Age INTEGER(3) CHECK (Age BETWEEN 18 AND 65),

82

S. Crozat - UTC

Le langage SQL

Mariage CHAR(13) REFERENCES Personne(NSS), UNIQUE (Nom, Prenom) );

Remarque : Cl candidate
La clause UNIQUE NOT NULL sur un attribut ou un groupe d'attributs dfinit une cl candidate non primaire.

Remarque
Les contraintes sur une colonne et sur une table peuvent tre combines dans la dfinition d'un mme schma de relation. Une contrainte sur une colonne peut toujours tre remplace par une contrainte sur une table .

4. Exemple de contraintes d'intgrit


Exemple
CREATE TABLE Personne ( NSS CHAR(13) PRIMARY KEY, Nom VARCHAR(25) NOT NULL, Prenom VARCHAR(25) NOT NULL, Age INTEGER(3) CHECK (Age BETWEEN 18 AND 65), Mariage CHAR(13) REFERENCES Personne(NSS), Codepostal INTEGER(5), Pays VARCHAR(50), UNIQUE (Nom, Prenom), FOREIGN KEY (Codepostal, Pays) REFERENCES Adresse (CP, Pays) ); CREATE TABLE Adresse ( CP INTEGER(5) NOT NULL, Pays VARCHAR(50) NOT NULL, Initiale CHAR(1) CHECK (Initiale = LEFT(Pays, 1)), PRIMARY KEY (CP, Pays) ); Dans la dfinition de schma prcdente on a pos les contraintes suivantes : La cl primaire de Personne est NSS et la cl primaire de Adresse est (CP, Pays). Nom, Prnom ne peuvent pas tre null et (Nom, Prnom) est une cl. Age doit tre compris entre 18 et 65 et Initiale doit tre la premire lettre de Pays (avec la fonction LEFT qui renvoie la sous chane gauche de la chane passe en premier argument, sur le nombre de caractres passs en second argument) Mariage est cl trangre vers Personne et (Codepostal, Pays) est une cl trangre vers Adresse.

Exemple : Rcriture avec uniquement des contraintes de table


CREATE TABLE Personne ( NSS CHAR(13) , Nom VARCHAR(25) NOT NULL, Prenom VARCHAR(25) NOT NULL, Age INTEGER(3) , Mariage CHAR(13), Codepostal INTEGER(5), Pays VARCHAR(50),

S. Crozat - UTC

83

Le langage SQL

PRIMARY KEY (NSS), UNIQUE (Nom, Prenom), CHECK (Age BETWEEN 18 AND 65), FOREIGN KEY (Mariage) REFERENCES Personne(NSS), FOREIGN KEY (Codepostal, Pays) REFERENCES Adresse (CP, Pays) ); CREATE TABLE Adresse ( CP INTEGER(5) NOT NULL, Pays VARCHAR(50) NOT NULL, Initiale CHAR(1), PRIMARY KEY (CP, Pays), CHECK (Initiale = LEFT(Pays, 1)) ); Ce schma est strictement le mme que le prcdent, simplement les contraintes ont toutes t rcrites comme des contraintes de table.

5. Cration de vues
Dfinition : Vue
Une vue est une dfinition logique d'une relation, sans stockage de donnes, obtenue par interrogation d'une ou plusieurs tables de la BD. Une vue peut donc tre perue comme une fentre dynamique sur les donnes, ou encore une requte stocke (mais dont seule la dfinition est stocke, pas le rsultat, qui reste calcul dynamiquement). Une vue permet d'implmenter le concept de schma externe d'un modle conceptuel. Synonymes : Relation drive, Table virtuelle calcule

Syntaxe
CREATE VIEW <nom de vue> <nom des colonnes> AS <spcification de question> La spcification d'une question se fait en utilisant le LMD. Le nombre de colonnes nommes doit tre gal au nombre de colonnes renvoyes par la question spcifie. Le nom des colonnes est optionnel, s'il n'est pas spcifi, c'est le nom des colonnes telle qu'elles sont renvoyes par la question, qui sera utilis.

Exemple
CREATE VIEW Employe (Id, Nom) AS SELECT NSS, Nom FROM Personne La vue Employe est ici une projection de la relation Personne sur les attributs NSS et Nom, renomms respectivement Id et Nom.

Remarque : Vue en lecture et vue en criture


Une vue est toujours disponible en lecture, condition que l'utilisateur ait les droits spcifis grce au LCD. Une vue peut galement tre disponible en criture dans certains cas, que l'on peut restreindre aux cas o la question ne porte que sur une seule table (mme si dans certains cas, il est possible de modifier une vue issue de plusieurs tables). Dans le cas o une vue est destine tre utilise pour modifier des donnes, il est possible d'ajouter la clause "WITH CHECK OPTION" aprs la spcification de question, pour prciser que les donnes modifies ou ajoutes doivent effectivement appartenir la vue.
S. Crozat - UTC

84

Le langage SQL

Remarque : Vue sur une vue


Une vue peut avoir comme source une autre vue.

Rappel : Vues et hritage


Les vues sont particulirement utiles pour restituer les relations d'hritage perdues lors de la transformation MCD vers MLD.

6. Suppression d'objets
Il est possible de supprimer des objets de la BD, tels que les tables ou les vues.

Syntaxe
DROP <type objet> <nom objet>

Exemple
DROP TABLE Personne; DROP VIEW Employe;

7. Modification de tables
Introduction
L'instruction ALTER TABLE permet de modifier la dfinition d'une table (colonnes ou contraintes) pralablement cre. Cette commande absente de SQL-89 est normalise dans SQL-92

Syntaxe

: Ajout de colonne

ALTER TABLE <nom de table> ADD (<dfinition de colonne>);

Syntaxe

: Suppression de colonne

ALTER TABLE <nom de table> DROP (<nom de colonne>);

Syntaxe

: Modification d'une colonne

ALTER TABLE <nom de table> MODIFY (<redfinition de colonne>);

Syntaxe

: Ajout de contrainte

ALTER TABLE <nom de table> ADD (<dfinition de contrainte de table>);

Remarque : Modification de table sans donne sans la commande ALTER


Pour modifier une table ne contenant pas encore de donne, la commande ALTER n'est pas
S. Crozat - UTC

85

Le langage SQL

indispensable, l'on peut supprimer la table modifier (DROP) et la recrer telle qu'on la souhaite. Notons nanmoins que si la table est rfrence par des clauses FOREIGN KEY, cette suppression sera plus complique, car il faudra galement supprimer et recrer les tables rfrenantes (ce qui ce complique encore si ces dernires contiennent des donnes).

Remarque : Modification de table avec donnes sans la commande ALTER


Pour modifier une table contenant des donnes, la commande ALTER n'est pas absolument indispensable. On peut en effet : 1. Copier les donnes dans une table temporaire de mme schma que la table modifier 2. Supprimer et recrer la table modifier avec le nouveau schma 3. Copier les donnes depuis la table temporaire vers la table modifie

8. Exemple de modifications de tables


Table initiale
Soit une table intiale telle que dfinie ci-aprs. create table t_personnes ( pk_n number (4), nom varchar(50), prenom varchar (50), PRIMARY KEY (pk_n) );

Modifications
On dcide d'apporter les amnagements suivants la table : on passe la taille du champ "nom" de 50 255 caractres maximum, on dfinit "nom" comme UNIQUE et on supprime le champ "prenom". alter table t_personnes modify (nom varchar(255)); alter table t_personnes add (UNIQUE (nom)); alter table t_personnes drop (prenom);

Table finale
La table obtenue aprs modification est identique la table qui aurait t dfinie directement telle que ciaprs. create table t_personnes ( pk_n number (4), nom varchar(255), PRIMARY KEY (pk_n), UNIQUE (nom) );

86

S. Crozat - UTC

Le langage SQL

C. Gestion avec le Langage de Manipulation de Donnes de SQL


Objectifs
Matriser les bases du SQL pour entrer, modifier et effacer des donnes dans les tables.

1. Insertion de donnes
Le langage SQL fournit galement des instructions pour ajouter des nouveaux tuples une relation. Il offre ainsi une interface standard galement pour ajouter des information dans une base de donnes. Il existe deux moyens d'ajouter des donnes, soit par fourniture directe des valeurs des proprits du tuple ajouter, soit par slection des tuples ajouter dans une autre relation.

Syntaxe

: Insertion directe de valeurs

INSERT INTO <Nom de la relation> (<Liste ordonne des proprits valoriser>) VALUES (<Liste ordonne des valeurs affecter aux proprits spcifies ci-dessus>)

Exemple : Insertion directe de valeurs


INSERT INTO Virement (Date, Montant, Objet) VALUES (14-07-1975, 1000, 'Prime de naissance');

Syntaxe

: Insertion de valeurs par l'intermdiaire d'une slection

INSERT INTO <Nom de la relation> (<Liste ordonne des proprits valoriser>) SELECT ... L'instruction SELECT projetant un nombre de proprits identiques aux proprits valoriser.

Exemple : Insertion de valeurs par l'intermdiaire d'une slection


INSERT INTO Credit (Date, Montant, Objet) SELECT Date, Montant, 'Annulation de dbit' FROM Debit WHERE Debit.Date = 25-12-2001; Dans cet exemple tous les dbits effectus le 25 dcembre 2001, sont recrdits pour le mme montant (et la mme date), avec la mention annulation dans l'objet du crdit. Ceci pourrait typiquement ralis en cas de dbits errrons ce jour l.

Remarque
Les proprits non valorises sont affectes la valeur null. Il est possible de ne pas spcifier les proprits valoriser, dans ce cas, toutes les proprits de la relation seront considres, dans leur ordre de dfinition dans la relation ( n'utiliser que dans les cas les plus simples).

S. Crozat - UTC

87

Le langage SQL

2. Mise jour de donnes


Le langage SQL fournit une instruction pour modifier des tuples existants dans une relation.

Syntaxe

: Mise jour directe de valeurs

UPDATE <Nom de la relation> SET <Liste d'affectation Proprit=Valeur> WHERE <Condition pour filtrer les tuples mettre jour>

Exemple : Mise jour directe de valeurs


UPDATE Compte SET Monnaie='Euro' WHERE Monnaie='Franc'

Exemple : Mise jour par calcul sur l'ancienne valeur


UPDATE Compte SET Total=Total * 6,55957 WHERE Monnaie='Euro'

3. Suppression de donnes
Le langage SQL fournit une instruction pour supprimer des tuples existants dans une relation.

Syntaxe
DELETE FROM <Nom de la relation> WHERE <Condition pour filtrer les tuples supprimer>

Exemple : Suppression de tous les tuples d'une relation


DELETE FROM FaussesFactures

Exemple : Suppression slective


DELETE FROM FaussesFactures WHERE Auteur='Moi'

D. Questions avec le Langage de Manipulation de Donnes de SQL


Objectifs
Matriser les bases du SQL pour crire des questions exigeant des jointures, projections, restriction, des tris et des agrgats.

88

S. Crozat - UTC

Le langage SQL

1. Slection
Introduction
La requte de slection ou question est la base de la recherche de donnes en SQL.

Dfinition : Slection
La selection est la composition d'un produit cartsien, d'une restriction et d'une projection (ou encore la composition d'une jointure et d'une projection).

Syntaxe
SELECT <liste d'attributs projets> FROM <liste de relations> WHERE <condition> La partie SELECT indique le sous-ensemble des attributs qui doivent apparatre dans la rponse (c'est le schma de la relation rsultat). La partie FROM dcrit les relations qui sont utilisables dans la requte (c'est dire l'ensemble des attributs que l'on peut utiliser). La partie WHERE exprime les conditions que doivent respecter les attributs d'un tuple pour pouvoir tre dans la rponse. Une condition est un prdicat et par consquent renvoie un boolen. Cette partie est optionnelle. Afin de dcrire un attribut d'une relation dans le cas d'une requte portant sur plusieurs relations, on utilise la notation "RELATION.ATTRIBUT".

Exemple
SELECT Nom, Prenom FROM Personne WHERE Age>18 Cette requte slectionne les attributs Nom et Prenom des tuples de la relation Personne, ayant un attribut Age suprieur 18.

Exemple
SELECT Parent.Prenom, Enfant.Prenom FROM Parent, Enfant WHERE Enfant.Nom=Parent.Nom Cette requte slectionne les prnoms des enfants et des parents ayant le mme nom. On remarque la notation Parent.Nom et Enfant.Nom pour distinguer les attributs Prenom des relations Parent et Enfant. On notera que cette slection effectue une jointure sur les proprits Nom des relations Parent et Enfant.

Remarque : SELECT *
Pour projeter l'ensemble des attributs d'une relation, on peut utiliser le caractre "*" la place de la liste des attributs projeter.

Exemple
SELECT * FROM Avion Cette requte slectionne tous les attributs de la relation Avion. Notons que dans cet exemple, la relation rsultat est exactement la relation Avion

S. Crozat - UTC

89

Le langage SQL

Remarque : SELECT DISTINCT


L'oprateur SELECT n'limine pas les doublons (i.e. les tuples identiques dans la relation rsultat) par dfaut. Il faut pour cela utiliser l'oprateur "SELECT DISTINCT".

Exemple
SELECT DISTINCT Avion FROM Vol WHERE Date=31-12-2000 Cette requte slectionne l'attribut Avion de la relation Vol, concernant uniquement les vols du 31 dcembre 2000 et renvoie les tuples dans doublons.

Remarque : Renommage de proprit


Il est possible de redfinir le nom des proprits de la relation rsultat. Ainsi "SELECT p AS p' FROM relation" renvoie une relation ayant comme proprit p'. Cette possibilit est offerte partir de SQL2 (niveau entre).

Remarque : Projection de constante


Il est possible de projeter directement des constantes. Ainsi "SELECT 'Bonjour' AS Essai" renverra un tuple avec une proprit Essai la valeur 'Bonjour'.

2. Oprateurs de comparaisons et oprateurs logiques


Introduction
La clause WHERE d'une instruction de slection est dfinie par une condition. Une telle condition s'exprime l'aide d'oprateurs de comparaison et d'oprateurs logiques. Le rsultat d'une expression de condition est toujours un boolen.

Dfinition : Condition
Condition Elmentaire ::= Proprit <Oprateur de comparaison> Constante Condition ::= Condition <Oprateur logique> Condition | Condition Elmentaire Les oprateurs de comparaison sont : P=C P <> C P<C P>C P <= C P >= C P BETWEEN C1 AND C2 P LIKE 'chane' P IN (C1, C2, ...) P IS NULL Les oprateur logique sont : OR AND NOT

90

S. Crozat - UTC

Le langage SQL

Remarque : Oprateur LIKE


L'oprateur LIKE 'chane' permet d'insrer des jokers dans l'opration de comparaison (alors que l'oprateur = teste une galit stricte) : Le joker % dsigne 0 ou plusieurs caractres quelconques Le joker _ dsigne 1 et 1 seul caractre On prfrera l'oprateur = l'oprateur LIKE lorsque la comparaison n'utilise pas de joker.

3. Expression du produit cartsien


Syntaxe
SELECT * FROM R1, R2, Ri

Exemple
R1 #A 1 2 3 4 B Alpha Bravo Charlie Delta A 1 1 1 2 2 2 3 3 3 4 4 4 C=>R2 10 10 20 R2 #X 10 20 30 Y Echo Fox Golf

B Alpha Alpha Alpha Bravo Bravo Bravo Charlie Charlie Charlie Delta Delta Delta

C 10 10 10 10 10 10 20 20 20

X 10 20 30 10 20 30 10 20 30 10 20 30

Y Echo Fox Golf Echo Fox Golf Echo Fox Golf Echo Fox Golf

Produit(R1,R2) SELECT * FROM R1,R2 Tableau 13 Exemple de produit (SQL et Algbre)

4. Expression d'une projection


Syntaxe
SELECT P1, P2, Pi FROM R

S. Crozat - UTC

91

Le langage SQL

Exemple
R1 #A 1 2 3 4 R B Alpha Bravo Charlie Delta A 1 2 3 C=>R2 10 10 20

C 10 10 20

Projection(R1,A,C) SELECT A, C FROM R1


Tableau 14 Exemple de projection (SQL et Algbre)

5. Expression d'une restriction


Syntaxe
SELECT * FROM R WHERE <condition>

Exemple
R1 #A 1 2 3 4 R B Alpha Bravo Charlie Delta A 1 2 C=>R2 10 10 20

B Alpha Bravo

C 10 10

Restriction(R1,C<20) SELECT * FROM R1 WHERE C<20


Tableau 15 Exemple de restriction (SQL et Algbre)

6. Expression d'une jointure

92

S. Crozat - UTC

Le langage SQL

Syntaxe

: Jointure par la clause WHERE

En tant que composition d'un produit cartsien et d'une restriction la jointure s'crit : SELECT * FROM R1, R2, Ri WHERE <condition> Avec Condition permettant de joindre des attributs des Ri

Syntaxe

: Jointure par la clause ON

On peut galement utiliser la syntaxe ddie suivante : SELECT * FROM R1 INNER JOIN R2 ON <condition> Et pour plusieurs relations : SELECT * FROM (R1 INNER JOIN R2 ON <condition>) INNER JOIN Ri ON <condition>

Exemple
R1 #A 1 2 3 4 R B Alpha Bravo Charlie Delta A 1 2 3 C=>R2 10 10 20 R2 #X 10 20 30 Y Echo Fox Golf

B Alpha Bravo Charlie

C 10 10 20

X 10 10 20

Y Echo Echo Fox

Jointure(R1,R2,R1.C=R2.X) SELECT * FROM R1 INNER JOIN R2 ON R1.C=R2.X Tableau 16 Exemple de jointure (SQL et Algbre)

Exemple : Une jointure naturelle


SELECT * FROM R1, R2 WHERE R2.NUM = R1.NUM

Remarque : Auto-jointure
Pour raliser une auto-jointure, c'est dire la jointure d'une relation avec elle-mme, on doit utiliser le renommage des relations. Pour renommer une relation, on note dans la clause FROM le nom de renommage aprs le nom de la relation : "FROM NOM_ORIGINAL NOUVEAU_NOM".

S. Crozat - UTC

93

Le langage SQL

Exemple : Auto-jointure
SELECT E1.Nom FROM Employe E1, Employe E2 WHERE E1.Nom= E2.Nom

7. Expression d'une jointure externe


Syntaxe : Jointure externe, gauche ou droite
Pour exprimer une jointure externe on se base sur la syntaxe INNER JOIN en utilisant la place OUTER JOIN, LEFT OUTER JOIN ou RIGHT OUTER JOIN.

Exemple : Jointure externe gauche


SELECT Num FROM Avion LEFT OUTER JOIN Vol ON Avion.Num=Vol.Num Cette requte permet de slectionner tous les avions, y compris ceux non affects un vol.

Remarque
Remarquons que "Avion LEFT OUTER JOIN Vol" est quivalent "Vol RIGHT OUTER JOIN Avion" en terme de rsultat. Intuitivement, on prfre utiliser la jointure gauche pour slectionner tous les tuple du ct N d'une relation 1:N, mme si il ne sont pas rfrencs ; et la jointure droite pour pour slectionner tous les tuples d'une relation 0:N, y compris ceux qui ne font pas de rfrence. Cette approche revient toujours garder gauche de l'expression "JOIN" la relation "principale", i.e. celle dont on veut tous les tuples, mme s'ils ne rfrencent pas (ou ne sont pas rfrencs par) la relation "secondaire".

Exemple
R1 #A 1 2 3 4 R B Alpha Bravo Charlie Delta A 1 2 3 4 C=>R2 10 10 20 R2 #X 10 20 30 Y Echo Fox Golf

B Alpha Bravo Charlie Delta

C 10 10 20

X 10 10 20 30

Y Echo Echo Fox Golf

JointureExterne(R1,R2,R1.C=R2.X) SELECT * FROM R1 OUTER JOIN R2 ON R1.C=R2.X Tableau 17 Exemple de jointure externe (SQL et Algbre)

94

S. Crozat - UTC

Le langage SQL

Exemple
R1 #A 1 2 3 4 R B Alpha Bravo Charlie Delta A 1 2 3 4 C=>R2 10 10 20 R2 #X 10 20 30 Y Echo Fox Golf

B Alpha Bravo Charlie Delta

C 10 10 20

X 10 10 20

Y Echo Echo Fox

JointureExterneGauche(R1,R2,R1.C=R2.X) SELECT * FROM R1 LEFT OUTER JOIN R2 ON R1.C=R2.X Tableau 18 Exemple de jointure externe gauche (SQL et Algbre)

Exemple
R1 #A 1 2 3 4 R B Alpha Bravo Charlie Delta A 1 2 3 C=>R2 10 10 20 R2 #X 10 20 30 Y Echo Fox Golf

B Alpha Bravo Charlie

C 10 10 20

X 10 10 20 30

Y Echo Echo Fox Golf

JointureExterneDroite(R1,R2,R1.C=R2.X) SELECT * FROM R1 RIGHT OUTER JOIN R2 ON R1.C=R2.X Tableau 19 Exemple de jointure externe droite (SQL et Algbre)

Mthode : Trouver les enregistrements non joints


La jointure externe sert en particulier pour trouver les enregistrements d'une table qui ne sont pas rfrencs par une cl trangre. Il suffit de slectionner, aprs la jointure externe, tous les enregistrements pour lesquels la cl de la relation rfrenante est nulle, on obtient alors ceux de la relation rfrence qui ne sont pas rfrencs.

S. Crozat - UTC

95

Le langage SQL

R1

#A 1 2 3 4 R

B Alpha Bravo Charlie Delta A

C=>R2 10 10 20

R2

#X 10 20 30

Y Echo Fox Golf

X 30

Y Golf

Restriction( JointureExterneDroite(R1,R2,R1.C=R2.X), R1.A IS NULL) SELECT * FROM R1 RIGHT OUTER JOIN R2 ON R1.C=R2.X WHERE R1.A IS NULL Tableau 20 Exemple de slection d'enregistrements non rfrencs (SQL et Algbre)

8. Oprateurs ensemblistes
Introduction
Les oprateurs ensemblistes ne peuvent tre exprims l'aide de l'instruction de slection seule.

Syntaxe

: Union

SELECT * FROM R1 UNION SELECT * FROM R2

Syntaxe

: Intersection

SELECT * FROM R1 INTERSECT SELECT * FROM R2

Syntaxe

: Diffrence

SELECT * FROM R1 EXCEPT SELECT * FROM R2

Remarque
Les oprations INTERSECT et EXCEPT n'existe que dans la norme SQL2, et non dans la norme SQL1. Certains SGBD sont susceptibles de ne pas les implmenter.

96

S. Crozat - UTC

Le langage SQL

9. Tri
Introduction
On veut souvent que le rsultat d'une requte soit tri en fonction des valeurs des proprits des tuples de ce rsultat.

Syntaxe

: ORDER BY

SELECT <liste d'attributs projets> FROM <liste de relations> WHERE <condition> ORDER BY <liste ordonne d'attributs> Les tuples sont tris d'abord par le premier attribut spcifi dans la clause ORDER BY, puis en cas de doublons par le second, etc.

Remarque : Tri dcroissant


Pour effectuer un tri dcroissant on fait suivre l'attribut du mot cl "DESC".

Exemple
SELECT * FROM Personne ORDER BY Nom, Age DESC

10. Fonctions de calcul


Dfinition : Fonction de calcul
Une fonction de calcul s'applique l'ensemble des valeurs d'une proprit d'une relation avec pour rsultat la production d'une valeur atomique unique (entier, chane, date, etc). Les cinq fonctions prdfinies sont : Count(Relation.Proprit) Renvoie le nombre de valeurs non nulles d'une proprit pour tous les tuples d'une relation ; Sum(Relation.Proprit) Renvoie la somme des valeurs d'une proprit des tuples (numriques) d'une relation ; Avg(Relation.Proprit) Renvoie la moyenne des valeurs d'une proprit des tuples (numriques) d'une relation ; Min(Relation.Proprit) Renvoie la plus petite valeur d'une proprit parmi les tuples d'une relation . Max(Relation.Proprit) Renvoie la plus grande valeur d'une proprit parmi les tuples d'une relation.

Syntaxe
SELECT <liste de fonctions de calcul> FROM <liste de relations> WHERE <condition appliquer avant calcul>

Exemple
SELECT Min(Age), Max(Age), Avg(Age) FROM Personne

S. Crozat - UTC

97

Le langage SQL

WHERE Qualification='Ingnieur'

Remarque : Utilisation de fonctions pour les agrgats


Dans le cas du calcul d'un agrgat, les fonctions peuvent tre utilises dans la claude HAVING ou dans la clause ORDER BY d'un tri. Les fonctions ne peuvent pas tre utilises dans la clause WHERE.

Remarque : Comptage d'une relation


Pour effectuer un comptage sur tous les tuples d'une relation, appliquer la fonction Count un attribut de la cl primaire. En effet cet attribut tant non nul par dfinition, il assure que tous les tuples seront compts.

11. Agrgats
Dfinition : Agrgat
Un agrgat est un partitionnement horizontal d'une table en sous-tables, en fonction des valeurs d'un ou plusieurs attributs de partitionnement, suivi de l'application d'une fonction de calcul chaque attribut des sous-tables obtenues.

Syntaxe
SELECT <liste d'attributs de partionnement projeter et de fonctions de calcul> FROM <liste de relations> WHERE <condition appliquer avant calcul de l'agrgat> GROUP BY <liste ordonne d'attributs de partitionnement> HAVING <condition sur les fonctions de calcul>

Exemple
SELECT Societe.Nom, AVG(Personne.Age) FROM Personne, Societe WHERE Personne.NomSoc = Societe.Nom GROUP BY Societe.Nom HAVING Count(Personne.NumSS) > 10 Cette requte calcul l'ge moyen du personnel pour chaque socit comportant plus de 10 salaris.

Remarque : Restriction
Une restriction peut tre applique avant calcul de l'agrgat, au niveau de la clause WHERE, portant ainsi sur la relation de dpart, mais aussi aprs calcul de l'agrgat sur les rsultats de ce dernier, au niveau de la clause HAVING.

Attention : Projection
Si dans la clause SELECT, un attribut est projet directement, sans qu'une fonction lui soit applique, alors il faut imprativement que cet attribut apparaisse dans la clause GROUP BY (car ce ne peut tre qu'un attribut de partitionnement).

Remarque : Fonctions de calcul sans partitionnement


Si une ou plusieurs fonctions de calcul sont appliques sans partitionnement, le rsultat de la requte est un tuple unique.

98

S. Crozat - UTC

Le langage SQL

Remarque : Intrt de la clause GROUP BY


Pour que l'utilisation de la clause GROUP BY ait un sens, il faut qu'au moins une fonction de calcul soit utilise, soit dans la clause SELECT, soit dans la clause HAVING.

Remarque : Contrle impos par quelques SGBDR


Notons que dans le cas de certains SGBDR (par exemple Oracle), l'ensemble des attributs de l'agrgation (clause GROUP BY) doivent tre pralablement projets (donc dclars dans la clause SELECT).

E. Instructions avances pour le LMD de SQL


Objectifs
tre capable d'apprendre des notions particulires de SQL lis un SGBD en particulier ou des volutions futures de SQL.

1. Requtes imbriques
Introduction
Il est possible d'imbriquer des requtes les unes dans les autres pour procduraliser les questions, et ainsi rpondre des questions plus complexes, voire impossibles, crire en algbre relationnel classique.

Dfinition : Sous-requte
Requte incluse dans la clause WHERE ou FROM d'une autre requte. Synonymes : Sous-question, Requte imbrique

Syntaxe

: Requtes imbriques par la clause WHERE

SELECT <projections> FROM <relations> WHERE <sous-requte>

Exemple
SELECT Nom FROM Chercheur WHERE Nom IN (SELECT Nom FROM Enseignant)

2. Sous-requte d'existence IN
Introduction
Cette sous-requte permet de vrifier que la projection d'un tuple de la requte principale est prsent dans la sous-requte.

Syntaxe
SELECT <projections>

S. Crozat - UTC

99

Le langage SQL

FROM <relations> WHERE (<projection d'un tuple>) IN (<requte imbrique>) La projection du tuple de la requte principale doit conduire un schma relationnel identique celui de la requte imbrique.

Exemple : Sous-requte IN une colonne et plusieurs lignes


SELECT Chercheur.Nom FROM Chercheur WHERE Chercheur.Universite IN (SELECT Universite.Nom FROM Universite WHERE Universite.Ville='Paris')

Exemple : Sous-requte IN plusieurs colonnes et plusieurs lignes


SELECT NSS FROM Chercheur WHERE (Nom, Prenom, Age) IN (SELECT Nom, Prenom, Age FROM Enseignant)

Exemple : Imbrication multiple de requtes


SELECT Nom FROM Chercheur WHERE Universite='Paris6' AND Nom IN (SELECT Nom FROM Enseignant WHERE Universite IN (SELECT Nom FROM Universite WHERE Ville='Paris'))

Remarque : Jointure par la sous-requte IN


La sous-requte IN est une troisime voie, avec les clauses WHERE et JOIN, pour raliser des jointures entre relations. On prfrera nanmoins viter d'utiliser cette unique fin cette version plus procdurale.

Remarque : NOT IN
On peut tester la non existence du tuple dans la sous requte en utilisant la clause NOT IN la place de la clause IN.

3. Sous-requte d'existence EXISTS


Introduction
Cette sous-requte permet de vrifier que la sous-requte contient au moins un tuple.

Syntaxe
SELECT <projections> FROM <relations>

100

S. Crozat - UTC

Le langage SQL

WHERE EXISTS (<requte imbrique>) La requte imbrique faisant rfrence des proprits (ventuellement non projetes) de la requte principale.

Exemple
SELECT Chercheur.Nom FROM Chercheur WHERE EXISTS (SELECT * FROM Universite WHERE Universite.Nom=Chercheur.Universite)

Remarque : Projection dans la sous-requte


Puisque la sous-requte n'est destine qu' valider l'existence d'un tuple, il est inutile de procder une projection particulire pour cette sous-requte. On utilise donc en gnral la clause SELECT * pour une sous-requte avec une clause EXISTS.

Remarque : NOT EXISTS


On peut tester la non prsence de tuple dans la sous-requte en utilisant la clause NOT EXISTS la place de la clause EXISTS.

4. Sous-requte de comparaison ALL


Introduction
Cette sous-requte permet de vrifier que les tuples de la requte principale vrifient bien une condition donne avec tous les tuples de la sous-requte.

Syntaxe
SELECT <projections> FROM <relations> WHERE <proprit> <oprateur de comparaison> ALL (<requte imbrique>) La requte imbrique renvoyant un tuple ne comportant qu'une proprit de mme domaine que la proprit teste de la requte principale.

Exemple
SELECT Nom FROM Chercheur WHERE Age > ALL (SELECT Age FROM Etudiant)

5. Sous-requte de comparaison ANY


Introduction
Cette sous-requte permet de vrifier que les tuples de la requte principale vrifie bien une condition donne avec au moins un tuple de la sous-requte.

S. Crozat - UTC

101

Le langage SQL

Syntaxe
SELECT <projections> FROM <relations> WHERE <proprit> <oprateur de comparaison> ANY (<requte imbrique>) La requte imbrique renvoyant un tuple ne comportant qu'une proprit de mme domaine que la proprit teste de la requte principale.

Exemple
SELECT Nom FROM Chercheur WHERE Age < ANY (SELECT Age FROM Etudiant)

Remarque : SOME
SOME peut tre utilis comme un synonyme de ANY.

6. Raffinement de questions dans la clause FROM


Il est possible de raffiner progressivement une requte en enchanant les questions dans la clause FROM.

Syntaxe
SELECT ... FROM (SELECT ... FROM ... WHERE ...) WHERE ...)

Remarque
Il est possible d'enchaner rcursivement N questions.

Mthode
Cette extension est particulirement utile pour les calculs d'agggat aprs filtrage ou pour enchaner les calculs d'aggrgat (par exemple pour faire la moyenne de sommes aprs regroupement).

Exemple : Enchanement de calculs d'aggrgat


select avg(s) from (select sum(b) as s from t group by a)

F. Le Langage de Contrle de Donnes de SQL


Objectifs
Matriser les bases du SQL pour attribuer et rvoquer des droits sur des objets d'une base de donnes.

Le LCD permet de crer les utilisateurs et de dfinir leurs droits sur les objets de la BD de faon
S. Crozat - UTC

102

Le langage SQL

dclarative. Il permet notamment l'attribution et la rvocation de droits des utilisateurs, sur l'ensemble des bases du SGBD, sur une BD en particulier, sur des relations d'une BD, voire sur certains attributs seulement d'une relation.

1. Attribution de droits
SQL propose une commande pour attribuer des droits des utilisateurs sur des tables.

Syntaxe
GRANT <liste de droits> ON <nom table> TO <utilisateur> [WITH GRANT OPTION] Les droits disponibles renvoient directement aux instructions SQL que l'utilisateur peut excuter : SELECT INSERT DELETE UPDATE ALTER De plus il est possible de spcifier le droit ALL PRIVILEGES qui donne tous les droits l'utilisateur (sauf celui de transmettre ses droits). La clause WITH GRANT OPTION est optionnelle, elle permet de prciser que l'utilisateur a le droit de transfrer ses propres droits sur la table d'autres utilisateur. Une telle clause permet une gestion dcentralise de l'attribution des droits et non reposant uniquement dans les mains d'un administrateur unique. La spcification PUBLIC la place d'un nom d'utilisateur permet de donner les droits spcifis tous les utilisateurs de la BD.

Exemple
GRANT SELECT, UPDATE ON Personne TO Pierre; GRANT ALL PRIVILEGES ON Adresse TO PUBLIC;

Remarque : Droits sur un SGBD


Certains SGBD permettent de spcifier des droits au niveau du SGBD, c'est dire pour toutes les tables de toutes les BD du SGBD. La syntaxe dans le cas de MySQL est "*.*" la place du nom de la table. Dans ce cas les droits CREATE et DROP sont gnralement ajouts pour permettre ou non aux utilisateurs de crer et supprimer des BD et des tables.

Remarque : Droits sur une BD


Certains SGBD permettent de spcifier des droits au niveau d'une BD, c'est dire pour toutes les tables de cette base de donnes. La syntaxe dans le cas de MySQL est "nom_bd.*" la place du nom de la table. Dans ce cas les droits CREATE et DROP sont gnralement ajouts pour permettre ou non aux utilisateurs de crer et supprimer des tables sur cette BD.

Remarque : Droits sur une vue


Il est possible de spcifier des droits sur des vues plutt que sur des tables, avec une syntaxe identique (et un nom de vue la place d'un nom de table).

Remarque : Catalogue de donnes


Les droits sont stocks dans le catalogue des donnes, il est gnralement possible de modifier directement ce catalogue la place d'utiliser la commande GRANT. Cela reste nanmoins dconseill.

S. Crozat - UTC

103

Le langage SQL

Remarque : Cration des utilisateurs


Les modalits de cration d'utilisateurs, voire de groupes d'utilisateurs dans le SGBD, reste dpendantes de celui-ci. Des commande SQL peuvent tre disponibles, telles que CREATE USER, ou bien la commande GRANT lorsque qu'elle porte sur un utilisateur non existant peut tre charge de crer cet utilisateur. Des modules spcifiques d'administration sont gnralement disponibles pour prendre en charge la gestion des utilisateurs.

2. Rvocation de droits
SQL propose une commande pour rvoquer les droits attribus des utilisateurs.

Syntaxe
REVOKE <liste de droits> ON <nom table> FROM <utilisateur>

Exemple
REVOKE SELECT, UPDATE ON Personne FROM Pierre; REVOKE ALL PRIVILEGES ON Adresse FROM PUBLIC;

Remarque : Rvocation du droit de donner les droits


Pour retirer les droits de donner les droits un utilisateur (qui l'a donc obtenu par la clause WITH GRANT OPTION), il faut utiliser la valeur GRANT OPTION dans la liste des droits rvoqus.

Remarque : Rvocation en cascade


Lorsque qu'un droit est supprim pour un utilisateur, il l'est galement pour tous les utilisateurs qui avait obtenu ce mme droit par l'utilisateur en question.

3. Cration d'utilisateurs
Le standard SQL laisse la gestion des utilisateurs la discrtion du SGBD. Nanmoins le commande CREATE USER est couramment propose (Oracle, Postgres, ...).

G. En rsum : SQL
Langage SQL
Le langage SQL permet la cration, le contrle et la manipulation d'une BD. LDD Permet de crer, modifier et supprimer les objets d'une BD CREATE TABLE CREATE VIEW LCD Permet de dfinir les droits des utilisateurs sur les objets de la BD GRANT REVOKE LMD Permet d'entrer et sortir des donnes dans la BD INSERT, UPDATE, DELETE SELECT
S. Crozat - UTC

104

Le langage SQL

H. Bibliographie commente sur le SQL


Complment : Exerciseur faire
Tutoriel SQL [w_univ-lyon2.fr/~jdarmont] Un excellent exerciseur permettant de poser des questions en SQL une base de donnes en temps rel. 18 questions faire absolument.

Complment : Pour continuer de s'exercer


Initiation SQL : Cours et exercices corrigs [Pratt01] Un ensemble d'exemples, de questions/rponses, de how-to, et d'exercices corrigs pour travailler les basiques du LMD SQL avec une approche trs pratique. Un bon outil pour s'entraner et un bon compagnon avoir ses cts pour des dbuts en SQL (pour la ralisation de travaux pratiques par exemple). Programmation SQL [Mata03] De nombreux exemples et exercices, des listings complets, une rfrence SQL (mots rservs et diagrammes de Conway de la syntaxe).

Complment : Pratique
Comprendre les jointures dans Access [w_mhubiche.developpez.com] Un tutoriel trs pdagogique sur l'expression de jointures sous Access qui aide comprendre l'opration de jointure en gnral.

S. Crozat - UTC

105

La thorie de la normalisation relationnelle


V-

Les dpendances fonctionnelles Les formes normales Bibliographie commente sur la normalisation

417 433 456

La thorie de la normalisation relationnelle est trs importante pour la conception de BD, dans la mesure o elle donne le cadre thorique pour la gestion de la redondance, et dans la mesure o une bonne matrise de la redondance est un aspect majeur de cette conception.

A. Les dpendances fonctionnelles


Objectifs
Comprendre la problmatique de la redondance et des dpendances fonctionnelles.

1. Exercice introductif : Redondance


Soit la relation R suivante, dfinie en extension :
A 0 0 0 0 1 0 1 1 1 2 1 1 2 3 4 1 B 1 1 2 3 3 3 3 4 C 10 10 10 10 20 10 20 20 D 5 9 6 7 7 9 8 9 E X X X X Y X Y Y F A G S D D G F G G

Tableau 21 Relation R

S. Crozat - UTC

107

La thorie de la normalisation relationnelle

Question 1
[Solution n4 p 185]

Proposez une cl primaire pour cette relation. Justifiez brivement. Question 2


[Solution n5 p 186]

Cette relation contient-elle des redondances ? Si oui lesquelles ? Justifiez brivement. Question 3
[Solution n6 p 186] Si la relation contient des redondances, proposez une solution contenant exactement la mme information, mais sans redondance.

2. Les problmes soulevs par une mauvaise modlisation


Attention
Il y a toujours plusieurs faons de modliser conceptuellement un problme, certaines sont bonnes et d'autres mauvaises. C'est l'expertise de l'ingnieur en charge de la modlisation, travers son exprience accumule et sa capacit traduire le problme pos, qui permet d'obtenir de bons modles conceptuels. S'il est difficile de dfinir un bon modle conceptuel, on peut par contre poser qu'un bon modle logique relationnel est un modle o la redondance est contrle. On peut alors poser qu'un bon modle conceptuel est un modle conceptuel qui conduit un bon modle relationnel, aprs application des rgles de passage E-A ou UML vers relationnel. Mais on ne sait pas pour autant le critiquer avant ce passage, autrement qu' travers l'oeil d'un expert. A dfaut de disposer d'outils systmatiques pour obtenir de bons modles conceptuels, on cherche donc critiquer les modles relationnels obtenus. La thorie de la normalisation est une thorie qui permet de critiquer, puis d'optimiser, des modles relationnels, de faon en contrler la redondance.

Exemple : Un mauvais modle relationnel


Imaginons que nous souhaitions reprsenter des personnes, identifies par leur numro de scurit sociale, caractrises par leur nom, leur prnom, ainsi que les vhicule qu'elles ont achet, pour un certain prix et une certaine date, sachant qu'un vhicule est caractris par un type, une marque et une puissance. On peut aboutir la reprsentation relationnelle suivante : Personne(NSS, Nom, Prnom, Marque, Type, Puiss, Date, Prix) Imaginons que cette relation soit remplie par les donnes suivantes :
NSS 16607... 16607... 24908... 15405... 15405... 15405... Nom Dupont Dupont Martin Durand Durand Durand Prnom Paul Paul Marie Olivier Olivier Olivier Marque Renault Peugeot Peugeot Peugeot Renault BMW Type Clio 504 504 504 Clio 520 5 7 7 7 5 10 Puiss Date 1/1/96 2/7/75 1/10/89 8/8/90 7/6/98 4/5/2001 Prix 60000 47300 54900 12000 65000 98000

Tableau 22 Relation redondante On peut alors se rendre compte que des redondances sont prsentes, et l'on sait que ces redondances conduiront des problmes de contrle de la cohrence de l'information (erreur dans la saisie d'un numro de scurit sociale), de mise jour (changement de nom reporter dans de multiples tuples), de perte d'information lors de la suppression de donnes (disparition des informations concernant un type de vhicule) et de difficult reprsenter certaines informations (un type de vhicule sans propritaire).

108

S. Crozat - UTC

La thorie de la normalisation relationnelle

Complment
On conseillera de lire le chapitre 2 de SQL2 SQL3, applications Oracle [Delmal01] (pages 42 49) qui propose une trs bonne dmonstration par l'exemple des problmes poss par une mauvaise modlisation relationnelle.

3. Principes de la normalisation
Fondamental
La thorie de la normalisation est une thorie destine concevoir un bon schma dune BD sans redondance dinformation et sans risques d'anomalie de mise jour. Elle a t introduite ds l'origine dans le modle relationnel. La thorie de la normalisation est fonde sur deux concepts principaux : Les dpendances fonctionnelles Elles traduisent des contraintes sur les donnes. Les formes normales Elles dfinissent des relations bien conues. La mise en oeuvre de la normalisation est fonde sur la dcomposition progressive des relations jusqu' obtenir des relations normalises.

4. Dpendance fonctionnelle
Dfinition : Dpendance fonctionnelle
Soient R(A1, A2, ... , An) un schma de relation, X et Y des sous-ensembles de A1, A2, ... , An. On dit que X dtermine Y, ou que Y dpend fonctionnellement de X, si est seulement s'il existe une fonction qui partir de toute valeur de X dtermine une valeur unique de Y. Plus formellement on pose que X dtermine Y pour une relation R ssi quelle que soit l'instance r de R, alors pour tous tuples t1 et t2 de r on a : Projection (t1,X) = Projection (t2,X) Projection (t1,Y) = Projection (t2,Y)

Syntaxe
Si X dtermine Y, on note : XY

Exemple
Soit la relation R suivante : Personne(NSS, Nom, Prnom, Marque, Type, Puiss, Date, Prix) On peut poser les exemples de DF suivants : NSSNom NSSPrnom TypeMarque TypePuiss (NSS, Type, Date)Prix etc.

Remarque : Comment trouver les DF ?


Une DF est dfinie sur l'intention du schma et non son extension. Une DF traduit une certaine perception de la ralit. Ainsi la DF (NSS, Type, Date)Prix signifie que personne n'achte deux voitures du mme type la mme date. La seule manire de dterminer une DF est donc de regarder soigneusement ce que signifient les attributs

S. Crozat - UTC

109

La thorie de la normalisation relationnelle

et de trouver les contraintes qui les lient dans le monde rel.

Remarque : Pourquoi trouver les DF ?


Les DF font partie du schma d'une BD, en consquence, elles doivent tre dclares par les administrateurs de la BD et tre contrles par le SGBD. De plus l'identification des DF est la base indispensable pour dterminer dans quelle forme normale est une relation et comment en diminuer la redondance.

5. Les axiomes d'Armstrong


Introduction
Les DF obissent des proprits mathmatiques particulires, dites axiomes d'Armstrong.

Dfinition : Rflexivit
Tout groupe d'attributs se dtermine lui mme et dtermine chacun de ses attributs (ou sous groupe de ses attributs). Soient X et Y des attributs : XYXY et XYX et XYY

Dfinition : Augmentation
Si un attribut X dtermine un attribut Y, alors tout groupe compos de X enrichi avec d'autres attributs dtermine un groupe compos de Y et enrichi des mmes autres attributs. Soient X, Y et Z des attributs : XY XZYZ

Dfinition : Transitivit
Si un attribut X dtermine un attribut Y et que cet attribut Y dtermine un autre attribut Z, alors X dtermine Z. Soient X, Y et Z des attributs : XY et YZ XZ

6. Autres proprits dduites des axiomes d'Armstrong


Introduction
A partir des axiomes d'Amstrong, on peut dduire un certain nombre de proprits supplmentaires.

Dfinition : Pseudo-transitivit
Si un attribut X dtermine un autre attribut Y, et que Y appartient un groupe G qui dtermine un troisime attribut Z, alors le groupe G' obtenu en substituant Y par X dans G dtermine galement Z. Soient, W, X, Y et Z des attributs : XY et WYZ WXZ Cette proprit est dduite de l'augmentation et de la rflexivit : XY et WYZ WXWY et WYZ WXZ

Dfinition : Union
Si un attribut dtermine plusieurs autres attributs, alors il dtermine tout groupe compos de ces attributs. Soient X, Y et Z des attributs : XY et XZ XYZ Cette proprit est dduite de la rflexivit, de l'augmentation et de la transitivit : XY et XZ XXX et XXXY et YXYZ XYZ

110

S. Crozat - UTC

La thorie de la normalisation relationnelle

Dfinition : Dcomposition
Si un attribut dtermine un groupe d'attribut, alors il dtermine chacun des attributs de ce groupe pris individuellement. Soient X, Y et Z des attributs : XYZ XZ et XY Cette proprit est dduite de la rflexivit et de la transitivit : XYZ XYZ et YZZ XZ

7. DF lmentaire
Dfinition : Dpendance fonctionnelle lmentaire
Soit G un groupe d'attributs et A un attribut, une DF GA est lmentaire si A n'est pas inclu dans G et qu'il n'existe pas d'attribut A' de G qui dtermine A.

Exemple : DF lmentaires

ABC est lmentaire si ni A, ni B pris individuellement ne dterminent C. Nom, DateNaissance, LieuNaissancePrnom est lmentaire.

Exemple : DF non lmentaires


ABA n'est pas lmentaire car A est inclu dans AB. ABCB n'est pas lmentaire car CB n'est pas un attribut, mais un groupe d'attributs. NSSNom, Prnom n'est pas lmentaire.

Remarque
On peut toujours rcrire un ensemble de DF en un ensemble de DFE, en supprimant les DF triviales obtenues par rflexivit et en dcomposant les DF partie droite non atomique en plusieurs DFE.

Exemple : Rcriture de DF en DFE


On peut rcrire les DF non lmentaires de l'exemple prcdent en les dcomposant DFE : ABA n'est pas considre car c'est une DF triviale obtenu par rflxivit. ABCB est dcompose en ABC et ABB, et ABB n'est plus considre car triviale. NSSNom, Prnom est dcompose en NSSNom et NSSPrnom.

8. Notion de fermeture transitive des DFE


Dfinition : Fermeture transitive
On appelle fermeture transitive F+ d'un ensemble F de DFE, l'ensemble de toutes les DFE qui peuvent tre composes par transitivit partir des DFE de F.

Exemple
Soit l'ensemble F = {AB, BC, BD, AE}. La fermeture transitive de F est F+ = { AB, BC, BD, AE, AC, AD }

9. Notion de couverture minimale des DFE


Dfinition : Couverture minimale
La couverture minimale dun ensemble de DFE est un sous-ensemble minimum des DFE permettant de gnrer toutes les autres DFE.
S. Crozat - UTC

111

La thorie de la normalisation relationnelle

Synonymes : Famille gnratrice

Remarque
Tout ensemble de DFE (et donc tout ensemble de DF) admet au moins une couverture minimale (et en pratique souvent plusieurs).

Exemple
L'ensemble F = {AB, AC, BC, CB} admet les deux couvertures minimales : CM1 = {AC, BC, CB} et CM2 = {AB, BC, CB}

10. Notion de graphe des DFE


On peut reprsenter un ensemble de DFE par un graphe orient (ou plus prcisment un rseau de Ptri), tel que les noeuds sont les attributs et les arcs les DFE (avec un seul attribut en destination de chaque arc et ventuellement plusieurs en source).

Exemple : Relation Voiture


Soit la relation Voiture(NVH, Marque, Type, Puis, Couleur) avec l'ensemble des DF F = {NVHType, TypeMarque, TypePuis, NVHCouleur}. On peut rprsenter F par le graphe ci-dessous :

Graphe des DFE de la relation Voiture

Exemple : Relation CodePostal


Soit la relation CodePostal(Code, Ville, Rue ) avec l'ensemble des DF F={CodeVille, (Ville,Rue)Code}. On peut rprsenter F par le graphe ci-dessous :

Graphe des DFE de la relation CodePostal

11. Dfinition formelle d'une cl


Dfinition : Cl
Soient une relation R(A1,A2,...,An) et K un sous-ensemble de A1,A2,... ,An. K est une cl de R si et seulement si KA1,A2,...,An et il n'existe pas X inclu dans K tel que XA1,A2,...,An. Une cl est donc un ensemble minimum d'attributs d'une relation qui dtermine tous les autres.

112

S. Crozat - UTC

La thorie de la normalisation relationnelle

Remarque : Cls candidates et cl primaire


Si une relation comporte plusieurs cls, chacune est dite cl candidate et l'on en choisit une en particulier pour tre la cl primaire.

Attention : Les cls candidates sont des cls !


Toutes les cls candidates sont des cls, pas seulement la cl primaire.

Remarque : Les cls candidates se dterminent mutuellement


Toute cl candidate dtermine les autres cls candidates, puisque qu'une cl dtermine tous les attributs de la relation.

Complment : Relation "toute cl"


tant donn qu'une relation dispose forcment d'une cl, si une relation R n'admet aucune cl K sous ensemble des attributs A1..An de R, alors c'est que K=A1..An (la cl est compose de tous les attributs de R). On parle de relation "toute cl".

B. Les formes normales


Objectifs
Savoir crer des schmas relationnels en troisime forme normale.

1. Principe de la dcomposition
Dfinition : Dcomposition
L'objectif de la dcomposition est de "casser" une relation en relations plus petites afin d'en liminer les redondances et sans perdre d'information. La dcomposition d'un schma de relation R(A1,A2,...,An) est le processus de remplacement de ce schma par une collection de schmas R1,R2,...,Rn telle qu'il est possible de reconstruire R par des oprations relationnelles de jointure sur R1,R2,...,Rn.

Dfinition : Dcomposition prservant les DF


Une dcomposition d'une relation R en relations R1,R2,...Rn prserve les DF si la fermeture transitive F+ des DF de R est la mme que celle de l'union des fermetures transitives des DF de R1,R2,...,Rn.

Exemple : Dcomposition prservant les DF d'une relation Voiture


Soit la relation Voiture(Numro,Marque,Type,Puissance,Couleur) avec la fermeture transitive suivante : NumroMarque NumroType NumroPuissance NumroCouleur TypeMarque TypePuissance On peut dcomposer Voiture en prservant les DF en deux relations R1(Numro,Type,Couleur) et R2(Type,Puissance,Marque).

S. Crozat - UTC

113

La thorie de la normalisation relationnelle

2. Formes normales
Les formes normales ont pour objectif de dfinir la dcomposition des schmas relationnels, tout en prservant les DF et sans perdre d'informations, afin de reprsenter les objets et associations canoniques du monde rel de faon non redondante. On peut recenser les 6 formes normales suivantes, de moins en moins redondantes : la premire forme normale la deuxime forme normale la troisime forme normale la forme normale de Boyce-Codd la quatrime forme normale la cinquime forme normale La troisime forme normale est gnralement reconnue comme tant la plus importante respecter.

3. Premire forme normale


Dfinition : 1NF
Une relation est en 1NF si elle possde au moins une cl et si tous ses attributs sont atomiques.

Dfinition : Attribut atomique


Un attribut est atomique si il ne contient qu'une seule valeur pour un tuple donn, et donc s'il ne regroupe pas un ensemble de plusieurs valeurs.

Exemple : Avoir plusieurs mtiers


Soit la relation Personne instancie par deux tuples : Personne(#Nom, Profession) (Dupont, Gomtre) (Durand, Ingnieur-Professeur) La relation n'est pas en 1NF, car l'attribut Profession peut contenir plusieurs valeurs. Pour que la relation soit en 1NF, on pourrait par exemple ajouter Profession la cl et faire apparatre deux tuples pour Durand, on obtiendrait : Personne(#Nom, #Profession) (Dupont, Gomtre) (Durand, Ingnieur) (Durand, Professeur) Une autre solution aurait t d'ajouter un attribut ProfessionSecondaire. On obtiendrait ainsi : Personne(#Nom, Profession, ProfessionSecondaire) (Dupont, Gomtre, Null) (Durand, Ingnieur, Professeur)

Remarque : Relativit de la notion d'atomicit


L'atomicit d'un attribut est souvent relative : on peut dcider qu'un attribut contenant une date n'est pas atomique (et que le jour, le mois et l'anne constituent chacun une valeur), ou bien que l'attribut est de domaine date et donc qu'il est atomique.

114

S. Crozat - UTC

La thorie de la normalisation relationnelle

Fondamental

: noncer les cls

Le modle relationnel impose qu'une relation ait une cl, donc la condition "est en 1NF si elle possde une cl" est superflue (au pire la relation est "toute cl"). Il est nanmoins fondamental d'avoir identifi les cls au dbut du processus de normalisation.

4. Deuxime forme normale


Introduction
La deuxime forme normale permet d'liminer les dpendances entre des parties de cl et des attributs n'appartenant pas une cl.

Dfinition : 2NF
Une relation est en 2NF si elle est en 1NF et si tout attribut qui n'est pas dans une cl ne dpend pas d'une partie seulement d'une cl. C'est dire encore que toutes les DF issues d'une cl sont lmentaires.

Exemple : Echelle de salaire


Soit la relation Personne : Personne(#Nom, #Profession, Salaire) Soit les DF suivantes sur cette relation : Nom,ProfessionSalaire ProfessionSalaire On note alors que la premire DF est issue de la cl et qu'elle n'est pas lmentaire (puisque Profession dtermine Salaire) et donc que le schma n'est pas en 2NF. Pour avoir un schma relationnel en 2NF, il faut alors dcomposer Personne en deux relations : Personne(#Nom, #Profession=>Profession) Profession(#Profession, Salaire) On remarque que ce schma est en 2NF (puisque Salaire dpend maintenant fonctionnellement d'une cl et non plus d'une partie de cl). On remarque aussi que la dcomposition a prserv les DF, puisque nous avons prsent : ProfessionSalaire (DF de la relation Profession) Nom,ProfessionProfession (par Rflexivit) Nom,ProfessionSalaire (par Transitivit)

Remarque
La dfinition de la 2NF doit tre vrifie pour toutes les cls candidates et non seulement la cl primaire (dans le cas o il y a plusieurs cls).

Remarque
Si toutes les cls d'une relation ne contiennent qu'un unique attribut, et que la relation est en 1NF, alors la relation est en 2NF.

5. Troisime forme normale


Introduction
La troisime forme normale permet d'liminer les dpendances entre les attributs n'appartenant pas une cl.

S. Crozat - UTC

115

La thorie de la normalisation relationnelle

Dfinition : 3NF
Une relation est en 3NF si elle est en 2NF et si tout attribut n'appartenant pas une cl ne dpend pas d'un autre attribut n'appartenant pas une cl. C'est dire encore que toutes les DFE vers des attributs n'appartenant pas une cl, sont issues d'une cl.

Attention : Cl candidate
La dfinition concerne toutes les cls candidates et non uniquement la cl primaireSQL avanc : Programmation et techniques avances. [Celko00] (p.27).

Exemple : chelle de salaire et de prime


Soit la relation Profession : Profession(#Profession, Salaire, Prime) Soit les DF suivantes sur cette relation : ProfessionSalaire ProfessionPrime SalairePrime Cette relation n'est pas en 3NF car Salaire, qui n'est pas une cl, dtermine Prime. Pour avoir un schma relationnel en 3NF, il faut dcomposer Profession : Profession(#Profession, Salaire=>Salaire) Salaire(#Salaire, Prime) Ce schma est en 3NF, car Prime est maintenant dtermin par une cl. On remarque que cette dcomposition prserve les DF, car par transitivit, Profession dtermine Salaire qui dtermine Prime, et donc Profession dtermine toujours Prime.

Remarque : 3NF et 2NF


Une relation en 3NF est forcment en 2NF car : Toutes les DFE vers des attributs n'appartenant pas une cl sont issues d'une cl, ce qui implique qu'il n'existe pas de DFE, issues d'une partie de cl vers un attribut qui n'appartient pas une cl. Il ne peut pas non plus exister de DFE issues d'une partie de cl vers un attribut appartenant une cl, par dfinition de ce qu'une cl est un ensemble minimum. On n'en conclut qu'il ne peut exister de DFE, donc a fortiori pas de DF, issues d'une partie d'une cl, et donc que toutes les DF issues d'une cl sont lmentaires.

Fondamental
Il est souhaitable que les relations logiques soient en 3NF. En effet, il existe toujours une dcomposition sans perte d'information et prservant les DF d'un schma en 3NF. Si les formes normales suivantes (BCNF, 4NF et 5NF) assurent un niveau de redondance encore plus faible, la dcomposition permettant de les atteindre ne prserve plus les DF.

Remarque : Limite de la 3NF


Une relation en 3NF permet des dpendances entre des attributs n'appartenant pas une cl vers des parties de cl.

6. Forme normale de Boyce-Codd


Introduction
La forme normale de Boyce-Codd permet d'liminer les dpendances entre les attributs n'appartenant pas une cl vers les parties de cl.

116

S. Crozat - UTC

La thorie de la normalisation relationnelle

Dfinition : BCNF
Une relation est en BCNF si elle est en 3NF et si tout attribut qui n'appartient pas une cl n'est pas source d'une DF vers une partie d'une cl. C'est dire que les seules DFE existantes sont celles dans lesquelles une cl dtermine un attribut.

Exemple : Employs
Soit la relation Personne : Personne(#NSS, #Pays, Nom, Rgion) Soit les DF suivantes sur cette relation : NSS,PaysNom NSS,PaysRgion RgionPays Il existe une DFE qui n'est pas issue d'une cl et qui dtermine un attribut appartenant une cl. Cette relation est en 3NF, mais pas en BCNF (car en BCNF toutes les DFE sont issues d'une cl). Pour avoir un schma relationnel en BCNF, il faut dcomposer Personne : Personne(#NSS, #Region=>Region, Nom) Region(#Region, Pays) Remarquons que les DF n'ont pas t prserves par la dcomposition puisque NSS et Pays ne dterminent plus Rgion.

Remarque : Simplicit
La BCNF est la forme normale la plus facile apprhender intuitivement et formellement, puisque les seules DFE existantes sont de la forme KA o K est une cl.

Attention : Non prservation des DF


Une dcomposition en BCNF ne prserve en gnral pas les DF.

* * *

La normalisation permet de dcomposer un schma relationnel afin d'obtenir des relations non redondantes. La 3NF est souhaitable car toujours possible obtenir, sans perte d'information et sans perte de DF. La BCNF est galement indique, car elle est un peu plus puissante, et plutt plus simple que la 3NF. La BCNF n'est pas encore suffisante pour liminer toutes les redondances. Il existe pour cela les 4NF et 5NF qui ne sont pas abordes dans ce cours. Notons galement que les cas de non-4NF et de non-5NF sont assez rares dans la ralit.

C. Bibliographie commente sur la normalisation


Complment : Synthses
SQL2 SQL3, applications Oracle [Delmal01] On conseillera de lire le chapitre 2 (pages 42 49) qui propose une trs bonne dmonstration par l'exemple des problmes poss par une mauvaise modlisation relationnelle.

S. Crozat - UTC

117

La thorie de la normalisation relationnelle

Une description claire des formes normales, rendue simple et pratique grce des exemples reprsentatifs (chapitre 2).

118

S. Crozat - UTC

Technologie Web, PHP et Java


VI -

VI
459 465 466 473 482 500 506 511

Architecture 3-tier Rappels HTML Introduction PHP PHP et BD Java et BD (JDBC) Introduction aux servlets Servlets et BD Bibliographie commente sur les architectures Web, PHP et Java

Si les SGBD offrent les technologies de modlisation et de gestion des donnes, ils ncessitent la plupart du temps d'tre interfacs avec des applications qui fournissent un accs orient mtier aux utilisateurs, notamment travers des IHM volues. Mme des systmes comme Oracle ou PostgreSQL qui proposent un langage procdural (comme PL/SQL) au dessus de la couche SQL, ne sont pas auto-suffisants. Les langages volus comme Java, C ou Perl sont couramment utiliss pour implmenter la couche applicative d'exploitation des BD. Les applications de BD sont aujourd'hui gnralement ralises selon des architectures rseaux. L'explosion d'Internet de son ct a favoris le langage HTML pour implmenter les IHM et a vu la naissance de langages de script pour implmenter la couche applicative ct serveur, tels que PHP, ASP ou JSP, plus simples que les langages classiques.

A. Architecture 3-tier
Objectifs
Comprendre les principes des architectures d'application de bases de donnes (en particulier 3-tier et Web) Savoir appliquer les principes d'une architecture Web dans le cadre des technologies Servlets ou PHP et HTML

1. Notions d'achitecture client-serveur


Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL.

S. Crozat - UTC

119

Technologie Web, PHP et Java

a) Prsentation de l'architecture d'un systme client/serveur


De nombreuses applications fonctionnent selon un environnement clients/serveur, cela signifie que des machines clientes (des machines faisant partie du rseau) contactent un serveur, une machine gnralement trs puissante en terme de capacits d'entre-sortie, qui leur fournit des services. Ces services sont des programmes fournissant des donnes telles que l'heure, des fichiers, une connexion, ... Les services sont exploits par des programmes, appels programmes clients, s'excutant sur les machines clientes. On parle ainsi de client FTP, client de messagerie, ..., lorsque l'on dsigne un programme, tournant sur une machine cliente, capable de traiter des informations qu'il rcupre auprs du serveur (dans le cas du client FTP il s'agit de fichiers, tandis que pour le client messagerie il s'agit de courrier lectronique). Dans un environnement purement Client/serveur, les ordinateurs du rseau (les clients) ne peuvent voir que le serveur, c'est un des principaux atouts de ce modle.

b) Avantages de l'architecture client/serveur


Le modle client/serveur est particulirement recommand pour des rseaux ncessitant un grand niveau de fiabilit, ses principaux atouts sont : des ressources centralises tant donn que le serveur est au centre du rseau, il peut grer des ressources communes tous les utilisateurs, comme par exemple une base de donnes centralise, afin d'viter les problmes de redondance et de contradiction une meilleure scurit car le nombre de points d'entre permettant l'accs aux donnes est moins important une administration au niveau serveur les clients ayant peu d'importance dans ce modle, ils ont moins besoin d'tre administrs un rseau volutif grce cette architecture ont peu supprimer ou rajouter des clients sans perturber le fonctionnement du rseau et sans modifications majeures

c) Inconvnients du modle client/serveur


L'architecture client/serveur a tout de mme quelques lacunes parmi lesquelles : un cot lev d la technicit du serveur un maillon faible le serveur est le seul maillon faible du rseau client/serveur, tant donn que tout le rseau est architectur autour de lui! Heureusement, le serveur a une grande tolrance aux pannes (notamment grce au systme RAID)

d) Fonctionnement d'un systme client/serveur

Schma de fonctionnement d'un systme client/serveur Un systme client/serveur fonctionne selon le schma suivant: Le client met une requte vers le serveur grce son adresse et le port, qui dsigne un service particulier du serveur Le serveur reoit la demande et rpond l'aide de l'adresse de la machine client et son port

120

S. Crozat - UTC

Technologie Web, PHP et Java

2. Notions d'architecture 3-tier


Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL.

a) Prsentation de l'architecture deux niveaux


L'architecture deux niveaux (aussi appele architecture 2-tier, tier signifiant tage en anglais) caractrise les systmes clients/serveurs dans lesquels le client demande une ressource et le serveur la lui fournit directement. Cela signifie que le serveur ne fait pas appel une autre application afin de fournir le service.

Architecture 2-tier

b) Prsentation de l'architecture trois niveaux


Dans l'architecture 3 niveaux (appele architecture 3-tier), il existe un niveau intermdiaire, c'est--dire que l'on a gnralement une architecture partage entre: 1. Le client le demandeur de ressources 2. Le serveur d'application (appel aussi middleware) le serveur charg de fournir la ressource mais faisant appel un autre serveur 3. Le serveur secondaire (gnralement un serveur de base de donnes), fournissant un service au premier serveur

Architecture 3-tier

S. Crozat - UTC

121

Technologie Web, PHP et Java

Remarque
tant donn l'emploi massif du terme d'architecture 3 niveaux, celui-ci peut parfois dsigner aussi les architectures suivantes : Partage d'application entre client, serveur intermdiaire, et serveur d'entreprise Partage d'application entre client, base de donnes intermdiaire, et base de donnes d'entreprise

c) Comparaison des deux types d'architecture


L'architecture deux niveaux est donc une architecture client/serveur dans laquelle le serveur est polyvalent, c'est--dire qu'il est capable de fournir directement l'ensemble des ressources demandes par le client. Dans l'architecture trois niveaux par contre, les applications au niveau serveur sont dlocalises, c'est--dire que chaque serveur est spcialis dans une tche (serveur web/serveur de base de donnes par exemple). Ainsi, l'architecture trois niveaux permet : une plus grande flexibilit/souplesse une plus grande scurit (la scurit peut tre dfinie pour chaque service) de meilleures performances (les tches sont partages)

d) L'architecture multi-niveaux
Dans l'architecture 3 niveaux, chaque serveur (niveaux 1 et 2) effectue une tche (un service) spcialise. Ainsi, un serveur peut utiliser les services d'un ou plusieurs autres serveurs afin de fournir son propre service. Par consquence, l'architecture trois niveaux est potentiellement une architecture N niveaux.

Architecture N-tier

3. Notions de serveur Web


Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL. Un serveur web est un logiciel permettant des clients d'accder des pages web, c'est--dire en ralit

122

S. Crozat - UTC

Technologie Web, PHP et Java

des fichiers au format HTML partir d'un navigateur (aussi appel browser) install sur leur ordinateur distant. Un serveur web est donc un "simple" logiciel capable d'interprter les requtes HTTP arrivant sur le port associ au protocole HTTP (par dfaut le port 80), et de fournir une rponse avec ce mme protocole. Les principaux serveurs web sur le march sont entre autres : Apache Microsoft IIS (Internet Information Server) Microsoft PWS (Personal Web Server) ...

4. Architecture Web
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL.

Exemples d'architecture Web

B. Rappels HTML
Objectifs
Savoir crer des formulaires en HTML

1. Formulaires HTML
Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL. Grce la balise FORM du langage HTML, il est trs simple de crer des formulaires comprenant : des cases cocher des champs de saisie des boutons radio des listes choix multiples ...
S. Crozat - UTC

123

Technologie Web, PHP et Java

Exemple : Formulaire
<form Method="GET" Action="test.php3"> Nom : <input type="text" name="nom"><br/> Prnom : <input type="text" name="prenom"><br/> Age : <input type="text" name="age"><br/> <input type="submit"> </form>

Exemple de formulaire HTML

C. Introduction PHP
Objectifs
Comprendre le fonctionnement d'un langage applicatif ct serveur comme PHP Savoir-faire des programmes simples en PHP Connatre les possibilits objet de PHP

1. Prsentation de PHP
Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL. PHP est un langage interprt (un langage de script) excut du ct serveur (comme les scripts CGI, ASP, ...) et non du ct client (un script crit en Javascript ou une applet Java s'excute sur votre ordinateur...). La syntaxe du langage provient de celles du langage C, du Perl et de Java. Ses principaux atouts sont : La gratuit et la disponibilit du code source (PHP est distribu sous licence GNU GPL) La simplicit d'criture de scripts La possibilit d'inclure le script PHP au sein d'une page HTML (contrairement aux scripts CGi, pour lesquels il faut crire des lignes de code pour afficher chaque ligne en langage HTML) La simplicit d'interfaage avec des bases de donnes (de nombreux SGBD sont supports, le plus utilis avec ce langage est MySQL). L'intgration au sein de nombreux serveurs web (Apache, Microsoft IIS, ...)

Exemple : SGBD supports par PHP


dBase Informix MySQL Oracle

124

S. Crozat - UTC

Technologie Web, PHP et Java

PostgreSQL Sybase ...

2. Principes de PHP
Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL.

a) L'interprtation du code par le serveur


Un script PHP est un simple fichier texte contenant des instructions crites l'aide de caractres ASCII 7 bits (des caractres non accentus) incluses dans un code HTML l'aide de balises spciales et stock sur le serveur. Ce fichier doit avoir une extension particulire (qui dpend de la configuration du serveur HTTP, en gnral ".php") pour pouvoir tre interprt par le serveur. Ainsi, lorsqu'un navigateur (le client) dsire accder une page dynamique ralise en php : 1. Le serveur reconnait qu'il s'agit d'un fichier php 2. Il lit le fichier php 3. Ds que le serveur rencontre une balise indiquant que les lignes suivantes sont du code php, il "passe" en mode php, ce qui signifie qu'il ne lit plus les instructions: il les excute. 4. Lorsque le serveur rencontre une instruction, il la transmet l'interprteur 5. L'interprteur excute l'instruction puis envoie les sorties ventuelles au serveur 6. A la fin du script, le serveur transmet le rsultat au client (le navigateur)

Remarque : Code PHP et clients Web


Un script PHP est interprt par le serveur, les utilisateurs ne peuvent donc pas voir le code source ! Le code php3 stock sur le serveur n'est donc jamais visible directement par le client puisque ds qu'il en demande l'accs, le serveur l'interprte ! De cette faon aucune modification n'est apporter sur les navigateurs...

b) Implantation au sein du code HTML


Pour que le script soit interprt par le serveur deux conditions sont ncessaires : Le fichier contenant le code doit avoir l'extension .php3 et non .html Le code php3 contenu dans le code HTML doit tre dlimit par les balises "<?php" et "?>"

Exemple : Hello world


<html> <head><title>Exemple</title></head> <body> <?php echo "Hello world"; ?> </body> </html>

3. Syntaxe PHP
Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL. Une instruction se termine par un ";"
S. Crozat - UTC

125

Technologie Web, PHP et Java

Les espaces, retours chariot et tabulation ne sont pas pris en compte par l'interprteur. Les commentaires sont crits entre les dlimiteurs "/*" et "*/" sur une seule ligne. Le langage est case-sensitive (sauf pour les fonctions).

4. Variables en PHP
Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL.
Les variables ne sont pas dclares Les variables commencent pas un $. Les variables ne sont pas types. Les variables en langage PHP peuvent tre de trois types : Scalaires (entiers, chane, rels). Tableaux (un tableau pouvant tre multidimensionnel et stocker des scalaires de types diffrents). Tableaux associatifs (indexs par des chanes).

Exemple
$Entier=1; $Reel=1.0; $Chaine="1"; $Tableau[0]=1 $Tableau[1]="1" $TableauMulti[0][0]="1.0" $TableauAssoc[Age]=18

5. Structures de contrle en PHP


Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL. if (condition ralise) { liste d'instructions } elseif (autre condition ralise) { autre srie d'instructions } ... else (dernire condition ralise) { srie d'instructions }

Remarque : Switch
switch / case / default / break

126

S. Crozat - UTC

Technologie Web, PHP et Java

6. Boucles en PHP
Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL. for (compteur; condition; modification du compteur) { liste d'instructions }

while (condition ralise) { liste d'instructions }

7. Fonctions en PHP
Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL. function Nom_De_La_Fonction(argument1, argument2, ...) { liste d'instructions ... return valeur_ou_variable; ... }

8. Objets en PHP
Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL.

Syntaxe

: Dclaration d'une classe

class Nom_de_la_classe { // Dclarations des donnes membres var $Donnee_Membre_1; var $Donnee_Membre_2; ... // Dclarations des mthodes function Nom_de_la_fonction_membre1(parametres) { liste d'instructions; } ... }

Remarque : This
Le mot cl $this permet d'accder l'objet en cours lors de la dclaration des mthodes.

S. Crozat - UTC

127

Technologie Web, PHP et Java

Syntaxe

: Instanciation d'objets

$Nom_de_l_objet = new Nom_de_la_classe;

Syntaxe

: Accs aux proprit

$Nom_de_l_objet->Nom_de_la_proprit = Valeur;

Syntaxe

: Accs aux mthodes

$Nom_de_l_objet->Nom_de_la_mthode (parametre1,parametre2,...);

9. Envoi de texte au navigateur


Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL.

Syntaxe
echo Expression;

Remarque : Print
La fonction "print" est iso-fonctionnelle avec "echo" et printf plus complexe permet en plus le formatage des donnes (peu utilise).

Attention : L'importance de l'implantation du code php au sein du code HTML


Le code PHP peut tre implant au sein du code HTML. Cette caractristique n'est pas ngliger car le fait d'crire uniquement du code PHP l o il est ncessaire rend la programmation plus simple (il est plus simple d'crire du code HTML que des fonctions echo ou print, dans lesquelles les caractres spciaux doivent tre prcds d'un antislash sous peine de voir des erreurs lors de l'excution). L'exemple le plus simple concerne les pages dynamiques dont l'en-tte est toujours le mme: dans ce cas, le code PHP peut ne commencer qu' partir de la balise BODY, au moment o la page peut s'afficher diffremment selon une variable par exemple. Mieux, il est possible d'crire plusieurs portions de script en PHP, spares par du code HTML statique car les variables/fonctions dclares dans une portion de script seront accessibles dans les portions de scripts infrieures.

10. Formulaires HTML et PHP


Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL. Php rend trs simple la rcupration de donnes envoyes par l'intermdiaire de formulaires HTML. Lorsque l'on soumet un formulaire un fichier PHP, toutes les donnes du formulaire lui sont passes en tant que variables, c'est--dire chacun des noms associs aux champs (ou boutons) du formulaire prcds du caractre $.

128

S. Crozat - UTC

Technologie Web, PHP et Java

Exemple : Page d'appel


<html> <body> <form method="GET" action="test.php"> <input type="text" size="20" name="MaVar"/> <input type="submit"/> </form> </body> </html>

Exemple : Page appele (test.php)


<?php echo $MaVar; ?>

Remarque : $HTTP_GET_VARS[]
Selon la configuration du module PHP, il est possible que la rcupration directe des donnes issue du formulaire HTML ne fonctionne pas. On peut dans ce cas utiliser les tableaux associatifs $HTTP_GET_VARS['variable'] et $HTTP_POST_VARS['variable'] ou $_GET['variable'] et $_POST['variable'] (selon configuration). <?php $MaVarLocale=$HTTP_GET_VARS['MaVar'] echo $MaVarLocale; ?>

D. PHP et BD
Objectifs
Comprendre le rle des langages applicatifs (PHP par exemple) comme surcouche au dessus des SGBD et SQL Savoir accder une base de donnes depuis un programme PHP

1. Interfaage avec PostgreSQL


Syntaxe : Connexion la BD

$vConn = pg_connect("host=$vHost port=$vPort dbname=$vDbname user=$vUser password=$vPassword");

Syntaxe

: Interrogation de la BD

$vSql ="SELECT ..."; $vQuery=pg_query($vConn, $vSql); while ($vResult = pg_fetch_array($vQuery, null, PGSQL_ASSOC)) {

S. Crozat - UTC

129

Technologie Web, PHP et Java

... $vResult[nom_attribut]... }

Syntaxe

: Alimentation de la BD

$vSql="INSERT ..."; $vQuery=pg_query($vConn, $vSql);

Syntaxe

: Dconnexion de la base de donnes

pg_close($conn)

2. Interfaage PHP avec MySQL


Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL. Complt partir de MySQL 4 : Installation, mise en oeuvre et programmation [Thibaud03].

Connexion au serveur
mysql_connect($host,$user,$passwd);

Connexion la base de donnes


mysql_select_db($bdd);

Excution de requte SQL


$result=mysql_query($query)

Traitement de rsultat de requte SELECT


/* Test d'excution de la requte */ if (! mysql_fetch_row($result)) { echo "Aucun enregistrement ne correspond\n"; } else { while($row = mysql_fetch_row($result)) { ... $row[1] ... $row[2] ... } }

Dconnexion de la base de donnes


mysql_close();

3. Interfaage PHP avec Oracle


Introduction
Fait partir de http://www.php.net/manual/en/ref.oci8.php.

130

S. Crozat - UTC

Technologie Web, PHP et Java

Remarque
L'API OCI a remplac l'ancienne API ORA (qui n'est plus supporte dans PHP).

Syntaxe

: Connexion la base de donnes

oci_connect tablit une connexion entre le serveur PHP et un serveur Oracle. connection_id oci_connect(string username, string password, string bd);

Exemple
if (! $conn=oci_connect($user, $passwd, $bd)) { echo "Impossible d'tablir la connexion "; exit; }

Syntaxe

: Prparation d'une requte

oci_parse analyse une requte SQL et retourne un pointeur sur un statement (espace de requte). statement_handle oci_parse(connection_id connection, string query);

Exemple
if(! $statement=oci_parse($conn, $sql)) { echo "Impossible de prparer la requte"; exit; }

Syntaxe

: Excution d'une requte

oci_execute excute une commande dj prpare avec OCIParse. Il est possible de spcifier le mode d'excution des transactions (par dfaut, il est en auto-commit, c'est dire que l'ordre commit est pass automatiquement aprs chaque instruction SQL). Il est prfrable d'utiliser le mode OCI_DEFAULT qui permet de contrler les commits. boolean oci_execute(statement_handle statement, int mode); $mode permet de paramtrer le commit (par dfaut, le commit est envoy automatiquement si l'excution est correcte).

Exemple
if(! oci_execute($statement, OCI_DEFAULT)) { echo "Impossible d'excuter la requte"; exit; }

Syntaxe

: Commit d'une transaction

oci_commit valide la transaction en cours sur une connexion. boolean oci_commit(connection_id connection);

S. Crozat - UTC

131

Technologie Web, PHP et Java

Exemple
if(! oci_commit($conn)) { echo "Impossible de valider la transaction"; exit; }

Remarque : Rollback
oci_rollback permet d'annuler une transaction.

Syntaxe

: Rcupration d'enregistrements

oci_fetch_array retourne la ligne suivante (pour une instruction SELECT) dans un tableau une dimension (il crasera le contenu du tableau s'il existe). Par dfaut, le tableau sera un tableau double index, numrique et associatif. array oci_fetch_array(statement_handle statement)

Exemple
while ($row=oci_fetch_array($statement)) { echo $results[0]; echo $results[1]; ... }

Syntaxe

: Dconnexion de la base de donnes

oci_close ferme une connexion Oracle. boolean oci_close(connection_id connection);

Exemple
if (! oci_close($conn)) { echo "Impossible de fermer la connexion "; exit; }

4. Architecture PHP/Oracle
Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL.

132

S. Crozat - UTC

Technologie Web, PHP et Java

Exemple d'architecture 3-tiers : PHP/Oracle

E. Java et BD (JDBC)
Objectifs
Savoir accder une base de donnes depuis un programme Java

1. JDBC
JDBC est une API permettant la communication entre un programme Java et un serveur de BD JDBC permet donc la fois une indpendance vis vis de la machine accueillant l'application (pourvu qu'elle dispose d'une machine virtuelle Java) et vis vis du serveur de BD (pourvu qu'il dispose d'un pilote JDBC).

Remarque : ODBC
ODBC est quivalent JDBC, dans le monde Windows (i.e. il offre une API de communication entre une application Windows et un serveur de BD possdant un pilote ODBC).

2. Structure globale d'un appel BD depuis Java


Dclarer le pilote JDBC li la base interroge Se connecter la BD (et dfinir ventuellement des paramtres sur cette connexion) Crer un espace pour les requtes (statement) Excuter une requte SQL et rcuprer le rsultat (s'il s'agit d'une requte de slection) dans un objet ddi (ResultSet) 5. Traiter le rsultat 6. Fermer la connexion
1. 2. 3. 4.

Remarque : Gestion d'exception


Un tel programme Java doit imprativement ajouter une boucle de traitement des exceptions Try / Catch

S. Crozat - UTC

133

Technologie Web, PHP et Java

3. Syntaxe d'un appel BD depuis Java


Syntaxe : Package

import java.sql.*

Syntaxe

: Dclaration du pilote JDBC

DriverManager.registerDriver (new pilote JDBC); Driver Oracle : oracle.jdbc.OracleDriver Driver MySQL : com.mysql.jdbc.Driver

Syntaxe

: Connexion la BD

Connection vCon = DriverManager.getConnection(paramtres de connexion); Paramtres Oracle : "jdbc:oracle:thin:user/password@host:port:database" Paramtres MySQL : "jdbc:mysql://host/database","user","password"

Syntaxe

: Cration d'un espace de requte

Statement vSt = vCon.createStatement();

Syntaxe

: Excution d'une requte

ResultSet vRs = vSt.executeQuery("requte SQL");

Syntaxe

: Traitement des rsultats

while(vRs.next()) { ... vRs.getString(1) ... }

Remarque
Il faut galement ajouter et rfrencer le fichier jar du pilote JDBC.

4. Exemple : Insertion et slection dans Oracle depuis Java


package nf17; import java.sql.*; import oracle.jdbc.OracleDriver; public class Exemple1 { public static void main(String[] args) { try { DriverManager.registerDriver (new OracleDriver()); Connection vCon = DriverManager.getConnection("jdbc:oracle:thin:nf17/nf17@loc alhost:1521:test"); vCon.setAutoCommit(true); Statement vSt = vCon.createStatement();

134

S. Crozat - UTC

Technologie Web, PHP et Java

// Requte d'insertion de donnes vSt.execute("INSERT INTO tIntervenant (pkNom, aPrenom, aPoste) VALUES ('CROZAT', 'STEPHANE', '4287')"); // Requte de slection ResultSet vRs = vSt.executeQuery("SELECT t.pkNom, t.aPrenom FROM tIntervenant t"); while(vRs.next()){ String vNom = vRs.getString(1); String vPrenom = vRs.getString(2); System.out.println("Nom="+vNom+"Prenom="+vPrenom); } } catch (Exception e) { e.printStackTrace(); } } }

Complment : Pilote JDBC pour Oracle

5. Espace de requte prpar


Remarque : Statement
L'objet Statement est le plus simple utiliser pour crer un espace de requte. Il prsente nanmoins l'inconvnient de ne pas grer la protection des caractres spciaux et de ne pas tre paramtrable. Ainsi, par exemple, on ne pourra pas insrer de caractre contenant une apostrophe "'".

Syntaxe

: Espace prpar

PreparedStatement vSt = fCon.prepareStatement(requte SQL avec des ?); Des "?" peuvent tre insrs dans la requte, ils correspondent des valeurs qui seront paramtres par les mthodes setString, setInt, etc. vSt.setString (index?, valeur); vSt.setInt (index?, valeur); ... "index?" correspond au numro d'ordre du point d'interrogation dans la requte SQL. vSt.execute();

Exemple
PreparedStatement vSt = fCon.prepareStatement("SELECT * FROM t1 WHERE x=?"); vSt.setString(1, "test") vSt.execute()

6. Exemple : Insertion en utilisant un espace prpar dans Oracle


package nf17; import java.sql.*;

S. Crozat - UTC

135

Technologie Web, PHP et Java

import oracle.jdbc.OracleDriver; public class Exemple2 { public static void main(String[] args) { try { DriverManager.registerDriver (new OracleDriver()); Connection vCon = DriverManager.getConnection("jdbc:oracle:thin:nf17/nf17@loc alhost:1521:test"); vCon.setAutoCommit(true); PreparedStatement vSt = fCon.prepareStatement("INSERT INTO tIntervenant (pkNom, aPrenom) VALUES (?, ?)"); vSt.setString (1, "CROZAT"); vSt.setString (2, "Stphane"); vSt.execute(); } catch (Exception e) { e.printStackTrace(); } } }

7. Appel Oracle PL/SQL


Syntaxe : Espace d'appel PL/SQL

CallableStatement vSt = fCon.prepareCall(bloc PL/SQL avec des ?); Des "?" peuvent tre insrs dans le bloc, ils correspondent : des valeurs qui seront passes en paramtre (setString, setInt, etc.) et des valeurs de retour (registerOutParameter et getString, getInt, etc.) vSt.setString (index?, valeur); vSt.setInt (index?, valeur); ... vSt.registerOutParameter(index?, Types.TYPEBD); ... "index?" correspond au numro d'ordre du point d'interrogation dans la requte SQL. Types.TYPEBD correspond au type retourn par la fonction PL/SQL (VARCHAR, INTEGER, etc.) vSt.execute(); vRs = vSt.getString(index?) vRs = vSt.getInt(index?) ...

Exemple
CallableStatement vSt = fCon.prepareCall("begin ?:=pInsertIntervenant(?,?); end;"); vSt.setString(2, "CROZAT"); vSt.setString(3, "Stphane"); vSt.registerOutParameter(1, Types.VARCHAR); vSt.execute(); String vRs = vSt.getString(1);

136

S. Crozat - UTC

Technologie Web, PHP et Java

8. Insertion en utilisant un appel Oracle PL/SQL


package nf17; import java.sql.*; import oracle.jdbc.OracleDriver; public class Exemple3 { public static void main(String[] args) { try { DriverManager.registerDriver (new OracleDriver()); Connection vCon = DriverManager.getConnection("jdbc:oracle:thin:nf17/nf17@loc alhost:1521:test"); CallableStatement vSt = fCon.prepareCall("begin ?:=pInsertIntervenant(?,?); end;"); vSt.setString(2, vNewNom); vSt.setString(3, vNewPrenom); vSt.registerOutParameter(1, Types.VARCHAR); vSt.execute(); String vRs = vSt.getString(1); System.out.println(vRs); } catch (Exception e) { e.printStackTrace(); } } }

F. Introduction aux servlets


1. Prsentation des servlets
Dfinition : servlet
Les servlets sont des applications Java excutes sur un serveur d'application, permettant de gnrer des rponses dynamiques pour rpondre aux requtes d'un client Web (i.e. des pages HTML construites dynamiquement).

Remarque : applet
Ne pas confondre les servlets avec les applets, qui sont des applications Java excutes ct client (tlcharges par le navigateur Web et excutes par une machine Java locale)

Remarque : Portabilit
En tant que programme Java, les servlets peuvent tre excutes sur toutes plates-formes. Les servlets sont excute grce un moteur de servlet (tels que Tomcat, Jserv, etc.) Le moteur de servlet est indpendant du serveur HTTP (Apache , IIS, etc.) et doit lui tre connect (pour que le serveur HTTP redirige les excutions des servlets au moteur de servlet). Un moteur de servlet peut nanmoins faire office de serveur HTTP.

S. Crozat - UTC

137

Technologie Web, PHP et Java

Architecture servlet (depuis commentcamarche.org, Copyright 2003 Jean-Franois Pillou, image soumise la licence GNU FDL).

Remarque : Comparaison servlet / PHP


Les servlets sont plus performantes que le code PHP, car le pseudo-code Java est pr-compil alors que les scripts PHP sont interprts. Les servlets fournissent un niveau de programmation plus lev, en tant que langage objet, que les scripts PHP, elles sont aussi plus complexes crire.

2. Implmenter une servlet


Package : javax.servlet.* et javax.servlet.http.*
1. Crer une classe qui hrite de HttpServlet 2. Surcharger les mthodes de la classe HttpServlet pour rcuprer les paramtres de la requte et construire la rponse

3. Quelques mthodes de la classe HttpServlet


doGet(HttpServletRequest vReq, HttpServletResponse vRes) Invoque lors de l'appel de la servlet par une mthode GET doPost(HttpServletRequest vReq, HttpServletResponse vRes) Invoque lors de l'appel de la servlet par une mthode POST service(HttpServletRequest vReq, HttpServletResponse vRes) Invoque chaque requte du client (GET ou POST), elle est donc utilisable la place de DoGet et DoPost, sans besoin de diffrencier les deux types d'appel. init() Invoque chaque instanciation de la servlet.

4. Formulaires HTML et servlet (HttpServletRequest)


La mthode "getParameter" de l'objet de type "HttpServletRequest" permet de rcuprer les paramtres issus du formulaire HTML :

138

S. Crozat - UTC

Technologie Web, PHP et Java

Exemple
String vNom = pReq.getParameter("nom");

5. Cration de la rponse (HttpServletResponse)


L'objet de type "HttpServletResponse" permet de crer la rponse la requte HTTP (donc la page HTML) Il faut pour cela : 1. Instancier un objet "PrintWriter" li l'objet "HttpServletResponse" : "PrintWriter vOut = pResp.getWriter();" 2. Ecrire dans l'objet "PrintWriter" le code HTML de la rponse : vOut.println("code HTML");

Exemple
PrintWriter vOut = pResp.getWriter(); vOut.println("<html><body>Hello World</body></html>");

6. Cycle de vie d'une servlet


Introduction
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL.
1. La servlet est charge au dmarrage du serveur ou lors de la premire requte 2. La mthode init() est invoque l'instanciation 3. Lors de la premire requte, les objets Request et Response sont crs spcifiquement pour la requte 4. La mthode service() est appele chaque requte dans une nouvelle thread. Les objets Request et Response lui sont passs en paramtre 5. Grce l'objet Request, la mthode service() va pouvoir analyser les informations en provenance du client 6. Grce l'objet Response, la mthode service() va fournir une rponse au client

G. Servlets et BD
1. Exemple d'appel SQL depuis une servlet sous Oracle
package nf17.exercice; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import oracle.jdbc.OracleDriver;

S. Crozat - UTC

139

Technologie Web, PHP et Java

public class ExempleNf17Servlet extends HttpServlet { Connection fCon = null; public void init() throws ServletException { try { DriverManager.registerDriver (new OracleDriver()); fCon = DriverManager.getConnection("jdbc:oracle:thin:nf17/nf17@loc alhost:1521:test"); fCon.setAutoCommit(true); } catch (Exception e) { e.printStackTrace(); } super.init(); } protected void service(HttpServletRequest pReq, HttpServletResponse pResp) throws ServletException, IOException { try { String vNewNom = pReq.getParameter("nom"); String vNewPrenom = pReq.getParameter("prenom"); PreparedStatement vSt = fCon.prepareStatement("INSERT INTO tIntervenant (pkNom, aPrenom) VALUES (?,?)"); vSt.setString(1, vNewNom); vSt.setString(2, vNewPrenom); vSt.execute(); PrintWriter vOut = pResp.getWriter(); vOut.println("<html><body>"); vOut.print("OK"); vOut.println("</body></html>"); } catch (Exception e) { PrintWriter vOut = pResp.getWriter(); e.printStackTrace(vOut); } } }

Remarque : PreparedStatement
La syntaxe utilise ici l'objet Prepared Statement plutt que directement un objet Statement.

2. Exemple d'appel Oracle PL/SQL depuis une servlet


package nx17.exercice; import java.io.IOException; import java.io.PrintWriter; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Types; import javax.servlet.ServletException;

140

S. Crozat - UTC

Technologie Web, PHP et Java

import import import import

javax.servlet.http.HttpServlet; javax.servlet.http.HttpServletRequest; javax.servlet.http.HttpServletResponse; oracle.jdbc.OracleDriver;

public class ExerciceNx17Servlet extends HttpServlet { Connection fCon = null; public void init() throws ServletException { try { DriverManager.registerDriver (new OracleDriver()); fCon = DriverManager.getConnection("jdbc:oracle:thin:nf17/nf17@loc alhost:1521:test"); fCon.setAutoCommit(true); } catch (Exception e) { e.printStackTrace(); } super.init(); } protected void service(HttpServletRequest pReq, HttpServletResponse pResp) throws ServletException, IOException { try { String vNewNom = pReq.getParameter("nom"); String vNewPrenom = pReq.getParameter("prenom"); CallableStatement vSt = fCon.prepareCall("begin ?:=pInsertIntervenant(?,?); end;"); vSt.setString(2, vNewNom); vSt.setString(3, vNewPrenom); vSt.registerOutParameter(1, Types.VARCHAR); vSt.execute(); String vRs = vSt.getString(1); PrintWriter vOut = pResp.getWriter(); vOut.println("<html><body>"); vOut.print(vRs); vOut.println("</body></html>"); } catch (Exception e) { PrintWriter vOut = pResp.getWriter(); e.printStackTrace(vOut); } } }

Remarque : CallableStatement
L'usage de l'objet Callable Statement est obligatoire pour faire des appels PL/SQL.

3. Architecture servlet/Oracle
Fait partir de www.commentcamarche.net. Copyright 2003 Jean-Franois Pillou. Document soumis la licence GNU FDL.

S. Crozat - UTC

141

Technologie Web, PHP et Java

Exemple d'architecture 3-tiers : servlets/Oracle

H. Bibliographie commente sur les architectures Web, PHP et Java


Complment : Rfrences pratiques
PHP prcis et concis [Lerdof01] Une rfrence trs rapide et pratique utiliser sur PHP. HTTP prcis et concis [Wong00] Petite rfrence pour comprendre rapidement les bases du protocole HTTP. Apache prcis et concis [Ford01] Petite rfrence pour configurer un serveur Apache.

Complment : Pour aller plus loin...


SQL2 SQL3, applications Oracle [Delmal01] Une description claire, avec des exemples, de l'interface JDBC entre Java et Oracle.

142

S. Crozat - UTC

VII -

Technologie Access
Gnralits Cration de schma relationnel sous Access Le langage de requtes sous Access Cration d'application Access (formulaires et macros) Modules de programmation VBA sous Access Autres aspects En rsum : Access Bibliographie commente sur Access Questions-rponses sur Access

VII
515 520 524 528 534 540 540 540 541

Access est un SGBDR du monde Microsoft Windows qui prsente des particularits intressantes dans le cadre de ce cours. Il propose une implmentation sticte des concepts relationnels, et ce dans un cadre facile d'accs techniquement : il constitue un bon moyen d'accs aux technologies des BD. C'est galement un outil intressant pour prototyper des applications de BD ou pour raliser des applications finales dans des cadres d'usage restreint ou bureautique.

A. Gnralits
Objectifs
Dcouvrir un SGBD simple d'usage Dcouvrir des principes de maquettage rapide d'application BD

1. Prsentation d'Access
Access est un SGBDR et un outil de cration d'application qui permet de : Crer des schmas relationnels et donc crer des tables, des contraintes sur les champs de ces tables et des contraintes rfrentielles entre ces tables Saisir des donnes dans les tables, avec l'instruction standard LMD INSERT ou travers une interface graphique compose de formulaires crire des requtes et des vues en utilisant le langage SQL ou bien le formalisme graphique QBE Raliser des formulaires permettant d'alimenter ou interroger la BD Raliser des tats permettant de mettre en forme des rsultats de requte de type SELECT Raliser des macros permettant de programmer une application complte

S. Crozat - UTC

143

144
Technologie Access

Application
Tables
Stockage et contrle des donnes Lecture et manipulation des donnes

Base de donnes
Requtes tat
Sorties Affichage graphique des donnes

Formulaires

Entres

Interface de saisie des donnes

Macros
Automatisation d'actions

Modules
Programmation d'actions

Raliser des modules VBA permettant galement de programmer une application complte, avec un spectre plus volu que celui des macros

Graphique 2 Liste et fonctions des objets manipulables avec Access

S. Crozat - UTC

Technologie Access

2. Avantages et inconvnient d'Access a) Avantages


Rapidit de mise en oeuvre Facilit de maintenance ou reprise Rapidit de cration d'IHM Langage graphique permettant un apprentissage rapide Schma de donnes robustes (intgrit rfrentielle, contraintes, type de donnes, etc.)

b) Inconvnient

Utilisation restreinte aux plate-formes Microsoft Windows Fiabilit douteuse Rsistance faible la monte en charge Peu adapt des logiques rseaux Systme de scurit non standard, complexe et inadapt Faiblesse des IHM pour des applications complexes

c) Cas d'usage
Access est recommand pour : L'apprentissage des BD Le prototypage rapide de BD et d'application (prcision de cahier des charges, dialogue dmonstratif avec les utilisateurs, phase avant la ralisation avec un SGBD industriel, etc.). Les petites applications locales ou LAN, avec peu d'utilisateurs (dizaines) et un volume de donnes raisonnable (centaines de milliers d'enregistrements, mga-octets). Les applications ne pouvant tre maintenues par des informaticiens.

3. Sparation base de donnes et application


Conseil
Access est la fois un SGBDR permettant de crer des BD et la fois un outil de dveloppement d'application. Il est recommand, pour des raisons mthodologiques et pratiques de bien sparer ces deux aspects du problme.

Mthode : Sparation BD / Application


Pour crer une application complte sous Access, crer deux fichiers ".mdb", l'un contiendra la base de donnes (uniquement les tables et les vues sous forme de requtes), l'autre l'application (les formulaires, tats, macros et modules VBA). Pour relier les deux applications, crer des tables lis dans le fichier "application", l'aide du menu "Fichier / Donnes externes / Lier les tables"

Avantages de cette sparation

Sparation des problmatiques de dveloppement On ne fait pas la fois le travail de modlisation de la BD et le travail de ralisation d'une application d'exploitation de cette BD. Utilisation en rseau LAN Une BD centrale sur un serveur et N applications clientes locales. Diminution des risques de crash Le crash de l'application cliente n'affecte pas la BD contenant les donnes. Facilit de maintenance La mise jour de l'application ne remet pas en cause la BD et ne ncessite pas de couper temporairement l'accs au donnes. Les dveloppements d'volution de l'application Version N

S. Crozat - UTC

145

Technologie Access

peuvent se poursuivre en parallle de l'exploitation de la version N-1, sans avoir besoin de remettre jour les donnes. L'extension du schma relationnel peut se faire de faon transparente pour les applications. Scurit Plusieurs applications diffrentes peuvent utiliser la mme base de donnes, tout en travaillant sur des tables diffrentes.

Remarque : Maintenance
Toutes les modifications concernant la structure de la base de donnes (donc les tables) doivent tre faites dans le fichier de la base de donnes et toutes les autres modifications doivent tre faites dans le fichier de l'application (formulaires, tats, etc.)

B. Cration de schma relationnel sous Access


Objectifs
Connatre les lments techniques de base pour apprendre crer une BD sous Access

1. LDD et cration de tables sous Access


En gnral la cration de la base se fera en utilisant l'interface graphique d'dition de table (mode Cration), puis en dclarant les attributs un par un en mode interactif.

Remarque : Cration du schma en mode interactif


L'inconvnient de cette faon de crer la base est qu'il est impossible de recrer automatiquement le schma de la base une seconde fois.

Remarque : Cration du schma en utilisant le LDD


Il est possible de crer le schma relationnel dans Access en utilisant des instructions LDD. Il faut pour cela crer une nouvelle requte, passer en mode SQL et crire chaque requte SQL une par une. Cette solution est donc peu efficace, moins d'avoir crit un petit programme VBA qui lit une suite d'instructions LDD et peut ainsi procder la constitution complte de la base partir d'un seul fichier externe.

2. Domaines et types de donnes sous Access


Types de donnes

Texte Numrique Date/Heure Oui/Non Montaire NumroAuto Mmo Objet OLE Lien hypertexte

146

S. Crozat - UTC

Technologie Access

Remarque : Domaine
Le domaine est un type de donnes pour lequel on a ventuellement ajout certaines contraintes supplmentaires (telles que la taille du champs, la prcision d'un numrique, des contraintes de validit restreignant les valeurs possibles, la prsence ou non de la valeur de nullit, etc.)

Remarque : numration
Pour crer un type numration, il faut partir d'un type de donnes standard, et restreindre le domaine aux valeurs autorises spcifies par l'numration. On utilise pour cela la proprit "Valide si" relative l'attribut concern, avec une expression du type "Valeur1 ou Valeur2 ou ValeurN". C'est quivalent la clause CHECK en SQL standard.

3. Contraintes
Contraintes de tables et de colonnes
Access permet d'exprimer les contraintes SQL LDD standard : PRIMARY KEY : Slectionner le ou les attributs concerns puis cliquer sur l'icne de cl primaire NOT NULL : Null interdit = oui dans les proprits du champs Unique : Index = Oui - Sans doublons dans les proprits du champs ou utiliser la fentre Index pour les cls composes de plusieurs attributs CHECK : Valide si dans les proprits du champs ou de la table (pour une contrainte de table)

Attention : Enumration
Pour dclarer une numration dans Access, il faut imprativement la spcifier au niveau de la structure de la base de donnes, donc au niveau de la proprit Valide si de l'attribut. La dclaration de cette numration au niveau d'une liste droulante dans l'IHM de saisie de la table ( Liste de choix) n'est pas pertinente car c'est uniquement ce "petit bout d'IHM" qui contrle les valeurs de l'numration et non le moteur du SGBD. Donc une autre partie de l'application avec une autre IHM pourra permettre des valeurs diffrentes, ce qui n'est pas souhait.

Contraintes d'intgrit rfrentielle


Access permet de spcifier les contraintes d'intgrit rfrentielle (clause FOREIGN KEY) travers la fentre Relations (menu Outils de bases de donnes). Pour spcifier une contrainte d'intgrit rfrentielle, il faut 1. afficher les tables concernes 2. glisser-dposer la cl trangre sur la cl primaire 3. cocher la case Appliquer l'intgrit rferentielle

S. Crozat - UTC

147

Technologie Access

Intgrit rfrentielle

Attention
Dans Access le mot "relation" dsigne en fait les contraintes d'intgrits rfrentielles, et non les tables comme c'est le cas dans la terminologie relationnelle. Ceci est un abus de langage.

Rappel : Contrle sur les donnes


Le contrle sur les donnes opr par un SGBD correspond divers lments : contrle du domaine, mais aussi de l'intgrit rfrentielle, de la non nullit, etc. Ces contraintes peuvent tre leves : en spcifiant un domaine trs permissif (comme les chanes de caractres), en supprimant les clause de non nullit, ou bien en supprimant l'intgrit rfrentielle (dans la fentre Relations d'Access). La suppression des contraintes peut tre ncessaire pour intgrer temporairement des donnes qui ne correspondent pas au modle. Elles devront bien entendu dans ce cas tre mises en conformit au plus vite, et les contraintes pourront alors tre ractives.

4. Vues et "requtes" LDD


Il est possible de spcifier des crations de schmas relationnels en utilisant le LDD de SQL classique sous Access. Pour cela il faut crer un objet Requte, puis indiquer que c'est une requte de type Cration de table.

Attention : Types non reconnus


Access n'accepte pas toutes les dclarations de type dans ce cadre. Par exemple il n'est pas possible de dclarer INTERGER(X), mais seulement INTEGER. La contrainte de taille ne pouvant se faire qu'en mode interactif.

148

S. Crozat - UTC

Technologie Access

Vues
Sous Access, les objets Requtes sont enregistrs. Pour crer une vue, il suffit donc ce crer un objet Requte de Slection et de l'enregistrer. En fait, sous Access, la norme et la vue et l'exception la requte au sens d'vanescent (pour excuter une requte qui ne soit pas enregistre comme une vue, il suffit de ne pas enregistrer la requte).

C. Le langage de requtes sous Access


Objectifs
Connatre les principes du langage de requte QBE et savoir lire une requte QBE

1. Questions QBE
Remarque
L'on parle de QBE pour dsigner le langage graphique propos par Access, mme s'il ne s'agit que d'une inspiration du "vrai" langage QBE propos par IBM ds 1977 et implment dans la base Paradox en 1985. QBE permet la cration de requte LMD en mode interactif, sans crire de code. Il faut pour cela : 1. Ajouter les tables 2. Raliser les jointures en glissant-dposant une des proprits joindre sur l'autre (par dfaut l'interface joint les cls trangres et les cls primaires, il est bien entendu possible de supprimer la jointure). 3. Glisser-dposer les proprits projeter sur la grille 4. Effectuer les restrictions sur la ligne "critre" de la grille.

S. Crozat - UTC

149

Technologie Access

Exemple : Equivalence QBE-SQL

Une requte QBE annote en SQL

Remarque : Jointure externe


Pour reprsenter une jointure externe gauche ou droite, afficher les proprits de la jointure (double-clic ou clic droit sur le lien), puis slectionner l'option adquate.

Une jointure externe gauche

Attention : Joker
Les jokers sous Access ne sont pas standard, ils s'expriment l'aide des caractres * au lieu de % pour 0 N caractres et ? au lieu de _ pour 1 et 1 seul caractre.

2. Questions SQL
Pour crire une requte en SQL sous Access, il suffit de crer objet requte, puis de passer en mode SQL (menu Crer). Il est ainsi possible d'crire du LDD (CREATE TABLE) et du LMD (SELECT, INSERT, UPDATE).

Remarque : quivalence QBE / SQL


Il est possible de faire des aller-retour entre le mode SQL et le mode Cration (QBE).

150

S. Crozat - UTC

Technologie Access

3. Manipulation des donnes en QBE


Pour excuter une requte autre que de type SELECT, il faut changer son type via le menu Crer lorsque la requte est en mode Cration. UPDATE : Mise jour INSERT DELETE : Suppression

Changer le type de requte

Attention : Problmes de traduction


Des problmes de traduction dans certaines versions d'Access conduisent des formulations hasardeuses des menus. Ainsi "Mettre jour une requte" signifie "Requte de mise jour" et "Supprimer une requte" signifie "Requte de suppression". L'erreur de traduction vient probablement du double sens de "Update query" et "Delete query" en anglais... Ces dfaut sont supprims dans les versions rcentes d'Access.

4. Clause GROUP BY en QBE


Appliquer la clause GROUP BY se nomme en Access "faire un regroupement". L'interface QBE ne le permet pas par dfaut, il faut au pralable afficher la ligne Opration, qui fera apparatre une ligne supplmentaire sur l'interface (menu Affichage > Oprations avant Access 2007, bouton Totaux depuis)

Activer le GROUP BY

Exemple : Regroupement en QBE sous Access et GROUP BY en SQL

Regroupement en QBE SELECT Effet, Avg(Dure) AS MoyenneDeDure FROM TPotion GROUP BY Effet;

Remarque : HAVING
Pour ajouter une clause HAVING, il suffit d'utiliser la ligne "critre" sous une proprit laquelle est applique une opration.

S. Crozat - UTC

151

Technologie Access

D. Cration d'application Access (formulaires et macros)


Objectifs
Connatre les lments techniques de base pour apprendre crer une application sous Access

Notons que les tats ne sont pas traits ici, mais leur apprentissage est ais une fois le principe compris pour les formulaires.

1. Formulaire lis une table


Dfinition : Formulaire li
Un formulaire li est un formulaire qui offre un accs direct une (et une seule) table. Pour lier un formulaire une table il faut dsigner le nom d'une table dans la proprit "Source" du formulaire.

Source d'un formulaire

Remarque : Contrle li
Dans le cadre d'un formulaire li, il est possible (et c'est mme le seul intrt) de crer des contrles lis. De tels contrles rfrencent directement un attribut d'une table (grce leur proprit "Source contrle") et permettent donc une saisie directe d'information dans la base sans crire de code SQL LMD.

Source d'un contrle

Remarque : Usage des formulaires lis


Il est plutt dconseill de recourir aux formulaires lis, qui, s'ils offrent une premire approche trs simple pour crer des interfaces de saisie, reste trs limits fonctionnellement. On leur prfrera rapidement les formulaires indpendants et les requtes LMD de type INSERT et UPDATE.

152

S. Crozat - UTC

Technologie Access

Attention : Formulaire li et pages multiples


Un formulaire li, lorsqu'il est en "Mode simple" (valeur de la proprit "Affich par dfaut") comporte autant de "pages" qu'il y a d'enregistrements dans la table lie. Chaque page permet de modifier l'enregistrement qu'elle matrialise, et la dernire page permet d'ajouter un nouvel enregistrement. Par dfaut le formulaire s'ouvre toujours sur le premier enregistrement, et il faut donc se dplacer aprs le dernier pour en ajouter un nouveau. Il faut pour cela utiliser les boutons en bas gauche du formulaire :

Dplacement dans les diffrents enregistrements d'un formulaire li

2. Formulaires indpendants
Dfinition : Formulaire indpendants
Les formulaires indpendants ne sont pas lis une table (leur proprit "Source" est vierge). Ils servent rcuprer des valeurs en mmoire, dans des variables, avant d'en faire un traitement par programmation : On pourra par exemple utiliser cette valeur dans une requte SQL LMD de type INSERT pour ajouter des enregistrements dans une table. Il est toujours possible de faire, avec un formulaire indpendant et une requte SQL, ce qu'il est possible de faire avec un formulaire li (et l'on peut bien entendu faire beaucoup plus).

Remarque : Contrles et formulaires indpendants


Les contrles d'un formulaire indpendant ne peuvent bien entendu pas tre lis une table. Ils ne peuvent servir qu' stocker une valeur en mmoire pour un usage donn. Ils sont de ce fait comparable des variables.

Syntaxe

: Utiliser une valeur saisie dans le contrle d'un formulaire indpendant

Pour utiliser les valeurs indpendantes (en mmoire) de contrle d'un formulaire, dans d'autres objets (formulaires, tats, requtes, macros ou modules), utiliser l'une des deux syntaxes suivantes : Formulaires!NomDuFormulaire!NomDuContrle Forms!NomDuFormulaire!NomDuContrle

Exemple : Mise jour de plusieurs tables


1. Saisie de valeurs relatives plusieurs enregistrements, de tables diffrentes, dans un formulaire 2. Utilisation de ces valeurs dans des requtes d'insertion pour ajouter les valeurs dans les tables

INSERT INTO TVilles (pkVille, aPays) VALUES (Formulaires!FChoix!Ville, Formulaires!FChoix!Pays)

S. Crozat - UTC

153

Technologie Access

Exemple : Requtes paramtres


1. Saisie de valeurs relatives des paramtres dans un formulaire 2. Excution d'une requte de slection s'appuyant sur ces paramtres

SELECT * FROM TVilles WHERE Pays = Formulaires!FChoix!Pays

3. Contrles listes
Les listes droulantes sont des contrles trs intressants qui permettent de rcuprer des valeurs dynamiques grce une requte ou de spcifier des valeurs statiques parmi lesquelles l'utilisateur choisira. Pour que les valeurs de la liste soit dfinies dynamiquement partir du rsultat d'une requte, fixer la proprit "Origine source" la valeur "Table/Requte", puis crire la requte dans la proprit "Contenu". Pour que les valeurs de la liste soit dfinies statiquement, fixer la proprit "Origine source" la valeur "Liste Valeurs", puis lister les valeurs en les sparant par des points-virgules dans la proprit "Contenu".

Contenu d'un contrle liste

Remarque : Liste plusieurs colonnes


Il est possible de raliser des listes droulantes plusieurs colonnes. Il suffit pour cela que la requte spcifie dans "Contenu" projette plusieurs attributs. Il faudra dans ce cas rgler correctement les proprits "Nbre colonnes" (le nombre de colonnes) et "Colonne lie" (le numro de la colonne principale, qui renvoie la valeur stocker reellement dans la variable associe au contrle).

Remarque : Rcupration de la valeur d'une colonne d'une liste


Formulaires!NomDuFormulaire!NomDuContrleListe.column(X)

154

S. Crozat - UTC

Technologie Access

Avec X de 0 N-1, N tant le nombre de colonnes

4. Macros
Attention
Un objet "macro" est en fait un objet "groupe de macro". Il faudra afficher les colonnes optionnelles : Noms de macros Conditions Arguments Une macro est dfinie par un nom (premire colonne) et une succession d'instructions (actions dans la dernire colonne) ventuellement soumises des conditions d'excution (seconde colonne). Chaque action requiert de fixer un certain nombre de paramtres qui s'affiche dans la partie basse de l'interface aprs que l'action ait t slectionne.

Interface de cration de macros

Exemple

OuvrirFormulaire Ouvre un formulaire OuvrirEtat Ouvre un tat BoteMsg Cre une bote de dialogue avec l'utilisateur. AtteindreEnregistrement Dans un formulaire li, permet d'atteindre un enregistrement particulier. DfinirValeur Permet de fixer la valeur de n'importe quelle proprit d'un contrle de formulaire. Cette action est trs utile pour rendre les interfaces plus dynamiques. ExcuterMacro Excute une autre macro. Cette action est utile pour modulariser le code Macro (bien que sans passage de paramtres, cela reste sommaire). Fermer Ferme un objet de type fomulaire, tat, etc. TrouverEnregistrement Dans un formulaire li, permet de se rendre un enregistrement particulier en fonction de la valeur de l'un de ses contrles. AtteindreContrle Permet de slectionner un contrle particulier dans un formulaire. Cette action est utile avant d'effectuer un TrouverEnregistrement par exemple.

S. Crozat - UTC

155

Technologie Access

Actualiser Permet de rafrachir un contrle (aprs un DfinirValeur ou pour r-excuter la requte source d'une liste droulante par exemple ) Avertissements Active ou dsactive les avertissements lors de l'excution de requtes. ExcuterCommande Permet d'excuter une des commandes disponible dans les menu d'Access ArrtMacro Stoppe la macro, sans excuter les instructions restantes. Cette actions est utile pour terminer la macro aprs un test par exemple.

Appel des macros


Les macros sont en gnral appeles par des vnements particuliers survenus lors de la manipulation des formulaires et tats (programmation vnementielle des formulaires et tats). Les macros peuvent galement tre appeles par d'autres macro, voire du code VBA.

Complment : Macro AutoExec


Si une macro porte le nom "AutoExec", elle sera excute automatiquement l'ouverture de la base de donnes. Cette macro peut servir typiquement afficher un menu gnral d'entre dans l'application. Pour dsactiver l'excution automatique de la macro AutoExec, maintenez la touche "shift" de l'ordinateur appuye lors du lancement de l'application.

E. Modules de programmation VBA sous Access


Objectifs
Dcouvrir les modalits d'accs une base de donnes via un langage de programmation Savoir accder une base de donnes Access depuis un programme VBA

1. Structure d'un programme VBA


Fonction (function) Retourne une valeur, utilisable dans les requtes, les formulaires et les tats. Procdure (sub) Effectue des oprations, en gnral sur les tables, notion de procdures stockes

Syntaxe
{Sub | Function} nom (param1 As type, ...) {As type retourn} Dim variable1 As type ... programme {End Sub | End Function}

156

S. Crozat - UTC

Technologie Access

2. Fonctions connatre

Traitement de chane : LCase(S), UCase(S), Left(S, 1), Right(S, 1), Len(S), +, ... Gnration alatoire : Randomize, Rnd Gestion nombre : Cast : Int(),

3. Objets VBA pour accder la BD

CurrentDb : Objet base de donnes .CreateQueryDef(nom_requte,code_sql) : Cre un objet requte "nom_requte" avec le code "code_sql". Si "nom_requte" est renseign la requte est enregistre comme un objet persistant dans la base, si "nom_requte" est vide la requte n'est pas enregistre. QueryDef : Objet requte .OpenRecordset : Excute une requte de type SELECT .Execute : Excute une requte de type INSERT, UPDATE ou DELETE (ou LDD) Recordset : Pointeur sur un rsultat de requte .MoveNext, .MoveFirst, .MoveLast : Atteindre l'enregistrement suivant, le premier, le dernier .RecordCount : Le nombre d'enregistrements du rsultat .EOF : Boolen permettant de tester si on a atteint la fin du rsultat !nom_champ : La valeur du champ "nom_champ"

Syntaxe

: Alimentation de la BD

CurrentDb.CreateQueryDef("", "INSERT...").Execute

Syntaxe

: Interrogation de la BD

Set vRs = CurrentDb.CreateQueryDef("", "SELECT...").OpenRecordset Do While Not vRs.EOF ... vRs!MonChamp ... vRs.MoveNext Loop

Remarque : Approche alternative


For i = 1 To vRs.RecordCount ... vRs!MonChamp ... vRs.MoveNext Next i

4. Exemple : Normaliser des chanes de caractres


Function NormaliserChaine(s As String) As String Result = "" For i = 1 To Len(s) C = Right(Left(s, i), 1) Select Case C Case "", "", "" C = "e"

S. Crozat - UTC

157

Technologie Access

Case "" C = "a" Case "" C = "i" End Select Result = Result + C Next i Result = UCase(Left(Result, 1)) + LCase(Right(Result, Len(Result) - 1)) NormaliserChaine = Result End Function

5. Exemple : Accder un fichier externe


Cet exemple (extrait de l'aide en ligne d'Access) utilise la fonction Input pour lire un fichier caractre par caractre et les afficher dans la fentre Excution. Nous supposons que FICHTEST est un fichier texte comportant quelques lignes de donnes. Sub LireFichier() Dim MyChar Open "FICHTEST" For Input As #1 ' Ouvre le fichier Do While Not EOF(1) ' Effectue la boucle jusqu' la fin du fichier MyChar = Input(1, #1) ' Lit un caractre Debug.Print MyChar ' Affiche dans la fentre Excution Loop Close #1 ' Ferme le fichier End Sub

6. Exemple : Parcourir une table ou une requte stocke


Sub ParcoursTable() Set vRs = CurrentDb.OpenRecordset("MaTable") For i = 1 To vRs.RecordCount Debug.Print vRs!MonChamps vRs.MoveNext Next i End Sub

7. Exemple : Parcourir une table passe en paramtre


Sub ParcoursTable(pTable As String, pChamps As String) Set vRs = CurrentDb.OpenRecordset(pTable) Set vChamps = vRs.Fields For i = 0 To vChamps.Count - 1 If vChamps(i).Name = pChamps Then NumChamps = i Next i For i = 1 To vRs.RecordCount Debug.Print vRs.Fields(NumChamps) vRs.MoveNext Next i

158

S. Crozat - UTC

Technologie Access

End Sub

8. Exemple : Parcourir une table et grer les erreurs


Sub ParcoursTable(pTable As String, pChamps As String) On Error GoTo Erreur_ParcoursTable Set vRs = CurrentDb.OpenRecordset(pTable) Set vChamps = vRs.Fields For i = 0 To vChamps.Count - 1 If vChamps(i).Name = pChamps Then NumChamps = i Next i For i = 1 To vRs.RecordCount Debug.Print vRs.Fields(NumChamps) vRs.MoveNext Next i Exit_ParcoursTable: Exit Sub Erreur_ParcoursTable: Debug.Print "Erreur" MsgBox "Erreur" End Sub

9. Exemple : Excuter une requte


Sub ExecuterRequete(pTable As String, pChamps As String) Dim vCodeSql As String vCodeSql = "select " + pChamps + " from " + pTable Set vRs = CurrentDb.CreateQueryDef("", vCodeSql).OpenRecordset For i = 1 To vRs.RecordCount Debug.Print vRs.Fields(0) vRs.MoveNext Next i End Sub

10. Exemple : Crer un schma de BD et initialiser les donnes


Sub InitBD() Const NbLignesSql As Integer = 3 Dim vCodeSql(NbLignesSql) As String vCodeSql(1) = "drop table Table1" vCodeSql(2) = "create table Table1 (Champs1 String(150))" vCodeSql(3) = "insert into Table1 (Champs1) values (""test"")" For i = 1 To NbLignesSql CurrentDb.CreateQueryDef("", vCodeSql(i)).Execute Next i End Sub

S. Crozat - UTC

159

Technologie Access

11. Aide et dboguage


Attention : Accder l'aide en ligne
Pour accder l'aide en ligne sur les fonctions VBA demander l'aide (F1) depuis l'diteur Visual Basic (Module) et non directement depuis Access.

Attention : Fentre d'excution


La fentre d'excution est indispensable pour tester les programmes VBA. Pour obtenir la fentre d'excution, faire "Affichage / Fentre d'excution" dans le menu de l'diteur VBA / Module. La syntaxe "Debug.Print" dans un programme permet ensuite d'afficher des informations dans cette fentre (valeur de variable typiquement).

F. Autres aspects
1. Gestion des droits
Gestion des droits

Non standard Fichier .MDW Pas simple ...

2. Run-time

Ca existe

G. En rsum : Access
Access
la fois un SGBDR pour crer des BD et un outil de dveloppement d'applications BD Dimension relevant de la conception de BD LDD Tables LMD Requtes (Vue) Application Dimension relevant de la conception d'application. IHM Formulaires tats Programmation Macros Modules VBA

H. Bibliographie commente sur Access

160

S. Crozat - UTC

Technologie Access

Complment : Pratique
Comprendre les jointures dans Access [w_mhubiche.developpez.com] Un tutoriel trs pdagogique sur l'expression de jointures sous Access, qui peut par ailleurs servir comprendre l'opration de jointure en gnral si besoin.

Complment : Pour aller plus loin


Developpez.com [w_access.developpez.com] Un portail avec de nombreuses ressources. FAQ de Dveloppez.com [w_access.developpez.com/faq] Une base de questions trs intressante pour la dimension outils de cration d'application d'Access. On consultera en particulier les informations sur la gestion de la scurit, les formulaires, VBA.

I. Questions-rponses sur Access


Comment supprimer les messages d'alertes lors de l'excution des requtes ?
VBA : DoCmd.SetWarnings False Macro : Avertissements=Non

Comment atteindre un contrle d'un sous-formulaire ?


Forms![NomFormulaire].form![NomSousFormulaire]![MaZoneDeTexte] (ici pour une zone de texte)

Comment parcourir un "RecordSet" en VBA?


Rst.MoveFirst While not rst.EOF ' code rst.MoveNext Wend Do Until rst.EOF ' code rst.MoveNext Loop

Comment calculer la difference entre 2 dates en VBA ?


DateDiff("d", date1, date2) 'donne le nombre de jour entre date1 et date2

Comment mettre un point d'arrt dans un code VBA ?


Quand Access passe sur un point d'arrt l'excution du code s'arrte et attends une manuvre de votre part pour continuer. Quand le code est arrt vous pouvez connatre la valeur des variables de votre code simplement en passant le pointeur de la souris dessus. Vous pouvez choisir de continuer excuter le code en mode pas pas en appuyant sur F8. Vous pouvez poursuivre l'excution du code normalement avec F5.

Quel est la diference entre "." et "!" ?


L'oprateur "!" (point d'exclamation) indique que l'lment qui suit est dfini par l'utilisateur (un lment d'une collection). Par exemple, vous pouvez utiliser l'oprateur "!" pour faire rfrence un formulaire

S. Crozat - UTC

161

Technologie Access

ouvert, un tat ouvert, ou un contrle figurant sur un formulaire ou sur un tat. L'oprateur "." (point) indique gnralement que l'lment qui suit est dfini par Microsoft Access. Par exemple, vous pouvez utiliser l'oprateur "." pour faire rfrence une proprit d'un formulaire, d'un tat, ou d'un contrle.

162

S. Crozat - UTC

Ouvrage de rfrence conseill


VIII -

VIII

SQL2 SQL3, applications Oracle [Delmal01] Cet ouvrage aborde tous les thmes du cours de faon claire et illustre, en dehors de la phase de modlisation.

S. Crozat - UTC

163

Questions de synthse

En quoi une base de donnes est-elle plus intressante qu'un systme de fichier classique ?

Quelles sont les fonctions remplies par un SGBD ?

Pourquoi est-ce que l'on distingue trois niveaux de modlisation lors de la conception d'une base de donnes ?

S. Crozat - UTC

165

Questions de synthse

Quelles est la diffrence entres le schma conceptuel et le ou les schmas externes ?

Quelles sont les fonctions d'un langage orient donnes ?

A quoi et qui sert un dictionnaire de donnes ?

Pourquoi est-il fondamental mais difficile de parvenir un MCD correct ?

166

S. Crozat - UTC

Questions de synthse

Enoncer quelques actions mener pour raliser une spcification gnrale de l'existant et des besoins ?

Qu'est ce qui diffrencie fondamentalement un MCD d'un MLD ?

Quels sont les principaux lments du diagramme de classes UML ?

Quelles sont les diffrences et points communs entre la diagramme de classe UML et le modle E-A tendu ?

S. Crozat - UTC

167

Questions de synthse

A quoi servent les classes abstraites ?

Quand doit-on expliciter des contraintes sur les associations ?

Quand doit-on utiliser les paquetages ?

Enoncer les principaux lments composants le modle E-A ?

168

S. Crozat - UTC

Questions de synthse

Quels sont les avantages apports par l'extension du modle E-A ?

Que permet d'exprimer une entit de type faible ?

Qu'est ce qu'un domaine ?

Quel rapport y-a-t il entre une relation et une table ?

S. Crozat - UTC

169

Questions de synthse

Comment identifie-t-on un attribut d'une relation ?

Comment identifie-t-on un enregistrement d'une relation ?

Quelle problme pose la redondance et comment le rsoudre ?

Le passage UML vers relationnel est-il systmatique ou soumis interprtation ? Pourrait-il tre ralis par un algorithme ?

170

S. Crozat - UTC

Questions de synthse

Pourquoi dispose-t-on de trois mthodes pour traduire l'hritage dans un modle relationnel ? Ces trois mthodes sont-elles quivalentes ?

Quels sont les oprateurs algbriques de base ? Quels sont les autres oprateurs ? Qu'est ce qui les diffrencie ?

Quels sont les oprateurs ensemblistes ? Qu'est ce qui les caractrise ?

Pourquoi la jointure est-elle un oprateur essentiel ?

S. Crozat - UTC

171

Questions de synthse

Qu'est ce qui diffrencie une jointure externe d'une jointure classique ?

A quoi sert le LDD ?

En quoi le LDD est il un langage dclaratif ?

Quel rapport y-a-t il entre le LDD et le concept de relation ?

172

S. Crozat - UTC

Questions de synthse

A quoi sert le LMD ?

Quel rapport y-a-t il entre le SQL et l'algbre relationnelle ?

Pourquoi SQL n'est-il pas un langage de programmation ?

Quels types de droits peuvent tre accords ou rvoqus en SQL ?

S. Crozat - UTC

173

Questions de synthse

Pourquoi peut-on dire que la gestion des droits est dcentralise en SQL ?

En quoi peut-on dire que certains schmas relationnels sont mauvais ?

Pourquoi est-il primordial de reprer les dpendances fonctionnelles sur un schma relationnel ?

Comment repre-t-on ces dpendances fonctionnelles ?

174

S. Crozat - UTC

Questions de synthse

Que sont les axiomes d'Armstrong et quoi servent-ils ?

Qu'est ce que la dcomposition d'une relation ?

Pourquoi le respect de la premire forme normale reste-t-il en partie subjectif ?

Quelle forme normale est gnralement souhaitable pour un schma relationnel ?

S. Crozat - UTC

175

Questions de synthse

Quelle sont les atouts d'une architecture 3-tier par rapport une architecture client-serveur classique ?

Qu'est ce qu'une architecture Web ?

A quoi sert un formulaire en HTML ?

Comment se situe PHP dans une architecture Web ?

176

S. Crozat - UTC

Questions de synthse

Pourquoi un langage comme PHP s'est-il dvelopp ces dernires annes votre avis ?

Quels inconvnients peut-on trouver un langage comme PHP ?

A quoi sert une API PHP d'accs une base de donnes ?

Pourquoi un langage comme Java est-il appel tre mobilis dans le cadre de la conception de BD ?

S. Crozat - UTC

177

Questions de synthse

Quelle est la fonction d'une API JBDC ?

A quoi sert une servlet ?

Quelle est la diffrence entre une servlet et une applet ?

Quelle sont les avantages des servlets par rapport un langage comme PHP ?

178

S. Crozat - UTC

Questions de synthse

Quelle sont les inconvnients des servlets par rapport un langage comme PHP ?

Puisque Java et PL/SQL sont tous deux des langages de programmation applicatifs, quel est l'intrt de combiner Java et PL/SQL ?

Citez un bon et un mauvais cas d'usage d'Access.

Expliquer pourquoi Access est la fois un SGBDR et un outil de cration d'application. Est-ce que des prcautions particulires doivent-tre prises ce propos ?

S. Crozat - UTC

179

Questions de synthse

Access peut-il tre considr comme un "vrai" SGBDR du point de vue de la cration du schma relationnel ? Pourquoi ?

Expliquer pourquoi les objets "requte" d'Access sont en fait des vues ?

Access peut-il tre considr comme un "vrai" SGBD du point de vue de l'interrogation des donnes ? Pourquoi ?

Qu'est ce que QBE par rapport SQL ? Quels sont ses avantages et inconvnients ?

180

S. Crozat - UTC

Questions de synthse

A quoi servent les formulaires ?

Quelle est la diffrence entre un formulaire li et un formulaire indpendant ?

Quel type de formulaire faut-il prfrer en gnral et pourquoi ?

A quoi servent les macros ?

S. Crozat - UTC

181

Questions de synthse

Faut-il prfrer l'usage des macros ou bien de code plus bas niveau ?

A quoi servent le code VBA ?

VBA peut-il tre assimil un "vrai" langage de programmation ?

VBA est-il complte-t-il ou bien remplace-t-il SQL lors de la ralisation d'application ?

182

S. Crozat - UTC

Questions de synthse

Que peut-on faire avec un langage comme VBA que l'on ne peut pas faire en SQL en terme de manipulation de donnes ?

S. Crozat - UTC

183

Solution des exercices rdactionnels


> Solution n1 (exercice p. 77)
Intersection (R1, R2) = Difference (R1, Difference (R1, R2))

> Solution n2 (exercice p. 77)


Jointure (R1, R2, condition) = Restriction ( Produit (R1, R2), condition)

> Solution n3 (exercice p. 77)


Considrons la division de R1 par R2 : Soit Ai les attribut de R1 n'appartenant pas R2 Soit R_p = Projection (R1, Ai) Soit R_px2 = Produit (R_p, R2) Soit R_px2-1 = Difference (R_px2, R1) Soit R_px2-1p = Projection (R_px2-1, Ai) Division (R1, R2) = Difference (R_p, R_px2-1p) Notons ce que reprsente les relations intermdiaires : "R_p" est la relation obtenu partir de R1 en ne gardant que les attributs n'appartenant pas R2. Cette relation est de mme schma que la relation rsultat. "R_px2" est la relation qui combine tous les tuples de R2 avec les tuples de la relation R_p. Cette relation est de mme schma que R1, et elle contient tous les tuples possibles, et non seulement ceux qui correspondent au rsultat. "R_px2-1" est la relation qui restreint R_px2 au tuples n'appartenant pas R1, elle contient donc tous les mauvais tuples, c'est dire tous ceux que l'on ne veut pas voir appartre dans le rsultat. "R_px2-1p" est la relation de mme schma que le rsultat, et donc qui contient les mauvais tuples. Le rsultat de la division est obtenu par diffrence entre tous les tuples possibles (R_p) et tous les mauvais tuples (R_px2-1p).

> Solution n4 (exercice p. 108)


Il y a trois cls candidates : {B,C}, {B,E} et {B,G}, soit la concatnation des colonnes B et C, ou B et E ou Bet G. Ce sont en effet les plus petites combinaisons qui sont uniques pour cette relation, et donc qui permettent de distinguer deux enregistrements. Pour toutes les autres combinaisons, soit elles ne sont pas uniques, soit elles contiennent {B,C}, {B,E} ou {B,G}.
S. Crozat - UTC

185

Solution des exercices rdactionnels

La cl primaire peut donc tre choisie parmi ces trois candidates.

> Solution n5 (exercice p. 108)


La relation contient des redondances : les colonnes A, D et F d'une part et E et G d'autre part sont redondantes. En effet pour une valeur donne de A, on obtient toujours les mmes valeurs de D et F et pour une valeur donne de E on obtient toujours la mme valeur de G.

> Solution n6 (exercice p. 108)


La seule solution pour supprimer les redondances est de dcouper la relation R en relations non redondantes.
A 0 0 0 0 1 0 1 1 1 2 1 1 2 3 4 1 B 1 1 2 3 3 3 3 4 C 5 9 6 7 7 9 8 9 E

Tableau 23 Relation R1
A 0 1 10 20 D X Y F

Tableau 24 Relation R2
E 5 9 6 7 8 A G S D F G

Tableau 25 Relation R3

186

S. Crozat - UTC

Glossaire

Client Un client est un programme informatique qui a pour fonction d'envoyer des requtes un autre programme informatique, appel serveur, d'attendre le rsultat de cette requte et de traiter le rsultats de la requte. Notons qu'un programme peut-tre client vis vis d'un programme et serveur vis vis d'un autre. On ne prend pas ici le terme client dans son acception matrielle, qui signifie alors un ordinateur qui a pour fonction d'hberger des programmes clients. Constructeur d'objet En programmation oriente objet, un constructeur d'objet est une mthode particulire d'une classe qui permet d'instancier un objet de cette classe. L'appel cette mthode de classe a donc pour consquence la cration d'un nouvel objet de cette classe. Exception Une exception est un vnement gnr par un systme informatique pour signifier une erreur d'excution. La gestion des exceptions est un aspect de la programmation informatique, qui consiste intercepter ces vnements particuliers et les traiter pour, soit les corriger automatiquement, soit en donner une information approprie un utilisateur humain. Extension L'extension est l'explicitation d'un domaine par l'nonciation exhaustive de l'ensemble des objets du domaine. Elle s'oppose l'instension qui est une description abstraite des caractristiques du domaine. Exemple : {bleu, rouge, vert} Contre-exemple : Le domaine des couleurs Intension L'intension est l'explicitation d'un domaine par la description de ses caractristiques (en vue de sa comprhension abstraite, gnrale). Elle s'oppose l'extension qui est l'nonciation exhaustive de l'ensemble des objets du domaine. Exemple : Le domaine des couleurs Contre-exemple : {bleu, rouge, vert} RAID La technologie RAID permet de repartir de l'information stocker sur plusieurs "petits" disques, au lieu de la concentrer sur un seul "gros" disque. Cette technologie permet donc d'amliorer les performances (les accs disques pouvant tre parallliss) et d'amliorer la sret (en repartissant les risques de crash et en jouant sur une redondance des donnes). Il existe plusieurs types d'architecture RAID, privilgiant ou combinant la paralllisation et la redondance. Serveur Un serveur est un programme informatique qui a pour fonction de recevoir des requtes d'un autre programme, appel client, de traiter ces requtes et de renvoyer en retour une rponse. Notons qu'un programme peut-tre serveur vis vis d'un programme et client vis vis d'un autre. On ne prend pas ici le

S. Crozat - UTC

187

Glossaire

terme serveur dans son acception matrielle, qui signifie alors un ordinateur qui a pour fonction d'hberger des programmes serveurs.

188

S. Crozat - UTC

Signification des abrviations


1NF 2NF 3NF 4NF 5NF ANSI API BCNF BD DF DFE E-A E-R IHM ISO JDBC LCD LDD LMD MCD MLD ODBC OMG PSM QBE RO SGBD SGBDOO SGBDR SGBDRO SGF SI SQL UML XML First Normal Form Second Normal Form Third Normal Form Fourth Normal Form Fifth Normal Form American National Standards Institute Application Program Interface Boyce-Codd Normal Form Base de Donnes Dpendance Fonctionnelle Dpendance Fonctionnelle Elmentaire Entit-Association Entity-Relationship Interaction Homme Machine ou Interface Homme Machine International Standardization Organization Java DataBase Connectivity Langage de Contrle de Donnes Langage de Dfinition de Donnes Langage de Manipulation de Donnes Modle Conceptuel de Donnes Modle Logique de Donnes Open DataBase Connectivity Object Management Group Persistent Stored Modules Query By Example Relationnel-Objet Systme de Gestion de Bases de Donnes Systme de Gestion de Bases de Donnes Orientes Objets Systme de Gestion de Bases de Donnes Relationnelles Systme de Gestion de Bases de Donnes Relationnelles-Objets Systme de Gestion de Fichiers Systme d'Information Structured Query Language Unified Modeling Language eXtensible Markup Language

S. Crozat - UTC

189

Bibliographie

[C el ko00] CELKO JOE. SQL avanc : Programmation et techniques avances. Vuibert, 2000. [C h en 76] CHEN P.P. The entity-Relationsheep Model - Towards a Unified View of Data . ACM Transactions on Database systems. 1976-mars. 1, 1. [C odd70] CODD EF, A relational model for large shared data banks, Communications de l'ACM, juin 1970. [Del m al 01] DELMAL PIERRE. SQL2 SQL3, applications Oracle. De Boeck Universit, 2001. [F ord01] FORD ANDREW. Apache prcis et concis. ISBN 2-84177-11. France : O'REILLY, 2000. 125 p. Prcis et concis. [Gardari n 99] GARDARIN GEORGES. Bases de donnes : objet et relationnel. Eyrolles, 1999. [Lerdof01] LERDOF RASMUS. PHP prcis et concis. ISBN 2-84177-249-7. France : O'REILLY, 2002. [Mat a03] MATA-TOLEDO RAMON A., CUSHMAN PAULINE K.. Programmation SQL. Ediscience, 2003. [Mu l l er98] MULLER P.A., Modlisation objet avec UML, Eyrolles, 1998. [Prat t 01] PRATT PHILIP J. . Initiation SQL : Cours et exercices corrigs. Eyrolles, Collection Noire. 2001. [R oqu es04] ROQUES PASCAL, VALLE FRANCK. UML 2 en action : De l'analyse des besoins la conception J2EE. ISBN 2-212-11462-1 (3me dition). Paris : Eyrolles, 2004. 385 p. architecte logiciel. [R oqu es09] PASCAL ROQUES, UML 2 par la pratique, 7e dition, Eyrolles, 2009 [ISBN 978-2212125658] [S ou t ou 02] SOUTOU CHRISTIAN. De UML SQL : Conception de bases de donnes. Eyrolles, 2002.

S. Crozat - UTC

191

Bibliographie

[Tar di eu 83] TARDIEU H., ROCHFELD A., COLLETI R.. Mthode MERISE Tome 1 : Principes et outils. Paris : Les Editions d'Organisation, 1983. [Tar di eu 85] TARDIEU H., ROCHFELD A., COLLETI R., PANET G., VAHEE G.. Mthode MERISE Tome 2 : Dmarche et pratiques. Paris : Les Editions d'Organisation, 1985. [Th i bau d03] THIBAUD CYRIL. MySQL 4 : Installation, mise en oeuvre et programmation. Editions ENI, 2003. Collection Ressources Informatiques. [Won g00] WONG CLINTON, HTTP prcis et concis, O'REILLY, 2000 [ISBN 2-84177-1]. [w _access.dev el oppez.com ] WWW.DEVELOPPEZ.COM, Les meilleurs cours, tutoriels et docs sur Access , http://access.developpez.com/, consult en 2003. [w _access.dev el oppez.com / faq] WWW.DEVELOPPEZ.COM, Access FAQ, http://access.developpez.com/faq/, consult en 2003. [w _di a] Dia, http://live.gnome.org/Dia [w _j ou rn al du n et .com (1)] MORLON JRME, UML en 5 tapes, http://developpeur.journaldunet.com/dossiers/alg_uml.shtml , 2004. [w _j ou rn al du n et .com (2)] BORDERIE XAVIER, Cinq petits conseils pour un schma UML efficace, http://developpeur.journaldunet.com/tutoriel/cpt/031013cpt_uml5conseils.shtml , 2004. [w _mh u bi ch e.dev el oppez.com ] HUBICHE MAXENCE, Comprendre les jointures dans Access , http://mhubiche.developpez.com/Access/tutoJointures/ , consult en 2009. [w _obj ect eeri n g] Objecteering software. www.objecteering.com. [2002-septembre]. [w _sybase] Sybase PowerDesigner, http://www.sybase.com/products/enterprisemodeling, consult en 2002. [w _u m l .free.fr] UML en Franais, http://uml.free.fr, consult en 2002. [w _u n i v-l yon 2.fr/ ~j darm on t ] DARMONT JRME. Tutoriel SQL. http://eric.univ-lyon2.fr/~jdarmont/tutoriel-sql/ . [2004janvier].

192

S. Crozat - UTC

Index
1NF p.114 2NF p.115 3NF p.115, 116 3-tier p.121, 123 Abstraite....................................... p.34 Access p.143, 145, 145, 152, 155, 156, 160, 160 Administration........................ p.13, 17 Agrgat................................... p.97, 98 Algbre p.48, 70, 70, 71, 72, 72, 73, 74, 74, 74, 75, 76 ALL p.101 ALTER TABLE....................... p.85, 86 Analyse................... p.18, 18, 19, 19, 19 AND p.90 ANY p.101 API p.133 Application........... p.145, 153, 155, 160 Architecture p.119, 121, 122, 123, 132, 141 Armstrong........................... p.110, 110 Association p.26, 30, 32, 41, 52, 52, 56, 58, 59, 67 Association 1:1............................ p.57 Atomicit.................................... p.114 Attribut p.25, 30, 42, 49, 50, 50, 51, 54, 58, 58 BCNF p.116 BD p.9, 11, 11 BETWEEN................................... p.90 Boucle p.127 Calcul p.97 Cardinalit.............................. p.27, 41 Cartsien...................................... p.73 Catalogue..................................... p.17 Chane de caractres................. p.157 CHECK................................... p.82, 83 Classe p.14, 24, 29, 34, 56, 58, 127 Cl p.43, 50, 51, 54, 112 Cl artificielle.............................. p.51 Cl candidate............................... p.50 Cl primaire........................... p.50, 51 Cl signifiante.............................. p.51 Client p.119, 121, 123, 141 Codd p.48 Comparaison................................ p.90 Composition............................ p.32, 59 Conception............. p.9, 14, 18, 18, 108 Conceptuel p.9, 14, 15, 18, 19, 19, 21, 23, 23, 29, 40, 40, 56, 67, 70 Condition..................................... p.90 Contrainte.................................. p.147 Contraintes............................. p.35, 66 Contrle................................ p.13, 102 CREATE TABLE.......................... p.81 CREATE VIEW............................ p.84 Cration....................................... p.80 Critique...................................... p.145 CurrentDb................... p.157, 159, 160 Curseur. . p.157, 158, 158, 158, 159, 160 Dclaratif..................................... p.80 Dcomposition.................... p.109, 113 DELETE.......................... p.87, 88, 151 Dpendance........................ p.107, 113 DF p.109, 110, 110, 111, 111, 111, 112, 113 Diagramme....................... p.23, 29, 29 Dictionnaire................................. p.17 Diffrence..................................... p.71 DISTINCT.................................... p.89 Division........................................ p.75 Domaine............... p.48, 48, 49, 80, 146 Donne......................................... p.14 Donnes....................................... p.14 Driver p.134 Droits p.102 DROP p.85 Dynamique................................... p.35 E-A p.14, 19, 21, 26, 27, 40, 40, 40, 41, 41, 42, 43, 67, 67, 68, 69, 70 Enregistrement....................... p.49, 50 Entit p.40, 42, 43, 67 Enumration............................... p.146 EXCEPT....................................... p.96 EXISTS....................................... p.100 Externe.................................... p.15, 74 Fermeture................................... p.111 Fonction................. p.97, 127, 157, 157 FOREIGN KEY....................... p.82, 83 FORM p.123 Formulaire........... p.123, 138, 153, 154 Formulaires................................ p.152 FROM p.89 Gestion d'erreur......................... p.159 GRANT....................................... p.103 GROUP BY........................... p.98, 151 HAVING................................ p.98, 151 Hritage p.27, 34, 42, 59, 61, 61, 62, 63, 66, 68 HTML p.123, 124, 125, 128, 128, 138, 139 HTTP p.122 IF p.126 IN p.90, 99 INNER.......................................... p.92 INSERT............................ p.87, 87, 151 Instance.................................. p.14, 15 Intgrit rfrentielle................. p.147 Interne.......................................... p.15 INTERSECT................................. p.96 Intersection.................................. p.71 IS NULL....................................... p.90 Java p.133, 133, 134, 134, 135, 135, 136, 137, 137, 139, 140 JavPHPa.................................... p.127 JBDC p.133, 133, 134, 134, 135, 137 JOIN p.92, 94 Jointure............................. p.74, 74, 74 Langage.......... p.13, 16, 87, 89, 99, 133 Langage de programmation....... p.156 LCD p.16, 102, 160 LDD p.16, 80, 146, 147, 148, 159 LEFT p.94 Lien p.52, 52 LIKE p.90 Liste droulante.......................... p.154 LMD p.16, 87, 89, 99, 149, 151 Logique p.9, 13, 14, 21, 47, 47, 48, 56, 67, 70, 90, 107, 113 Macro p.155 Manipulation................................ p.70 MERISE............................. p.19, 21, 40 Mthode....................................... p.25 Modle p.9, 14, 14, 21, 21, 40, 47, 48, 54, 55, 107, 113 MySQL................................ p.130, 134 Naturelle...................................... p.74 NF p.114 Nomalisation....................... p.107, 113 Normalisation p.109, 109, 110, 110, 111, 111, 111, 112, 113, 114, 114, 115, 115 NOT p.90 NOT NULL............................. p.82, 83 OBDC p.133

S. Crozat - UTC

193

Index

Objet p.127, 157, 160 Occurence.................................... p.14 OCI p.130 OMG p.23 On Error..................................... p.159 Oprateur..................................... p.90 Opration................................ p.25, 48 Optimisation.................. p.13, 107, 113 OR p.90 Oracle p.130, 132, 134, 134, 135, 136, 137, 139, 140 ORDER BY................................... p.97 OUTER......................................... p.94 Passage........................ p.56, 67, 69, 70 PHP p.124, 125, 125, 126, 126, 127, 127, 128, 128, 129, 130, 130, 132, 137 Physique................................. p.13, 14 PL/SQL........................ p.136, 137, 140 PostgreSQL................................ p.129 PRIMARY KEY....................... p.82, 83 Problme.................................... p.108 Produit.............................. p.48, 49, 73 Programme......................... p.133, 156 Projection..................................... p.72 Proprit........................... p.25, 30, 42 Prototypage................................ p.145 QBE p.149, 151, 151 QueryDef.............. p.157, 159, 159, 160 Question.......................... p.89, 99, 149 Recordset p.157, 158, 158, 158, 159, 160 Redondance............ p.12, 107, 108, 113 REFERENCES........................ p.82, 83 Relation p.49, 49, 50, 50, 51, 52, 52, 54, 54 Relationnel p.12, 14, 21, 47, 47, 48, 48, 49, 54, 55, 56, 56, 56, 58, 58, 59, 59, 61, 61, 62, 63, 66, 66, 67, 67, 67, 68, 69, 70, 70, 70, 76, 107, 113 Relationnel-objet.................... p.47, 48 Requte p.87, 89, 99, 149, 157, 159, 159, 160 Restriction.................................... p.72 REVOKE.................................... p.104 RIGHT.......................................... p.94 Schma..................... p.9, 14, 15, 54, 55 Scurit................................. p.13, 160 SELECT..................... p.89, 91, 91, 149 Serveur p.119, 121, 122, 123, 125, 137, 141 Servlet p.138, 138, 138, 139, 139, 139, 140 Servlets....................................... p.137 SGBD p.9, 11, 12, 12, 14 SGBR p.13 Sous-requtes.... p.99, 99, 100, 101, 101 Spcifications............................... p.19 SQL p.16, 80, 87, 89, 99, 102

Statement.................................... p.135 Table p.80, 146, 147 Transaction.................................. p.13 Tri p.97 Tuple p.49 Type p.14, 80 Types p.146 UML p.14, 19, 23, 23, 24, 25, 25, 27, 29, 29, 30, 32, 34, 35, 56, 56, 56, 58, 58, 59, 59, 61, 61, 62, 63, 66, 66, 67, 70 Union p.71 UNION......................................... p.96 UNIQUE................................. p.82, 83 UPDATE......................... p.87, 88, 151 Utilisateur.................................. p.102 Variables.................................... p.126 VBA p.156, 157, 157, 157, 158, 158, 158, 159, 159, 159, 160 Vues p.148 Web p.122, 123 WHERE............................. p.89, 92, 92

194

S. Crozat - UTC

Index

S. Crozat - UTC

195

You might also like