Mettre la base de données en troisième forme normale (3NF)
La troisième forme normale (3NF) est un principe de base de données qui prend en charge l’intégrité des données en s’appuyant sur les principes de normalisation de la base de données fournis par la première forme normale (1NF) et la deuxième forme normale (2NF). Le but de 3NF est d’augmenter la puissance de traitement de la base de données tout en minimisant les coûts de stockage.
Exigences de la troisième forme normale
Une base de données a deux exigences de base dans 3NF :
- La base de données doit répondre aux exigences 1NF et 2NF.
- Toutes les colonnes de la base de données doivent dépendre de la clé primaire, ce qui signifie que la valeur d’une colonne ne peut être dérivée que de la clé primaire.
dépendance de la clé primaire
Explorons plus en détail les implications du fait que toutes les colonnes doivent dépendre de la clé primaire. 3NF est violé si la valeur d’une colonne peut être dérivée de la clé primaire et d’une autre colonne de la table. Considérez une table d’employés avec ces colonnes :
- carte d’identité de l’employé
- Nom
- nom de famille
Est-ce que LastName et FirstName dépendent uniquement de la valeur de EmployeeID ? Alors, le nom de famille peut-il dépendre du prénom ? Non, car rien d’inhérent à LastName n’impliquerait la valeur de FirstName.
FirstName peut-il dépendre de LastName ? Encore une fois non, car c’est la même chose : quel que soit LastName, cela ne donne aucune indication sur la valeur de FirstName. Par conséquent, ce tableau est conforme à 3NF.
Ensuite, considérez ce tableau de véhicules :
- identification du véhicule
- fabricant
- Modèle
Les fabricants et les modèles peuvent être dérivés de VehicleID, mais les modèles peuvent également être dérivés des fabricants, car un seul fabricant spécifique produit des modèles de véhicules. Cette conception de table n’est pas conforme à 3NF, elle peut donc entraîner des anomalies de données. Par exemple, vous pouvez mettre à jour le fabricant sans mettre à jour le modèle, introduisant des inexactitudes.
Mettre la base de données en troisième forme normale (3NF)
Déplacer la colonne dépendante supplémentaire vers une autre table et la référencer avec une clé étrangère la rendrait compatible. Cela produira deux tableaux, que nous appellerons « Véhicules » et « Modèles ».
Dans la table « Véhicules », ModelID est une clé étrangère de la table « Modèles » :
- identification du véhicule
- fabricant
- Identifiant du modèle
Un nouveau tableau « Modèles » mappe les modèles aux fabricants. Si vous souhaitez mettre à jour des informations de véhicule spécifiques à un modèle, vous pouvez le faire dans ce tableau au lieu du tableau « Véhicules ».
Champs dérivés dans les modèles 3NF
Une table peut contenir un champ dérivé calculé à partir d’autres colonnes de la table. Par exemple, considérez ce formulaire de commande de widget :
- numéro de commande
- numéro de client
- Prix unitaire
- quantité
- tout
Le total viole la conformité 3NF car il peut être obtenu en multipliant le prix unitaire par la quantité au lieu de s’appuyer uniquement sur la clé primaire. Vous devez supprimer Total de la table pour vous conformer à la troisième forme normale.
Puisqu’il est dérivé, il est préférable de ne pas le stocker dans la base de données, mais de le calculer dynamiquement lorsque la requête de base de données est exécutée. Par exemple, nous avons peut-être déjà utilisé cette requête pour récupérer les numéros de commande et les totaux :
Sélectionnez le numéro de commande, total
DE WidgetOrders
Utilisez maintenant la requête suivante pour obtenir le même résultat sans enfreindre les règles de normalisation :
SÉLECTIONNEZ le numéro de commande, le prix unitaire * la quantité comme total
DE WidgetOrders
Merci de nous en informer!
Dites-nous pourquoi !
D’autres détails ne sont pas assez difficiles à comprendre