Aller au contenu
Normalisation

2FN & 3FN

La 2FN interdit qu'un attribut dépende d'une partie seulement d'une clé composée ; la 3FN interdit qu'il dépende d'un autre attribut non clé. Ensemble, elles suppriment l'essentiel des redondances.

  • 2NF
  • 3NF
  • dépendance partielle
  • dépendance transitive

Syntaxe

Modèle
2FN : 1FN + tout attribut non clé dépend de toute la clé3FN : 2FN + aucun attribut non clé ne dépend d'un autre attribut non clé

Exemple

Exemple concret
✗ 2FN : ligne(num_commande, ref_produit, libelle_produit, quantite)        clé primaire = (num_commande, ref_produit)  ref_produit → libelle_produit : dépend d'une partie de la clé✓ ligne(num_commande, ref_produit, quantite)  + produit(ref_produit PK, libelle)✗ 3FN : commande(num_commande PK, num_client, nom_client)  num_commande → num_client → nom_client : dépendance transitive✓ commande(num_commande PK, num_client FK → client)  + client(num_client PK, nom)

À retenir

  1. La 2FN ne concerne que les tables à clé composée : une table à clé simple déjà en 1FN est automatiquement en 2FN.
  2. Formule à retenir : chaque attribut non clé dépend de la clé, de toute la clé, et de rien d'autre que la clé.
  3. Les anomalies évitées sont concrètes : modifier le libellé d'un produit dans cent lignes, ou perdre le nom d'un client en supprimant sa dernière commande.
  4. Piège : prendre une copie volontaire pour une violation. prix_vente dans une ligne de commande ne dépend pas de ref_produit seul : c'est le prix payé ce jour-là, il dépend de toute la clé.

Voir aussi