Cours merise face uml

© Éditions Eyrolles 19 Chapitre 1 Le niveau conceptuel : face à face Merise/UML You cannot design databases without a familiarity with the techniques of the ER diagramming. Database Design for Smarties, Using UML for Data Modeling, R.J. Muller, Morgan & Kaufman, 1999 Ce chapitre détaille la première étape de conception d’une base de données : il s’agit d’élaborer un schéma conceptuel exprimé soit dans un formalisme de type entité-association avec ses extensions issues de Merise/2 soit à l’aide de la notation UML 2. Il existe d’autres formalismes mais ils sont bien moins employés par la communauté francophone, citons le modèle entité-relation américain [CHE 76], NIAM (Nijssen Information Analysis Method) du nom du chercheur hollandais, ORM (Object Role Model) [HAL 01] qui étend et a pour but de remplacer NIAM, le langage Z [ABR 74], IDEF1X, etc. D’un point de vue international, la troisième partie de la norme, l’ISO/IEC 11179 (Technologies de l’information - Coordination de la normalisation des éléments de données) décrit la façon dont doivent être organisées les données de façon sémantique. Cependant, le modèle conceptuel ne décrit en aucune façon une méthode logique pour représenter les données dans un ordinateur. Dans ce chapitre, nous expliquons comment représenter : ● les faits et les événements qui décrivent le système à modéliser ; ● les différentes contraintes à prendre en compte (exemples : une compagnie aérienne n’affrète pas ses propres avions, un pilote ne doit voler que s’il détient une licence en cours de validité et une qualification valide pour le type d’avion en question, etc.) ; ● l’héritage. Le schéma conceptuel exprime une vue abstraite de la base de données. Cette vue est représentée de manière graphique – on parle de diagramme, de schéma, de modèle, même si ce dernier mot est employé à toutes les sauces. Acheter le livre numérique UML 2 pour les bases de données UML 2 pour les bases de données 20 © Éditions Eyrolles Il existe une différence entre un modèle (par exemple le modèle conceptuel de données) et un formalisme (dans lequel est décrit un modèle et qui n’exprime que l’aspect représentation). Ainsi, on parle de la modélisation conceptuelle des données suivant le formalisme entité-association ou suivant la notation UML. La modélisation est un processus très important car il conditionne la structure de la base de données qui sera déduite des différents éléments du schéma conceptuel : entités (ou classes), associations et contraintes. Généralités Afin de préserver l’indépendance entre les données et les traitements, le schéma conceptuel ne doit pas comporter d’indications physiques. Pas question donc d’indiquer sur un diagramme une quelconque information sur l’indexage, l’adressage ou tout autre détail concernant l’accès à la mémoire. Le schéma conceptuel doit contenir plus d’informations qu’on pouvait en trouver au début des fichiers COBOL, lorsqu’il s’agissait de déclarer les structures de données manipulées par les programmes eux-mêmes (la comparaison est un peu osée, mais les développeurs mûrs feront le rapprochement). Le concepteur devra ajouter au schéma les règles de gestion (aussi appelées « règles de sécurité », « d’intégrité » ou « de fonctionnement »). L’objectif d’un schéma conceptuel ne peut pas être de décrire complètement un système, il modélise seulement l’aspect statique des données. Un schéma va aussi servir à communiquer et échanger des points de vue afin d’avoir, entre différents acteurs, une compréhension commune et précise d’un système à modéliser. Dans le monde de l’industrie, ces schémas ne sont plus manuscrits mais manipulés à l’aide d’outils graphiques (étudiés au chapitre 4). Face à face Merise/UML Nous réalisons ici un face à face entre le modèle conceptuel des données de Merise et le diagramme de classes de la notation UML. Pour chaque caractéristique, nous présenterons les différences entre les deux notations avant de tirer un bilan. Concepts de base Modèles entité-association Le modèle entité-association, appelé « entité-relation » (entity-relationship) chez les Anglo- Saxons, a été proposé en 1976 des deux côtés de l’Atlantique. Si la paternité de ce modèle est Acheter le livre numérique UML 2 pour les bases de données © Éditions Eyrolles 21 chapitre n° 1 Le niveau conceptuel : face à face Merise/UML attribuée à P. Chen [CHE 76], [MOU 76], d’autres études proposent au même moment un modèle avec des concepts similaires. Il est d’ailleurs amusant de lire le titre de l’article de H. Tardieu [TAR 79] A Method, A Formalism and Tools for Database Design (Three Years of Experimental Practice). Le formalisme Merise a d’abord été nommé entité-relation. L’appellation entité-association, dans le cadre de Merise, est apparue au cours d’un congrès de l’AFCET en 1991. S’il est incontestable que P. Chen a fait la première publication en langue anglaise, l’équipe animée par H. Tardieu travaillait depuis 1974 sur le projet I(N)RIA « Méthode, Modèles et Outils pour la conception d’une base de données », jalonné par plusieurs publications dans l’environnement français. Le formalisme s’appelait alors « formalisme individuel », terme utilisé à la place d’entité. Au congrès IFIP de Namur en 1975, les deux approches ont été confrontées. Les publications respectives s’entremêlent au point qu’il est très difficile d’attribuer une paternité mais plutôt une simultanéité de publication. Le modèle conceptuel des données (MCD) de Merise [TAR 83], [TAR 91] issu des travaux de [TAR 79b], a été étendu par les travaux du groupe 135 de l’AFCET avec la version 2 de Merise [PAN 94]. La notation Merise/2 a été introduite par la société SEMA. À cette période, les travaux de l’AFCET étaient plus complets et consensuels que ceux de SEMA [NAN 01], mais l’appellation est passée dans l’usage courant. Les ouvrages et articles de recherche américains ignorent royalement depuis près de vingt ans le modèle européen, qui a pourtant fait son chemin. Peut-être est-ce le fruit de vieilles rancoeurs ? Toujours est-il que le modèle Merise/2 est un modèle riche, qui propose de nombreuses contraintes sémantiques. Certaines contraintes ont été reprises par la notation UML, d’autres seront à redéfinir. Décrivons à présent les concepts de base des modèles entité-association. Attribut (attribute) : donnée élémentaire, également appelée « propriété », qui sert à caractériser les entités et les associations. Entité (entity) : concept concret ou abstrait (fait, moment etc.) du monde à modéliser. Elle se représente par un cadre contenant le nom de l’entité et de ses attributs. Identifiant (identify) : attribut particulier permettant d’identifier chaque occurrence d’une entité. L’identifiant est souligné. L’entité permet de modéliser un ensemble d’objets de même nature, dignes d’intérêt dans le discours. La figure 1-1 décrit trois objets (des livres en l’occurrence). Si deux d’entre eux semblent identiques, il s’agit en fait de deux objets distincts pour la bibliothèque (livres numéros 1 et 3). Si le concepteur doit les considérer comme semblables, il n’utilisera pas l’attribut numero en tant qu’identifiant mais ISBN. Les autres attributs (titre, auteur, éditeur…) seront inchangés. Acheter le livre numérique UML 2 pour les bases de données UML 2 pour les bases de données 22 © Éditions Eyrolles Chaque propriété doit figurer une seule fois sur le modèle conceptuel (principe de nonredondance). Il faut éviter l’emploi de synonymes et de polysémies (mot présentant plusieurs sens) pour les attributs. Dans le même ordre d’idée, les mots réservés sont à proscrire. L’exemple 1-2 décrit une entité. Un poste de travail a trois attributs : un numéro de série (chaîne de caractères, ex : p1), une adresse IP (chaîne de caractères, ex : 130.20.53.60) et un type (chaîne de caractères, ex : Unix, Windows). Association (relationship) : l’association permet de relier plusieurs entités entre elles. Une association se représente à l’aide d’un ovale (ou losange) contenant son nom et ses éventuels attributs et connectant plusieurs entités. Les associations se déduisent en général des verbes du discours. Figure 1-1 Entité, attributs et identifiant Figure 1-2 Entité Numéro : 1 Pourquoi j’ai mangé mon père R. Lewis ISBN : 2-86869-502-7 Pourquoi j’ai mangé mon père R. Lewis ISBN : 2-86869-502-7 Voyage au bout de la nuit Céline ISBN : 2-07-036028-8 Numéro : 2 Numéro : 3 Poste_travail nserie adr_IP typeposte Nom de l’entité Entité Propriétés Identifiant Acheter le livre numérique UML 2 pour les bases de données © Éditions Eyrolles 23 chapitre n° 1 Le niveau conceptuel : face à face Merise/UML Dans notre exemple, les postes de travail sont connectés à un réseau local. Chaque poste est relié à un segment caractérisé par un indicatif IP, un nom et une longueur de câble. Le verbe « connecter » induit une association entre les entités Poste_travail et Segment. L’association Connecter est décrite dans la figure 1-3. Occurrence : élément particulier d’une entité ou d’une association. Dans l’exemple 1-4, le poste de travail p1 est un élément particulier du réseau local modélisé. Au niveau conceptuel, il s’agit d’une occurrence de l’entité Poste_travail. Pour sa part, le câble 130.20.53 est une occurrence de l’entité Segment. Un exemple d’occurrence de l’association Connecter est la connexion du poste p1 au segment 130.20.53. Figure 1-3 Association binaire Figure 1-4 Occurrences d’entités Figure 1-5 Occurrence d’une association Poste_travail nserie adr_IP typeposte Segment Connecter Association Nom de l’association Ind-IP nom longueur Poste_travail nserie adr_IP typeposte Segment Ind-IP nom longueur p1 130.20.53.60 Windows 130.20.53 ICARE 25 m 130.20.53 p1 Acheter le livre numérique UML 2 pour les bases de données UML 2 pour les bases de données 24 © Éditions Eyrolles Degré (degree) d’une association : nombre d’entités connectées à cette association. Le degré est aussi appelé « arité » de l’association. Dans Merise, on appelle « dimension » le nombre d’entités composant la relation ; on appelle « collection » la liste de ces entités. Une association qui relie deux entités est dite binaire, une association qui relie trois entités est dite ternaire, une association qui relie n entités est dite n-aire. Cardinalités (cardinality) : couple de valeurs (minimum, maximum) indiqué à l’extrémité de chaque lien d’une association. Il caractérise la nature de l’association en fonction des occurrences des entités concernées. Les cardinalités traduisent les possibilités de participation (mini, maxi) d’une occurrence quelconque d’une entité aux occurrences d’une association (donc des n-1 entités de sa collection). C’est pour cela que cette participation se note sur le lien entre l’entité et l’association. Dans l’exemple 1-6, les cardinalités décrivent la nature de l’association Connecter : un poste de travail est relié au plus à un segment et un segment de câble permet de connecter plusieurs postes de travail. L’interprétation des cardinalités constitue la différence fondamentale entre le formalisme du modèle de P. Chen et le MCD de Merise. Les cardinalités d’une association binaire dans le modèle de Chen et de Merise sont inversées au niveau de l’axe de représentation de l’association. Figure 1-6 Cardinalités Merise Poste_travail nserie adr_IP typeposte Segment Ind-IP nom long ueur Connecter 0,1 1,N Se lit : « Un poste de travail est connecté à 0 ou à 1 segment » Se lit : « Un segment connecte au minimum 1 et au maximum N postes » Acheter le livre numérique UML 2 pour les bases de données © Éditions Eyrolles 25 chapitre n° 1 Le niveau conceptuel : face à face Merise/UML Pour la petite histoire, dans les premières versions du formalisme entité-association français, les cardinalités étaient notées selon le formalisme américain, influencé par la majorité des relations binaires. C’est en réfléchissant sur les associations n-aires que le groupe de travail de l’AFCET a choisi (fin 1975) la notation actuelle. Ce choix a l’avantage d’être cohérent quel que soit le degré de l’association car les cardinalités sont indépendantes de la dimension de l’association. Les cardinalités d’une association n-aire sont interprétées différemment dans les deux formalismes. Dans le modèle de Chen, les contraintes de cardinalités d’une entité donnée sont lues à partir des autres entités de l’association (sens entités connectées Æ entité concernée), alors qu’avec Merise, elles sont lues du sens entité concernée Æ entités connectées. De plus, contrairement aux associations binaires et pour une modélisation donnée, les cardinalités n’auront pas les mêmes valeurs pour les deux formalismes [SOU 98]. Le problème de l’approche de P. Chen réside dans son manque de cohérence entre la représentation des associations binaires et des associations n-aires. La majorité des outils de conception américains n’ont pas suivi cette vision des choses car ils ont été incapables de programmer ce concept (même le produit Designer d’Oracle). Ces outils modélisent les associations n-aires en définissant n+1 entité(s), dont n sont reliées à une seule par des associations binaires un-àplusieurs. Il en va de même pour la notation UML, qui bien qu’adoptant la notation française pour les associations n-aires, voit limitée la programmation d’un tel concept (bon nombre d’outils comme Rational Rose supportent mal le concept d’association n-aire). D’ailleurs, dans son dernier ouvrage G. Booch [BOO 01] reconnaît un « problème » avec les associations n-aires (qu’il passe ensuite rapidement à la trappe…). Nous verrons ultérieurement qu’il n’y a pas de « problème » et reviendrons concrètement sur l’interprétation des cardinalités des associations n-aires dans le cadre de ces deux approches. L’exemple 1-7 décrit l’association binaire Connecter dans le formalisme proposé par P. Chen. Nous verrons que les cardinalités d’une association binaire dans le modèle de Chen et dans le formalisme UML sont positionnées de façon identique. Figure 1-7 Formalisme de P. Chen Poste_travail nserie adr_IP typeposte Segment Ind-IP nom longueur Connecter 1,N 0,1 Se lit : « Un poste de travail est connecté à 0 ou à 1 segment » Se lit : « Un segment connecte au minimum 1 et au maximum N postes » Acheter le livre numérique UML 2 pour les bases de données UML 2 pour les bases de données 26 © Éditions Eyrolles Notation UML En 1994, G. Booch, père de la méthode qui porte son nom [BOO 91], et J. Rumbaugh, principal acteur de la proposition de la méthode OMT [RUM 91], décident de rassembler leurs efforts au sein de la société Rational Software afin d’unifier leurs méthodes. Un an plus tard, I. Jacobson, créateur de la méthode OOSE [JAC 92], rejoint cette société pour intégrer sa méthode au projet UML. Les travaux ont continué après son adoption par d’importants acteurs du marché (HP, Microsoft, Oracle, Unisys). La version 1.0 d’UML est sortie en janvier 1997 et, au cours de cette même année, le langage UML a été accepté par l’OMG (Object Management Group). Il est actuellement disponible en version 2.0 (http://www.uml.org/). Les créateurs d’UML insistent tout particulièrement sur le fait que leur notation est un langage de modélisation objet et non pas une méthode. La notation UML peut ainsi se substituer sans perte de sémantique aux notations de Booch, d’OMT ou d’OOSE. Le lecteur intéressé dispose d’ouvrages de qualité en français sur la notation UML, citons [BOO 00], [MUL 00] et [ROQ 06]. Attribut (attribute) : donnée élémentaire servant à caractériser les classes et les relations. Classe (class) : description abstraite d’un ensemble d’objets de même structure et de même comportement extraits du monde à modéliser. Méthodes (methods) : opérations programmées sur les objets d’une classe. La description des classes UML se divise en trois compartiments contenant respectivement le nom de la classe, les attributs de la classe et la signature des méthodes de la classe. Figure 1-8 Évolution d’UML UML 1.3 (1999) UML 1.0 (1997) IBM et ObjecTime UML 0.9x Unified Method 0.8 (1995) Booch OM T OOS E Autres méthodes Rational, HP, Microsoft, Oracle, Unisys, etc. UML 1.5 UML 2.0 (2003) puis 2.1 (2006) Acheter le livre numérique UML 2 pour les bases de données © Éditions Eyrolles 27 chapitre n° 1 Le niveau conceptuel : face à face Merise/UML Bien qu’il n’était pas utile de disposer d’un identifiant pour chaque classe avec UML, il faudra définir un (ou plusieurs) attribut(s) assurant ce rôle dans le but de préparer le passage à SQL. Pensez à disposer l’identifiant en tête des attributs de la classe. L’exemple 1-9 décrit une classe avec la notation UML. Un poste de travail est caractérisé par trois attributs (ici le numéro de série jouera le rôle de l’identifiant) et dispose d’une méthode. Association (relationship) : l’association permet de relier une classe à plusieurs autres classes. Multiplicité (multiplicity) : chaque extrémité d’une association porte une indication de multiplicité. Elle exprime le nombre minimum et maximum d’objets d’une classe qui peuvent être reliés à des objets d’une autre classe. L’exemple 1-10 décrit l’association modélisant la connexion des postes aux segments selon la notation UML. Les classes reliées entre elles sont Poste_travail et Segment. Comme nous l’avons évoqué précédemment, les cardinalités dans le modèle de Chen et pour le formalisme UML sont positionnées à l’identique sur l’axe de représentation de l’association. Figure 1-9 Classe UML Figure 1-10 Association UML Poste_travail nserie adr_IP typeposte Nom de la Classe classe Attributs connexion() Méthode Segment Ind-IP nom longueur Poste_travail nserie adr_IP typeposte 1..* 0..1 Se lit : « Un poste de travail est connecté à 0 ou à 1 segment » Se lit : « Un segment connecte au minimum 1 et au maximum N postes » Acheter le livre numérique UML 2 pour les bases de données UML 2 pour les bases de données 28 © Éditions Eyrolles La spécification UML 2 (Superstructure - version 2.0 - formal/05-07-04) indique qu’une association est représentée par une ligne connectant deux classes (dans le contexte d’un diagramme de classes) ou une classe avec elle-même. Il y est même conseillé de soigner la présentation des segments de droites quand le lien n’est pas rectiligne. « A binary association is normally drawn as a solid line connecting two classifiers, or a solid line connecting a single classifier to itself (the two ends are distinct). A line may consist of one or more connected segments. The individual segments of the line itself have no semantic significance, but they may be graphically meaningful to a tool in dragging or resizing an association symbol ». Nous détaillerons plus loin certaines caractéristiques des associations qu’il est intéressant d’utiliser dans un contexte de bases de données (nommage, rôle, classe-association). Terminologie et conventions Les tableaux 1.1 et 1.2 établissent un parallèle entre les formalismes du modèle entité-association et de la notation UML. Au niveau de la conception, il est important de déterminer correctement le chiffre maximal des cardinalités. En effet, les méthodes de conception reposent sur la transformation des entités Tableau 1.1 Terminologie Entité-association UML Entité Classe Association (Relation) Association (Relation) Occurrence Objet Cardinalité Multiplicité Modèle conceptuel de donnés (Merise) Diagramme de classes Tableau 1.2 Cardinalités/multiplicités Cardinalités Multiplicités d’UML 0,1 0..1 1,1 11 1. Ou absence de cardinalité (par défaut) 0,N 0..* ou * 1,N 1..* N,N2 2. N,N : permet par exemple de spécifier qu’un segment doit connecter entre trois postes et huit postes. Les cardinalités du côté Poste_travail seront (3,8) dans le modèle entité-association et 3..8 avec UML. N..N Acheter le livre numérique UML 2 pour les bases de données © Éditions Eyrolles 29 chapitre n° 1 Le niveau conceptuel : face à face Merise/UML (ou classes) et des associations en fonction des cardinalités maximales (le processus que nous proposons dans cet ouvrage ne déroge pas à cette règle). Les cardinalités minimales précisent les liens d’associations et nécessitent parfois l’intervention d’un programmeur, mais elles n’ont pas une grande influence sur la construction de la base de données. Notez que la cardinalité minimale 0 autorise une valeur NULL dans la base, que la cardinalité minimale 1 interdit une valeur NULL et que la cardinalité minimale N induit une vérification de cette contrainte, soit par programme, soit par déclencheur (trigger). Merise appelle CIF (contrainte d’intégrité fonctionnelle) une association ayant un lien de cardinalité maximale égale à 1. Cette CIF est notée d’une flèche sur le lien connecté à l’entité cible. Concernant les CIF de Merise (et Merise/2), prenons l’exemple d’un employé travaillant pour un département qui regroupe plusieurs employés. L’association Travailler est CIF car il y a (0,1) ou (1,1) du côté de l’entité Employe. La flèche sera positionnée sur le lien entre Travailler et Departement et ciblera cette dernière entité. Nous verrons plus loin des exemples construits avec l’outil Win’Design. Comparons à présent les formalismes en fonction des différents types d’associations. Étudions successivement les associations de type un-à-un (one-to-one), un-à-plusieurs (one-to-many), plusieurs-à-plusieurs (many-to-many) [MAR 88]. Nous utilisons cette classification tout au long de l’ouvrage. Associations un-à-un On utilise une association un-à-un entre deux entités (classes) si toute occurrence (objet) d’une entité (classe) est en rapport au plus avec une occurrence (objet) de l’autre entité (classe) et inversement. Ce sont les associations les moins répandues. Une association un-à-un est une association binaire ayant : • la cardinalité maximale 1 sur chaque lien dans le formalisme entité-association ; • la multiplicité 0..1 ou 1 sur chaque lien dans le cadre de la notation UML. Figure 1-11 Association un-à-un x x x x x Acheter le livre numérique UML 2 pour les bases de données UML 2 pour les bases de données 30 © Éditions Eyrolles Les équivalences entre cardinalités et multiplicités d’une association un-à-un sont indiquées dans le tableau 1-3. Les cardinalités 1,1–1,1 sont une anomalie de modélisation car elles expriment une correspondance biunivoque et totale entre les deux entités, à tel point qu’elles sont quasiment « confondues ». Modèles entité-association Dans l’exemple 1-12, un étudiant est caractérisé par un numéro INSEE et un nom. Chaque étudiant doit effectuer un seul stage en entreprise. Un stage est désigné par un numéro, un thème et le nom du responsable ; il est suivi par un seul étudiant. Il suffit d’inverser les cardinalités pour décrire l’association Effectuer dans le formalisme de Chen. Notation UML L’exemple 1-13 décrit la notation UML qui représente l’association un-à-un. Tableau 1.3 Associations un-à-un Cardinalités Multiplicités UML 0,1 - 0,1 0..1 - 0..1 0,1 - 1,1 0..1 - 1 1,1 - 1,1 1 - 1 Figure 1-12 MCD d’une association un-à-un Figure 1-13 Association un-à-un UML Etudiant ninsee nom Stage numsta theme responsable Effectuer 1,1 0,1 Etudiant ninsee nom Stage 0..1 1 numsta theme responsable Acheter le livre numérique UML 2 pour les bases de données © Éditions Eyrolles 31 chapitre n° 1 Le niveau conceptuel : face à face Merise/UML Avec UML, une association peut être nommée. Le nom apparaît au milieu du lien d’association. Il est recommandé de nommer les associations par une forme verbale active ou passive. Dans les deux cas, le sens de la lecture peut être précisé au moyen d’un petit triangle dirigé vers la classe désignée par la forme verbale. Il est à noter qu’on ne retrouve pas toujours ce nom au niveau du code SQL. Dans notre exemple, nous utilisons une forme passive pour nommer l’association modélisant les affectations des stages, à savoir Est_effectue_par. Pour améliorer la lecture du diagramme, il est possible de décorer le nom de l’association par un symbole précisant le sens de lecture. Associations un-à-plusieurs On utilise une association un-à-plusieurs entre deux entités/classes si une occurrence/objet d’une entité/classe peut être en rapport avec plusieurs occurrences/objets de l’autre entité/classe et pas inversement. Une association un-à-plusieurs (nommée aussi « père-fils »), est une association binaire ayant : • une cardinalité maximale N et une cardinalité maximale 1 dans le formalisme entité-association ; • une multiplicité * ou 1..* d’un côté et une multiplicité maximale 1 de l’autre avec UML. Figure 1-14 Association nommée Est_effectue_par 0..1 1 Etudiant Stage ... ... Figure 1-15 Association un-à-plusieurs x x x x x Acheter le livre numérique UML 2 pour les bases de données UML 2 pour les bases de données 32 © Éditions Eyrolles Les équivalences entre cardinalités et multiplicités d’une association un-à-plusieurs sont indiquées dans le tableau 1.4. Modèles entité-association Dans la figure 1-16, un professeur, caractérisé par un numéro, un nom et un grade, peut être responsable de plusieurs unités de valeurs (UV). Chaque UV, désignée par un numéro, un titre et une année de création, est placée sous la responsabilité d’un seul professeur. Il existe des professeurs qui ne sont responsables d’aucune UV. L’entité Professeur est dite « père » car un professeur est en relation avec plusieurs UV « fils ». Il suffit d’inverser les cardinalités pour décrire l’association Responsable dans le formalisme de Chen. Notation UML Le diagramme de classes UML équivalent est représenté dans la figure 1-17. Tableau 1.4 Associations un-à-plusieurs Cardinalités EA Multiplicités UML 0,1 – 0,N 0..1 - * 0,1 – 1,N 0..1 - 1..* 1,1 – 0,N 1 - * 1,1 – 1,N 1 - 1..* Figure 1-16 MCD d’une association un-à-plusieurs Figure 1-17 Association un-à-plusieurs UML Professeur numprof nom grade UV numUV titre datecreation Responsable 0,N 1,1 père fils Professeur numprof nom grade UV * numUV titre datecreation 1 responsable Acheter le livre numérique UML 2 pour les bases de données © Éditions Eyrolles 33 chapitre n° 1 Le niveau conceptuel : face à face Merise/UML Avec UML, l’extrémité d’une association peut être enrichie d’un rôle, qui décrit la façon dont la classe perçoit l’autre classe (ou les autres classes pour les associations n-aires) via l’association. Un rôle est généralement désigné par une forme nominale ou verbale. Le rôle est placé à une extrémité du lien d’association, il se distingue ainsi du nom de l’association situé au centre du lien. Il est particulièrement intéressant de nommer les rôles ou de nommer les associations lorsque plusieurs associations relient deux mêmes classes. En général, il n’y a pas de corrélation entre les objets qui participent aux différentes associations entre deux mêmes classes. Chaque lien exprime un état de fait distinct. Le rôle est indispensable pour les associations réflexives (étudiées plus loin dans ce chapitre). Il est à noter que le concept de rôle existait aussi avec Merise/2. Nous verrons au chapitre 4 que cette notion est prise en compte par les outils du marché. Le rôle s’affiche à chaque extrémité du lien d’association. De même que pour les noms d’associations, on ne retrouve pas toujours le nom des rôles au niveau du code SQL2, mais on peut les retrouver dans du code SQL3 par l’intermédiaire des noms de références ou de collections. Dans l’exemple 1-18, le professeur perçoit les UV comme une certaine responsabilité et une UV perçoit un professeur comme son responsable. Bien qu’il soit possible d’utiliser conjointement les associations nommées et les rôles, il semble préférable d’opter pour l’une ou l’autre de ces deux techniques au sein d’un même diagramme de classes. Les développeurs objet préfèrent souvent le rôle à l’association nommée. Beaucoup d’outils rendent le rôle obligatoire. Associations plusieurs-à-plusieurs On utilise une association plusieurs-à-plusieurs entre deux entités (classes) si une occurrence (objet) d’une entité (classe) peut être en rapport avec plusieurs occurrences (objets) de l’autre entité (classe) et inversement. Figure 1-18 Rôles avec UML responsable responsabilité * Professeur ... ... UV 1 Acheter le livre numérique UML 2 pour les bases de données
16 téléchargements

Noter ce document

-- / 20
Votre document est en cours de traitement

Contenu de ce document de Informatique > Analyse objet UML/Merise

Plan :

© Éditions Eyrolles 19 Chapitre 1 Le niveau conceptuel : face à face Merise/UML You cannot design databases without a familiarity with the techniques of the ER diagramming. Database Design for Smarties, Using UML for Data Modeling, R.J. Muller, Morgan & Kaufman, 1999 Ce chapitre détaille la première étape de conception d’une base de données : il s’agit d’élaborer un schéma conceptuel exprimé soit dans un formalisme de type entité-association avec ses extensions issues de Merise/2 soit à l’aide de la notation UML 2. Il existe d’autres formalismes mais ils sont bien moins employés par la communauté francophone, citons le modèle entité-relation américain [CHE 76], NIAM (Nijssen Information Analysis Method) du nom du chercheur hollandais, ORM (Object Role Model) [HAL 01] qui étend et a pour but de remplacer NIAM, le langage Z [ABR 74], IDEF1X, etc. D’un point de vue international, la troisième partie de la norme, l’ISO/IEC 11179 (Technologies de l’information - Coordination de la normalisation des éléments de données) décrit la façon dont doivent être organisées les données de façon sémantique. Cependant, le modèle conceptuel ne décrit en aucune façon une méthode logique pour représenter les données dans un ordinateur. Dans ce chapitre, nous expliquons comment représenter : ● les faits et les événements qui décrivent le système à modéliser ; ● les différentes contraintes à prendre en compte (exemples : une compagnie aérienne n’affrète pas ses propres avions, un pilote ne doit voler que s’il détient une licence en cours de validité et une qualification valide pour le type d’avion en question, etc.) ; ● l’héritage. Le schéma conceptuel exprime une vue abstraite de la base de données. Cette vue est représentée de manière graphique – on parle de diagramme, de schéma, de modèle, même si ce dernier mot est employé à toutes les sauces. Acheter le livre numérique UML 2 pour les bases de données UML 2 pour les bases de données 20 © Éditions Eyrolles Il existe une différence entre un modèle (par exemple le modèle conceptuel de données) et un formalisme (dans lequel est décrit un modèle et qui n’exprime que l’aspect représentation). Ainsi, on parle de la modélisation conceptuelle des données suivant le formalisme entité-association ou suivant la notation UML. La modélisation est un processus très important car il conditionne la structure de la base de données qui sera déduite des différents éléments du schéma conceptuel : entités (ou classes), associations et contraintes. Généralités Afin de préserver l’indépendance entre les données et les traitements, le schéma conceptuel ne doit pas comporter d’indications physiques. Pas question donc d’indiquer sur un diagramme une quelconque information sur l’indexage, l’adressage ou tout autre détail concernant l’accès à la mémoire. Le schéma conceptuel doit contenir plus d’informations qu’on pouvait en trouver au début des fichiers COBOL, lorsqu’il s’agissait de déclarer les structures de données manipulées par les programmes eux-mêmes (la comparaison est un peu osée, mais les développeurs mûrs feront le rapprochement). Le concepteur devra ajouter au schéma les règles de gestion (aussi appelées « règles de sécurité », « d’intégrité » ou « de fonctionnement »). L’objectif d’un schéma conceptuel ne peut pas être de décrire complètement un système, il modélise seulement l’aspect statique des données. Un schéma va aussi servir à communiquer et échanger des points de vue afin d’avoir, entre différents acteurs, une compréhension commune et précise d’un système à modéliser. Dans le monde de l’industrie, ces schémas ne sont plus manuscrits mais manipulés à l’aide d’outils graphiques (étudiés au chapitre 4). Face à face Merise/UML Nous réalisons ici un face à face entre le modèle conceptuel des données de Merise et le diagramme de classes de la notation UML. Pour chaque caractéristique, nous présenterons les différences entre les deux notations avant de tirer un bilan. Concepts de base Modèles entité-association Le modèle entité-association, appelé « entité-relation » (entity-relationship) chez les Anglo- Saxons, a été proposé en 1976 des deux côtés de l’Atlantique. Si la paternité de ce modèle est Acheter le livre numérique UML 2 pour les bases de données © Éditions Eyrolles 21 chapitre n° 1 Le niveau conceptuel : face à face Merise/UML attribuée à P. Chen [CHE 76], [MOU 76], d’autres études proposent au même moment un modèle avec des concepts similaires. Il est d’ailleurs amusant de lire le titre de l’article de H. Tardieu [TAR 79] A Method, A Formalism and Tools for Database Design (Three Years of Experimental Practice). Le formalisme Merise a d’abord été nommé entité-relation. L’appellation entité-association, dans le cadre de Merise, est apparue au cours d’un congrès de l’AFCET en 1991. S’il est incontestable que P. Chen a fait la première publication en langue anglaise, l’équipe animée par H. Tardieu travaillait depuis 1974 sur le projet I(N)RIA « Méthode, Modèles et Outils pour la conception d’une base de données », jalonné par plusieurs publications dans l’environnement français. Le formalisme s’appelait alors « formalisme individuel », terme utilisé à la place d’entité. Au congrès IFIP de Namur en 1975, les deux approches ont été confrontées. Les publications respectives s’entremêlent au point qu’il est très difficile d’attribuer une paternité mais plutôt une simultanéité de publication. Le modèle conceptuel des données (MCD) de Merise [TAR 83], [TAR 91] issu des travaux de [TAR 79b], a été étendu par les travaux du groupe 135 de l’AFCET avec la version 2 de Merise [PAN 94]. La notation Merise/2 a été introduite par la société SEMA. À cette période, les travaux de l’AFCET étaient plus complets et consensuels que ceux de SEMA [NAN 01], mais l’appellation est passée dans l’usage courant. Les ouvrages et articles de recherche américains ignorent royalement depuis près de vingt ans le modèle européen, qui a pourtant fait son chemin. Peut-être est-ce le fruit de vieilles rancoeurs ? Toujours est-il que le modèle Merise/2 est un modèle riche, qui propose de nombreuses contraintes sémantiques. Certaines contraintes ont été reprises par la notation UML, d’autres seront à redéfinir. Décrivons à présent les concepts de base des modèles entité-association. Attribut (attribute) : donnée élémentaire, également appelée « propriété », qui sert à caractériser les entités et les associations. Entité (entity) : concept concret ou abstrait (fait, moment etc.) du monde à modéliser. Elle se représente par un cadre contenant le nom de l’entité et de ses attributs. Identifiant (identify) : attribut particulier permettant d’identifier chaque occurrence d’une entité. L’identifiant est souligné. L’entité permet de modéliser un ensemble d’objets de même nature, dignes d’intérêt dans le discours. La figure 1-1 décrit trois objets (des livres en l’occurrence). Si deux d’entre eux semblent identiques, il s’agit en fait de deux objets distincts pour la bibliothèque (livres numéros 1 et 3). Si le concepteur doit les considérer comme semblables, il n’utilisera pas l’attribut numero en tant qu’identifiant mais ISBN. Les autres attributs (titre, auteur, éditeur…) seront inchangés. Acheter le livre numérique UML 2 pour les bases de données UML 2 pour les bases de données 22 © Éditions Eyrolles Chaque propriété doit figurer une seule fois sur le modèle conceptuel (principe de nonredondance). Il faut éviter l’emploi de synonymes et de polysémies (mot présentant plusieurs sens) pour les attributs. Dans le même ordre d’idée, les mots réservés sont à proscrire. L’exemple 1-2 décrit une entité. Un poste de travail a trois attributs : un numéro de série (chaîne de caractères, ex : p1), une adresse IP (chaîne de caractères, ex : 130.20.53.60) et un type (chaîne de caractères, ex : Unix, Windows). Association (relationship) : l’association permet de relier plusieurs entités entre elles. Une association se représente à l’aide d’un ovale (ou losange) contenant son nom et ses éventuels attributs et connectant plusieurs entités. Les associations se déduisent en général des verbes du discours. Figure 1-1 Entité, attributs et identifiant Figure 1-2 Entité Numéro : 1 Pourquoi j’ai mangé mon père R. Lewis ISBN : 2-86869-502-7 Pourquoi j’ai mangé mon père R. Lewis ISBN : 2-86869-502-7 Voyage au bout de la nuit Céline ISBN : 2-07-036028-8 Numéro : 2 Numéro : 3 Poste_travail nserie adr_IP typeposte Nom de l’entité Entité Propriétés Identifiant Acheter le livre numérique UML 2 pour les bases de données © Éditions Eyrolles 23 chapitre n° 1 Le niveau conceptuel : face à face Merise/UML Dans notre exemple, les postes de travail sont connectés à un réseau local. Chaque poste est relié à un segment caractérisé par un indicatif IP, un nom et une longueur de câble. Le verbe « connecter » induit une association entre les entités Poste_travail et Segment. L’association Connecter est décrite dans la figure 1-3. Occurrence : élément particulier d’une entité ou d’une association. Dans l’exemple 1-4, le poste de travail p1 est un élément particulier du réseau local modélisé. Au niveau conceptuel, il s’agit d’une occurrence de l’entité Poste_travail. Pour sa part, le câble 130.20.53 est une occurrence de l’entité Segment. Un exemple d’occurrence de l’association Connecter est la connexion du poste p1 au segment 130.20.53. Figure 1-3 Association binaire Figure 1-4 Occurrences d’entités Figure 1-5 Occurrence d’une association Poste_travail nserie adr_IP typeposte Segment Connecter Association Nom de l’association Ind-IP nom longueur Poste_travail nserie adr_IP typeposte Segment Ind-IP nom longueur p1 130.20.53.60 Windows 130.20.53 ICARE 25 m 130.20.53 p1 Acheter le livre numérique UML 2 pour les bases de données UML 2 pour les bases de données 24 © Éditions Eyrolles Degré (degree) d’une association : nombre d’entités connectées à cette association. Le degré est aussi appelé « arité » de l’association. Dans Merise, on appelle « dimension » le nombre d’entités composant la relation ; on appelle « collection » la liste de ces entités. Une association qui relie deux entités est dite binaire, une association qui relie trois entités est dite ternaire, une association qui relie n entités est dite n-aire. Cardinalités (cardinality) : couple de valeurs (minimum, maximum) indiqué à l’extrémité de chaque lien d’une association. Il caractérise la nature de l’association en fonction des occurrences des entités concernées. Les cardinalités traduisent les possibilités de participation (mini, maxi) d’une occurrence quelconque d’une entité aux occurrences d’une association (donc des n-1 entités de sa collection). C’est pour cela que cette participation se note sur le lien entre l’entité et l’association. Dans l’exemple 1-6, les cardinalités décrivent la nature de l’association Connecter : un poste de travail est relié au plus à un segment et un segment de câble permet de connecter plusieurs postes de travail. L’interprétation des cardinalités constitue la différence fondamentale entre le formalisme du modèle de P. Chen et le MCD de Merise. Les cardinalités d’une association binaire dans le modèle de Chen et de Merise sont inversées au niveau de l’axe de représentation de l’association. Figure 1-6 Cardinalités Merise Poste_travail nserie adr_IP typeposte Segment Ind-IP nom long ueur Connecter 0,1 1,N Se lit : « Un poste de travail est connecté à 0 ou à 1 segment » Se lit : « Un segment connecte au minimum 1 et au maximum N postes » Acheter le livre numérique UML 2 pour les bases de données © Éditions Eyrolles 25 chapitre n° 1 Le niveau conceptuel : face à face Merise/UML Pour la petite histoire, dans les premières versions du formalisme entité-association français, les cardinalités étaient notées selon le formalisme américain, influencé par la majorité des relations binaires. C’est en réfléchissant sur les associations n-aires que le groupe de travail de l’AFCET a choisi (fin 1975) la notation actuelle. Ce choix a l’avantage d’être cohérent quel que soit le degré de l’association car les cardinalités sont indépendantes de la dimension de l’association. Les cardinalités d’une association n-aire sont interprétées différemment dans les deux formalismes. Dans le modèle de Chen, les contraintes de cardinalités d’une entité donnée sont lues à partir des autres entités de l’association (sens entités connectées Æ entité concernée), alors qu’avec Merise, elles sont lues du sens entité concernée Æ entités connectées. De plus, contrairement aux associations binaires et pour une modélisation donnée, les cardinalités n’auront pas les mêmes valeurs pour les deux formalismes [SOU 98]. Le problème de l’approche de P. Chen réside dans son manque de cohérence entre la représentation des associations binaires et des associations n-aires. La majorité des outils de conception américains n’ont pas suivi cette vision des choses car ils ont été incapables de programmer ce concept (même le produit Designer d’Oracle). Ces outils modélisent les associations n-aires en définissant n+1 entité(s), dont n sont reliées à une seule par des associations binaires un-àplusieurs. Il en va de même pour la notation UML, qui bien qu’adoptant la notation française pour les associations n-aires, voit limitée la programmation d’un tel concept (bon nombre d’outils comme Rational Rose supportent mal le concept d’association n-aire). D’ailleurs, dans son dernier ouvrage G. Booch [BOO 01] reconnaît un « problème » avec les associations n-aires (qu’il passe ensuite rapidement à la trappe…). Nous verrons ultérieurement qu’il n’y a pas de « problème » et reviendrons concrètement sur l’interprétation des cardinalités des associations n-aires dans le cadre de ces deux approches. L’exemple 1-7 décrit l’association binaire Connecter dans le formalisme proposé par P. Chen. Nous verrons que les cardinalités d’une association binaire dans le modèle de Chen et dans le formalisme UML sont positionnées de façon identique. Figure 1-7 Formalisme de P. Chen Poste_travail nserie adr_IP typeposte Segment Ind-IP nom longueur Connecter 1,N 0,1 Se lit : « Un poste de travail est connecté à 0 ou à 1 segment » Se lit : « Un segment connecte au minimum 1 et au maximum N postes » Acheter le livre numérique UML 2 pour les bases de données UML 2 pour les bases de données 26 © Éditions Eyrolles Notation UML En 1994, G. Booch, père de la méthode qui porte son nom [BOO 91], et J. Rumbaugh, principal acteur de la proposition de la méthode OMT [RUM 91], décident de rassembler leurs efforts au sein de la société Rational Software afin d’unifier leurs méthodes. Un an plus tard, I. Jacobson, créateur de la méthode OOSE [JAC 92], rejoint cette société pour intégrer sa méthode au projet UML. Les travaux ont continué après son adoption par d’importants acteurs du marché (HP, Microsoft, Oracle, Unisys). La version 1.0 d’UML est sortie en janvier 1997 et, au cours de cette même année, le langage UML a été accepté par l’OMG (Object Management Group). Il est actuellement disponible en version 2.0 (http://www.uml.org/). Les créateurs d’UML insistent tout particulièrement sur le fait que leur notation est un langage de modélisation objet et non pas une méthode. La notation UML peut ainsi se substituer sans perte de sémantique aux notations de Booch, d’OMT ou d’OOSE. Le lecteur intéressé dispose d’ouvrages de qualité en français sur la notation UML, citons [BOO 00], [MUL 00] et [ROQ 06]. Attribut (attribute) : donnée élémentaire servant à caractériser les classes et les relations. Classe (class) : description abstraite d’un ensemble d’objets de même structure et de même comportement extraits du monde à modéliser. Méthodes (methods) : opérations programmées sur les objets d’une classe. La description des classes UML se divise en trois compartiments contenant respectivement le nom de la classe, les attributs de la classe et la signature des méthodes de la classe. Figure 1-8 Évolution d’UML UML 1.3 (1999) UML 1.0 (1997) IBM et ObjecTime UML 0.9x Unified Method 0.8 (1995) Booch OM T OOS E Autres méthodes Rational, HP, Microsoft, Oracle, Unisys, etc. UML 1.5 UML 2.0 (2003) puis 2.1 (2006) Acheter le livre numérique UML 2 pour les bases de données © Éditions Eyrolles 27 chapitre n° 1 Le niveau conceptuel : face à face Merise/UML Bien qu’il n’était pas utile de disposer d’un identifiant pour chaque classe avec UML, il faudra définir un (ou plusieurs) attribut(s) assurant ce rôle dans le but de préparer le passage à SQL. Pensez à disposer l’identifiant en tête des attributs de la classe. L’exemple 1-9 décrit une classe avec la notation UML. Un poste de travail est caractérisé par trois attributs (ici le numéro de série jouera le rôle de l’identifiant) et dispose d’une méthode. Association (relationship) : l’association permet de relier une classe à plusieurs autres classes. Multiplicité (multiplicity) : chaque extrémité d’une association porte une indication de multiplicité. Elle exprime le nombre minimum et maximum d’objets d’une classe qui peuvent être reliés à des objets d’une autre classe. L’exemple 1-10 décrit l’association modélisant la connexion des postes aux segments selon la notation UML. Les classes reliées entre elles sont Poste_travail et Segment. Comme nous l’avons évoqué précédemment, les cardinalités dans le modèle de Chen et pour le formalisme UML sont positionnées à l’identique sur l’axe de représentation de l’association. Figure 1-9 Classe UML Figure 1-10 Association UML Poste_travail nserie adr_IP typeposte Nom de la Classe classe Attributs connexion() Méthode Segment Ind-IP nom longueur Poste_travail nserie adr_IP typeposte 1..* 0..1 Se lit : « Un poste de travail est connecté à 0 ou à 1 segment » Se lit : « Un segment connecte au minimum 1 et au maximum N postes » Acheter le livre numérique UML 2 pour les bases de données UML 2 pour les bases de données 28 © Éditions Eyrolles La spécification UML 2 (Superstructure - version 2.0 - formal/05-07-04) indique qu’une association est représentée par une ligne connectant deux classes (dans le contexte d’un diagramme de classes) ou une classe avec elle-même. Il y est même conseillé de soigner la présentation des segments de droites quand le lien n’est pas rectiligne. « A binary association is normally drawn as a solid line connecting two classifiers, or a solid line connecting a single classifier to itself (the two ends are distinct). A line may consist of one or more connected segments. The individual segments of the line itself have no semantic significance, but they may be graphically meaningful to a tool in dragging or resizing an association symbol ». Nous détaillerons plus loin certaines caractéristiques des associations qu’il est intéressant d’utiliser dans un contexte de bases de données (nommage, rôle, classe-association). Terminologie et conventions Les tableaux 1.1 et 1.2 établissent un parallèle entre les formalismes du modèle entité-association et de la notation UML. Au niveau de la conception, il est important de déterminer correctement le chiffre maximal des cardinalités. En effet, les méthodes de conception reposent sur la transformation des entités Tableau 1.1 Terminologie Entité-association UML Entité Classe Association (Relation) Association (Relation) Occurrence Objet Cardinalité Multiplicité Modèle conceptuel de donnés (Merise) Diagramme de classes Tableau 1.2 Cardinalités/multiplicités Cardinalités Multiplicités d’UML 0,1 0..1 1,1 11 1. Ou absence de cardinalité (par défaut) 0,N 0..* ou * 1,N 1..* N,N2 2. N,N : permet par exemple de spécifier qu’un segment doit connecter entre trois postes et huit postes. Les cardinalités du côté Poste_travail seront (3,8) dans le modèle entité-association et 3..8 avec UML. N..N Acheter le livre numérique UML 2 pour les bases de données © Éditions Eyrolles 29 chapitre n° 1 Le niveau conceptuel : face à face Merise/UML (ou classes) et des associations en fonction des cardinalités maximales (le processus que nous proposons dans cet ouvrage ne déroge pas à cette règle). Les cardinalités minimales précisent les liens d’associations et nécessitent parfois l’intervention d’un programmeur, mais elles n’ont pas une grande influence sur la construction de la base de données. Notez que la cardinalité minimale 0 autorise une valeur NULL dans la base, que la cardinalité minimale 1 interdit une valeur NULL et que la cardinalité minimale N induit une vérification de cette contrainte, soit par programme, soit par déclencheur (trigger). Merise appelle CIF (contrainte d’intégrité fonctionnelle) une association ayant un lien de cardinalité maximale égale à 1. Cette CIF est notée d’une flèche sur le lien connecté à l’entité cible. Concernant les CIF de Merise (et Merise/2), prenons l’exemple d’un employé travaillant pour un département qui regroupe plusieurs employés. L’association Travailler est CIF car il y a (0,1) ou (1,1) du côté de l’entité Employe. La flèche sera positionnée sur le lien entre Travailler et Departement et ciblera cette dernière entité. Nous verrons plus loin des exemples construits avec l’outil Win’Design. Comparons à présent les formalismes en fonction des différents types d’associations. Étudions successivement les associations de type un-à-un (one-to-one), un-à-plusieurs (one-to-many), plusieurs-à-plusieurs (many-to-many) [MAR 88]. Nous utilisons cette classification tout au long de l’ouvrage. Associations un-à-un On utilise une association un-à-un entre deux entités (classes) si toute occurrence (objet) d’une entité (classe) est en rapport au plus avec une occurrence (objet) de l’autre entité (classe) et inversement. Ce sont les associations les moins répandues. Une association un-à-un est une association binaire ayant : • la cardinalité maximale 1 sur chaque lien dans le formalisme entité-association ; • la multiplicité 0..1 ou 1 sur chaque lien dans le cadre de la notation UML. Figure 1-11 Association un-à-un x x x x x Acheter le livre numérique UML 2 pour les bases de données UML 2 pour les bases de données 30 © Éditions Eyrolles Les équivalences entre cardinalités et multiplicités d’une association un-à-un sont indiquées dans le tableau 1-3. Les cardinalités 1,1–1,1 sont une anomalie de modélisation car elles expriment une correspondance biunivoque et totale entre les deux entités, à tel point qu’elles sont quasiment « confondues ». Modèles entité-association Dans l’exemple 1-12, un étudiant est caractérisé par un numéro INSEE et un nom. Chaque étudiant doit effectuer un seul stage en entreprise. Un stage est désigné par un numéro, un thème et le nom du responsable ; il est suivi par un seul étudiant. Il suffit d’inverser les cardinalités pour décrire l’association Effectuer dans le formalisme de Chen. Notation UML L’exemple 1-13 décrit la notation UML qui représente l’association un-à-un. Tableau 1.3 Associations un-à-un Cardinalités Multiplicités UML 0,1 - 0,1 0..1 - 0..1 0,1 - 1,1 0..1 - 1 1,1 - 1,1 1 - 1 Figure 1-12 MCD d’une association un-à-un Figure 1-13 Association un-à-un UML Etudiant ninsee nom Stage numsta theme responsable Effectuer 1,1 0,1 Etudiant ninsee nom Stage 0..1 1 numsta theme responsable Acheter le livre numérique UML 2 pour les bases de données © Éditions Eyrolles 31 chapitre n° 1 Le niveau conceptuel : face à face Merise/UML Avec UML, une association peut être nommée. Le nom apparaît au milieu du lien d’association. Il est recommandé de nommer les associations par une forme verbale active ou passive. Dans les deux cas, le sens de la lecture peut être précisé au moyen d’un petit triangle dirigé vers la classe désignée par la forme verbale. Il est à noter qu’on ne retrouve pas toujours ce nom au niveau du code SQL. Dans notre exemple, nous utilisons une forme passive pour nommer l’association modélisant les affectations des stages, à savoir Est_effectue_par. Pour améliorer la lecture du diagramme, il est possible de décorer le nom de l’association par un symbole précisant le sens de lecture. Associations un-à-plusieurs On utilise une association un-à-plusieurs entre deux entités/classes si une occurrence/objet d’une entité/classe peut être en rapport avec plusieurs occurrences/objets de l’autre entité/classe et pas inversement. Une association un-à-plusieurs (nommée aussi « père-fils »), est une association binaire ayant : • une cardinalité maximale N et une cardinalité maximale 1 dans le formalisme entité-association ; • une multiplicité * ou 1..* d’un côté et une multiplicité maximale 1 de l’autre avec UML. Figure 1-14 Association nommée Est_effectue_par 0..1 1 Etudiant Stage ... ... Figure 1-15 Association un-à-plusieurs x x x x x Acheter le livre numérique UML 2 pour les bases de données UML 2 pour les bases de données 32 © Éditions Eyrolles Les équivalences entre cardinalités et multiplicités d’une association un-à-plusieurs sont indiquées dans le tableau 1.4. Modèles entité-association Dans la figure 1-16, un professeur, caractérisé par un numéro, un nom et un grade, peut être responsable de plusieurs unités de valeurs (UV). Chaque UV, désignée par un numéro, un titre et une année de création, est placée sous la responsabilité d’un seul professeur. Il existe des professeurs qui ne sont responsables d’aucune UV. L’entité Professeur est dite « père » car un professeur est en relation avec plusieurs UV « fils ». Il suffit d’inverser les cardinalités pour décrire l’association Responsable dans le formalisme de Chen. Notation UML Le diagramme de classes UML équivalent est représenté dans la figure 1-17. Tableau 1.4 Associations un-à-plusieurs Cardinalités EA Multiplicités UML 0,1 – 0,N 0..1 - * 0,1 – 1,N 0..1 - 1..* 1,1 – 0,N 1 - * 1,1 – 1,N 1 - 1..* Figure 1-16 MCD d’une association un-à-plusieurs Figure 1-17 Association un-à-plusieurs UML Professeur numprof nom grade UV numUV titre datecreation Responsable 0,N 1,1 père fils Professeur numprof nom grade UV * numUV titre datecreation 1 responsable Acheter le livre numérique UML 2 pour les bases de données © Éditions Eyrolles 33 chapitre n° 1 Le niveau conceptuel : face à face Merise/UML Avec UML, l’extrémité d’une association peut être enrichie d’un rôle, qui décrit la façon dont la classe perçoit l’autre classe (ou les autres classes pour les associations n-aires) via l’association. Un rôle est généralement désigné par une forme nominale ou verbale. Le rôle est placé à une extrémité du lien d’association, il se distingue ainsi du nom de l’association situé au centre du lien. Il est particulièrement intéressant de nommer les rôles ou de nommer les associations lorsque plusieurs associations relient deux mêmes classes. En général, il n’y a pas de corrélation entre les objets qui participent aux différentes associations entre deux mêmes classes. Chaque lien exprime un état de fait distinct. Le rôle est indispensable pour les associations réflexives (étudiées plus loin dans ce chapitre). Il est à noter que le concept de rôle existait aussi avec Merise/2. Nous verrons au chapitre 4 que cette notion est prise en compte par les outils du marché. Le rôle s’affiche à chaque extrémité du lien d’association. De même que pour les noms d’associations, on ne retrouve pas toujours le nom des rôles au niveau du code SQL2, mais on peut les retrouver dans du code SQL3 par l’intermédiaire des noms de références ou de collections. Dans l’exemple 1-18, le professeur perçoit les UV comme une certaine responsabilité et une UV perçoit un professeur comme son responsable. Bien qu’il soit possible d’utiliser conjointement les associations nommées et les rôles, il semble préférable d’opter pour l’une ou l’autre de ces deux techniques au sein d’un même diagramme de classes. Les développeurs objet préfèrent souvent le rôle à l’association nommée. Beaucoup d’outils rendent le rôle obligatoire. Associations plusieurs-à-plusieurs On utilise une association plusieurs-à-plusieurs entre deux entités (classes) si une occurrence (objet) d’une entité (classe) peut être en rapport avec plusieurs occurrences (objets) de l’autre entité (classe) et inversement. Figure 1-18 Rôles avec UML responsable responsabilité * Professeur ... ... UV 1 Acheter le livre numérique UML 2 pour les bases de données
16 téléchargements

Il faut être inscrit pour télécharger un document

Crée un compte gratuit pour télécharger ce document

Je m'inscrisOU

J'ai déjà un compte

Je me connecte