Deuxième forme normale

Introduction

La deuxième forme normale permet d'éliminer les dépendances entre des parties de clé et des attributs n'appartenant pas à une clé.

Définition2NF

Une relation est en 2NF[1] si elle est en 1NF[2] et si tout attribut qui n'est pas dans une clé ne dépend pas d'une partie seulement d'une clé. C'est à dire encore que toutes les DF[3] issues d'une clé sont élémentaires.

ExempleEchelle de salaire

Soit la relation Personne :

Lire le code
1
Personne(#Nom, #Profession, Salaire) 

Soit les DF suivantes sur cette relation :

  • Nom,Profession→Salaire

  • Profession→Salaire

On note alors que la première DF est issue de la clé et qu'elle n'est pas élémentaire (puisque Profession détermine Salaire) et donc que le schéma n'est pas en 2NF.

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

Lire le code
1
Personne(#Nom, #Profession=>Profession, 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)

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

  • Nom,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.