Première forme normale (1FN)
On dit qu’une relation est en 1FN si tous les attributs qui la composent sont atomiques, c’est-à-dire non décomposables.
Exemple:
La relation R(attribut1, Attribut2, Attribut3)
avec Attribut3(SousAttribut1, SousAttribut2)
n’est pas en 1FN.
Pour être en 1FN, on doit avoir la relation suivante:
R(attribut1, Attribut2, SousAttribut1, SousAttribut2)
Une deuxième option est créer (si pertinent) une deuxième relation:
R1(attribut1, Attribut2, #idAttribut3)
R2(idAttribut3, SousAttribut1, SousAttribut2)
Deuxième forme normale (2FN)
On dit qu’une relation est en 2FN si:
- elle est en 1FN
- toutes les dépendances fonctionnelles entre la clé et les autres attributs sont élémentaires, i.e tout attribut non clé primaire est dépendant de la clé primaire entière.
La 2FN permet d’éliminer les attributs qui ne décrivent pas l’«objet» représenté par la relation
Exemple :
Fournisseur(nom, telephone, bp, article, prix)
Dépendances fonctionnelles : nom → telephone, bp et (nom, article) → prix
La décomposition en isolant la dépendance fonctionnelle non conforme en 2 FN donne les deux relations suivantes:
Fournisseur (nom , telephone, bp)
Produit (#nom , article , prix)
Troisième forme normale (3FN)
On dit qu’une relation est en 3FN si:
- elle est en 2FN
- toutes les dépendances fonctionnelles entre la clé et les autres attributs sont élémentaires et directes, autrement dit tout attribut non clé ne dépend pas d’un attribut non clé.
La 3FN permet d’éliminer des sous-relations incluses dans une relation.
Exemple:
Voiture (NumeroImmatriculation, marque, NomModele, puissance, couleur) n’est pas en 3FN.
DF: NomModele → marque, puissance
La décomposition en isolant la DF non conforme en 2 FN donne les deux relations suivantes:
Voiture (NumeroImmatriculation, #NomModele, couleur)
Modèle (NomModele, marque, puissance)
Forme normale Boyce-Codd (FNBC)
On dit qu’une relation est en FNBC si:
- elle est en 3FN ;
- aucun attribut non clé ne détermine une partie de la clé (si X à Y, alors X est une clé et Y est un attribut non clé).
La FNBC généralise la 3FN aux relations à plusieurs identifiants.
Exemple:
R (codeFournisseur, registreCommerce, codeProduit, prix), n’est pas en FNBC
DF: registreCommerce → codeFournisseur
La décomposition en isolant la DF non conforme en FNBC donne les deux relations suivantes:
R1 (codeFournisseur, registreCommerce)
R2 (codeFournisseur, codeProduit, prix)
Quatrième forme normale (4FN)
On dit qu’une relation est en 4FN si:
- elle est en FNBC ;
- elle ne contient pas de dépendances multivaluées.
Nota : Soit une relation R (X, Y, Z). Il y a dépendance multivaluée si à toute valeur de X correspond un ensemble de valeurs de Y qui est totalement indépendant de Z (X – >> Y)
La 4FN permet de séparer des faits multivalués indépendants qui auraient été réunis dans une même relation.
Exemple :
On considère la relation R(idPersonne, Matiere, Hobby), avec les dépendances fonctionnelles:
Personne – > > Matiere
Personne – >> Hobby
La décomposition de R en relations en 4 FN donne les relations suivantes:
R1(idPersonne, Matiere)
R2(idPersonne, Hobby)