Chapitre 5 : Bien concevoir une
base de données
Nous étudions dans ce chapitre
comment bien concevoir une BD. Pour ce faire, à partir d'un même
ensemble de connaissances ayant trait aux plages, nous proposons deux choix
d'organisation des informations sous forme relationnelle. Nous étudions
les qualités et les défauts de ces différents choix avant
de présenter les règles de "bonne" conception d'une BD relationnelle.
Premier choix :
BAINS (NN, NOM,
PRENOM, QUALITE, DATE, DUREE, NP, NOMP, TYPE, REGION, POLLUTION)
Deuxième choix :
NAGEUR (NN, NOM,
PRENOM, QUALITE)
PLAGE (NP, NOMP, TYPE, REGION, POLLUTION)
BAIGNADE (NN, NP, DATE, DUREE)
NN et NP
sont des numéros permettant de distinguer respectivement les nageurs
et les plages. NN est l'équivalent du numéro
de sécurité sociale.
Nous constatons sur cet exemple l'existence
de plusieurs façons de structurer un même ensemble d'informations.
Si nous privilégions instinctivement l'une des deux solutions proposées,
c'est qu'elle correspond davantage à notre perception du monde réel,
dans laquelle nous distinguons naturellement certaines entités : les personnes,
les plages, etc.
L'étape de conception est
primordiale pour le bon fonctionnement d'un SGBD. Elle
fait partie des quelques facteurs qui peuvent entraîner des incohérences
dans les réponses et une diminution inacceptable des performances du
système ; c'est pourquoi il est indispensable d'y attacher une attention
toute particulière.
Une solution "instinctive" n'est
pas suffisante pour concevoir le schéma d'une base importante. Il est
donc nécessaire d'isoler les critères de décision et de
formaliser des méthodes de conception des bases de données. Tel
est l'objet de ce chapitre.
Les problèmes les plus courants
rencontrés dans des bases de données mal conçues peuvent
être regroupés selon les critères suivants :
Redondance des données
Certains choix de conception entraînent
une répétition des données lors de leur insertion dans
la base. Cette redondance est souvent la cause d'anomalies provenant de la complexité
des insertions.
C'est, par exemple, le cas de la
première organisation proposée : dès qu'une personne
prend un nouveau bain, on doit non seulement répéter son numéro
qui, par hypothèse, suffit à le déterminer, mais aussi
toutes les informations liées à ce numéro (son nom, son
prénom, sa qualité). Au contraire, dans le deuxième choix,
seul le numéro indispensable à la distinction d'un nageur est
répété. La situation est identique pour les plages.
Incohérence en modification
La redondance de l'information
entraîne également des risques en cas de modification d'une donnée
répétée en différents endroits : on oublie fréquemment
de modifier toutes ses occurrences (en général par simple ignorance
des différentes places où figure l'information).
Par exemple, dans la première
organisation proposée, si une personne change de nom (cas fréquent
lors de mariages), il faut changer ce nom dans tous les tuples où apparaissent
ses coordonnées. Dans la deuxième organisation, un seul tuple
est modifié.
Anomalie d'insertion
Une mauvaise conception peut parfois
empêcher l'insertion d'un tuple, faute de connaître la valeur de
tous les attributs de la relation. Pour remédier à ce problème,
certains SGBD implantent une valeur non typée qui
signifie que la valeur d'un attribut d'un tuple est inconnue ou indéterminée.
Cette valeur (appelée usuellement NULL) indique
réellement une valeur inconnue et non une chaîne de caractères
vide ou un entier égal à zéro (analogie avec un pointeur
égal à NIL en Pascal).
Dans le premier schéma proposé,
insérer une nouvelle plage où personne ne s'est jamais baigné
est aussi impossible.
Anomalie de suppression
Enfin, une mauvaise conception
peut entraîner, lors de la suppression d'une information, la suppression
d'autres informations, sémantiquement distinctes, mais regroupées
au sein d'un même schéma.
C'est ce qui se produit dans notre
premier exemple, la suppression d'une plage entraîne automatiquement
la suppression de tous les nageurs ne s'étant baignés que sur
cette plage.
De nombreux travaux ont permis de mettre
au point une théorie de conception d'une base de données relationnelle
: la théorie de la normalisation, que nous allons maintenant développer.
V.1. La théorie de la
normalisation
Cette théorie est basée
sur les "dépendances fonctionnelles" (DF). Les dépendances
fonctionnelles traduisent des contraintes sur les données (par exemple,
on décide que deux individus différents peuvent avoir même
nom et prénom mais jamais le même numéro NN).
Ces contraintes sont représentatives d'une perception de la réalité
et imposent des limites à la base.
Les dépendances fonctionnelles
et des propriétés particulières, définissent une
suite de formes normales (FN). Elles permettent de décomposer
l'ensemble des informations en diverses relations. Chaque nouvelle forme normale
marque une étape supplémentaire de progression vers des relations
présentant de moins en moins de redondance. Ces étapes traduisent
une compréhension de plus en plus fine de la réalité.
Chacune de ces formes normales peut
être obtenue au moyen d'algorithmes de décomposition. Le point
de départ de ces algorithmes est la relation universelle, c'est-à-dire
la relation qui regroupe toutes les informations à stocker (dans notre
exemple, le premier schéma représente cette relation universelle)
; le but est d'obtenir, en sortie, une représentation canonique des données
présentant un minimum de redondance à l'intérieur de chaque
relation et un maximum d'indépendance entre les différentes relations
.
V.1.1. Les dépendances
fonctionnelles
Définition : dépendance
fonctionnelle
On dit qu'un attribut B dépend
fonctionnellement d'un attribut A si, étant donné une valeur
de A, il lui correspond une unique valeur de B (quel que soit l'instant
t considéré).
Notation : A ® B
Exemple :
La dépendance fonctionnelle
NN ® NOM signifie qu'à
un numéro est associé un nom unique (c'est, par exemple, le
cas du numéro de sécurité sociale). Remarquons qu'une
dépendance fonctionnelle n'est généralement pas symétrique,
c'est-à-dire que NN ® NOM
n'interdit pas que deux personnes distinctes (correspondant à deux
NN différents) portent le même nom.
Une dépendance fonctionnelle
est une propriété définie sur tous les tuples d'une relation
et pas seulement sur un tuple particulier. Elle traduit une certaine perception
de la réalité (par exemple, deux personnes distinctes peuvent porter
le même nom). Elle correspond à une contrainte qui doit être
vérifiée en permanence.
Les dépendances fonctionnelles
sont parties intégrantes du schéma d'une BD. Elles doivent donc
théoriquement être déclarées par l'administrateur
et contrôlées par le SGBD.
Exemple :
Nous définissons les propriétés
vérifiées par notre base de baignades. Deux personnes distinctes
peuvent, par exemple, porter le même nom, le même prénom,
et avoir la même qualité de nage. Deux numéros de nageur
différent les distinguent l'une de l'autre. Les dépendances fonctionnelles
que nous venons de décrire sont donc
NN ® NOM, NN ®
PRENOM, NN ® QUALITE
Nous pouvons supposer également
que deux plages distinctes ont toujours deux numéros différent
; ce qui implique :
NP ® NOMP
NP ® REGION
que la pollution et le type sont propres
à une plage :
NP ® POLLUTION
NP ® TYPE
et que deux plages d'une même
région ne peuvent porter le même nom :
(NOMP, REGION) ®
NP
Propriétés des dépendances
fonctionnelles
Les dépendances fonctionnelles
obéissent à certaines propriétés connues sous le
nom d'axiomes d'Armstrong.
Réflexivité :
Y Ì
X Þ X ® Y
Augmentation :
X ®
Y Þ XZ ® YZ
Transitivité :
X ®
Y et Y ® Z
Þ X ® Z
D'autres propriétés
se déduisent de ces axiomes :
Union :
X ®
Y et X ® Z
Þ X ® YZ
Pseudo-transitivité :
X ®
Y et YW ® Z
Þ XW ® Z
Décomposition :
X ®
Y et Z Ì Y
Þ X ® Z
L'intérêt de ces axiomes
et des propriétés déduites est de pouvoir construire, à
partir d'un premier ensemble de dépendances fonctionnelles, l'ensemble
de toutes les dépendances fonctionnelles qu'elles génèrent.
On parle alors de dépendance fonctionnelle élémentaire.
V.1.2. Dépendance fonctionnelle
élémentaire
Définition : dépendance
fonctionnelle élémentaire
Une dépendance fonctionnelle
X ® A est élémentaire si
- A n'est pas inclus dans X ;
- il n'existe pas X' inclus dans X tel que X' ® A.
Cette notion de dépendance fonctionnelle
élémentaire est primordiale car elle permet de construire une sorte
de famille génératrice minimale (appelée couverture minimale)
des dépendances fonctionnelles utiles pour structurer la base.
Exemple :
Deux plages d'une même région
ne peuvent pas porter le même nom (contrairement à deux plages
de régions différentes) ; le degré de pollution d'une plage
dépend exclusivement de la plage et non de la région. On a alors
(NOMP, REGION) ®
POLLUTION
mais on n'a aucunement
NOMP ® POLLUTION
ni
REGION ® POLLUTION
donc (NOMP, REGION)
® POLLUTION
est une dépendance fonctionnelle élémentaire.
V.1.3. Graphe des dépendances
fonctionnelles
C'est une représentation graphique
permettant de visualiser aisément toutes les dépendances fonctionnelles
et d'isoler les principales (i.e. les DF élémentaires).
Exemple :
Toutes les dépendances fonctionnelles
citées précédemment peuvent être représentées
de la façon suivante.
V.1.4. Fermeture transitive
Définition : fermeture transitive
La fermeture transitive d'un
ensemble de dépendances fonctionnelles est ce même ensemble enrichi
de toutes les dépendances fonctionnelles déduites par transitivité.
Exemple :
De l'exemple précédent
, on déduit par transitivité deux nouvelles dépendances
fonctionnelles :
(NOMP, REGION) ®
TYPE
(NOMP, REGION) ® POLLUTION
qui enrichit le graphe de la façon
suivante :
V.1.5. Couverture minimale
Définition : couverture
minimale
La couverture minimale d'un ensemble
de dépendances fonctionnelles est un sous ensemble minimum de dépendances
fonctionnelles élémentaires permettant de générer
toutes les autres.
Exemple :
L'ensemble des dépendances
fonctionnelles suivant :
(NN ® NOM, NN ®
PRENOM, NN ® QUALITE, NP ® NOMP, NP ® REGION, (NOMP, REGION)
® POLLUTION, (NOMP, REGION) ® NP)
est une couverture minimale de
l'ensemble des dépendances fonctionnelles.
Théorème :
Tout ensemble de dépendances
fonctionnelles admet une couverture minimale, en général non
unique.
Exemple :
L'ensemble des dépendances
fonctionnelles suivant :
(NN ® NOM, NN ®
PRENOM, NN ® QUALITE, NP ® NOMP, NP ® REGION, NP ® POLLUTION,
(NOMP, REGION) ® NP)
est une autre couverture minimale
de l'ensemble des dépendances fonctionnelles.
La recherche de la couverture minimale
d'un ensemble de dépendances fonctionnelles est un élément
essentiel du processus de normalisation, dont le but est de décomposer
une relation en plusieurs relations plus petites.
V.1.6. Clé d'une relation
Définition : clé
d'une relation
Soit R(A1,
A2, ..., AN) un schéma de
relation, soit F+ l'ensemble des dépendances fonctionnelles associées
à R, soit X un sous-ensemble de A1, A2,
..., AN, on dit que X est une clé de R si et seulement
si
- X ®A1,
A2, ..., AN ;
- il n'existe pas de sous ensemble
Y inclus dans X tel que Y ® A1,
A2, ..., AN.
Une clé d'une relation est un
ensemble minimum d'attributs qui détermine tous les autres.
Exemple :
NN est clé
de la relation PERSONNE (NN, NOM, PRENOM, QUALITE) ;
(NOMP, REGION)
est clé de la relation (NP, NOMP, REGION, POLLUTION,
TYPE).
Plusieurs clés peuvent être
candidates pour une même relation.
Exemple :
NP et (NOMP,
REGION) sont deux clés candidates à la relation (NP,
NOMP, REGION, POLLUTION, TYPE).
Dans l'écriture des schémas
de relations, on indique les clés en soulignant les attributs constitutifs.
Exemple :
PLAGE (NP,
NOMP, REGION, POLLUTION, TYPE)
V.1.7. Décomposition
des relations
La théorie de la normalisation
repose sur un principe de décomposition des relations.
Définition : décomposition
d'une relation
La décomposition d'un
schéma de relation R(A1, A2,
..., AN) est son remplacement par une collection de schémas
de relations (R1, R2, ..., Ri)
telle que :
SCHEMA(R) = SCHEMA(R1)
È
SCHEMA(R2)
È
... È SCHEMA (Ri)
Définition : décomposition
sans perte
Une décomposition d'une
relation R en N relations R1, R2,
..., RN est sans perte si et seulement si, pour toute
extension de R, on a :
R = R1 |x|
R2 |x| ... |x| RN
Théorème : décomposition
sans perte
Une décomposition en deux
relations est sans perte si l'attribut de jointure de la recomposition est
clé d'une au moins des deux relations.
Définition : décomposition
préservant les dépendances fonctionnelles
Une décomposition (R1,
R2, ..., RN) de R préserve
les dépendances fonctionnelles si la fermeture des dépendances
fonctionnelles de R est la même que celle de l'union des dépendances
fonctionnelles des relations R1, R2,
..., RN.
V.2. Les trois premières
formes normales
Nous définissons ici des règles
de décomposition la relation universelle sans perdre d'information en utilisant
les dépendances fonctionnelles. Le but est d'obtenir une représentation
du monde réel qui minimise la redondance et les risques d'anomalies lors
des mises à jour.
V.2.1. La première
forme normale 1FN
Définition : première
forme normale
Une relation est en première
forme normale si tout attribut est atomique.
Conséquences :
- un attribut représente
une donnée élémentaire du monde réel ;
- un attribut ne peut désigner,
ni une donnée composée d'entités de nature quelconque,
ni une liste de données de même nature.
La première forme normale correspond
à un souci de simplicité au niveau du langage de manipulation. Elle
a pour particularité d'éviter toute hiérarchie dans une relation
en interdisant les domaines composés de plusieurs valeurs.
Exemple :
Nous pourrions imaginer une relation
BAINS de schéma BAINS (NN, NP, DATE, DUREES)
où DUREES serait la liste des durées
des bains pris par le nageur NN sur la plage NP
à la date DATE. A lieu de cela, la première
forme normale nous oblige à décomposer cette relation en BAINS
(NN, NP, DATE, DUREE) ce qui induira autant de
tuples qu'il y a de baignade d'un même baigneur, sur la même plage,
le même jour ; avec (nn, np, date, duréei) pour le ième
bain de la journée.
V.2.2. La deuxième
forme normale 2FN
Définition : deuxième
forme normale
Une relation est en deuxième
forme normale si et seulement si :
- elle est en première
forme normale ;
- tout attribut n'appartenant pas à une clé ne dépend
pas que d'une partie de cette clé.
Exemple :
Considérons la relation
PLAGE de schéma suivant :
PLAGE (NOMP,
REGION, TYPE, POLLUTION)
où la clé est (NOMP,
REGION). Supposons que la pollution est bien dépendante de
la plage mais que le type est, quant à lui, dépendant de la
région. La deuxième forme normale nous impose de distinguer
deux relations R1 et R2 de schémas respectifs :
R1 (NOMP, REGION,
POLLUTION) ;
R2 (REGION, TYPE).
V.2.3. La troisième
forme normale 3FN
L'objectif de cette troisième
forme normale est l'élimination des redondances dûes aux dépendances
fonctionnelles déduites par transitivité.
Définition : troisième
forme normale
Une relation est en troisième
forme normale si :
- elle est en deuxième
forme normale ;
- tout attribut n'appartenant pas à une clé ne dépend
pas d'un attribut non clé.
Théorème :
Toute relation R admet au moins
une décomposition (R1, R2,
..., RN) en troisième forme normale telle que
:
- la décomposition conserve
les dépendances fonctionnelles ;
- la décomposition est sans perte.
Exemple :
Considérons maintenant
la relation PLAGE de schéma PLAGE (NP, REGION, TYPE, POLLUTION)
où la clé est NP. Supposons maintenant
comme dans l'exemple précédent que le type est dépendant
de la région. La troisième forme normale nous impose de distinguer
deux relations R1 et R2 de schémas respectifs :
R1 (NP,
REGION, POLLUTION) ;
R2 (REGION, TYPE).
V.2.4. Algorithme de décomposition
en troisième forme normale
Cet algorithme accepte en entrée
la relation universelle à décomposer et les dépendances fonctionnelles
de la relation.
Principe de l'algorithme :
1- à partir du graphe
G des dépendances fonctionnelles, CALCULER
une couverture minimale C ;
2- EDITER
l'ensemble des attributs isolés dans une même relation (tous
les attributs sont clés) ;
3- RECHERCHER
le plus grand ensemble X d'attributs qui détermine d'autres attributs
;
4- EDITER
la relation R(X, A1, ..., AN)
qui est en troisième forme normale ;
5- SUPPRIMER
toutes les dépendances fonctionnelles figurant dans R du graphe de
couverture minimale C ;
6- SUPPRIMER
les attributs isolés de C (c'est-à-dire les attributs non
sources ou cibles de dépendances fonctionnelles) ;
7- REPETER
l'opération de réduction du graphe C à partir de l'étape
3 jusqu'à ce que C soit vide.
Remarque : Cet algorithme fournit
bien une décomposition en 3FN qui préserve les DF mais qui n'est
pas nécessairement sans perte. Pour avoir une décomposition sans
perte, il suffit d'ajouter à la décomposition finale une relation
composée des attributs formant la clé de la relation universelle
(ou ajouter ces attributs à la relation créée à l'étape
2, si elle existe).
V.2.5. Insuffisance de la
troisième forme normale
Il s'agit ici de détecter les
boucles pouvant exister dans le graphe des dépendances fonctionnelles.
Supposons, par exemple une relation PLAGE indiquant le nom,
la région et le canton où se situent les plages. Supposons en outre
que deux plages d'une même région ne puissent pas porter le même
nom et qu'il n'existe pas deux cantons de même nom. La relation se note
:
PLAGE (NOMP,
REGION, CANTON)
et possède les dépendances
fonctionnelles suivantes :
(NOMP, REGION) ®
CANTON et CANTON ® REGION
Bien que la relation soit en 3ème
forme normale, il existe encore des redondances dues au fait qu'un attribut non
clé détermine une partie de la clé. Afin d'éliminer
ce type de redondance, BOYCE et CODD ont introduit une nouvelle forme normale
:
Définition : Forme Normale
de BOYCE-CODD (BCNF) :
Une relation est en BCNF
si et seulement si les seules dépendances fonctionnelles élémentaires
sont celles dans lesquelles une clé détermine un attribut. Pour
l'exemple précédent une décomposition en BCNF serait
:
PLAGE (NOMP,CANTON)
et GEO(CANTON,REGION)
Théorème de décomposition
en BCNF :
Toute relation admet au moins
une décomposition en BCNF qui est sans perte
; cependant, une telle décomposition ne préserve généralement
pas les dépendances fonctionnelles. Dans l'exemple précédent
on ne préserve pas la première DF.
V.3. La quatrième forme
normale
La notion de dépendance fonctionnelle
nous a conduit à décomposer les relations en troisième forme
normale et en forme normale de BOYCE CODD. Ceci est pourtant insuffisant pour
éliminer les redondances et les anomalies de mises à jour. Considérons,
par exemple, une relation PREFERENCES où nous indiquons,
pour chaque nageur, ses différents domiciles et les plages qu'il a l'habitude
de fréquenter :
PREFERENCES (NN,
VILLE, NP)
Il n'existe aucune dépendance
fonctionnelle entre les différents attributs, ce qui conduit à des
situations du type :
Dans cette relation, tout est clé
: elle est en 3ème forme normale. Pourtant, il subsiste de nombreuses
redondances. La relation n'est pas décomposable selon les critères
que nous venons d'évoquer, ce qui nous conduit à introduire la
notion de dépendance fonctionnelle multivaluée.
V.3.1. Les dépendances
multivaluées
Définition : Dépendance
Multivaluée
Soit R(A1,
A2, �,An) un schéma de relation.
Soient X et Y des sous-ensembles de A1, A2,
�,An. On dit que X ->-> Y (X multi-détermine Y,
ou il y a une dépendance multivaluée de Y sur X) si, étant
données des valeurs de X, il y a un ensemble de valeurs de Y associées
et cet ensemble est indépendant des autres attributs Z = R-X-Y de la
relation R.
( X ->-> Y) Û ( (xyz) et
(xy'z') Î R Þ (xy'z) et (xyz') Î R)
Propriété :
Les dépendances fonctionnelles
sont des cas particuliers de dépendances multivaluées :
(X®Y)
Û ( (xyz) et (xy'z') Î R Þ y = y')
De même que pour les dépendances
fonctionnelles, il existe des axiomes d'inférence de dépendances
multivaluées. Ce sont les suivants :
- Complémentation : (X
->-> Y) Þ (X ->-> R - X - Y)
- Augmentation : (X ->-> Y) et
(V Ì W) Þ (XW ->-> YV)
- Transitivité : (X ->->
Y) et (Y ->-> Z) Þ (X ->-> Z-Y)
Dont on peut déduire d'autres
règles telles l'union :
- Union : (X ->-> Y) et (Y ->->
Z) Þ (X ->-> YZ)
A partir de ces axiomes, on introduit
la notion de Dépendance Multivaluée Elémentaire :
Définition : Dépendance
Multivaluée Elémentaire
Une dépendance multivaluée
élémentaire X ->-> Y d'une relation R est une dépendance
multivaluée telle que :
- Y n'est pas vide et est disjoint
de X ;
- R ne contient pas une autre
Dépendance Multivaluée du type X' ->-> Y' telle que X'ÌX
et Y'ÌY.
Ainsi, dans l'exemple précédent
nous isolons les Dépendances Multivaluées Elémentaires suivantes
:
NN ->-> VILLE et
NN ->-> NP
V.3.2. Quatrième forme
normale
Définition : quatrième
forme normale
Une relation est en quatrième
forme normale si et seulement si, lorsqu'il existe une dépendance multivaluée
élémentaire, celle-ci est unique.
Propriété :
Toute relation a une décomposition
en quatrième forme normale qui est sans perte. Cette décomposition
n'est pas forcément unique.
Du fait qu'une dépendance fonctionnelle
est un cas particulier de dépendance multivaluée, nous pouvons déduire
qu'une relation en quatrième forme normale est en forme normale de BOYCE-CODD
et donc en troisième forme normale.
Sur l'exemple que nous venons de
voir (PREFERENCES), la clé est l'ensemble des trois
attributs et il existe deux dépendances multivaluées : la relation
n'est donc pas en quatrième forme normale. Une décomposition de
cette relation en quatrième forme normale donne deux relations PREF1
(NN, VILLE) et PREF2 (NN, NP)
V.4. La cinquième forme
normale
La quatrième forme normale n'est
pas encore suffisamment poussée pour éliminer tous les risques de
redondances et d'anomalies.
Exemple :
Nos précédents nageurs
sont amateurs de fruits de mer et en consomment couramment quand ils vont sur
leurs plages préférées. Voyons une extension de la relation
CONSOMMATION (NAGEUR, CRUSTACES, VILLE)
:
Nous constatons aisément que
cette relation présente de la redondance. Cette redondance provient d'une
contrainte d'intégrité implicite dans la conception du monde réel
:
"Tout nageur ayant consommé
un type de crustacés et ayant séjourné dans une ville
les cultivant a consommé de ce type de crustacés dans cette
ville."
Ainsi, le fait que Plouf ait mangé
du tourteau est répété à plusieurs reprises, etc.
Toutefois, cette relation est en
quatrième forme normale car il n'y a pas de dépendance multivaluée.
Pour nous en assurer, nous pouvons considérer les projections B1,
B2, B3 de la relation CONSOMMATION
sur les différents couples d'attributs C1(NAGEUR, CRUSTACES),
C2(NAGEUR, VILLE) et C3(CRUSTACES, VILLE),
et constater que la jointure de deux de ces relations ne redonne jamais la relation
CONSOMMATION. La relation n'est donc pas décomposable
en deux autres relations.
V.4.1. Les dépendances
de jointure
Le problème provient du fait
que nous avons jusqu'alors toujours essayé de décomposer une relation
en deux relations. Comme nous allons le montrer ci-dessous, certaines relations
sont décomposables, non pas en deux, mais en trois relations. C'est le
cas dans notre exemple en raison de la contrainte d'intégrité que
nous rappelons ci-dessous :
"Tout nageur ayant consommé
un type de crustacés et ayant séjourné dans une ville
les cultivant a consommé de ce type de crustacés dans cette
ville."
qui se note de façon plus formelle
:
(nageur, crustacés) Î
C1 et (nageur, ville) Î C2 et (crustacés, ville) Î C3
Þ (nageur, crustacés, ville) Î CONSOMMATION
Définition : dépendance
de jointure
Soit R(A1,
A2, �, An) un schéma de relation et X1,
X2, �, Xm des sous-ensembles de
(A1, A2, �, An). On dit qu'il existe
une dépendance de jointure *(X1, X2,
�,Xm) si R est la jointure de ses projections sur X1,
X2, �, Xm, c'est-à-dire si
:
R = p X1(R)
|x| p X2(R) |x| � |x| p Xm(R).
Par exemple, la relation CONSOMMATION
obéit à la dépendance de jointure suivante :
* (NAGEUR CRUSTACES,
NAGEUR VILLE, CRUSTACES VILLE)
Propriété :
Les dépendances multivaluées
sont des cas particuliers de dépendances de jointure :
(X®Y) Þ ( (xyz) et
(xy'z') Î R Þ y = y')
V.4.2. Cinquième forme
normale
La cinquième forme normale est
une généralisation de la quatrième forme normale qui nécessite
de prendre en compte les dépendances de jointure induites par la connaissance
des clés d'une relation.
Définition : Cinquième
Forme Normale
Une relation R est en cinquième
forme normale si et seulement si toute dépendance de jointure est impliquée
par des clés candidates de R.
V.5. Conclusions
Dans ce chapitre, nous avons présenté
la théorie de la normalisation des schémas relationnels. Cette normalisation
est très importante dans la pratique si l'on veut éviter de stocker
des informations redondantes. On considère, en général, que
la troisième forme normale est suffisante dans les cas courants.
Dépendant de la sémantique
des données, le processus de normalisation reste à la charge de
l'utilisateur du SGBD. Cette phase, délicate, est aujourd'hui largement
facilitée par des outils d'aide à la conception que proposent
différents constructeurs.
V.6. Références
[Codd 74] E.F. CODD,
"Recent Investigations in Relational Database Systems", IFIP Congrès
1974, North-Holland Ed., pp 1017-1021.
[Fagin 79] R. FAGIN,
"Normal Forms and Relational Database Operators", ACM SIGMOD 1979, Boston,
Juin 1979, pp 153-160.
[Nicolas 78] J.M. NICOLAS,
"Mutual Dependencies and Some Results on Undecomposable Relations", 5th
Very Large Data Bases, Berlin 1978, IEEE Ed., pp 360-367.
Chapitre 6