Normalisation du modèle relationnel

Un article de WikiTuto.

Jump to: navigation, search

Sommaire

Introduction

L'objectif de la normalisation est de construire un schéma de base de données cohérent.
Un mauvais schéma logique peut conduire à un certain nombre d'anomalies pendant la phase d'exploitation de la base de donnée. Nous allons voir ces anomalies dans une première partie.
Pour qu’un modèle relationnel soit normalisé, il faut qu’il respecte certaines contraintes appelées les formes normales. Les formes normales s’appuient sur les dépendances fonctionnelles entre attributs.

Rappels sur la notion de dépendance fonctionnelle

La construction du MCD mais également du modèle relationnel correspondant, repose presque entièrement sur le concept de dépendance fonctionnelle. C’est ce concept qui permet de passer d’un ensemble de propriétés non structuré à un modèle conceptuel des données formé d’entités et d’associations et au modèle relationnel correspondant.

Définition

On dit que b est en dépendance fonctionnelle (DF) de a si à une valeur quelconque de la propriété a, on ne peut faire correspondre qu’une seule valeur au plus de la propriété b.

On note a Image:Fleche.jpg b
(source)->(but)

Autrement dit, si on connaît la valeur de a, on peut en déduire une seule valeur de b.
Mais la réciproque n’est pas vrai (si on connaît b, on ne peut pas en déduire a).

  • Exemple :

Num client Image:Fleche.jpg Nom client

Il existe une DF entre num client et Nom client, car si on connaît une valeur de la propriété num client (ex : 4553), il ne peut lui correspondre qu’une seule valeur de la propriété nom (ex : Duval).

La réciproque est fausse :

Nom client Image:FlecheBarree.jpgNum client
n’est pas une DF

Si l’on connaît la valeur de la propriété Nom client, on ne peut pas en déduire la propriété Num client, car il peut y avoir des homonymes.

Terminologie

Si on a une dépendance fonctionnelle a Image:Fleche.jpg b, on peut employer les expressions suivantes de façon équivalente :
-Il y a une dépendance fonctionnelle de a vers b
- b est en dépendance fonctionnelle de a
- b dépend fonctionnellement de a
- a est la source et b est le but (ou la cible) de la dépendance fonctionnelle

DF à partir de propriétés concaténées

(partie gauche composée de plusieurs attributs)

Il peut exister des dépendances fonctionnelles à partir de propriétés concaténées, c'est-à-dire qui forment un tout indissociable, comme si elles étaient soudées.

On note par un + cette concaténation.

Exemple : Considérons une commande qui comporte plusieurs produits Num_Commande + Ref_Produit Image:Fleche.jpg quantité commandée

Si on n’a seulement le numéro de la commande, on ne peut pas en déduire la quantité commandée, car il faut aussi savoir de quel produit. De même, on ne peut pas savoir la quantité commandée d’un produit si on ne sait pas de quelle commande. Il faut bien connaître à la fois la commande et le produit (leurs identifiants respectifs) pour en déduire la quantité commandée.
Les dépendances fonctionnelles dont la source est formée de plusieurs propriétés doivent être élémentaires, c'est-à-dire ne pas être créées artificiellement.

Ex : Num Commande + Num Client date commande
n’est pas une DF élémentaire car on n’a pas besoin du numéro de client pour connaître la date de commande, il suffit de connaître le numéro de la commande. La propriété Num Client ne sert à rien dans cette DF.

Propriétés des dépendances fonctionnelles

Les dépendances fonctionnelles ont les propriétés suivantes :

Union

Si on a deux DF ayant la même source, on peut les rassembler en une seule, en séparant les cibles par une virgule. Si a Image:Hd1.jpg b et a Image:Hd1.jpg c

Ex : Référence Image:Hd1.jpg Désignation et Référence Image:Hd1.jpg Prix de vente unitaire

Alors par union on a : Référence Image:Hd1.jpg Désignation, Prix de vente unitaire

Lors du tracé du graphe des dépendances fonctionnelles, l’union permet de regrouper sur une seule ligne toutes les dépendances fonctionnelles ayant la même source.

Transitivité

Si a Image:Hd1.jpg b et b Image:Hd1.jpg c alors on a a Image:Hd1.jpg c

Ex : Num Médecin Image:Hd1.jpg Code Service et Code Service Image:Hd1.jpg Num Hopital

Alors on a Num Médecin Image:Hd1.jpg Num Hopital

Les DF qui peuvent être déduites par transitivité de deux autres DF (qui ne sont pas directes) doivent être éliminées car elles sont alors redondantes.
Il ne reste alors que les DF directes, c'est-à-dire celles qui ne peuvent pas être retrouvées par transitivité.

Image:Hd1.jpgAttention toutefois à la signification des dépendances. Une dépendance fonctionnelle qu'on peut retrouver par transitivité ne doit pas être supprimée si elle n'a pas le même sens que la transitivité des deux autres, car il y aurait perte d'information.

Voir aussi


Source S. Laporte

Boîte à outils
Annuaire gratuitCe site est listé dans la catégorie Informatique : Aide et astuces en informatique Annuaire