Documente Academic
Documente Profesional
Documente Cultură
CONCEPTION
DE BASES
DE DONNES
Version 10.01
Cours Gnral
STPHANE CROZAT
Introduction
11
II - Le niveau conceptuel
23
C. Le modle E-A.......................................................................................................................................37
1. Le modle E-A en bref.................................................................................................................................................37
2. Entit............................................................................................................................................................................37
3. Association...................................................................................................................................................................39
4. Cardinalit d'une association......................................................................................................................................39
5. Modle E-A tendu.......................................................................................................................................................40
6. Entit de type faible.....................................................................................................................................................41
7. Illustration d'entits faibles.........................................................................................................................................41
: la modlisation relationnelle
45
D. Algbre relationnelle.............................................................................................................................67
1. Concepts manipulatoires.............................................................................................................................................67
2. Oprateurs ensemblistes..............................................................................................................................................68
3. Projection.....................................................................................................................................................................69
4. Restriction....................................................................................................................................................................69
5. Produit.........................................................................................................................................................................70
6. Jointure........................................................................................................................................................................70
7. Jointure naturelle.........................................................................................................................................................71
8. Jointure externe...........................................................................................................................................................71
9. Division........................................................................................................................................................................72
10. Proposition de notations............................................................................................................................................73
11. Exercice de synthse : Oprateurs de base et additionnels.......................................................................................73
IV - Le langage SQL
75
A. Qu'appelle-t-on SQL?............................................................................................................................75
B. Le Langage de Dfinition de Donnes de SQL.....................................................................................76
1. Types de donnes.........................................................................................................................................................76
2. Cration de tables........................................................................................................................................................77
3. Contraintes d'intgrit.................................................................................................................................................78
4. Cration de vues..........................................................................................................................................................79
5. Suppression d'objets.....................................................................................................................................................80
6. Modification de tables.................................................................................................................................................80
7. Exemple de modifications de tables.............................................................................................................................81
G. En rsum : SQL....................................................................................................................................95
H. Bibliographie commente sur le SQL....................................................................................................96
97
VI - Le relationnel-objet
109
B. Le modle relationnel-objet.................................................................................................................111
1. Les SGBDRO.............................................................................................................................................................111
2. Le modle imbriqu...................................................................................................................................................111
3. Les types utilisateurs..................................................................................................................................................112
4. Les collections............................................................................................................................................................113
5. Comparaison relationnel et relationnel-objet...........................................................................................................113
6. Tables d'objets...........................................................................................................................................................114
7. Hritage et rutilisation de types...............................................................................................................................114
8. Identification d'objets et rfrences...........................................................................................................................115
E. Exemples RO.......................................................................................................................................124
1. Exemple : Gestion de cours.......................................................................................................................................124
2. Exemple : Gestion de cours simplifie (version avec OID).......................................................................................127
F. En rsum : Le relationnel-objet..........................................................................................................129
G. Bibliographie commente sur le relationnel-objet...............................................................................129
131
C. Fiabilit et transactions........................................................................................................................135
1. Les pannes..................................................................................................................................................................135
2. Point de contrle........................................................................................................................................................135
D. Concurrence et transactions.................................................................................................................139
1. Trois problmes soulevs par la concurrence...........................................................................................................139
2. Le verrouillage...........................................................................................................................................................141
3. Le dverrouillage.......................................................................................................................................................142
4. Protocole d'accs aux donnes..................................................................................................................................142
5. Solution aux trois problmes soulevs par la concurrence.......................................................................................143
6. Inter-blocage..............................................................................................................................................................144
147
B. En rsum : L'optimisation..................................................................................................................152
C. Bibliographie commente sur l'optimisation.......................................................................................152
153
Questions de synthse
155
173
Glossaire
175
177
Bibliographie
179
Index
181
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.
I -
DONNES
11
14
19
24
Les BD ont t cres pour faciliter la gestion qualitative et quantitative des donnes informatiques.
Les SGBD sont des applications informatiques permettant de crer et de grer des BD (comme Oracle
ou MySQL par exemple). Les BD relationnelles sont les plus rpandues et l'on utilise des SGBDR
pour les implmenter. Le langage SQL est le langage commun tous les SGBDR, ce qui permet de
concevoir des BD relativement indpendamment des systmes utiliss.
1. Qu'est ce qu'une BD ?
Dfinition : Base de donnes
Une BD est un ensemble volumineux, structur et minimalement redondant de donnes, relies entre
elles, stockes sur supports numriques centraliss ou distribus, servant pour les besoins d'une ou
plusieurs applications, interrogeables et modifiables par un ou plusieurs utilisateurs travaillant
potentiellement en parallle.
11
maintenance d'une base de donnes. Il est l'unique interface entre les informaticiens et les donnes
(dfinition des schmas, programmation des applications), ainsi qu'entre les utilisateurs et les donnes
(consultation et mise jour).
Oracle est un SGBD relationnel (et Relationnel-Objet dans ses dernires versions) trs reconnu
pour les applications professionnelles.
MySQL est un SGBD relationnel libre (licence GPL et commerciale), simple d'accs et trs
utilis pour la ralisation de sites Web dynamiques. Depuis la version 4 MySQL implmente la
plupart des fonctions attendues d'un SGBD relationnel.
PosgreSQL est un SGBD relationnel et relationnel-objet trs puissant qui offre une alternative
open-source aux solutions commerciales comme Oracle ou IBM.
Access est un SGBD relationnel Microsoft, qui offre une interface conviviale permettant de
concevoir rapidement des applications de petite envergure ou de raliser des prototypes
moindre frais.
b) Consquences...
L'existence conjointe et croissante de ces applications indpendantes a des effets ngatifs, tels que :
La non-portabilit des traitements en raison des diffrences dans les formats et langages.
c) Problmes...
Les consquences prcdemment cites se rpercutent sur l'entreprise en gnrant des problmes humains
et matriels.
Cots en personnels qualifis et en formations
d) Or...
En ralit les applications ne sont jamais totalement disjointes, des donnes similaires (le coeur de
l'information d'entreprise) sont toujours la base des traitements.
On peut citer typiquement :
12
13
1. Notion de donnes
Dfinition : Donnes
Elment effectif, rel, correspondant une type de donnes.
Synonymes : Occurence, Instance
Exemple : Donnes
L'entier 486
Le vhicule (460HP59, Renault, Megane, Jaune)
Entier = { 0, 1, 2, ... , N }
Vhicule = (immatriculation, marque, type, couleur)
Le modle conceptuel
Il permet de dcrire le rel selon une approche ontologique, sans prendre en compte les
contraintes techniques.
Le modle logique
Il permet de dcrire une solution, en prenant une orientation informatique gnrale (type de
SGBD typiquement), mais indpendamment de choix d'implmentation prcis.
Le modle physique
Il correspond aux choix techniques, en terme de SGBD choisi et de sa mise en uvre
(programmation, optimisation, etc.).
14
Des modles plus anciens (hirarchique, rseau, etc.) ne sont plus gure utiliss aujourd'hui.
Le niveau conceptuel
Il permet de dcrire les entits et les associations du monde rel. Il s'agit du schma global de la
base de donnes, il en propose une vue canonique.
Le niveau conceptuel correspond au modle conceptuel.
Le niveau externe
Il permet de dcrire les entits et les associations du monde rel, mais vues d'un utilisateur ou
d'un groupe d'utilisateurs particuliers (on parle d'ailleurs galement de "vue" pour un shma
externe). Il s'agit d'une restriction du schma conceptuel oriente vers un usage prcis. Il existe
gnralement plusieurs schmas externes pour un mme schma conceptuel.
Le niveau externe correspond un sous ensemble du modle conceptuel restreint aux points de
vue de certains utilisateurs.
Le niveau interne
Il correspond l'implmentation physique des entits et associations dans les fichiers de la base.
Le niveau interne correspond aux modles logiques et physiques.
Remarque : ANSI/X3/SPARC
Les trois niveaux, conceptuel, externe et interne, sont les trois niveaux distingus par le groupe de
normalisation ANSI/X3/SPARC en 1975.
15
Exemple : SQL
SQL est le langage orient donnes consacr aux SGBD relationnels et relationnels-objet.
Un langage de donnes peut tre dcompos en trois sous langages :
16
17
18
conceptuel d'appliquer des algorithmes de traduction qui permettent d'obtenir directement le modle
logique, puis les instructions pour la cration de la base de donnes dans un langage orient donnes tel
que SQL. L'existence de tels algorithmes de traduction montre que les tapes de traduction logique et
d'implmentation sont moins complexes que les prcdentes, car plus systmatiques.
Nanmoins ces tapes exigent tout de mme des comptences techniques pour optimiser les modles
logiques (normalisation), puis les implmentations en fonction d'un contexte de mise en oeuvre matriel,
logiciel et humain.
Une lecture accessible tous et donc un bon outil de dialogue entre les acteurs techniques et non
techniques
19
La phase d'analyse de l'existant et des besoins est une phase essentielle et complexe. Elle doit aboutir
des spcifications gnrales qui dcrivent en langage naturel les donnes manipules, et les traitements
effectuer sur ces donnes.
On se propose de donner une liste non exhaustive d'actions mener pour rdiger de telles spcifications.
Personnes qui vont effectuer les saisies d'information ( partir de quelles sources ? Quelle est
leur responsabilit ? etc.)
Personnes qui vont consulter les informations saisies (pour quel usage ? pour quel destinataire ?
etc.)
Personnes qui vont mettre jour les informations (pour quelles raisons ? comment le processus
est enclench ? etc.)
etc.
20
d'analyser ces systmes, afin de mieux comprendre les mcanismes existants, leurs forces et leurs lacunes,
et de prparer l'intgration de la base avec ces autres systmes. Une partie de ces systmes seront
d'ailleurs souvent galement des utilisateurs de la base de donnes, tandis que la base de donnes sera elle
mme utilisatrice d'autre systmes.
Autres bases de donnes (les donnes sont elle disjointes ou partiellement communes avec celles
de la base concevoir ? quelles sont les technologies logicielles sur lesquelles reposent ces
BD ? etc.)
Systmes de fichiers classiques (certains fichiers ont-ils vocations tre supplants par la base ?
tre gnrs par la base ? alimenter la base ? etc.)
Applications (ces applications ont elles besoins de donnes de la base ? peuvent-elles lui en
fournir ? etc.)
etc.
5. Le MCD
Dfinition : MCD
Le MCD est l'lment le plus connu de MERISE et certainement le plus utile. Il permet d'tablir une
reprsentation claire des donnes du SI et dfinit les dpendances des donnes entre elles.
Exemple
Le modle E-A est un formalisme de MCD, le diagramme de classe UML en est un autre.
Remarque
Un MCD est indpendant de l'tat de l'art technologique. A ce titre il peut donc tre mis en oeuvre dans
n'importe quel environnement logiciel et matriel, et il devra tre traduit pour mener une
implmentation effective.
6. Le MLD
Introduction
On ne sait pas implmenter directement un modle conceptuel de donnes dans une machine et il existe
diffrentes sortes de SGBD qui ont chacun leur propre modle : SGF (qui ne sont pas vraiment des
SGBD), SGBD hirarchiques (organiss selon une arborescence), SGBD rseau (encore appels
CODASYL), SGBDR, SGBDOO, SGBDRO, etc.
Dfinition : MLD
Un MLD est une reprsentation du systme tel qu'il sera implment dans un ordinateur.
Exemple
Le modle relationnel est un formalisme de MLD.
Remarque
Il ne faut pas confondre le MLD (relationnel par exemple) avec le MCD (E-A par exemple).
Il ne faut pas confondre le MLD avec son implmentation logicielle en machine (avec Oracle par
exemple)
21
Modle Conceptuel
Schma conceptuel canonique et schmas externes
Exemples
E-A
UML
Modle Logique
Schma interne indpendant d'un SGBD
Exemples
Relationnel
Objet
Relationnel-Objet
Rseau
Hirarchique
Modle Physique
Schma interne pour un SGBD particulier
Exemples
Oracle
MySQL
PostgreSQL
DB2
Access
SQLServer
* *
*
Les SGBD assurent la gestion efficace et structure des donnes partages. Leur conception repose sur
une approche trois niveaux : conceptuel et externe, logique, physique.
22
II -
LE NIVEAU CONCEPTUEL : LA
II
DONNES
Bases du diagramme de classes UML
27
36
Le modle E-A
46
52
52
La modlisation est l'tape fondatrice du processus de conception de BD. Elle consiste abstraire le
problme rel pos pour en faire une reformulation qui trouvera une solution dans le cadre technologique
d'un SGBD. Aprs avoir rappel succinctement les fondements et objectifs des SGBD, ce chapitre
proposera les outils mthodologiques ncessaires la modlisation, travers les formalismes E-A et
UML.
1. Prsentation d'UML
UML est un langage de reprsentation destin en particulier la modlisation objet. UML est devenu
une norme OMG en 1997.
UML propose un formalisme qui impose de "penser objet" et permet de rester indpendant d'un langage
de programmation donn. Pour ce faire, UML normalise les concepts de l'objet (numration et dfinition
exhaustive des concepts) ainsi que leur notation graphique. Il peut donc tre utilis comme un moyen de
communication entre les tapes de spcification conceptuelle et les tapes de spcifications techniques.
Dans le domaine des bases de donnes, UML peut tre utilis la place du modle E-A pour modliser
le domaine. De la mme faon, un schma conceptuel UML peut alors tre traduit en schma logique
23
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
Marque : 'Citron'
Type : 'ZX'
Portes : 5
Puissance : 6
Kilomtrage : 300000
Remarque : Cl
Le reprage des cls n'est pas systmatique en UML (la dfinition des cls se fera alors au niveau
logique). On conseillera nanmoins de les reprsenter (en les soulignant dans le dessin). On vitera par
contre d'ajouter des cls artificielles lorsqu'aucune cl n'est vidente.
Remarque
La modlisation sous forme de diagramme de classes est une modlisation statique, qui met en exergue la
structure d'un modle, mais ne rend pas compte de son volution temporelle. UML propose d'autres types
de diagrammes pour traiter, notamment, de ces aspects.
3. Attributs
24
Dfinition : Attribut
Un attribut est une information lmentaire qui caractrise une classe et dont la valeur dpend de l'objet
instanci.
Remarque
Un attribut est typ : Le domaine des valeurs que peut prendre l'attribut est fix a priori.
Un attribut peut tre multivalu : Il peut prendre plusieurs valeurs distinctes dans son
domaine.
Un attribut peut tre driv : Sa valeur alors est une fonction sur d'autres attributs de la classe
(il peut donc aussi tre reprsent comme une mthode, et c'est en gnral prfrable).
Un attribut peut tre compos : Il joue alors le rle d'un groupe d'attributs (par exemple une
adresse peut tre un attribut compos des attributs numro, type de voie, nom de la voie). Cette
notion renvoie la notion de variable de type Record dans les langages de programmation
classiques.
Syntaxe
attribut:type
attribut_multivalu[nbMinValeurs..nbMaxValeurs]:type
/attribut_driv:type
attribut_compos
- sous-attribut1:type
- sous-attribut2:type
- ...
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).
25
Syntaxe
methode(paramtres):type
5. Associations
Dfinition : Association
Une association est une relation logique entre deux classes (association binaire) ou plus (association naire) qui dfinit un ensemble de liens entre les objets de ces classes.
Une association est nomme, gnralement par un verbe. Une association peut avoir des proprits (
l'instar d'une classe). Une association dfinit le nombre minimum et maximum d'instances autorise dans
la relation (on parle de cardinalit).
Syntaxe
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.
26
6. Cardinalit
Dfinition : Cardinalit d'une association
La cardinalit d'une association permet de reprsenter le nombre minimum et maximum d'instances qui
sont autorises participer la relation. La cardinalit est dfinie pour les deux sens de la relation.
Syntaxe
Si mina (resp. maxa) est le nombre minimum (resp. maximum) d'instances de la classe A autorises
participer l'association, on note sur la relation, ct de la classe A : mina..maxa.
Si le nombre maximum est indtermin, on note n ou *.
Attention
La notation de la cardinalit en UML est oppose celle adopt en E-A. En UML on note gauche (resp.
droite) le nombre d'instances de la classe de gauche (resp. de droite) autorises dans l'association. En EA, on note gauche (resp. droite) le nombre d'instances de la classe de droite (resp. de gauche)
autorises dans l'association.
Remarque
Les cardinalit les plus courantes sont :
0..1 (optionnel)
1..1 ou 1 (un)
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.
Syntaxe
27
Remarque
L'hritage permet de reprsenter la relation "est-un" entre deux objets.
Remarque
Outre qu'il permet de reprsenter une relation courante dans le monde rel, l'hritage a un avantage
pratique, celui de factoriser la dfinition de proprits identiques pour des classes proches.
28
Remarque
Les mots cls in, out et in/out devant un paramtre de mthode permettent de spcifier si le paramtre est
une donne d'entre, de sortie, ou bien les deux.
Remarque
Le but d'une modlisation UML n'est pas de reprsenter la ralit dans l'absolu, mais plutt de proposer
une vision d'une situation rduite aux lments ncessaires pour rpondre au problme pos. Donc une
modlisation s'inscrit toujours dans un contexte, et en cela l'exemple prcdent reste limit car son
contexte d'application est indfini.
Les lments de modlisation suivant compltent les notations basiques du diagramme de classe : classe,
attribut, association, cardinalit et hritage.
29
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 prcd d'un
"+" ou bien dans un petit encadr coll au trait de l'association.
Exemple
2. Classe d'association
Dfinition : Classe d'association
On utilise la notation des classes d'association lorsque l'on souhaite ajouter des proprits une
association.
30
Emplois
3. Associations ternaires
Syntaxe
4. Composition
Dfinition : Association de composition
On appelle composition une association particulire qui possde les proprits suivantes :
31
La composition associe une classe composite et des classes parties, tel que tout objet partie
appartient un et un seul objet composite. C'est donc une association 1:N.
La composition n'est pas partageable, donc un objet partie ne peut appartenir qu' un seul objet
composite la fois.
Le cycle de vie des objets parties est li celui de l'objet composite, donc un objet partie
disparat quand l'objet composite auquel il est associ disparait.
Remarque
La composition est une association particulire.
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.
5. Classes abstraites
32
33
6. 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.
Commandes
34
Syntaxe
Dfinition : Inclusion
Si l'association inclue est instancie, l'autre doit l'tre aussi (la contrainte d'inclusion a un sens, reprsent
par une flche).
Syntaxe
{IN}, galement note {Subset} ou {I}.
Syntaxe
{AND}, galement note {=} ou {S} pour simultanit.
Dfinition : Exclusion
Les deux associations ne peuvent tre instancis en mme temps.
Syntaxe
{X}
35
Syntaxe
{OR}, galement not {T} pour totalit.
Syntaxe
{XOR}, galement note {+} ou {XT} ou {Partition}.
8. Paquetages
Dfinition : Package
Les paquetages (plus communment appels package) sont des lments servant organiser un modle.
Ils sont particulirement utile ds que le modle comporte de nombreuses classes et que celles-ci peuvent
tre tries selon plusieurs aspects structurants.
Syntaxe
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 (1 package) ou centre sur un package : l'on reprsente alors le
36
package avec ses classes, ainsi que toutes les classes lies des autres packages.
C. Le modle E-A
Objectifs
Savoir-faire un modle E-A tendu.
Savoir interprter un modle E-A tendu.
2. Entit
Dfinition : Entit
Une entit est un objet du monde rel avec une existence indpendante.
Une entit (ou type dentit) est une chose (concrte ou abstraite) qui existe et est distinguable des autres
entits.
L'occurrence dune entit est un lment particulier correspondant lentit et associ un lment du
rel. Chaque entit a des proprits (ou attributs) qui la dcrivent. Chaque attribut est associ un
domaine de valeur. Une occurence a des valeurs pour chacun de ses attributs, dans le domaine
correspondant.
Syntaxe
37
38
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. 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
Remarque
On peut avoir plusieurs associations diffrentes dfinies sur les mmes entits.
Syntaxe
39
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.
a) Attributs composites
Un attribut peut tre compos hirarchiquement de plusieurs autres attributs.
Exemple
Un attribut Adresse est compos des attributs Numro, Rue, No_Appartement, Ville, Code_Postal, Pays.
Remarque
Le domaine d'un attribut composite n'est donc plus un domaine simple (entier, caractres, etc.).
b) Attributs multivalus
Tout attribut peut tre monovalu ou multivalu.
Exemple
Les ges des enfants dun employ.
Remarque
Un attribut multivalu n'est donc plus atomique.
40
c) Attributs driv
La valeur d'un attribut peut tre drive d'une ou plusieurs autres valeurs d'attributs.
Exemple
L'ge d'une personne peut tre driv de la date du jour et de celle de sa naissance.
Remarque
Un attribut driv n'est donc plus lmentaire.
d) Sous-type d'entit
Une entit peut-tre dfinie comme sous-type d'une entit plus gnrale.
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.
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.
41
Villes
Dans le schma ci-avant, on remarque que l'entit "ville" est faible par rapport l'entit "dpartement",
qui est faible par rapport "rgion", qui est faible par rapport "pays". Cela signifie que la cl de ville,
son nom, est une cl locale et donc que l'on considre qu'il ne peut pas y avoir deux villes diffrentes avec
le mme nom, dans un mme dpartement. Il est par contre possible de rencontrer deux villes
diffrentes avec le mme nom, dans deux dpartements diffrents. De la mme faon chaque dpartement
possde un nom qui l'identifie de faon unique dans une rgion, et chaque rgion possde un nom qui
l'identifie de faon unique dans un pays.
Si les entits n'taient pas faibles, l'unicit d'un nom de ville serait valable pour l'ensemble du modle, et
donc, concrtement, cela signifierai qu'il ne peut exister deux villes avec le mme nom au monde (ni deux
dpartements, ni deux rgions).
Remarque
Notons pour terminer que, puisque "pays" n'est pas une entit faible, sa cl "nom" est bien unique pour
l'ensemble du modle, et donc cela signifie qu'il ne peut exister deux pays avec le mme nom au monde.
Entit ou Classe
Proprit ou Attribut
Typ
Multi-valu
Compos
Driv
Mthode
Paramtres
Valeur de retour
Association
Association
Verbe
Cardinalit
Hritage
Hritage d'attributs
Hritage de mthodes
Composition (ou entit faible)
Cardinalit
42
Dia [w_dia] : logiciel Open Source et multi-plateformes facile d'usage (qui marche nanmoins
mieux sur Linux que sur Windows).
L'association d'agrgation
Les qualificatifs
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.)
de
classe
Complment : Conseils
Cinq petits conseils pour un schma UML efficace [w_journaldunet.com(2)]
1 - http://argouml.tigris.org/
2 - http://www.eclipsedownload.com/
S. Crozat - UTC 2009
43
III -
LE NIVEAU LOGIQUE : LA
MODLISATION RELATIONNELLE
III
55
68
80
Algbre relationnelle
85
92
93
Le modle relationnel est aux fondements des SGBDR. Il a t - et continue d'tre - le modle
thorique dominant pour la reprsentation logique des BD. Le modle relationnel permet de reformuler le
modle conceptuel dans un formalisme beaucoup plus proche de l'implmentation informatique, bien que
encore indpendant d'une solution technologique particulire.
Le modle relationnel, et en particulier l'algbre relationnelle qui lui est associe, est aussi le fondement
thorique du langage standard SQL, qui est utilis pour manipuler les donnes stockes dans une BD.
1. Le niveau logique
Le niveau logique est le lien entre le niveau conceptuel et l'implmentation effective de l'application. Le
modle conceptuel tant un modle formel, le modle logique a pour vocation d'tre galement un modle
formel, mais spcifiant non plus la ralit existante ou recherche comme le modle conceptuel, mais les
donnes telles qu'elles vont exister dans l'application informatique.
Pour assumer cette fonction, le modle relationnel [Codd70] s'est impos en raction aux insuffisances
des modles prcdents, les modles hirarchique et rseau, et de part la puissance de ses fondements
mathmatiques.
Encore aujourd'hui dominant le modle relationnel est un fondement indispensable la conception de
bases de donnes. De plus le modle mergeant actuellement est le modle relationnel-objet, et ce dernier
est bien une extension du modle relationnel qui le renforce et s'y appuie.
45
2. Le modle relationnel
Introduction
Le modle relationnel a t introduit par Codd [Codd70], en 1970 au laboratoire de recherche d'IBM
de San Jos. Il s'agit d'un modle simple et puissant la base de la majorit des bases de donnes
aujourd'hui.
3. Domaine
Dfinition : Domaine
Ensemble, caractris par un nom, dans lequel des donnes peuvent prendre leurs valeurs.
Remarque
Un domaine peut-tre dfini en intention (c'est dire en dfinissant une proprit caractristique des
valeurs du domaine) ou en extension (c'est dire en numrant toutes les valeurs du domaine)
Entier
Rel
Boolen
Chane de caractres
Montaire : rel avec deux chiffres aprs la virgule
Date : chane de 10 caractres comprenant des chiffres et des tirets selon le patron "00-00-0000"
Salaire : Montaire compris entre 15.000 et 100.000
4. Produit cartsien
Dfinition : Produit cartsien
Le produit cartsien, not "X", des domaines D1, D2, ... , Dn, not "D1 X D2 X ... X Dn" est l'ensemble
des tuples (ou n-uplets ou vecteurs) <V1,V2,...,Vn> tel que Vi est une valeur de Di et tel que toutes les
46
Exemple
D1 = {A, B, C}
D2 = {1, 2, 3}
D1 X D2 = {<A,1>, <A,2>, <A,3>, <B,1>, <B,2>, <B,3>, <C,1>,
<C,2>, <C,3>,}
5. Relation
Dfinition : Relation
Une relation sur les domaines D1, D2, ..., Dn est un sous-ensemble du produit cartsien "D1 X D2 X ... X
Dn". Une relation est caractrise par un nom.
Synonymes : Table, tableau
Syntaxe
On peut reprsenter la relation R sur les domaine D1, ... , Dn par une table comportant une colonne pour
chaque domaine et une ligne pour chaque tuple de la relation.
D1
...
Dn
V1
...
Vn
...
...
...
V1
...
Vn
Tableau 1 Relation R
Remarque
Une relation est toujours dfinie en extension, par l'numration des tuples la composant.
6. Attribut et enregistrement
Dfinition : Attribut
On appelle attribut d'une relation, une colonne de cette relation. Un attribut est caractris par un nom et
un domaine dans lequel il prend ses valeurs.
Synonymes : Champs, Proprit, Colonne
Dfinition : Enregistrement
On appelle enregistrement d'une relation, une ligne de cette relation. Un enregistrement prend une valeur
pour chaque attribut de la relation.
Synonymes : Tuple, N-uplet, Vecteur, Ligne
Exemple
A
Tableau 2 Relation R
La relation R comporte les deux attributs A et B et les trois enregistrements <1,1>, <1,2> et <2,2>
47
7. La relation Vol
Exemple
Numero
Compagnie
Avion
Dpart
Arriv e
Date
AF3245
AirFrance
747
Paris
OulanBator
01082002
AF6767
AirFrance
A320
Paris
Toulouse
30072002
KLM234
KML
727
Paris
Amsterdam
31072002
8. Cl
Dfinition : Cl
Une cl est un groupe d'attributs minimum qui dtermine un tuple unique dans une relation.
Dfinition : Cl primaire
Toute relation doit comporter au moins une cl, ce qui implique qu'une relation ne peut contenir deux
tuples identiques.
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
48
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.
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.
49
informations de T2 ainsi que du numro de scurit sociale de T1, alors il faudra faire une jointure, tandis
que si ce numro signifiant avait t choisi comme cl primaire, cela n'aurait pas t ncessaire.
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
Date
Gare1
Gare2
Train
Vitesse
Nom
Prnom
1010
01012001 Paris
Lyon
TG V
450
Dupont
Jolle
1011
02012001 Paris
Limoges
TER
200
Durand
JeanPierre
1012
03012001 Paris
Madrid
TG V
450
Dupont
Jolle
1013
03012001 Lyon
Limoges
TER
200
Dupont
JeanPierre
Dans la reprsentation prcdente, les voyages en train sont reprsents dans une unique relation, qui
contient des informations relatives au voyage lui mme (numro, date, dpart, arrive), mais aussi au train
utilis pour le voyage (type de train et vitesse maximale), et au conducteur du train (nom et prnom).
Cette reprsentation, bien que trs simplifie par rapport la ralit (on imagine facilement plusieurs
50
dizaines d'attibuts possibles) est redondante. En effet chaque fois qu'un voyage mobilisera un train TGV,
la vitesse maximale de 450 km/h devra aussi tre rappele. De mme pour chaque conducteur, il faudra
rappeler le nom et le prnom.
Cette redondance pose un certain nombre de problmes :
Incohrence
Imaginons qu'une faute de saisie se glisse dans l'orthographe du nom de Dupont (un "d" la
place du "t") pour le voyage 1010, il sera impossible de savoir que c'est la mme personne qui
conduit le train pour le voyage 1012 (car Jolle Dupond peut exister et tre conductrice de train).
Mise jour
Imaginons que Jolle Dupont se marie et change de nom, il faudra changer cette information
pour tous les voyages auxquels participe cette conductrice. Ceci est galement un risque d'erreur,
qui renvoie au risque d'incohrence prcdemment mis en exergue.
Perte d'information
Imaginons que temporairement plus aucun voyage n'existe pour des TGV. Tous les
enregistrements portant sur les TGV disparaitront. On perdra alors l'information comme quoi la
vitesse d'un TGV est de 450 km/h, car cette information n'existera plus dans la base. Or
l'information intrinsque au TGV, qui est sa vitesse maximale, n'est pas lie un voyage en
particulier, et donc il est dommage de ne pas conserver cette information indpendamment du
fait que les TGV sont ou non utiliss un instant t.
b) Relation clate
Le bon usage du modle relationnel consiste donc clater les informations dans de multiples relations,
afin de ne pas conserver de redondance. Dans le cas prcdent, on prfrera donc un dcoupage de la
relation VoyageEnTrain en trois relations, Voyage, Modele et Conducteur, chacune reprsentant des
informations correspondant des objets diffrents (notons l'ajout d'une cl artificielle numro pour la
nouvelle relation conducteur, non identifiable de faon unique par les attributs nom et prnom).
Numero
Date
Gare1
Gare2
1010
01012001
Paris
Lyon
1011
02012001
Paris
Limoges
1012
03012001
Paris
Madrid
1013
03012001
Lyon
Limoges
Vitesse
TGV
450
TER
200
51
Nom
Prnom
Dupont
Jolle
Durand
JeanPierre
Date
Gare1
Gare2
Modele
Conducteur
1010
01012001
Paris
Lyon
TGV
1011
02012001
Paris
Limoges
TER
1012
03012001
Paris
Madrid
TGV
1013
03012001
Lyon
Limoges
TER
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
liste de ses attributs avec les domaines respectifs dans lesquels ils prennent leurs valeurs, de la cl
primaire, et des cls trangres.
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.
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).
53
Rgion=>Rgion.Nom, Dirigeant=>Personne)
Le schma relationnel prcdent dcrit :
Des personnes
Elles sont identifies par un numro qui est en fait une cl artificielle. En effet, mme une cl
compose de tous les attributs (Nom, Prnom, LieuNaissance) laisse une possibilit de doublons
(homonymes ns dans la mme ville).
La cl trangre LieuNaissance fait rfrence la relation Ville, et plus prcisment sa cl
primaire CodePostal, ce qui est est laiss implicite car vident.
Des pays
Ils sont identifis par leur nom, puisque deux pays ne peuvent avoir le mme nom.
Les pays sont dirigs par des personnes, et ce lien est matrialis par la cl trangre Dirigeant.
Des rgions
Elles font partie d'un pays et ont un nom. Deux rgions de pays diffrents pouvant avoir le mme
nom, il faut utiliser une cl primaire compose la fois du nom de la rgion et du nom du pays,
qui est une cl trangre (le nom est appel cl locale car il n'est pas suffisant pour identifier un
tuple de la relation Rgion, et la cl trangre vers la relation Pays est appele cl identifiante).
Des villes
Elles sont identifi par un code postal qui est unique dans le monde (en utilisant le prfixe de
pays de type "F-60200"). Ce code postal pour domaine CP qui est une chane compose d'une
ou deux lettres, d'un tiret, puis d'une srie de chiffres.
Le lien d'appartenance entre une ville et une rgion est matrialis par la cl trangre compose
des deux attributs Pays et Rgion. Cette cl rfrence la cl primaire de la relation Rgion,
galement compose de deux attributs. Pour clairement expliciter les rfrences (bien que
smantiquement la dnomination des attributs ne laisse pas de place au doute) on utilise la
syntaxe Rgion.Pays et Rgion.Nom.
Afin de pouvoir implmenter une base de donnes, il faut pouvoir traduire le modle conceptuel en
modle logique. Cela signifie qu'il faut pouvoir convertir un modle UML en modle relationnel. Les
modles conceptuels sont suffisamment formels pour ce passage soit systmatis.
54
Remarque
Les classes abstraites sont ignores ce stade, et n'tant pas instanciables, ne donnent gnralement pas
lieu la cration de relation.
55
homme (#nom)
femme (#nomMariage=>homme, nomJeuneFille) avec
nomJeuneFille cl
Si l'association avait t de cardinalit 0..1:0..1 (certains hommes et femmes ne sont pas maris), le mme
choix se serait impos et l'on aurait abouti au rsultat suivant:
homme (#nom)
femme (#nomJeuneFille, nomMariage=>homme) avec nomMariage
unique
Les questions de scurit et de suret factorises ou non au niveau des deux relations,
etc.
Dans le doute il est prfrable d'adopter l'approche systmatique consistant sparer les deux relations.
56
Mthode : Compositions
Soit la composition entre la classe composite C et la classe partie P (reprsents par les relations RC et
RP respectivement) on inclut dans la dfinition de RP comme cl trangre la cl de RC. La cl de RP est
redfinie comme la concatnation de la cl de P (cl locale) avec la cl trangre vers RC.
Reprsenter l'hritage par une rfrence entre la classe mre et la classe fille.
57
Modedetrans
formation
Limite
Casd'usage
Exemple
Vue
Parrfrence
EtudiantetEm
ployehritentde
Personne(un
Adapttousles tudiantpeut tre
Lourdeurli ela casd'hritageni employ etles
ncessitdere exclusif,nicom propritsdes
prsenterles
pletpar
tudiantsetdes
donnesdes
ticulirementad employ ssont
classesfillessur aptlorsquela
diffrentes,de
deuxrelations
classemren'est plusdesper
pasabstraite.
sonnespeuvent
existerquine
sontniemploy s
nitudiants).
Unevuedoit tre
crepour
chaqueclasse
fille(ralisantla
jointureavecla
classemre).
Parlesclasses
filles
Hommeet
Femmehritent
dePersonne(un
tupledeHomme
Adaptl'hrit
Redondanceli e
nepeutpas tre
ageexclusifpar
l'existancesim
untuplede
ticulirementad
ultanedetuples
FemmeetPer
aptlorsquela
dansplusieurs
sonneestab
classemreest
classesfilles
straite,iln'existe
abstraite.
pasdePersonne
quinesoitniun
Homme,niune
Femme).
Unevuedoit tre
cre,unique
mentdanslecas
olaclassem re
n'estpasab
straite,pourunir
lestuplesdes
classesfilles
avecceuxsp ci
fiques laclasse
mre.
Parlaclasse
mre
ResponsableetS
alarihritent
deEmploy (un
Nullitsys
responsableest
tmatiquepour
salarietaucun
lesattributsd'une
Adaptl'hrit
attributn'estsp
classe
agecompletpar cifiqueni Re
fillen'existantpas
ticulirementad sponsable,ni
pouruneautre
aptlorsquela
Salari,deplusil
classefille(et
classemren'est existedesstagi
pourlaclasse
pasabstraite.
airesparexemple
mresicelleci
quisontjuste
n'estpasab
employ s,mais
straite)
nonsalari set
nonrespons
ables)
Unevuedoit tre
systmatique
mentcrepour
chaqueclasse
fille(ralisantla
restrictionetla
projectiondepuis
larelationunique
cre).
58
Modede
transform
ation
Classe
mreab
straite
Classe
mrenon
abstraite
Hritage
exclusif
Hritage
nonex
clusif
Hritage
complet
Hritage
presque
complet
Hritage
noncom
plet
Par
rfrence
Parles
classes
filles
++
Parla
classe
mre
++
59
Si une classe fille a une cl primaire propre, 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)
Si la classe mre n'est pas abstraite, elle est galement reprsente par une relation qui ne contiendra que
les tuples qui ne sont pas aussi des instances de classes filles. La classe mre est alors reprsente par une
vue qui unit ses propres tuples avec les tuples de toutes ses classes filles et en les projetant sur les attributs
hrits uniquement.
60
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.
61
62
d) En conclusion
Conseil
L'hritage est toujours dlicat traduire en relationnel, ce qui est dommage car son pouvoir de
reprsentation conceptuel est fort.
Un conseil pour assumer une gestion correcte de la traduction de la relation d'hritage serait d'appliquer
la lettre les rgles de transformation (ce qui conduira le plus souvent un hritage par rfrence) et,
l'exprience aidant, de tolrer dans des cas bien matriss des digressions cette rgle.
Exemple
Ainsi si C hrite de B qui hrite de A, c'est la cl de A qui permettra d'identifier les classes A, B et C, et
ce quelque soit le mode de transformation retenu.
63
ModleUML
Modlerelationnel
Classeinstanciable
Relation
Classeabstraite
Rien
Objet
Nuplet
Attributsimple
Attributatomique
Attributcomposite
Ensembled'attributs
Attributmultivalu
Relation
Attributdriv
Procdurestock eoucontraintedynamique
Mthode
Procdurestock e
Association1:N
Attributs
AssociationN:M
Relation
Associationdedegr 3ousuprieur
Relation
Composition
Attributs
Classed'association
Attributs
Occurenced'uneassociation
Nuplet
Hritage
Vues
Le passage E-A vers relationnel est trs similaire au passage UML vers relationnel. Les rgles dcrites ciaprs sont donc complter avec celles prescrites dans la partie prcdente.
64
cre une nouvelle relation RA pour reprsenter A. On met dans RA comme cl trangre, les cls de
toutes les relations correspondant aux entits participant A et dont la concatnation formera sa cl. On
ajoute galement RA (et ventuellement dans sa cl pour les attributs cls) les attributs dfinis sur A.
par rfrence,
65
Exemple
66
Mod leUML
Entit
Occurenced'uneentit
Mod lerelationnel
Classe
Relation
Objet
Nuplet
Attributsimple
Attributsimple
Attributatomique
Attributcomposite
Attributcomposite
Ensembled'attributs
Attributmultivalu
Attributmultivalu
Relation
Attributd riv
Attributd riv
Mthode
Proc durestock e
Entit faible
Relation
Association1:N
Association1:N
Attributs
AssociationN:M
Associationdedegr
sup rieur
AssociationN:M
3ou
Associationdedegr
sup rieur
Relation
3ou
Relation
Occurenced'uneassociation
Occurenced'uneassociation
Nuplet
Hritage
Hritage
Vue
D. Algbre relationnelle
Objectifs
Connatre les oprateurs relationnels.
Matriser l'algbre relationnelle.
1. Concepts manipulatoires
La reprsentation d'information sous forme relationnelle est intressante car les fondements
mathmatiques du relationnel, outre qu'ils permettent une modlisation logique simple et puissante,
fournissent galement un ensemble de concepts pour manipuler formellement l'information ainsi
modlise.
Ainsi une algbre relationnelle, sous forme d'un ensemble d'oprations formelles, permet d'exprimer des
questions, ou requtes, poses une reprsentation relationnelle, sous forme d'expressions algbriques.
L'algbre relationnelle est compose par les cinq oprateurs de base et les trois oprateurs additionnels
suivants :
Oprateurs de base
Union
Diffrence
Projection
Restriction
Produit cartsien
Oprateurs additionels
Intersection
Jointure
Division
S. Crozat - UTC 2009
67
2. Oprateurs ensemblistes
Attention
Les oprateurs ensemblistes sont des relations binaires (c'est dire entre deux relations) portant sur des
relations de mme schma.
Dfinition : Union
L'union de deux relations R1 et R2 de mme schma produit une relation R3 de mme schma constitue
de l'ensemble des tuples appartenant R1 et/ou R2.
Dfinition : Diffrence
La diffrence entre deux relations R1 et R2 de mme schma produit une relation R3 de mme schma
constitue de l'ensemble des tuples de R1 n'appartenant pas R2. Notons que la diffrence entre R1 et R2
n'est pas gale la diffrence entre R2 et R1.
Dfinition : Intersection
L'intersection de deux relations R1 et R2 de mme schma produit une relation R3 de mme schma
constitue de l'ensemble des tuples appartenant la fois R1 et R2. Notons que l'intersection n'est pas
une opration de base, car elle est quivalent deux oprations de diffrence successives.
Exemple
Soit les deux relations suivantes :
Homme (Nom, Prnom, Age)
Femme (Nom, Prnom, Age)
Soit les tuples suivants pour ces deux relations respectivement :
(Dupont, Pierre, 20)
(Durand, Jean, 30)
(Martin, Isabelle, 20)
(Tintin, Hlne, 30)
Soit l'opration suivante :
R = Union (Homme, Femme)
On obtient alors la relation R compose des tuples suivants :
(Dupont,
(Durand,
(Martin,
(Tintin,
Pierre, 20)
Jean, 30)
Isabelle, 20)
Hlne, 30)
La diffrence entre Homme et Femme (respectivement entre Femme et Homme) renvoie la relation
Homme (respectivement Femme), car aucun tuple n'est commun aux deux relations. L'intersection entre
68
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.
Exemple
Soit la relation suivante :
Personne (Nom, Prnom, Age)
Soit les tuples suivants :
(Dupont, Pierre, 20)
(Durand, Jean, 30)
Soit l'opration suivante :
R = Projection (Personne, Nom, Age)
On obtient alors la relation R compose des tuples suivants :
(Dupont, 20)
(Durand, 30)
4. Restriction
Dfinition : Restriction
La restriction est une opration unaire (c'est dire portant sur une seule relation). La restriction de R1,
tant donne une condition C, produit une relation R2 de mme schma que R1 et dont les tuples sont les
tuples de R1 vrifiant la condition C.
Exemple
Soit la relation suivante :
Personne (Nom, Prnom, Age)
Soit les tuples suivants :
(Dupont, Pierre, 20)
(Durand, Jean, 30)
Soit l'opration suivante :
69
5. Produit
Dfinition : Produit cartsien
Le produit cartsien est une opration binaire (c'est dire portant sur deux relations). Le produit de R1
par R2 (quivalent au produit de R2 par R1) produit une relation R3 ayant pour schma la juxtaposition
de ceux des relations R1 et R2 et pour tuples l'ensemble des combinaisons possibles entre les tuples de R1
et ceux de R2.
Synonymes : Produit
Remarque
Le nombre de tuples rsultant du produit de R1 par R2 est gal au nombre de tuples de R1 multipli par le
nombre de tuples de R2.
Exemple
Soit les deux relations suivantes :
Homme (Nom, Prnom, Age)
Femme (Nom, Prnom, Age)
Soit les tuples suivants pour ces deux relations respectivement :
(Dupont, Pierre, 20)
(Durand, Jean, 30)
(Martin, Isabelle, 15)
(Tintin, Hlne, 40)
Soit l'opration suivante :
R = Produit (Homme, Femme)
On obtient alors la relation R compose des tuples suivants :
(Dupont,
(Durand,
(Dupont,
(Durand,
6. Jointure
Dfinition : Jointure
La jointure est une opration binaire (c'est dire portant sur deux relations). La jointure de R1 et R2, tant
donn une condition C portant sur des attributs de R1 et de R2, de mme domaine, produit une relation
R3 ayant pour schma la juxtaposition de ceux des relations R1 et R2 et pour tuples l'ensemble de ceux
obtenus par concatnation des tuples de R1 et de R2, et qui vrifient la condition C.
Exemple
Soit les deux relations suivantes :
Homme (Nom, Prnom, Age)
70
7. Jointure naturelle
Dfinition : Jointure naturelle
La jointure naturelle entre R1 et R2 est une jointure pour laquelle la condition est l'galit entre les
attributs de mme nom de R1 et de R2. Il est donc inutile de spcifier la condition dans une jointure
naturelle, elle reste toujours implicite.
Exemple
Soit deux relations R1 (A, B, C) et R2 (A, D), l'opration Jointure(R1,R2,R1.A=R2.A) est quivalente
l'opration JointureNaturelle(R1,R2).
Remarque
Pour appliquer une jointure naturelle, il faut que les deux relations oprandes aient au moins un attribut
ayant le mme nom en commun.
8. Jointure externe
Introduction
La jointure est une opration qui entrane la perte de certains tuples : ceux qui appartiennent une des
deux relations oprandes et qui n'ont pas de correspondance dans l'autre relation. Il est ncessaire dans
certains cas de palier cette lacune, et l'on introduit pour cela la notion de jointure externe.
71
Exemple
Soit les deux relations suivantes :
Homme (Nom, Prnom, Age)
Enfant (Nom, Prnom, Age)
Soit les tuples suivants pour ces deux relations respectivement :
(Dupont, Pierre, 20)
(Durand, Jean, 30)
(Dupont, Georges, 1)
(Martin, Isabelle, 15)
Soit l'opration suivante :
R = JointureExterne (Homme, Enfant, Homme.Nom=Enfant.Nom)
On obtient alors la relation R compose des tuples suivants :
(Dupont, Pierre, 20, Dupont, Georges, 1)
(Durand, Jean, 30, Null, Null, Null)
(Null, Null, Null, Martin, Isabelle, 15)
Une jointure externe gauche n'aurait renvoy que les deux premiers tuples et une jointure externe droite
n'aurait renvoye que le premier et le troisime tuple.
9. Division
Dfinition : Division
La division est une opration binaire (c'est dire portant sur deux relations). La division de R1 par R2,
sachant que R1 et R2 ont au moins un attribut commun (c'est dire de mme nom et de mme domaine),
produit une relation R3 qui comporte les attributs appartenant R1 mais n'appartenant pas R2 et
l'ensemble des tuples qui concatns ceux de R2 donnent toujours un tuple de R1.
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)
72
Syntaxe
R
R
R
R
R
R
R
R
R
R
R
R
=
=
=
=
=
=
=
=
=
=
=
=
73
Question 3
[Solution n3 p 173]
Relation ou table
Sous-ensemble d'un produit cartsien
Attribut ou colonne
Prend ses valeurs dans un domaine
Enregistrement ou ligne
Pose une valeur (y compris la valeur "null") pour chaque attribut
Cl
Groupe d'attributs ayant un rle d'identification au sein d'un enregistrement
Cl candidate
Identifie de faon unique un enregistrement
Cl primaire
Cl candidate choisie pour reprsenter un enregistrement pour sa facilit d'usage
Cl trangre
Rfrence la cl primaire d'un tuple d'une autre relation pour exprimer un lien
74
IV -
LE LANGAGE SQL
IV
Qu'appelle-t-on SQL?
95
96
103
105
115
119
En rsum : SQL
122
123
SQL est un langage standardis, implment par tous les SGBDR, qui permet, indpendamment de
la plate-forme technologique et de faon dclarative, de dfinir le modle de donnes, de le contrler et
enfin de le manipuler.
A. Qu'appelle-t-on SQL?
Dfinition : SQL
SQL (pour langage de requtes structur) est un langage dclaratif destin la manipulation de bases
de donnes au sein des SGBD et plus particulirement des SGBDR.
SQL est un langage dclaratif, il n'est donc pas a proprement parl un langage de programmation, mais
plutt une interface standard pour accder aux bases de donnes.
Il est compos de trois sous ensembles :
Le Langage de 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).
75
Le langage SQL
IBM Sequel/2
IBM System/R
IBM DB2
Ce sont ces langages qui ont donn naissance au standard SQL, normalis en 1986 au tats-Unis par
l'ANSI pour donner SQL/86 (puis au niveau international par l'ISO en 1987).
Le LDD permet de crer les objets composant une BD de faon dclarative. Il permet notamment la
dfinition des schmas des relations, la dfinition des contraintes d'intgrit, la dfinition de vues
relationnelles.
1. Types de donnes
Introduction
Un attribut d'une relation est dfini pour un certain domaine. On peut galement dire qu'il est d'un type
particulier. Les types de donnes disponibles en SQL varient d'un SGBD l'autre, on peut nanmoins
citer un certain nombre de types standards que l'on retrouve dans tous les SGBD.
76
Le langage SQL
maximum pouvant composer le nombre avant et aprs la virgule. NUMERIC est galement
utilis de faon quivalente.
Les nombres virgule flottante
REAL(X,Y), avec X et Y optionnels et dfinissant le nombre de chiffres avant et aprs la
virgule.
Il existe galement un certain nombre de variantes permettant de dfinir une prcision plus
grande, telles que DOUBLE.
2. Cration de tables
Introduction
La cration de table est le fondement de la cration d'une base de donnes en SQL.
Syntaxe
CREATE TABLE <nom de table> (
<nom colonne1> <type colonne1>,
<nom colonne2> <type colonne2>,
...
<nom colonneN> <type colonneN>,
);
77
Le langage SQL
Exemple
CREATE TABLE Personne (
Nom VARCHAR(25),
Prenom VARCHAR(25),
Age INTEGER(3)
);
3. Contraintes d'intgrit
Dfinition : Contraintes d'intgrit
Une contrainte d'intgrit est une rgle qui dfinit la cohrence d'une donne ou d'un ensemble de
donnes de la BD.
Il existe deux types de contraintes :
ou sur une table lorsque la contrainte porte sur une ou plusieurs colonnes.
Les contraintes sont dfinies au moment de la cration des tables.
Les contraintes d'intgrit sur une colonne sont :
UNIQUE : interdit que deux tuples de la relation aient la mme valeur pour l'attribut.
REFERENCES <nom table> (<nom colonnes>) : contrle l'intgrit rfrentielle entre l'attribut
et la table et ses colonnes spcifies
PRIMARY KEY (<liste d'attibuts>) : dfinit les attributs de la liste comme la cl primaire
UNIQUE (<liste d'attibuts>) : interdit que deux tuples de la relation aient les mmes valeurs
pour l'ensemble des attributs de la liste.
CHECK (<condition>) : contrle la validit de la valeur des attributs spcifis dans la condition
dans le cadre d'une restriction de domaine
Syntaxe
CREATE TABLE <nom de table> (
<nom colonne1> <type colonne1> <contraintes colonne1>,
<nom colonne2> <type colonne2> <contraintes colonne2>,
...
<nom colonneN> <type colonneN> <contraintes colonneN>,
<contraintes de table>
);
Remarque : Cl candidate
La contrainte UNIQUE NOT NULL sur un attribut ou un groupe d'attributs dfinit une cl candidate non
primaire.
78
Le langage SQL
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.
Exemple
CREATE TABLE Personne (
NSS CHAR(13) PRIMARY KEY,
Nom VARCHAR(25) NOT NULL,
Prenom VARCHAR(25) NOT NULL,
Age INTEGER(3) CHECK (Age BETWEEN 18 AND 65),
Mariage CHAR(13) REFERENCES Personne(NSS),
Codepostal INTEGER(5),
Pays VARCHAR(50),
UNIQUE (Nom, Prenom),
FOREIGN KEY (Codepostal, Pays) REFERENCES Adresse (CP,
Pays)
);
CREATE TABLE Adresse (
CP INTEGER(5) NOT NULL,
Pays VARCHAR(50) NOT NULL,
Initiale CHAR(1) CHECK (Initiale = LEFT(Pays, 1)),
PRIMARY KEY (CP, Pays)
);
Dans la dfinition de schma prcdente on a pos les contraintes suivantes :
Nom, Prnom ne peuvent pas tre null et (Nom, Prnom) est une cl.
Age doit tre compris entre 18 et 65 et Initiale doit tre la premire lettre de Pays (avec la
fonction LEFT qui renvoie la sous chane gauche de la chane passe en premier argument, sur
le nombre de caractres passs en second argument)
Mariage est cl trangre vers Personne et (Codepostal, Pays) est une cl trangre vers Adresse.
4. Cration de vues
Dfinition : Vue
Une vue est une dfinition logique d'une relation, sans stockage de donnes, obtenue par interrogation
d'une ou plusieurs tables de la BD. Une vue peut donc tre perue comme une fentre dynamique sur
les donnes, ou encore une requte stocke (mais dont seule la dfinition est stocke, pas le rsultat, qui
reste calcul dynamiquement).
Une vue permet d'implmenter le concept de schma externe d'un modle conceptuel.
Synonymes : Relation drive, Table virtuelle calcule
Syntaxe
CREATE VIEW <nom de vue> <nom des colonnes>
AS <spcification de question>
La spcification d'une question se fait en utilisant le LMD.
Le nombre de colonnes nommes doit tre gal au nombre de colonnes renvoyes par la question
spcifie. Le nom des colonnes est optionnel, s'il n'est pas spcifi, c'est le nom des colonnes telle qu'elles
sont renvoyes par la question, qui sera utilis.
79
Le langage SQL
Exemple
CREATE VIEW Employe (Id, Nom)
AS
SELECT NSS, Nom
FROM Personne
La vue Employe est ici une projection de la relation Personne sur les attributs NSS et Nom, renomms
respectivement Id et Nom.
5. Suppression d'objets
Il est possible de supprimer des objets de la BD, tels que les tables ou les vues.
Syntaxe
DROP <type objet> <nom objet>
Exemple
DROP TABLE Personne;
DROP VIEW Employe;
6. Modification de tables
Introduction
L'instruction ALTER TABLE permet de modifier la dfinition d'une table (colonnes ou contraintes)
pralablement cre.
Cette commande absente de SQL-89 est normalise dans SQL-92
80
Le langage SQL
b) 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
81
Le langage SQL
drop (prenom);
c) Table finale
La table obtenue aprs modification est identique la table qui aurait t dfinie directement telle que ciaprs.
create table t_personnes (
pk_n number (4),
nom varchar(255),
PRIMARY KEY (pk_n),
UNIQUE (nom)
);
1. Insertion de donnes
Le langage SQL fournit galement des instructions pour ajouter des nouveaux tuples une relation. Il
offre ainsi une interface standard galement pour ajouter des information dans une base de donnes.
Il existe deux moyens d'ajouter des donnes, soit par fourniture directe des valeurs des proprits du tuple
ajouter, soit par slection des tuples ajouter dans une autre relation.
82
Le langage SQL
Remarque
Les proprits non valorises sont affectes la valeur null.
Il est possible de ne pas spcifier les proprits valoriser, dans ce cas, toutes les proprits de la relation
seront considres, dans leur ordre de dfinition dans la relation ( n'utiliser que dans les cas les plus
simples).
3. Suppression de donnes
Le langage SQL fournit une instruction pour supprimer des tuples existants dans une relation.
Syntaxe
DELETE FROM <Nom de la relation>
WHERE <Condition pour filtrer les tuples supprimer>
83
Le langage SQL
1. Slection
Introduction
La requte de slection ou question est la base de la recherche de donnes en SQL.
Dfinition : Slection
La selection est la composition d'un produit cartsien, d'une restriction et d'une projection (ou encore la
composition d'une jointure et d'une projection).
Syntaxe
SELECT <liste d'attributs projets>
FROM <liste de relations>
WHERE <condition>
La partie SELECT indique le sous-ensemble des attributs qui doivent apparatre dans la rponse (c'est le
schma de la relation rsultat).
La partie FROM dcrit les relations qui sont utilisables dans la requte (c'est dire l'ensemble des
attributs que l'on peut utiliser).
La partie WHERE exprime les conditions que doivent respecter les attributs d'un tuple pour pouvoir tre
dans la rponse. Une condition est un prdicat et par consquent renvoie un boolen. Cette partie est
optionnelle.
Afin de dcrire un attribut d'une relation dans le cas d'une requte portant sur plusieurs relations, on
utilise la notation "RELATION.ATTRIBUT".
Exemple
SELECT Nom, Prenom
FROM Personne
WHERE Age>18
Cette requte slectionne les attributs Nom et Prenom des tuples de la relation Personne, ayant un attribut
Age suprieur 18.
Exemple
SELECT Parent.Prenom, Enfant.Prenom
FROM Parent, Enfant
WHERE Enfant.Nom=Parent.Nom
Cette requte slectionne les prnoms des enfants et des parents ayant le mme nom. On remarque la
notation Parent.Nom et Enfant.Nom pour distinguer les attributs Prenom des relations Parent et Enfant.
On notera que cette slection effectue une jointure sur les proprits Nom des relations Parent et Enfant.
Remarque : SELECT *
Pour projeter l'ensemble des attributs d'une relation, on peut utiliser le caractre "*" la place de la liste
des attributs projeter.
84
Le langage SQL
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
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
Les oprateurs de comparaison sont :
P=C
P <> C
P<C
P>C
P <= C
P >= C
P BETWEEN C1 AND C2
P LIKE 'chane'
85
Le langage SQL
OR
AND
NOT
86
Le langage SQL
ON <condition>
Et pour plusieurs relations :
SELECT *
FROM (R1 INNER JOIN R2 ON <condition>) INNER JOIN Ri ON
<condition>
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
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".
7. Oprateurs ensemblistes
Introduction
Les oprateurs ensemblistes ne peuvent tre exprims l'aide de l'instruction de slection seule.
Syntaxe : Union
SELECT * FROM R1
87
Le langage SQL
UNION
SELECT * FROM R2
Syntaxe : Intersection
SELECT * FROM R1
INTERSECT
SELECT * FROM R2
Syntaxe : Diffrence
SELECT * FROM R1
EXCEPT
SELECT * FROM R2
Remarque
Les oprations INTERSECT et EXCEPT n'existe que dans la norme SQL2, et non dans la norme SQL1.
Certain SGBD sont susceptibles de ne pas les implmenter.
8. 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
9. Fonctions de calcul
Dfinition : Fonction de calcul
Une fonction de calcul s'applique l'ensemble des valeurs d'une proprit d'une relation avec pour
rsultat la production d'une valeur atomique unique (entier, chane, date, etc).
Les cinq fonctions prdfinies sont :
Count(Relation.Proprit)
Renvoie le nombre de valeurs non nulles d'une proprit pour tous les tuples d'une relation ;
Sum(Relation.Proprit)
88
Le langage SQL
Renvoie la somme des valeurs d'une proprit des tuples (numriques) d'une relation ;
Avg(Relation.Proprit)
Renvoie la moyenne des valeurs d'une proprit des tuples (numriques) d'une relation ;
Min(Relation.Proprit)
Renvoie la plus petite valeur d'une proprit parmi les tuples d'une relation .
Max(Relation.Proprit)
Renvoie la plus grande valeur d'une proprit parmi les tuples d'une relation.
Syntaxe
SELECT <liste de fonctions de calcul>
FROM <liste de relations>
WHERE <condition appliquer avant calcul>
Exemple
SELECT Min(Age), Max(Age), Avg(Age)
FROM Personne
WHERE Qualification='Ingnieur'
10. 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.
89
Le langage SQL
Remarque : Restriction
Une restriction peut tre applique avant calcul de l'agrgat, au niveau de la clause WHERE, portant ainsi
sur la relation de dpart, mais aussi aprs calcul de l'agrgat sur les rsultats de ce dernier, au niveau de la
clause HAVING.
Remarque : 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).
1. Requtes imbriques
Introduction
Il est possible d'imbriquer des requtes les unes dans les autres pour procduraliser les questions, et ainsi
rpondre des questions plus complexes, voire impossibles, crire en algbre relationnel classique.
Dfinition : Sous-requte
Requte incluse dans la clause WHERE ou FROM d'une autre requte.
Synonymes : Sous-question, Requte imbrique
90
Le langage SQL
Exemple
SELECT Nom
FROM Chercheur
WHERE Nom IN
(SELECT Nom FROM Enseignant)
2. Sous-requte d'existence IN
Introduction
Cette sous-requte permet de vrifier que la projection d'un tuple de la requte principale est prsent dans
la sous-requte.
Syntaxe
SELECT <projections>
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.
91
Le langage SQL
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)
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.
92
Le langage SQL
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.
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).
93
Le langage SQL
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.
1. Attribution de droits
SQL propose une commande pour attribuer des droits des utilisateurs sur des tables.
Syntaxe
GRANT <liste de droits> ON <nom table> TO <utilisateur>
[WITH GRANT OPTION]
Les droits disponibles renvoient directement aux instructions SQL que l'utilisateur peut excuter :
SELECT
INSERT
DELETE
UPDATE
ALTER
De plus il est possible de spcifier le droit ALL PRIVILEGES qui donne tous les droits l'utilisateur
(sauf celui de transmettre ses droits).
La clause WITH GRANT OPTION est optionnelle, elle permet de prciser que l'utilisateur a le droit de
transfrer ses propres droits sur la table d'autres utilisateur. Une telle clause permet une gestion
dcentralise de l'attribution des droits et non reposant uniquement dans les mains d'un administrateur
unique.
La spcification PUBLIC la place d'un nom d'utilisateur permet de donner les droits spcifis tous les
utilisateurs de la BD.
Exemple
GRANT SELECT, UPDATE ON Personne TO Pierre;
GRANT ALL PRIVILEGES ON Adresse TO PUBLIC;
94
Le langage SQL
de cette base de donnes. La syntaxe dans le cas de MySQL est "nom_bd.*" la place du nom de la table.
Dans ce cas les droits CREATE et DROP sont gnralement ajouts pour permettre ou non aux
utilisateurs de crer et supprimer des tables sur cette BD.
2. Rvocation de droits
SQL propose une commande pour rvoquer les droits attribus des utilisateurs.
Syntaxe
REVOKE <liste de droits> ON <nom table> FROM <utilisateur>
Exemple
REVOKE SELECT, UPDATE ON Personne TO Pierre;
REVOKE ALL PRIVILEGES ON Adresse TO PUBLIC;
G. En rsum : SQL
Langage SQL
Le langage SQL permet la cration, le contrle et la manipulation d'une BD.
LDD
Permet de crer, modifier et supprimer les objets d'une BD
CREATE TABLE
CREATE VIEW
LCD
Permet de dfinir les droits des utilisateurs sur les objets de la BD
95
Le langage SQL
GRANT
REVOKE
LMD
Permet d'entrer et sortir des donnes dans la BD
INSERT, UPDATE, DELETE
SELECT
-
Complment : Pratique
Comprendre les jointures dans Access [w_mhubiche.developpez.com]
Un tutoriel trs pdagogique sur l'expression de jointures sous Access qui aide comprendre l'opration
de jointure en gnral.
96
V-
LA THORIE DE LA
NORMALISATION
RELATIONNELLE
Les dpendances fonctionnelles
125
134
139
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.
10
10
10
10
20
10
20
20
Tableau 13 Relation R
Question 1
[Solution n4 p 173]
97
Question 2
[Solution n5 p 174]
Nom
Prnom
Marque
Type
Puiss
Date
Prix
16607...
Dupont
Paul
Renault
Clio
1/1/96
60000
16607...
Dupont
Paul
Peugeot
504
2/7/75
47300
24908...
Martin
Marie
Peugeot
504
1/10/89
54900
15405...
Durand
Olivier
Peugeot
504
8/8/90
12000
15405...
Durand
Olivier
Renault
Clio
7/6/98
65000
15405...
Durand
Olivier
BMW
520
10
4/5/2001
98000
Complment
On conseillera de lire le chapitre 2 de SQL2 SQL3, applications Oracle [Delmal01] (pages 42 49)
qui propose une trs bonne dmonstration par l'exemple des problmes poss par une mauvaise
modlisation relationnelle.
98
3. Principes de la normalisation
Fondamental
La thorie de la normalisation est une thorie destine concevoir un bon schma dune BD sans
redondance dinformation et sans risques d'anomalie de mise jour. Elle a t introduite ds l'origine dans
le modle relationnel.
La thorie de la normalisation est fonde sur deux concepts principaux :
4. Dpendance fonctionnelle
Dfinition : Dpendance fonctionnelle
Soient R(A1, A2, ... , An) un schma de relation, X et Y des sous-ensembles de A1, A2, ... , An. On dit
que X dtermine Y, ou que Y dpend fonctionnellement de X, si est seulement s'il existe une fonction qui
partir de toute valeur de X dtermine une valeur unique de Y.
Plus formellement on pose que X dtermine Y pour une relation R ssi quelle que soit l'instance r de R,
alors pour tous tuples t1 et t2 de r on a :
Projection (t1,X) = Projection (t2,X) Projection (t1,Y) = Projection (t2,Y)
Syntaxe
Si X dtermine Y, on note : XY
Exemple
Soit la relation R suivante :
Personne(NSS, Nom, Prnom, Marque, Type, Puiss, Date, Prix)
On peut poser les exemples de DF suivants :
NSSNom
NSSPrnom
TypeMarque
TypePuiss
etc.
99
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
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
100
individuellement.
Soient X, Y et Z des attributs :
XYZ XZ et XY
Cette proprit est dduite de la rflexivit et de la transitivit :
XYZ XYZ et YZZ XZ
7. DF lmentaire
Dfinition : Dpendance fonctionnelle lmentaire
Soit G un groupe d'attributs et A un attribut, une DF GA est lmentaire si A n'est pas inclu dans G
et qu'il n'existe pas d'attribut A' de G qui dtermine A.
Exemple : DF lmentaires
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.
ABA n'est pas considre car c'est une DF triviale obtenu par rflxivit.
ABCB est dcompose en ABC et ABB, et ABB n'est plus considre car triviale.
Exemple
Soit l'ensemble F = {AB, BC, BD, AE}.
La fermeture transitive de F est F+ = { AB, BC, BD, AE, AC, AD }
101
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}
102
Remarque
Toute cl candidate dtermine les autres cls candidates, puisque qu'une cl dtermine tous les attributs de
la relation.
1. Principe de la dcomposition
Dfinition : Dcomposition
L'objectif de la dcomposition est de "casser" une relation en relations plus petites afin d'en liminer les
redondances et sans perdre d'information.
La dcomposition d'un schma de relation R(A1,A2,...,An) est le processus de remplacement de ce
schma par une collection de schmas R1,R2,...,Rn telle qu'il est possible de reconstruire R par des
oprations relationnelles de jointure sur R1,R2,...,Rn.
NumroMarque
NumroType
NumroPuissance
NumroCouleur
TypeMarque
TypePuissance
On peut dcomposer Voiture en prservant les DF en deux relations R1(Numro,Type,Couleur) et
R2(Type,Puissance,Marque).
2. Formes normales
Les formes normales ont pour objectif de dfinir la dcomposition des schmas relationnels, tout en
prservant les DF et sans perdre d'informations, afin de reprsenter les objets et associations
canoniques du monde rel de faon non redondante.
On peut recenser les 6 formes normales suivantes, de moins en moins redondantes :
103
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.
104
Nom,ProfessionSalaire
ProfessionSalaire
On note alors que la premire DF est issue de la cl et qu'elle n'est pas lmentaire (puisque Profession
dtermine Salaire) et donc que le schma n'est pas en 2NF.
Pour avoir un schma relationnel en 2NF, il faut alors dcomposer Personne en deux relations :
Personne(Nom, Profession)
Profession(Profession, Salaire)
On remarque que ce schma est en 2NF (puisque Salaire dpend maintenant fonctionnellement d'une cl
et non plus d'une partie de cl).
On remarque aussi que la dcomposition a prserv les DF, puisque nous avons prsent :
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.
Attention : Cl candidate
La dfinition concerne toutes les cls candidates et non uniquement la cl primaireSQL avanc :
Programmation et techniques avances. [Celko00] (p.27).
ProfessionSalaire
ProfessionPrime
S. Crozat - UTC 2009
105
SalairePrime
Cette relation n'est pas en 3NF car Salaire, qui n'est pas une cl, dtermine Prime.
Pour avoir un schma relationnel en 3NF, il faut dcomposer Profession :
Profession(Profession, Salaire)
Salaire(Salaire, Prime)
Ce schma est en 3NF, car Prime est maintenant dtermin par une cl.
On remarque que cette dcomposition prserve les DF, car par transitivit, Profession dtermine Salaire
qui dtermine Prime, et donc Profession dtermine toujours Prime.
Toutes les DFE vers des attributs n'appartenant pas une cl sont issues d'une cl, ce qui
implique qu'il n'existe pas de DFE, issues d'une partie de cl vers un attribut qui n'appartient pas
une cl.
Il ne peut pas non plus exister de DFE issues d'une partie de cl vers un attribut appartenant
une cl, par dfinition de ce qu'une cl est un ensemble minimum.
On n'en conclut qu'il ne peut exister de DFE, donc a fortiori pas de DF, issues d'une partie d'une cl, et
donc que toutes les DF issues d'une cl sont lmentaires.
Fondamental
Il est souhaitable que les relations logiques soient en 3NF. En effet, il existe toujours une dcomposition
sans perte d'information et prservant les DF d'un schma en 3NF. Si les formes normales suivantes
(BCNF, 4NF et 5NF) assurent un niveau de redondance encore plus faible, la dcomposition
permettant de les atteindre ne prserve plus les DF.
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).
106
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.
* *
*
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.
107
VI -
LE RELATIONNEL-OBJET
VI
Introduction : R, OO, RO
141
Le modle relationnel-objet
144
149
151
Exemples RO
158
En rsum : Le relationnel-objet
163
164
Si le modle logique relationnel a prouv sa puissance et sa fiabilit au cours des 20 dernires annes, les
nouveaux besoins de l'informatique industrielle ont vu l'mergence de structures de donnes complexes
mal adaptes une gestion relationnelle. La naissance du courant "orient objet" et des langages associes
(Java et C++ par exemple) ont donc galement investi le champ des SGBD afin de proposer des
solutions pour tendre les concepts du relationnel et ainsi mieux rpondre aux nouveaux besoins de
modlisation.
A. Introduction : R, OO, RO
Objectifs
Comprendre les limites du modle relationnel
Comprendre pourquoi et comment le modle relationnel peut tre tendu
109
Le relationnel-objet
La structure de donne en tables est pauvre d'un point de vue de la modlisation logique
Le mapping MCD vers MLD entrane une perte de smantique
La manipulation de structures relationnelles par des langages objets entrane une impedance
mismatch, c'est dire un dcalage entre les structures de donnes pour le stockage et les
structures de donnes pour le traitement (ce qui implique des conversions constantes d'un format
l'autre)
La 1NF est inapproprie la modlisation d'objets complexes
La normalisation entrane la gense de structures de donnes complexes et trs fragmentes, qui
peuvent notamment poser des problmes de performance ou d'volutivit
Le SQL doit toujours tre combin d'autres langages de programmation pour tre
effectivement mis en uvre
La notion de mthode ne peut tre intgre au modle logique, elle doit tre gre au niveau de
l'implmentation physique
Les types de donnes disponibles sont limits et non extensibles
3. Les SGBDOO
Introduction
Les SGBDOO ont t crs pour grer des structures de donnes complexes, en profitant de la
puissance de modlisation des modles objets et de la puissance de stockage des BD classiques.
Objectifs des SGBDOO :
Offrir aux langages de programmation orients objets des modalits de stockage permanent et de
partage entre plusieurs utilisateurs
Le schma d'une BD objet est plus facile apprhender que celui d'une BD relationnelle (il
contient plus de smantique, il est plus proche des entits relles)
La cration de ses propres types et l'intgration de mthodes permets une reprsentation plus
directe du domaine
L'identification des objets permet de supprimer les cls artificielles souvent introduites pour
atteindre la 3NF et donc de simplifier le schma
Les principes d'encapsulation et d'abstraction du modle objet permettent de mieux sparer les
BD de leurs applications (notion d'interface).
Inconvnient des SGBDOO :
110
Le relationnel-objet
4. Les SGBDRO
Introduction
Les SGBDRO sont ns du double constat de la puissance nouvelle promise par les SGBDOO et de
l'insuffisance de leur ralit pour rpondre aux exigences de l'industrie des BD classiques. Leur
approche est plutt d'introduire dans les SGBDR les concepts apports par les SGBDOO plutt que de
concevoir de nouveaux systmes.
Objectifs additionnels des SGBDRO :
Grer des donnes complexes (temps, go-rfrencement, multimdia, types utilisateurs, etc.)
B. Le modle relationnel-objet
Objectifs
Connaitre les caractristiques principales du modle relationnel-objet
Comprendre les avantages du modle relationnel-objet
1. Les SGBDRO
Dfinition : Modle relationnel-objet
Modle relationnel tendu avec des principes objet pour en augmenter les potentialits.
Synonymes : Modle objet-relationnel
Les apports principaux du modle relationnel-objet sont :
La gestion de collections
L'hritage et la rutilisation
2. Le modle imbriqu
nested model
La 1NF est relche pour permettre d'affecter des valeurs non atomiques un attribut, pour
modliser des objets complexes.
Gestion directe des attributs multivalus, sans passer par une nouvelle relation
Gestion directe des attributs composs
Un attribut ne sera plus seulement value par une valeur simple, mais pourra l'tre par une
collection d'objets complexes
Exemple
111
Le relationnel-objet
Syntaxe
Type nom_type : <
attribut1 typeattribut1,
attribut2 typeattribut2,
...
attributN typeattributN,
=methode1 (paramtres) typeretourn1,
=methode2 (paramtres) typeretourn2,
=...
=methodeN (paramtres) typeretournN
>
Remarque
Les type des attributs ou des mthodes d'un type peuvent galement tre des types utilisateurs.
112
Le relationnel-objet
>
4. Les collections
Dfinition : Collection
Une collection est un type de donnes gnrique dfini afin de supporter les attributs multi-valus.
Synonymes : Collection d'objets
Syntaxe
Type nom_type : collection de <type_objet>
Remarque
Les objets d'une collection peuvent tre d'un type utilisateur.
113
Le relationnel-objet
6. Tables d'objets
Une table peut tre dfinie en rfrenant un type de donnes plutt que par des instructions LDD
classiques.
On parle alors de table d'objets.
Syntaxe
nom_table de nom_type (#attributs_cls)
Remarque : OID
Une telle dfinition de table peut permettre d'identifier les objets par un OID
Remarque : Hritage
Cette modalit de dfinition de schma permet de profiter de l'hritage de type pour permettre l'hritage
de schma de table.
114
Le relationnel-objet
Syntaxe
Type sous_type hrite de type : <
attributs et mthodes spcifiques
>
Caractristiques
L'OID est une rfrence unique pour toute la base de donnes qui permet de rfrencer un
enregistrement dans une table d'objets.
L'OID est une rfrence physique (adresse disque) construit partir du stockage physique de
l'enregistrement dans la base de donnes.
Avantages
Permet de crer des associations entre des objets sans effectuer de jointure (gain de
performance).
Fournit une identit l'objet indpendamment de ses valeurs (cl artificielle).
Fournit un index de performance maximale (un seul accs disque).
Permet de garder en mmoire des identificateurs uniques dans le cadre d'une application objet, et
ainsi grer la persistance d'objets que l'on ne peut pas garder en mmoire, avec de bonnes
performances (alors que sinon il faudrait excuter des requtes SQL pour retrouver l'objet).
Inconvnient
Remarque : Dbat
la communaut des BD est plutt contre les OID, qui rompent avec la sparation entre manipulation
logique et stockage physique des donnes.
La communaut objet est l'origine de l'intgration des OID dans SQL3, en tant qu'ils sont une rponse
115
Le relationnel-objet
Cette partie permet de traiter la traduction d'un modle conceptuel UML ou E-A en modle
relationnel-objet. Le modle E-A tendu est bien plus adapt au relationnel-objet que le modle E-A
classique.
1. Classe
Pour chaque classe (ou entit), crer un type d'objet avec les attributs de la classe (ou entit).
Crer une table d'objets de ce type pour instancier la classe (ou entit), en ajoutant les contraintes
d'intgrit.
2. Attributs
Attributs composites
Pour chaque type d'attribut compos, crer un type d'objet.
Attributs multi-valus
Pour chaque attribut multi-valu crer une collection du type de cet attribut.
116
Le relationnel-objet
Attributs drivs
Pour chaque attribut driv crer une mthode associe au type d'objet de la classe (l'entit).
3. Association 1:N
Les associations 1:N sont gres comme en relationnel.
On peut nanmoins favoriser l'usage d'objets pour les cls trangres composes de plusieurs attributs,
ainsi que pour les attributs migrants de l'association vers le relation ct N.
Il est aussi possible de grer la cl trangre avec un OID la place d'une cl trangre classique.
4. Association N:M
Les associations N:M peuvent tre gres comme en relationnel.
Il est aussi possible de grer ces relations, en utilisant une collection de rfrences (une collection de cls
trangres) (NB : on favorise ainsi une des deux relations).
Il est aussi possible de grer ces relations en utilisant un OID comme cl trangre.
Il est aussi possible de grer ces relations en utilisant une collection de rfrence OID.
5. Hritage
L'hritage est gr comme en relationnel classique, avec la possibilit de profiter de l'hritage de type
pour liminer la redondance dans la dfinition des schmas.
Boolean
Array
Row
117
Le relationnel-objet
3. Mthodes et SELF
SELF
Lorsque l'on crit une mthode on a gnralement besoin d'utiliser les attributs propres (voire d'ailleurs
les autres mthode), de l'objet particulier que l'on est en train de manipuler.
On utilise pour cela la syntaxe SELF qui permet de faire rfrence l'objet en cours.
Syntaxe : SELF
self.nom_attribut
self.nom_mthode(...)
118
Le relationnel-objet
4. Nested tables
Implmentation des collections sous forme de tables imbriques.
5. Tables d'objets
Implmentation d'une dfinition de table depuis un type.
Remarque : Mthodes
Si le type sur lequel s'appuie la cration de la table dfinit des mthodes, alors les mthodes seront
associes la table.
Remarque : Contraintes
Il est possible, sur une table ainsi dfinie, de spcifier les mmes contraintes que pour une table cre
119
Le relationnel-objet
avec une clause CREATE TABLE (contraintes de table). Ces contraintes doivent tre spcifies au
moment de la cration de la table, et non au moment de la cration du type. (bien que la dfinition d'objet
permet de spcifier des contraintes du type NOT NULL, etc.)
6. Insertion d'objets
La manipulation de donnes est tendue pour assurer la gestion des objets et des collections.
L'instruction CAST (...) AS <type> permet de renvoyer un type donn partir d'une
expression.
L'instruction MULTISET (...) permet de renvoyer une collection partir d'une liste de
valeurs.
120
Le relationnel-objet
b1
a1
b2
a1
b3
a2
b4
a2
b5
Tableau 15 Extrait de tr
Si l'on souhaite insrer le contenu de tr dans tro de telle faon que les valeurs de a correspondent
pk_id et celles de b obj_a, en insrant une ligne pour chaque valeur ax et que tous les bx
correspondant soient stocks dans la mme collection, il faut excuter une requte INSERT ...
SELECT qui fait appel aux instructions CAST et MULTISET.
INSERT INTO tro (pk_id, a_obj)
SELECT
a,
CAST(
MULTISET(
SELECT b
FROM tr tr1
WHERE tr1.a= tr2.a)
AS col)
FROM tr tr2;
a1
a2
121
Le relationnel-objet
122
Le relationnel-objet
Syntaxe : REF
SELECT REF(alias)
FROM nom_table alias
Exemple : OID
0000280209DB703686EF7044A49F8FA67530383B36853DE7106BC74B678
1275ABE5A553A5F01C000340000
123
Le relationnel-objet
FROM table1 t;
E. Exemples RO
1. Exemple : Gestion de cours
a) Modle conceptuel
b) Modle logique
Type Bureau : <
poste:entier,
centre:chane,
btiment:chane,
numro:entier,
=coordonnes():chane
>
Type Personne : < nom:chane, prnom:chane >
Type Intervenant hrite de Personne : < bureau:Bureau >
tIntervenant de Intervenant (#nom, #prnom)
Type RefIntervenant : <nom:chane, prnom:chane>
Type ListeRefIntervenants: collection de <RefIntervenant>
Type Cours(semestre:chane, num:entier, titre:chane,
type:enum, contenu:chane,
124
Le relationnel-objet
lIntervenant:ListeRefIntervenant)
tCours de Cours (#semestre, #num)
c) Implmentation
CREATE TYPE Bureau AS OBJECT (
poste number(4),
centre char(2),
batiment char(1),
numero number(3),
MEMBER FUNCTION coordonnees RETURN varchar2
);
CREATE TYPE BODY Bureau
IS
MEMBER FUNCTION coordonnees RETURN varchar2
IS
BEGIN
RETURN centre||batiment||numero||' - poste '||poste;
END;
END;
CREATE TYPE Personne AS OBJECT(
pkNom varchar2(50),
pkPrenom varchar2(50)
) NOT FINAL ;
CREATE TYPE Intervenant UNDER Personne (
aBureau Bureau
);
CREATE TABLE tIntervenant OF Intervenant (
PRIMARY KEY(pkNom,pkPrenom)
);
CREATE TYPE RefIntervenant AS OBJECT (
nom varchar2(50),
prenom varchar2(50)
);
CREATE TYPE ListeRefIntervenants AS TABLE OF
RefIntervenant;
CREATE TYPE Cours AS OBJECT(
pkSemestre char(5),
pkNum number(2),
aTitre varchar2(50),
aType char(2),
aContenu varchar2(300),
lIntervenant ListeRefIntervenants
);
125
Le relationnel-objet
d) Initialisation
INSERT INTO tIntervenant VALUES ('CROZAT', 'Stphane',
Bureau('4287','R','A',108));
INSERT INTO tIntervenant VALUES ('JOUGLET', 'Antoine',
Bureau('4423','R','C',100));
INSERT INTO tCours VALUES ('P2003',1,'Conception','C','E-A
et UML',
ListeRefIntervenants(RefIntervenant('CROZAT','Stphane')));
INSERT INTO tCours VALUES
('P2003',5,'Access','TP','Initiation',
ListeRefIntervenants(RefIntervenant('CROZAT','Stphane'),
RefIntervenant('JOUGLET','Antoine')));
e) Questions
SET LINESIZE 60
SET PAGESIZE 10
COLUMN Quand FORMAT A5
COLUMN Quoi FORMAT A10
COLUMN Qui FORMAT A20
COLUMN Ou FORMAT A19
SELECT t.pkNom||' '||t.pkPrenom AS Qui,
t.aBureau.coordonnees() AS Ou
FROM tIntervenant t;
QUI OU
------------------------------------CROZAT Stphane R A108 - poste 4287
JOUGLET Antoine R C100 - poste 4423
SELECT c.pkSemestre AS Quand,c.aTitre AS Quoi,ci.Nom AS Qui
FROM tCours c, TABLE(c.lIntervenant) ci;
QUAND QUOI QUI
-----------------------------P2003 Conception CROZAT
P2003 Access CROZAT
P2003 Access JOUGLET
SELECT c.pkSemestre AS Quand,c.aTitre AS Quoi,i.pkNom AS
Qui,i.aBureau.coordonnees() AS Ou
FROM tCours c, TABLE(lIntervenant) ci, tIntervenant i
WHERE ci.nom=i.pkNom AND ci.prenom=i.pkPrenom;
QUAND QUOI QUI OU
-------------------------------------------------
126
Le relationnel-objet
b) Modle logique
Type Intervenant : < nom:chane, prnom:chane >
tIntervenant de Intervenant (#nom)
Type Cours(num:entier, titre:chane, fkIntervenant REF
tIntervenant)
tCours de Cours (#num)
c) Implmentation
CREATE TYPE Intervenant AS OBJECT (
pkNom varchar2(50),
aPrenom varchar2(50)
);
CREATE TABLE tIntervenant OF Intervenant (PRIMARY KEY
(pkNom));
CREATE TYPE Cours AS OBJECT (
pkNum number(2),
aTitre varchar2(50),
fkIntervenant REF Intervenant
);
CREATE TABLE tCours OF Cours (
SCOPE FOR (fkIntervenant) IS tIntervenant,
PRIMARY KEY(pkNum)
);
127
Le relationnel-objet
128
Le relationnel-objet
F. En rsum : Le relationnel-objet
Types
Pr-dfinis
Domaines classiques
Chane, Entier, Date, Boolen, etc.
Domaines avancs
CLOB, BLOB, etc.
Dfinis par l'utilisateur
Relation
Comme dans le modle relationnel classique
Objets
Types utilisateurs
Collections
Tables imbriques
Modle RO
Modle imbriqu
Table d'objets
CREATE TYPE
CREATE TABLE OF
Collection
NESTED TABLE
Type utilisateur
OID
REF
SCOPE FOR
Hritage de type
NOT FINAL
Mthode
MEMBER FUNCTION
CREATE TYPE BODY
129
VII -
LA GESTION DES
TRANSACTIONS
VII
165
Transactions
166
Fiabilit et transactions
169
Concurrence et transactions
174
181
182
Les transactions sont une rponse gnrale aux problmes de fiabilit et d'accs concurrents dans les BD,
et en particulier dans les BD en mode client-serveur. Elles sont le fondement de toute implmentation
robuste d'une BD. Des systmes comme Oracle ne fonctionnent nativement qu'en mode transactionnel.
La dfaillance
Lorsque le systme tombe en panne alors qu'un traitement est en cours, il y a un risque qu'une
partie seulement des instructions prvues soit excute, ce qui peut conduire des incohrences.
Par exemple pendant une mise jour en cascade de cls trangres suite au changement d'une cl
primaire.
La concurrence
Lorsque deux accs concurrents se font sur les donnes, il y a un risque que l'un des deux accs
rende l'autre incohrent. Par exemple si deux utilisateurs en rseau modifient une donne au
mme moment, seule une des deux mises jour sera effectue.
La gestion de transactions par un SGBD est la base des mcanismes qui permettent d'assurer le
maintien de la cohrence des BD. C'est dire encore qu'il assure que tous les contraintes de la BD seront
toujours respectes, mme en cas de panne et mme au cours d'accs concurrents.
131
B. Transactions
Objectifs
Comprendre les principes et l'intrt des transactions
Connatre les syntaxes SQL standard, Oracle et Access pour utiliser des
transactions
Matriser les modalits d'utilisation des transactions
1. Notion de transaction
Dfinition : Transaction
Une transaction est une unit logique de travail, c'est dire une squence d'instructions, dont l'excution
assure le passage de la BD d'un tat cohrent un autre tat cohrent.
Remarque
Tant qu'une transaction n'a pas t termine correctement, elle doit tre assimile une tentative ou une
mise jour virtuelle, elle reste incertaine. Une fois termine correctement la transaction ne peut plus tre
annule par aucun moyen.
L'atomicit
Les transactions constituent l'unit logique de travail, toute la transaction est excute ou bien
rien du tout, mais jamais une partie seulement de la transaction.
La cohrence
Les transactions prservent la cohrence de la BD, c'est dire qu'elle transforme la BD d'un
tat cohrent un autre (sans ncessairement que les tats intermdiaires internes de la BD au
132
Remarque
Les initiales de Atomicit, Cohrence, Isolation et Durabilit forme le mot mnmotechnique ACID.
4. Transactions en SQL
Introduction
Le langage SQL fournit trois instructions pour grer les transactions.
Remarque : Programme
Un programme est gnralement une squence de plusieurs transactions.
133
BEGIN
UPDATE compte
SET total=total-1000
WHERE nom="dupont";
SELECT total INTO vTotal
FROM compte
WHERE nom="dupont";
IF vTotal<0 THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
END;
134
C. Fiabilit et transactions
Objectifs
Apprhender la gestion des pannes dans les SGBD.
Comprendre la rponse apporte par la gestion des transactions.
1. Les pannes
Une BD est parfois soumise des dfaillances qui entranent une perturbation, voire un arrt, de son
fonctionnement.
On peut distinguer deux types de dfaillances :
2. Point de contrle
Dfinition : Point de contrle
Un point de contrle est une criture dans le journal positionne automatiquement par le systme qui
S. Crozat - UTC 2009
135
tablit la liste de toutes les transactions en cours (au moment o le point de contrle est pos) et force la
sauvegarde des donnes alors en mmoire centrale dans la mmoire secondaire.
Le point de contrle est positionn intervalles de temps ou de nombre d'entres dans le journal
prdfinis.
Le dernier point de contrle est le point de dpart d'une reprise aprs panne, dans la mesure o c'est le
dernier instant o toutes les donnes ont t sauvegardes en mmoire non volatile.
Synonymes : Syncpoint
136
Transactions de type T1
Elles ont dbut et se sont termines avant tc. Elles n'interviennent pas dans le processus de
reprise.
Transactions de type T2
Elles ont dbut avant tc et se sont termines entre tc et tf. Elles devront tre rejoues (il n'est pas
sr que les donnes qu'elles manipulaient aient t correctement inscrites en mmoire centrale,
puisque aprs tc, or le COMMIT impose la durabilit).
Transactions de type T3
S. Crozat - UTC 2009
Elles ont dbut avant tc, mais n'tait pas termines tf. Elles devront tre annules (pas de
COMMIT).
Transactions de type T4
Elles ont dbut aprs tc et se sont termines avant tf. Elles devront tre rejoues.
Transactions de type T5
Elles ont dbut aprs tc et ne se sont pas termines. Elles devront tre annules.
Remarque
Les transactions sont des units d'intgrit.
REDO et UNDO
liste REDO vide
liste UNDO avec toutes les transactions
point de contrle
Exemple
137
Transactions de type T1
Non prises en compte par l'algorithme.
Transactions de type T2
Ajoutes la liste UNDO (tape 1b) puis dplace vers REDO (tape 2b) puis rejoue (tape
3b).
Transactions de type T3
Ajoutes la liste UNDO (tape 1b) puis annule (tape 3a).
Transactions de type T4
Ajoutes la liste UNDO (tape 2a) puis dplace vers REDO (tape 2b) puis rejoue (tape
3b).
Transactions de type T5
Ajoutes la liste UNDO (tape 2a) puis annule (tape 3a).
138
* *
*
On voit que la gestion transactionnelle est un appui important la reprise sur panne, en ce qu'elle assure
des tats cohrents qui peuvent tre restaurs.
D. Concurrence et transactions
Objectifs
Apprhender la gestion de la concurrence dans les SGBD.
Comprendre la rponse apporte par la gestion des transactions.
TransactionA
TransactionB
t1
LIRET
t2
...
LIRET
t3
UPDATET
...
t4
...
UPDATET
t5
COMMIT
...
t4
COMMIT
Exemple
139
A:Ajouter100
B:Ajouter10
LIRECOMPTE
C=1000
...
LIRECOMPTE
C=1000
UPDATECOMPTE
C=C+100=1100
...
...
UPDATECOMPTE
C=C+10=1010
COMMIT
C=1100
...
COMMIT
C=1010
t6
TransactionA
t1
t2
TransactionB
UPDATET
LIRET
...
t3
ROLLBACK
Exemple
Temps
A:Ajouter10
B:Ajouter100(erreur)
t1
LIRECOMPTE
C=1000
t2
UPDATECOMPTE
C=C+100=1100
t3
t4
LIRECOMPTE
C=1100
...
...
ROLLBACK
C=1000
t5
UPDATEC
C=C+10=1110
t6
COMMIT
C=1110
140
c) Lecture incohrente
Temps
TransactionA
TransactionB
t1
LIRET
t2
...
UPDATET
t3
...
COMMIT
t4
LIRET
Remarque
Le problme se pose bien que la transaction B ait t valide, il ne s'agit donc pas du problme d'accs
des donnes non valides.
Exemple
Temps
t1
A:CalculdeS=C1+C2
B:Transfertde10deC1
LIRECOMPTE1
C1=100
...
LIRECOMPTE1
C1=100
...
LIRECOMPTE2
C2=100
...
UPDATECOMPTE1
C1=10010=90
...
UPDATECOMPTE2
C2=100+10=110
t6
...
COMMIT
t7
LIRECOMPTE2
C2=110
t8
CALCULS
S=C1+C2=210
t2
t3
t4
t5
C2
2. Le verrouillage.
Introduction
Une solution gnrale la gestion de la concurrence est une technique trs simple appele verrouillage.
Dfinition : Verrou
Poser un verrou sur un objet (typiquement un tuple) par une transaction signifie rendre cet objet
inaccessible aux autres transactions.
Synonymes : Lock
141
Verrou(s)Spr sent(s)
Pasdeverroupr
sent
VerrouXdemand
Demanderefus e
Demanderefus e
Demandeaccord
VerrouSdemand
Demanderefus e
Demandeaccord
Demandeaccord
3. Le dverrouillage.
Dfinition : Dverrouillage
Lorsqu'une transaction se termine (COMMIT ou ROLLBACK) elle libre tous les verrous qu'elle a pos.
Synonymes : Unlock
142
3. Sinon A attend le droit de poser son verrou (et donc que les verrous qui l'en empchent soient
levs)
TransactionA
TransactionB
LIRET
VerrouS
...
LIRET
VerrouS
t3
UPDATET
Attente...
...
t4
...
Attente...
UPDATET
Attente...
...
Interblocage
t2
Remarque
Le problme de perte de mise jour est rgl, mais soulve ici un autre problme, celui de l'interblocage.
143
TransactionA
UPDATET
VerrouX
t1
t2
LIRET
Attente...
...
ROLLBACK
LibrationduverrouX
t3
t4
TransactionB
VerrouS
c) Lecture incohrente
Temps
t1
TransactionA
TransactionB
LIRET
VerrouS
...
UPDATET
Attente...
t3
LIRET
VerrousS
...
...
...lib rationdesverrous...
...reprisedelatransaction...
t2
Remarque
La lecture reste cohrente car aucune mise jour ne peut intervenir pendant le processus de lecture d'une
mme transaction.
6. Inter-blocage
Dfinition : Inter-blocage
L'inter-blocage est le phnomne qui apparait quand deux transactions (ou plus, mais gnralement deux)
se bloquent mutuellement par des verrous poss sur les donnes. Ces verrous empchent chacune des
transactions de se terminer et donc de librer les verrous qui bloquent l'autre transaction. Un processus
d'attente sans fin s'enclenche alors.
Les situations d'inter-blocage sont dtectes par les SGBD et gres, en annulant l'une, l'autre ou les
deux transactions, par un ROLLBACK systme. Les mthodes utilises sont la dtection de cycle dans un
graphe d'attente et la dtection de dlai d'attente trop long.
Synonymes : Deadlock, Blocage, Verrou mortel
144
Panne
Mme en cas de panne, la BD doit rester cohrente.
Dfaillances systme
Coupure de courant, de rseau, etc.
Dfaillances du support
Crash disque (dans ce cas les transactions peuvent tre insuffisantes).
Concurrence
Dimension relevant de la conception d'application.
Perte de mise jour
Accs des donnes non valides
Lecture incohrente
Programmation
Un programme peut dcider de l'annulation d'une transaction.
ROLLBACK
Instruction SQL d'annulation d'une transaction.
145
146
VIII -
L'OPTIMISATION DU SCHMA
INTERNE
VIII
184
En rsum : L'optimisation
189
189
La conception des SGBDR exige qu'une attention particulire soit porte la modlisation conceptuelle,
afin de parvenir dfinir des modles logiques relationnels cohrents et manipulables. De tels modles
relationnels, grce au langage standard SQL, prsentent la particularit d'tre implmentables sur toute
plate-forme technologique indpendamment de considrations physiques.
Nanmoins l'on sait que dans la ralit, il est toujours ncessaire de prendre en considration les
caractristiques propres de chaque SGBDR, en particulier afin d'optimiser l'implmentation. Les
optimisations concernent en particulier la question des performances, question centrale dans les
applications de bases de donnes, qui, puisqu'elles manipulent des volumes de donnes importants,
risquent de conduire des temps de traitement de ces donnes trop longs par rapport aux besoins d'usage.
Chaque SGBDR propose gnralement des mcaniques propres pour optimiser les implmentations, et il
est alors ncessaire d'acqurir les comptences particulires propres ces systmes pour en matriser les
arcanes. Il existe nanmoins des principes gnraux, que l'on retrouvera dans tous les systmes, comme
par exemple les index, les groupements ou les vues matrialises. Nous nous proposerons d'aborder
rapidement ces solutions pour en examiner les principes dans le cadre de ce cours.
Nous aborderons galement quelques techniques de conception, qui consistent revenir sur la structure
propose par l'tape de modlisation logique, pour tablir des modles de donnes plus aptes rpondre
correctement des questions de performance. La dnormalisation ou le partitionnement en sont des
exemples.
147
Nombre de tuples
Accs concurents
etc.
Thoriquement
En calculant le cot d'une opration (en temps, ressources mmoires, etc.) en fonction de
paramtres (volume de donnes, disparit des donnes, etc.). En gnral en BD le nombre de
paramtres est trs grand, et les calculs de cots trop complexes pour rpondre de faon prcise
aux questions poses.
Empiriquement
En ralisant des implmentations de parties de schma et en les soumettant des tests de charge,
en faisant varier des paramtres. Ce modle d'valuation est plus raliste que le calcul thorique.
Il faut nanmoins faire attention ce que les simplifications d'implmentation faites pour les
tests soient sans influence sur ceux-ci.
c) Proposition de solutions
Une fois certains problmes de performance identifis, des solutions d'optimisation sont proposes, puis
values pour vrifier leur impact et leur rponse au problme pos.
Parmi les solutions d'optimisation existantes, on pourra citer :
L'indexation
La dnormalisation
148
3. Indexation
Dfinition : Index
Un index est une structure de donnes qui permet d'acclrer les recherches dans une table en associant
une cl d'index (la liste des attributs indexs) l'emplacement physique de l'enregistrement sur le disque.
Les accs effectues sur un index peuvent donc se faire sur une liste trie au lieu de se faire par parcours
squentiel des enregistrements.
trs discrimins (c'est dire pour lesquels peu d'enregistrements ont les mmes valeurs)
rarement modifis
Les index diminuent les performances en mise jour (puisqu'il faut mettre jour les index en mme
temps que les donnes). Les index ajoutent du volume la base de donnes et leur volume peut devenir
non ngligeable.
4. Dnormalisation
La normalisation est le processus qui permet d'optimiser un modle logique afin de le rendre non
redondant. Ce processus conduit la fragmentation des donnes dans plusieurs tables.
Dfinition : Dnormalisation
Processus consistant regrouper plusieurs tables lies par des rfrences, en une seule table, en ralisant
149
En mise jour
Les donnes redondantes devant tre dupliques plusieurs fois.
En contrle supplmentaire
Les moyens de contrle ajouts (triggers, niveaux applicatifs, etc.) peuvent tre trs couteux.
En recherche cible
Certaines recherches portant avant normalisation sur une "petite" table et portant aprs sur une
"grande" table peuvent tre moins performantes aprs qu'avant.
5. Groupement de tables
Dfinition : Groupement de table
Un groupement ou cluster est une structure physique utilise pour stocker des tables sur lesquelles
doivent tre effectues de nombreuses requtes comprenant des oprations de jointure.
Dans un groupement les enregistrements de plusieurs tables ayant une mme valeur de champs servant
une jointure (cl du groupement) sont stockes dans un mme bloc physique de la mmoire permanente.
Cette technique optimise donc les oprations de jointure, en permettant de remonter les tuples joints par
un seul accs disque.
Dfinition : Cl du groupement
Ensemble d'attributs prcisant la jointure que le groupement doit optimiser.
Remarque
Le clutering diminue les performances des requtes portant sur chaque table prise de faon isole,
puisque les enregistrements de chaque table sont stocks de faon clate.
150
6. Partitionnement de table
Dfinition : Partitionnement de table
Le partitionnement d'une table consiste dcouper cette table afin qu'elle soit moins volumineuse,
permettant ainsi d'optimiser certains traitements sur cette table.
On distingue :
Le partitionnement vertical, qui permet de dcouper une table en plusieurs tables, chacune ne
possdant qu'une partie des attributs de la table initiale.
Le partitionnement horizontal, qui permet de dcouper une table en plusieurs tables, chacune ne
possdant qu'une partie des enregistrements de la table initiale.
a) Implmentation de projection
Dfinition : Partitionnement vertical
Technique consistant implmenter deux projections ou plus d'une table T sur des table T1, T2, etc. en
rptant la cl de T dans chaque Ti pour pouvoir recomposer la table initiale par jointure sur la cl Bases
de donnes : objet et relationnel [Gardarin99].
Remarque
Ce dcoupage quivaut considrer l'entit diviser comme un ensemble d'entits relies par des
associations 1:1.
b) Implmentation de restriction
Dfinition : Partitionnement horizontal
Technique consistant diviser une table T en plusieurs sous-table T1, T2, etc. selon des critres de
restriction Bases de donnes : objet et relationnel [Gardarin99] et de telle faon que tous les tuples de
T soit conservs. La table T est alors recomposable par union sur les Ti.
7. Vues concrtes
Un moyen de traiter le problme des requtes dont les temps de calcul sont trs longs et les frquences de
mise jour faible est l'utilisation de vues concrtes.
151
B. En rsum : L'optimisation
Optimisation
Modification du schma interne d'une BD pour en amliorer les performances.
Techniques de modlisation
Dnormalisation
Partitionnement
Horizontal
Vertical
3 - http://wwwsi.supelec.fr/~yb/poly_bd/node122.html
4 - http://wwwsi.supelec.fr/~yb/poly_bd/node126.html
152
Ouvrage de
rfrence conseill
IX -
153
Questions de
synthse
En quoi une base de donnes est-elle plus intressante qu'un systme de fichier classique ?
Pourquoi est-ce que l'on distingue trois niveaux de modlisation lors de la conception d'une base de donnes ?
155
156
Enoncer quelques actions mener pour raliser une spcification gnrale de l'existant et des besoins ?
Quelles sont les diffrences et points communs entre la diagramme de classe UML et le modle E-A tendu ?
157
158
159
Le passage UML vers relationnel est-il systmatique ou soumis interprtation ? Pourrait-il tre ralis par un
algorithme ?
160
Pourquoi dispose-t-on de trois mthodes pour traduire l'hritage dans un modle relationnel ? Ces trois mthodes
sont-elles quivalentes ?
Quels sont les oprateurs algbriques de base ? Quels sont les autres oprateurs ? Qu'est ce qui les diffrencie ?
161
162
163
Pourquoi peut-on dire que la gestion des droits est dcentralise en SQL ?
Pourquoi est-il primordial de reprer les dpendances fonctionnelles sur un schma relationnel ?
164
165
Quels sont les atouts du modle relationnel-objet par rapport au modle relationnel ?
Quels sont les extensions les plus importantes apports par le modle relationnel-objet au modle relationnel ?
En quoi le modle relationnel-objet peut-il tre considr comme plus proche que le modle relationnel du modle
conceptuel ?
En quoi le mapping E-A vers relationnel-objet est-il plus fidle que le mapping E-A vers relationnel ?
166
Qu'apporte les OID par rapport aux cls trangres classiquement manipules dans le modle relationnel ?
Quelles solutions de modlisation apporte les instructions de cration de type sous Oracle ?
167
L'utilisation d'OID pour les rfrences est-elle prfrable l'utilisation de cls trangres classique, en particulier
dans le cas o la cl trangre est compose ?
168
L'aglorithme de reprise UNDO-REDO terminera-t-il toutes les transactions qui taient commences au moment de
la panne ?
169
Laquelle des proprits ACID des transactions est-elle particulirement utile pour grer les accs concurrents ?
Pourquoi peut-on dire que les transactions sont les unit logique de travail, les units d'intgrit, les units de reprise
et les units de concurrence ?
Citer des paramtres propres une BD que l'on doit surveiller dans le cadre de la performance ?
170
Peut-on anticiper sur des problmes de performance futurs lors de la conception d'une BD ?
171
172
Solution des
exercices de TD
> Solution n1 (exercice p. 73)
Intersection (R1, R2) = Difference (R1, Difference (R1,
R2))
"R_p" est la relation obtenu partir de R1 en ne gardant que les attributs n'appartenant pas R2.
Cette relation est de mme schma que la relation rsultat.
"R_px2" est la relation qui combine tous les tuples de R2 avec les tuples de la relation R_p.
Cette relation est de mme schma que R1, et elle contient tous les tuples possibles, et non
seulement ceux qui correspondent au rsultat.
"R_px2-1" est la relation qui restreint R_px2 au tuples n'appartenant pas R1, elle contient donc
tous les mauvais tuples, c'est dire tous ceux que l'on ne veut pas voir appartre dans le rsultat.
"R_px2-1p" est la relation de mme schma que le rsultat, et donc qui contient les mauvais
tuples.
Le rsultat de la division est obtenu par diffrence entre tous les tuples possibles (R_p) et tous les
mauvais tuples (R_px2-1p).
173
Tableau 27 Relation R1
A
10
20
Tableau 28 Relation R2
E
Tableau 29 Relation R3
174
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.
Impedance mismatch
Le terme d'impedance mismatch renvoie au dcalage qui peut exister entre le niveau d'abstraction de deux
langages qui ont travailler sur des structures de donnes communes, par exemple un langage applicatif
objet et un langage de donnes relationnel. L'impedance mismatch a des consquences ngatives en terme
de complexification de l'implmentation et en terme de performance, puisqu'il faut constamment passer
d'une structure de donnes l'autre.
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.
175
Signification des
abrviations
-
1NF
2NF
3NF
4NF
5NF
ACID
ANSI
API
BCNF
BD
DF
DFE
E-A
E-R
FIFO
IHM
ISO
LCD
LDD
LMD
MCD
MLD
OID
OMG
PSM
RO
SGBD
SGBDOO
SGBDR
SGBDRO
SGF
SI
SQL
UML
XML
177
Bibliographie
[C el ko00]
CELKO JOE
[C h en 76]
CHEN P.P . The entity-Relationsheep Model - Towards a Unified View of Data. ACM Transactions
on Database systems. 1976-mars. 1, 1.
[C odd70]
CODD EF
, A relational model for large shared data banks, Communications de l'ACM, juin 1970.
[Del m al 01]
DELMAL PIERRE
. Programmation SQL.
[Pr at t 01]
PRATT PHILIP J.
2001.
[Roqu es 04]
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.
[S ou t ou 02]
SOUTOU CHRISTIAN
[Tar di eu 83]
TARDIEU H.
, ROCHFELD A.
, COLLETI R.
outils. Paris : Les Editions d'Organisation, 1983.
[Tar di eu 85]
TARDIEU H.
, ROCHFELD A.
, COLLETI R.
, PANET G. , VAHEE G.
Mthode MERISE Tome 2 : Dmarche et pratiques. Paris : Les Editions d'Organisation, 1985.
179
180
Index
1:N
p.117
1NF p.104, 111, 112
2NF p.104
3NF p.105, 106
Abstraite.................................... p.32
Acces p.134
ACID p.132
Administration................... p.13, 17
Agrgat.............................. p.88, 89
Algbre p.46, 67, 67, 68, 69,
69, 70, 70, 71, 71, 72,
73
ALL p.92
ALTER TABLE.................. p.80, 81
Analyse....... p.17, 18, 19, 19, 19
AND p.85
Annulation.............................. p.132
ANY p.93
Armstrong..................... p.100, 100
Association p.26, 30, 31, 39, 50,
50, 55, 56, 57, 64, 117,
117
Association 1:1.......................... p.55
Atomicit................................. p.104
Attente..................................... p.142
Attribut p.24, 30, 40, 47, 48,
48, 49, 52, 56, 56
Attribut composite.................. p.116
Attribut driv......................... p.116
Attribut multi-valu................ p.116
BCNF p.106
BD
p.9, 11, 11
BETWEEN................................. p.85
BLOB p.117
Boolean................................... p.117
Calcul p.88
Cardinalit......................... p.27, 39
Cartsien................................... p.70
Catalogue.................................. p.17
CHECK..................................... p.78
Classe p.14, 24, 28, 32, 54, 56,
112
Cl
p.41, 48, 49, 52, 102
Cl artificielle........................... p.49
Cl candidate............................ p.48
Cl trangre...... p.113, 117, 122
Cl primaire...................... p.48, 49
Cl signifiante........................... p.49
Cluster.................................... p.150
Codd p.46
Cohrence p.131, 132, 132, 139
Collection p.113, 116, 117, 119,
122
COMMIT...................... p.133, 138
Comparaison............................. p.85
Composition....................... p.31, 57
Conception.... p.9, 13, 17, 18, 98
Conceptuel p.9, 14, 15, 18, 19,
19, 21, 23, 23, 29, 37,
37, 54, 63, 66
Concurrence....... p.131, 139, 143
Condition................................... p.85
Constructeur........................... p.120
Contrainte............................... p.119
Contraintes........................ p.34, 63
Contrle............................. p.13, 94
CREATE INDEX..................... p.149
CREATE TABLE............. p.77, 119
CREATE TYPE............. p.117, 119
CREATE VIEW......................... p.79
Cration.................................... p.76
Dclaratif.................................. p.76
Dcomposition................ p.99, 103
Dfaillance............................. p.131
DELETE............................ p.82, 83
Dnormalisation........... p.149, 150
Dpendance.................... p.97, 103
Dverrouillage........................ p.142
DF
p.99, 100, 100, 101,
101, 101, 102, 103
Diagramme................ p.23, 28, 29
Dictionnaire.............................. p.17
Diffrence.................................. p.68
DISTINCT................................. p.84
Division..................................... p.72
Domaine............. p.46, 46, 47, 76
Donne...................................... p.13
Donnes..................................... p.14
Droits p.94
DROP p.80
Durabilit............................... p.134
Dynamique................................ p.34
E-A
p.14, 19, 21, 26, 27, 37,
37, 37, 39, 39, 40, 41,
64, 64, 65, 65, 66
Ecriture................................... p.141
Enregistrement.................. p.47, 48
Entit p.37, 40, 41, 64, 116
valuation.............................. p.148
EXCEPT.................................... p.87
Excution................................ p.132
EXISTS...................................... p.92
Externe............................... p.15, 71
Fermeture............................... p.101
Fonction.......................... p.88, 117
FOREIGN KEY......................... p.78
FROM p.84
FUNCTION............................ p.117
GRANT...................................... p.94
GROUP BY............................... p.89
Groupement............................ p.150
HAVING.................................... p.89
Hritage p.27, 32, 40, 57, 59,
59, 60, 61, 63, 65, 114,
117
IN
p.85, 91
Index p.149
INNER....................................... p.86
INSERT.............................. p.82, 82
INSERT INTO............... p.120, 123
Instance............................. p.14, 15
Inter-blocage................ p.143, 144
Interne....................................... p.15
INTERSECT.............................. p.87
Intersection............................... p.68
IOD p.123
IS NULL.................................... p.85
JOIN p.86
Jointure...................... p.70, 71, 71
Journal............... p.134, 135, 138
Langage...... p.13, 16, 82, 84, 90
LCD p.16, 94
181
182
OUTER...................................... p.86
Panne p.134, 135, 135, 136,
137
Partitionnement...................... p.151
Passage.............. p.54, 63, 65, 66
Performance........................... p.148
Perte p.139
Physique............................ p.13, 14
PL/SQL......................... p.123, 133
Point de contrle p.135, 136, 137
PRIMARY KEY.......................... p.78
Problme................................... p.98
Produit....................... p.46, 47, 70
Projection........................ p.69, 151
Proprit.................... p.24, 30, 40
Question............................. p.84, 90
Redondance p.12, 97, 98, 103,
149
Rfrence...................... p.113, 115
REFERENCES.......................... p.78
Relation p.47, 47, 48, 48, 49,
50, 50, 52, 52
Relationnel p.11, 14, 21, 45, 45,
46, 46, 47, 52, 53, 54,
54, 55, 56, 56, 57, 57,
59, 59, 60, 61, 63, 63,
63, 64, 64, 65, 65, 66,
67, 67, 73, 97, 103, 109,
109
Relationnel-objet p.45, 46, 111,
124, 127
Requte...................... p.82, 84, 90
Restriction....................... p.69, 151
REVOKE................................... p.95
RIGHT....................................... p.86
ROLLBACK........ p.133, 135, 144
Schma p.9, 13, 15, 52, 53,
114, 147
Scurit..................................... p.13
SELECT........... p.84, 86, 86, 121
SGBD p.9, 11, 11, 12, 14
SGBDOO................................ p.110
SGBDRO............ p.111, 124, 127
SGBR p.13
Sous-requtes p.90, 91, 92, 92,
93
Spcifications............................ p.19
SQL p.16, 76, 82, 84, 90, 94,
117, 133
Table p.76
TABLE.................................... p.122
Table imbrique p.111, 113, 119,
122
Transaction. p.13, 132, 133, 134
Tri
p.88
Tuple p.47
Type p.14, 76, 112, 113, 114,
114, 116, 116, 117, 119
UML p.14, 19, 23, 23, 24, 24,
25, 27, 28, 29, 30, 31,
32, 34, 54, 54, 55, 56,
56, 57, 57, 59, 59, 60,
61, 63, 63, 63, 66
UNDO-REDO......................... p.137
Union p.68
UNION...................................... p.87
UNIQUE.................................... p.78
Unit p.132, 132, 135, 136
UPDATE............................ p.82, 83
Utilisateur................................. p.94
Validation............................... p.132
VBA p.134
Verrou p.141, 142, 142, 143,
144
Vue
p.151
WHERE...................... p.84, 86, 86