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éfinition : 3NF
Attention : Clé 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 :
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 :
Profession(#Profession, Salaire=>Salaire)
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.
Remarque : 3NF 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.
Remarque : Limite de la 3NF
Une relation en 3NF permet des dépendances entre des attributs n'appartenant pas à une clé vers des parties de clé.