Qu'est-ce que Normalisation ?
Démarche de conception qui découpe les tables d'une base de données relationnelle en fonction des dépendances fonctionnelles entre colonnes, afin que le même fait ne soit pas enregistré à plusieurs endroits. Elle supprime les données en double et évite les anomalies de mise à jour, d'insertion et de suppression. Ses étapes comprennent les première à troisième formes normales et la forme normale de Boyce-Codd.
Nom japonais: 正規化
« Normalisation » apparaît dans 3 questions d'entraînement réparties sur 1 thèmes, dont Bases des bases de données.
Domaine: Bases des bases de données
Anomalies évitées par la normalisation
Dans une table non normalisée, le même fait est enregistré à de nombreuses reprises dans de nombreuses lignes. Si chaque ligne d'une table des employés contient aussi le nom du service, par exemple, renommer un service oblige à réécrire toutes les lignes des employés de ce service, et en oublier une seule rend le contenu incohérent (anomalie de mise à jour). On ne peut pas enregistrer un service qui n'a pas encore d'employé (anomalie d'insertion), et supprimer le dernier employé d'un service efface aussi les informations du service (anomalie de suppression). Placer les informations sur les services dans une table distincte enregistre chaque fait à un seul endroit et évite ces anomalies.
Questions fréquentes
Quelle est la différence entre la deuxième et la troisième forme normale ?
La deuxième forme normale n'a aucune colonne déterminée par une partie seulement de la clé primaire (pas de dépendance fonctionnelle partielle). La troisième forme normale n'a en plus aucune colonne déterminée par l'intermédiaire d'une colonne autre que la clé primaire (pas de dépendance fonctionnelle transitive). Une table dont la clé primaire ne compte qu'une colonne est automatiquement en deuxième forme normale si elle est en première forme normale.
La normalisation accélère-t-elle les recherches ?
Pas forcément. Le but de la normalisation est de supprimer les doublons et d'éviter les anomalies lors des mises à jour ; découper les tables implique davantage de jointures pour les recherches. Lorsque les performances de lecture sont importantes, on dénormalise parfois délibérément des tables.