1

La normalisation du schéma : Support de cours

Support de cours : La normalisation du schéma

La conception du schéma conceptuel est un processus itératif. Une fois le premier jet effectué, il faut contrôler le travail effectué à l’aide de 3 règles de bonne conception que l’on appelle « forme normale »

Première forme normale

La première forme normale s'énonce ainsi :

Chaque attribut d’une entité ou d’une association doit stocker pour chaque occurence une seule valeur à un instant t et plusieurs attributs ne doivent pas stocker plusieurs valeurs d’un même type.

Une entité est en première forme normale si chaque attribut est en dépendance fonctionnelle avec l’identifiant

Voici deux exemples d'entités qui ne respectent pas la première forme normale :

Dans ces 2 exemples d’entités, la première forme normale n’est pas respectée à cause de l’attribut tel. Le créateur a voulu modéliser le fait qu’un client peut avoir 3 numéros de téléphones.

Dans l’entité Client_raté, le créateur a mis un tableau dans l’attribut tel. Pourtant la première forme normale indique qu’un attribut ne peut stocker qu’une seule valeur pour chaque occurence. Les tableaux sont donc à éviter.

Dans l’entité Client_raté_bis, le créateur s’est dit qu’il pouvait mettre 3 attributs tel. Cette façon de faire ne respecte pas non plus la première forme normale car, selon elle, plusieurs attributs ne doivent pas stocker des valeurs d’un même type (comprendre qui contiennent le même genre d'info).

Dans ce type de situation, la solution consiste à sortit l’attribut et le placer dans une nouvelle entité.

Dans exemple ci-dessous, l’attribut ville_cli ne respecte pas la première forme normale si pour chaque catégorie il n'existe pas une seule valeur de ville_cli. Car dans ce cas, ville_cli n'est pas en dépendance fonctionnelle avec l'identifiant id_cat.

Deuxième forme normale

La seconde forme normale s'énonse ainsi :

Chaque propriété d’une association dépend simultanément des identifiants des entités connectées à l’association

Exemple 1 de schéma qui ne respecte pas la seconde forme normale :

Dans cet exemple, le schéma décrit deux entités : des Clients et des catégories de client (professionnel, particulier...). Les cardinalités indiquent qu'un client peut avoir plusieurs catégories et que dans une catégorie il peut y avoir plusieurs clients. Le problème vient de l'attribut description_cat qui se trouve dans l'association Appartenir. La description d'une catégorie peut être en dépendance fonctionnelle uniquement avec l'id_cat : pour une catégorie il n'y a qu'une seule description. Ce n'est pas la peine de rajouter l'identifiant d'un client.

Exemple 2 un schéma qui illustre la seconde forme normale :

Ce schéma sert à représenter une situation ou des lecteurs doivent donner des notes à un article. La seconde forme normale dit que l'attribut note doit être en dépendance fonctionnelle avec les identifiants des entités qui l'entourent. Cela signifie que pour un couple id_article , id_lecteur, il ne peut y avoir qu'une seule note. 

Troisième forme normale

La troisième forme normale s'énonce ainsi :

Chaque attribut doit dépendre d’un identifiant dans le cas d’un type d’entité ou de plusieurs identifiants dans le cas d’une association et non d’un autre attribut voisin, lui-même dépendant d’un ou de plusieurs identifiants

Dans le schéma suivant les clients ont des catégories (particuliers, professionnels, associations). Chaque catégorie à un % de réduction différent sur ses achats

Exemple : Non-respect de la troisième forme normale

Dans cet exemple, si le poucentage de réduction dépend de la catégorie du client (tous les clients d'une même catégorie ont le même pourcentage de réduction), alors le schéma ne respecte pas la troisième forme normale. Dans ce cas, il faut faire le schéma suivant :

Exemple : Schéma normalisé

Cet exemple a été normalisé en plaçant le nom_catégorie et le pourcentage_reduction dans une nouvelle entité.



Cours validé