Objectifs de la Modélisation Chapitre 2 Modélisation de Bases de Données avec UML Sarah Cohen-Boulakia Permettre une meilleure compréhension Le monde réel est trop complexe Abstraction des aspects cruciaux du problème Omission des détails Permettre une conception progressive Abstractions et raffinements successifs Possibilité de prototypage rapide Découpage en modules ou packages Génération des structures de (et de traitements) LRI, Université Paris-Sud, Orsay 1 2 Élaborer un modèle conceptuel Rappel : Modélisation à plusieurs niveaux Isoler les concepts fondamentaux Que vont représenter les de la BD? Découvrir les concepts élémentaires du monde réel Décrire les sous-concepts Faciliter la visualisation du système Diagrammes avec notations simples et précises Compréhension visuelle et pas seulement intellectuelle 3 Réel Modèle conceptuel Modèle logique Modèle Physique Indépendant du modèle de Indépendant du SGBD Dépendant du modèle de Indépendant du SGBD Dépendant du modèle de Dépendant du SGBD Médecin effectue Visite Relationnel Objet XML Organisation physique des Structures de stockage des Structures accélératrices (index) 4
Gestion des réservations de billets de trains (SNIF) Réservation Num reservation Nom client Adresse client numéro trajet date Départ - gare - heure Arrivée - gare - heure Étapes, Wagons, Trains Trajet numéro trajet gare départ heure départ destination finale heure d arrivée 5 Du Modèle E-A à UML Entité-Association (ou Entity-Relations) Ensemble de concepts pour modéliser les d'une application (d'une entreprise) Ensemble de symboles graphiques associés Formalisé en 1976 par P. Chen Etendu vers E/R généralisé puis vers l'objet avec UML (cf. cours C. Barras) Pourquoi le Diag. des Classes d UML? Un seul formalisme (international, massivement répandu, breux outils de conception existants) De mieux en mieux adapté aux BDs 6 Exemple de modèle en UML Classe numres {PK} : int numtraj {PK} : int achete Une première modélisation du système SNIF en UML 7 Ensemble de ayant un lien conceptuel ayant des caractéristiques communes qui peuvent être identifiées et que l'on souhaite représenter Classe Classe d objets Entité Concept regroupées sous la notion de classe 8
Attribut Attribut, caractéristique, champs, propriété Propriété des classes Prend sa valeur dans un «domaine de valeurs» : Types simples uniquement entier, chaîne de c., réel, Date Toutes les instances d'une classe ont les mêmes (s d ) attributs NB : Par soucis de simplicité on pourra omettre les types 9 4534 Bordeaux Montpellier 3/12/07 7h15 10h35 Instances Instance de classe : élément de la classe donné Instance d'entité, donnée, instance, objet, occurrence d entité numtraj {PK} : int 9836 Lyon Montpellier 24/11/07 17h25 19h05 Attention : il arrive qu on dise «entité» pour désigner la classe ou l instance. NumSS : 1790256768 Nom : Payen Pré : Olivier NumSS : 2800256765 Nom :Bazin Pré : Lucie 10 Identifiant = Clé Un identifiant (aussi appelé clé) est un attribut qui permet de retrouver une instance de classe unique à tout instant parmi celles de la classe NSS dans, NumTraj dans Un identifiant peut être constitué de plusieurs attributs (clé composée) [Nom, Pré] pour l identifiant d un Client si le numéro de sécurité sociale n est pas connu En UML (dans ce cours) : On ajoute {PK} identifier l attribut clé NB : si plusieurs attributs forment la clé on notera {PK} à coté de chacun de ses attributs numres{pk} : int Association relation lien achete Association NB : une association possède au moins un ou un rôle mé Les classes sont reliées par des associations Entre instances : on associe un trajet unique à chaque réservation Entre classes : abstraction des associations entre instances 11 12
Un trajet est utilisé (dans le temps) par plusieurs réservations (mais peut n être associé à aucune réservation à sa création dans le système) Cardinalités min et max Un client achète une ou plusieurs réservations Une réservation appartient à exactement un client Cardinalités min et max (suite) Cardinalité maximum Indique le bre maximum d'instances d'une classe participant à une association Cardinalité minimum Indique le bre minimum d'instances d'une classe participant à une association Une réservation exactement un trajet Définition de cardinalité : Nombre d instances en relation dans une association NB : Cette notion n est pas présente dans E/R de base, elle l est dans E/R étendu et UML 13 14 Associations entre deux classes Association reflexive achete prenduneoption personne 2 ---------- numss pre offreduo personne 1 mere ---------- numss pre enfants Plusieurs associations entre deux mêmes classes est possible Remarques On ne modélise ici que les mères qui ont au moins un enfant Les enfants ont exactement une mère (pas de cas d adoption, beaux parents etc.) 15 16
0..1 Serv Ser Degré d'une association monservrestraj SERVICE numservice {PK}: int description : string On évitera au maximum les relations de degré > 2 (toute relation n-aire peut se décomposer en plusieurs relations binaires, cf. TD) Degré = Nombre d instances impliquées dans une relation ; La plupart des associations sont de degré 2 (binaires) Association de degré 3 ou 4 etc. possibles. Attention : certains outils de modélisation bcp utilisés ne gèrent pas le losange 17 NumRes {PK}: int Classe : string Date : Date Propriété d'une association INFO_TRAJ_RES - numplace {PK}: int NumTraj {PK}: int GareDep : string JHDep : Date JHArrivee : Date Informations propres à l association Niveau de détail moins fort qu une association ternaire + une seule valeur possible pour un couple fixé NumSS {PK}: int Nom : string Pre 18 RES_FRET ------------------ qte : int RES_PASSAGER ------------------- nbpassagers : int Héritage Attributs de la classe mère en commun aux classes filles (accessibles par l identifiant) Le concept d héritage fait état de classes filles et d une classe mère 19 ADRESSE -------------------- idadd {PK} numrue Rue codep Ville Entité Faible sonadresse Classe (Entité) qui n existe qu en étroite collaboration avec une autre (ou des autres) L identifiant d une e.f. est composé de ses attributs et de l identifiant d une autre classe (accessible par une association) Peut etre représenté par une composition en UML (dépendance des objets) Exemple : un client est identifié par son, pré et son adresse (idadd) ------------- {PK} pre {PK} Client est une entité faible NB : Si une adresse est supprimée, les clients qui y habitent aussi (on ne peut plus les identifier!) 20
La pratique de la conception Bien comprendre le problème à résoudre En «aller-retour», utilisation du cahier des charges, informations par le client etc. Faire revoir le modèle par d'autres définir en commun les objets de l entreprise Essayer de conserver le modèle simple Bien choisir les s Ne pas cacher les associations sous forme d'attributs Documenter les significations et conventions Élaborer le dictionnaire des Nom et définitions des classes, attributs, associations numres : int 0..N PB classique : Délimiter le système Gestion de l association de trains aux trajets et de wagons aux trains : dans le système? 0..N numtraj : int numss : int utilise TRAIN - idtrain : int. compo WAGON - idwagon : int poidsvide : int poidsplein : int 21 22 Comment trouver les Classes? Établies à partir du texte de définition de besoins (ou cahier des charges) Classes : s ou s composés apparaissant dans le texte (mais pas tous!) Objets physiques, personnes, abstractions Exemple dans SNIF Objets physiques : Train Abstraction : Reservation, Trajet Personne : Client Ne pas confondre avec les acteurs extérieurs au système (utilisateurs etc.)! Comment trouver les Associations? Chercher les relations entre les objets de certaines classes Communications, associations physiques ou logiques, contenus, actions Dans SNIF Association : un client achète des réservations Contenu : Étape = partie d un trajet Action : un wagon est utilisé par un train Réfléchir au type d association : simple, héritage Réfléchir aux cardinalités 23 24
Quelques principes pour concevoir un «bon» schéma E/R Il faut remplacer un attribut multiple par une association et une classe supplémentaire ------------ adresse : string ADRESSE ------------------ numrue Rue codep Ville habite ---------------- pre Quelques principes pour concevoir un «bon» schéma E/R Il faut tenter de factoriser les classes quand c'est possible, éventuellement en ajoutant un nouvel attribut FAN ---------- pre couleur JOUEUR ----------------- pre PERSONNE ------------------ pre JOUEUR FAN -------------- couleur 25 26 Quelques principes pour concevoir un «bon» schéma E/R Attention aux redondances d'associations PERSONNE ------------------- pre habite ADRESSE apourtelpers apourteladr TELEPHONE ----------------- numero Si tous les numéros de téléphone d une personne sont liés à ses adresses apourtelpers est redondante avec le reste du schéma A SUPPRIMER Exercice 1 - Modélisation La base de de l université Paris 128 contient des informations au sujet de ses enseignants (identifiés par leurs numéros de sécurité sociale) et de ses UE (identifiés par leur numéro Apogée). Construisez les diagrammes de classes UML représentant les contraintes ci-dessous indépendamment les unes des autres. a) Tout professeur doit enseigner au moins une UE et une UE est enseignée par exactement un enseignant b) Tout professeur doit enseigner au moins une UE et une UE est enseignée par au moins un enseignant c) Tout professeur doit enseigner au moins une UE et une UE est enseignée par au moins un enseignant par semestre 27 28