Académique Documents
Professionnel Documents
Culture Documents
de donnesI
NF17
Cours (Fondamentaux)
Stphane Crozat
Table des
matires
Introduction
7
8
8
9
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
14
15
16
16
17
17
19
20
20
21
22
23
24
24
26
27
28
29
29
30
31
32
33
34
34
36
36
37
37
38
39
39
44
45
45
45
46
46
47
47
48
48
50
51
52
53
54
56
56
58
59
60
61
63
63
65
65
66
67
68
68
69
70
71
73
74
76
77
79
83
83
84
85
85
86
87
88
88
89
90
91
91
92
93
94
95
96
98
109
111
112
113
114
115
116
119
120
120
121
122
123
124
125
125
126
130
133
134
134
135
136
136
136
137
138
138
138
139
140
141
Questions de synthse
146
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
10
13
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.
*
7
Stphane Crozat - UTC
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
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
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
Exemple : Donnes
L'entier 486
Le vhicule (460HP59, Renault, Megane, Jaune)
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
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.
11
Stphane Crozat - UTC
Exemple : SQL
SQL> est le langage orient donnes consacr aux SGBD relationnels et relationnels-objet.
*
12
Stphane Crozat - UTC
13
Stphane Crozat - UTC
Fondamental
Bien analyser le problme pos en amont
Bien modliser le problme au niveau conceptuel avant de passer aux niveaux logiques
et physiques
14
Stphane Crozat - UTC
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.
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.
15
Stphane Crozat - UTC
16
Stphane Crozat - UTC
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
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)
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
II
19
27
Le modle E-A
37
42
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>.
*
19
Stphane Crozat - UTC
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
20
Stphane Crozat - UTC
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.
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.
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
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
22
Stphane Crozat - UTC
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
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.
23
Stphane Crozat - UTC
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)
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
Syntaxe
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
26
Stphane Crozat - UTC
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.
Les lments de modlisation suivant compltent les notations basiques du diagramme de classe :
classe, attribut, association, cardinalit et hritage.
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
27
Stphane Crozat - UTC
Emplois
28
Stphane Crozat - UTC
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
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.
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
Remarque
L'agrgation est une association particulire (binaire de cardinalit libre).
L'agrgation n'est pas symtrique.
Syntaxe
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.
31
Stphane Crozat - UTC
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.
32
Stphane Crozat - UTC
Commandes
33
Stphane Crozat - UTC
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
Syntaxe
Exemple
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).
35
Stphane Crozat - UTC
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
2.12. numration
Syntaxe
36
Stphane Crozat - UTC
Exemple
3. Le modle E-A
Objectifs
Savoir faire un modle E-A tendu.
Savoir interprter un modle E-A tendu.
MCD
( c f .
Mthode MERISE Tome 1 : Principes et outils
,
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
Syntaxe
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
38
Stphane Crozat - UTC
Remarque
On peut avoir plusieurs associations diffrentes dfinies sur les mmes entits.
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.
39
Stphane Crozat - UTC
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.).
Exemple
Les ges des enfants dun employ.
Remarque
Un attribut multivalu n'est donc plus atomique.
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.
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.
40
Stphane Crozat - UTC
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.
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
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.
voir galement en Open Source: ArgoUML ou EclipseUML. (non test par l'auteur).
42
Stphane Crozat - UTC
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
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
de
classe
Complment : Conseils
Cinq petits conseils pour un schma UML efficace
*
Complment : Pratique
UML2 par la pratique (chapitre 3)
*
43
Stphane Crozat - UTC
Le niveau logique: la
modlisation
relationnelle
III
44
55
66
69
83
Algbre relationnelle
87
97
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.
*
principe
d'clatement
des
relations
et
de
44
Stphane Crozat - UTC
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
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
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>
47
Stphane Crozat - UTC
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.
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).
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.
48
Stphane Crozat - UTC
49
Stphane Crozat - UTC
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
50
Stphane Crozat - UTC
51
Stphane Crozat - UTC
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.
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
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
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
54
Stphane Crozat - UTC
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
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.
Graphique 1 Attribut
Classe1(#a,b)
56
Stphane Crozat - UTC
57
Stphane Crozat - UTC
58
Stphane Crozat - UTC
59
Stphane Crozat - UTC
IN
PROJ(Assoc,a)
et
PROJ(Classe2,c)
IN
60
Stphane Crozat - UTC
61
Stphane Crozat - UTC
62
Stphane Crozat - UTC
Graphique 1 Composition
Classe1(#a,b)
Classe2(#c,#a=>Classe1,d)
63
Stphane Crozat - UTC
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.
64
Stphane Crozat - UTC
Relation2
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)
65
Stphane Crozat - UTC
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.
66
Stphane Crozat - UTC
67
Stphane Crozat - UTC
68
Stphane Crozat - UTC
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
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
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?
70
Stphane Crozat - UTC
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).
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
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
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
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
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).
75
Stphane Crozat - UTC
76
Stphane Crozat - UTC
t=23))
t=23))
t=23))
t=23))
77
Stphane Crozat - UTC
78
Stphane Crozat - UTC
Mthode : Cas de l'hritage non complet et non exclusif avec classe mre non
abstraite
Dans ce cas, choisir un hritage par rfrence.
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
80
Stphane Crozat - UTC
81
Stphane Crozat - UTC
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
82
Stphane Crozat - UTC
83
Stphane Crozat - UTC
84
Stphane Crozat - UTC
Exemple
85
Stphane Crozat - UTC
Reprsentation de documents
86
Stphane Crozat - UTC
6. Algbre relationnelle
Objectifs
Connatre les oprateurs relationnels.
Matriser l'algbre relationnelle.
87
Stphane Crozat - UTC
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
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)
Pierre, 20)
Jean, 30)
Isabelle, 20)
Hlne, 30)
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.
89
Stphane Crozat - UTC
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
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)
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
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)
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
93
Stphane Crozat - UTC
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)
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
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)
95
Stphane Crozat - UTC
Syntaxe
R
R
R
R
R
R
R
R
R
R
R
R
=
=
=
=
=
=
=
=
=
=
=
=
96
Stphane Crozat - UTC
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
IV
Qu'appelle-t-on SQL?
98
99
107
109
122
126
En rsum: SQL
129
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
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).
*
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.
*
99
Stphane Crozat - UTC
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
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)
);
101
Stphane Crozat - UTC
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
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 .
103
Stphane Crozat - UTC
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
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.
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.
Syntaxe
DROP <type objet> <nom objet>
Exemple
DROP TABLE Personne;
DROP VIEW Employe;
105
Stphane Crozat - UTC
106
Stphane Crozat - UTC
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)
);
107
Stphane Crozat - UTC
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).
108
Stphane Crozat - UTC
Syntaxe
DELETE FROM <Nom de la relation>
WHERE <Condition pour filtrer les tuples supprimer>
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
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
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.
Dfinition : Condition
Condition Elmentaire ::= Proprit <Oprateur de
comparaison> Constante
Condition ::= Condition <Oprateur logique> Condition |
Condition Elmentaire
111
Stphane Crozat - UTC
=C
<> C
<C
>C
<= C
>= C
BETWEEN C1 AND C2
IN (C1, C2, ...)
LIKE 'chane'
IS NULL
112
Stphane Crozat - UTC
Exemple
113
Stphane Crozat - UTC
Exemple
114
Stphane Crozat - UTC
Exemple
115
Stphane Crozat - UTC
Exemple
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
116
Stphane Crozat - UTC
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
117
Stphane Crozat - UTC
Exemple
Exemple
118
Stphane Crozat - UTC
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
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.
Exemple
SELECT *
FROM Personne
ORDER BY Nom, Age DESC
120
Stphane Crozat - UTC
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'
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
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).
Dfinition : Sous-requte
Requte incluse dans la clause WHERE ou FROM d'une autre requte.
Synonymes: Sous-question, Requte imbrique
122
Stphane Crozat - UTC
Exemple
SELECT Nom
FROM Chercheur
WHERE Nom IN
(SELECT Nom FROM Enseignant)
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.
123
Stphane Crozat - UTC
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.
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)
124
Stphane Crozat - UTC
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)
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
Exemple
SELECT Nom
FROM Chercheur
WHERE Age < ANY
(SELECT Age
FROM Etudiant)
Remarque : SOME
SOME peut tre utilis comme un synonyme de ANY.
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).
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
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;
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.
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.
127
Stphane Crozat - UTC
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;
128
Stphane Crozat - UTC
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
Un excellent exerciseur permettant de poser des questions en SQL une base de donnes en
temps rel. 18 questions faire absolument.
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
Redondance et normalisation
130
133
137
142
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.
Tableau 1 Relation R
130
Stphane Crozat - UTC
Question
[Solution p 155]
Si la relation contient des redondances, proposez une solution contenant exactement la mme information,
mais sans redondance.
131
Stphane Crozat - UTC
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.
*
132
Stphane Crozat - UTC
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.
133
Stphane Crozat - UTC
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
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
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.
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.
*
135
Stphane Crozat - UTC
Exemple
Soit l'ensemble F = {AB, BC, BD, AE}.
La fermeture transitive de F est F+ = { AB, BC, BD, AE, AC, AD }
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}
136
Stphane Crozat - UTC
137
Stphane Crozat - UTC
La troisime forme normale est gnralement reconnue comme tant la plus importante
respecter.
138
Stphane Crozat - UTC
(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)
139
Stphane Crozat - UTC
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.
*
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.
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
Attention : Cl candidate
La dfinition concerne toutes les cls candidates et non uniquement la cl primaire
SQL avanc : Programmation et techniques avances. (p.27).
*
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.
*
141
Stphane Crozat - UTC
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.
142
Stphane Crozat - UTC
143
Stphane Crozat - UTC
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 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.
*
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
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
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
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
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
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
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 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
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
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
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
..............................................................................................................................................................................
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
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
.............................................................................................................................................................................................
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
Exercice p. 96
> Solution n 2
Exercice p. 96
> Solution n 3
Exercice p. 96
Exercice p. 130
155
Stphane Crozat - UTC
> 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