Troisième forme normale

Introduction

La troisième forme normale permet d'éliminer les dépendances entre les attributs n'appartenant pas à une clé.

Définition3NF

Une relation est en 3NF[1] si elle est en 2NF[2] et si tout attribut n'appartenant pas à une clé ne dépend pas d'un autre attribut n'appartenant pas à une clé. C'est à dire encore que toutes les DFE[3] vers des attributs n'appartenant pas à une clé, sont issues d'une clé.

AttentionClé candidate

La définition concerne toutes les clés candidates et non uniquement la clé primaire ( SQL avancé : Programmation et techniques avancées[4], p.27).

ExempleÉchelle de salaire et de prime

Soit la relation Profession :

Lire le code
1
Profession(#Profession, Salaire, Prime) 

Soit les DF suivantes sur cette relation :

  • Profession→Salaire

  • Profession→Prime

  • Salaire→Prime

Cette relation n'est pas en 3NF car Salaire, qui n'est pas une clé, détermine Prime.

Pour avoir un schéma relationnel en 3NF, il faut décomposer Profession :

Lire le code
1
Profession(#Profession, Salaire=>Salaire)
2
Salaire(#Salaire, Prime)

Ce schéma est en 3NF, car Prime est maintenant déterminé par une clé.

On remarque que cette décomposition préserve les DF, car par transitivité, Profession détermine Salaire qui détermine Prime, et donc Profession détermine toujours Prime.

Remarque3NF et 2NF

Une relation en 3NF est forcément en 2NF car :

  • Toutes les DFE vers des attributs n'appartenant pas à une clé sont issues d'une clé, ce qui implique qu'il n'existe pas de DFE, issues d'une partie de clé vers un attribut qui n'appartient pas à une clé.

  • Il ne peut pas non plus exister de DFE issues d'une partie de clé vers un attribut appartenant à une clé, par définition de ce qu'une clé est un ensemble minimum.

On n'en conclut qu'il ne peut exister de DFE, donc a fortiori pas de DF[5], issues d'une partie d'une clé, et donc que toutes les DF issues d'une clé sont élémentaires.

Fondamental

Il est souhaitable que les relations logiques soient en 3NF. En effet, il existe toujours une décomposition sans perte d'information et préservant les DF d'un schéma en 3NF. Si les formes normales suivantes (BCNF[6], 4NF[7] et 5NF[8]) assurent un niveau de redondance encore plus faible, la décomposition permettant de les atteindre ne préserve plus les DF.

RemarqueLimite de la 3NF

Une relation en 3NF permet des dépendances entre des attributs n'appartenant pas à une clé vers des parties de clé.