Correspondance modèle E/A vers modèle relationnel
Transcription
Correspondance modèle E/A vers modèle relationnel
Traduction 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 transformation des entitésTraduction non faibles Type d' entité relation Attribut atomique constituant (attribut) Attributs composites n constituants Attribut(s) clé(s) clé candidate E C A Bases de Données E(C, A) Traduction Employé Attributs atomiques Employe(noss, adresse) Attributs composites Employe(noss, adresse, nomf, prenom) Aplatissement de la structure (suite d’attributs atomiques) Département Projet perte de la sémantique Attributs atomiques Département(no_dept, libelle) Attributs multivalués Etape 6 : local Attributs calculés Etape 7 : nb_emp Attributs atomiques Projet(numero, description) Conception - 1 ! Traduction 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 (1,1) E2 C2 A2 Entité PersonneACharge Attributs atomiques PersonneACharge(nom, DateNaissance, parenté) + Clé de l’entité identifiante PersonneACharge(nom, DateNaissance, parenté, noss) Noss : clé étrangère sur Employé + Partie de la clé de PersonneACharge E2(C, C2, A2) # ! Traduction " Clé associée à E1 attribut de E2 Attributs de Ass attributs de E2 E1 C1 A1 ?,? Ass A3 ?,1 E2 C2 A2 TravaillePour Employe(noss, adresse, nomf, prenom, no_dept) Dirige Département(no_dept, libelle, nosschef, dateDebut) Dirige monovaluée dans les 2 sens on aurait pu créer Employe(noss, adresse, nomf, prenom, nodept, nodeptDirigé, dateDebut) Cardinalités (0,1), association partielle valeurs nulles E2(C2, A2, C1, A3) Clé étrangère, pas clé dans E2 $ Bases de Données Traduction Controle Projet(numero, description, numdept) Supervision Employe(noss, adresse, nomf, prenom, nodept, noSSSuperviseur) noSSSuperrviseur clé étrangère de Employé sur elle-même AvoirACharge Cf. étape 2 % Conception - 2 ! ! Traduction " 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 ?,n TravailleDans Ass A3 ?,n E2 C2 A2 )* + Idem étape 4 : Création d' une nouvelle relation Ass Clé de E1 + Clé de E2 + … clé de En Ass Attributs de Ass Attributs de Ass Ass(C1, C2, A3) E1 C1 A1 TravailleDans(noss, numeroProjet, nb_heures) E2 C2 A2 Ass A4 clé de Ass(C1, C2, C3, A4) E3 C3 A3 & # ! " 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) ' $ ! " 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 Localisations dans Département Bases de Données LocalisationDept(localisation, num_dept) Conception - 3 , ! Traduction Employe(noss, adresse, nomf, prenom, nodept, noSSSuperviseur) Département(no_dept, libelle, nosschef, dateDebut, Nb_emp) Projet(numero, description, numdept) PersonneACharge(nom, noss, DateNaissance, parenté) TravailleDans(noss, numeroProjet, nb_heures) LocalisationDept(localisation, num_dept) CREATE VIEW EFFECTIFS(no-dept, nb_emp) AS SELECT no_dept, COUNT(*) FROM Employe GROUP BY no_dept - ( Relation ne possédant pas de clé étrangère : ensemble d' entité Relation possédant une clé étrangère à l' extérieur de sa clé : ensemble d' entité plus association monovaluée vers l' ensemble d' entité correspondant à la clé étrangère , ( Rétro-conception But : 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) - )+ Relation dont la clé est intégralement composée de clés étrangères : association multivaluée entre les ensembles d' entités correspondant aux clés étrangères Relation dont la clé comprend une clé étrangère et une clé "locale" : ensemble d' entité faible par rapport à l' ensemble d' entité correspondant à la clé étrangère # Bases de Données Conception - 4 ./ 01 Exemples , ( 01 Vins Vins(num, cru, annee, degre) Recoltes(nvin, nprod, quantite) Producteurs(num, nom, prenom, region) Buveurs(num, nom, prenom, ville) Commandes(ncde, date, nb, nvin, qte) Livraisons(ncde, no_ordre, qteLivree) 1? num cru degré annee Buveurs num nom prenom ville ? 0,n 0,n recoltes Rétro-conception 0,n concerne ? Passer quantite 1? 0,n Producteurs num nom prenom region 1,1 1,1 Commandes ncde qté date 1? 0,n Donner_lieu Livraisons (1,1) No_ordre qteLivrée date 1? $ Bases de Données % Conception - 5