Article de reference

Normalisation des bases de données

La normalisation des bases de données est le processus de structuration d'une base de données relationnelle selon un ensemble de formes normales afin de réduire la redondance de...

base de données relationnelle selon un ensemble de formes normales afin de réduire la redondance des données et d'améliorer leur intégrité . Elle a été proposée pour la première fois par l'informaticien britannique Edgar F. Codd dans le cadre de son modèle relationnel .

La normalisation consiste à organiser les colonnes (attributs) et les tables (relations) d'une base de données afin de garantir que leurs dépendances soient correctement appliquées par les contraintes d'intégrité de la base. Elle s'effectue par l'application de règles formelles, soit par synthèse (création d'une nouvelle structure de base de données), soit par décomposition (amélioration d'une structure existante).

logique du premier ordre . SQL est un exemple de ce type de langage , bien que Codd le considérât comme présentant de graves défauts.

Les objectifs de la normalisation au-delà de la 1NF (première forme normale) ont été énoncés par Codd comme suit :

  1. Pour libérer l'ensemble des relations des dépendances indésirables d'insertion, de mise à jour et de suppression.
  2. Afin de réduire la nécessité de restructurer la collection de relations, à mesure que de nouveaux types de données sont introduits, et ainsi augmenter la durée de vie des programmes d'application.
  3. Pour rendre le modèle relationnel plus informatif pour les utilisateurs.
  4. Afin de rendre la collecte des relations neutre vis-à-vis des statistiques de requêtes, lesquelles sont susceptibles de changer au fil du temps.

— EF Codd, « Normalisation plus poussée du modèle relationnel de base de données »

Anomalie d'insertion . Tant que le nouveau membre du corps professoral, le Dr Newsome, n'aura pas été affecté à l'enseignement d'au moins un cours, ses informations ne pourront pas être enregistrées.
Anomalie de mise à jour : l’employé 519 apparaît avec des adresses différentes selon les enregistrements.
Une anomalie de suppression se produit . Toutes les informations concernant le Dr Giddens sont perdues s'il cesse temporairement d'être affecté à des cours.

Lorsqu'une tentative est faite pour modifier (mettre à jour, insérer ou supprimer) une relation, les effets secondaires indésirables suivants peuvent survenir dans les relations qui n'ont pas été suffisamment normalisées :

anomalie d'insertion
Il existe des cas où certaines informations ne peuvent être enregistrées. Par exemple, chaque enregistrement d'une relation « Personnel enseignant et ses cours » peut contenir un identifiant, un nom, une date d'embauche et un code de cours. Ainsi, les informations de tout membre du personnel enseignant dispensant au moins un cours peuvent être enregistrées, mais celles d'un nouveau membre du personnel enseignant n'ayant encore aucun cours à enseigner ne peuvent l'être, sauf en définissant le code de cours sur « null » .
Anomalie de mise à jour
Une même information peut figurer sur plusieurs lignes ; par conséquent, les mises à jour de la relation peuvent engendrer des incohérences logiques. Par exemple, chaque enregistrement de la relation « Compétences des employés » peut contenir un identifiant, une adresse et une compétence ; ainsi, une modification d'adresse pour un employé donné peut nécessiter d'être appliquée à plusieurs enregistrements (un par compétence). Si la mise à jour n'aboutit que partiellement – ​​l'adresse de l'employé est mise à jour sur certains enregistrements mais pas sur d'autres – la relation se retrouve dans un état incohérent. Concrètement, la relation fournit des réponses contradictoires quant à l'adresse de cet employé.
Anomalie de suppression
Dans certains cas, la suppression de données relatives à certains faits entraîne la suppression de données relatives à des faits totalement différents. La relation « Professeurs et leurs cours » décrite dans l'exemple précédent présente ce type d'anomalie : si un professeur cesse temporairement d'être affecté à des cours, le dernier enregistrement où il apparaît doit être supprimé, ce qui a pour effet de supprimer également le professeur, sauf si le champ « Code du cours » est défini sur null.

Minimiser les modifications lors de l'extension de la structure de la base de données

Une base de données entièrement normalisée peut être étendue pour prendre en charge de nouveaux types de données avec des modifications minimales de sa structure existante. Par conséquent, les applications interagissant avec la base de données sont peu affectées.

Les relations normalisées et les relations qui les unissent reflètent les concepts du monde réel et leurs interrelations.

Formes normales

Codd a introduit le concept de normalisation et ce que l'on appelle aujourd'hui la première forme normale (1NF) en 1970. Codd a ensuite défini la deuxième forme normale (2NF) et la troisième forme normale (3NF) en 1971, et Codd et Raymond F. Boyce ont défini la forme normale de Boyce-Codd (BCNF) en 1974.

Ronald Fagin a introduit la quatrième forme normale (4NF) en 1977 et la cinquième forme normale (5NF) en 1979. Christopher J. Date a introduit la sixième forme normale (6NF) en 2003.

De manière informelle, une relation de base de données relationnelle est souvent décrite comme « normalisée » si elle est conforme à la troisième forme normale. La plupart des relations 3NF sont exemptes d'anomalies d'insertion, de mise à jour et de suppression.

Les formes normales (de la moins normalisée à la plus normalisée) sont :

Forme non normalisée
  • 1NF : Première forme normale
  • 2NF : Deuxième forme normale
  • 3NF : Troisième forme normale
  • EKNF : Forme normale clé élémentaire
  • BCNF : Forme normale de Boyce-Codd
  • 4NF : Quatrième forme normale
  • ETNF : Forme normale du tuple essentiel
  • 5NF : Cinquième forme normale
  • DKNF : Forme normale de clé de domaine
  • 6NF : Sixième forme normale
  • Contrainte UNF 1NF 2NF 3NF EKNF BCNF 4NF ETNF 5NF DKNF 6NF
    Colonnes scalaires (les colonnes ne peuvent pas contenir de relations ou de valeurs composites)
    Chaque attribut non premier a une dépendance fonctionnelle complète sur chaque clé candidate (les attributs dépendent de l' intégralité de chaque clé)
    Chaque dépendance fonctionnelle non triviale commence soit par une super-clé , soit se termine par un attribut premier (les attributs ne dépendent que des clés candidates)
    Toute dépendance fonctionnelle non triviale commence soit par une superclé, soit se termine par un attribut premier élémentaire (une forme plus stricte de la 3NF).Toute dépendance multivaluée non triviale commence par une superclédépendance de jointure possède un composant superclé
    Chaque dépendance de jointure est triviale

    Exemple

    de base de données relationnelle selon une forme normale supérieure. Ce processus est progressif ; un niveau de normalisation supérieur ne peut être atteint que si les niveaux précédents ont été satisfaits.

    Cela signifie que, disposant de données sous forme non normalisée (la moins normalisée) et visant à atteindre le plus haut niveau de normalisation, la première étape consisterait à garantir la conformité à la première forme normale , la deuxième étape consisterait à garantir la conformité à la deuxième forme normale , et ainsi de suite dans l'ordre mentionné ci-dessus, jusqu'à ce que les données soient conformes à la sixième forme normale .

    Cependant, les formes normales au-delà de la 4NF présentent principalement un intérêt académique, car les problèmes qu'elles sont censées résoudre apparaissent rarement en pratique.

    Les données de l'exemple suivant ont été intentionnellement conçues pour contredire la plupart des formes normales. En pratique, il est souvent possible d'omettre certaines étapes de normalisation, car les données sont déjà normalisées dans une certaine mesure. Corriger une violation d'une forme normale corrige souvent également une violation d'une forme normale d'ordre supérieur. Dans l'exemple, une table a été sélectionnée pour la normalisation à chaque étape, ce qui signifie qu'à la fin, certaines tables pourraient ne pas être suffisamment normalisées.

    Données initiales

    Soit une table de base de données ayant la structure suivante, décrivant un livre :

    TitreAuteurNationalité de l'auteurFormatPrixSujetPagesÉpaisseurÉditeurPays de l'éditeurIdentifiant du genreNom du genre
    Conception et optimisation de bases de données MySQL pour débutantsChad RussellAméricainCouverture rigide49,99
    MySQL
    Base de données
    Conception
    520ÉpaisPresseUSA1Tutoriel

    Dans cet exemple, on suppose que chaque livre n'a qu'un seul auteur.

    Une table conforme au modèle relationnel possède une clé primaire qui identifie de manière unique chaque ligne. Dans notre exemple, la clé primaire est une clé composite { Titre, Format} , indiquée par le soulignement :

    TitreAuteurNationalité de l'auteurFormatPrixSujetPagesÉpaisseurÉditeurPays de l'éditeurIdentifiant du genreNom du genre
    Conception et optimisation de bases de données MySQL pour débutantsChad RussellAméricainCouverture rigide49,99
    MySQL
    Base de données
    Conception
    520ÉpaisPresseUSA1Tutoriel

    Satisfaire 1NF

    En première forme normale, chaque champ contient une seule valeur. Un champ ne peut pas contenir un ensemble de valeurs ni un enregistrement imbriqué. Le champ « Sujet » contient un ensemble de valeurs de sujet, ce qui signifie qu’il n’est pas conforme. Pour résoudre ce problème, les sujets sont extraits dans une table distincte nommée « Sujet » :

    Livre
    TitreAuteurNationalité de l'auteurFormatPrixPagesÉpaisseurÉditeurPays de l'éditeurIdentifiant du genreNom du genre
    Conception et optimisation de bases de données MySQL pour débutantsChad RussellAméricainCouverture rigide49,99520ÉpaisPresseUSA1Tutoriel
    Titre – Sujet
    TitreNom du sujet
    Conception et optimisation de bases de données MySQL pour débutantsMySQL
    Conception et optimisation de bases de données MySQL pour débutantsBase de données
    Conception et optimisation de bases de données MySQL pour débutantsConception

    Au lieu d'un seul tableau sous forme non normalisée , il y a maintenant deux tableaux conformes à la 1NF.

    Satisfaire 2NF

    Rappelons que la table Book ci-dessous possède une clé composite { Title, Format} , qui ne satisfait pas la 2NF si un sous-ensemble de cette clé est un déterminant. À ce stade de notre conception, la clé n'est pas encore finalisée comme clé primaire ; elle est donc appelée clé candidate . Considérons la table suivante :

    Livre
    TitreFormatAuteurNationalité de l'auteurPrixPagesÉpaisseurÉditeurPays de l'éditeurIdentifiant du genreNom du genre
    Conception et optimisation de bases de données MySQL pour débutantsCouverture rigideChad RussellAméricain49,99520ÉpaisPresseUSA1Tutoriel
    Conception et optimisation de bases de données MySQL pour débutantsLivre électroniqueChad RussellAméricain22,34520ÉpaisPresseUSA1Tutoriel
    Le modèle relationnel pour la gestion de bases de données : version 2Livre électroniqueEFCoddbritannique13,88538ÉpaisAddison-WesleyUSA2Science populaire
    Le modèle relationnel pour la gestion de bases de données : version 2Livre de pocheEFCoddbritannique39,99538ÉpaisAddison-WesleyUSA2Science populaire

    Tous les attributs qui ne font pas partie de la clé candidate dépendent de Title , mais seul Price dépend également de Format . Pour être conforme à la 2NF et supprimer les doublons, chaque attribut qui ne fait pas partie de la clé candidate doit dépendre de la clé candidate entière, et non d'une partie seulement.

    Pour normaliser ce tableau, faites de {Title} une clé candidate (simple) (la clé primaire) afin que chaque attribut non candidat dépende de la clé candidate entière, et déplacez Price dans un tableau séparé afin que sa dépendance à Format puisse être préservée :

    Livre
    TitreAuteurNationalité de l'auteurPagesÉpaisseurÉditeurPays de l'éditeurIdentifiant du genreNom du genre
    Conception et optimisation de bases de données MySQL pour débutantsChad RussellAméricain520ÉpaisPresseUSA1Tutoriel
    Le modèle relationnel pour la gestion de bases de données : version 2EFCoddbritannique538ÉpaisAddison-WesleyUSA2Science populaire
    Prix
    TitreFormatPrix
    Conception et optimisation de bases de données MySQL pour débutantsCouverture rigide49,99
    Conception et optimisation de bases de données MySQL pour débutantsLivre électronique22,34
    Le modèle relationnel pour la gestion de bases de données : version 2Livre électronique13,88
    Le modèle relationnel pour la gestion de bases de données : version 2Livre de poche39,99

    Désormais, les tables Book et Price sont toutes deux conformes à la 2NF .

    Satisfaction 3NF

    La table Livre présente toujours une dépendance fonctionnelle transitive ({Nationalité de l'auteur} dépend de {Auteur}, qui dépend de {Titre}). Des violations similaires existent pour l'éditeur ({Pays de l'éditeur} dépend de {Éditeur}, qui dépend de {Titre}) et pour le genre ({Nom du genre} dépend de {ID du genre}, qui dépend de {Titre}). Par conséquent, la table Livre n'est pas en 3NF. Pour résoudre ce problème, nous pouvons placer {Nationalité de l'auteur}, {Pays de l'éditeur} et {Nom du genre} dans leurs propres tables respectives, éliminant ainsi les dépendances fonctionnelles transitives.

    Livre
    TitreAuteurPagesÉpaisseurÉditeurIdentifiant du genre
    Conception et optimisation de bases de données MySQL pour débutantsChad Russell520ÉpaisPresse1
    Le modèle relationnel pour la gestion de bases de données : version 2EFCodd538ÉpaisAddison-Wesley2
    Prix
    TitreFormatPrix
    Conception et optimisation de bases de données MySQL pour débutantsCouverture rigide49,99
    Conception et optimisation de bases de données MySQL pour débutantsLivre électronique22,34
    Le modèle relationnel pour la gestion de bases de données : version 2Livre électronique13,88
    Le modèle relationnel pour la gestion de bases de données : version 2Livre de poche39,99
    Auteur
    AuteurNationalité
    Chad RussellAméricain
    EFCoddbritannique
    Éditeur
    ÉditeurPays
    PresseUSA
    Addison-WesleyUSA
    Genre
    Identifiant du genreNom
    1Tutoriel
    2Science populaire

    Satisfaire EKNF

    Franchisé – Réserver – EmplacementIdentifiant du franchiséTitreEmplacement1Conception et optimisation de bases de données MySQL pour débutantsCalifornie1Conception et optimisation de bases de données MySQL pour débutantsFloride1Conception et optimisation de bases de données MySQL pour débutantsTexas1Le modèle relationnel pour la gestion de bases de données : version 2Californie1Le modèle relationnel pour la gestion de bases de données : version 2Floride1Le modèle relationnel pour la gestion de bases de données : version 2Texas2Conception et optimisation de bases de données MySQL pour débutantsCalifornie2Conception et optimisation de bases de données MySQL pour débutantsFloride2Conception et optimisation de bases de données MySQL pour débutantsTexas2Le modèle relationnel pour la gestion de bases de données : version 2Californie2Le modèle relationnel pour la gestion de bases de données : version 2Floride2Le modèle relationnel pour la gestion de bases de données : version 2Texas3Conception et optimisation de bases de données MySQL pour débutantsTexas

    Cette structure de table, comportant une clé primaire composée , ne contient aucun attribut non clé et est déjà en BCNF (et satisfait donc également toutes les formes normales précédentes ). Cependant, en supposant que tous les livres disponibles soient proposés dans chaque zone, le titre n'est pas lié sans ambiguïté à un lieu précis et, par conséquent, la table ne satisfait pas la 4NF .

    Cela signifie que, pour satisfaire la quatrième forme normale , ce tableau doit également être décomposé :

    Franchisé – Livre
    Identifiant du franchiséTitre
    1Conception et optimisation de bases de données MySQL pour débutants
    1Le modèle relationnel pour la gestion de bases de données : version 2
    2Conception et optimisation de bases de données MySQL pour débutants
    2Le modèle relationnel pour la gestion de bases de données : version 2
    3Conception et optimisation de bases de données MySQL pour débutants
    Franchisé – Emplacement
    Identifiant du franchiséEmplacement
    1Californie
    1Floride
    1Texas
    2Californie
    2Floride
    2Texas
    3Texas

    Désormais, chaque enregistrement est identifié sans ambiguïté par une superclé , donc la 4NF est satisfaite.

    Satisfaire ETNF

    Supposons que les franchisés puissent également commander des livres auprès de différents fournisseurs. Supposons également que la relation soit soumise à la contrainte suivante :

    • Si un certain fournisseur fournit un certain titre
    • et le titre est fourni au franchisé
    • et le franchisé est approvisionné par le fournisseur,
    • puis le fournisseur fournit le titre au franchisé .
    Fournisseur - Livre - Franchisé
    ID du fournisseurTitreIdentifiant du franchisé
    1Conception et optimisation de bases de données MySQL pour débutants1
    2Le modèle relationnel pour la gestion de bases de données : version 22
    3Apprendre le SQL3

    Ce tableau est en 4NF , mais l'ID du fournisseur est égal à la jointure de ses projections : {{ID du fournisseur, Titre}, {Titre, ID du franchisé}, {ID du franchisé, ID du fournisseur}} . Aucun composant de cette dépendance de jointure n'est une superclé (la seule superclé étant l'en-tête entier), donc le tableau ne satisfait pas l' ETNF et peut être décomposé davantage :

    Fournisseur – Livre
    ID du fournisseurTitre
    1Conception et optimisation de bases de données MySQL pour débutants
    2Le modèle relationnel pour la gestion de bases de données : version 2
    3Apprendre le SQL
    Livre – Franchisé
    TitreIdentifiant du franchisé
    Conception et optimisation de bases de données MySQL pour débutants1
    Le modèle relationnel pour la gestion de bases de données : version 22
    Apprendre le SQL3
    Franchisé – Fournisseur
    ID du fournisseurIdentifiant du franchisé
    11
    22
    33

    La décomposition permet d'obtenir la conformité à l'ETNF.

    Satisfaire 5NF

    Pour repérer un tableau ne respectant pas la 5NF , il est généralement nécessaire d'examiner attentivement les données. Prenons le tableau de l'exemple de la 4NF avec une légère modification des données et vérifions s'il respecte la 5NF :

    Franchisé – Réserver – Emplacement
    Identifiant du franchiséTitreEmplacement
    1Conception et optimisation de bases de données MySQL pour débutantsCalifornie
    1Apprendre le SQLCalifornie
    1Le modèle relationnel pour la gestion de bases de données : version 2Texas
    2Le modèle relationnel pour la gestion de bases de données : version 2Californie

    La décomposition de ce tableau réduit les redondances, ce qui donne les deux tableaux suivants :

    Franchisé – Livre
    Identifiant du franchiséTitre
    1Conception et optimisation de bases de données MySQL pour débutants
    1Apprendre le SQL
    1Le modèle relationnel pour la gestion de bases de données : version 2
    2Le modèle relationnel pour la gestion de bases de données : version 2
    Franchisé – Emplacement
    Identifiant du franchiséEmplacement
    1Californie
    1Texas
    2Californie

    La requête reliant ces tables renverrait les données suivantes :

    Franchisé – Réserver – Emplacement REJOINed
    Identifiant du franchiséTitreEmplacement
    1Conception et optimisation de bases de données MySQL pour débutantsCalifornie
    1Apprendre le SQLCalifornie
    1Le modèle relationnel pour la gestion de bases de données : version 2Californie
    1Le modèle relationnel pour la gestion de bases de données : version 2Texas
    1Apprendre le SQLTexas
    1Conception et optimisation de bases de données MySQL pour débutantsTexas
    2Le modèle relationnel pour la gestion de bases de données : version 2Californie

    La jointure renvoie trois lignes de plus que prévu ; l’ajout d’une autre table pour clarifier la relation aboutit à trois tables distinctes :

    Franchisé – Livre
    Identifiant du franchiséTitre
    1Conception et optimisation de bases de données MySQL pour débutants
    1Apprendre le SQL
    1Le modèle relationnel pour la gestion de bases de données : version 2
    2Le modèle relationnel pour la gestion de bases de données : version 2
    Franchisé – Emplacement
    Identifiant du franchiséEmplacement
    1Californie
    1Texas
    2Californie
    Lieu – Réserver
    EmplacementTitre
    CalifornieConception et optimisation de bases de données MySQL pour débutants
    CalifornieApprendre le SQL
    CalifornieLe modèle relationnel pour la gestion de bases de données : version 2
    TexasLe modèle relationnel pour la gestion de bases de données : version 2

    Que renverra la jointure maintenant ? Il est en fait impossible de joindre ces trois tables. Cela signifie qu’il n’a pas été possible de décomposer la table Franchisee – Book – Location sans perte de données ; par conséquent, la table satisfait déjà la 5NF .

    Avertissement : les données utilisées illustrent le principe, mais ne sont pas nécessairement exactes. Dans ce cas, il serait préférable de décomposer les données comme suit, avec une clé de substitution que nous appellerons « ID du magasin » :

    Magasin – Livre
    ID du magasinTitre
    1Conception et optimisation de bases de données MySQL pour débutants
    1Apprendre le SQL
    2Le modèle relationnel pour la gestion de bases de données : version 2
    3Le modèle relationnel pour la gestion de bases de données : version 2
    Magasin – Franchisé – Emplacement
    ID du magasinIdentifiant du franchiséEmplacement
    11Californie
    21Texas
    32Californie

    La fonction JOIN renverra désormais le résultat attendu :

    Magasin – Livre – Franchisé – Emplacement JOINed
    ID du magasinTitreIdentifiant du franchiséEmplacement
    1Conception et optimisation de bases de données MySQL pour débutants1Californie
    1Apprendre le SQL1Californie
    2Le modèle relationnel pour la gestion de bases de données : version 21Texas
    3Le modèle relationnel pour la gestion de bases de données : version 22Californie

    CJ Date a soutenu que seule une base de données en 5NF est véritablement « normalisée ».

    Satisfaire DKNF

    Examinons la table Book des exemples précédents et voyons si elle satisfait la forme normale de la clé de domaine :

    Livre
    TitrePagesÉpaisseurIdentifiant du genreID de l'éditeur
    Conception et optimisation de bases de données MySQL pour débutants520Épais11
    Le modèle relationnel pour la gestion de bases de données : version 2538Épais22
    Apprendre le SQL338Mince13
    Manuel SQL636Épais13

    Logiquement, l'épaisseur d' un livre est déterminée par son nombre de pages. Autrement dit, elle dépend du nombre de pages , ce qui n'est pas un critère déterminant. Prenons l'exemple d'un livre de moins de 350 pages considéré comme « mince » et d'un livre de plus de 350 pages considéré comme « épais ».

    Cette convention est techniquement une contrainte, mais ce n'est ni une contrainte de domaine ni une contrainte de clé ; par conséquent, nous ne pouvons pas nous appuyer sur les contraintes de domaine et les contraintes de clé pour garantir l'intégrité des données.

    Autrement dit, rien ne nous empêche de mettre, par exemple, « Épais » pour un livre de seulement 50 pages, et cela rend le tableau non conforme à la DKNF .

    Pour résoudre ce problème, une table contenant une énumération définissant l' épaisseur est créée, et cette colonne est supprimée de la table d'origine :

    Épaisseur Enum
    ÉpaisseurPages minimalesPages maximales
    Mince1350
    Épais351999 999 999 999
    Livre – Pages – Genre – Éditeur
    TitrePagesIdentifiant du genreID de l'éditeur
    Conception et optimisation de bases de données MySQL pour débutants52011
    Le modèle relationnel pour la gestion de bases de données : version 253822
    Apprendre le SQL33813
    Manuel SQL63613

    Ainsi, la violation d'intégrité du domaine a été éliminée et la table est en DKNF .

    La normalisation ne permet pas d'éviter tous les cas de résultats impossibles, contradictoires ou imprévisibles. Dans cet exemple, des valeurs minimales et maximales de pages de 1/350 et 200/999 999 999 999 entraîneraient des résultats imprévisibles. Il est donc préférable de spécifier et d'utiliser uniquement le nombre minimal de pages.

    Satisfaction 6NF

    Une définition simple et intuitive de la sixième forme normale est la suivante : « une table est en 6NF lorsque la ligne contient la clé primaire et au plus un autre attribut »..

    Cela signifie, par exemple, la table Publisher conçue lors de la création de la 1NF :

    Éditeur
    ID de l'éditeurNomPays
    1PresseUSA

    doit être décomposée en deux tableaux :

    Éditeur
    ID de l'éditeurNom
    1Presse
    Pays de l'éditeur
    ID de l'éditeurPays
    1USA

    L'inconvénient majeur de la 6NF réside dans la multiplication des tables nécessaires pour représenter les informations relatives à une seule entité. Si une table en 5NF possède une colonne de clé primaire et N attributs, la représentation de ces mêmes informations en 6NF nécessitera N tables ; les mises à jour de plusieurs champs d'un même enregistrement conceptuel impliqueront des mises à jour dans plusieurs tables ; et les insertions et suppressions nécessiteront également des opérations sur plusieurs tables. C'est pourquoi, dans les bases de données destinées au traitement transactionnel en ligne (OLTP), la 6NF est à proscrire.

    Cependant, dans les entrepôts de données , qui ne permettent pas les mises à jour interactives et sont spécialisés dans l'interrogation rapide de grands volumes de données, certains SGBD utilisent une représentation interne en 6NF, appelée stockage en colonnes . Lorsque le nombre de valeurs uniques d'une colonne est bien inférieur au nombre de lignes de la table, le stockage en colonnes permet de réaliser d'importantes économies d'espace grâce à la compression des données. Ce type de stockage permet également l'exécution rapide de requêtes par plage (par exemple, afficher tous les enregistrements où une valeur donnée d'une colonne est comprise entre X et Y, ou inférieure à X).

    Dans tous ces cas, le concepteur de base de données n'a pas à effectuer manuellement la normalisation 6NF en créant des tables distinctes. Certains SGBD spécialisés dans l'entreposage de données, comme Sybase IQ , utilisent par défaut un stockage en colonnes, mais le concepteur ne voit alors qu'une seule table à plusieurs colonnes. D'autres SGBD, comme Microsoft SQL Server 2012 et versions ultérieures, permettent de spécifier un « index columnstore » pour une table particulière.