Vous êtes sur la page 1sur 160

Conception de bases

de donnesI

NF17
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 30 janvier 2013


Version 13.01

Table des
matires
Introduction

I - Prsentation des bases de donnes

1. BD et SGBD: vue d'ensemble ..................................................................................................... 7


1.1.
1.2.
1.3.
1.4.

Qu'est ce qu'une BD ? ............................................................................................................................


Qu'est ce qu'un SGBD ? .........................................................................................................................
Pourquoi des SGBD ? .............................................................................................................................
Caractristiques des SGBD ......................................................................................................................

7
8
8
9

2. Notions gnrales pour les bases de donnes .............................................................................. 10


2.1.
2.2.
2.3.
2.4.
2.5.

Notion
Notion
Notion
Notion
Notion

de donnes .................................................................................................................................
de modle de donnes .................................................................................................................
de schma de donnes .................................................................................................................
de langage de donnes .................................................................................................................
d'administration de donnes ........................................................................................................

10
10
11
12
13

3. Les mthodes de conception de bases de donnes ...................................................................... 13


3.1.
3.2.
3.3.
3.4.
3.5.
3.6.

Mthodologie de conception d'une base de donnes ...................................................................................


La mthode MERISE et le modle E-A ...................................................................................................
Le langage de modlisation UML ............................................................................................................
lments pour l'analyse de l'existant et des besoins ..................................................................................
Le MCD ...............................................................................................................................................
Le MLD ...............................................................................................................................................

14
15
16
16
17
17

4. En rsum: Conception de bases de donnes ............................................................................. 18

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

19

1. Bases du diagramme de classes UML ......................................................................................... 19


1.1.
1.2.
1.3.
1.4.
1.5.
1.6.
1.7.
1.8.

Prsentation d'UML ..............................................................................................................................


Classes .................................................................................................................................................
Attributs ...............................................................................................................................................
Mthodes ..............................................................................................................................................
Associations .........................................................................................................................................
Cardinalit ...........................................................................................................................................
Hritage ...............................................................................................................................................
Exemple : Des voitures et des conducteurs ...............................................................................................

20
20
21
22
23
24
24
26

2. Diagramme de classes UML avanc ........................................................................................... 27


2.1. Explicitation des associations .................................................................................................................
2.2. Classe d'association ...............................................................................................................................
2.3. Associations ternaires ............................................................................................................................
2.4. Composition .........................................................................................................................................
2.5. Agrgation ............................................................................................................................................
2.6. Classes abstraites ..................................................................................................................................
2.7. Contraintes ...........................................................................................................................................
2.8. Exemple de contraintes standardises sur les associations .........................................................................
2.9. Exemple de contraintes standardises sur les attributs ..............................................................................
2.10. Paquetages ..........................................................................................................................................
2.11. Strotype ...........................................................................................................................................
2.12. numration .......................................................................................................................................

27
28
29
29
30
31
32
33
34
34
36
36

3. Le modle E-A ............................................................................................................................ 37


3.1.
3.2.
3.3.
3.4.
3.5.

Le modle E-A en bref ...........................................................................................................................


Entit ...................................................................................................................................................
Association ...........................................................................................................................................
Cardinalit d'une association ..................................................................................................................
Modle E-A tendu ................................................................................................................................

37
37
38
39
39

3.6. Entit de type faible ............................................................................................................................... 40


3.7. Illustration d'entits faibles .................................................................................................................... 41

4. En rsum: Schma conceptuel ................................................................................................. 42


5. Bibliographie commente sur la modlisation UML ................................................................... 42

III - Le niveau logique: la modlisation relationnelle

44

1. Description du modle relationnel .............................................................................................. 44


1.1. Le niveau logique ..................................................................................................................................
1.2. Le modle relationnel ............................................................................................................................
1.3. Domaine ..............................................................................................................................................
1.4. Produit cartsien ...................................................................................................................................
1.5. Relation ...............................................................................................................................................
1.6. Attribut et enregistrement ......................................................................................................................
1.7. Exemple : La relation "Vol" ...................................................................................................................
1.8. Cl .......................................................................................................................................................
1.9. Cl artificielle .......................................................................................................................................
1.10. Lien entre relations .............................................................................................................................
1.11. clatement des relations pour viter la redondance .................................................................................
1.12. Cl trangre ......................................................................................................................................
1.13. Schma relationnel ...............................................................................................................................
1.14. Exemple de schma relationnel pour la gographie ..................................................................................

45
45
45
46
46
47
47
48
48
50
51
52
53
54

2. Passage UML-Relationnel: Cas systmatiques .......................................................................... 55


2.1. Transformation des classes ....................................................................................................................
2.2. Transformation des attributs ..................................................................................................................
2.3. Transformation des attributs drivs et mthodes .....................................................................................
2.4. Transformation des associations 1:N .......................................................................................................
2.5. Transformation des associations N:M .....................................................................................................
2.6. Transformation des classes d'association .................................................................................................
2.7. Transformation des agrgations ..............................................................................................................
2.8. Transformation des compositions ............................................................................................................
2.9. Liste des contraintes ..............................................................................................................................
2.10. Correspondance entre UML et relationnel ..............................................................................................

56
56
58
59
60
61
63
63
65
65

3. Passage UML-Relationnel: Associations 1:1 .............................................................................. 66


3.1.
3.2.
3.3.
3.4.
3.5.

Transformation des associations 1:1 (cas gnral) ....................................................................................


Transformation des associations 1..1:1..1 ................................................................................................
Transformation des associations 0..1:1..1 ................................................................................................
Transformation des associations 0..1:0..1 ................................................................................................
Exemple de choix pour une relation 1:1 ...................................................................................................

66
67
68
68
69

4. Passage UML-Relationnel: Hritage .......................................................................................... 69


4.1.
4.2.
4.3.
4.4.
4.5.
4.6.
4.7.

Transformation de la relation d'hritage ..................................................................................................


Transformation de la relation d'hritage par rfrence .............................................................................
Transformation de la relation d'hritage par les classes filles .....................................................................
Transformation de la relation d'hritage par la classe mre ......................................................................
lments de choix .................................................................................................................................
Les cas simples .....................................................................................................................................
Exemple de transformation d'une relation d'hritage .................................................................................

70
71
73
74
76
77
79

4.8. Transformations de l'hritage : Synthse ................................................................................................. 81

5. Le passage E-A vers Relationnel ................................................................................................ 83


5.1.
5.2.
5.3.
5.4.
5.5.
5.6.
5.7.

Transformation des entits .....................................................................................................................


Transformation des associations .............................................................................................................
Transformation des attributs ..................................................................................................................
Exemple de passage E-A vers relationnel .................................................................................................
Transformation de la relation d'hritage ..................................................................................................
Exemple de transformation d'une relation d'hritage .................................................................................
Comparaison des modles E-A, UML et relationnel ..................................................................................

83
83
84
85
85
86
87

6. Algbre relationnelle ................................................................................................................... 87


6.1. Concepts manipulatoires ........................................................................................................................
6.2. Oprateurs ensemblistes .........................................................................................................................
6.3. Projection ............................................................................................................................................
6.4. Restriction ............................................................................................................................................
6.5. Produit .................................................................................................................................................
6.6. Jointure ...............................................................................................................................................
6.7. Jointure naturelle ..................................................................................................................................
6.8. Jointure externe ....................................................................................................................................
6.9. Division ...............................................................................................................................................
6.10. Proposition de notations ......................................................................................................................
6.11. Exercice : Oprateurs de base et additionnels ..........................................................................................

88
88
89
90
91
91
92
93
94
95
96

7. En rsum: Schma relationnel ................................................................................................. 97


8. Bibliographie commente sur le modle relationnel .................................................................... 97

IV - Le niveau physique: Le langage SQL

98

1. Qu'appelle-t-on SQL? ................................................................................................................. 98


2. Le Langage de Dfinition de Donnes de SQL ........................................................................... 99
2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
2.7.
2.8.

Types de donnes .................................................................................................................................. 99


Cration de tables ................................................................................................................................ 101
Contraintes d'intgrit ......................................................................................................................... 102
Exemple de contraintes d'intgrit ......................................................................................................... 103
Cration de vues .................................................................................................................................. 104
Suppression d'objets ............................................................................................................................. 105
Modification de tables .......................................................................................................................... 105
Exemple de modifications de tables ........................................................................................................ 106

3. Gestion avec le Langage de Manipulation de Donnes de SQL ................................................ 107


3.1. Insertion de donnes ............................................................................................................................ 107
3.2. Mise jour de donnes ........................................................................................................................ 108
3.3. Suppression de donnes ........................................................................................................................ 109

4. Questions avec le Langage de Manipulation de Donnes de SQL ............................................. 109


4.1. Slection .............................................................................................................................................
4.2. Oprateurs de comparaisons et oprateurs logiques .................................................................................
4.3. Expression du produit cartsien ............................................................................................................
4.4. Expression d'une projection ..................................................................................................................
4.5. Expression d'une restriction .................................................................................................................
4.6. Expression d'une jointure .....................................................................................................................
4.7. Expression d'une jointure externe .........................................................................................................
4.8. Oprateurs ensemblistes .......................................................................................................................
4.9. Tri .....................................................................................................................................................
4.10. Fonctions de calcul ............................................................................................................................
4.11. Agrgats ............................................................................................................................................

109
111
112
113
114
115
116
119
120
120
121

5. Instructions avances pour le LMD de SQL ............................................................................. 122


5.1.
5.2.
5.3.
5.4.
5.5.
5.6.

Requtes imbriques .............................................................................................................................


Sous-requte d'existence IN ..................................................................................................................
Sous-requte d'existence EXISTS ..........................................................................................................
Sous-requte de comparaison ALL ........................................................................................................
Sous-requte de comparaison ANY ........................................................................................................
Raffinement de questions dans la clause FROM ......................................................................................

122
123
124
125
125
126

6. Le Langage de Contrle de Donnes de SQL ........................................................................... 126


6.1. Attribution de droits ............................................................................................................................ 127
6.2. Rvocation de droits ............................................................................................................................ 128
6.3. Cration d'utilisateurs .......................................................................................................................... 128

7. En rsum: SQL ...................................................................................................................... 129


8. Bibliographie commente sur le SQL ........................................................................................ 129

V - La thorie de la normalisation relationnelle

130

1. Redondance et normalisation .................................................................................................... 130


1.1. Exercice : Introduction la redondance .................................................................................................. 130
1.2. Les problmes soulevs par une mauvaise modlisation ............................................................................ 131
1.3. Principes de la normalisation ............................................................................................................... 132

2. Les dpendances fonctionnelles ................................................................................................. 133


2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
2.7.
2.8.

Dpendance fonctionnelle .....................................................................................................................


Les axiomes d'Armstrong .....................................................................................................................
Autres proprits dduites des axiomes d'Armstrong ...............................................................................
DF lmentaire ...................................................................................................................................
Notion de fermeture transitive des DFE .................................................................................................
Notion de couverture minimale des DFE ...............................................................................................
Notion de graphe des DFE ...................................................................................................................
Dfinition formelle d'une cl .................................................................................................................

133
134
134
135
136
136
136
137

3. Les formes normales ................................................................................................................. 137


3.1.
3.2.
3.3.
3.4.
3.5.
3.6.

Formes normales .................................................................................................................................


Principe de la dcomposition ................................................................................................................
Premire forme normale ......................................................................................................................
Deuxime forme normale ......................................................................................................................
Troisime forme normale .....................................................................................................................
Forme normale de Boyce-Codd .............................................................................................................

138
138
138
139
140
141

4. Conception de bases de donnes normalises ............................................................................ 142


4.1. Processus de conception d'une base de donnes normalise ..................................................................... 143
4.2. Algorithme de dcomposition ................................................................................................................ 143

4.3. Exemple de dcomposition .................................................................................................................... 144

5. Bibliographie commente sur la normalisation ......................................................................... 145

Questions de synthse

146

Solution des exercices rdactionnels

155

Glossaire

157

Abrviations

158

Bibliographie

159

Webographie

160

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.

6
Stphane Crozat - UTC

Prsentation des bases de donnes

Prsentation des
bases de donnes

BD et SGBD: vue d'ensemble

Notions gnrales pour les bases de donnes

10

Les mthodes de conception de bases de donnes

13

En rsum: Conception de bases de donnes

18

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

1. BD et SGBD: vue d'ensemble


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

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

7
Stphane Crozat - UTC

Prsentation des bases de donnes

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

1.3. Pourquoi des SGBD ?


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.

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.

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

8
Stphane Crozat - UTC

Prsentation des bases de donnes

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
Les donnes
Les donnes
Les donnes
Les donnes
Les donnes
etc.

comptables
clients et fournisseurs
relatives la gestion des stocks
relatives aux livraisons
marketting et commerciales
relatives au personnel

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

Fondamental
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.
*

9
Stphane Crozat - UTC

Prsentation des bases de donnes

2. Notions gnrales pour les bases de donnes


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

2.1. Notion de donnes


Dfinition : Donnes
lment effectif, rel, correspondant une type de donnes.
Synonymes: Occurrence, 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.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).
*

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 niveau conceptuel
Il permet de dcrire le rel selon une approche ontologique, sans prendre en compte les
contraintes techniques.
Le niveau 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 niveau physique
Il correspond aux choix techniques, en terme de SGBD choisi et de sa mise en uvre
(programmation, optimisation, etc.).

10
Stphane Crozat - UTC

Prsentation des bases de donnes

Exemple : Exemple de formalisme de modlisation conceptuelle


Le modle Entit-Association (cf. The Entity-Relationsheep Model ) a t le plus
rpandu 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 CODASYL, antrieur au modle relationnel est un modle hirarchique (
Tardieu83:193).
Le modle relationnel (tabulaire) est le modle dominant aujourd'hui.
Le modle relationnel-objet (adaptation des modles relationnel et objet au cadre des
SGBD) est actuellement en croissance.
Le modle objet "pur" reste majoritairement au stade exprimental et de la recherche.
D'autres modles (arborescent, rseau, ...) sont surtout utiliss dans des contextes trs
spcifiques.
*

2.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'occurrence 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)

11
Stphane Crozat - UTC

Prsentation des bases de donnes

Complment : Vue canonique et vue externe


Le schma de donnes peut se dcliner selon deux niveaux de reprsentation:
1. Le niveau interne : Il s'agit du modle global, form de l'union des sous-modles du
niveau externe.
2. Le niveau externe : Il s'agit de sous-ensembles du modle global, vus par des groupes
d'utilisateurs particuliers (on parle d'ailleurs de "vue" pour un modle externe).

Schmas interne et externes

2.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
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".

12
Stphane Crozat - UTC

Prsentation des bases de donnes

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.

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

3. Les mthodes de conception de bases de donnes


Objectifs
Connatre la mthodologie de conception d'une BD.

13
Stphane Crozat - UTC

Prsentation des bases de donnes

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

Graphique 1 Processus de conception d'une base de donnes

Fondamental
Bien analyser le problme pos en amont
Bien modliser le problme au niveau conceptuel avant de passer aux niveaux logiques
et physiques

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.

14
Stphane Crozat - UTC

Prsentation des bases de donnes

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


tant 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 pour la modlisation E-A ou
Objecteering software 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. 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.

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

15
Stphane Crozat - UTC

Prsentation des bases de donnes

3.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.
*

3.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.
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 analyser


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

16
Stphane Crozat - UTC

Prsentation des bases de donnes

Exemple : Exemples d'utilisateurs avec qui dialoguer


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.

Exemple : Exemples d'autres systmes coexistants tudier


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

3.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
uvre dans n'importe quel environnement logiciel et matriel, et il devra tre traduit pour
mener une implmentation effective.

3.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.
*

17
Stphane Crozat - UTC

Prsentation des bases de donnes

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 (en SQL avec
Oracle par exemple)

4. En rsum: Conception de bases de donnes


Conception
Modle Conceptuel
Schma conceptuel canonique et schmas externes
Exemples
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, logique, physique.

18
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

Le niveau conceptuel:
la modlisation des
bases de donnes

II

Bases du diagramme de classes UML

19

Diagramme de classes UML avanc

27

Le modle E-A

37

En rsum: Schma conceptuel

42

Bibliographie commente sur la modlisation UML

42

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

1. 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.
*

19
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

1.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.
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).
*

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

20
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

Remarque : Cl
Le reprage des cls n'est pas systmatique en UML (la dfinition des cls se fera
essentiellement au niveau logique). On peut les reprsenter en faisant suivre le nom de
l'attribut de la contrainte {unique}.
En revanche, on n'ajoutera jamais de cl artificielle lorsque aucune cl n'est vidente.

Attention : Attribut soulign


On trouvera dans ce cours des exemples d'attributs souligns ou prcds de # pour exprimer
l'unicit. Ce n'est pas une pratique standard et la notation {unique} devrait lui tre
substitue.
Un attribut soulign est normalement un attribut de classe, ou static, en UML,
Un attribut prcd de # est normalement un attribut protg en UML.
Mais les concepts d'attribut de classe et d'attribut protg ne sont pas utiliss dans le cadre des
bases de donnes.

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.

Complment : Voir aussi


Exemple de contraintes standardises sur les attributs - p. 34

1.3. Attributs
Dfinition : Attribut
Un attribut est une information lmentaire qui caractrise une classe et dont la valeur dpend
de l'objet instanci.
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 (ou composite) : 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
- ...

21
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

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.

Conseil : Attribut compos multivalu


Un attribut peut tre compos et multivalu. On prfre nanmoins dans ce cas l'utilisation de
l'criture d'une composition quivalente.

Rappel : Voir aussi


Composition - p. 29

1.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).

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.

22
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

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.

1.5. Associations
Dfinition : Association
Une association est une relation logique entre deux classes (association binaire) ou plus
(association n-aire) 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.

Complment : Voir aussi


Cardinalit - p. 24
Explicitation des associations - p. 27
Associations ternaires - p. 29
Contraintes sur les associations - p. 33

23
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

1.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 : min a..maxa.
Si le nombre maximum est indtermin, on note n ou *.

Attention
La notation de la cardinalit en UML est oppose celle adopte 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 E-A, on note gauche (resp. droite) le nombre d'instances de la classe
de droite (resp. de gauche) autorises dans l'association.

Remarque
Les cardinalits 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.

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

24
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

Syntaxe

Notation de l'hritage en UML

Fondamental : Factorisation
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.

Fondamental : Is-a
L'hritage permet de reprsenter la relation "est-un" entre deux objets (is-a en anglais).
Donc tout ce qui est vrai pour la classe mre est vrai pour ses classes filles. En particulier si une
classe C exprime une association avec une classe A dont hrite B, cela signifie que C peut tre
associe B.

25
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

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, des associations..., la classe Conducteur en hriterait de la mme
faon.

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

26
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

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.

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

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

2.1. Explicitation des associations


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.

27
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

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

Syntaxe : Notation d'une classe d'association en UML

Notation d'une classe d'association en UML

Exemple : Exemple de classe d'association

Emplois

28
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

2.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 3


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

2.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 (voire
1:1).
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 disparat.

Remarque
La composition est une association particulire (binaire de cardinalit contrainte).
La composition n'est pas symtrique, une classe joue le rle de conteneur pour les classes
lies, elle prend donc un rle particulier a priori.
La composition est une agrgation avec des contraintes supplmentaires (non
partageabilit et cycle de vie li).

29
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

Syntaxe : Notation d'une composition en UML

Notation de la 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.
*

Conseil : Composition et attribut multivalu


Une composition avec une classe partie dote d'un seul attribut peut s'crire avec un
attribut multivalu.
Un attribut compos et multivalu peut s'crire avec une composition.

Rappel : Voir aussi


Attribut compos multivalu - p. 21
Agrgation - p. 30

2.5. Agrgation
Dfinition : Association d'agrgation
L'agrgation est une association particulire utilise pour prciser une relation tout/partie (ou
ensemble/lment), on parle d'association mrologique.
Elle possde la proprit suivante : L'agrgation associe une classe agrgat et des classes
parties, tel que tout objet partie appartient au moins un objet agrgat.

30
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

Remarque
L'agrgation est une association particulire (binaire de cardinalit libre).
L'agrgation n'est pas symtrique.

Syntaxe

Notation de l'agrgation en UML


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.

Attention
L'agrgation garde toutes les proprits d'une association classique (cardinalit, cycle de vie,
etc.), elle ajoute simplement une terminologie un plus prcise via la notion de tout/partie.

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

31
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

Exemple : Exemple de classes abstraites

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.

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

Syntaxe : Notation de contraintes

Notation contraintes en UML

32
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

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.

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.

2.8. Exemple de contraintes standardises sur les associations


Rappel

Notation des contraintes sur les associations

Dfinition : Inclusion {I}


Si l'association inclue est instancie, l'autre doit l'tre aussi, la contrainte d'inclusion a un sens,
reprsent par une flche (galement note {Subset} ou {IN}).

33
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

Dfinition : Simultanit {S}


Si une association est instancie, l'autre doit l'tre aussi (galement note {=} ou {AND}).
La simultanit est quivalente une double inclusion.

Dfinition : Exclusion, {X}


Les deux associations ne peuvent tre instancies en mme temps.

Dfinition : Totalit {T}, galement note {OR}


Au moins une des deux associations doit tre instancie.

Dfinition : Partition {XT}, galement note {+} ou {XOR} ou {P}


Exactement une des deux associations doit tre instancie.

2.9. Exemple de contraintes standardises sur les attributs


Dfinition : Inclusion {I}
Si l'association inclue est instancie, l'autre doit l'tre aussi, la contrainte d'inclusion a un sens,
reprsent par une flche (galement note {Subset} ou {IN}).

Dfinition : Simultanit {S}


Si une association est instancie, l'autre doit l'tre aussi (galement note {=} ou {AND}).
La simultanit est quivalente une double inclusion.

Dfinition : Exclusion, {X}


Les deux associations ne peuvent tre instancies en mme temps.

Dfinition : Totalit {T}, galement note {OR}


Au moins une des deux associations doit tre instancie.

Dfinition : Partition {XT}, galement note {+} ou {XOR} ou {P}


Exactement une des deux associations doit tre instancie.

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

34
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

Syntaxe

Notation des paquetages en UML

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 (une partie des packages) ou centre sur un seul
package.
Pour une reprsentation partielle ou centre sur un package, on reprsente les packages
concerns avec leurs classes propres, ainsi que toutes les classes lies des autres packages (et
seulement celles-ci).

Prsentation partielle du modle centre sur un package

35
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

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

Notation 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).

2.12. numration
Syntaxe

Strotype UML permettant d'exprimer une numration

36
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

Exemple

Exemple de modlisation UML d'numration

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

3.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
( c f .
Mthode MERISE Tome 1 : Principes et outils
,

Mthode MERISE Tome 2 : Dmarche et pratiques ).


*

La conception E-A est issue des travaux de Chen et se fonde sur deux concepts principaux et
un troisime sous-jacent : l'entit, l'association et l'attribut ou proprit.
*

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

37
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

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.

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

38
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

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

3.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 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).

3.5. Modle E-A tendu


Introduction
On peut tendre le modle E-A "classique" de faon accrotre 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.

3.5.1. Attributs composites


Un attribut peut tre compos hirarchiquement de plusieurs autres attributs.

39
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

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

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

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

3.5.4. Sous-type d'entit


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

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.

3.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".

40
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

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.

3.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).

41
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

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.

4. 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
Association
Association
Verbe
Cardinalit
Hritage
Hritage d'attributs
Hritage de mthodes
Composition (ou entit faible)
Cardinalit

5. Bibliographie commente sur la modlisation UML


Complment : Outils de modlisation UML
Il existe de nombreux outils de modlisation UML. On pourra citer:
Dia: logiciel Open Source et multi-plateformes facile d'usage (qui marche nanmoins
mieux sur Linux que sur Windows).
Objecteering (version gratuite).
*

voir galement en Open Source: ArgoUML ou EclipseUML. (non test par l'auteur).

42
Stphane Crozat - UTC

Le niveau conceptuel: la modlisation des bases de donnes

Complment : Modlisation UML


UML2 en action
*

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
*

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/i-p14.html

Complment : Tutoriel sur la modlisation UML.


UML en 5 tapes
*

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
*

Complment : Pratique
UML2 par la pratique (chapitre 3)
*

Des explications, exemples et tudes de cas.

43
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

Le niveau logique: la
modlisation
relationnelle

III

Description du modle relationnel

44

Passage UML-Relationnel: Cas systmatiques

55

Passage UML-Relationnel: Associations 1:1

66

Passage UML-Relationnel: Hritage

69

Le passage E-A vers Relationnel

83

Algbre relationnelle

87

En rsum: Schma relationnel

97

Bibliographie commente sur le modle relationnel

97

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

1. Description du modle relationnel


Objectifs
Connatre les fondements thoriques du modle relationnel.
Comprendre le
non-redondance.

principe

d'clatement

des

relations

et

de

44
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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

1.2. Le modle relationnel


Introduction
Le modle relationnel a t introduit par Codd, 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.

1.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)
*

45
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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}

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

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>,}

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

Tableau 1 Relation R

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

46
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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

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

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

1.7. Exemple: La relation "Vol"


Exemple

Tableau 1 Relation Vol

47
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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

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

48
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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.

49
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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

50
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

1.11. clatement des relations pour viter la redondance


Relation redondante

Tableau 1 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'attributs 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
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.

51
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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.

Tableau 1 Relation Voyage

Tableau 1 Relation Modele

Tableau 1 Relation Conducteur

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 matrialiser nouveau ces liens, en ajoutant des rfrences dans la relation
Voyage, aux tuples de Modele et Conducteur.

Tableau 1 Relation Voyage

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

52
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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.

1.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)
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.

53
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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

Syntaxe : Cl candidates
Relation1 (...AttributM:DomaineM, ......) avec AttributM
cl
Les cls candidates doivent tre notes sur le schma relationnel:
S'il n'y a qu'une ou deux cls candidates, les noter directement aprs la dfinition de la
relation
S'il y a beaucoup de cls, pour ne pas trop alourdir la notation, renvoyer un tableau
part

Attention : Cls candidates et cl primaire


La notation R(#a,#b) signifie toujours que R a comme cl primaire (a,b), et non que R
aurait deux cls a et b (dont on ne saurait pas laquelle est primaire).
La notation R(#a,b) avec b cl signifie bien que a et b sont deux cls de R, et que a est
primaire.
Il ne faut pas confondre une cl compose de deux attributs avec deux cls.

1.14. Exemple de schma relationnel 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)

54
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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

2. Passage UML-Relationnel: Cas systmatiques


Objectifs
Savoir faire le passage d'un schma conceptuel UML un schma
relationnel dans les cas simples.
Reconnatre les cas de transformation qui se traitent toujours de la
mme faon.

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 que ce passage soit systmatis dans la plupart
des cas.

55
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

2.1. Transformation des classes


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

Graphique 1 Classe
Classe1(...)

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

2.2. Transformation des attributs


Mthode : Attributs simples
Pour chaque attribut lmentaire et monovalu d'une classe,
on cre un attribut correspondant.

Graphique 1 Attribut
Classe1(#a,b)

56
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

Mthode : Attributs composites


Pour chaque attribut composite comprenant N sous-attributs d'une classe,
on cre N attributs correspondants,
dont les noms sont la concatnation du nom de l'attribut composite avec celui du
sous-attribut.

Graphique 1 Attribut compos


Classe1(#a,b_b1,b_b2)

Mthode : Attributs multivalus


Pour chaque attribut multivalu b d'une classe C,
on cre une nouvelle relation RB,
qui comprend un attribut monovalu correspondant b,
plus la cl de la relation reprsentant C;
la cl de RB est la concatnation des deux attributs.

Graphique 1 Attribut multivalu


Classe1(#a)
RB(#b,#a=>Classe1)

Mthode : Attributs multivalus (mthode alternative)


Dans le cas o le nombre maximum de b est fini, et petit, on peut galement adopter la
transformation suivante: Classe1(#a,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10).
Si le nombre d'attributs est infini (b[1..*]) c'est impossible, s'il est trop grand ce n'est pas
souhaitable.

57
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

Mthode : Attributs composs multivalus


On combine les rgles nonces pour les attributs composs et pour les attributs multivalus.

Graphique 1 Attribut compos multivalu


Classe1(#a)
RB(#b_b1,#b_b2,#a=>Classe1)

Rappel : Voir aussi


Transformation des compositions - p. 63

2.3. Transformation des attributs drivs et mthodes


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.

Graphique 1 Attribut driv et mthodes


Classe1(#a)

Remarque : Attribut driv stocks


On peut 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 gnral dconseill, et ce qui doit tre
dans tous les cas contrl.

58
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

2.4. Transformation des associations 1:N


Mthode : Association 1:N
Pour chaque association binaire de type 1:N (ou 0,1:N),
on ajoute la relation ct N une cl trangre vers la relation ct 1.

Graphique 1 Association 1:N


Classe1(#a,b)
Classe2(#c,d,a=>Classe1)

Mthode : Cardinalit minimale 1


Si la cardinalit est exactement 1 (1..1) ct 1, alors on ajoutera une contrainte de non
nullit sur la cl trangre,
si la cardinalit est au moins 1 (1..N) ct N, on ajoutera une contrainte d'existence de
tuples rfrenant pour chaque tuple de la relation rfrence.

Graphique 1 Association 1:N


Classe1(#a,b)
Classe2(#c,d,a=>Classe1) avec a NOT NULL
Contrainte: PROJ(Classe1,a) IN PROJ(Classe2,a)

59
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

2.5. Transformation des associations N:M


Mthode : Association M:N et associations de degr suprieur 2
Pour chaque association binaire de type M:N ou de degr suprieur 2,
on cre une nouvelle relation,
compose de cls trangres vers chaque relation associe,
et dont la cl primaire est la concatnation de ces cls trangres.

Graphique 1 Association N:M


Classe1(#a,b)
Classe2(#c,d)
Assoc(#a=>Classe1,#c=>Classe2)

Mthode : Cardinalit minimale 1


Si la cardinalit est exactement au moins 1 (1..N) d'un ct et/ou de l'autre, alors des
contraintes d'existence simultane de tuple devront tre ajoute.
Ce n'est pas ncessaire si la cardinalit est 0..N.

Graphique 1 Association N:M


Classe1(#a,b) avec Classe1 IN Assoc
Classe2(#c,d) avec Classe2 IN Assoc
Assoc(#a=>Classe1,#c=>Classe2)
Contraintes : PROJ(Classe1,a)
PROJ(Assoc,c)

IN

PROJ(Assoc,a)

et

PROJ(Classe2,c)

IN

60
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

2.6. 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;
les cls deviennent des cls candidates.

Graphique 1 Classe d'association (1:N)


Classe1(#a,b)
Classe2(#c,d,a=>Classe1, e, f) avec e KEY

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 (dite cl locale), celle-ci est concatne aux cls
trangres composant dj la cl primaire de la relation d'association.

Graphique 1 Classe assocation (N:M)


Classe1(#a,b)
Classe2(#c,d)
Assoc(#a=>Classe1,#c=>Classe2,#e,f)

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. Si les deux classes ont t fusionnes en une seule relation, les attributs sont
ajouts celle-ci.

61
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

Complment : Cardinalit minimale 1 (1:N)

Graphique 1 Classe d'association (1:N)


Classe1(#a,b)
Classe2(#c,d,a=>Classe1, e, f) avec e KEY et a NOT NULL
Contrainte: PROJ(Classe1,a) IN PROJ(Classe2,a)

Complment : Cardinalit minimale 1 (N:M)

Graphique 1 Classe assocation (N:M)


Classe1(#a,b) avec Classe1 IN Assoc
Classe2(#c,d) avec Classe2 IN Assoc
Cl-Assoc(#a=>Classe1,#c=>Classe2,#e,f)
Contraintes : PROJ(Classe1,a) IN PROJ(Cl-Assoc,a) et PROJ(Classe2,c) IN
PROJ(Cl-Assoc,c)

62
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

2.7. Transformation des agrgations


Rappel : Agrgation
Les associations de type agrgation se traitent de la mme faon que les associations classiques.

Graphique 1 Agrgation 1:N


Classe1(#a,b)
Classe2(#c,d,a=>Classe1)

Graphique 1 Agrgation N:M


Classe1(#a,b)
Classe2(#c,d)
Assoc(#a=>Classe1,#c=>Classe2)

2.8. Transformation des compositions


Mthode
Une composition
est transforme comme une association 1:N,
puis on ajoute la cl de la classe partie (dite cl locale) la cl trangre vers la classe
composite pour construire une cl primaire compose.

Graphique 1 Composition
Classe1(#a,b)
Classe2(#c,#a=>Classe1,d)

63
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

Remarque : Cl locale
Pour identifier une classe partie dans une composition, on utilise une cl locale concatne la
cl trangre vers la classe composite, afin d'exprimer la dpendance entre les deux classes.
Si une cl naturelle globale permet d'identifier de faon unique une partie indpendamment du
tout, on prfrera la conserver comme cl candidate plutt que de la prendre pour cl primaire.
Si on la choisit comme cl primaire cela revient avoir transform la composition en
agrgation, en redonnant une vie propre aux objets composants.

Complment : Composition et entits faibles en E-A


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

Complment : Attributs multivalus et composs


La transformation d'une composition donne un rsultat quivalent la transformation d'un
attribut compos multivalu.

Graphique 1 Composition et attribut compos multivalu


Classe1(#a)
RB(#b_b1,#b_b2,#a=>Classe1)
La transformation d'une composition avec un seul attribut pour la classe composante donne un
rsultat quivalent la transformation d'un attribut multivalu.

Graphique 1 Composition et attribut multivalu


Classe1(#a)
RB(#b,#a=>Classe1)

Rappel : Voir aussi


Transformation des attributs - p. 56

64
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

2.9. 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. On ajoutera galement les cls candidates.
Relation1

AND (Relation1, Relation4); a KEY; ...

Relation2

b > c; XOR (Relation2, Relation 3); ...

L'on peut galement commenter chaque relation directement lorsque les informations ne sont
pas trop nombreuses.
Relation1 (a, b, c) avec : c cl candidate ;
AND(Relation1,Relation4)
Relation2 (b, c, d) avec : b > c ; XOR(Relation2,
Relation3)

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.

2.10. Correspondance entre UML et relationnel

Tableau 1 Passsage UML vers Relationnel

65
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

3. Passage UML-Relationnel: Associations 1:1


Objectifs
Savoir faire le passage d'un schma conceptuel UML un schma
relationnel.
Connatre les choix possibles pour le cas de l'association 1:1 et
savoir faire les bons choix.

Il existe des formulations conceptuelles en UML qui sont plus dlicates traduire au niveau logique
en relationnel, comme l'association 1:1. Ces cas requirent un choix clair de la part du concepteur.

3.1. Transformation des associations 1:1 (cas gnral)


Il existe deux solutions pour transformer une association 1:1:
Avec 2 relations : on traite l'association 1:1 une association 1:N, puis l'on ajoute une
contrainte UNIQUE sur la cl trangre pour limiter la cardinalit maximale 1;
Avec 1 relation: on fusionne les deux classes en une seule relation.

Graphique 1 Association 1:1

Mthode : Avec deux relations (cl trangre)


Une des deux relations est choisie pour porter la cl trangre;
on ajoute les contraintes : UNIQUE ou KEY (cl candidate) sur la cl trangre ; et si
ncessaire l'instanciation simultane des deux relations (AND).
Classe1(#a,b,c=>Classe2) avec c UNIQUE ou KEY
Classe2(#c,d)
Contrainte (ventuellement): PROJ(Classe1,c)=PROJ(Classe2,c)
ou
Classe1(#a,b)
Classe2(#c,d,a=>Classe1) avec a UNIQUE ou KEY
Contrainte (ventuellement): PROJ(Classe1,a)=PROJ(Classe2,a)

Mthode : Avec une relation (fusion)


On cr une seule relation contenant l'ensemble des attributs des deux classes;
on choisit une cl parmi les cls candidates.
Classe12(#a,b,c,d) avec c UNIQUE ou KEY
ou
Classe21(#c,d,a,b) avec a UNIQUE ou KEY

66
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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


1:1
Ce choix entre les deux mthodes 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 sret factorises ou non au niveau des deux relations
...

3.2. Transformation des associations 1..1:1..1


Mthode : Association 1..1:1..1
Le plus souvent c'est mthode par fusion des relations qui est la plus adapte ce cas.
Lorsqu'elle ne l'est pas, et que l'on choisit deux relations il faut ajouter une contrainte
dynamique qui contrlera que les deux relations sont bien toujours instancies
ensembles. Notons que la cl trangre peut tre choisie comme cl primaire.

Graphique 1 Association 1:1


Classe12(#a,b,c,d) avec c KEY
ou
Classe21(#c,d,a,b) avec a KEY
ou
Classe1(#a,b,c=>Classe2) avec c KEY
Classe2(#c,d)
Contrainte (ventuellement): PROJ(Classe1,c)=PROJ(Classe2,c)
ou
Classe1(#a,b)
Classe2(#c,d,a=>Classe1) avec a KEY
Contrainte (ventuellement): PROJ(Classe1,a)=PROJ(Classe2,a)

67
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

3.3. Transformation des associations 0..1:1..1


Mthode : Association 0..1:1..1
Le plus souvent c'est la mthode par les deux relations qui est la plus adapte, on
choisira toujours la relation ct 0..1 pour tre rfrenante.
Il est possible d'utiliser la fusion, dans ce cas les cls ct 0..1 deviennent des attributs
UNIQUE, il ne peuvent plus tre cls, pouvant tre NULL.

Graphique 1 Association 0..1:1


Classe1(#a,b,c=>Classe2) avec c KEY
Classe2(#c,d)
ou
Classe12(#c,d,a,b) avec a UNIQUE

3.4. Transformation des associations 0..1:0..1


Mthode : Association 0..1:0..1
On choisit la solution avec deux relations, d'un ct ou de l'autre; la cl trangre est
associ la contrainte UNIQUE, ce n'est pas une cl car elle peut tre nulle.
Il n'est pas possible de choisir la fusion, en effet l'une des deux relations pouvant tre
nulle, on ne pourrait plus trouver de cl.

Graphique 1 Association 0..1:0..1


Classe1(#a,b,c=>Classe2) avec c UNIQUE
Classe2(#c,d)
ou
Classe1(#a,b)
Classe2(#c,d,a=>Classe1) avec a UNIQUE

68
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

3.5. Exemple de choix pour une relation 1:1


Exemple
Soit deux entits, "homme" et "femme" et une association "mariage" de cardinalit 1..1:1..1
(hommes et femmes sont donc obligatoirement maris) entre ces deux entits. Les entits
"homme" et "femme" sont identifies par un attribut "nom".
Bien que de type 1..1:1..1, le choix de la fusion n'est pas trs opportun car il s'agit bien d'objets
distincts que l'on veut modliser.
On choisira donc plutt la reprsentation avec deux relations. La cl trangre pourra tre du
ct "homme" ou "femme", mme si la pratique dominante nous incite la mettre du ct
femme. On pourra galement dcider de prendre la cl trangre comme cl primaire.
homme (#nom) avec un tuple de femme rfrenant
obligatoirement chaque tuple de hommme
femme (#mariage=>homme, nom) avec nom KEY
Contrainte : PROJ(homme,nom)=PROJ(femme,mariage)

Exemple
Si l'association avait t de cardinalit 0..1:0..1 (certains hommes et femmes ne sont pas
maris), un choix similaire se serait impos, avec l'impossibilit de choisir la cl trangre
comme cl primaire, celle-ci pouvant tre nulle et n'tant donc plus candidate.
homme (#nom)
femme (#nom, mariage=>homme) avec mariage UNIQUE

4. Passage UML-Relationnel: Hritage


Objectifs
Savoir faire le passage d'un schma conceptuel UML un schma
relationnel.
Connatre les choix possibles pour le cas de l'hritage et savoir faire
les bons choix.

La traduction en relationnel des hritages modliss au niveau conceptuel peut se faire de plusieurs
faons, et le choix demande d'tudier plus en dtail la nature de cet hritage.

69
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

4.1. 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 une relation chacune.
Reprsenter uniquement la classe mre par une seule relation.

Graphique 1 Hritage

Mthode
En pratique le choix entre ces trois solutions va dpendre de la rponse trois questions:
L'hritage est-il complet?
L'hritage est-il exclusif?
La classe mre est-elle abstraire?

Dfinition : Hritage exclusif


Un hritage est exclusif si les objets d'une classe fille ne peuvent appartenir aussi une autre
classe fille. On peut le noter avec la contrainte {X} sur le diagramme UML ({XT} si la classe
mre est abstraite).

Graphique 1 Hritage exclusif

70
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

Dfinition : Hritage complet et presque complet


Un hritage est complet si ses classes filles n'ont aucune caractristiques (attributs, mthodes,
associations) propres.

Graphique 1 Hritage complet


Un hritage est presque complet si les classes filles ont des mthodes propres, quelques attributs
propres, et aucune association propre.

Attention
Afin de dterminer si un hritage est presque 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).

4.2. Transformation de la relation d'hritage par rfrence


Mthode : Hritage reprsent par une rfrence (classe mre non abstraite)
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 avec la classe mre.

Graphique 1 Hritage
Classe1(#a,b)
Classe2(#a=>Classe1,c,d) avec c KEY
vClasse2=jointure(Classe1,Classe2,a=a)
Classe3(#a=>Classe1,e,f) avec e KEY
vClasse3=jointure(Classe1,Classe3,a=a)

71
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

Mthode : Hritage reprsent par une rfrence (classe mre abstraite)

Graphique 1 Hritage (classe mre abstraite)


Si la classe mre est abstraite, il faut ajouter la contrainte que tous les tuples de la
Classe1 sont rfrencs par un tuple de la Classe2 et/ou de la Classe3.
Classe1(#a,b)
Classe2(#a=>Classe1,c,d) avec c KEY
vClasse2=jointure(Classe1,Classe2,a=a)
Classe3(#a=>Classe1,e,f) avec e KEY
vClasse3=jointure(Classe1,Classe3,a=a)
Contraintes: PROJ(Classe1,a) IN (PROJ(Classe2,a) UNION PROJ(Classe3,a))

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 instance fille.

Exemple
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)
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.

72
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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


Mthode : Hritage absorb par les classes filles (classe mre abstraite)

Graphique 1 Hritage (classe mre abstraite)


1. Chaque classe fille est reprsente par une relation, la classe mre n'est pas reprsente
(elle est abstraite).
2. Tous les attributs de la classe mre sont rpts au niveau de chaque classe fille.
3. La cl primaire de la classe mre est utilise pour identifier chacune de ses classes filles.
Classe2(#a,b,c,d) avec c KEY
Classe3(#a,b,e,f) avec e KEY

Mthode : Hritage absorb par les classes filles (classe mre non abstraite)

Graphique 1 Hritage
On cr une relation supplmentaire pour grer les objets de la classe mre
On ajoute une contrainte qui exprime que les tuples de la classe mre ne peuvent exister
dans les classes filles
On ajoute une vue pour reprsenter tous les objets de la classe mre (par union des
tuples de la classe mre et des classes filles).
Classe1(#a,b)

vClasse1=Union(Union(Classe1,Projection(Classe2,a,b)),Projection(Classe3,a,b))
Classe2(#a,b,c,d) avec c KEY
Classe3(#a,b,e,f) avec e KEY
Contrainte :
PROJ(Classe1,a)
PROJ(Classe3,a))

NOT

IN

(PROJ(Classe2,a)

UNION

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

73
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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.

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


Mthode : Hritage absorb par la classe mre (classe mre non abstraite)

Graphique 1 Hritage
1. Seule la classe mre est reprsente par une relation (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 de discrimination t (pour "type"), est ajout la classe
mre, afin de distinguer les tuples:
cet attribut est de type numration et a pour valeurs possibles les noms de la
classe mre ou 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 diffrentes classes filles.
5. Chaque classe est reprsente par une vue qui restreint aux tuples de la relation
correspondants et les projette sur les attributs correspondants.
Classe1(#a,b,c,d,e,f,t:{1,2,3,23}) avec c UNIQUE et e UNIQUE
vClasse1=projection(restriction(Classe1,t=1),a,b)
vClasse2=projection(restriction(Classe1,t=2 ou t=23),a,b,c,d)
vClasse3=projection(restriction(Classe1,t=3 ou t=23),a,b,e,f)

74
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

Mthode : Hritage absorb par la classe mre (classe mre abstraite)

Graphique 1 Hritage (classe mre abstraite)


Si la classe mre est abstraite, sa valeur est te de l'attribut de discrimination
Une contrainte supplmentaire doit vrifier que soit c soit e est obligatoirement valu
(ou les deux).
Classe1(#a,b,c,d,e,f,t:{2,3,23}) avec c UNIQUE et e UNIQUE et (c NOT
NULL OR e NOT NULL)
vClasse2=projection(restriction(Classe1,t=2 ou t=23),a,b,c,d)
vClasse3=projection(restriction(Classe1,t=3 ou t=23),a,b,e,f)

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 elle n'officiera pas en tant que cl candidate car
elle pourra contenir des valeurs nulles (elle sera nanmoins unique).

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.

75
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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.

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".
Classe1(#a,b,c,d,e,f,t:{1,2,3,23})
quivaut :
Classe1(#a,b,c,d,e,f,t2:boolean:,t3:boolean)

4.5. lments de choix


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.

Tableau 1 Avantages et inconvnients de chaque transformation

Tableau 1 Choix de la bonne transformation

76
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

4.6. Les cas simples


Mthode : Cas de l'hritage exclusif avec classe mre abstraite
Dans ce cas, toujours choisir un hritage par les classes filles.

Graphique 1 Hritage exclusif (classe mre abstraite)


Classe2(#a,b,c,d) avec c KEY
Classe3(#a,b,e,f) avec e KEY

Mthode : Cas de l'hritage complet


Si l'hritage n'est pas exclusif ou que la classe mre n'est pas abstraite, toujours choisir un
hritage par la classe mre.

Graphique 1 Hritage complet


1. Si la classe mre est abstraite:
Classe1(#a,b,t:{2,3,23})
vClasse2=restriction(Classe1,t=2 ou
vClasse3=restriction(Classe1,t=3 ou
2. Si la classe mre n'est pas abstraite:
Classe1(#a,b,t:{1,2,3,23})
vClasse1=restriction(Classe1,t=1)
vClasse2=restriction(Classe1,t=2 ou
vClasse3=restriction(Classe1,t=3 ou

t=23))
t=23))

t=23))
t=23))

77
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

Mthode : Cas de l'hritage presque complet


L'hritage presque complet peut tre gr comme l'hritage complet, par la classe mre, surtout
si les classes filles ne possdent pas de cl propre.

Graphique 1 Hritage presque complet (classe mre abstraite)


1. Si la classe mre est abstraite:
Classe1(#a,b,d,f,t:{2,3,23})
vClasse2=projection(restriction(Classe1,t=2 ou t=23),a,b,d)
vClasse3=projection(restriction(Classe1,t=3 ou t=23),a,b,f)
2. Si la classe mre n'est pas abstraite:
Classe1(#a,b,c,d,e,f,t:{1,2,3,23})
vClasse1=projection(restriction(Classe1,t=1),a,b)
vClasse2=projection(restriction(Classe1,t=2 ou t=23),a,b,d)
vClasse3=projection(restriction(Classe1,t=3 ou t=23),a,b,f)

78
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

Mthode : Cas de l'hritage non complet et non exclusif avec classe mre non
abstraite
Dans ce cas, choisir un hritage par rfrence.

Graphique 1 Hritage non exclusif et non complet


Classe1(#a,b)
Classe2(#a=>Classe1,c,d) avec c KEY
vClasse2=jointure(Classe1,Classe2,a=a)
Classe3(#a=>Classe1,e,f,c=>Classe2) avec e KEY
vClasse3=jointure(Classe1,Classe3,a=a)

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


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.

79
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

Remarque : Type d'hritage


1. Si l'on pose qu'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.
2. 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 et pas d'association associe aux classes filles.
3. La classe mre est abstraite, on ne gre que des livre ou des thses, pas d'autres
documents.
La meilleure solution est donc ici un hritage par la classe mre.
Observons nanmoins les avantages et inconvnients que chacun des trois choix porterait.

4.7.1. Hritage reprsent par une rfrence


Document(#Titre:Chane, Auteur:Chane) avec Document AND
(These OR Livre)
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)
Contraintes : PROJ(Document,Titre) IN (PROJ(These,Titre)
UNION PROJ(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).

4.7.2. Hritage absorb par les classes filles


These(#Titre, Discipline:Chane, Auteur:Chane)
Livre(#Titre, Editeur:Chane, Auteur:Chane)

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.

80
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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.

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

4.8. Transformations de l'hritage: Synthse


L'hritage est toujours dlicat traduire en relationnel, ce qui est dommage car son pouvoir de
reprsentation conceptuel est fort.

81
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

Mthode : Algorithme de choix


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 complet ou presque complet ALORS par la classe mre
SINON problme (aucune bonne solution, chercher la moins mauvaise)
SINON
SI hritage complet ou presque complet ALORS hritage par la classe mre
SINON
SI hritage non exclusif ALORS par rfrence
SINON problme
Abs

OUI

OUI

OUI

Fille

OUI

OUI

NON

Fille

OUI

NON

OUI

Mre

OUI

NON

NON

NON

OUI

OUI

Mre

NON

OUI

NON

NON

NON

OUI

Mre

NON

NON

NON

Rfrence

Table de dcision

Conseil
On retiendra que:
Les hritages complets ne posent jamais problme
Les deux cas les plus dlicats sont, quand l'hritage n'est pas complet:
1. hritage exclusif et classe mre non abstraite
2. hritage non exclusif et classe mre abstraite

Attention : Penser aux vues !


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

Mthode : Hritage et cl primaire


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

82
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

5. Le passage E-A vers Relationnel


Le passage E-A vers relationnel est trs similaire au passage UML vers relationnel. Les rgles
dcrites ici sont donc complter avec celles prescrites pour UML.

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

Rappel : Voir aussi


Transformation des classes - p. 56
Transformation des compositions - p. 63

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

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


Une association 1:1 est gre comme un cas particulier d'association 1:N, en ajoutant une
contrainte d'unicit la cl trangre migre.

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.

83
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

Rappel : Voir aussi


Transformation des associations 1:N - p. 59
Transformation des associations N:M - p. 60
Transformation des associations 1:1 (cas gnral) - p. 66

5.3. Transformation des attributs


Mthode : Attributs simples
Pour chaque attribut lmentaire et monovalu A d'une entit 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 entit 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 entit E (idem pour les associations), on cre une
nouvelle relation RM qui comprend un attribut monovalu correspondant M ainsi qu'une cl
trangre vers RE (relation reprsentant E). La cl de RM est la concatnation des deux
attributs.
On gre donc M comme s'il s'agissait d'une entit faible RM, dont la cl locale serait M, et qui
serait associe E par une relation 1:N.

Mthode : Attributs drivs


On ne reprsente pas en gnral les attributs drivs dans le modle relationnel, ils seront
calculs dynamiquement soit par des procdures internes la BD (procdures stockes), soit
par des procdures au niveau applicatif.

Rappel : Voir aussi


Transformation des attributs - p. 56
Transformation des attributs drivs et mthodes - p. 58

84
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

5.4. Exemple de passage E-A vers relationnel


Exemple

Transformation avec une relation 1:N

Exemple

Transformation avec une relation M:N

5.5. Transformation de la relation d'hritage


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.

85
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

Rappel : Voir aussi


Transformation de la relation d'hritage par rfrence - p. 71
Transformation de la relation d'hritage par les classes filles - p. 73
Transformation de la relation d'hritage par la classe mre - p. 74

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


Exemple
Soit le modle E-A suivant :

Reprsentation de documents

Hritage reprsent par une rfrence


Document(#Titre:Chane, Auteur:Chane)
These(#Titre=>Document, Discipline:Chane)
Livre(#Titre=>Document), Editeur:Chane

Hritage absorb par les sous-types d'entit


These(#Titre, Discipline:Chane, Auteur:Chane)
Livre(#Titre, Editeur:Chane, Auteur:Chane)

Hritage absorb par l'entit gnrale


Document(#Titre, Discipline:Chane, Editeur:Chane,
Auteur:Chane, Type:{These|Livre|These+Livre})

86
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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

Tableau 1 Passage E-A et UML vers Relationnel

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

87
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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

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

88
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

Exemple
Soit les deux relations suivantes :
Homme (Nom, Prnom, Age)
Femme (Nom, Prnom, Age)
Soit les tuples suivants pour ces deux relations respectivement :
(Dupont,
(Durand,
(Martin,
(Tintin,

Pierre, 20)
Jean, 30)
Isabelle, 20)
Hlne, 30)

Soit l'opration suivante :


R = Union (Homme, Femme)
On obtient alors la relation R compose des tuples suivants :
(Dupont,
(Durand,
(Martin,
(Tintin,

Pierre, 20)
Jean, 30)
Isabelle, 20)
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.

6.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 : limination des doublons


Aprs suppression d'une partie des attributs du schma, la relation peut comporter des
doublons. tant 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.

89
Stphane 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 = Projection (Personne, Nom, Age)
On obtient alors la relation R compose des tuples suivants :
(Dupont, 20)
(Durand, 30)

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

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)

90
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

6.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,
(Durand,
(Martin,
(Tintin,

Pierre, 20)
Jean, 30)
Isabelle, 15)
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)

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

91
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

Exemple
Soit les deux relations suivantes :
Homme (Nom, Prnom, Age)
Enfant (Nom, Prnom, Age)
Soit les tuples suivants pour ces deux relations respectivement :
(Dupont,
(Durand,
(Dupont,
(Dupont,

Pierre, 20)
Jean, 30)
Georges, 1)
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.

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

92
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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

93
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

Exemple
Soit les deux relations suivantes :
Homme (Nom, Prnom, Age)
Enfant (Nom, Prnom, Age)
Soit les tuples suivants pour ces deux relations respectivement :
(Dupont,
(Durand,
(Dupont,
(Martin,

Pierre, 20)
Jean, 30)
Georges, 1)
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.

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

94
Stphane Crozat - UTC

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.

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

95
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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)

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)

6.11. Exercice : Oprateurs de base et additionnels


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

Rcrivez Intersection partir de Diffrence


Question
[Solution p 155]

Rcrivez Jointure partir de Produit et Restriction


Question
[Solution p 155]

Rcrivez Division partir de Produit, Restriction et Difference

96
Stphane Crozat - UTC

Le niveau logique: la modlisation relationnelle

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

8. Bibliographie commente sur le modle relationnel


Complment : Synthses
SQL2 SQL3, applications Oracle
*

Une dfinition synthtique et efficace du domaine relationnel : relation, domaine, attribut, cl,
intgrit, oprateurs (Premier chapitre).

97
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

Le niveau physique:
Le langage SQL

IV

Qu'appelle-t-on SQL?

98

Le Langage de Dfinition de Donnes de SQL

99

Gestion avec le Langage de Manipulation de Donnes de SQL

107

Questions avec le Langage de Manipulation de Donnes de SQL

109

Instructions avances pour le LMD de SQL

122

Le Langage de Contrle de Donnes de SQL

126

En rsum: SQL

129

Bibliographie commente sur le SQL

129

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

1. 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.).
Exemple de commandes: CREATE DROP ALTER
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).
Exemple de commandes: GRANT REVOKE
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.
Exemple de commandes: INSERT UPDATE DELETE SELECT
Le Langage de Contrle de Transaction (LCT, ou en anglais TCL, Transaction Control
Language) pour la gestion des transactions (validation ou annulation de modifications de
donnes dans la BD)
Exemple de commandes: COMMIT ROLLBACK
*

98
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

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
IBM
IBM
IBM

Sequel (Structured English Query Language) en 1977


Sequel/2
System/R
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.

2. 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.
*

2.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.
*

99
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

Les types numriques standard


Les nombres entiers
INTEGER (ou INT) et SMALLINT, permettent de coder des entiers sur 4 octets
(-2.147.483.648 2.147.483.647) ou 2 octets (-32.768 32.767).
Les nombres dcimaux
DECIMAL(X,Y), o X et Y sont optionnels et dsignent respectivement le nombre de
chiffres maximum pouvant composer le nombre, et le nombre de chiffres aprs la virgule.
NUMERIC est un synonyme standard.
Les nombres virgule flottante
FLOAT(X), avec X dfinissant la prcision (nombre de bits de codage de la mantisse).
REAL est un synonyme standard de FLOAT(24).

Conseil : FLOAT versus DECIMAL


Il est conseill d'utiliser DECIMAL qui est un nombre exact, plutt que FLOAT qui est un
nombre approximatif, si la prcision requise est suffisante. FLOAT sera rserv typiquement
des calculs scientifiques ncessitant un degr de prcision suprieur.

Les types chane de caractres standard


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
longueur 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 standard


Les types date dont introduits avec la norme SQL2. On distingue:
DATE qui reprsente une date selon un format de type "AAAA-MM-JJ";
et DATETIME qui reprsente une date plus une heure, dans un format tel que
"AAAA-MM-JJ HH:MM:SS".

Complment : Les autres types


En fonction du SGBD, il peut exister de nombreux autres types. On peut citer par exemple:
MONEY pour reprsenter des dcimaux associs une monnaie,
BOOLEAN pour reprsenter des boolens,
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.

100
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

2.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)
);

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.

101
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

2.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),
Mariage CHAR(13) REFERENCES Personne(NSS),
UNIQUE (Nom, Prenom)
);

102
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

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 .

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

103
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

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),
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.

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

104
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

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.

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

2.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;

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

105
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

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

2.8. Exemple de modifications de tables


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

106
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

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 ci-aprs.
create table t_personnes (
pk_n number (4),
nom varchar(255),
PRIMARY KEY (pk_n),
UNIQUE (nom)
);

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

3.1. Insertion de donnes


Le langage SQL fournit des instructions pour ajouter des nouveaux tuples une relation. Il offre
ainsi une interface standard 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>)

107
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

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

3.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'

108
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

Exemple : Mise jour par calcul sur l'ancienne valeur


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

3.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'

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

4.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).

109
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

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 en particulier 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

110
Stphane Crozat - UTC

Le niveau physique: 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 : Renommage de relation


Il est possible de redfinir le nom des relations au sein de la requte afin d'en simplifier la
syntaxe.
SELECT P.Prenom, E.Prenom
FROM Parent P, Enfant E
WHERE E.Nom=P.Nom

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

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

111
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

Les oprateurs de comparaison sont :


P
P
P
P
P
P
P
P
P
P

=C
<> C
<C
>C
<= C
>= C
BETWEEN C1 AND C2
IN (C1, C2, ...)
LIKE 'chane'
IS NULL

Les oprateur logique sont :


OR
AND
NOT

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.

4.3. Expression du produit cartsien


Syntaxe
SELECT *
FROM R1, R2, Ri

112
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

Exemple

Tableau 1 Exemple de produit (SQL et Algbre)

4.4. Expression d'une projection


Syntaxe
SELECT P1, P2, Pi
FROM R

113
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

Exemple

Tableau 1 Exemple de projection (SQL et Algbre)

4.5. Expression d'une restriction


Syntaxe
SELECT *
FROM R
WHERE <condition>

114
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

Exemple

Tableau 1 Exemple de restriction (SQL et Algbre)

4.6. Expression d'une jointure


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>

115
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

Exemple

Tableau 1 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".

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

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

116
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

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

Tableau 1 Exemple de jointure externe (SQL et Algbre)

117
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

Exemple

Tableau 1 Exemple de jointure externe gauche (SQL et Algbre)

Exemple

Tableau 1 Exemple de jointure externe droite (SQL et Algbre)

118
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

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.

Tableau 1 Exemple de slection d'enregistrements non rfrencs (SQL et Algbre)

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

119
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

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.

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

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

120
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

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

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

121
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

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.

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).
*

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

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

122
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

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)

5.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>
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)

123
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

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.

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

124
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

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.

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

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.

125
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

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

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

5.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)

6. 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
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.
*

126
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

6.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).

127
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

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.

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.

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

6.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, ...).

128
Stphane Crozat - UTC

Le niveau physique: Le langage SQL

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

8. Bibliographie commente sur le SQL


Complment : Exerciseur faire
Tutoriel SQL
*

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
*

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
*

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
*

Un tutoriel trs pdagogique sur l'expression de jointures sous Access qui aide comprendre
l'opration de jointure en gnral.

129
Stphane Crozat - UTC

La thorie de la normalisation relationnelle

La thorie de la
normalisation
relationnelle

Redondance et normalisation

130

Les dpendances fonctionnelles

133

Les formes normales

137

Conception de bases de donnes normalises

142

Bibliographie commente sur la normalisation

145

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

1. Redondance et normalisation
Objectifs
Comprendre la problmatique de la redondance.

1.1. Exercice : Introduction la redondance


Soit la relation R suivante, dfinie en extension :

Tableau 1 Relation R

130
Stphane Crozat - UTC

La thorie de la normalisation relationnelle

Question
[Solution p 155]

Proposez une cl primaire pour cette relation. Justifiez brivement.


Question
[Solution p 156]

Cette relation contient-elle des redondances ? Si oui lesquelles ? Justifiez brivement.


Question
[Solution p 156]

Si la relation contient des redondances, proposez une solution contenant exactement la mme information,
mais sans redondance.

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

131
Stphane Crozat - UTC

La thorie de la normalisation relationnelle

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 :

Tableau 1 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).

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

1.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 uvre de la normalisation est fonde sur la dcomposition progressive des relations
jusqu' obtenir des relations normalises.

132
Stphane Crozat - UTC

La thorie de la normalisation relationnelle

2. Les dpendances fonctionnelles


Objectifs
Savoir reprer et exprimer des dpendances fonctionnelles.
Dfinir une cl par les dpendances fonctionnelles.

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

133
Stphane Crozat - UTC

La thorie de la normalisation relationnelle

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

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

134
Stphane Crozat - UTC

La thorie de la normalisation relationnelle

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

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

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

135
Stphane Crozat - UTC

La thorie de la normalisation relationnelle

2.5. 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 }

2.6. 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.
*

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}

2.7. 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 nuds 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 reprsenter F par le
graphe ci-dessous :

Graphe des DFE de la relation Voiture

136
Stphane Crozat - UTC

La thorie de la normalisation relationnelle

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

2.8. 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 inclus dans K tel que XA1,A2,...,An.
Une cl est donc un ensemble minimum d'attributs d'une relation qui dtermine tous les autres.

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

3. Les formes normales


Objectifs
Connatre les formes normales et leurs implications en terme de
redondance.

137
Stphane Crozat - UTC

La thorie de la normalisation relationnelle

3.1. 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
la
la
la
la
la

premire forme normale


deuxime forme normale
troisime forme normale
forme normale de Boyce-Codd
quatrime forme normale
cinquime forme normale

La troisime forme normale est gnralement reconnue comme tant la plus importante
respecter.

3.2. 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).

3.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.
*

138
Stphane Crozat - UTC

La thorie de la normalisation relationnelle

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.

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.

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

139
Stphane Crozat - UTC

La thorie de la normalisation relationnelle

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, Prenom)
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.

3.5. Troisime forme normale


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

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

140
Stphane Crozat - UTC

La thorie de la normalisation relationnelle

Attention : Cl candidate
La dfinition concerne toutes les cls candidates et non uniquement la cl primaire
SQL avanc : Programmation et techniques avances. (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.

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

141
Stphane 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.

4. Conception de bases de donnes normalises


Objectifs
Savoir crer des schmas relationnels en troisime forme normale.

142
Stphane Crozat - UTC

La thorie de la normalisation relationnelle

4.1. Processus de conception d'une base de donnes normalise


1. Modlisation conceptuelle en UML
Rsultat: MCD1
2. Traduction en relationnel en utilisant les rgles de passage UML vers relationnel
Rsultat: MLD1
3. tablissement des DF sous la forme de la fermeture transitive pour chaque relation du
modle
Rsultat: MLD1 avec F+
4. tablissement de la forme normale
Rsultat: MLD1 avec F+ et NF
5. Dcomposition des relations jusqu' arriver en 3NF en prservant les DF
Rsultat: MLD2 avec F+ et 3NF
6. Rtro-conception du modle UML correspondant
Rsultat: MCD2

4.2. Algorithme de dcomposition


Mthode : Dcomposition 0NF->1NF
Soit R une relation avec la cl primaire pk. Si R contient un attribut non atomique, alors R est
dcompose en R1 et R2, tel que:
R1 est R moins l'attribut a
R2 est compos de pk et de a, avec (pk,a) cl primaire de R2 et R2.pk cl trangre vers
R1.pk
R(#pk,a,b,...) avec a non atomique se dcompose en:
R1(#pk,b,...)
R2(#pk=>R1,#a)

Fondamental : Dcomposition > 1NF


Pour les NF suprieures 1, afin de normaliser une relation R on ralise une dcomposition en
R1 et R2 pour chaque DFE responsable d'un dfaut de normalisation tel que:
la partie gauche de la DFE:
1. devient la cl primaire de R2
2. devient une cl trangre de R1 vers R2
la partie droite de la DFE
1. est enleve de R1
2. est ajoute comme attributs simples de R2

Mthode : Dcomposition 1NF->2NF


Soit R une relation comportant une cl compose de k1 et k1'. Si R contient une DFE de k1'
vers des attributs n'appartenant pas la cl, alors R est dcompose en R1 et R2, tel que:
R1 est R moins les attributs dtermins par k1' et avec k1' cl trangre vers R2
R2 est compose de k1' et des attributs qu'elle dtermine, avec k1' cl primaire de R2
R(#pk,k1,k1',a,b,c,...) avec (k1,K1') cl et k1'a,b se dcompose en:
R1(#pk,k1,k1'=>R2,c,...)
R2(#k1',a,b)

143
Stphane Crozat - UTC

La thorie de la normalisation relationnelle

Mthode : Dcomposition 2NF->3NF


Soit R une relation comportant une DFE de a vers b qui n'appartiennent pas une cl, alors R
est dcompose en R1 et R2, tel que:
R1 est R moins les attributs dtermins par a et avec a cl trangre vers R2
R2 est compose de a et des attributs qu'elle dtermine, avec a cl primaire de R2
R(#pk,a,b,c,...) avec ab se dcompose en
R1(#pk,a=>R2,c,...)
R2(#a,b)

4.3. Exemple de dcomposition


Exemple : Situation initiale
Resultat
(#pknum,knumetu,kuv,prenom,nom,credits,resultat,obtenu)
avec (knumetu,kuv) cl

pknum

knumetu

kuv

prenom

nom

credits

resultat

obtenu

X01

NF17

Pierre

Alpha

oui

X01

NF26

Pierre

Alpha

oui

X02

NF17

Alphonse

Bta

non

pknum knumetu,kuv,prenom,nom,credits,resultat,obtenu
knumetu,kuv pknum,prenom,nom,credits,resultat,obtenu
knumetu prenom,nom
kuv credits
resultat obtenu

knumetu prenom,nom
Resultat
(#pknum,knumetu=>Etudiant,kuv,credits,resultat,obtenu)
Etudiant (#knumetu,prenom,nom)

kuv credits
Resultat
(#pknum,knumetu=>Etudiant,kuv=>Uv,resultat,obtenu)
Etudiant (#knumetu,prenom,nom)
Uv(#kuv,credits)

resultat obtenu
Resultat (#pknum,knumetu=>Etudiant,kuv=>Uv,resultat=>Note)
Etudiant (#knumetu,prenom,nom)
Uv(#kuv,credits)
Note(#resultat,obtenu)

144
Stphane Crozat - UTC

La thorie de la normalisation relationnelle

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

5. Bibliographie commente sur la normalisation


Complment : Synthses
SQL2 SQL3, applications Oracle
*

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.
Une description claire des formes normales, rendue simple et pratique grce des exemples
reprsentatifs (chapitre 2).

145
Stphane Crozat - UTC

Ressources annexes

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 ?

.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
Quelles est la diffrence entres le schma conceptuel et le ou les schmas externes ?

.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
Quelles sont les fonctions d'un langage orient donnes ?

.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................

146
Stphane Crozat - UTC

Questions de synthse

A quoi et qui sert un dictionnaire de donnes ?

..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
Pourquoi est-il fondamental mais difficile de parvenir un MCD correct ?

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

..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

147
Stphane Crozat - UTC

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 ?

.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
Quels sont les avantages apports par l'extension du modle E-A ?

.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
Que permet d'exprimer une entit de type faible ?

.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................

148
Stphane Crozat - UTC

Questions de synthse

Qu'est ce qu'un domaine ?

..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
Quel rapport y-a-t il entre une relation et une table ?

..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
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) ?

..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

149
Stphane Crozat - UTC

Questions de synthse

Pourquoi dispose-t-on de plusieurs solutions pour traduire une association 1:1 ?

.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
Pourquoi dispose-t-on de trois mthodes pour traduire l'hritage dans un modle relationnel ?

.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
Ces trois mthodes sont-elles quivalentes ?

.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
Le passage E-A ou UML vers relationnel est-il systmatique ou soumis interprtation ? Pourrait-il tre
ralis par un algorithme ?

.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
Est ce que l'un des deux modles conceptuels, E-A ou UML, est plus adapt au passage au relationnel ?

.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
Pourquoi dispose-t-on de trois mthodes pour traduire l'hritage dans un modle relationnel ? Ces trois
mthodes sont-elles quivalentes ?

.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................

150
Stphane Crozat - UTC

Questions de synthse

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 ?

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

..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

151
Stphane Crozat - UTC

Questions de synthse

Quel rapport y-a-t il entre le LDD et le concept de relation ?

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

.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
Pourquoi peut-on dire que la gestion des droits est dcentralise en SQL ?

.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................

152
Stphane Crozat - UTC

Questions de synthse

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 ?

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

..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................

153
Stphane Crozat - UTC

Questions de synthse

Quelle forme normale est gnralement souhaitable pour un schma relationnel ?

.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
Quelles sont les tapes de la conception d'une base de donnes normalise?

.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
Pourquoi doit-on raliser une dcomposition chaque fois qu'une DFE est responsable d'un dfaut de
normalisation?

.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................

154
Stphane Crozat - UTC

Solution des exercices rdactionnels

Solution des exercices


rdactionnels
> Solution n 1

Exercice p. 96

Intersection (R1, R2) = Difference (R1, Difference (R1,


R2))

> Solution n 2

Exercice p. 96

Jointure (R1, R2, condition) = Restriction ( Produit (R1,


R2), condition)

> Solution n 3

Exercice p. 96

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

Exercice p. 130

155
Stphane Crozat - UTC

Solution des exercices rdactionnels

> Solution n 4
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}.
La cl primaire peut donc tre choisie parmi ces trois candidates.

> Solution n 5

Exercice p. 130

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 n 6

Exercice p. 130

La seule solution pour supprimer les redondances est de dcouper la relation R en relations non
redondantes.

Tableau 1 Relation R1

Tableau 1 Relation R2

Tableau 1 Relation R3

156
Stphane Crozat - UTC

Glossaire

Glossaire
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.
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 terme serveur dans son acception matrielle, qui signifie alors
un ordinateur qui a pour fonction d'hberger des programmes serveurs.
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}

157
Stphane Crozat - UTC

Abrviations

Abrviations
BD : Base de Donnes
SQL : Structured Query Language
SGBDR : Systme de Gestion de Bases de Donnes Relationnelles
SGBD : Systme de Gestion de Bases de Donnes
IHM : Interaction Homme Machine ou Interface Homme Machine
LDD : Langage de Dfinition de Donnes
LCD : Langage de Contrle de Donnes
LMD : Langage de Manipulation de Donnes
E-A : Entit-Association
UML : Unified Modeling Language
OMG : Object Management Group
MCD : Modle Conceptuel de Donnes
SI : Systme d'Information
SGF : Systme de Gestion de Fichiers
SGBDOO : Systme de Gestion de Bases de Donnes Orientes Objets
SGBDRO : Systme de Gestion de Bases de Donnes Relationnelles-Objets
MLD : Modle Logique de Donnes
E-R : Entity-Relationship
ANSI : American National Standards Institute
ISO : International Standardization Organization
PSM : Persistent Stored Modules
RO : Relationnel-Objet
XML : eXtensible Markup Language
DF : Dpendance Fonctionnelle
DFE : Dpendance Fonctionnelle Elmentaire
1NF : First Normal Form
2NF : Second Normal Form
3NF : Third Normal Form
BCNF : Boyce-Codd Normal Form
4NF : Fourth Normal Form
5NF : Fifth Normal Form

158
Stphane Crozat - UTC

Bibliographie

Bibliographie
Celko Joe. SQL avanc : Programmation et techniques avances. Vuibert, 2000.
Chen P.P, The Entity-Relationsheep Model - Towards a Unified View of Data, ACM Transactions on
Database systems, 1-1, 1976.
Codd EF, A relational model for large shared data banks, Communications de l'ACM, juin 1970.
Delmal Pierre. SQL2 SQL3, applications Oracle. De Boeck Universit, 2001.
Gardarin Georges. Bases de donnes : objet et relationnel. Eyrolles, 1999.
Mata-Toledo Ramon A., Cushman Pauline K.. Programmation SQL. Ediscience, 2003.
Pratt Philip J. . Initiation SQL : Cours et exercices corrigs. Eyrolles, Collection Noire. 2001.
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.
Pascal Roques, UML 2 par la pratique, 7e dition, Eyrolles, 2009 [ISBN 978-2212125658]
Tardieu H., Rochfeld A., Colleti R., Mthode MERISE Tome 1 : Principes et outils, Les Editions
d'Organisation, 1983.
Tardieu H., Rochfeld A., Colleti R., Panet G., Vahee G., Mthode MERISE Tome 2 : Dmarche et pratiques,
Les Editions d'Organisation, 1985.

159
Stphane Crozat - UTC

Webographie

Webographie
Dia, http://live.gnome.org/Dia
Morlon Jrme, UML en 5 tapes, http://developpeur.journaldunet.com/dossiers/alg_uml.shtml , 2004.
Borderie Xavier, Cinq petits conseils pour un schma UML efficace,
http://developpeur.journaldunet.com/tutoriel/cpt/031013cpt_uml5conseils.shtml , 2004.
Hubiche Maxence, Comprendre les jointures dans Access,
http://mhubiche.developpez.com/Access/tutoJointures/ , consult en 2009.
Objecteering software. www.objecteering.com . [2002-septembre].
Sybase PowerDesigner, http://www.sybase.com/products/enterprisemodeling , consult en 2002.
UML en Franais, http://uml.free.fr , consult en 2002.
Darmont Jrme. Tutoriel SQL. http://eric.univ-lyon2.fr/~jdarmont/tutoriel-sql/ . [2004-janvier].

160
Stphane Crozat - UTC

Vous aimerez peut-être aussi