Dans une base de données relationnelle, une forme normale désigne un type de relation particulier entre les entités.
Le but essentiel de la normalisation est d'éviter les anomalies transactionnelles pouvant découler d'une mauvaise modélisation des données et ainsi éviter un certain nombre de problèmes potentiels tels que les anomalies de lecture, les anomalies d'écriture, la redondance des données et la contre performance.
La normalisation des modèles de données permet de vérifier la robustesse de leur conception pour améliorer la modélisation (et donc obtenir une meilleure représentation) et faciliter la mémorisation des données en évitant la redondance et les problèmes sous-jacents de mise à jour ou de cohérence. La normalisation s’applique à toutes les entités et aux relations porteuses de propriétés.
Les formes normales s'emboitent les unes dans les autres, tant et si bien que le respect d'une forme normale de niveau supérieur implique le respect des formes normales des niveaux inférieurs. Dans le modèle relationnel de type OLTP, il existe huit formes normales :
La forme normale vient après la simple validité d'un modèle relationnel, c'est-à-dire que les valeurs des différents attributs soient bien en dépendance fonctionnelle avec la clé primaire (complètement déterminés par la clé primaire).
En pratique, la première et la deuxième forme normale sont nécessaires pour avoir un modèle relationnel juste. Les formes normales supplémentaires ont leurs avantages et leurs inconvénients.
Les avantages sont :
Les inconvénients sont :
Pour des petites bases de données, se limiter à la troisième forme normale est généralement une des meilleures solutions d'un point de vue architecture de base de données, mais pour des bases de données plus importantes, cela n'est pas toujours le cas. Il s'agit de choisir l'équilibre entre deux options :
En d'autres mots, il ressort de ces avantages et inconvénients qu'un arbitrage devra être effectué sur le niveau de normalisation selon que les tables de la base de donnée sont plus sollicitées en lecture ou plus en écriture. Si une table (base de donnée) est plus intensivement écrite que lue il sera préférable de normaliser le plus possible. A contrario, si une table (base de donnée) est plus intensivement lue qu'écrite il pourra être judicieux d'être moins strict sur le respect de la normalisation pour permettre d'améliorer les performances d'accès aux données.
Il convient d'être prudent lorsqu'on renonce à la forme normale. Il n'est pas garanti qu'une forme dénormalisée améliore les temps d'accès. En effet, la redondance peut entrainer une explosion des volumes de données qui peuvent écrouler les performances ou saturer les disques durs.
La normalisation des modèles de données a été popularisée principalement par la méthode Merise. La principale limite de la normalisation est que les données doivent se trouver dans une même base de données (dans un seul schéma).