Chap 10
Chap 10
Chapitre 10
Théorie de la normalisation d’une base de données
Nous avons abordé la normalisation du schéma relationnel lors de l’étude du modèle relationnel.
Dans cette section, nous ferons un rappel des définitions de base en les formalisant davantage et nous
étudierons avec plus de détails les fondements théoriques de la normalisation. Les formes normales
supérieures, la FN4 et FN5 sont introduites et illustrées par des exemples complets. Les notions
présentées dans ce chapitre constituent les principaux éléments du corpus théorique sur le processus
de normalisation des bases de données et sur la validation des formes normales 4 et 5.
NB : si X --> Y dans R, cela nʹimplique pas que Y -/-> X, car la définition de la dépendance
fonctionnelle nʹest pas une équivalence logique. Le X est appelé le déterminant (antécédent) et Y le
déterminé (conséquent). Il faut noter que si l’antécédent est faux quel que soit la paire de tuples, alors
l’implication est vraie et donc la DF est validée. Pour infirmer une dépendance, il suffit d’un seul
contre exemple formé avec une paire de tuples trouvés dans une extension valide. En revanche,
lʹexistence d’une DF dans une relation relève de la sémantique. Il est rare voire impossible dans la
réalité, d’examiner une extension volumineuse de tuples dans laquelle on retrouverait toutes les
dépendances possibles de la relation. Par contre, l’analyse informatique fournit l’information
nécessaire pour spécifier certaines contraintes et de ce fait, valider ou pas certaines dépendances
fonctionnelles ou les autres que nous étudierons plus loin dans ce chapitre.
Projet : noProjet budget site
P2 4,0M$ Québec
P3 2,7M$ Montréal
P4 2,7M$ Québec
P1 3,2M$ Lévis
ajout refusé --->P2 4,0M$ Gaspé
Figure 10.1
Source : [Link]
André Gamache
Chapitre 10 Théorie de la normalisation du schéma
Si cette extension est représentative de tous les états possibles pour cette relation fort simple, il est
possible après examen d’énoncer les deux DF suivantes :
F = { noProjet --> budget; noProjet --> site }
Le même ensemble de DF peut être aussi formulé autrement en fusionnant les deux dépendances qui
partagent le même antécédent pour obtenir la seule DF suivante :
F = { noProjet --> budget, site }
Cette dernière dépendance fonctionnelle est équivalente aux deux premières.
Lʹensemble des DF dans une BD est représenté par le symbole F qui regroupe que les énoncés de
dépendance valides. Par exemple, lʹajout dʹun tuple (P2, 4,0M$, Gaspé) ne pourra se faire, puisque
lʹétat résultant contredirait une DF de F : le projet P2 correspondrait à deux sites.
Et cela pour ∀r (c’est-à-dire pour toutes les interprétations de R). Un tuple est acceptable par rapport à
l’extension r de R s’il vérifie toutes les formules fermées qui expriment les dépendances fonctionnelles
définies dans F dont le déterminant ∪ déterminé ⊆ R.
Dépendance fonctionnelle totale (DFT)
Si X--> Y et si ¬∃ X’ tel que X’ --> Y et que X’ ⊆ X, alors X--> Y est une dépendance totale (DFT) qui est
notée X -t-> Y ou X==> Y.
Une DFT est aussi une dépendance fonctionnelle dont le déterminant est minimal. Au contraire, s’il
existe X’⊆ X, alors Y est en dépendance fonctionnelle partielle sur X, car Y dépend dʹune partie de X.
Voici quelques exemples sur les DFT :
a) R (A, B, C) avec F = {A--> B; A--> C; A, B --> C}
© A. Gamache 2
Chapitre 10 Théorie de la normalisation du schéma
La relation Machine a une extension ci-dessous que nous supposerons représentative de tous les états
possibles de R. i.e. dans laquelle toutes les dépendances sont vérifiées.
La clé de cette relation est formée avec l’attribut noMachine parce que tous les attributs de la relation
sont en dépendance fonctionnelle avec celui-ci. Est-ce le meilleur schéma de table pour représenter
© A. Gamache 3
Chapitre 10 Théorie de la normalisation du schéma
l’Entité Machine ? Par exemple, si la machine M756 est mise à la ferraille, le tuple correspondant doit
être supprimé de l’extension de la relation; il y a perte d’information, à savoir que cette machine
identifiée dans cette usine par M756, de marque Cincinnati est une perceuse dont le débit de
production est de 75 unités à l’heure. Si cette information a une importance pour l’organisation, la
suppression constitue une perte de la donnée rattachée à une faiblesse de ce schéma. Ce dernier peut-
il être remplacé par un autre, plus efficace dans la représentation des faits de la base, i.e. en évitant
cette perte d’information ? La réponse sera apportée par la normalisation qui séparera les données
factuelles sur l’équipement de celles spécifiques aux activités de l’usine.
Voici deux nouveaux schémas construits avec les mêmes attributs :
R1 (noMachine, marque, categorie, totServ)
avec la DF : noMachine --> marque, categorie, totServ
R2 (marque, categorie, debit)
avec la DF : marque, categorie --> debit
Chaque schéma de relation est formé avec les DF de F qui partagent le même déterminant.
L’extension de chaque relation est alors obtenue par la projection de la relation initiale Machine sur les
attributs des deux nouvelles relations.
© A. Gamache 4
Chapitre 10 Théorie de la normalisation du schéma
Soit R1, R2 et R3, il y a équivalence entre R3 et les deux autres relations, R1 et R2, si et seulement si la
condition suivante est vérifiée : R3 = R1 |x| R2 où |x| est l’opérateur de jointure naturelle. Le résultat
de la jointure doit inclure toutes les données de R3 sans ajouter d’autres données. Donc, dans
l’exemple ci-dessus, le calcul de la jointure reconstruit la table Machine. Il existe cependant d’autres
relations définies avec les mêmes attributs qui ne sont pas équivalentes à Machine, car leur jointure ne
reconstitue pas l’extension d’origine.
Le schéma de la deuxième relation est obtenu en supprimant les attributs du déterminant de la DF,
soit {A, B, C} – {déterminant dans A->B}. Cette décomposition est valide, seulement si la jointure des
relations obtenues donne la relation initiale comme résultat de leur jointure :
R(A, B, C) = R1(A, B) |x| R2(A, C)
Or la jointure est sans perte si et seulement si l’attribut commun des deux relations obtenues
détermine tous les autres attributs dans au moins une relation. Dans l’exemple précédent l’attribut
commun dans R1 et R2 est A et dans F, A --> B.
Dans lʹexemple qui suit, la relation Gestion possède deux dépendances fonctionnelles :
Gestion (noProjet, budget, site) avec F= {noProjet --> budget; noProjet --> site}
La clé est définie par les DF de F, soit noProjet puisque cet attribut détermine tous les attributs.
La relation Gestion pourrait cependant être décomposée sans perte en deux relations :
R1 (noProjet, budget) R2 (noProjet, site)
Cette division de la relation Gestion nʹest pas souhaitable dans ce cas-ci, puisque toutes les DF de F
ont le même déterminant. En théorie, toute l’information qu’il était possible de représenter dans la
relation initiale Gestion peut aussi l’être avec les nouvelles relations R1 et R2. S’il est utile pour des
fins de performances ou de confidentialité de représenter les budgets de projets séparément de leurs
sites alors ces dernières peuvent être renommées pour être plus significatives: BudgetProjet et
SiteProjet. Une jointure sera cependant nécessaire pour obtenir le budget et le site d’un projet
particulier.
© A. Gamache 5
Chapitre 10 Théorie de la normalisation du schéma
La décomposition de R en deux relations : R1(A, B) et R2(B, C) est invalide, car l’attribut commun B ne
détermine pas A ou C dans lʹune ou lʹautre des deux relations obtenues par décomposition : B -/-> A et
B -/-> C. Bien que la décomposition préserve l’équivalence du schéma, elle ne garde pas
l’équivalence des données.
Théorème de Heath
Si lʹon a une relation R (A, B, C) avec A, B, et C les ensembles d’attributs du schéma. Si R vérifie la
dépendance fonctionnelle A -> B, alors R est aussi égale à la jointure des projections de R soit R1[A, B]
et R2[A, C]. En d’autres mots, l’attribut commun au deux nouveaux schémas détermine tous les
3
attributs dans une des relations . Notons aussi que la décomposition peut se faire avec une DF
obtenue par fusion de toutes les DF de F qui partagent le même déterminant.
Démonstration : Il faut démontrer que les deux projections R1 et R2 obtenues de R(A, B, C) peuvent
faire l’objet d’une jointure sans perte et cela pour obtenir l’extension initiale. En premier, nous
démontrons que chaque projection d’un tuple de R donne un fragment de tuple qui appartient à R1 ou
à R2. Ainsi aucun tuple de R nʹest perdu par la décomposition. Soit un tuple quelconque (a, b, c) ∈ r,
alors un tuple quelconque de la projection de R sur (A, B), c’est-à-dire (a, b) ∈ R1 et la projection de R
sur (A, C ) donne aussi un tuple (a, c) ∈ R2. Donc le tuple (a, b, c) appartient à la jointure R1 |x| R2.
Donc pour tout tuple de l’extension initiale r, il existe deux projections qui se recomposent pour
donner un tuple de la jointure.
Il faut maintenant démontrer que chaque tuple de la jointure calculée est obligatoirement un tuple de
r et qu’aucun tuple étranger n’est créé par cette jointure. Soit (a, b, c) un tuple du calcul de R1 |x| R2.
La formation d’un tel tuple suppose que les tuples (a, b) ∈ R1 et (a, c) ∈ R2. Supposons maintenant
quʹil existe un tuple quelconque s de R, soit (a, b’, c), avec une valeur quelconque pour b’, la projection
de s sur (A, C) donne un tuple (a,c) ∈ R2. Par conséquent, la projection (a, b’ )∈ R1 devrait être aussi
dans l’extension de R1. Alors, (a, b) ∈ R1 et (a, b’) ∈ R1. Si tel est le cas, il y a infirmation de la DF
donnée en hypothèse qui stipule que A--> B. Par conséquent, il faut que b = b’ pour que seul le tuple
(a, b, c) ∈ R. Le théorème inverse est faux. Lorsqu’une relation R(A, B, C) est obtenue par la jointure de
deux relations R1(A, B) et R2(A, C), il ne s’en suit pas que la dépendance fonctionnelle A --> B soit
valide dans R.
© A. Gamache 6
Chapitre 10 Théorie de la normalisation du schéma
Un attribut A, du schéma de R est un sous-ensemble de {A, B} et ce dernier détermine chacun des ses
éléments.
Puisque A ⊆ {Α, Β} on a que Α, Β --> A et A, B --> B
Démonstration : Notons que si t1[A, B] = t2[A, B] cela implique que t1[A] = t2[A] et t1[B] = t2[B] pour
toute paire t1 et t2 d’une extension quelconque r de R.
Si t1[A, B] = t2[A, B], alors t1[A] = t2[A] et, selon la définition de la DF, A, B --> A .
Cas particulier : DF triviale
Si A ⊆ A alors A --> A. Les DF dérivées par réflexivité sont dites triviales.
© A. Gamache 7
Chapitre 10 Théorie de la normalisation du schéma
3- Transitivité
Si les dépendances X --> Y et Y --> Z sont valides dans une même relation R, alors X --> Z lʹest aussi
dans R.
Démonstration
Supposons une extension r qui vérifie les DF de l’hypothèse et deux tuples quelconques t1 et t2 ∈ r .
La projection d’un tuple sur un attribut donne une valeur. Donc les propositions suivantes sont
vraies :
t1[X] = t2[X] ⇒ t1[Y] = t2[Y] et
t1[Y] = t2[Y] ⇒ t1[Z] = t2[Z] sont vraies par définition.
Donc t1[X] = t2[X] ⇒ t1[Z] = t2[Z] est une formule logique vraie. Par définition cette
implication représente la DF X --> Z, qui est donc valide dans l’extension r de R.
4- Pseudo transitivité
Si X --> Y et Y, W --> Z dans R, alors X, W --> Z est aussi valide dans R.
Démonstration
(1) X --> Y par hypothèse
(2) W --> W une triviale
(3) X, W --> Y, W par augmentation de (1)
X, W --> Z par transitivité avec une DF de F.
© A. Gamache 8
Chapitre 10 Théorie de la normalisation du schéma
6- Décomposition dʹune DF
Si X --> Y, Z est valide dans l’extension r du schéma R, alors X --> Y et X --> Z le sont aussi dans le
même schéma R. On a alors {X --> Y, Z} ≡ {X --> Y et X --> Z}. On peut aussi écrire cette décomposition
sous la forme d’une conséquence logique :
X --> Y, Z |= X --> Y
X --> Y, Z |= X --> Z
Démonstration
(1) X --> Y, Z par hypothèse : une DF de F
(2) Y, Z --> Y (car Y ⊆ Y, Z) par réflexivité : DF triviale
(3) X --> Y par transitivité avec (1) et (2).
Le déterminé complexe (ou multiattribut) peut être transformé pour obtenir un déterminé simple,
transitivité, au prix d’une augmentation du nombre de DF dans F. Certains auteurs utilisent
lʹexpression de dépendance élémentaire lorsque le déterminé est formé dʹun seul attribut.
© A. Gamache 9
Chapitre 10 Théorie de la normalisation du schéma
Exemple : Soit la relation r (A, B, C, D, E) avec A --> B, C donnée comme une DF valide.
La projection r’(A, B, D) obtenue par la projection de r sur le ou les attributs communs entre le
déterminé de la DF de r et le nouveau schéma de rʹ. Les attributs communs entre les projections {B, C}
et {A, B, D} sont {B}. Donc, la DF A --> B est aussi valide dans le schéma de la nouvelle relation, R’.
Autre exemple :
Soit R(A, B, C, D) avec A --> C, D. La projection r’ (A, B, C) de r vérifie la DF : A --> C.
L’intersection entre (C, D) et (A, B, C) est C et donc A--> C est donc valide.
b) Si A, C --> D est valide dans R, alors A, C --> A, D est aussi valide dans R par augmentation du
déterminé :
A, C --> D, C ajout de C --> C
A, C --> A, D par ajout de A--> A
A, C --> A et A, C --> D sont les dépendances équivalentes.
© A. Gamache 10
Chapitre 10 Théorie de la normalisation du schéma
On peut donc conclure que tout attribut du déterminant peut être ajouté au déterminé.
Les propriétés étudiées précédemment ne sont pas toutes essentielles, ni minimales. Certaines
4
peuvent être déduites à partir de trois propriétés essentielles que William Armstrong (1974) a
présentées comme étant en quelque sorte les axiomes d’une théorie du premier ordre.
Axiomes dʹArmstrong
Les axiomes dʹArmstrong sont les propriétés des DF à partir desquelles toutes les autres peuvent être
dérivées :
a) la réflexivité : Y ⊆ X ⇒ X --> Y (cas particulier : X --> X);
b) lʹaugmentation : X --> Y et que Z ⊆ W ⇒ X, W --> Y, Ζ;
c) la transitivité : X --> Y et Y --> Z dans R, alors X --> Z;
© A. Gamache 11
Chapitre 10 Théorie de la normalisation du schéma
CQFD
Conséquence logique F |= f
Soit une relation R(W), où W est l’ensemble des attributs du schéma de R et F un ensemble de DF
définies dans W. Une dépendance fonctionnelle f appelée aussi DF est une conséquence logique de F
(notée F |= f) si toute extension (analogue à l’interprétation ) qui vérifie F vérifie aussi f.
Validité
Si F |- f, alors F |= f dans R. Si lʹon peut formellement dériver la dépendance fonctionnelle f de F,
alors toute extension de la relation vérifie f. Une dérivation formelle d’une DF correspond à
une contrainte sémantique dans les données de R.
Complétude sémantique
Si F |= f, alors F |- f. Si la dépendance fonctionnelle f est vérifiée par toute extension de R, alors f est
une formule qui peut être formellement dérivée par les règles dʹinférence dʹArmstrong.
Exemple
Soit la relation R(A, B, C, D) avec F= {A--> B; A-->C; B, C --> D}, démontrez que la DF A, C -->D peut
être dérivée de F.
(1) A --> B hypothèse
(2) A, C --> B, C par augmentation avec C --> C
(3) B, C --> D hypothèse
(4) A, C --> D par transitivité
(5) F |= A, C -->D
CQFD
Les axiomes de Armstrong sont valides et complets par rapport à F. Valides parce que toute DF qui
peut être dérivée de F est aussi vérifiée dans toute extension de R qui vérifie F. Ils sont complets parce
© A. Gamache 12
Chapitre 10 Théorie de la normalisation du schéma
que toute dépendance vérifiée ou découvertes dans toutes les extensions de R peuvent être dérivées
à partir de F.
Procédure FERMETURE
1- Dérivation de toutes les triviales à partir de F après sa transformation
en dépendances élémentaires;
2- F1 = F ∪ triviales;
3- Dérivation de toutes les DF par augmentation des déterminants de F1 avec
les attributs de F. On obtient F2 = F1 ∪ augmentées;
4- Dérivation de toutes les DF par transitivité
F3 = F2 ∪ transitives.
Lʹensemble résultant de lʹunion des DF dérivées par les axiomes donne la fermeture de F.
© A. Gamache 13
Chapitre 10 Théorie de la normalisation du schéma
B, C --> C;
Il faut remarquer la redondance introduite par les DF triviales qui ne sont pas élémentaires (italique
gras). Les premières n’ont plus à être produites; seules les df élémentaires obtenues par augmentation
du déterminant suffisent au calcul de la fermeture.
b) les DF augmentées :
A, B--> A; A, B,C -->A ;
A, C --> A; A, B, C -->B
B, A --> B; etc
B, C --> B;
Les dépendances augmentées avec les triviales ne produisent pas de nouvelles DF ; elles sont aussi
redondantes. Seules les augmentées obtenue avec les DF de F sont à conserver.
c) Les DF transitives : {Toutes les DF dérivées par implication logique à partir des dépendances de F }
ne sont dans cet exemple que des triviales. Dans certains cas de F, la transitivité peut générer de
nouvelles DF qui sont à conserver dans la fermeture.
Le calcul de la fermeture peut devenir laborieux avec cette approche naïve fondée sur l’énumération
exhaustive. Une méthode plus rapide, de préférence linéaire, est souhaitable pour que la fermeture
soit pratique! Pour y arriver, il faut utiliser la notion de fermeture d’attribut, notamment d’un attribut
ou ensemble d’attributs déterminant.
© A. Gamache 14
Chapitre 10 Théorie de la normalisation du schéma
Afficher A+ = Si
Fin.
Exemple : Soit une relation R(A, B, C, D) avec F = {A, B --> C; D --> B; A, B --> D}.
Calculez AD+: S0 = A, D
S1 = {A, D} ∪ Β = {Α, D, Β} pour i=0
S2 = {Α, D, Β} ∪ {C, B, D} = {A, B, C, D} pour i = 1
S2 = {A, B, C, D} ∪ {C, B, D} = {A, B, C, D} pour i = 2
La procédure se termine car la dernière suite est identique à la précédente soit {A, B, C, D} et donc A,
D --> B ∈ F+. Ainsi, puisque B est contenu dans AD+, il faut en conclure que A, D --> B ∈ F+.
Couverture de F
Une couverture C de F pour laquelle C ⊆ F est un ensemble de DF tel que la fermeture de F est
identique à celle de C : C+ = F+ . La couverture C de F est un sous-ensemble de F qui a une cardinalité
moindre ou égale à F et qui fournit la même fermeture. Lʹensemble F qui résulte de lʹanalyse doit
avoir des déterminés parmi lesquels tous les attributs identifiés sont représentés.
F+
F(1)
F(2)
CC analyse 1 analyse 2
Figure 10.7
La couverture C de F n’est pas unique et appartient à une famille de couvertures. De plus, elle n’est
pas nécessairement minimale par rapport à F. La notion de couverture ne sous-tend pas que celle-ci ait
le plus petit nombre de dépendances.
© A. Gamache 15
Chapitre 10 Théorie de la normalisation du schéma
La couverture non redondante ne fournit que les DF strictement nécessaires pour assurer la dérivation
de la fermeture de F.
c) Une autre propriété a trait à la fermeture d’un attribut W de R. En effet, si celle-ci est égale au
schéma de la relation, alors W est une superclé.
W+= R alors W est une superclé qui contient une clé primaire de R.
Exemple : si R(W, Z, U) est une relation dans laquelle W+ = {W, Z, U} alors W est une superclé à partir
de laquelle, il est donc possible de trouver la clé par des suppressions successives des attributs de W.
© A. Gamache 16
Chapitre 10 Théorie de la normalisation du schéma
axiomes. Donc, on peut calculer l’appartenance d’une DF à une fermeture sans la calculer
explicitement grâce à la notion de fermeture d’attributs.
© A. Gamache 17
Chapitre 10 Théorie de la normalisation du schéma
ou monoattribut, le nombre de tests demeure raisonnable. Pour un F de petite cardinalité, il est alors
possible de faire les tests via la fermeture des attributs. Voici quelques exemples :
a) Test de A comme clé : Si A --> B, C, D,E alors B, C, D,E ⊆ A+.
Or A+ = A, B, C, D, E. Donc, A est une clé candidate de R;
La recherche exhaustive des clés sous-tend une série exhaustive de tests avec toutes les
combinaisons possibles d’attributs. Il devient évident alors que le processus peut être très
long dès lors que le nombre d’attributs est grand.
© A. Gamache 18
Chapitre 10 Théorie de la normalisation du schéma
La première dérivation souligne que B est redondant puisque A--> D est dérivable. La deuxième est
facile à démontrer puisquʹelle découle directement dʹune propriété de la DF.
Donc, l’attribut B est redondant dans la DF A, B --> D.
Donc, A n’est pas étranger dans la DF A, B --> D. On peut faire la même vérification avec les autres
cas pour s’assurer de la nécessité de la présence de B dans la DF A --> B, C et de C dans la
dépendance A --> B, C.
La conservation des dépendances fonctionnelles (CDF) privilégie le respect des contraintes d’intégrité
avec le minimum de calcul de la part du SGBD, c’est-à-dire sans que celui-ci ait à faire des jointures ou
dʹautres calculs à chaque mise à jour ou à chaque suppression de données dans la BD.
© A. Gamache 19
Chapitre 10 Théorie de la normalisation du schéma
Une conception inappropriée d’une base de données se traduit par les phénomènes suivants :
a) Redondance non justifiée par la recherche d’un niveau élevé de performance;
b) Présence des anomalies d’ajout, de suppression et de mise à jour qui mettent en péril l’intégrité de
la BD.
Il faut très souvent faire un compromis entre la conservation des données et celle des dépendances.
Dans plusieurs cas, il faudra choisir la première, quitte à confier au SGBD la mission de vérifier le
respect des dépendances au moyen de déclencheurs (triggers) de la base. C’est une pratique courante
observée dans le domaine des SGBD. En revanche, il n’est pas souhaitable de privilégier la
conservation des DF et de laisser au SGBD seul la vérification de la conservation des données. Il faut
rappeler qu’une bonne conception qui favorise ces propriétés, simplifie la tâche de tout logiciel SGBD
et que certaines faiblesses dans la conception du schéma du schéma de la base peuvent être
compensées en cours dʹexploitation, par le traitement du SGBD. La conservation des données est
considérée comme capitale pour assurer la cohérence et sera prise en considération en cours de la
normalisation des relations de la base de données.
Cet algorithme ne fournit pas toujours un schéma acceptable et/ou optimal parce qu’il ne tient pas
compte de la redondance des dépendances fonctionnelles (couverture minimale ignorée), la présence
des attributs étrangers et les clés équivalentes.
© A. Gamache 20
Chapitre 10 Théorie de la normalisation du schéma
Soit les relations Client (nas*, nom, date) avec F1 = {nas --> date ; nas --> nom} pour R1 et Livraison
(article*, qte, date*, nas) avec F2 = {article, date --> qte ; article, date --> nas }.
La DF de F2 signifie que pour un type d’article et pour une date donnée, il a été livré qu’une seule
quantité. Cette dernière pourrait être par exemple la production du jour, et la livraison faite à une
seule personne! Si lʹon considère les dépendances de F1 et de F2 et la pseudo transitivité, on a alors :
Cette DF n’est pas validée dans l’extension de la relation Livraison (voir les tuples 2 et 3). La raison
tient à la double sémantique de l’attribut date. Dans la relation Client, il s’agit de la date d’inscription
du client, tandis que dans la relation Livraison la date est celle de la livraison de l’article. Pour éviter
de faire une fausse inférence, il faut que les deux attributs soient distincts par leur libellé puisque
qu’ils ont une sémantique différente. Par exemple, dateClient et dateLivraison sont des libellés
différents et les dépendances fonctionnelles deviennent alors les suivantes :
© A. Gamache 21
Chapitre 10 Théorie de la normalisation du schéma
On constate que les projections ne fournissent pas les extensions recherchées et ce parce que l’attribut
date est présumé avoir une seule sémantique. Ainsi, les dates dateLivraison et dateClient sont
confondues.
Voici un autre exemple dans lequel la même difficulté découle de lʹambiguïté des libellés.
Empl (nas*, telephone) et Gerant (nas*, telephone).
La relation universelle U de cette base a le schéma (nas, telephone) et son extension est la suivante,
résultat de la jointure :
U: nas telephone
n2 566-3425
n4 645-8954
n6 756-0986
n8 549-5648
n45 656-2398
n22 656-2678
Il nʹest plus possible de recalculer par projection les extensions initiales respectives des tables Empl et
de Gerant parce que l’attribut telephone de la relation universelle U confond celui de l’employé et
celui de son gérant.
© A. Gamache 22
Chapitre 10 Théorie de la normalisation du schéma
Gi = { df ∈ F+ | df = X --> Y et X ∪ Y ⊆ Ri}
La Gi de Ri ne prend en compte que les DF intra relationnelles.
Lorsque l’algorithme renvoie True, il y a conservation des dépendances dans le schéma de la BD.
© A. Gamache 23
Chapitre 10 Théorie de la normalisation du schéma
assurée. En effet, la dépendance B--> C n’est pas dérivable à partir des deux dépendances présentes
dans le nouveau schéma. Cette dernière DF n’appartient donc pas à la fermeture des DF de la
nouvelle BD.
Autre exemple :
R(A*, B*, C*, D) avec F = {A, B, C --> D; D --> A}
Cette relation n’est pas en FNBC, car un attribut primaire A dépend dʹun attribut qui nʹest pas une clé.
La 2-décomposition suivante est effectuée : R1(D*, A) et R2(B*, C*, D*). Ces deux relations sont
maintenant en FNBC. De plus, la 2-décomposition conserve les données, mais pas les dépendances.
En effet, A, B, C --> D ∈F ne peut pas être vérifiée directement sans calculer la jointure (R1 |x| R2). Au
contraire, la conservation des données est assurée, car R1 ∩ R2 --> R1 - R2, i.e. que D --> A.
Remarque
Une relation R peut toujours être k-décomposée en FN3 avec conservation des données et des
dépendances. Toutefois, il n’existe pas toujours une décomposition en FNBC avec CDF et CDD.
r: A* B* C D r1: A* B* r2: B* D
1 5 8 9 1 5 5 9
6 5 8 9 6 5 3 7
2 3 4 7 2 3
Dans cet exemple, r = r1 |x| r2, car R1 ∩ R2 = B et B --> D dans dans la relation r2.
© A. Gamache 24
Chapitre 10 Théorie de la normalisation du schéma
Quelles sont les clés des relations suivants ? R1(A*, B*, C, D) ; R2(B*, E*, H) ; R3(A*, E*, G) et
finalement R4(A*, B*,E*).
Il faut en outre démontrer que le résultat R1 |x| R2 |x| R3 |x| R4 = R le schéma de la base. Pour cela,
il faut trouver une jointure naturelle intermédiaire de deux relations valide qui conserve les données.
Prenons les relations R1 et R2 : le calcul de la jointure R1 |x| R2 conserve les données si et seulement
si R1∩R2 = B et que B --> R1 − (R1 ∩ R2) ou que B --> R2 - (R1 ∩ R2). Or, est-ce que B --> A, C, D ou
encore B --> E, H ? Sinon, R1 |x| R2 génère des incohérences transitoires. On peut démontrer que ces
deux DF n’appartiennent pas à F+ et que la jointure ne conserve pas les données. Le problème avec le
résultat de cette décomposition repose sur le fait qu’avec la première décomposition, la condition de la
conservation des données n’était pas vérifiée. Certaines formes de relation peuvent être construites
pour conserver les données et les DF, tandis que d’autres relations ne conservent que les unes ou les
autres. Un choix s’impose donc en fonction du contexte de l’analyse et de la qualité de la
représentation attendue. Le plus souvent, il sera choisi de conserver les données.
Cette DIN est une assertion qui stipule que, chaque fois qu’une combinaison de valeurs apparaît dans
une ou plusieurs relations du schéma, elle doit obligatoirement apparaître aussi dans une autre
relation du schéma. Cette condition est courante dans un schéma parce que les entités d’un modèle
logique sont associées les unes aux autres par une association. La DIN établit aussi une précédence
dans la mise à jour : la date de l’évaluation artistique doit être postérieure à celle du spectacle.
© A. Gamache 25
Chapitre 10 Théorie de la normalisation du schéma
Une contrainte dʹintégrité référentielle est une contrainte DIN particulière dans laquelle lʹinclusion
R1[A] ⊆ R2[A] est vérifiée dans le schéma R et où A est une clé dans R2 et A est aussi une clé
étrangère dans R1.
b) Si R1[A1, A2, ..., An] ⊆ R2[B1, B2, ..., Bn] alors R1[Ai, Ai +1 ..., Aj] ⊆ R2[Bi, Bi+1 ..., Bj]
où i et j ∈ [1,n]; la DIN est toujours vérifiée avec un sous-ensemble ordonné des attributs pour autant
quʹil soit aussi défini dans la partie gauche et dans la partie droite de la même dépendance
d’inclusion;
c) Transitivité de la DIN
Si R1[A1, A2, ..., An] ⊆ R2[B1, B2, ..., Bn] et R2[B1, B2, ..., Bn] ⊆ R3[C1, C2, ..., Cn], alors
R1[A1, A2, ..., An] ⊆ R3[C1, C2, ..., Cn].
Cette DIN contraint chaque gérant dʹun département à être un employé de ce département et
constitue une contrainte dʹinclusion plus stricte que la contrainte de clé étrangère formulée avec
seulement l’attribut nasEmpl.
10.6 Formes normales des relations (Cette partie est un rappel des notions déjà vues)
Le schéma d’une base de données relationnelle S est formé des relations suivantes : {R1, R2, R3, ... Rn}
où chaque Ri ∈ S est normalisée afin d’éviter des anomalies d’ajout, de mise à jour et de suppression
dans l’exploitation de la BD. Ainsi, la cohérence de la BD est conservée de par la structure même du
© A. Gamache 26
Chapitre 10 Théorie de la normalisation du schéma
schéma sans que le noyau du SGBD ait à déployer des efforts de calcul de jointure parfois importants
10
pour garantir l’intégrité de la base . Règle générale, plus la normalité de la relation est grande, plus
les risques d’anomalies sont faibles. La normalité d’une relation est définie essentiellement au regard
11
de certaines dépendances dont les fonctionnelle, la multivaleur et celle de jointure .
Il existe d’autres dépendances qui n’interviennent pas dans la définition des formes normales (voir la
dépendance d’inclusion), mais qui ont leur importance dans la cohérence des données. A partir de
maintenant, nous reviendrons sur les notions vues antérieurement pour les préciser davantage au
regard de la théorie.
Ceci se manifeste à l’intersection de chaque colonne et de chaque ligne par une seule valeur et
dʹun même type atomique.
Exemple :Voici une table ou relation de données avec des valeurs atomiques pour chaque attribut.
Le type des attributs est défini comme une structure de données primitive dont la valeur est comprise
dans l’ensemble énuméré ou défini. Ce type est aussi connu comme un domaine, car les opérations
sur le type ne sont pas spécifiées dans le modèle relationnel.
Dans cet exemple, la relation Carnet est FN1 et les DF sont :
© A. Gamache 27
Chapitre 10 Théorie de la normalisation du schéma
Anomalies possibles
Il est évident que des anomalies persistent en FN1 :
a) Anomalie de suppression : si la commande du client Pageau est annulée, il y a perte de la cote de
crédit de ce client. Lorsque cette personne redevient alors client il faudra rechercher sa cote en dehors
du système.
b) Anomalie de mise à jour : La cote de crédit du client Aubert qui a commandé la pièce p500 est
lʹobjet dʹune décote de A à B. La mise à jour du premier tuple avec la nouvelle cote engendre une
incohérence, car le crédit de Aubert apparaît comme ayant la cote B dans le premier B et A dans le
dernier tuple. Il y a donc violation de la dépendance fonctionnelle : noClient --> credit.
c) Anomalie dʹajout : Il est impossible dʹajouter une cote de crédit pour le client Gagnon, si ce dernier
ne passe pas en même temps une commande. Ces anomalies seront absentes lorsque les relations
passeront à une autre forme normale dite FN2.
En d’autres mots : ri est FN1 et pour ∀j si Aj est non primaire, alors ∀k tel que clék est une clé et que
clék ⇒ Aj dans ri. En d’autres mots, une extension est en FN2 si chaque attribut non primaire de ri est
en dépendance fonctionnelle totale par rapport à chaque clé (primaire et candidate) de la relation.
Dans la relation Carnet (client, noPiece, norme, credit), il y a quʹune clé candidate et les DF de F sont
les suivantes :
F = {noClient, noPiece --> norme, credit; noClient --> credit}
La seule clé est primaire et elle est composée de deux attributs primaires : {noClient*, noPiece*}. Les
attributs non primaires sont norme et credit. Cette relation est-elle en FN2 ? Elle ne l’est pas, car il
existe une DF, soit noClient --> credit, dont lʹattribut non primaire (credit) n’est pas en dépendance
totale sur la clé primaire. Par conséquent, noClient, noPiece =/=> norme, credit.
© A. Gamache 28
Chapitre 10 Théorie de la normalisation du schéma
r1 : noClient credit
Aubert A
Dumas B
Dussault A
Pageau C
Ce nouveau schéma permet maintenant d’inscrire une commande de pièce par un client, même si ce
dernier nʹa pas encore de cote de crédit. En revanche, il est toujours impossible d’inscrire une pièce
produite selon une norme donnée, si cette pièce nʹest pas commandée par un client. La relation en
FN2 a apporté une certaine correction, mais certaines anomalies persistent dans les relations.
© A. Gamache 29
Chapitre 10 Théorie de la normalisation du schéma
Lorsqu’un constructeur spécialisé embauche un ouvrier, son salaire est déterminé par la convention.
Les anomalies présentes sont associées à la présence de DF transitives dans la relation Constructeur.
La BD est constituée d’une seule relation :
Constructeur (societe*, metier, salaire)
F = {societe --> metier, salaire; metier --> salaire}
b) Dans une suppression : si la société Les Murs Inc dépose son bilan, la suppression du tuple la
décrivant fait perdre une information qui ne dépend pas de cette société, à savoir le salaire du plâtrier
qui est prévu par la convention des métiers.
c) Dans une modification : si la société CGE inc embauche dorénavant des menuisiers (en
remplacement des électriciens) au nouveau salaire de 43K$ conventionné par le nouveau décret
gouvernemental, ce changement entraînera une mise à jour du tuple concernant CGE inc. En
modifiant le salaire de 40K$ à 43K$ pour cette seule société, il y a apparition dʹune anomalie. Elle
invalide la DF qui sous-tend un seul salaire pour le métier dʹélectricien. L’anomalie s’explique par la
présence d’une DF transitive dans le schéma de la relation. Il suffira d’isoler une des deux DF
impliquées dans la transitivité pour corriger l’anomalie observée. En isolant la DF : metier --> salaire
dans une nouvelle relation, deux relations sont alors créées, et cela, sans perte d’information par
rapport à l’extension initiale de la relation Constructeur (théorème de Heath) :
© A. Gamache 30
Chapitre 10 Théorie de la normalisation du schéma
r2 : metier* salaire
plâtrier 45 K$
plombier 35K$
électricien 40 K$
menuisier 35 K$
r1 : societe* metier
PEG Inc. menuisier
Delna Ltée menuisier
Les murs XIC plâtrier
Eclair enr électricien
WC inc plombier
Beaux bois menuisier
CGE Inc. électricien
Lux inc. électricien
Figure 10.13
Les extensions des nouvelles relations sont obtenues par projection de la relation initiale sur
les nouveaux schémas. La transformation qui élimine la transitivité des DF est sans perte
d’information, car R1 ∩ R2 = metier et metier --> salaire dans R2. La condition étant
respectée, la décomposition est valide et aucune perte de données n’est possible.
Définition de la FN3
Une relation Rj est en FN3 si et seulement si les conditions suivantes sont vérifiées :
Il apparaît donc que le premier schéma Constructeur n’était pas en FN3, mais qu’après la
décomposition, les relations résultantes de la décomposition sont en FN3.
© A. Gamache 31
Chapitre 10 Théorie de la normalisation du schéma
Le schéma de la relation Vin a une extension en FN3, mais affiche encore des anomalies. Elle est en
FN3, car tous ses attributs non primaires (soit dans cet exemple region) sont en dépendance
fonctionnelle que sur une clé. Toutefois, il y a une DF entre un attribut primaire (soit pays) et un
attribut non clé (soit region) qui est à la source de quelques anomalies résiduelles.
Dans cet exemple, si le vignoble Chablis se retire des affaires, le tuple correspondant est supprimé et
comme il est le dernier de cette extension, il y a perte d’information, à savoir que l’est de la Californie
est une région productrice de vin. Cette anomalie est corrigée si la DF impliquant un attribut primaire
est isolée dans une nouvelle relation.
R1(region*, pays) R2(vignoble*, region)
avec F1= {region --> pays} avec F2 = {vignoble --> region }
La transformation est sans perte, puisque R1 ∩ R2 = region et que region --> pays est une DF
de R1.
© A. Gamache 32
Chapitre 10 Théorie de la normalisation du schéma
Il sʹagit dʹavoir les attributs primaires et non primaires qui dépendent que dʹune clé dans F. S’il existe
une transformation (CDF) en FN3 qui permet de conserver les DF et les données, il peut ne pas y avoir
de transformations d’une relation qui conduisent à la forme FNBC qui fournit un schéma qui soit à
la fois CDD et CDF.
Lʹalgorithme est aussi valable lorsque lʹon traite un ensemble de schémas S de la BD. La première
affectation est alors Résultat = S.
Schéma FNBC de la BD
Le cas d’un schéma de BD en FNBC correspond à celui d’une BD composée de schémas relationnels
en FNBC non redondants, c’est-à-dire qu’aucun schéma de relation ne correspond à une projection
d’un autre schéma de la BD. Si un schéma contient entièrement un autre schéma, ce dernier peut être
supprimé.
Une relation FNBC est en FN4 (cette 4e forme normale sera étudiée plus loin dans ce chapitre) si son
schéma relationnel a au moins une clé (primaire ou candidate) constituée d’un seul attribut. De même,
il a été démontré quʹune relation en FN3 est aussi en forme normale de jointure si cette première nʹa
que des clés formées avec un seul attribut.
© A. Gamache 33
Chapitre 10 Théorie de la normalisation du schéma
Anomalies observées
Les anomalies classiques sont encore présentes dans la relation Code :
a) la suppression du tuple <Ste-Foy, 8 des Mélèzes, U5E> fait perdre une information à savoir que le
code codePostel de Ste-Foy est le U5E;
b) l’ajout d’un code postal pour une nouvelle ville n’est pas possible sans qu’il y ait au moins une
adresse de définie avec ce nouveau code.
En transformant cette relation pour obtenir la forme FNBC, on a :
r1 : ville * codePostal*
Québec F2P
Valcartier S4T
Québec F2W
Ste-Foy U5E
r2 : adresse* codePostal
2 des Pins F2P
8 des Cèdres S4T
5 des Roses F2W
8 des Mélèzes U5E
Exemple : Transformez la relation R (A, B, C, D, E) avec F = {A −> B, C; C, D −> Ε; B −> D; E −> A}.
Quelles sont les clés de R ?
La clé est A, car la fermeture de A, soit A+ est A,B,C,D,E. La relation R est en FN2, mais pas en FN3 en
© A. Gamache 34
Chapitre 10 Théorie de la normalisation du schéma
raison des DF transitives. Il faut donc la décomposer. Avec la DF, B −> D création de R1 (B*, D), une
relation en FNBC et réduire la relation initiale du schéma à R2(A, B, C, E). Cette relation R2 a les DF
suivantes : {A −> B, C; E −−> A}.
Cette relation R2 n’est pas en FN3, car la clé de R2 est E, A −−> B, C et E −>A, c’est-à-dire que ce sont
des attributs non primaires qui dépendent de A qui n’est pas une clé. Il faut donc effectuer une
nouvelle transformation pour obtenir les relations :
R21 (E*, A) avec F21 = {E −> A}
R22 (A*, B, C) avec F22 = {A −> B, C}
Ces deux dernières relations sont alors en FNBC et les clés sont respectivement A et E. La recherche
des clés est un processus complexe, allégé par la sémantique qui vient suggérer des clés possibles.
Cette version minimale de lʹalgorithme ne résout pas tous les problèmes qui découlent de la présence
dʹattributs redondants, de DF redondantes et de clés équivalentes dans F et F+.
Considérons les exemples ci-dessous qui illustrent bien les cas particuliers qui faut traiter pour
préciser l’algorithme général de synthèse de Bernstein :
a) Présence d’un attribut étranger dans une DF
Soit R(A, B, C, G) si F = { A, B, C --> G ; A --> C}, alors on aurait par l’algorithme de synthèse deux
relations : R1 (A*, B*, C, G) et R2(A*, C). Avec R1 qui n’est pas en FN2.
La clé de R1 est (A, B) et non (A, B, C, G) puisque A, B --> C, G ∈ F+. La décomposition de R1 fournit
alors les relations FN2 : R11(A*, B*, G) et R12(A*, C). Lʹenlèvement de lʹattribut étranger (C) dans le
dépendance A, B, C --> G conduit directement par la synthèse à R(A*, B*, G).
© A. Gamache 35
Chapitre 10 Théorie de la normalisation du schéma
d) Soit F = { A, B --> D, P; C, D --> A, B; P, B --> I; I, A --> C; C --> P}, alors le schéma généré est le
suivant:
R1 (A, B, C*, D*, P) qui nʹest pas en FN2 puisque C --> P
R2(P*, B*, I)
R3( I*, A*, C)
R4(C*, P)
La présence dʹun attribut étranger dans un déterminé invalide la condition de la FN2 pour R1.
Ces problèmes sont gérés en tenant compte de la couverture minimale, de la suppression des DF et
des attributs redondants.
X A B
Y C
© A. Gamache 36
Chapitre 10 Théorie de la normalisation du schéma
X A B
Y C
Le graphe de la couverture est celui obtenu en enlevant les arcs qui peuvent être dérivés des autres.
X A B
Y C
c) Regroupez les dépendances restantes en partitions de même déterminant. Cette opération identifie
la base des relations en FN3;
p1 p2 p3 p4
X −> A Y −> C A −> Y C>B
Y −> X
d) Trouvez les clés équivalentes dans la fermeture de la couverture minimale (F2)+. Une clé
équivalente est définie entre deux ensembles dʹattributs X et Y dont les DF X −> Y et Y −> X sont dans
F. Elles correspondent aux arcs doublés dans le sens inverse. Les trois clés équivalentes dans F sont les
suivantes :
{ (X −> A et A −>X); (A −> Y et Y −> A); (X −> Y et Y −> X)}
e) Enlevez les dépendances fonctionnelles qui correspondent aux clés équivalentes explicitement
formulées dans F pour obtenir ainsi F3 représenté par le graphe suivant :
X A B
Y C
© A. Gamache 37
Chapitre 10 Théorie de la normalisation du schéma
X A B
Y C
Les relations obtenues sont en FNBC, car les attributs non primaires ne sont en dépendance
fonctionnelle que sur des clés. Mais comme X, Y et A sont des clés équivalentes, il est possible de
choisir qu’une seule clé parmi les trois disponibles et ainsi simplifier le schéma :
R1 (A*, C) R2 (C*, B)
© A. Gamache 38
Chapitre 10 Théorie de la normalisation du schéma
Ces deux relations en FN3 sont aussi, comme nous le verrons plus loin, en forme FN4. L’algorithme
proposé par Bernstein ne fournit pas à chaque fois un schéma de relations sans perte d’informations. Il
faut donc toujours tester les relations obtenues par synthèse, pour vérifier s’il y a conservation des
données (CDD).
Optimisation du schéma
La normalisation minimise la redondance et limite celle-ci aux seules clés (primaires et étrangères) qui
sont alors contrôlées par le SGBD. Dans certains cas, pour obtenir une performance élevée, il faudra
faire le processus inverse et créer volontairement la redondance pour éviter le calcul toujours lourd de
certaines jointures. Il peut en être même pour les contraintes d’intégrité qui peuvent être renforcées ou
désactivées, voire abandonnées pour des fins de performance. Cette dénormalisation ou insertion
volontaire de la duplication des attributs entraîne un travail supplémentaire lors des modifications et
des ajouts, car il faudra propager ces changements dans les relations où il y a les attributs redondants
touchés par la mise à jour ou l’ajout.
Atelier
noAt* 1,n
nomAt 1,1 FicheApprov
site
noFicheApprov*
dateFiche 1,n
LigneFiche
1,1
noLigne*
qte
1,1
1,n Piece
Stock noPi*
1,1
noStock* categorie
qteStock 1,n cout
Figure 10.16
Bien que l’optimiseur du SGBD soit de plus en plus intelligent, il ne peut pas remplacer le concepteur
de la BD qui est en mesure de mieux estimer les caractéristiques de l’exploitation des données par les
applications. Ces considérations influenceront les étapes de design et, par la suite façonneront les
réorganisations éventuelles du schéma. La dénormalisation est l’opération qui consiste à insérer dans
diverses relations certains attributs présents dans d’autres relations pour éviter le calcul de quelques
jointures. Cette opération sous-tend un contrôle supplémentaire par déclencheur afin que toute mise à
jour d’un tel attribut soit propagée aux autres relations ayant le même attribut. Elle dénormalise aussi
© A. Gamache 39
Chapitre 10 Théorie de la normalisation du schéma
le schéma relationnel.
Ce schéma est normalisé en FN3. Sa structure n’est cependant pas adaptée au calcul de toute requête.
Par exemple la requête simple ci-dessous exige un calcul lourd au regard du schéma nomalisé :
Quel est le nom des ateliers qui ont demandé un approvisionnement en pièces de la catégorie ʹfreinʹ ?
Pour calculer la réponse, il faut consulter quatre relations et faire trois jointures :
SELECT nomAt /*nom atelier */
FROM Atelier A, FicheApprov F, LigneFiche L, Piece P
WHERE [Link] = [Link] AND
[Link] = [Link] AND
[Link] = [Link] AND [Link] = 'frein';
Il faudra faire trois jointures parce que la réponse nécessite d’accéder à un attribut de la relation
Atelier et un autre de la relation Piece.
Projection sur nomAt
Jointure 3
Atelier Jointure 2
FicheApprov Jointure 1
LigneFiche Piece
Figure 10.18
Plan général dʹexécution
Le plan est établi par l’optimiseur, selon les règles suivantes :
a) Consultation des index dans un ordre donné;
b) Exploitation des cardinalités d’extension des tables visées (approche coût);
c) Exécution des jointures et des autres opérateurs selon des règles syntaxiques de l’optimiseur.
La présence de trois jointures ralentit sensiblement le calcul de la réponse à cette requête. La première
opération consiste à consulter la table Pièce pour trouver le numéro de la pièce libellée frein. Ensuite,
© A. Gamache 40
Chapitre 10 Théorie de la normalisation du schéma
ce numéro permet de faire une première jointure avec la table LigneFiche dont le résultat fournira le
numéro de fiche nécessaire pour la deuxième jointure. Ensuite, le résultat donnera le numéro d’atelier
pour faire la dernière jointure qui fournira le nom de l’atelier.
Plan détaillé du traitement de la requête
Tous les attributs qui font lʹobjet dʹune référence dans les conditions de jointure sont présumés
indexés. Le plan détaillé est le suivant :
a) Sélection de la relation Pièce pour y trouver le numéro (noPi) de la catégorie des freins.
b) Avec ce noPi, accès à l’index sur LigneFiche pour obtenir les numéros de fiche
d’approvisionnement concernant cette pièce (1ère jointure).
c) Avec les numéros de LigneFicheApprov, accès à l’index de FicheApprov pour en obtenir les
numéros des fiches qui ont demandé des freins;
d) Avec les tuples associés à chaque noFicheApprov, accès à l’index de Atelier en vue dʹobtenir le
numéro des ateliers (noAt) visés, pour accéder ensuite à la relation Atelier afin dʹavoir, par un des
accès avec le ROWID, le nom des ateliers demandés.
Cette nouvelle relation comporte une redondance pour l’attribut categorie, qui permet cependant une
simplification du plan d’exécution en supprimant la première jointure.
nomAt
Jointure 3
Jointure 2
noAt
Atelier
FicheApprov LigneFiche1
Figure 10.18
Requête modifiée :
SELECT nomAt
© A. Gamache 41
Chapitre 10 Théorie de la normalisation du schéma
b) La jointure 2 peut aussi être supprimée en dupliquant l’attribut noAt dans la relation LigneFiche1
pour obtenir une nouvelle relation :
LigneFiche2 (noLigne*, noPi*, noFicheApprov*, qte, categorie, noAt)
La requête ne comprend alors qu’une seule jointure, soit la 3. Deux attributs redondants sont
maintenant à contrôler par des déclencheurs appropriés (non désactivables) du type préinsertion :
SELECT nomAt
FROM Atelier, LigneFiche2 LF2
WHERE [Link] = [Link]
AND [Link] = 'frein';
c) La jointure 3 de la requête pourrait être également supprimée en dupliquant l’attribut nomAt dans
LigneFiche2 pour ainsi obtenir une nouvelle relation LigneFiche3.
LigneFiche3
(noLigne*,noPi*,noFicheApprov*,qte,categorie,noAt,nomAt)
En résumé, le processus de dénormalisation consiste à enrichir, dans une même cascade de jointures la
relation de base de la jointure la plus profonde, et cela avec les attributs de jointure utilisés pour
passer d’une relation à l’autre.
© A. Gamache 42
Chapitre 10 Théorie de la normalisation du schéma
la valeur correspondante à design, noAt et nomAt en effectuant les sélections ou les jointures
appropriées. Sans une indexation adéquate des relations, il est possible que les gains obtenus par la
dénormalisation soient éclipsés par ces opérations inhérentes à la mise à jour;
b) un espace disque supplémentaire est utilisé pour les données redondantes;
c) augmentation des risques d’incohérence si les déclencheurs ne sont pas utilisés correctement (effet
de cascade) pour assurer la propagation des ajouts et des mises à jour;
d) contrairement à la création des index, la dénormalisation d’une base de données n’est pas neutre
pour les applications qui exploitent les données de la base. Il faudra les modifier pour tenir compte
des nouveaux schémas et cela, afin qu’elles demeurent opérationnelles.
Si un employé e1 a deux enfants {f1 et f2} et un premier diplôme d1, alors l’employé e1 a
nécessairement ce même diplôme pour chaque enfant dont il est le parent. Cette information est
représentée par deux tuples :
r: Employe* Diplome* Enfant*
e1 d1 f2
© A. Gamache 43
Chapitre 10 Théorie de la normalisation du schéma
e1 d1 f1
Si l’employé e1 a un deuxième diplôme d2, alors il faut ajouter non pas un, mais deux nouveaux
tuples dans lʹextension de la relation. Avec ce nouveau diplôme d2, lʹemployé e1 demeure toujours
parent de f1 et f2 !
r: Employe* Diplome* Enfant*
e1 d1 f2
e1 d2 f1
e1 d2 f2
e1 d1 f1
Cette multiplication est une conséquence des DMV présentes dans la relation et dont les déterminés
sont indépendants. En effet, il n’y a pas de lien ou de dépendance entre les diplômes et les enfants.
Cette indépendance se traduit par la présence obligatoire de toutes les combinaisons diplome-enfant
dans lʹextension pour chaque employé concerné. Sʹil y avait une combinaison absente, alors les deux
attributs seraient dépendants, puisque quʹun diplôme serait inscrit, par exemple que pour un enfant.
Cette même relation peut être aussi formulée comme une relation NF2 (Non First Normal Form) dont
l’extension peut être représentée par les ensembles suivants :
Dans un modèle normalisé, l’extension est composée de valeurs atomiques et pour s’y conformer, il
doit y avoir multiplication des tuples dans la table. Le schéma R ci-dessous est en forme FNBC.
R : (employe*, diplome*, enfant*)
r: e1 d1 f1
e1 d1 f2
e1 d2 f1
e1 d2 f2
* e2 d2 f3
La clé est composée de trois attributs : employe*, diplome*, enfant*. Malgré sa forme FNBC, cette
relation contient encore des anomalies. Comment peut-elle être décomposée? Quels sont les critères
pour sa décomposition ?
© A. Gamache 44
Chapitre 10 Théorie de la normalisation du schéma
b) Si l’enfant unique de e2 décède (*), son tuple doit être supprimé. Est-il possible de conserver une
trace du diplôme d2 de e2 ? Autrement dit, est-il impossible de garder le tuple <e2, d2, null> dans r ?
c) L’employé e1 parent de f1 et titulaire du diplôme d1 doit être mis à jour pour que son diplôme
porte dorénavant le nom de f5. Une mise à jour limitée au premier tuple laisse la base dans un état
incohérent. En effet, e2 possède toujours le diplôme d1 pour le 3e tuple !
Ces anomalies découlent de la présence de la DMV dans R, soit employe ->> diplome | enfant, c’est-à-
dire du fait que les attributs diplome et enfant sont indépendants et se retrouvent dans la même
relation. Une DMV est une contrainte multiplicatrice de tuples : si un tuple doit être présent dans
l’extension r, d’autres doivent aussi obligatoirement l’être dans la même relation. Sur le plan
sémantique, ceci traduit la réalité suivante : un employé a les mêmes diplômes pour tous ses enfants !
Voici un autre exemple représentant lʹallocation des avions sur différents vols. La relation Service
(vol*, jour*, avion*) n’a pas de DF et présente une redondance qui est une source d’anomalies. Les
DMV non triviales sont les suivantes :
vol ->> jour et vol −>> avion et
Avec F qui est vide, il n’y a donc pas de DF dans la table Service.
Est-ce que ces DMV sont validées ou présentes dans la relation Service ? Si oui, il y a indépendance
entre les attributs jour et avion qui reflète la sémantique sous-jacente à savoir que le type d’avion
B747 dessert le vol 871 (Paris-Montréal), le lundi et le mardi. Forcément, puisque la DMV non triviale
est donnée valide, l’ajout d’un autre avion pour le vol 871 doit faire aussi le service les lundi et mardi.
Cette relation Service peut être divisée en deux autres relations pour diminuer la redondance. Par
contre, si les attributs jour et avion sont dépendants, la DMV ne serait pas alors validée, la division de
la relation ne pourrait pas se faire sans perdre de lʹinformation. Par exemple, lʹextension service(2) ci-
dessous a des dépendances multiples ou DMV triviales qui ne créent pas de problème à faire
cohabiter certains tuples dans la même relation.
service(2) : vol* jour* avion*
871 lundi B747
© A. Gamache 45
Chapitre 10 Théorie de la normalisation du schéma
Par contre, la première extension correspond à une relation service(1) qui peut être décomposée sur la
base d’une DMV valide et cela, pour aboutir à deux nouveaux fragments de table qui ne présentent
plus les anomalies observées dans la relation dʹorigine.
La relation Service(1) peut donc être divisée sans perte d’information (CDD) et cela, grâce à la DMV
présente.
Dépendance entre les attributs
Lorsque deux attributs sont dépendants, la DMV n’existe pas dans la relation ou en d’autres mots, elle
existe avec un contexte vide, i.e. sans aucun autre attribut dans la relation que les deux attributs
dépendants.
Exemple :
R1 : employe* diplôme* pgmEtudes*
jean DEC arts
jean DEC sciences po
jean bacc sciences po
louise DEC humanités
sylvie DEC sciences
pierre DEC santé
claire Bac santé
jean PhD droit <--
Est-ce que la DMV employe -->>diplome est vérifiée ou valide dans cette relation R1 ? En d’autres
mots, est-ce que les attributs diplome et pgmEtudes sont indépendants ? Si la DMV était confirmée,
alors l’indépendance des deux déterminés le serait aussi.
© A. Gamache 46
Chapitre 10 Théorie de la normalisation du schéma
Si Jean obtenait un PhD en droit, il n’aurait pas automatiquement aussi le DEC et le Bac en droit; un
seul tuple serait ajouté dans l’extension dans le cas où le diplôme est dépendant de pgmEtudes. Si tel
est le cas, la DMV employe -/->> diplome n’est pas validée dans R1 et cela, même s’il existe une
association (1-n) entre les attributs employe et diplome.
Notez cependant, qu’une DMV qui n’est pas validée dans R1, pourrait cependant apparaître dans une
autre relation (ou projection) et être vérifiée. Dans un tel cas, la DMV est dite imbriquée (latente) dans
la première, R1. Dans l’exemple R1 ci-dessus, la DMV n’est pas validée et par conséquent les attributs
diplome et pgmEtudes sont considérés dépendants.
Si l’ensemble des éléments de B ne varie pas quelle que soit la valeur de C (c ou c’), alors l’attribut B
est indépendant de C dans la relation R et la DMV est validée ou existe dans le contexte de cette
relation. On peut aussi de démontrer que la DMV A-->> B est validée dans R(A, B, C) si pour toute
paire de tuples dans r ayant la même valeur de A : (a, b, c) et (a, b’, c’), on a aussi (a, b’, c) et (a, b, c’) ∈
r.
A B C A B C
a b c a b’ c
a b’ c’ a b c’
Exemple : R: X Y Z
© A. Gamache 47
Chapitre 10 Théorie de la normalisation du schéma
1 1 1
1 2 2
1 2 1
1 1 2
2 2 2
Cette extension est présumée représenter tous les cas de figure admis pour cette relation, c’est-à-dire
que toutes les dépendances de cette relation sont vérifiées.
Test de validité dʹune DMV dans une relation
Pour toute paire de tuples de R partageant la même valeur d’attribut X, d’autres tuples sont
obligatoirement présents dans l’extension de R (X,Y, Z).
X, Y, Z
X -->> Y ? 1, 1, 1 ⇒ 1, 2, 1
1, 2, 2 1, 1, 2
1, 1, 1 ⇒ 1, 2, 1
1, 2, 1 1, 1, 1
X -->> Z ? 1, 1, 1 ⇒ 1, 1, 2
1, 2, 2 1, 2, 1
...
Cas particulier
Si dans R(A, B, C), A −> B et si pour toute paire (a,c) et (a, c’), on a
Ba,c = {b |(a, b, c) ∈r} = {b1} et si Ba, c’ = {b | (a, b, c’) ∈ r} = {b1} (avec un seul élément), alors A->> B
Donc si A -> B, alors A->> B et mais l’inverse nʹest pas vrai. De façon similaire avec A --> B, si pour
toute paire de tuples partageant la même valeur pour A, la relation suivante est vérifiée :
(a, b, c ) ( a, b, c)
si ∈r alors ∈r
(a, b, c’ ) (a, b, c’ )
La condition est toujours vérifiée avec une DF. Toute DF est donc une DMV.
© A. Gamache 48
Chapitre 10 Théorie de la normalisation du schéma
La décomposition par l’algorithme précédent fournira un schéma en FNBC, mais qui regroupe aussi
des attributs qui ne vont pas ensemble sur le plan de la sémantique (soit l’attribut acteur).
({cinema, adresse, tel}, {DF1}), ({cinema, titre, heure, prix}, {DF2}),
({titre, realisateur}, {DF3}), ({cinema, titre, heure, acteur}, {DMV})
La dernière relation ne peut pas être supprimée en raison de l’attribut acteur. Cette dernière relation
n’est pas naturelle parce que l’heure du cinéma serait associée (dépendant des) aux acteurs ! Or, la
décomposition peut être poursuivie en prenant en compte la DMV. Le schéma obtenu est CDD. La
forme normale FN4 a été formulée pour traiter ce type de problème.
({cinema, adresse, tel}, {DF1}),
({cinema, titre, heure, prix}, {DF2}),
({titre, realisateur}, {DF3}),
(titre, acteur}. {DMV}}, <----
({cinema, titre, heure}, {DF2}) --> relation redondante
© A. Gamache 49
Chapitre 10 Théorie de la normalisation du schéma
La dernière relation est supprimée parce qu’elle est une projection d’une autre relation du schéma
(voir l’algorithme de transformation en FNBC d’un schéma de BD) Le schéma final est donc :
({cinema, adresse, tel}, {DF1}), ({titre, realisateur}, {DF3}),
({cinema, titre, heure, prix}, {DF2}), (titre, acteur}. {DMV sans contexte}}
Le schéma obtenu est de type CDD et CDF. La DMV a donc permis de décomposer un schéma de BD
pour obtenir des relations qui regroupent correctement les attributs en accord avec la sémantique des
DF et les DMV. Doit-on conclure que la présence d’un attribut associé à plusieurs valeurs et que ce
dernier doit être isolé dans une relation ? Non, car il y a multiplication inutile des relations,
notamment lorsque la DMV hors contexte n’en est plus une lorsqu’elle est intégrée avec d’autres
attributs d’une même relation.
Décomposition de Fagin
La présence d’une DMV vérifiée dans une relation R sous-tend des anomalies. La relation R(A, B, C)
est donc décomposée dans le but de corriger certains de ces problèmes : si A->> B est validée dans R,
elle doit induire A->> C dans la même relation. La relation peut être alors divisée en deux nouvelles
relations dont la jointure est équivalente à la relation de départ.
R(A, B, C) = R1(A, B) |x| R2(A, C) et DMV : A->>C
Si R1 ∩R2 -->> R1 ou R1 ∩ R2 -->> R2, alors la décomposition est sans perte d’information (CDD) et la
jointure des deux nouveaux fragments de relation donne la même extension initiale, sans générer de
fausses informations (théorème de Fagin).
Exemple 1 :
employe : nom* diplome* enfant*
dion dec jean
blais dec lise
blais bac lise
dion bac jean
blais dec pierre
blais bac pierre
Pour toute paire de tuples partageant la même valeur de nom, l’ensemble des enfants est le même
quel que soit le contexte.
Enfant blais, bac = {lise, pierre} Enfant blais, dec = {lise, pierre}
Enfant dion, bac = {jean} Enfant dion, dec = {jean}
© A. Gamache 50
Chapitre 10 Théorie de la normalisation du schéma
L’ensemble de Enfant ne varie pas lorsque le diplôme (contexte) varie pour un même nom dʹemployé.
Cette propriété est vérifiée pour tous les employés. Il y a donc indépendance des attributs diplôme et
enfant traduisant lʹabsence de lien sémantique entre le diplôme et l’enfant. Le schéma peut donc est
divisé.
DMV triviale
Dans R(X, Y, Z) si X->> Y est une DMV validée, elle est dite triviale si et seulement si Y⊆ X ou
X ∪ Y = R ou si Z = ø, c’est-à-dire lorsqu’il n’y a pas de contexte à la DMV, X ->> Y. En
d’autres mots, puisque Y⊆ X, c’est-à-dire X −>Y, toute DMV qui découle de l’existence d’une
DF équivalente est triviale.
r: A B C
1 1 1
1 2 2
1 2 1
2 2 1
1 1 2
2 1 2
1 1 (1, 2) ∈ r
1 2 (1, 1) ∈ r
2 2 (2, 1) ∈ r
2 1 (2,2) ∈ r
La DMV est validée, mais triviale, car A∪B = R, le schéma de la relation. Une DMV sans contexte est
dite triviale et a aussi été appelée une dépendance multiple dans certaines méthodologies (voir
15
méthodologie EPAS ). Ces dépendances multiples ne génèrent pas de problèmes et sont les seules
dépendances multivaluées tolérables dans une relation dont le contexte se limite aux attributs de la
DMV triviale. Pour éviter les anomalies qui découlent de la présence de DMV non triviales, il suffit
donc d’isoler chaque DMV non triviale validée qui implique des attributs indépendants dans une
nouvelle relation (sans contexte). Ainsi la DMV est transformée en une dépendance multiple (ou
DMV triviale).
© A. Gamache 51
Chapitre 10 Théorie de la normalisation du schéma
© A. Gamache 52
Chapitre 10 Théorie de la normalisation du schéma
Si D est l’ensemble des DMV pour la relation R, la fermeture D+ est l’ensemble des DMV obtenues par
l’application récursive des propriétés ci-dessus. Les règles d’inférence essentielles et suffisantes sont la
complémentarité, la transitivité, l’augmentation et la coalescence. Ces règles sont complètes et valides,
c’est-à-dire que leur application récursive génère toutes les dépendances possibles de D+.
Exemple : R(A, B, C, G, H, I) D = {A ->> B; B ->> H, I; C, G ->> H}
Quelques DMV de D+
a) D |– A->> C, G, H, I;
A ->> B par hypothèse, A->> C, G, H, I par complémentarité;
S’il faut en ajouter 3 tuples dans la table, une DMV est présente dans la relation et il y a indépendance
entre les attributs profession et langue-p. La relation peut alors être décomposée ainsi :
R (employe, profession) et R1 (employe, langueParlee)
Dans le cas contraire, la DMV n’est pas valide dans R, alors les attributs sont dépendants ce qui
nécessite l’ajout d’un seul tuple sans la nécessité de diviser la relation.
© A. Gamache 53
Chapitre 10 Théorie de la normalisation du schéma
Donc si chaque déterminant des dépendances de D est une superclé, la relation R est en FN4, car les
DF implicites à la clé correspondent aussi à une DMV. La fermeture de D est alors obtenue par les
propriétés des DMV.
Exemple :
Est-ce que la relation R (A, B, C, D, E) avec l’ensemble D ci-dessous est en FN4 ?
D = {A−>B, C; C ->> D, E} et la clé est {A, D, E}
Puisque C->>D, E alors C->>A, B. En outre, puisque A->B alors A->>B.
Elle n’est pas en FN4, car la DMV C->>D, E n’est pas triviale dans R et C n’est pas une superclé. Après
décomposition de R sur la base du théorème de Fagin, les fragments suivants sont obtenus :
R1(C*, D*, E*) et R2 (A*, B, C) qui sont en FN4.
La décomposition est CDD et CDMV (conservation des dépendances multivaluées)
© A. Gamache 54
Chapitre 10 Théorie de la normalisation du schéma
Est-ce que par coalescence certaines nouvelles DMV peuvent être dérivées ?
Puisque les DF n’existent pas dans le schéma de la relation Res-Hum (F est vide) alors celle-ci n’est
pas en FN4, car les DMV valides de D présentes dans le schéma ne sont pas triviales.
Autre exemple
InscEtud (matric*, cours*, sports*)
Les DMV sont les suivantes : D = {matric -->> cours ; matric -->> sports}. Les DMV valides sont non-
triviales.
Alors pour être en FN4, il faudrait que :
matric -->matric; matric --> cours; et que matric --> sports
© A. Gamache 55
Chapitre 10 Théorie de la normalisation du schéma
En d’autres mots, la base de dépendances de X est la partition la plus fine des attributs de U : G(X) =
{P1, P2, P3, ... Pk | 1 <= k <= n}. Donc, X -->> Pj ∈ D+ ou X-->> Y ∈ D+ où Y est obtenu par la réunion
de quelques partitions Pj ∈ G(X).
Calcul de G(X)
Le calcul de la base de dépendances de X n’est pas linéaire, mais plutôt polynomial et proportionnel à
(n3 x m) où n est le nombre d’attributs dans U et m le nombre de dépendances dans D.
Algorithme :
a) À partir de l’ensemble des FD et DMV, convertissez les DF explicites en DMV par la propriété de
généralisation. Soit FD : X ->Y, la DF est alors convertie en X->>Y. L’ensemble D contient alors que
des DMV explicites;
b) Initialisez au départ l’ensemble S comme nul. S = φ;
c) Pour chaque DMV, Y ->> Z dans D si Y ⊆ X, ajoutez {Z-X} et {U-Z-X} dans l’ensemble S, car
1. Y ->> Z et X ->> Y (de Y ⊆ X) et par transitivité, on a que X ->> Z-X;
2. par complémentation, X ->> U - Z - X;
3. S = {(Z - X), (U - Z - X)};
d) Appliquez les règles de projectabilité (addition), tant que cela est possible, à toute paire de
partitions de S non disjointes .
Si Y et Z sont des déterminés de A dans S (i.e. X->>Y et X->> Z ) et X ∩ Ζ ≠ φ, alors (Y ∩ Z), (Y - Z)
et (Z- Y) dont les déterminés de X s’ajoutent à S et remplacent Y et Z, initialement dans S;
e) Pour chaque DMV, W -->> Z de D, recherchez Y dans l’ensemble S tel que W ∩ Y = φ, mais avec
Z ∩ Y ≠ φ et Y - Z ≠ φ. Pour cette DMV remplacez Y par Y - Z et par Y ∩ Z;
f) À la fin de l’algorithme, S∪X contient la base de dépendances pour X, soit G(X).
Exemple :
R (A, B, C, D, E) avec D = {A −> B, C et D, E ->>C}
Calculez la G(A), c’est-à-dire les DMV de D+ ayant A dans la partie gauche (fermeture de A par
rapport à D).
1. Conversion en DMV pour obtenir D = {A ->> B, C; D, E ->>C};
2. Au début, S = φ;
3. De A ->>B, C alors ajout de D, E dans S et B et C pour avoir S = {B, C; D, E};
4. ne s’applique pas;
5. Avec A ->> B, C pas de modification à S avec D, E ->>C de D, le {B, C} de S est remplacé par {C} et
{D, E} pour avoir alors S ={B; C; D, E};
© A. Gamache 56
Chapitre 10 Théorie de la normalisation du schéma
R1 : B E R2 : E: CL R3 : CL C R4 : C B
b0 e0 e0 cl0 cl0 c0 c0 b0
b1 e1 e0 cl1 cl1 c0 c0 b1
e1 cl0
Pour répondre à la question, quels sont les clients de chaque banque (CL, B), un utilisateur peut
formuler son traitement de différentes façons. Est-ce que ces requêtes sont équivalentes et correctes ?
Par exemple, voici trois requêtes possibles dont le schéma résultant contient les attributs de la
réponse. Ces trois requêtes prétendent donc répondre à la question (Rep) :
R1 |X| R2 = Rep(B, CL) ; b) R3 |X| R4 = Rep(B, CL); c) R2 |X| R3 |X| R4 = Rep(B, CL)
par a) : R1 |X| R2 B E CL
b0 e0 cl0
b0 e0 cl1
b1 e1 cl0
par b) : R3 |X| R4 CL C B
cl0 c0 b0
cl0 c0 b1
cl1 c0 b0
cl1 c0 b1
© A. Gamache 57
Chapitre 10 Théorie de la normalisation du schéma
e0 cl0 c0 b0
e0 cl1 c0 b0
e1 cl0 c0 b0
e0 cl0 c0 b1
e0 cl1 c0 b1
e1 cl0 c0 b1
de c) CL B
cl0 b0
cl1 b0
cl0 b1
cl1 b1
Il y a donc une différence entre ces résultats qui ont pourtant le même schéma de réponse. La réponse
est incohérente en raison d’une déficience du schéma initial de la BD. Sous certaines conditions, le
schéma d’une BD ne fournira que des résultats corrects et cohérents.
Cohérence par 2
Une basse de données est cohérente par 2 si pour toute paire de relations du schéma de la BD, Ri et Rj,
leur projection respective sur leurs attributs communs est égale. En d’autres mots, la jointure de ces
paires quelconques de relations doit être complète : Π Ri ∩ Rj (Ri) = ΠRi ∩ Rj (Rj) .
Si toutes les jointures sont complètes par 2, il y a aussi une jointure complète dʹordre n.
Exemple : Est-ce que le schéma R1(A, B, C), R2 (B, C, D) et R3 (A, D) de la base de données ci-dessous
est cohérente par 2 ?
© A. Gamache 58
Chapitre 10 Théorie de la normalisation du schéma
ΠA (R1) = ΠA (R3)
Donc, la jointure est complète et que la base de données est cohérente par 2.
Schéma cyclique
La présence d’un cycle dans certains schémas empêche la cohérence par 2 et n’implique pas la
cohérence de la BD.
Exemple :
R1(A, B, C) R2(B, C, D) R3(A, D) avec F = { B-> C; A -> B; B, C -> D; A -> D} les DF établies
entre les relations forment un cycle qui introduit une incohérence dans la base.
A, B, C
D, B, C
A, D
Le schéma peut être transformé et rendu acyclique par divers moyens :
a) Fusion de schémas relationnels;
b) Ajout de nouveaux attributs aux relations;
c) Supprimer certains attributs;
d) Ajouter de nouveaux schémas de relation.
© A. Gamache 59
Chapitre 10 Théorie de la normalisation du schéma
c) S’il ne reste plus aucune entrée, le schéma de base, excluant les sous-schémas, est dit acyclique,
sinon il y a un cycle lorsquʹil reste des entrées. Pour être complet, il faut aussi tester tous les sous-
schémas de la BD en les incluant dans le tableau.
Exemple :
Le schéma d’une base est le suivant : R1(A, B, C) R2(B, C, D) et R3(C, D, E).
Le tableau initial est donné ci-dessous.
A B C
B C D
C D E
B C D
(vide)
Le tableau est vide, le schéma est acyclique et si la cohérence par 2 est démontrée, alors il existe un
schéma de base de données correspondant qui est cohérent.
Exemple :
Est-ce que le schéma suivant est acyclique ? R1(A, B, C) R2(B, C, D) R3(A, D)
© A. Gamache 60
Chapitre 10 Théorie de la normalisation du schéma
une base de données. La dépendance mutuelle (DMUT) est une de ces dépendances qui traduit une
contrainte complexe permettant la décomposition dʹune relation. La dépendance mutuelle permet de
décomposer une relation autrement indécomposable sur la base des DF et des DMV.
Ainsi : si les tuples (r1, p1, s1) et (r1, p2, s2) sont valides et présents dans l’extension de Represente,
alors les tuples (r1, p1, s2) et (r1, p2, s3) ne le sont pas en présence des deux premiers. En effet, ils
violeraient la DF définie par la clé primaire. Donc le représentant r1 vend le produit p1 fabriqué par
une seule société, ne pouvant vendre p1 qui est aussi fabriqué par s2. Il doit choisir un fabriquant pour
le produit p1. Remarquez que la nature de l’exclusion dépend du temps puisque si le tuple (r1, p2, s2)
est inscrit en premier dans la base, il sera accepté, mais le tuple (r1, p1, s1) ne le sera pas. Cette table
© A. Gamache 61
Chapitre 10 Théorie de la normalisation du schéma
pourra être de nouveau décomposée en faisant intervenir une nouvelle dépendance dite mutuelle et
notée DMUT.
Cela se traduit par la présence obligatoire de ce tuple no4 dès l’instant que les tuples 1, 2 et 3 sont
ajoutés dans la table. Le lien fonctionnel fait entre le fournisseur, le matériau et le chantier ne tient pas
à l’implication logique, mais est imposé par une contrainte inhérente à la réalité modélisée par la table
FMC. On dit alors qu’il y a une dépendance mutuelle (DMUT) entre les attributs fournisseur et les
attributs matériau et chantier. Cette dépendance mutuelle est notée fournisseur <~>
materiau|chantier. Elle doit être vérifiée pour chaque tuple de l’extension de FMC.
Est-ce que la table FMC contenant un seul tuple valide la DMUT fournisseur <~> materiau, chantier ?
© A. Gamache 62
Chapitre 10 Théorie de la normalisation du schéma
Cette conclusion est surprenante, car BDS pourrait fournir le chantier Square-Les-Arts avec autres
choses que des tiges. Or, la conclusion de l’implication correspond au tuple présent dans la table et la
dépendance mutuelle (DMUT ) fournisseur <~> materiau | chantier est valide.
Pour les mêmes raisons que précédemment, la DMUT fournisseur <~> materiau | chantier est toujours
valide. Si dans cette table avec la DMUT il y a ajout du tuple (CPR, tige, Centre-de-Congrès), la DMUT
impose aussi l’ajout d’un autre tuple : (BDS, tige, Centre-de-Congrès). Examinons cet ajout obligatoire
de 2 tuples dans la tabale FMC. Supposons que dans FMC il y a ajout seulement du tuple (CPR, tige,
Centre-Les-Arts).
Est-ce que cette table valide la DMUT fournisseur <~> materiau | chantier?
Si CPR fournit des tiges
et des tiges sont utilisées par le Square-Les-Arts
et le Square-Les-Arts est approvisionné par BDS,
alors CPR fournit des tiges au chantier Square-Les-Arts.
Donc l’extension ci-dessus ne valide pas la DMUT car ce tuple est absent de l’extension. Pour ce faire,
il faudrait ajouter deux tuples.
Ajout du tuple no 4 :
FMC : fournisseur materiau chantier
BDS tige Square-Les-Arts 1
Par contre, après l’ajout du tuples no3, s’il y a aussi l’ajout obligatoire du tuple no 4, la DMUT est
respectée. La DMUT est donc valide dans l’extension ci-dessus.
© A. Gamache 63
Chapitre 10 Théorie de la normalisation du schéma
r1 p2 s1 2
r2 p4 s5 3
r1 p4 s3 4
r2 p4 s3 5
r2 p2 s1 6
Est-ce que la DMUT rep <~> pro|soc est présente dans cette table ?
© A. Gamache 64
Chapitre 10 Théorie de la normalisation du schéma
Ainsi, R1 |x| R2 donne une table dont le schéma est (rep, prod, soc) et dont les tuples sont
filtrés par la 3e jointure.
Théorème de décomposition de Nicolas
S’il y a une DMUT X<~> YΖ dans R(X, Y, Z) alors
R(X, Y, Z) = R1(X,Y) |x| R1(X,Z) |x|RF(Y, Z).
En d’autres mots, la relation R peut être décomposée en 3 fragments. Une telle décomposition est sans
perte d’information (CDD) et donne des fragments de relation présentant un minimum de
redondance des données. L’ordre de calcul des jointures est transparent et ne donne pas de perte
d’information dans le résultat final, pour autant que les trois jointures soient toujours effectuées en
série.
Propriétés de la DMUT
Voici quelques propriétés de la dépendance mutuelle :
a) Si X <~> Y alors Y <~>X (symétrie de l’opérateur).
b) X <~> Y|Ζ est triviale dans R(X, Y) lorsque Z = ø, c’est-à-dire sans contexte.
c) Si X ->> Y|Ζ alors X <~> Y|Ζ, mais pas l’inverse, car s’il y a aucune DMV, il peut y avoir une
DMUT.
© A. Gamache 65
Chapitre 10 Théorie de la normalisation du schéma
1 4 2
1 4 8
1 5 8
2 5 8
2 4 8
Les trois projections obtenues à partir de lʹextension r donnent par jointure la relation initiale :
r1 : A B r2 : A C r3 : B C
1 4 1 2 4 2
1 5 1 8 5 8
2 5 2 8 4 8
2 4
La 3e relation est une sorte de filtre pour supprimer les tuples de la jointure ( r1 |x| r2) dont la valeur
de B et C ne sont pas dans l’extension de r3. Si l’attribut est connu comme un déterminant d’une
DMUT, alors le nombre et la nature des jointures de la suite sans perte d’information ne sont pas
quelconque mais prédéterminés :
R1 |x| R2 |x| R3 ou R3 |x| R1 |x| R2
Toute jointure avec une suite partielle de ces fragments de relation génère des informations fausses.
L’intérêt premier de la DMUT consiste à démontrer la possibilité de raffiner encore la décomposition
et a pavé la voie à sa généralisation soit la dépendance de jointure (DJ).
Soit R(A1, A2 ... An) et {R1, R2, ... Rk}, une k-décomposition de R, telle que R = (R1 |x| R2 |x| ... Rk).
Une DJ notée *(R1, R2 ... Rk) est donc une façon de définir parmi toutes les relations possibles
(obtenues par des projections) l’ensemble des relations « légales » ou valides obtenues sans perte
d’information par rapport à R. La DJ définit donc une jointure complète.
Si R = ∪i Ri pour i = 1, k alors l’extension r(R) vérifie *(R1, R2, ... Rk) ssi R = R1 |x| R2 |x| ... Rk
Par exemple, pour i = 2 alors *(R1, R2) est une DJ si R1 ∩ R2 ->> R1 ou R1 ∩ R2 -->> R2 . Cette DJ est
en fait un cas particulier de DMV.
Exemple : R(X, Y, Z) = R1(X, Y) |x| R2 (X, Z), une 2-décomposition de R. La DJ *(R1, R2) est valide si
© A. Gamache 66
Chapitre 10 Théorie de la normalisation du schéma
La décomposition est possible et cela sans perte d’information, en raison de la présence d’une
dépendance de jointure (DJ).
(relation initiale)
Dans ce cas, k = 3, il y a une DJ qui justifie la 3-décomposition. Donc R(A, B, C) = R1(A, B) |x| R2(A,C)
|x| R3(B,C).
Dépendance de clé
Cette dépendance de clé existe lorsque R(A, B, C, D) avec A − > B, C, D et B −> A, C, D (clés), i.e. ∀ les
dépendances ont une clé comme déterminant: DF et DMUT avec A <~> D | C et DJ avec *{AB, AD,
BC}. Cette décomposition donne des relations normales non décomposables. C’est en quelque sorte la
forme canonique de la BD.
Ordre de jointure des relations dʹune DJ
Dans une DJ, lʹordre de jointure des fragments nʹa pas dʹimportance, dans la mesure où ils
interviennent tous dans le calcul.
Suite de jointures no 1 :
R[A, B] |x| R[A, D] |x| R[B, C] = R(A, B, C, D)
© A. Gamache 67
Chapitre 10 Théorie de la normalisation du schéma
Généralisation de DMUT
La DJ est une généralisation des diverses dépendances DMV, DMUT et des autres dépendances
supérieures. Or, une k-décomposition est différente selon la valeur de k.
k = 2 alors dépendance de jointure ==> présence de DMV
k = 3 alors dépendance de jointure ==> présence de DMUT
...
k= k dépendance de jointure ==> présence d’une dépendance d’ordre supérieur.
Dans le cas affirmatif, la relation initiale R demeure inchangée et elle est en FN5.
© A. Gamache 68
Chapitre 10 Théorie de la normalisation du schéma
TDJ : A1 A2 A3 ... An
R1 b11 b12 b13 ... b1n
R2 b21 b22 b23 ... b2n
2) Les variables marquées sont par bi,j qui identifient initialement les cellules. Elles sont modifiées par
la suite de la façon suivante :
a- Pour chaque ligne Ri, chaque bij est remplacé par un marqueur aj (colonne) si Aj ∈ Ri pour chaque j
de 1 à n, sinon bij demeure inchangé ;
b- Pour chaque dépendance de F associée à R, Y −> A où Y ⊆ {A1, ..., An} et A∈{A1, ..., An}, si Ri[Y] =
Rj[Y] alors les symboles de Ri[A] = v1 et de Rj[A] = v2. Ces symboles sont par la suite traités de la
façon suivante :
• si l’un des deux symboles v1 ou v2 est une variable marquée alors le symbole est remplacé
par l’autre qui est un marqueur ;
ou
• Si v1 et v2 sont deux variables marquées, alors elles sont remplacées par la variable marquée
ayant l’indice de ligne le plus petit.
3) dès qu’une ligne est formée seulement avec des marqueurs, alors la dépendance de jointure DJ est
vérifiée.
La décomposition de R devient donc possible sans perte d’information.
Exemple :
R(A, B, C, D, E, F) et F= {A-> B; F-> E} et la DJ suivante à vérifier :
D : *((A, B, D, E), (A, C, D, F)), (B, C, E, F))
T
DJ : A1 A2 A3 A4 A5 A6
A B C D E F
R1 : ABDE a1 a2 b13 a4 a5 b16
R2 : ACDF a1 b22 a3 a4 b25 a6
R3 : BCEF b31 a2 a3 b34 a5 a6
© A. Gamache 69
Chapitre 10 Théorie de la normalisation du schéma
Avec A-> B
A B C D E F
R1 a1 a2 b13 a4 a5 b16
R2 a1 a2 a3 a4 b25 a6
R3 b31 a2 a3 b34 a5 a6
Avec F−> E
A B C D E F
R1 a1 a2 b13 a4 a5 b16
R2 a1 a2 a3 a4 a5 a6
R3** b31 a2 a3 b4 a5 a6
Lʹavant-dernière ligne est composée que de marqueurs. Cela indique que la DJ (hypothèse) est
vérifiée. De plus, comme aucun fragment Ri correspond à une superclé de R (la clé étant composée de
tous les attributs), cette relation R nʹest pas en FN5 et devra être décomposée conformément à la DJ
testée et vérifiée.
Exemple :
R(A, B, C, D) avec F= {A −> B, C, D; B −>A, C, D}. Est-ce que la DJ *((A, B), (A, D), (B, C)) est vérifiée
dans R ?
A B C D
R1(A, B) a1 a2 b13 b14
R2(A, D) a1 b22 a23 a4
R3(B, C) b11 a2 a3 b34
A -> B, C, D
(A, B) a1 a2 b13 a4
(A, D) a1 a2 b13 a4
(B, C) b11 a2 a3 b34
B -> A, C, D
A, B a1 a2 a3 a4 <---
A, D a1 a2 a3 a4
B, C a1 a2 a3 a4
Après le traitement de toutes les dépendances, la 1re ligne satisfait le test et donc la DJ en hypothèse
est vérifiée et la décomposition validée. La DJ affirme que lors de manipulations avec les relations, par
© A. Gamache 70
Chapitre 10 Théorie de la normalisation du schéma
exemple par des projections, toute relation intermédiaire n’est pas valide sans risquer d’engendrer
une incohérence sémantique lors de jointures impliquant les projections.
Voici un exemple d’incohérence dans une relation. Soit la relation R(A*, B*, C, D) avec la clé {A, B} de
ce schéma.
A* B* C D
1 1 1 1
2 1 2 2
2 2 3 3
3 2 3 4
4 3 4 4
Cette relation est en FNBC, mais elle a des anomalies résiduelles associées à la redondance. Supposons
qu’au cours de manipulations sur la BD il y ait projection de R en trois relations intermédiaires
(éventuellement des vues) : R1(A, B, C), R2(B, D) et R3 (A, D).
R1 A* B* C R2 B* D* R3 A* D*
1 1 1 1 1 1 1
2 1 2 1 2 2 2
2 2 3 2 3 2 3
3 2 3 2 4 3 4
4 3 4 3 4 4 4
Qu’arrive-t-il avec une jointure de R1 avec R2 faite à travers deux vues relationnelles ? Est-ce que le
résultat dont le schéma est identique à celui de la relation originale est correct ? Est-ce que l’extension
initiale est retrouvée ? Est-ce que la jointure est complète ?
R12: A B C D
1 1 1 1
2 1 2 1 *
1 1 1 2 *
2 1 2 2
2 2 3 3
© A. Gamache 71
Chapitre 10 Théorie de la normalisation du schéma
3 2 3 3 *
4 3 4 4
2 2 3 4 *
3 2 3 4
Il y a effectivement cohérence par 2 et la jointure est complète par 3. Toutefois, le schéma est cyclique
et, donc la base serait incohérente en lʹabsence dʹune dépendance de jointure (DJ). Le résultat de R12 a
le schéma de la relation initiale et pourrait laisser croire à un utilisateur que son extension représente
toute l’information correspondante dans la BD. Or, la jointure R12 donne une extension incluant de
mauvais tuples (*) et cette fausse information sera produite si une troisième jointure n’est pas
effectuée afin d’agir comme un filtre. Les tuples marqués par * ne sont pas valides dans l’extension
initiale et tout affichage de ce résultat pourrait fournir une information fausse aux utilisateurs. La
raison de cette incohérence repose sur la dépendance de jointure (DJ) présente dans R et, qui permet la
division de la relation en trois fragments et cela, sans perte d’information (CDD). Ces trois relations
sont alors essentielles dans la jointure complète afin de retrouver l’extension initiale.
Toute jointure partielle fournit un bon schéma mais avec une extension erronée. Toutefois, la même
relation peut être décomposée, au regard de la clé, de la façon suivante : *(ABC, ABD), car les DF: A, B
--> C; et A, B --> D sont vérifiées dans R. Dans ce cas particulier, la DJ correspond à une
décomposition en deux relations sans perte d’informations, puisque la condition de décomposition
sans perte dʹinformation est vérifiée.
Les seules DF sont celles sous-tendues par la clé {noCons, pathologie}. Pour répondre à des besoins
particuliers, les trois vues sont créées par des projections et cela seulement pour des fins
d’affichage.
© A. Gamache 72
Chapitre 10 Théorie de la normalisation du schéma
Cette division de la relation initiale Consultation se fait sans perte d’information et elle correspond
dans ce cas-ci, aux fragments obtenus suite à la division de la relation et cela grâce à la dépendance de
jointure. La cohérence par 2 est vérifiée pour cette base de données.
VR2 : pathologie* resultat*
P O
bronchite ++
bronchite --
ACV -
infarctus +
ACV +
Supposons que les jointures ci-dessous soient effectuées en cours d’exploitation afin de répondre à des
questions précises. Pour ce faire une application peut exploiter des vues existantes ou en définir. Par
exemple, la première jointure ne vérifie pas la condition nécessaire pour avoir une opération sans
perte d’information.
VR1 |x| VR2 noCons* pathologie* traitementPrimaire* resultat*
C P T O
100 bronchite pénicilline ++
200 bronchite antibiotique ++
100 bronchite pénicilline --
200 bronchite antibiotique --
200 ACV héparine -
300 ACV héparine -
400 infarctus héparine +
200 ACV héparine +
300 ACV héparine +
En dépit de la cohérence par 2, cette jointure (VR1 |x| VR2) est trompeuse même si le schéma
correspond à celui de la jointure complète; elle donne une extension avec quelques résultats faux.
© A. Gamache 73
Chapitre 10 Théorie de la normalisation du schéma
Toutefois, comme ces deux relations sont parmi celles incluses dans une dépendance de jointure, il
suffira de faire une 3e jointure avec VR3 pour retrouver l’extension intégrale. Ainsi, avec une sélection
des pathologies d’origine bronchique traitée à la pénicilline, le résultat affiché apparaît contradictoire,
tandis que la réalité représentées par les données ne reflète pas cette situation.
Résultat de la requête :
pathologie* résultat*
P O
bronchite ++ ** contradiction
bronchite -- **
Résultat surprenant qui est la manifestation dʹun cas anormal dans le design dʹun schéma. Que peut-
on conclure d’une telle réponse ?
Imaginez l’impact d’un tel résultat dans un autre contexte, soit celui du contrôle aérien. Une telle
réponse à la requête pour connaître la position de l’un des avions sous son contrôle qui est dans sa
phase finale d’atterrissage ! Le système pourrait lui signaler que l’avion est en descente finale, mais
tout en étant absent de lʹécran radar! La contradiction pourrait être lourde de conséquence.
Explication de lʹanomalie
Ce résultat surprenant découle du fait que la relation Consultation nʹa pas une dépendance de jointure
non triviale du type *((C, P, T); (P, O); (C, O)) et que, dans pareil cas, toute jointure de ces projections
ne fournit pas lʹextension de la relation dʹorigine, Consultation. Ainsi, toute exploitation des jointures
intermédiaires en mode recherche peut fournir des faussetés! En effet, ces faits faux résultent de
lʹabsence de la clé dans le schéma de chaque fragment. Or, ces fragments peuvent correspondre à des
vues autorisées à des moments différents par le DBA. En joignant seulement deux schémas, il est
possible dʹobtenir celui de la réponse recherchée mais son extension est fausse.
Une solution théorique à cette anomalie consiste donc à vérifier si les fragments qui résultent des
projections sont admissibles en vérifiant la présence d’une dépendance de jointure. Ainsi, si cette
dépendance de jointure est vérifiée, alors les vues relationnelles obtenues par décomposition pourront
être utilisées dans un calcul que si tous les fragments de la DJ interviennent dans celui-là. Une autre
solution consiste à interdire la création des vues et à autoriser (pour un SELECT avec jointure) que
celles préalablement définies dans le dictionnaire du système. Cʹest une solution contraignante, car le
DBA peut interdire aux utilisateurs la création ou lʹutilisation des vues, mais ne peut pas contrôler la
dépendance entre les vues autorisées. Dans une telle situation, le DBA verra à ce que la relation
© A. Gamache 74
Chapitre 10 Théorie de la normalisation du schéma
Consultation ne soit décomposée et à ne pas autoriser les vues formées par ces fragments de la DJ. Le
DBA pourrait autoriser que les vues dans lesquelles une superclé de la relation R se retrouve dans la
définition de la vue. Il faut aussi remarquer que le schéma d’origine comporte une clé complexe qui
est la source des anomalies observées.
Dans cette relation, A et B sont deux clés de R. La relation R(A, B, C, D) est donc en FN5, car elle
satisfait lʹune des conditions de cette forme normale.
Sommaire
La théorie de la normalisation souligne l’importance du processus de validation des schémas pour
appuyer la cohérence et la justesse du contenu de la base de données. Ce travail de validation permet
d’éviter les anomalies bien connues et de réduire la redondance aux seules clés primaires et
étrangères. La formulation des schémas en FN3 est la forme minimale recommandée pour
l’implantation d’une base de données. Tout concepteur doit être en mesure de vérifier la normalité des
tables exploitées par les applications.
Les travaux sur cette question de normalisation sont très nombreux et ont permis de décrire les
problématiques soulevées par les dépendances fonctionnelles, multivaluées, de jointure et d’inclusion.
Bien que la question de la normalisation ne soit plus nouvelle, le DBA doit en connaître les bases et les
© A. Gamache 75
Chapitre 10 Théorie de la normalisation du schéma
résultats pratiques notamment pour les trois premières formes normales. Au besoin, les algorithmes
de transformation des relations doivent être appliqués pour normaliser les schémas.
La recherche des formes FN4 et FN5 est un peu plus complexe, car les dépendances sous-jacentes sont
moins évidentes. Pour certaines BD spéciales dont les clés sont composées, les formes supérieures
s’imposent pour éviter des anomalies rares, mais bien réelles. Les algorithmes de recherche des DJ et
DMV facilitent la tâche à l’administrateur de la BD qui doit voir à la cohérence des schémas, mais
aussi à celle des données. En imposant des identifiants aux relations, il devient possible dʹavoir
facilement un schéma en FN5.
Exercices
1- Démontrez que {B, C--> D, E; A --> B; A, E, G --> H} |- A, C --> D, E. En d’autres mots, il faut dériver
la DF A,C-->D des trois dépendances qui composent F.
3- Est-ce que F= {A, B --> C; C --> A; C --> B; A, B, D --> E} est un ensemble redondant ? Il faut trouver
une DF qui enlevée de F ne change pas sa fermeture.
4- Trouvez toutes les clés de R(A, B, C, D) dont le F = {A, B -->C; D -->A; C -> D}. Il faut donc trouver
un ensemble d’attributs dont la fermeture donne le schéma de R.
5- Soit F = {E --> G; B, G, E-->D, H; A, B --> B; G --> D, E}. Vérifiez si les DF ci-dessous sont une
conséquence logique de F :
a) A, B, G --> E b) B, G --> D, B, E c) E --> D.
6- Trouvez une clé pour la relation R (A, B, C, D, E, G, H, I) avec lʹensemble F suivant : {E --> G, I; B, G,
E -->D, H; A, B --> B; G --> D, E}. A noter que le processus de recherche est plus long si la question est
de trouver toutes les clés de R. Il faut trouver un ensemble d’attributs X --> A, B, C, D, E, G, H, I . Pour
ce faire vous pouvez partir avec une DF et tenter d’enrichir le déterminant en utilisant les propriétés
des DF.
7- Trouver les superclés de V(G, H, J, K) dont le F ={G, H --> J; H, J --> K; J, K-->G; G, K --> H}
8- Démontrez par un exemple de relation concrète que les propositions suivantes sont fausses:
a) Si A --> B alors B --> A; b) Si A, B --> C et A --> C alors B --> C;
© A. Gamache 76
Chapitre 10 Théorie de la normalisation du schéma
9- En supposant que le schéma de R soit variable: R (A1, A2, A3, A4, ...An), trouvez en fonction de n,
le nombre de superclés possibles pour R dans les conditions suivantes :
a) La seule clé de R est A1
b) Les seules clés de R sont A1 et A2.
10- Un ensemble dʹattributs X est dit fermé par rapport à F si X+ = X. Avec la relation R(A, B, C) et un
ensemble F indéterminé de DF. Quelles sont les DF de F non triviales si tous les ensembles possibles
avec les quatre attributs de R sont fermés.
Rappel: Une clé de relation est un ensemble minimal dʹattributs qui détermine tous les attributs de la
relation dans laquelle cet ensemble agit comme une clé. Cʹest une autre façon dʹénoncer implicitement
certaines dépendances relatives à une clé.
1- Soit R (A, B, C, D) avec F = {A --> B; A --> C; A --> D}. Démontrez que lʹattribut A est une clé
candidate ?
Réponse : À partir des DF connues et par la propriété de réflexivité : A -> B; A -> D; A -> C, et A ->A
donc A est une clé. Une autre façon est de calculer la fermeture de l’attribut A. A+ = (A, B, C, D), soit
le schéma de la relation. A est donc une clé.
2- Soit R (A, B, C, D) F: {A --> B, A --> C, A --> D} Est-ce que R est en F N 3 ?
Réponse : Oui, car la clé A est transitivité et R est en FN2 et en FN3 puisque tous les attributs non
primaires dépendent que de la clé.
3- Soit la relation Production (noProd*, nomClient, dateLivraison, prix) avec F = {noProd -->
nomClient, noProd --> dateLivraison, prix}. Trouvez une clé et une superclé pour la relation
Production.
Réponse : La clé est noProd, car selon le F, il détermine tous les attributs.
La superclé: est (noProd, date) et dʹautres superclés obtenues par lʹajout dʹun attribut quelconque à la
clé.
4- Soit R (A, B) avec F = { A --> B; B --> A}. Est-ce que A et B sont des clés ?
© A. Gamache 77
Chapitre 10 Théorie de la normalisation du schéma
Réponse : A --> B et A --> A (réflexivité), donc A est une clé, car il détermine tous les attributs de R. De
plus, B --> A et B -->B donc B est aussi une clé. Il y a donc deux clés candidates qui sont équivalentes
parce que ce sont les mêmes attributs qui sont en cause.
Réponse : Si A --> B et B --> A sont les clés, donc B et A sont primaires et équivalentes; tous les
attributs ne dépendent alors que de clés (primaire ou candidate). Elle est donc en FNBC.
6- Soit R (A, B, C) avec F = { A --> B; B --> C; C --> A}. Est-ce que R est en FN2 ?
Réponse :
Les clés candidates sont A, B et C. Donc aucun attribut non primaire. Donc la relation est en FN2.
7- Soit la relation Elections pour représenter les résultats des élections de la dernière décennie:
Elections (date*, region*, depute, premierMin) avec F= { date --> premierMin + les DF de la clé} et
region -/-> depute; depute -/-> premierMin; region -/-> premierMin; premierMin -/-> depute. N.B.
le -/-> est la négation de la dépendance fonctionnelle. Est-ce que cette relation est en FNBC? Justifiez
votre réponse.
Réponse : Comme la clé est composée, les attributs non primaires sont depute et premierMin. Avec la
DF date --> premierMin, la relation nʹest pas en FN3 et donc pas en FNBC.
8- Soit R (A, B, C) avec F= { A, B --> C; C --> A}. Est-ce que (A, B) est une clé ?
Réponse : De F, on a que A, B --> C et par réflexivité , A, B --> A et A, B --> B donc (A, B) est une clé.
10- Est-ce que la relation R (A, B, C) avec F = { AB --> C; C --> A} est en FNBC?
11- R (A, B, C) avec F = { C --> A}. Est-ce que R est en FN3 ?
Réponse : La clé est {A, B, C} en raison des DF réflexives suivantes: A, B, C -> A; A, B , C -> B; A, B, C
-> C. Comme il nʹy a aucun attribut non primaire, R est en FN3.
12- Est-ce que R (A, B, C) avec F = { C -> A} est en FNBC ? La clé est (A, B, C).
Réponse : Non, car la DF C -> A avec l’attribut A qui est primaire dépend de C lequel nʹest pas une
clé.
13- Soit une relation J pour représenter la naissance des jumeaux : J (nas1, nas2, date) avec F = { nas1 ->
© A. Gamache 78
Chapitre 10 Théorie de la normalisation du schéma
nas2; nas2-> nas1; nas1 ->date}. Est-ce que la relation J est en FNBC ?
Réponse : Les clés candidates sont nas1 et nas2. La clé de choisie sera nas1. Les attributs
primaires,nas1 et nas2 et l’attribut non primaire date sont en dépendance fonctionnelle que sur des
clés. La relation J est donc en NBC.
14- Soit R (A, B, C, D) avec F = { A --> B; C --> D}. Si R est en FN3, la clé est-elle {A, B, C} ?
Réponse : Si la clé est {A, B, C}, alors le seul attribut non primaire est D qui doit dépendre que de la
clé. Or, C --> D, est une DF qui contredit lʹhypothèse. Donc, la clé nʹest pas {A, B, C}.
15- Soit R (A, B, C ) avec F = { A, B --> C; A, C --> B; B, C --> A}. Est-ce que A est une clé candidate ?
Quelle est la plus grande forme normale de R ?
Réponse : L’attribut A ne peut être une clé candidate, car la DF A->B,C n’est pas dans la fermeture de
F. Les clés candidates sont celles données dans F. Donc la relation R est en FNBC.
16- Soit R (A, B , C ) avec F = { A, B --> C; B--> C}. Est-ce que R est en FN3 ?
Réponse : La clé de R est A,B et le seul attribut non primaire est C. Puisque B -> C, il faut en conclure
que R n’est pas en FN2, et donc pas en FN3.
17- Soit R (A, B, C ) avec F ={ A, B --> C; A, C --> B}. Est-ce que A, B, C est une superclé ?
Réponse : De F, on a que (A, B) est une clé et donc que (A, B, C) est une superclé puisque cet
ensemble contient une clé.
18- Un jeu du type cognitif pour les enfants consiste à insérer dans les trous dʹune plaquette, des
pièces en forme de cercle et dont les surfaces et les textures sont celles illustrées ci-dessous. Il y a donc
autant de trous que de pièces.
2
3
5
1
6
4
Les pièces
La plaquette
Afin de représenter les placements possibles pour chaque pièce, on utilise la relation
PlacementPiece(rayon, texture, position) avec F = { position -> rayon; les DF de la clé}.
Servez-vous des informations obtenues en observant la plaquette du jeu qui donnent indirectement les
placements possibles au regard du rayon des trous et des pièces. Est-ce que cette relation
PlacementPiece est en FN3 ?
© A. Gamache 79
Chapitre 10 Théorie de la normalisation du schéma
Réponse : La clé de cette relation est composée des attributs {texture, position}. En effet, en observant
bien les contraintes physiques imposées par la plaquette et les caractéristiques des pièces, un
placement pour une pièce est complètement déterminé par sa position et sa texture. La clé est donc
{texture, position}. L’attribut texture est nécessaire dans la composition de la clé, puisquʹil y a deux
pièces de même surface qui peuvent être placées dans deux positions différentes. Le seul attribut non
primaire est le rayon. La dépendance {texture, position} --> rayon définit la clé et texture -/-> rayon ;
position --> rayon. La relation Placement n’est pas en FN3, car l’attribut non primaire rayon dépend
de l’attribut position qui n’est pas une clé.. Est-elle en FNBC ? Non, car elle n’est pas en FN3.
19- Soit R (A, B, C ) avec F = {A, B --> C; A, C --> B}. Est-ce que A, C est une clé candidate ?
Réponse : De F, on a A, C --> B. Par réflexivité, on a que les DF A, C -> A et A, C -> C. Donc la paire
{A, C} est une clé candidate.
20- Si R(A*, B*, C) en FN3, est-ce que B dépend que dʹune clé ?
Réponse : Par définition de la FN3, R ne contient aucun attribut non primaire en dépendance sur
autre chose qu’une clé. Par conséquent, A, B -> B et aucune autre DF avec B, car R ne serait pas en
FN3.
21- Est-ce que la relation R(A*, B, C) est en FNBC si F = {A, B -> C; A,C -> B ; A-> B, C}.
Réponse : Non, car A, B -> C où C est non primaire et dépend de (A, C) qui n’est pas clé.
22- Soit R (A, B, C, D) avec F = { A, B, C -> A; A, C -> B; B, C -> D ; B->C}. Est-ce que (A, B, C) est une
superclé ? Quelle est la plus grande forme normale de R?
Réponse : Selon F, (A, C) est une clé. En effet, A, C -> B et A, C-> D obtenue pseudo-transitivité et A,C
-> A et A,C -> C par réflexivité. Donc (A, B, C) contient la clé et de ce fait est une superclé. La relation
R n’est pas en FNBC, car l’attribut primaire C est déterminé par B qui n’est pas une clé.
23- Soit R (A) avec F = {A->A }. Est-ce que cette relation est en FNBC ?
Réponse : Oui, car le seul attribut primaire dépend que de la clé A. Elle est en FN3, puisqu’il n’y a pas
d’attributs non primaires.
24- R (A, B, C, D) avec F = { A --> B}. Est-ce que A est une clé?
Réponse : Non, car si A --> B, on a que A-> C et que la DF A -> D n’appartiennent pas à la fermeture
F+.
25- Soit R (A, B, C, D) avec F = { A --> B}. Est-ce que {A, C, D} est une superclé ?
Réponse : Si {A, C, D} est une clé, toutes les DF suivantes doivent exister dans F ou être dérivables :
C, D ->B; A, C, D-> C; A, C, D--> A; A, C, D-> D. Comme ce nʹest pas le cas pour le F donné, il faut en
conclure que A, C, D nʹest pas une superclé.
© A. Gamache 80
Chapitre 10 Théorie de la normalisation du schéma
27.2 Est-ce que C est une clé de R ? Si oui, alors C-> C->A ; C-> B ∈ F+
Réponse : C --> C réflexive;
C --> A est impossible à dériver;
C --> B
C --> D dans F
Donc C ne peut pas être une clé de R.
28- Soit R (A, B, C) avec F = { A --> B; B --> C; C --> A}. Est-ce que R est en FN3 ?
Réponse : Tous les attributs sont primaires par F ou par dérivation. Donc aucun attribut non primaire
n’est en dépendance fonctionnelle sur une clé R est en FN3.
© A. Gamache 81
Chapitre 10 Théorie de la normalisation du schéma
29- Soit la relation Usine (nom, region, equipement) avec F = {nom , region --> equipement;
equipement --> nom}. Est-ce que la relation Usine est en FN3 ?
Réponse : De F, on peut conclure que la clé est {nom, region}. Le seul attribut primaire ne dépend que
de la clé. Donc, elle est en FN3.
30- Soit la relation Usine (nomUs, regionUs, equipement, capital) avec les dépendances F = {nomUs ,
regionUs --> equipement, capital; equipement --> nomUs} . Est-ce que la relation Usine est en FNBC ?
Réponse : La clé est {nom, regionUs} et il y a un attribut primaire, soit nomUs qui dépend de
equipement lequel nʹest pas une clé. Donc R nʹest pas en FNBC.
31- Soit R (A, B, C) avec F = { A, B, C -> A; A, B, C -> B; A, B, C -> C}. Est-ce que {A, B} est une superclé
?
Réponse : Si {A, B} est une superclé, il faut que A ou B ou A, B soit une clé. Or, comme A, B -/-> C, et
A, B -/-> B et A, B -/-> A, alors il faut en conclure que A, B nʹest pas une clé (infirmation de la
dépendance fonctionnelle).
32- Est-ce que C est une clé candidate dans la relation R (A, B, C) avec lʹensemble F suivant : {AB->
C; C -> A} ?
Réponse : Non, car si C -> C par réflexivité, la DF C -> B est impossible à dériver à partir de F.
33. Soit la relation Marketing pour représenter les test de commercialisation effectués dans différentes
régions du Québec et à diverses périodes de lʹannée.
Marketing (produit*, region*, mois*, prix, score)
Les DF sont regroupées dans F = {produit, region, mois -> prix, score; produit --> prix}. Est-ce que
cette relation est en FN3 ?
Réponse : Non, puisquʹun attribut non primaire, soit prix, dépend de l’attribut produit qui nʹest pas
une clé. Est-elle en FNBC? Non, puisquʹelle nʹest pas en FN3.
34- Soit R (A, B, C, D) avec F = {A -> B; B -> C; C -> D}. Est-ce que A --> D ?
Réponse : De F, on a que A --> B; B --> C; par transitivité, on obtient la DF A --> C; et C --> D; alors A
--> D (par transitivité).
35- Soit R (A, B, C) avec F = { A --> B; B --> C; C --> A}. Est-ce que A est la seule clé candidate dans R ?
Réponse : De F, on a les DF suivantes dans F = {A --> B; B --> C}, donc par transitivité on obtient que A
--> C; B --> A; A--> A; et B --> B; donc B est aussi une clé candidate.
*** Quelques exercices non résolus***
© A. Gamache 82
Chapitre 10 Théorie de la normalisation du schéma
36- En supposant que lʹextension ci-dessous soit représentative de toutes les DF possibles dans R (A,
B, C, D), quelles sont les DF non triviales qui existent dans R ?
R: A B C D
1 1 1 2
3 2 3 1
2 2 3 1
1 1 2 3
Lorsquʹun étudiant se retire de tous ses cours, toutes les données le concernant doivent être
supprimées de la BD. Les domaines sont réputés atomiques.
Transformez la relation Acad pour obtenir des relations en FN3.
38- Voici une BD composée dʹune seule relation pour représenter le transport maritime :
TransMmar ( bat*, date*, cap, cargo, valeur). La sémantique des attributs est al suivante :
© A. Gamache 83
Chapitre 10 Théorie de la normalisation du schéma
© A. Gamache 84
Chapitre 10 Théorie de la normalisation du schéma
43- Soit F = {A -> C; B -> C; C, D -> E; C, D-> F; E, F -> A}. Est-ce que les dépendances de F sont
vérifiées directement ou non dans les tables de la base de données ci-dessous ?
A D E A B C E F B D F
0 0 0 0 3 0 0 0 3 0 0
1 2 0 1 4 4 2 0
44- Soit la relation R (A, B, C, D, E, J, K) avec F ={A, B -> C; A, C ->B; A, D ->E; B -> D; B, C -> A; E -> J}.
Quelles sont les décompositions de R, parmi les suivantes, qui conservent les dépendances ?
a) { (A, B); (B, C); (A, B, D, E); (E, K)}
b) { (A, B, C); (A, B, D, E, K)}
c) {(A, B, C); (A, C, D, E); (A, D, K)}
2- Obtenez un schéma de relations avec F = {X −> Y; X −> Z; Y −> Z} (Attention : présence d’une DF
redondante).
© A. Gamache 85
Chapitre 10 Théorie de la normalisation du schéma
2- Soit R(A, B, C, H, E)
avec D ={ (1) A -->> B, C; (2) H, E -->> C. Démontrez que D |= A, H -->> B, E.
Solution :
Par complémentarité de (1) on a : (3) A-->> H, E
Par transitivité de (3) et (2) : A-->> C – { E, H}. Donc (4) A-->> C.
Augmentation de (4) avec l’attribut H : (6) A, H -->> C, H
Par complémentarité de (6); A, H -->> B, E
CQFD
3- Soit R(A, B, C, H, E) avec D = { (1) A-->B, C ; (2) C --> H}. Démontrez que A-->> H, E ne peut pas être
valide dans R.
Réponse :
Il est possible de le démontrer soit par un contre-exemple, soit par dérivation.
- Contre-exemple :
Voici une instance de R dans laquelle les DF de D sont vérifiées :
R: A B C H E
a1 b2 c1 h3 e0
a1 b2 c1 d3 e2
a2 b2 c1 h3 e1
a3 b3 c2 h5 e2
a1 b2 c1 h3 e1
a2 b2 c1 h3 e1
Par contre, A-->> H, E n’est pas vérifiée, car (a1, h3, e2) et (a1, d3, e0) ne sont pas deux tuples dans
l’extension de R. Par conséquent, cette extension vérifie toutes les dépendances énoncées et invalide
celle recherchée.
4- Démontrez que dans R (A, B, C, H. E) avec D = {A-->> B, C ; H--> C} la DMV A --> C est aussi valide.
Solution :
Par dérivation : (1) A-->> B, C;
(2) H -->> C;
par la propriété de coalescence :
de (1) on a que A--> C s’il existe un déterminant qui détermine C.
Or, H --> C; Donc la DF est valide. De plus A-->> C.
CQFD.
© A. Gamache 86
Chapitre 10 Théorie de la normalisation du schéma
5- Soit R(A, B, C, H, E) avec D = {C-->> H, E; A --> B, C}. Décomposez s’il y a lieu la relation R pour
obtenir une base de données en FN4.
Solution :
R n’est pas en FN4 puisque la DMV C-->> H, E est valide et qu’elle n’est pas triviale. En Effet, l’union
du déterminé et du déterminant ne donne pas le schéma complet. De plus, le déterminé n’est pas un
sous-ensemble du déterminant.
La décomposition fournit donc deux nouvelles relations qui s’avèrent en FN4 :
R1(C, H, E) et R2(A, B, C) .
7- Donnez un contre-exemple pour illustrer que les DMV ci-dessous sont invalides dans la relation
R(A, B, C) :
7.1 Si D= {A -->> B, C} pour R alors A -->>B;
Solution :
R: A B C
a1 b1 c1
a1 b2 c2
On a alors que A -->> B, C dans R : car (a1, b2, c2) et (a1, b1, c1) sont des tuples de R. Par contre, A -/-
>>B, car (a1,b2, c1) et (a1, b1, c2) ne sont pas des tuples de cette extension.
7.2 Si D= {A -->> B} pour R alors A -->B;
Solution :
R: A B C
a1 b1 c1
a1 b2 c1
Dans cette extension, A-->> B, car (a1, b2, c1) et (a1, b1, c1) sont des tuples présents. Toutefois, la
dépendance fonctionnelle A-> B n’est pas validée.
© A. Gamache 87
Chapitre 10 Théorie de la normalisation du schéma
D’une DMV, on ne peut pas déduire la DF correspondante. Comme nous l’avons vu, d’une DF, il est
possible de déduire la DMV correspondante.
R: A B C
a1 b1 c1
a1 b1 c2
R: A B C S H E
:
1 2 5 7 2
1 3 6 2 3
2 3 6 9 11
Par la suite, la dépendance d’inclusion DIN = {R [A, B] ⊆ S [H, E] est ajoutée au schéma de cette base
de données. Au départ, la base est cohérente par rapport à F; suite à l’ajout de la DIN, la base de
données doit demeurer cohérente.
8.1 Quels sont les tuples à ajouter dans la base pour qu’elle soit cohérente ?
Réponse :
Pour que la cohérence soit vérifiée, il faut que la DIN soit validée. Il faudra donc ajouter les tuples (1,
2) et (1, 3) à l’extension S.
8.2 Quelle règle faudrait–il ajouter à R pour que la vérification de l’inclusion soit une procédure finie?
Réponse :
Il faut ajouter dans R la DF suivante : A--> B.
Références chapitre 10
© A. Gamache 88
Chapitre 10 Théorie de la normalisation du schéma
1CODD, E. F., Normalized Data Base Structure: A Brief Survey, Proceedings of 1971 SIGFIDET a
Workshop on Data Description, Access, and Control, CA, USA, 1971.
2 BEERI, C., BERNSTEIN, P. A., GOODMAN, N., A sophisticate’s introduction to database normalization
theory , Proceedings of International Conference on Very Large Databases, 1980, p. 126-136.
3HEATH, I. J.,Unacceptable File Operations in a Relational Database, Proceedings of the ACM SIGFIDET,
1971.
4 ARMSTRONG, W. W.,Dependency Structures of Database Relationships , Proceedings of the
International Federation of Information Processing Societies (IFIP), 1974, p. 580-583.
5 Ullman, J., Principles of Database and Knowledge Base Systems, Computer Science Press, 1988, p. 380.
6BEERI, C., BERNSTEIN, P.A., Computational Problems Related to the Design of Normal Form Relational
Schemas , ACM Transactions on Database System, v. 4, no 1, 1979, p. 30-59.
7NUMMENMAA, J., TANISCH, P., Yet Another Note on Minimal Covers , SIGMOD Record, v. 19, no 3,
1990, p.30.
8 MAIER, D., The Theory of Relational Databases, Computer Science Press, 1983.
9DIEDERICH, J., M., J., New methods and Fast Algorithms for Database Normalization , Transaction on
Databases, v. 13, no 3, Sept 1988, p. 339-365.
10MANNILA, H., RAIHA, K.-J.,The Design of Relational Databases, Addison-Wesley, 1992, ISBN 0-201-
56523-4.
11DUTKA, A. F., HANSON, H. H., Fundamentals of Data Normalization, Addison-Wesley, 1989, ISBN
201-06645-9.
12 GARDARIN, Georges, Les systèmes et leurs langages, Eyrolles, 1983.
13BERNSTEIN, P. A., Synthesizing Third Normal Form Relations FROM Functional Dependencies, ACM
Trans. on Database Systems, v. 1, no 4, 1976.
14SMINE, H., ORACLE, Architecture, administration et optimisation, Eyrolles, 1993, ISBN 2-212-08016-6,
284 p.
15 MOULIN, Bernard, Méthodologie EPAS, Département d’Informatique, Université Laval, 1990, p. 190.
16ABITEBOUL, Serge, HULL, Richard, VIANU, Victor, Foundations of Databases, Addison-Wesley,
1995, ISBN-0-201-53771-0.
17DATE C.J., FAGIN R., Simple Conditions for Guaranteeing Higher Normal Forms in Relational Databases,
ACM Transactions on Database v. 17, no 3, Sept 1992, pp. 465-476.
© A. Gamache 89