Introduction à la création d'une base de données
Les serveurs de base de données à l'IUT de Haguenau
Créer une base de données
Créer une table
Définir des clés étrangères et leurs contraintes
Insérer des données
Modifier des données
Exporter ou importer la structure de la base et ses données
Supprimer des données
Chapitre 3
:
Créer un modèle conceptuel
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é.
La normalisation du schéma