Aller au contenu

UGA - MIASHS - S7 - BDD - Pierre Blarre

Normalisation

Icône Présentation
1 / 1

La normalisation

La normalisation permet d’éviter les anomalies de mises à jour et les réponses erronées

Les outils de normalisation sont :

  • Les dépendances fonctionnelles
  • Les formes normales
  • Les décompositions des tables

Définition

Exemple

Exemple

La table Livres
Livres
numerotitreauteurisbndateAchatrayonnage
1 Le Petit Prince Antoine de Saint-Exupéry 978-2-01-000000-0 2020-07-29 A1
2 Le Petit Prince Antoine de Saint-Exupéry 978-2-01-000000-0 2020-07-29 A1
3 Les misérables Victor Hugo 978-2-01-000000-1 2018-06-21 A2
4 Le portrait de Dorian Gray Oscar Wilde 978-2-01-000000-2 2010-01-29 F3
5 Le portrait de Dorian Gray Oscar Wilde 978-2-01-000000-2 2010-01-29 F3
6 Dune Frank Herbert 978-2-01-000000-3 2015-12-12 B4

Problème : Lorsqu’un livre existe en plusieurs exemplaires, les informations titre, auteur, isbn sont dupliquées

Normalisation de la table Livres

  • On va créer une nouvelle table Ouvrages contenant les informations relatives aux livres
  • On va créer une nouvelle table Exemplaires contenant les informations relatives aux exemplaires
Ouvrages
isbntitreauteur
978-2-01-000000-0 Le Petit Prince Antoine de Saint-Exupéry
978-2-01-000000-1 Les misérables Victor Hugo
978-2-01-000000-2 Le portrait de Dorian Gray Oscar Wilde
978-2-01-000000-3 Dune Frank Herbert
Exemplaires
numeroisbndateAchatrayonnage
1 978-2-01-000000-0 2020-07-29 A1
2 978-2-01-000000-0 2020-07-29 A1
3 978-2-01-000000-1 2018-06-21 A2
4 978-2-01-000000-2 2010-01-29 F3
5 978-2-01-000000-2 2010-01-29 F3
6 978-2-01-000000-3 2015-12-12 B4

En créant une deuxième table et en utilisant l’ISBN comme clé étrangère dans la table Exemplaires, on a solutionné le problème de redondance !

Comment décomposer une table ?

Décomposition d'une table

  • Soit une table R possédant 3 attributs A, B et C

  • Il existe une dépendance fonctionnelle entre B et C (Si on connait B, alors on connait nécessairement C)

    • On doit donc extraire la colonne C de la table R pour éviter la redondance interne
    • La colonne B doit être présente dans les 2 tables pour pouvoir reconstruire l’information
  • On peut aussi remarquer dans cet exemple que :

    • B sera une clé étrangère dans la table R
    • B sera une clé primaire dans la table S

Il peut exister plusieurs dépendances fonctionnelles au sein d’une même table.
Il faudra alors décomposer autant de fois que nécessaire pour éviter la redondance.

Les formes normales

Nous allons illustrer les différentes formes normales par des exemples concrets, mais on peut toujours rapporter ces exemples à un schéma générique d’une relation R :

Relation R avec 6 attributs (a1 à a6). les trois premiers a1, a2, a3 formant le déterminant, et les trois derniers a4, a5, a6 les déterminés.

Relation R
a1a2a3a4a5a6

Les dépendances fonctionnelles (DF) de la relation R sont :

Relation générique

1ère forme normale (1FN ou 1NF)

Exemples de non-respect de la 1FN

Exemples de non-respect de la 1FN

Règle : tout attribut doit contenir une valeur atomique
Exemple de table non normalisée 1FN
Personnes
IDNomAdresse
1 Dupont Jean 12 rue de la Paix, Paris
2 Durand Paul 15 rue de la Liberté, Lyon
  • La colonne Nom n’est pas atomique (elle contient le prénom et le nom)
    • Il faudrait décomposer la colonne Nom en 2 colonnes Prénom et Nom
  • La colonne Adresse n’est pas atomique (elle contient le numéro, la rue, la ville et le code postal)
    • Il faudrait décomposer la colonne Adresse en colonnes Numéro, Rue, Ville et Code Postal

Exemples de non-respect de la 1FN

Règle : tous les attributs sont non répétitifs
Exemple de table non normalisée 1FN
Produits
IDProduitDescriptionFournisseurs
1 Téléviseur Sony, Sharp, LG
2 Chaîne Hifi Philips, Sony
  • La colonne Fournisseurs est répétitive (elle contient plusieurs valeurs)
    • Il faudrait décomposer la colonne Fournisseurs en une table Fournisseur

Exemples de non-respect de la 1FN

Règle : tous les attributs sont constants dans le temps
Exemple de table non normalisée 1FN
Personnes
IDNomPrénomAge
1 Dupont Jean 25
2 Durand Paul 30
  • La colonne Age n’est pas constante dans le temps
    • Il faudrait transformer la colonne Age en DateDeNaissance
    • On pourra alors toujours calculer l’age à partir de la date de naissance

2ème forme normale (2FN ou 2NF)

Autrement dit, tous les attributs non-identifiants sont totalement dépendants fonctionnellement de la totalité de l’identifiant (et donc de la clé primaire au niveau tabulaire)

Exemples de non-respect de la 2FN

Règle : Tout attribut non clé ne dépend pas d’une partie de clé
Exemple de table non normalisée 2FN
DetailsCommandes
numeroCommandenumeroProduitdescriptionProduit
1 1 Téléviseur
2 2 Chaîne Hifi
3 1 Téléviseur
  • Dans cet exemple :
    • L’identifiant de la table est (numeroCommande, numeroProduit)
    • On peut déduire qu’il existe une dépendance fonctionnelle entre numeroProduit et descriptionProduit
      • numeroProduit → descriptionProduit
    • La table n’est pas en 2FN car descriptionProduit dépend d’une partie de la clé

Schématique du non-respect de la 2FN

Non-respect de la 2FN

Si un attribut ne fait pas partie de la clé, il ne doit pas dépendre fonctionnellement d’une partie de la clé

3ème forme normale (3FN ou 3NF)

Exemples de non-respect de la 3FN

Exemple de table non normalisée 3FN
Commandes
numeroCommandenumeroClientnomClient
1 1 Dupont
2 1 Dupont
3 2 Durand
  • Dans cet exemple :
    • L’identifiant de la table est numeroCommande
    • On peut déduire qu’il existe une dépendance fonctionnelle entre numeroClient et nomClient
      • numeroClient → nomClient
    • La table n’est pas en 3FN car nomClient dépend d’un attribut non-clé ( numeroClient ne fait pas partie de la clé)

Schématique du non-respect de la 3FN

Non-respect de la 3FN

Si un attribut ne fait pas partie de la clé, il ne doit pas dépendre fonctionnellement d’un autre attribut non-clé

La troisième forme normale :

  • Retire les redondances dues aux dépendances transitives
  • Permet de ne pas perdre d’information
  • Permet de ne pas perdre des dépendances

La troisième forme normale est la plus utilisée du fait de son équilibre entre redondance et performance.

On pourra remarquer que pour certains systèmes (surtout distribués, e.g. pour certaines bases NoSQL), la redondance n’est pas un problème. Dans ces cas, on pourra se passer de la normalisation pour augmenter les performances.

Forme normale de Boyce-Codd (FNBC ou BCNF ou 3.5FN)

Le respect de la 3FN ne garantit pas totalement une absence de redondance des données. C’est pourquoi on doit parfois aller plus loin dans la normalisation avec la FNBC.

La BCNF est une forme normale plus stricte que la 3FN

Exemples de non-respect de la FNBC

Exemple de table non normalisée FNBC
Universite
enseignantIdmatiereIdsalleId
DURAND CHIMIE LABO CHIMIE 3
DUPONT ANGLAIS 6A
  • Dans cet exemple :
    • Si Durand arrête d’enseigner la Chimie, on supprime la ligne et on perd la relation Matière-Salle
    • On peut déduire qu’il existe une dépendance fonctionnelle entre enseignantId (attributs de la clé) et les 2 autres attributs (aussi attributs de la clé)

Pour régler ce problème, il faudrait une conception différente en plusieurs tables

La normalisation… Quand est-ce que l’on s’arrête ?

  • Il existe les 4, 5 et 6ème formes normales. Elles évitent principalement la redondance d’information et sont plus précises
  • En pratique, la 3FN est suffisante
  • En effet, les projections et les jointures sont coûteuses pour le système, ainsi une trop forte normalisation diminue fortement les performances

Exercice

Soit une relation R1 de schéma :

R1 (A, B, C, D, E, F)

Avec l’ensemble de dépendances suivant :

{
AB → C
AB → D
AB → E
AB → F
B → C
D → E
D → F
}
  1. Quelle est la couverture minimale de dépendances ? Déssinez son graphe.

  2. Quelles est la clé de R1 ?

  3. Quelle est la forme normale de R1 ?

  4. On décompose la relation R1 en R11 et R12 :

R11(A, B, D, E, F)

et

R12(B,C)

Quelles sont les formes normales des relations R11 et R12 ?

  1. Proposer une décomposition sans perte d’information de R11.

Conclusion

Lors de la conception d’une base de données, il est important de respecter les règles de normalisation pour éviter les problèmes de redondance et d’incohérence des données.

Voici quelques points clés à retenir sur la normalisation :

  • La normalisation est un processus de conception de base de données qui permet de réduire la redondance des données
  • La normalisation permet de garantir l’intégrité des données et d’éviter les anomalies
  • La normalisation permet de **structurer les données **de manière à ce qu’elles soient faciles à maintenir et à interroger
  • La normalisation est un processus itératif qui peut être long et complexe
  • La normalisation est un compromis entre la performance et la structure des données

On prendra en compte chaque attribut de chaque table pour déterminer les dépendances fonctionnelles et décomposer les tables en conséquence.

La page Wikipedia sur les formes normales est une bonne ressource pour approfondir vos connaissances sur le sujet.