====2.2.5 Normalisation d'un schéma==== **__Tables mal construites__** **Exemple de table mal construite (fournisseurs de composants électroniques):** Fournisseur(nom_f, adresse_f,composant, prix) * **Problèmes :** * **Redondance** : l’adresse des fournisseurs est répétée plusieurs fois * **Inconsistance** : mauvaise mise à jour => adresses différentes pour un même fournisseur. * **Problème Insertion** : on ne peut pas insérer dans la table un fournisseur qui ne fournit rien * **Problème suppression** : si un fournisseur ne fournit plus rien, on perd son adresse * Solution? * Couper la table en 2? Fournisseurs (nom_f, adresse_f) Catalogue(composant, prix) --> Impossible de retrouver les prix pratiqués par les différents fournisseurs. * Nouveau Schéma : Fournisseurs (nom_f, adresse_f) Catalogue(nom_f, composant, prix) --> Il est possible de reconstruire la table initiale en effectuant une jointure entre ces 2 tables sur l’attribut ''nom_f''. **Exercice** : Les tables suivantes sont-elles bien ou mal construites? Enseignement(id_enseignant, nom_enseignant, matière, id_élève, nom_élève) Arrêt (num_train, horaire, nom_gare, ville) Facture(id_client, article, date, montant) **__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: * [[public:STD-3:CM1:Aspect logique:2.2.5 Normalisation d'un schéma:2ème forme normale (2FN)]] * [[public:STD-3:CM1:Aspect logique:2.2.5 Normalisation d'un schéma:Normalisation 2FN]] * [[public:std-3:cm1:aspect_logique:2.2.5_normalisation_d_un_schema:3eme_forme_normale_3fn]] * [[public:STD-3:CM1:Aspect logique:2.2.5 Normalisation d'un schéma:Normalisation 3FN]] __Previous__ : [[public:STD-3:CM1:Aspect logique:2.2.4 Clé d'une relation]] __Up__ : 2.2 [[public:STD-3:CM1:Aspect logique]] __Next__ : [[public:STD-3:CM1:Aspect logique:2.2.6 Exemple -- Création d’un schéma de table en SQL]]