Normalisation – Exercice « Agence immobilière »
Transcription
Normalisation – Exercice « Agence immobilière »
Normalisation – Exercice « Agence immobilière » 1. Base de données initiale Num_Client Nom_Client Num_App Adr_App DateD_Loc DateF_Loc Montant Num_Prop Nom_Prop CR76 Jean DUPONT PG4 12, rue de la Gare 01.07.93 31.08.95 3500 CX40 Jeanne MOULIN PG16 7, av. de la République 01.09.95 01.09.96 4500 CX93 Alain MULLER PG4 12, rue de la Gare 01.09.92 10.06.93 3500 CX40 Jeanne MOULIN PG36 3, Grande Rue 10.10.93 01.12.94 3800 CX93 Alain MULLER PG16 7, av. République 01.01.95 10.08.95 4500 CX93 Alain MULLER CR56 Claire SERRON 2. Base de données en 1ère forme normale (FN1) Num_Client Nom_Client Num_App Adr_App DateD_Loc DateF_Loc Montant Num_Prop Nom_Prop CR76 Jean DUPONT PG4 12, rue de la Gare 01.07.93 31.08.95 3500 CX40 Jeanne MOULIN CR76 Jean DUPONT PG16 7, av. de la République 01.09.95 01.09.96 4500 CX93 Alain MULLER CR56 Claire SERRON PG4 12, rue de la Gare 01.09.92 10.06.93 3500 CX40 Jeanne MOULIN CR56 Claire SERRON PG36 3, Grande Rue 10.10.93 01.12.94 3800 CX93 Alain MULLER CR56 Claire SERRON PG16 7, av. République 01.01.95 10.08.95 4500 CX93 Alain MULLER 3. Dépendances fonctionnelles et clé Dépendances fonctionnelles Num_Client -> Nom_Client ; Num_Client Num_App -> DateD_Loc DateF_Loc Num_App -> Adr_App Montant Num_Prop Nom_Prop ; Num_Prop -> Nom_Prop Clé : (Num_Client Num_App) détermine tous les attributs de la relation CLE Num_Loc DateD_Loc DateF_Loc Adr_App Montant Nom_Prop 4. Mise en 2ème forme normale (FN2) Supposons qu’on veuille modifier ou corriger l’adresse d’un appartement apparaissant plusieurs fois dans la table (différents locataires à différentes périodes) => il faut modifier plusieurs n-uplets ! Ceci est du au fait que certains attributs ne dépendent pas pleinement de la clé, et qu’il existe donc des dépendances partielles (cf. schéma ci-dessous). Il faut donc décomposer R pour obtenir un schéma en 2ème forme normale : R1 (Clients) R2 (Appartements) Num_Client Nom_Client Num_App Adr_App Montant Num_Prop Nom_Prop CR76 Jean DUPONT PG4 12, rue de la Gare 3500 CX40 Jeanne MOULIN CR56 Claire SERRON PG16 7, av. République 4500 CX93 Alain MULLER PG36 3, Grande Rue 3800 CX93 Alain MULLER R3 (Locations) Num_Client Num_App DateD_Loc DateF_Loc CR76 PG4 01.07.93 31.08.95 CR76 PG16 01.09.95 01.09.96 CR56 PG4 01.09.92 10.06.93 CR56 PG36 10.10.93 01.12.94 CR56 PG16 01.01.95 10.08.95 5. Mise en 3ème forme normale (FN3) Supposons qu’on veuille modifier ou corriger le nom d’un propriétaire apparaissant plusieurs fois dans la table (propriétaire de plusieurs appartements) => il faut modifier plusieurs n-uplets ! Ceci est du au fait qu’il existe une dépendance transitive entre Num_App, Num_Prop et Nom_Prop (cf. schéma précédent). Il faut donc décomposer R2 pour obtenir un schéma en 3ème forme normale : R'2 (Appartements) R4 (Propriétaires) Num_App Adr_App Montant Num_Prop Num_Prop Nom_Prop PG4 12, rue de la Gare 3500 CX40 CX40 Jeanne MOULIN PG16 7, av. de la République 4500 CX93 CX93 Alain MULLER PG36 3, Grande Rue 3800 CX93 6. Mise en forme normale de Boyce-Codd (FNBC) Pour que le schéma de décomposition obtenu soit FNBC, il faut vérifier que, s'il existe des clés secondaires, le schéma de décomposition soit encore valable avec ces clés. S'il n'existe pas de clé secondaire et que le schéma obtenu est FN3, alors il est aussi FNBC. 7. Exercice complémentaire RV Locations Num_Client Date_RV Heure_RV Num_Emp Salle CR76 13.05.95 10.30 SG5 101 CR56 13.05.95 12.00 SG5 101 CR74 13.05.95 12.00 SG37 102 CR56 01.07.95 10.30 SG5 102 Contraintes Un client n'est reçu qu'une seule fois dans une journée par un employé. Un employé occupe la même salle de RV toute la journée. Dépendances fonctionnelles Num_Client Date_RV -> Heure_RV Num_Emp Num_Emp Date_RV -> Salle Num_Emp Date_RV Heure_RV -> Num_Client Date_RV Salle -> Num_Emp Date_RV Salle Heure_RV -> Num_Client Attention : il faut considérer les couvertures minimales ! Clés candidates : Num_Client Date_RV Num_Emp Date_RV Heure_RV Date_RV Salle Heure_RV R1 R2 Num_Client Date_RV Heure_RV Num_Emp Num_Emp Date_RV Salle CR76 13.05.95 10.30 SG5 SG5 13.05.95 101 CR56 13.05.95 12.00 SG5 SG37 13.05.95 102 CR74 13.05.95 12.00 SG37 SG5 01.07.95 102 CR56 01.07.95 10.30 SG5