La normalisation de base de données consiste à éliminer la redondance
et les dépendances incohérentes entre les tables. Bien que la normalisation soit le plus
souvent considérée comme le but de la modélisation de base de données, la dénormalisation,
c'est-à-dire la duplication délibérée de certaines données afin d'accélérer l'extraction des
données, peut s'avérer utile dans certains cas.
PowerAMC prend en charge la dénormalisation de différentes façons :
- Partitionnement
horizontal - divise une table en plusieurs tables contenant les mêmes
colonnes, mais moins de lignes.
- Partitionnement
vertical - divise une table en plusieurs tables contenant le même
nombre de lignes, mais moins de colonnes.
- Fusion de
tables - fusionne des tables afin d'éliminer la jointure entre
elles.
- Dénormalisation
de colonne - répète une colonne dans plusieurs tables afin d'éviter
d'avoir à créer des jointures entre les tables.
Le partitionnement horizontal et vertical implique des compromis en termes de
performances et de complexité. Bien qu'ils puissent améliorer les temps de réponse et
accélérer les opérations de sauvegarde et de reprise, ils requièrent des jointures et
unions supplémentaires afin d'extraire des données de plusieurs tables, des requêtes
plus complexes pour déterminer quelle table contient des données demandées, et des
métadonnées supplémentaires afin de décrire la table partitionnée. La dénormalisation de
colonne peut simplifier les requêtes mais requiert plus de maintenance et d'espace
disque dans la mesure où certaines données sont dupliquées.
Lorsque vous devez évaluer la pertinence d'une dénormalisation, vous
devez analyser vos besoins dans le domaine de l'accès aux données par les applications
dans votre environnement ainsi que leurs performances. Le plus souvent, d'éventuels
problèmes de performances peuvent être résolus par une politique d'indexation judicieuse
et l'emploi d'autres solutions que la dénormalisation. La dénormalisation est appropriée
dès lors que :
- Des requêtes critiques
reposent sur des données provenant de plusieurs tables.
- De nombreux calculs
doivent être effectués sur les colonnes avant que les requêtes ne reçoivent une
réponse.
- Les tables doivent être
accessibles de différentes façons à différents types d'utilisateurs
simultanément.
- Certaines colonnes sont
interrogées très fréquemment.