Deuxième forme normale

Définition2NF

Une relation est en 2NF[1] si elle est en 1NF[2] et si tout attribut n'appartenant à aucune clé candidate ne dépend pas d'une partie seulement d'une clé candidate.

ExempleEchelle de salaire

Soit la relation Personne :

1
Personne(#NumeroEmployé, #Profession, Nom, Prénom, Salaire) 

Soit les DF suivantes sur cette relation :

  • NumeroEmployé, Profession→Nom

  • NumeroEmployé, Profession→Prénom

  • NumeroEmployé, Profession→Salaire

  • Profession→Salaire

Personne n'est pas en 2NF car Profession (une partie de clé) détermine Salaire (un attribut qui n'appartient pas à une clé)

Pour avoir un schéma relationnel en 2NF, il faut alors décomposer Personne en deux relations :

1
Personne(#NumeroEmployé, #Profession=>Profession, Nom, Prenom) 
2
Profession(#Profession, Salaire)

On remarque que ce schéma est en 2NF (puisque Salaire dépend maintenant fonctionnellement d'une clé et non plus d'une partie de clé).

On remarque aussi que la décomposition a préservé les DF, puisque nous avons à présent :

  • Profession→Salaire (DF de la relation Profession)

  • NumeroEmployé, Profession→Profession (par Réflexivité)

  • NumeroEmployé, Profession→Salaire (par Transitivité)

Attention

La définition de la 2NF doit être vérifiée pour toutes les clés candidates et non seulement la clé primaire (dans le cas où il y a plusieurs clés).

Remarque

Si toutes les clés d'une relation ne contiennent qu'un unique attribut, et que la relation est en 1NF, alors la relation est en 2NF.