Les Formes normales:
- Restreignent les dépendances admises dans un schéma relationnel
- Permettent d’éviter la duplication de l’information au sein des relations
- Définissent une méthode de décomposition d’un schéma relationnel redondant en plusieurs schémas liés entre eux.
Dépendance fonctionnelle élémentaire (DFE)
- Soit R un schéma relationnel
- Soit X un ensemble d’attributs ⊆ R
- Soit A un attribut de R
- Il existe une DFE entre X et A ssi :
- X→A
- Il n’existe aucun sous-ensemble Y ⊆ X tel que Y→A
2ème forme normale (2FN)
- Un schéma R est en 2FN :
- ssi la clé primaire de R est en DFE avec tous les autres attributs.
- Donc : il n’y a pas d’attributs qui ne dépendent que d’une partie de la clé.
Exemple :
Fournisseur(nom_f,composant_,adresse_f,prix)
nom_f→adresse_f
nom_f,composant→prix
⇒ Pas 2FN!!
- Lorsqu’un schéma relationnel n’est pas en deuxième forme normale, il doit être normalisé:
Normalisation 2FN :
- Pour obtenir un schéma 2FN,
- on “découpe” la table selon les DFE trouvées.
- La normalisation consiste
- à créer une nouvelle table
- pour chaque DFE de la table initiale.
- Soit :
R(A1,...,Ai,...,An_,B1,...,Bj,...,Bm)
- avec :
AiDFE→Bj A1,...,Ai,...,AnDFE→B1,...,Bj−1,Bj+1...,Bm
- Alors le schéma de table doit être modifié comme suit :
R1(A1,...,Ai,...,An_,B1,...,Bj−1,Bj+1...,Bm) R2(Ai_,Bj)
- Attention,
- même si aucun attribut ne dépend plus de la clé primaire initiale,
- il est important de la conserver dans une table spécifique
- (elle sert à “lier” les valeurs dispersées dans les différentes tables).
Exemple
- Avant:
Fournisseur(nom_f,composant_,adresse_f, prix) nom_f→adresse_f nom_f, composant→prix
- Après:
Catalogue(nom_f,composant_,prix) Fournisseur(nom_f_,adresse_f)
Remarque : le schéma est maintenant constitué de deux tables.
- Les tables ont un attribut commun : nom_f (clé primaire de la table Fournisseur).
- La clé primaire de la table des Fournisseurs est dupliquée dans la table des prix (appelée ici Catalogue).
- On dit que nom_f est une clé étrangère de la table des prix (l’attribut fait référence à la clé primaire d’une autre table, en l’occurrence la table des fournisseurs - voir formes_normales).
Previous : Tables mal construites Up : 2.2.5 Normalisation d'un schéma