Conception d’une BD INT
Plan du document Introduction slide 148 Modèle Entité/Association slide 153 Modèle données UML slide 158 Traduction E/A relationnel slide 160 Rétro-conception slide 172
Conception indépendante d’un modèle de données Introduction Réalité Schéma conceptuel transformation Schéma relationnel réseau Fichiers ….
Conception relationnelle Introduction Relation universelle Dépendances fonctionnelles décomposition Schéma Relationnel normalisé
Conception centralisée Introduction Schéma conceptuel global Schéma local Schéma local Schéma local …. Utilisateur Programme …
Conception décentralisée (à partir d’un existant) Introduction Hétérogène/homogène Schéma local intégration Schéma global
Conception d’une BD Introduction Réalité Indépendant du SGBD Recueil des besoins et analyse Besoin de la BD Conception logique Schéma conceptuel (haut niveau) Transformation du modèle Spécifique à un SGBD Schéma conceptuel (spécifique SGBD) Conception physique Schéma physique (spécifique SGBD)
Modèle Entité/Association Modèle E/A Proposé en 1976 (Chen) Nombreuses extensions depuis Avantages : Utilisé dans la plupart des méthodes de conception (MCD Merise, …) Simple Graphique Facilite le dialogue avec les utilisateurs
Concepts Modèle E/A Graphisme 1 Graphisme 2 Type d'entité Attribut Attribut composite Attribut multivalué Clé d’un type d’entité Type d’association Rôle Contraintes de cardinalité Nom Type Entité T A A Ass Ass Rôle Rôle 1,n 0,n
Concepts (2) Modèle E/A Graphisme 1 Graphisme 2 Type d’entité faible Type d’association identifiante Attribut calculé Ass (1,1)
Modèle E/A Entreprise Modèle E/A nom adresse NoSS nomf prenom No_dept libelle localisations Nb_emp Travailler pour Est supervisé 1,1 1,1 Employé 0,n Département 0,1 Supervise 0,n diriger 1,1 0,n superviser 0,n 1,n date Avoir à charge gérer Travailler sur 1,1 Nb_heures 1,1 1,n Personne-à-charge Projet Parente prénom DateNaissance Numéro Description
Modèle E/A Entreprise Graphisme 2 supervise Employe 1,1 TravaillerPour Département Superviser NoSS 1,n No_dept Est supervisé Adresse libelle Nomf 1,1 Nb_Emp Prenom 0,1 1,1 localisations Diriger 0,n 1,n Date 1,n Avoir a charge Gérer TravaillerSur Nb_heures (1,1) PersonneACharge prénom 1,n 1,1 DateNaissance Projet Parenté Numéro Description
UML Entreprise UML
Entité-Association / Diagramme de classe UML 27/03/2017 Entité-Association / Diagramme de classe UML UML
Traduction EA relationnel La sémantique n’est pas complètement préservée (il faut ajouter des contraintes d’intégrité) Règles sont automatisables (de nombreux outils existent sur le marché, AMCDesignor par exemple) Transformation se fait en 7 étapes Comparaison des concepts des deux modèles : à faire par l’étudiant
Étape 1 : transformation des entités non faibles Traduction Type d'entité relation Attribut atomique constituant (attribut) Attributs composites n constituants Attribut(s) clé(s) clé candidate E C A E(C, A)
Exemples d’étape 1 Traduction Employé Attributs atomiques Employé(noss, adresse) Attributs composites Employé(noss, adresse, nomf, prénom) Aplatissement de la structure (suite d’attributs atomiques) perte de la sémantique Département Département(no_dept, libelle) Attributs multivalués Étape 6 : local Attributs calculés Étape 7 : nb_emp Projet Projet(numéro, description)
Étape 2 : transformation des entités faibles Traduction Type d'entité faible relation Attribut atomique constituant (attribut) Attributs composites n constituants Attribut(s) clé(s) partie de clé candidate Attributs clés de l’entité identifiante partie de clé E C A E2 C2 A2 (1,1) E2(C, C2, A2)
Exemple d’étape 2 Traduction Entité PersonneACharge Attributs atomiques PersonneACharge(prénom, DateNaissance, parenté) + Clé de l’entité identifiante PersonneACharge(prénom, DateNaissance, parenté, noss) Noss : clé étrangère sur Employé Partie de la clé de PersonneACharge
Étape 3 : transformation des associations binaires monovaluées Traduction Clé associée à E1 attribut de E2 Attributs de Ass attributs de E2 E1 C1 A1 E2 C2 A2 ?,? Ass A3 ?,1 E2(C2, A2, C1, A3) Clé étrangère, pas clé dans E2
Exemples d’étape 3 Traduction TravaillePour Employé(noss, adresse, nomf, prénom, no_dept) Dirige Département(no_dept, libelle, nosschef, dateDebut) Dirige monovaluée dans les 2 sens on aurait pu créer Employé(noss, adresse, nomf, prénom, nodept, nodeptDirigé, dateDebut) Cardinalités (0,1), association partielle valeurs nulles Controle Projet(numéro, description, numdept) Supervision Employé(noss, adresse, nomf, prénom, nodept, noSSSuperviseur) noSSSuperrviseur clé étrangère de Employé sur elle-même AvoirACharge Cf. étape 2
Étape 4 : transformation des associations binaires multivaluées dans les 2 sens Traduction Création d'une nouvelle relation Ass Clé de E1 + Clé de E2 clé de Ass Attributs de Ass Attributs de Ass E1 C1 A1 E2 C2 A2 ?,n Ass A3 ?,n Ass(C1, C2, A3) TravailleDans TravailleDans(noss, numeroProjet, nb_heures)
Étape 5 : Transformation des associations n-aires (n > 2) Traduction Idem étape 4 : Création d'une nouvelle relation Ass Clé de E1 + Clé de E2 + … clé de En clé de Ass Attributs de Ass Attributs de Ass E1 C1 A1 E2 C2 A2 Ass A4 Ass(C1, C2, C3, A4) E3 C3 A3
Étape 6 : transformation des attributs multivalués Traduction Création d'une nouvelle relation R Attribut multivalué -> constituant Clé du type d'entité associé -> constituant Clé de la relation : tout le schéma A Département C R(A, C) Localisations dans Département LocalisationDept(localisation, num_dept)
Étape 7 : transformation des attributs calculés Traduction Attribut calculé Requête associée Nb_emp dans Département Département(no_dept, libelle, nosschef, dateDebut) SELECT no_dept, COUNT(*) FROM Employe GROUP BY no_dept Couples no département – effectif du département Associée à une vue relationnelle
Récapitulatif de l’exemple Traduction Employé(noss, adresse, nomf, prénom, nodept, noSSSuperviseur) Département(no_dept, libelle, nosschef, dateDebut, Nb_emp) Projet(numero, description, numdept) PersonneACharge(prénom, noss, DateNaissance, parenté) TravailleDans(noss, numeroProjet, nb_heures) LocalisationDept(localisation, num_dept) SELECT no_dept, COUNT(*) FROM Employe GROUP BY no_dept
Rétro-conception But : Pourquoi ? Comment ? Remarque Passer d’un schéma relationnel à un schéma Entité-Association équivalent Pourquoi ? Analyse n’a pas été faite ou a été perdue Comment ? Appliquer les étapes de transformation « à l’envers » Remarque Ne fournit pas une solution unique (perte d’information sur le schéma relationnel par rapport au schéma E/A)
Rétro-conception de la BD des vins Buveurs num ? num cru nom degré prenom annee 1 ? 0,n ville 0,n ? 0,n concerne recoltes Passer quantite 1 ? 1 ? 0,n 1,1 Producteurs 1,1 Livraisons Commandes Donner_lieu num 0,n (1,1) No_ordre ncde nom qteLivrée qté prenom date date region 1 ?